public function getAllItems($lastId = 0, $searchTag = "", $userId = false, $limit = false) { $query = Video::find()->from(["v" => Video::tableName()])->joinWith(['items i'])->andWhere('i.deleted = 0')->orderBy('id DESC'); // Определяем за какой период будем показывать if (!empty($limit)) { $query = $query->limit((int) $limit); } else { $query = $query->limit(100); } if ($lastId != 0) { $query = $query->andWhere('i.id < :id', [':id' => $lastId]); } if (!empty($userId)) { $query = $query->andWhere('i.user_id = :userId', [':userId' => $userId]); } if (!empty($searchTag)) { if (is_array($searchTag)) { $tagsId = $searchTag; } else { $tags = Tags::find()->where(['name' => $searchTag])->all(); $tagsId = []; foreach ($tags as $tag) { $tagsId[] = (int) $tag->id; } } if (count($tagsId) > 0) { $query = $query->andWhere('(SELECT COUNT(*) as tagCount FROM `' . TagEntity::tableName() . '` te WHERE te.entity = "' . TagEntity::ENTITY_ITEM . '" AND te.entity_id = i.id AND te.tag_id IN (' . join(',', $tagsId) . ')) > 0'); } } return $query->all(); }
/** * @param string $name * @param string $tagGroup * @param string $entity * @param int $entityId * * @return bool */ public static function addTag($name, $tagGroup, $entity, $entityId) { if (!($tag = Tags::findOne(['name' => $name, 'tag_group' => $tagGroup]))) { $tag = new Tags(); $tag->name = $name; $tag->tag_group = $tagGroup; $tag->save(); } if ($tag) { if (!($tagEntity = TagEntity::findOne(['tag_id' => $tag->id, 'entity' => $entity, 'entity_id' => $entityId]))) { $tagEntity = new TagEntity(); $tagEntity->tag_id = $tag->id; $tagEntity->entity = $entity; $tagEntity->entity_id = $entityId; $tagEntity->save(); } if ($tagEntity) { return true; } } return false; }
public function getAllItems($lastId = 0, $orderBy = self::ORDER_BY_ID, $dateCreateType = self::DATE_CREATE_LAST, $searchTag = "", $userId = false, $limit = false) { $query = Item::find()->from(["t" => Item::tableName()])->andWhere('t.deleted = 0')->addSelect('*'); if ($lastId != 0) { $query = $query->andWhere('t.id < :id', [':id' => $lastId]); } // Определяем сортировку if ($orderBy == self::ORDER_BY_ID) { $query = $query->orderBy('id DESC'); } elseif ($orderBy == self::ORDER_BY_LIKE) { $query = $query->orderBy('like_count DESC'); } elseif ($orderBy == self::ORDER_BY_SHOW) { $query = $query->orderBy('show_count DESC'); } elseif ($orderBy == self::ORDER_BY_LIKE_SHOW) { $query = $query->addSelect(['(like_count * 15 + show_count) as like_show_count'])->orderBy('like_show_count DESC'); } // Определяем за какой период будем показывать if (!empty($limit)) { $query = $query->limit((int) $limit); } elseif ($dateCreateType == self::DATE_CREATE_LAST) { $query = $query->limit(10); } elseif ($dateCreateType == self::DATE_CREATE_ALL) { $query = $query->limit(50); } elseif ($dateCreateType == self::DATE_CREATE_WEEK) { $query = $query->andWhere('t.date_create >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))'); } elseif ($dateCreateType == self::DATE_CREATE_MONTH) { $query = $query->andWhere('t.date_create >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))'); } if (!empty($userId)) { $query = $query->andWhere('user_id = :userId', [':userId' => $userId]); } if (!empty($searchTag)) { if (is_array($searchTag)) { $tagsId = $searchTag; } else { $tags = Tags::find()->where(['name' => $searchTag])->all(); $tagsId = []; foreach ($tags as $tag) { $tagsId[] = (int) $tag->id; } } if (count($tagsId) > 0) { $query = $query->andWhere('(SELECT COUNT(*) as tagCount FROM `' . TagEntity::tableName() . '` te WHERE te.entity = "' . TagEntity::ENTITY_ITEM . '" AND te.entity_id = t.id AND te.tag_id IN (' . join(',', $tagsId) . ')) > 0'); } } $query = $query->with(['videos', 'tagEntity', 'tagEntity.tags']); return $query->all(); }
public function actionEdit($id) { /** @var Event $event */ $event = Event::findOne($id); if ($event->user_id != User::thisUser()->id || $event->deleted) { return Yii::$app->getResponse()->redirect($event->getUrl()); } if ($event && $event->load(Yii::$app->request->post())) { $eventPost = Yii::$app->request->post('Event'); $event->country = $eventPost['country']; $event->description = \yii\helpers\HtmlPurifier::process($event->description, []); $event->date = strtotime($eventPost['date']); if ($event->save()) { // Добавляем картинки к записи $imgs = Yii::$app->request->post('imgs'); if (!empty($imgs) && is_array($imgs)) { $event->saveImgs($imgs); } else { $event->saveImgs([]); } TagEntity::deleteAll(['entity' => TagEntity::ENTITY_EVENT, 'entity_id' => $event->id]); $tagsArr = explode(',', Yii::$app->request->post('tags')); $tags = array_shift($tagsArr); $event->saveTags($tags); $event->saveLocations(Yii::$app->request->post('location')); return Yii::$app->getResponse()->redirect($event->getUrl()); } } Yii::$app->params['jsZoukVar']['tagsAll'] = Tags::getTags(Tags::TAG_GROUP_ALL); return $this->render('edit', ['event' => $event]); }
public function saveTags($tags) { if (!is_array($tags)) { $tags = [$tags]; } if (!empty($tags)) { foreach ($tags as $tag) { TagEntity::addTag(trim($tag), Tags::TAG_GROUP_ALL, self::THIS_ENTITY, $this->id); } } }
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]); }
public function saveTags($tags) { foreach ($tags as $tag) { TagEntity::addTag(trim($tag), Tags::TAG_GROUP_ALL, TagEntity::ENTITY_ITEM, $this->id); } }
public function actionEdit($id) { /** @var School $school */ $school = School::findOne($id); if ($school->user_id != User::thisUser()->id || $school->deleted) { return Yii::$app->getResponse()->redirect($school->getUrl()); } if ($school && $school->load(Yii::$app->request->post())) { $schoolPost = Yii::$app->request->post('School'); $school->country = $schoolPost['country']; $school->description = \yii\helpers\HtmlPurifier::process($school->description, []); if ($school->save()) { // Добавляем картинки к записи $imgs = Yii::$app->request->post('imgs'); if (!empty($imgs) && is_array($imgs)) { $school->saveImgs($imgs); } else { $school->saveImgs([]); } TagEntity::deleteAll(['entity' => TagEntity::ENTITY_SCHOOL, 'entity_id' => $school->id]); $tagsArr = explode(',', Yii::$app->request->post('tags')); $school->saveTags($tagsArr); $school->saveLocations(Yii::$app->request->post('location')); return Yii::$app->getResponse()->redirect($school->getUrl()); } } Yii::$app->params['jsZoukVar']['tagsAll'] = Tags::getTags(Tags::TAG_GROUP_ALL); return $this->render('edit', ['school' => $school]); }