public function actionFilemanager($related = null, $itemId = null, $tempId = null)
 {
     $relation = null;
     if (isset($related)) {
         if (!isset($this->module->relations[$related])) {
             throw new \yii\base\InvalidParamException('Related model not defined in config');
         }
         $relation = $this->module->relations[$related];
     }
     $this->layout = '@vendor/derekisbusy/yii2-filemanager/views/layouts/main';
     $model = new Mediafile();
     $query = Mediafile::find()->orderBy('created_at DESC');
     if ($tempId) {
         $query->where(['temp_id' => $tempId]);
     }
     if ($relation && $itemId) {
         $query->andWhere([$relation['model_id'] => $itemId]);
         $query->innerJoin($relation['class']::tableName(), "`{$relation['file_id']}`=`id`");
     }
     $event = new \derekisbusy\filemanager\events\FileManagerEvent();
     $this->module->trigger(Module::EVENT_FILE_MANAGER, $event);
     $dataProvider = $model->search($query);
     $dataProvider->pagination->defaultPageSize = $event->defaultPageSize ? $event->defaultPageSize : $this->module->defaultPageSize;
     $view = $event->view ? $event->view : Module::VIEW_FILE_MANAGER;
     return $this->render($view, ['model' => $model, 'dataProvider' => $dataProvider, 'related' => $related, 'itemId' => $itemId, 'tempId' => $tempId]);
 }
示例#2
0
 /**
  * Moves the files from a temporary folder to a folder for the related item.
  * 
  * @param type $related
  * @param type $itemId
  * @param type $tempId
  * @param type $defaultImage
  * @return type
  * @throws \yii\web\BadRequestHttpException
  */
 public function assignTempToItem($related, $itemId, $tempId, $defaultImage = null)
 {
     if (!isset($this->relations[$related]) || !$itemId && !$tempId) {
         throw new \yii\web\BadRequestHttpException();
     }
     // move files to item folder
     foreach (Mediafile::find()->where(['temp_id' => $tempId])->each() as $file) {
         if ($file->url == $defaultImage) {
             $file->moveTempFileToItemFolder($this->routes, $related, $itemId, $tempId);
             $defaultImage = $file->url;
         } else {
             $file->moveTempFileToItemFolder($this->routes, $related, $itemId, $tempId);
         }
         $file->createThumbs($this->routes, $this->thumbs);
         // create relation
         $thru = new $this->relations[$related]['class']();
         $thru->{$this->relations[$related]['model_id']} = $itemId;
         $thru->{$this->relations[$related]['file_id']} = $file->id;
         $thru->save();
     }
     // remove temp directory
     $uploadPath = $this->routes['uploadPath'];
     $uploadPath .= '/' . $this->routes['tempPath'] . '/' . $tempId;
     $structure = "{$this->routes['baseUrl']}/{$uploadPath}";
     $basePath = Yii::getAlias($this->routes['basePath']);
     $dir = $basePath . $structure;
     $it = new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS);
     $files = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::CHILD_FIRST);
     foreach ($files as $file) {
         if ($file->isDir()) {
             rmdir($file->getRealPath());
         } else {
             unlink($file->getRealPath());
         }
     }
     rmdir($dir);
     return $defaultImage;
 }