/**
  * Media browser with KCFinder.
  *
  * The KCFinder component is loaded by the `initialize()` method.
  * @return void
  * @uses MeCms\Controller\Component\KcFinderComponent::getTypes()
  */
 public function browser()
 {
     //Gets the supported types
     $types = $this->KcFinder->getTypes();
     //If there's only one type, it automatically sets the query value
     if (!$this->request->query('type') && count($types) < 2) {
         $this->request->query['type'] = firstKey($types);
     }
     //Gets the type from the query and the types from configuration
     $type = $this->request->query('type');
     //Checks the type, then sets the KCFinder path
     if ($type && array_key_exists($type, $types)) {
         //Sets locale
         $locale = substr(\Cake\I18n\I18n::locale(), 0, 2);
         $locale = empty($locale) ? 'en' : $locale;
         $this->set('kcfinder', sprintf('%s/kcfinder/browse.php?lang=%s&type=%s', Router::url('/vendor', true), $locale, $type));
     }
     $this->set('types', array_combine(array_keys($types), array_keys($types)));
 }
 /**
  * Uploads photos
  * @return void
  * @uses MeTools\Controller\Component\UploaderComponent::error()
  * @uses MeTools\Controller\Component\UploaderComponent::mimetype()
  * @uses MeTools\Controller\Component\UploaderComponent::save()
  * @uses MeTools\Controller\Component\UploaderComponent::set()
  */
 public function upload()
 {
     $album = $this->request->query('album');
     //If there's only one album, it automatically sets the query value
     if (!$album && count($this->viewVars['albums']) < 2) {
         $this->request->query['album'] = firstKey($this->viewVars['albums']);
     }
     if ($this->request->data('file')) {
         if (empty($album)) {
             throw new InternalErrorException(__d('me_cms', 'Missing album ID'));
         }
         http_response_code(500);
         $uploaded = $this->Uploader->set($this->request->data('file'))->mimetype('image')->save(PHOTOS . DS . $album);
         if (!$uploaded) {
             exit($this->Uploader->error());
         }
         $saved = $this->Photos->save($this->Photos->newEntity(['album_id' => $album, 'filename' => basename($uploaded)]));
         if (!$saved) {
             exit(__d('me_cms', 'The photo could not be saved'));
         }
         http_response_code(200);
         $this->render(false);
     }
 }
 /**
  * Uploads banners
  * @return void
  * @uses MeTools\Controller\Component\UploaderComponent::error()
  * @uses MeTools\Controller\Component\UploaderComponent::mimetype()
  * @uses MeTools\Controller\Component\UploaderComponent::save()
  * @uses MeTools\Controller\Component\UploaderComponent::set()
  */
 public function upload()
 {
     $position = $this->request->query('position');
     //If there's only one position, it automatically sets the query value
     if (!$position && count($this->viewVars['positions']) < 2) {
         $this->request->query['position'] = firstKey($this->viewVars['positions']);
     }
     if ($this->request->data('file')) {
         if (empty($position)) {
             throw new InternalErrorException(__d('me_cms', 'Missing position ID'));
         }
         http_response_code(500);
         $uploaded = $this->Uploader->set($this->request->data('file'))->mimetype('image')->save(BANNERS);
         if (!$uploaded) {
             exit($this->Uploader->error());
         }
         $saved = $this->Banners->save($this->Banners->newEntity(['position_id' => $position, 'filename' => basename($uploaded)]));
         if (!$saved) {
             exit(__d('me_cms', 'The banner could not be saved'));
         }
         http_response_code(200);
         $this->render(false);
     }
 }