/** * @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); }
/** * 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); } }
/** * 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; }
/** * @inheritdoc */ public static function find() { return parent::find()->andWhere(['type' => self::TYPE_SOUND]); }
/** * @return \yii\db\ActiveQuery */ public function getFile() { return $this->hasOne(FileRecord::className(), ['id' => 'file_id']); }
/** * 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; }