Your IP : 216.73.216.85


Current Path : /home/smartconb/www/armencom33/administrator/components/com_eventgallery/src/Model/
Upload File :
Current File : /home/smartconb/www/armencom33/administrator/components/com_eventgallery/src/Model/UploadModel.php

<?php

/**
 * @package     Sven.Bluege
 * @subpackage  com_eventgallery
 *
 * @copyright   Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
namespace Svenbluege\Component\Eventgallery\Administrator\Model;

use Joomla\CMS\Factory;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Folder;
use Joomla\CMS\Language\Text;
use Svenbluege\Component\Eventgallery\Site\Library\Common\ImageProcessor;
use Svenbluege\Component\Eventgallery\Site\Library\Common\MediaHelper;
use Svenbluege\Component\Eventgallery\Site\Library\Exception\UnsupportedFileExtensionException;
use Svenbluege\Component\Eventgallery\Site\Library\Factory\FileFactory;
use Svenbluege\Component\Eventgallery\Site\Library\Factory\FolderFactory;

defined('_JEXEC') or die();

class UploadModel extends FilesModel
{
    /**
     * @param string $folderStr
     * @throws \Exception
     */
  public function upload($folderStr, $doResizeUploadedFile) {
      $user = Factory::getApplication()->getIdentity();

      $canUpload = $user->authorise('core.edit','com_eventgallery');
      if (!$canUpload) {
          echo Text::_('COM_EVENTGALLERY_EVENT_UPLOAD_NO_PERMISSION');
          die();
      }

      $foldername=Folder::makeSafe($folderStr);

      /**
       * @var FolderFactory $folderFactory
       */
      $folderFactory = FolderFactory::getInstance();
      $folder = $folderFactory->getFolder($foldername);

      if ($folder == null) {
          throw new \Exception("Folder does not exist");
      }

      $file = null;

      $uploadedFile = Factory::getApplication()->input->files->get('file');
      if (!empty($uploadedFile)) {

          $filename = File::makeSafe($uploadedFile["name"]);
          $tmpFilename = $uploadedFile["tmp_name"];

          if (!in_array(strtolower(pathinfo($filename, PATHINFO_EXTENSION)), COM_EVENTGALLERY_ALLOWED_FILE_EXTENSIONS)) {
              $extension = pathinfo($filename, PATHINFO_EXTENSION);
              throw new UnsupportedFileExtensionException("$filename: Extension $extension not in in allowed extension list " . join(', ', COM_EVENTGALLERY_ALLOWED_FILE_EXTENSIONS));
          }

          $mediaHelper = new MediaHelper();
          $mime = $mediaHelper->getMimeType($tmpFilename, true);
          if (empty($mime) || !\in_array($mime, COM_EVENTGALLERY_ALLOWED_MIME_TYPES)) {
              throw new UnsupportedFileExtensionException("$filename: MimeType $mime not in in allowed list " . join(', ', COM_EVENTGALLERY_ALLOWED_MIME_TYPES));
          }

          if ($doResizeUploadedFile) {
              $config = \Svenbluege\Component\Eventgallery\Site\Library\Configuration\Main::getInstance();
              $joomlaConfig = Factory::getApplication()->getConfig();
              ImageProcessor::createThumbnailToFile($tmpFilename, $tmpFilename, $config, $config->getImage()->getResizeImageSize(), false, null, false, false);
          }

          $file = $folder->uploadImageFile($tmpFilename, $filename, $user);
          /**
           * @var FileFactory $fileFactory
           */
          $fileFactory = FileFactory::getInstance();
          $fileFactory->triggerContentChangeStateEvent($file->getFolderName(), $file->getFileName());

      }

      if ($file === null) {
          echo "upload failed";
          die();
      }


      echo '<img alt="Done '.$filename.'" class="img-thumbnail thumbnail" src="'.$file->getThumbUrl(240).'" />';
  }

}