示例#1
0
文件: School.php 项目: IVsevolod/zouk
 public function saveImgs($imgs)
 {
     if (count($imgs) > 0) {
         $imgs = array_map('intval', $imgs);
         $imgs = array_unique($imgs);
         $imgs = array_slice($imgs, 0, self::MAX_IMG_SCHOOL);
         EntityLink::deleteAll(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['NOT IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY]);
         $entityLinksObj = EntityLink::find()->andWhere(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY])->all();
         $entityLinks = [];
         foreach ($entityLinksObj as $entityLink) {
             $entityLinks[$entityLink->entity_2_id] = $entityLink;
         }
         $imgsObjs = $this->imgs;
         $imgsId = [];
         foreach ($imgsObjs as $key => $img) {
             $imgsId[$key] = $img->id;
         }
         $index = 0;
         foreach ($imgs as $key => $imgId) {
             if (!in_array($imgId, $imgsId)) {
                 $entityLink = new EntityLink();
                 $entityLink->entity_1 = self::THIS_ENTITY;
                 $entityLink->entity_1_id = $this->id;
                 $entityLink->entity_2 = Img::THIS_ENTITY;
                 $entityLink->entity_2_id = $imgId;
                 $entityLink->sort = $index++;
                 $entityLink->save();
             } else {
                 if (!empty($entityLinks[$imgId])) {
                     $entityLink = $entityLinks[$imgId];
                     $entityLink->sort = $index++;
                     $entityLink->save();
                 }
             }
         }
     } else {
         EntityLink::deleteAll(['entity_1' => self::THIS_ENTITY, 'entity_1_id' => $this->id, 'entity_2' => Img::THIS_ENTITY]);
     }
 }
示例#2
0
文件: Video.php 项目: IVsevolod/zouk
 public function getItems()
 {
     return $this->hasMany(Item::className(), ['id' => 'entity_1_id'])->viaTable(EntityLink::tableName(), ['entity_2_id' => 'id'], function ($query) {
         $query->onCondition(['entity_1' => Item::THIS_ENTITY, 'entity_2' => Video::THIS_ENTITY]);
     });
 }
示例#3
0
 public function actionEdit($id)
 {
     /** @var Item $item */
     $item = Item::findOne($id);
     if ($item->user_id != User::thisUser()->id || $item->deleted) {
         return Yii::$app->getResponse()->redirect($item->getUrl());
     }
     if ($item && $item->load(Yii::$app->request->post())) {
         $item->description = \yii\helpers\HtmlPurifier::process($item->description, []);
         if ($item->save()) {
             EntityLink::deleteAll(['entity_1' => Item::THIS_ENTITY, 'entity_1_id' => $item->id, 'entity_2' => Video::THIS_ENTITY]);
             // Добавление видео к записи
             $videosUrl = Yii::$app->request->post('videos');
             if (!empty($videosUrl) && is_array($videosUrl)) {
                 $item->saveVideos($videosUrl, $item->user_id);
             }
             // Добавляем аудиозаписи к записи
             $sounds = Yii::$app->request->post('sounds');
             if (!empty($sounds) && is_array($sounds)) {
                 $item->saveSounds($sounds);
             } else {
                 $item->saveSounds([]);
             }
             // Добавляем картинки к записи
             $imgs = Yii::$app->request->post('imgs');
             if (!empty($imgs) && is_array($imgs)) {
                 $item->saveImgs($imgs);
             } else {
                 $item->saveImgs([]);
             }
             TagEntity::deleteAll(['entity' => TagEntity::ENTITY_ITEM, 'entity_id' => $item->id]);
             $tags = explode(',', Yii::$app->request->post('tags'));
             if (is_array($tags)) {
                 $item->saveTags($tags);
             }
             return Yii::$app->getResponse()->redirect($item->getUrl());
         }
     }
     Yii::$app->params['jsZoukVar']['tagsAll'] = Tags::getTags(Tags::TAG_GROUP_ALL);
     return $this->render('edit', ['item' => $item]);
 }