Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
NewsDiscuss.php
Содержимое
<?php namespace app\news; use \App; use app\core\models\Command; use app\core\models\Expression; use app\forum\Articl; use app\forum\Discuss; class NewsDiscuss { public function __construct() { } /** * Функция возвращает массив - количество обсуждений, связанных с новостью, * в качестве параметра передается массив ID новостей * @param array $newsIds * @return array [ * 'news_id' => 'count', * .... * ] */ public function getDiscussCount(array $newsIds = []) { $sth = \App::$pdo->prepare(" select count(*) as total, id_obj from articl, forum_discuss where id_parent=id_articl and id_obj in (".implode(',', $newsIds).") and tip_obj='news' GROUP BY id_obj "); $sth->execute(); $discussItems = $sth->fetchAll(); $newArray = []; foreach ($newsIds as $newItemId) { $value = 0; foreach ($discussItems as $item) { if ($item['id_obj'] == $newItemId) { $value = $item['total']; } } $newArray[$newItemId] = $value; } return $newArray; } public static function getDiscussCountByNewsId($newsId) { return \App::$command ->createCommand(' select count(*) as total, id_obj from articl, forum_discuss where id_parent=id_articl and id_obj = :news_id and tip_obj=\'news\' GROUP BY id_obj ') ->bindValue(':news_id', $newsId) ->queryOne('total', 0); } /** * Функция проверяет, начата ли дискуссия на форуме по поводу новости $newsId или нет * @param $newsId * @return boolean */ public static function isDiscuss($newsId) { $command = App::$command->createCommand(' SELECT COUNT(*) as total FROM forum_discuss WHERE id_obj = :news_id and tip_obj = "news" '); $command->bindValue(':news_id', $newsId); return $command->queryOne('total', 0) > 0; } public static function startDiscuss($newsId, $message) { $articl = new Articl(); $articl->id_author = App::$user->getId(); $articl->data = new Expression('NOW()'); $articl->id_forum = App::$config['news']['comments']['forumId']; $articl->id_parent = 0; $articl->tema = News::getNewsTheme($newsId); $articl->body = $message; $articl->ip = App::$request->getIp(); $articl->moder = '0'; $articl->podpis = 1; $articl->cookie = App::$cookies->get('sid', ''); $articl->fcookie = App::$cookies->get('fsid', ''); if ($articl->save() == false) { return false; } $articl->id_parent = $articl->id; $articl->save(); $discuss = new Discuss(); $discuss->id_obj = $newsId; $discuss->tip_obj = 'news'; $discuss->id_forum = App::$config['news']['comments']['forumId']; $discuss->id_articl = $articl->id; $discuss->save(); return true; } /** * Функция добавляет сообщение * @param $discussId * @param $commentParentId * @param $message * @return bool */ public static function addMessage($discussId, $commentParentId, $message) { $command = App::$command->createCommand(' INSERT INTO `articl`(id_author, ) '); $model = new Articl(); $model->id_author = App::$user->getId(); $model->data = new Expression('NOW()'); $model->id_forum = App::$config['news']['comments']['forumId']; $model->id_parent = $discussId; $model->tema = ''; $model->body = $message; $model->ip = App::$request->getIp(); $model->moder = '0'; $model->podpis = 1; $model->cookie = App::$cookies->get('sid', ''); $model->fcookie = App::$cookies->get('fsid', ''); $model->comment_parent_id = $commentParentId; return $model->save(); } public static function getDiscussId($newsId) { $command = App::$command->createCommand(' SELECT id_articl FROM forum_discuss WHERE id_obj = :news_id AND tip_obj = "news" '); $command->bindValue(':news_id', $newsId); return $command->queryOne('id_articl'); } /** * Функция возвращает ID новости по ID комментария * @param $commentId * @return int|null */ public static function getNewsIdByCommentId($commentId) { // получаем корневой комментарий // только по нему можно найти ID новости $command = App::$command->createCommand(' SELECT id_parent FROM articl WHERE id = :comment_id '); $command->bindValue(':comment_id', $commentId); $commentId = $command->queryOne('id_parent', null); if ($commentId == null) { return false; } // ищем ID новости по корневому комментарию. $command = App::$command->createCommand(' SELECT id_obj as news_id FROM forum_discuss WHERE id_articl = '.(int)$commentId.' AND tip_obj = "news" '); return $command->queryOne('news_id', null); } public static function getImages($commentId) { $command = App::$command->createCommand(' SELECT id, image FROM articl_photo WHERE articl_id = '.(int)$commentId.' '); return $command->queryAll(); } /** * Функция возвращает дерево комментариев, сгруппированных по parent_id */ public static function getCommentsTreeArray($newsId) { $discussId = static::getDiscussId($newsId); if ($discussId == null) { return []; } $comments = App::$command->createCommand(' SELECT articl.id, articl.data, articl.id_author, articl.id_parent, articl.tema, articl.body, articl.comment_parent_id, user.name as user_name, user.avatar as user_photo, ( SELECT IFNULL(SUM(vote), 0) as vote FROM news_comments_likes WHERE comment_id = articl.id ) as vote FROM articl LEFT JOIN `user` ON user.id = articl.id_author WHERE articl.id_parent = :id_parent ORDER BY articl.id ASC '); $comments->bindValue(':id_parent', $discussId); $comments = $comments->queryAll(); foreach ($comments as $key => $comment) { $comments[$key]['images'] = static::getImages($comment['id']); $comments[$key]['voted_plus'] = NewsCommentsLikes::getPlusVotesArray($comment['id']); $comments[$key]['voted_minus'] = NewsCommentsLikes::getMinusVotesArray($comment['id']); } $transformComments = []; foreach ($comments as $key => $comment) { $transformComments[$comment['comment_parent_id']][] = $comment; } return $transformComments; } }
/app/news/
Имя
Дата
Размер
..
2026-10-01
entity
2019-01-30
forms
2017-03-15
helpers
2019-01-31
posting
2019-01-31
vk
2019-02-01
FixNewsRepository.php
2021-03-29
856 байт
FixNewsService.php
2021-03-29
1 кб.
News.php
2021-03-29
4 кб.
NewsCategory.php
2017-08-15
3 кб.
NewsCommentsLikes.php
2017-09-19
4 кб.
NewsCompany.php
2017-06-29
1012 байт
NewsDiscuss.php
2017-09-19
7 кб.
NewsImage.php
2016-12-22
387 байт
NewsPhotos.php
2017-02-07
350 байт
NewsReader.php
2023-08-29
10 кб.
NewsReader.php~
2021-03-29
10 кб.
NewsReaderRazdel.php
2017-02-01
2 кб.
NewsSliders.php
2017-02-22
1 кб.
NewsSlidersPhotos.php
2017-02-22
472 байт
NewsTags.php
2017-09-19
2 кб.
RelatedTagsNews.php
2019-09-02
2 кб.
/app/news
Загрузить файлы
Файл 1
Файл 2
Файл 3