Пример #1
0
 /**
  * @param \yii\base\Action $action
  *
  * @return bool
  * @throws InvalidParamException
  */
 public function beforeAction($action)
 {
     $model = new FileRecord();
     $images = $model->synchronizeImages();
     $files = $model->synchronizeFiles();
     $model->checkDB(array_merge($images, $files));
     return parent::beforeAction($action);
 }
Пример #2
0
 /**
  * Updates texts for file in given language
  * @param $id integer id of file
  * @return string|Response
  */
 public function actionUpdateTexts($id)
 {
     /** @var FileRecord $file */
     $file = FileRecord::findOne($id);
     if ($file) {
         $session = Yii::$app->session;
         if (!$session['language_id']) {
             $session['language_id'] = LanguageRecord::getMainLanguageId();
         }
         $model = FileTextRecord::find()->where(['file_id' => $id, 'language_id' => $session['language_id']])->one();
         if (!$model) {
             $model = new FileTextRecord();
             $model->title = $file->title;
             $model->file_id = $id;
             $model->language_id = $session['language_id'];
         }
         if ($model->load(Yii::$app->request->post()) && $model->save()) {
             if ($model->file->type == FileRecord::TYPE_IMAGE) {
                 return $this->redirect(['images']);
             } else {
                 return $this->redirect(['files']);
             }
         } elseif (Yii::$app->request->isAjax) {
             return $this->renderAjax('_textsForm', compact('model'));
         }
         return $this->render('_textsForm', compact('model'));
     } else {
         throw new InvalidValueException(Yii::t('back', 'No file record found of this ID') . ': ' . $id);
     }
 }
Пример #3
0
 /**
  * Creates data provider instance with search query applied
  * @param array $params
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = FileRecord::find()->where(['not', 'type=:image'])->params([':image' => FileRecord::TYPE_IMAGE]);
     if (!isset($params['sort'])) {
         $query->orderBy(['file_time' => SORT_DESC]);
     }
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 24], 'sort' => ['defaultOrder' => ['file_time' => SORT_DESC]]]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['like', 'title', $this->fileTitle]);
     return $dataProvider;
 }
Пример #4
0
 /**
  * @inheritdoc
  */
 public static function find()
 {
     return parent::find()->andWhere(['type' => self::TYPE_SOUND]);
 }
Пример #5
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getFile()
 {
     return $this->hasOne(FileRecord::className(), ['id' => 'file_id']);
 }
Пример #6
0
 /**
  * Checks files on server against DB table
  *
  * @param string $dirName
  * @param string $baseDirName
  * @param integer $subsStringStart
  * @param array $fileNames
  *
  * @return array of file names on server
  */
 protected function checkFS($dirName, $baseDirName, $subsStringStart, $fileNames = [])
 {
     $dir = dir($dirName);
     while (($filename = $dir->read()) !== false) {
         if (is_dir($dirName . $filename)) {
             if ($filename != '.' && $filename != '..') {
                 $fileNames = $this->checkFS($dirName . $filename . '/', $baseDirName, $subsStringStart, $fileNames);
             }
         } else {
             $title = strtolower(Inflector::humanize(strstr($filename, '.', true)));
             $filename = substr($dirName . $filename, $subsStringStart);
             $fileNames[] = $filename;
             $fileRecord = self::findOne(['filename' => $filename]);
             if (!$fileRecord) {
                 $record = new FileRecord();
                 $record->title = $title;
                 $record->filename = $filename;
                 $record->file_time = filemtime($baseDirName . $filename);
                 $fileExt = strtolower(array_pop(explode('.', $filename)));
                 $record->type = self::getFileType($fileExt);
                 $record->save(false);
             }
         }
     }
     return $fileNames;
 }