Exemplo n.º 1
0
 /**
  * До удаления сущьности, текущей необходим проверить все описанные модели, и сделать операции с ними (удалить, убрать привязку или ничего не делать кинуть 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);
                 }
             }
         }
     }
 }
Exemplo n.º 4
0
 /**
  * Прикрепить к моделе другой файл
  * @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;
 }
Exemplo n.º 5
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getLogo()
 {
     return $this->hasOne(CmsStorageFile::className(), ['id' => 'logo_id']);
 }