Пример #1
0
        <?php 
if ($this->params['isMyProfile']) {
    ?>
            <a class='settings_tutor' href="/settings"><?php 
    echo Yii::t('yii', 'Настройки');
    ?>
</a>
        <?php 
}
?>
    </div>

    <div class="blog_tags">
        <?php 
$marks = \app\models\Marks::getPhotoMarks(20);
?>
        <?php 
foreach ($marks as $mark) {
    ?>
            <a href="/search-photo?Search%5Bname%5D=&Search%5Bmarks%5D=<?php 
    echo $mark['name'];
    ?>
&Search%5Bid_level_1%5D=&Search%5Bid_level_2%5D="><?php 
    echo $mark['name'];
    ?>
</a>
        <?php 
}
?>
    </div>
Пример #2
0
 public function actionPost($slug)
 {
     $model = new CommentsBlog();
     //витягнення статті
     $post = Blog::getPostByUrl($slug);
     //якщо немає 404
     if (!$post['article_id']) {
         throw new \yii\web\HttpException(404);
     }
     //якщо стаття закрита адміністратором, то редірект на всі статті
     if (!$post['article_id'] || time() < $post['time_closed']) {
         return $this->redirect('/blog/all');
     }
     View::viewArticle($post['article_id'], $post['views']);
     //перевірка чи користувач лайкнув
     if (!Yii::$app->user->isGuest) {
         $post['islike'] = Blog::isLikeArticle($post['article_id'], Yii::$app->user->getId());
     } else {
         $post['islike'] = false;
     }
     $i_blocked = User::checkIfIInBlaclList($post['id_author']);
     $user_id = $post['user_id'];
     $marks = Marks::getArticleMarks(20);
     $categories = Category::getAllCategory();
     //інші статті автора
     $other_articles = Blog::getOtherArticle($user_id, 0, 2, $post['article_id']);
     foreach ($other_articles as &$article) {
         $article['text'] = substr($article['text'], 0, 350) . '...';
     }
     ////        КОМЕНТАРІ         ////
     //витягуємо всі коменті до статті
     $from = "comments_blog";
     //отримання всіх коментарів до фотографії
     $comments = Comments::getCommentsNew($post['article_id'], $from);
     $request = Yii::$app->request;
     if ($request->isAjax && $model->load($request->post()) && $model->validate()) {
         if (!Yii::$app->user->isGuest) {
             $author_id = Blog::getIdAuthorArticle($model['id_article']);
             if (!User::checkIfIInBlaclList($author_id)) {
                 Yii::$app->response->format = Response::FORMAT_JSON;
                 $model->date_time = date('Y-m-d H:i:s');
                 $model->id_user = Yii::$app->user->getId();
                 $model->text = htmlspecialchars($model->text);
                 //визначення чи це простий комент чи це ре-комент
                 $text = explode(":", $model->text);
                 //перевіряємо чи введено коректне ім'я користувача якому дана відповідь
                 $true_name = 0;
                 foreach ($comment as $key) {
                     if ($key['name'] == $text[0]) {
                         $true_name = 1;
                     }
                 }
                 if (!$true_name) {
                     $model->answer_id = 0;
                 }
                 if ($model->save()) {
                     Blog::updateComments($post['article_id'], 1);
                     $latest_id = $model->id;
                     $user = User::find()->select('avatar, name')->where(["id" => $model->id_user])->one();
                     echo json_encode(['text' => $model->text, 'id_user' => $model->id_user, 'name' => $user['name'], 'avatar' => $user['avatar'], 'sex' => $user['sex'], 'id_comment' => $latest_id]);
                     die;
                 } else {
                     echo 0;
                 }
             } else {
                 return json_encode('error');
             }
         }
         ////        КОМЕНТАРІ         ////
     } else {
         return $this->render('post', ['post' => $post, 'other_articles' => $other_articles, 'marks' => $marks, 'categories' => $categories, 'user_id' => $user_id, 'model' => $model, 'comments' => $comments, 'i_blocked' => $i_blocked]);
     }
 }
Пример #3
0
 public function actionBlog_post_edit($article_id)
 {
     $this->redirectOnHomepageIfGuest($user, $isMyProfile);
     $request = Yii::$app->request;
     $post = $request->post();
     if (!Blog::checkPermission($article_id)) {
         throw new \yii\web\HttpException(404);
     }
     $model = Blog::findOne($article_id);
     $marksNames = Marks::getNamesByIdArticle($article_id);
     $image = new UploadImage();
     // Завантаження зображень
     if ($request->isAjax && $model->load($request->post())) {
         Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validate($model);
     }
     if (Yii::$app->request->post()) {
         //збереження фотографії на сервері
         $user_id = Yii::$app->user->getId();
         $image->file = UploadedFile::getInstance($image, 'file');
         if ($image->file && $image->validate()) {
             // Зберігаємо зображення на сервер і в БД
             $folder = "articles";
             $model->thumbnail = "article_" . Translit::translit($model->name) . $user_id . '.' . $image->file->extension;
             $image->saveArticleImage($model->thumbnail, $folder);
         }
     }
     if ($model->load($request->post()) && $model->validate()) {
         if (!Category::isSetCategory($model->id_level_1)) {
             return $this->redirect('/');
         }
         Marks::deleteMarksByIdArticle($article_id);
         if ($request->post('mark')) {
             $marks_arr_new = $request->post('mark');
         } else {
             $marks_arr_new = [];
         }
         $marks_tmp = [];
         foreach ($marks_arr_new as $k => $v) {
             $marks_tmp[] = $k;
         }
         if ($model->id_marks) {
             $marks_arr_new[$model->id_marks] = '';
         }
         $marks_arr_new = \app\components\Marks::format($marks_arr_new);
         //список тих що в базі даних
         $marks_tmp = Marks::getMarksByNames($marks_tmp);
         //масив id тих що в бд
         $marks_tmp_id = [];
         foreach ($marks_tmp as $v) {
             $marks_tmp_id[] = $v['id'];
         }
         //обновилення coununter тих о в бд
         if ($marks_tmp_id) {
             Marks::updateCountMarks($marks_tmp_id);
         }
         //позначаємо ті що є в бд
         foreach ($marks_tmp as $k => $v) {
             $marks_arr_new[$k] = true;
         }
         //список тих що нема в бд
         $marks_tmp = [];
         foreach ($marks_arr_new as $k => $v) {
             if (!$v) {
                 $marks_tmp[] = $k;
             }
         }
         if ($marks_tmp) {
             Marks::insertMarks($marks_tmp);
         }
         $marks_tmp = Marks::getMarksByNames($marks_tmp);
         foreach ($marks_tmp as $v) {
             $marks_tmp_id[] = $v['id'];
         }
         //зберігаємо данні в БД
         $model->id_author = Yii::$app->user->getId();
         $model->save();
         //формуємо повідомлення про вдале додання нової фотографії
         if ($marks_tmp_id) {
             Marks::addMarksToArticle($marks_tmp_id, $model->id);
         }
         // @todo перекласти
         \Yii::$app->getSession()->setFlash('notify', 'Стаття успішно відредагована!');
         return $this->redirect("/article/" . $model->url);
     } else {
         //перетворюємо іd метки в ім'я для виведення
         $idMarks = Marks::find()->select(['name'])->where(['id' => $model->id_marks])->one();
         $model->id_marks = $idMarks[name];
     }
     $marks = Marks::find()->select(['name as label'])->asArray()->all();
     $all_categories = Category::getAllTranslatedCategory();
     return $this->render('blog_post', ['model' => $model, 'marks' => $marks, 'image' => $image, 'user' => $user, 'isMyProfile' => $isMyProfile, 'all_categories' => $all_categories, 'marksNames' => $marksNames, 'edit' => 1]);
 }