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]); } }
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]); }); }
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]); }