/** * До удаления сущьности, текущей необходим проверить все описанные модели, и сделать операции с ними (удалить, убрать привязку или ничего не делать кинуть Exception) * @throws Exception */ public function deleteStorgaFile() { if (!$this->onDeleteCascade) { return $this; } foreach ($this->fields as $fieldValue) { if ($fileId = $this->owner->{$fieldValue}) { if ($storageFile = CmsStorageFile::findOne($fileId)) { $storageFile->delete(); } } } }
public function safeUp() { if ($users = \skeeks\cms\models\User::find()->all()) { /** * @var $user \skeeks\cms\models\User */ foreach ($users as $user) { if (!method_exists($user, 'getMainImageSrc')) { continue; } //$user->getFiles() $imageSrc = $user->getMainImageSrc(); if ($imageSrc) { $storageFile = \skeeks\cms\models\CmsStorageFile::find()->where(['src' => $imageSrc])->one(); if ($storageFile) { $user->image_id = $storageFile->id; $user->save(false); } } } } }
public function safeUp() { if ($models = \skeeks\cms\models\CmsContentElement::find()->all()) { /** * @var $model \skeeks\cms\models\CmsContentElement */ foreach ($models as $model) { if (!method_exists($model, 'getMainImageSrc')) { continue; } //$user->getFiles() $imageSrc = $model->getMainImageSrcOld(); if ($imageSrc) { $storageFile = \skeeks\cms\models\CmsStorageFile::find()->where(['src' => $imageSrc])->one(); if ($storageFile) { $model->image_id = $storageFile->id; $model->image_full_id = $storageFile->id; $model->save(false); } } } } }
/** * Прикрепить к моделе другой файл * @see skeeks\cms\widgets\formInputs\StorageImage * @return RequestResponse */ public function actionLinkToModels() { $rr = new RequestResponse(); if ($rr->isRequestAjaxPost()) { try { if (!\Yii::$app->request->post('file_id') || !\Yii::$app->request->post('modelId') || !\Yii::$app->request->post('modelClassName') || !\Yii::$app->request->post('modelRelation')) { throw new \yii\base\Exception("Не достаточно входных данных"); } $file = CmsStorageFile::findOne(\Yii::$app->request->post('file_id')); if (!$file) { throw new \yii\base\Exception("Возможно файл уже удален или не загрузился"); } if (!is_subclass_of(\Yii::$app->request->post('modelClassName'), ActiveRecord::className())) { throw new \yii\base\Exception("Невозможно привязать файл к этой моделе"); } $className = \Yii::$app->request->post('modelClassName'); /** * @var $model ActiveRecord */ $model = $className::findOne(\Yii::$app->request->post('modelId')); if (!$model) { throw new \yii\base\Exception("Модель к которой необходимо привязать файл не найдена"); } if (!$model->hasProperty(\Yii::$app->request->post('modelRelation'))) { throw new \yii\base\Exception("У модели не найден атрибут привязки к файлам modelRelation: " . \Yii::$app->request->post('modelRelation')); } try { $model->link(\Yii::$app->request->post('modelRelation'), $file); if (!$file->name) { $file->name = $model->name; $file->save(false); } $rr->success = true; $rr->message = ""; } catch (\Exception $e) { $rr->success = false; $rr->message = $e->getMessage(); } } catch (\Exception $e) { $rr->success = false; $rr->message = $e->getMessage(); } } return $rr; }
/** * @return \yii\db\ActiveQuery */ public function getLogo() { return $this->hasOne(CmsStorageFile::className(), ['id' => 'logo_id']); }