Example #1
0
 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();
 }
Example #2
0
 /**
  * @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;
 }
Example #3
0
 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();
 }
Example #4
0
 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]);
 }
Example #5
0
 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);
         }
     }
 }
Example #6
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]);
 }
Example #7
0
 public function saveTags($tags)
 {
     foreach ($tags as $tag) {
         TagEntity::addTag(trim($tag), Tags::TAG_GROUP_ALL, TagEntity::ENTITY_ITEM, $this->id);
     }
 }
Example #8
0
 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]);
 }