2009-05-10 10:50:39 +03:00
|
|
|
|
<?php
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Объект маппера для работы с БД
|
|
|
|
|
*
|
|
|
|
|
* @package modules.topic
|
|
|
|
|
* @since 1.0
|
|
|
|
|
*/
|
|
|
|
|
class ModuleTopic_MapperTopic extends Mapper {
|
|
|
|
|
/**
|
|
|
|
|
* Добавляет топик
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
|
|
|
|
* @return int|bool
|
|
|
|
|
*/
|
2010-05-27 18:16:20 +03:00
|
|
|
|
public function AddTopic(ModuleTopic_EntityTopic $oTopic) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "INSERT INTO ".Config::Get('db.table.topic')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
(blog_id,
|
|
|
|
|
user_id,
|
|
|
|
|
topic_type,
|
2008-09-27 18:21:07 +03:00
|
|
|
|
topic_title,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
topic_tags,
|
|
|
|
|
topic_date_add,
|
|
|
|
|
topic_user_ip,
|
2008-10-11 00:02:31 +03:00
|
|
|
|
topic_publish,
|
2009-02-15 10:10:07 +02:00
|
|
|
|
topic_publish_draft,
|
2008-10-25 23:31:29 +03:00
|
|
|
|
topic_publish_index,
|
|
|
|
|
topic_cut_text,
|
2009-03-01 12:19:06 +02:00
|
|
|
|
topic_forbid_comment,
|
|
|
|
|
topic_text_hash
|
2008-09-21 09:36:57 +03:00
|
|
|
|
)
|
2009-03-01 12:19:06 +02:00
|
|
|
|
VALUES(?d, ?d, ?, ?, ?, ?, ?, ?d, ?d, ?d, ?, ?, ?)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2008-09-27 18:21:07 +03:00
|
|
|
|
if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash()))
|
2008-09-27 18:21:07 +03:00
|
|
|
|
{
|
|
|
|
|
$oTopic->setId($iId);
|
|
|
|
|
$this->AddTopicContent($oTopic);
|
|
|
|
|
return $iId;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-27 18:21:07 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавляет контент топика
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
|
|
|
|
* @return int|bool
|
|
|
|
|
*/
|
2010-05-27 18:16:20 +03:00
|
|
|
|
public function AddTopicContent(ModuleTopic_EntityTopic $oTopic) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "INSERT INTO ".Config::Get('db.table.topic_content')."
|
2008-09-27 18:21:07 +03:00
|
|
|
|
(topic_id,
|
|
|
|
|
topic_text,
|
|
|
|
|
topic_text_short,
|
|
|
|
|
topic_text_source,
|
|
|
|
|
topic_extra
|
|
|
|
|
)
|
|
|
|
|
VALUES(?d, ?, ?, ?, ? )
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2008-09-27 18:21:07 +03:00
|
|
|
|
if ($iId=$this->oDb->query($sql,$oTopic->getId(),$oTopic->getText(),
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra()))
|
2008-09-21 09:36:57 +03:00
|
|
|
|
{
|
|
|
|
|
return $iId;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавление тега к топику
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicTag $oTopicTag Объект тега топика
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
2010-05-27 18:16:20 +03:00
|
|
|
|
public function AddTopicTag(ModuleTopic_EntityTopicTag $oTopicTag) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "INSERT INTO ".Config::Get('db.table.topic_tag')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
(topic_id,
|
|
|
|
|
user_id,
|
|
|
|
|
blog_id,
|
|
|
|
|
topic_tag_text
|
|
|
|
|
)
|
|
|
|
|
VALUES(?d, ?d, ?d, ?)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
|
|
|
|
if ($iId=$this->oDb->query($sql,$oTopicTag->getTopicId(),$oTopicTag->getUserId(),$oTopicTag->getBlogId(),$oTopicTag->getText()))
|
2008-09-21 09:36:57 +03:00
|
|
|
|
{
|
|
|
|
|
return $iId;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Удаление контента топика по его номеру
|
|
|
|
|
*
|
|
|
|
|
* @param int $iTopicId ID топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2011-08-23 17:29:03 +03:00
|
|
|
|
public function DeleteTopicContentByTopicId($iTopicId) {
|
|
|
|
|
$sql = "DELETE FROM ".Config::Get('db.table.topic_content')." WHERE topic_id = ?d ";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$iTopicId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2011-08-23 17:29:03 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Удаляет теги у топика
|
|
|
|
|
*
|
|
|
|
|
* @param int $sTopicId ID топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2008-09-21 09:36:57 +03:00
|
|
|
|
public function DeleteTopicTagsByTopicId($sTopicId) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "DELETE FROM ".Config::Get('db.table.topic_tag')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sTopicId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Удаляет топик.
|
|
|
|
|
* Если тип таблиц в БД InnoDB, то удалятся всё связи по топику(комменты,голосования,избранное)
|
|
|
|
|
*
|
|
|
|
|
* @param int $sTopicId Объект топика или ID
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2008-11-22 19:30:25 +02:00
|
|
|
|
public function DeleteTopic($sTopicId) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "DELETE FROM ".Config::Get('db.table.topic')."
|
2008-11-22 19:30:25 +02:00
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-04-02 10:54:40 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sTopicId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2008-11-22 19:30:25 +02:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает топик по уникальному хешу(текст топика)
|
|
|
|
|
*
|
|
|
|
|
* @param int $sUserId
|
|
|
|
|
* @param string $sHash
|
|
|
|
|
* @return int|null
|
|
|
|
|
*/
|
2009-03-01 12:19:06 +02:00
|
|
|
|
public function GetTopicUnique($sUserId,$sHash) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "SELECT topic_id FROM ".Config::Get('db.table.topic')."
|
2009-03-01 12:19:06 +02:00
|
|
|
|
WHERE
|
2010-04-04 17:58:11 +03:00
|
|
|
|
topic_text_hash =?
|
2009-03-01 12:19:06 +02:00
|
|
|
|
AND
|
2010-04-04 17:58:11 +03:00
|
|
|
|
user_id = ?d
|
|
|
|
|
LIMIT 0,1
|
2009-03-01 12:19:06 +02:00
|
|
|
|
";
|
2010-04-04 17:58:11 +03:00
|
|
|
|
if ($aRow=$this->oDb->selectRow($sql,$sHash,$sUserId)) {
|
2009-05-24 14:02:34 +03:00
|
|
|
|
return $aRow['topic_id'];
|
2009-03-01 12:19:06 +02:00
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить список топиков по списку айдишников
|
|
|
|
|
*
|
|
|
|
|
* @param array $aArrayId Список ID топиков
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-05-17 20:35:47 +03:00
|
|
|
|
public function GetTopicsByArrayId($aArrayId) {
|
2008-11-12 22:04:21 +02:00
|
|
|
|
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2008-11-12 22:04:21 +02:00
|
|
|
|
$sql = "SELECT
|
2009-05-29 18:32:37 +03:00
|
|
|
|
t.*,
|
|
|
|
|
tc.*
|
2009-05-17 20:35:47 +03:00
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic')." as t
|
|
|
|
|
JOIN ".Config::Get('db.table.topic_content')." AS tc ON t.topic_id=tc.topic_id
|
2009-05-17 20:35:47 +03:00
|
|
|
|
WHERE
|
2009-05-29 18:32:37 +03:00
|
|
|
|
t.topic_id IN(?a)
|
2009-05-17 20:35:47 +03:00
|
|
|
|
ORDER BY FIELD(t.topic_id,?a) ";
|
2008-11-12 22:04:21 +02:00
|
|
|
|
$aTopics=array();
|
2009-05-17 20:35:47 +03:00
|
|
|
|
if ($aRows=$this->oDb->select($sql,$aArrayId,$aArrayId)) {
|
2008-11-12 22:04:21 +02:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
2009-09-08 15:02:51 +03:00
|
|
|
|
$aTopics[]=Engine::GetEntity('Topic',$aTopic);
|
2008-11-12 22:04:21 +02:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-11-12 22:04:21 +02:00
|
|
|
|
return $aTopics;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Список топиков по фильтру
|
|
|
|
|
*
|
|
|
|
|
* @param array $aFilter Фильтр
|
|
|
|
|
* @param int $iCount Возвращает общее число элементов
|
|
|
|
|
* @param int $iCurrPage Номер страницы
|
|
|
|
|
* @param int $iPerPage Количество элементов на страницу
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-05-17 20:35:47 +03:00
|
|
|
|
public function GetTopics($aFilter,&$iCount,$iCurrPage,$iPerPage) {
|
|
|
|
|
$sWhere=$this->buildFilter($aFilter);
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2011-04-25 19:27:33 +03:00
|
|
|
|
if(!isset($aFilter['order'])) {
|
|
|
|
|
$aFilter['order'] = 't.topic_date_add desc';
|
|
|
|
|
}
|
|
|
|
|
if (!is_array($aFilter['order'])) {
|
2009-12-08 23:34:11 +02:00
|
|
|
|
$aFilter['order'] = array($aFilter['order']);
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2009-05-17 20:35:47 +03:00
|
|
|
|
$sql = "SELECT
|
2009-05-24 14:02:34 +03:00
|
|
|
|
t.topic_id
|
2008-09-26 23:52:26 +03:00
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic')." as t,
|
2009-09-18 23:36:07 +03:00
|
|
|
|
".Config::Get('db.table.blog')." as b
|
2008-09-26 23:52:26 +03:00
|
|
|
|
WHERE
|
2009-05-17 20:35:47 +03:00
|
|
|
|
1=1
|
2009-09-18 23:36:07 +03:00
|
|
|
|
".$sWhere."
|
2008-09-26 23:52:26 +03:00
|
|
|
|
AND
|
2009-09-18 23:36:07 +03:00
|
|
|
|
t.blog_id=b.blog_id
|
2009-12-08 23:34:11 +02:00
|
|
|
|
ORDER BY ".
|
2012-06-25 20:53:05 +03:00
|
|
|
|
implode(', ', $aFilter['order'])
|
|
|
|
|
."
|
|
|
|
|
LIMIT ?d, ?d";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$aTopics=array();
|
2012-06-25 20:53:05 +03:00
|
|
|
|
if ($aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage, $iPerPage)) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
2009-05-24 14:02:34 +03:00
|
|
|
|
$aTopics[]=$aTopic['topic_id'];
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return $aTopics;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Количество топиков по фильтру
|
|
|
|
|
*
|
|
|
|
|
* @param array $aFilter Фильтр
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function GetCountTopics($aFilter) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$sWhere=$this->buildFilter($aFilter);
|
|
|
|
|
$sql = "SELECT
|
|
|
|
|
count(t.topic_id) as count
|
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic')." as t,
|
2009-09-18 23:36:07 +03:00
|
|
|
|
".Config::Get('db.table.blog')." as b
|
2008-09-21 09:36:57 +03:00
|
|
|
|
WHERE
|
|
|
|
|
1=1
|
|
|
|
|
|
|
|
|
|
".$sWhere."
|
|
|
|
|
|
|
|
|
|
AND
|
2012-06-25 20:53:05 +03:00
|
|
|
|
t.blog_id=b.blog_id;";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
if ($aRow=$this->oDb->selectRow($sql)) {
|
|
|
|
|
return $aRow['count'];
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Возвращает все топики по фильтру
|
|
|
|
|
*
|
|
|
|
|
* @param array $aFilter Фильтр
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-09-18 23:36:07 +03:00
|
|
|
|
public function GetAllTopics($aFilter) {
|
|
|
|
|
$sWhere=$this->buildFilter($aFilter);
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2011-04-25 19:27:33 +03:00
|
|
|
|
if(!isset($aFilter['order'])) {
|
|
|
|
|
$aFilter['order'] = 't.topic_id desc';
|
|
|
|
|
}
|
|
|
|
|
if (!is_array($aFilter['order'])) {
|
|
|
|
|
$aFilter['order'] = array($aFilter['order']);
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2009-09-18 23:36:07 +03:00
|
|
|
|
$sql = "SELECT
|
|
|
|
|
t.topic_id
|
|
|
|
|
FROM
|
|
|
|
|
".Config::Get('db.table.topic')." as t,
|
|
|
|
|
".Config::Get('db.table.blog')." as b
|
|
|
|
|
WHERE
|
|
|
|
|
1=1
|
|
|
|
|
".$sWhere."
|
|
|
|
|
AND
|
|
|
|
|
t.blog_id=b.blog_id
|
2012-06-25 20:53:05 +03:00
|
|
|
|
ORDER by ".implode(', ', $aFilter['order'])." ";
|
2009-09-18 23:36:07 +03:00
|
|
|
|
$aTopics=array();
|
2012-06-25 20:53:05 +03:00
|
|
|
|
if ($aRows=$this->oDb->select($sql)) {
|
2009-09-18 23:36:07 +03:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
|
|
|
|
$aTopics[]=$aTopic['topic_id'];
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2009-09-18 23:36:07 +03:00
|
|
|
|
|
2012-06-25 20:53:05 +03:00
|
|
|
|
return $aTopics;
|
2009-09-18 23:36:07 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает список топиков по тегу
|
|
|
|
|
*
|
|
|
|
|
* @param string $sTag Тег
|
|
|
|
|
* @param array $aExcludeBlog Список ID блогов для исключения
|
|
|
|
|
* @param int $iCount Возвращает общее количество элементов
|
|
|
|
|
* @param int $iCurrPage Номер страницы
|
|
|
|
|
* @param int $iPerPage Количество элементов на страницу
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function GetTopicsByTag($sTag,$aExcludeBlog,&$iCount,$iCurrPage,$iPerPage) {
|
2009-05-24 14:02:34 +03:00
|
|
|
|
$sql = "
|
2008-09-27 18:21:07 +03:00
|
|
|
|
SELECT
|
|
|
|
|
topic_id
|
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic_tag')."
|
2008-09-27 18:21:07 +03:00
|
|
|
|
WHERE
|
2009-05-24 14:02:34 +03:00
|
|
|
|
topic_tag_text = ?
|
2010-04-25 16:56:03 +03:00
|
|
|
|
{ AND blog_id NOT IN (?a) }
|
2008-09-27 18:21:07 +03:00
|
|
|
|
ORDER BY topic_id DESC
|
2009-05-24 14:02:34 +03:00
|
|
|
|
LIMIT ?d, ?d ";
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$aTopics=array();
|
2009-09-19 21:25:11 +03:00
|
|
|
|
if ($aRows=$this->oDb->selectPage(
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$iCount,$sql,$sTag,
|
|
|
|
|
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
|
|
|
|
($iCurrPage-1)*$iPerPage, $iPerPage
|
|
|
|
|
)
|
2009-09-19 21:25:11 +03:00
|
|
|
|
) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
2009-05-24 14:02:34 +03:00
|
|
|
|
$aTopics[]=$aTopic['topic_id'];
|
2009-09-19 21:25:11 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
return $aTopics;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает топики по рейтингу и дате
|
|
|
|
|
*
|
|
|
|
|
* @param string $sDate Дата
|
|
|
|
|
* @param int $iLimit Количество
|
|
|
|
|
* @param array $aExcludeBlog Список ID блогов для исключения
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-09-19 17:48:28 +03:00
|
|
|
|
public function GetTopicsRatingByDate($sDate,$iLimit,$aExcludeBlog=array()) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$sql = "SELECT
|
2009-05-24 14:02:34 +03:00
|
|
|
|
t.topic_id
|
2008-09-27 18:21:07 +03:00
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic')." as t
|
2008-09-27 18:21:07 +03:00
|
|
|
|
WHERE
|
|
|
|
|
t.topic_publish = 1
|
|
|
|
|
AND
|
2009-09-18 23:36:07 +03:00
|
|
|
|
t.topic_date_add >= ?
|
2008-09-27 18:21:07 +03:00
|
|
|
|
AND
|
2009-09-19 17:48:28 +03:00
|
|
|
|
t.topic_rating >= 0
|
|
|
|
|
{ AND t.blog_id NOT IN(?a) }
|
2008-09-27 18:21:07 +03:00
|
|
|
|
ORDER by t.topic_rating desc, t.topic_id desc
|
2012-06-25 20:53:05 +03:00
|
|
|
|
LIMIT 0, ?d ";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$aTopics=array();
|
2009-09-19 17:48:28 +03:00
|
|
|
|
if ($aRows=$this->oDb->select(
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$sql,$sDate,
|
|
|
|
|
(is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog : DBSIMPLE_SKIP,
|
|
|
|
|
$iLimit
|
|
|
|
|
)
|
2009-09-19 17:48:28 +03:00
|
|
|
|
) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
foreach ($aRows as $aTopic) {
|
2009-05-24 14:02:34 +03:00
|
|
|
|
$aTopics[]=$aTopic['topic_id'];
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aTopics;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает список тегов топиков
|
|
|
|
|
*
|
|
|
|
|
* @param int $iLimit Количество
|
|
|
|
|
* @param array $aExcludeTopic Список ID топиков для исключения
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-09-19 21:25:11 +03:00
|
|
|
|
public function GetTopicTags($iLimit,$aExcludeTopic=array()) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$sql = "SELECT
|
|
|
|
|
tt.topic_tag_text,
|
|
|
|
|
count(tt.topic_tag_text) as count
|
|
|
|
|
FROM
|
2009-09-19 21:25:11 +03:00
|
|
|
|
".Config::Get('db.table.topic_tag')." as tt
|
|
|
|
|
WHERE
|
|
|
|
|
1=1
|
|
|
|
|
{AND tt.topic_id NOT IN(?a) }
|
2008-09-21 09:36:57 +03:00
|
|
|
|
GROUP BY
|
|
|
|
|
tt.topic_tag_text
|
|
|
|
|
ORDER BY
|
|
|
|
|
count desc
|
2009-09-19 21:25:11 +03:00
|
|
|
|
LIMIT 0, ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$aReturn=array();
|
|
|
|
|
$aReturnSort=array();
|
2009-09-19 21:25:11 +03:00
|
|
|
|
if ($aRows=$this->oDb->select(
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$sql,
|
|
|
|
|
(is_array($aExcludeTopic)&&count($aExcludeTopic)) ? $aExcludeTopic : DBSIMPLE_SKIP,
|
|
|
|
|
$iLimit
|
|
|
|
|
)
|
2009-09-19 21:25:11 +03:00
|
|
|
|
) {
|
2012-06-25 20:53:05 +03:00
|
|
|
|
foreach ($aRows as $aRow) {
|
2009-03-05 21:34:52 +02:00
|
|
|
|
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
|
|
|
|
|
}
|
|
|
|
|
ksort($aReturn);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
foreach ($aReturn as $aRow) {
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturnSort;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает список тегов из топиков открытых блогов (open,personal)
|
|
|
|
|
*
|
|
|
|
|
* @param int $iLimit Количество
|
|
|
|
|
* @param int|null $iUserId ID пользователя, чью теги получаем
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2012-04-06 08:02:37 +03:00
|
|
|
|
public function GetOpenTopicTags($iLimit,$iUserId=null) {
|
2009-09-20 21:43:20 +03:00
|
|
|
|
$sql = "
|
|
|
|
|
SELECT
|
|
|
|
|
tt.topic_tag_text,
|
|
|
|
|
count(tt.topic_tag_text) as count
|
|
|
|
|
FROM
|
|
|
|
|
".Config::Get('db.table.topic_tag')." as tt,
|
|
|
|
|
".Config::Get('db.table.blog')." as b
|
2012-04-06 08:02:37 +03:00
|
|
|
|
WHERE
|
|
|
|
|
1 = 1
|
|
|
|
|
{ AND tt.user_id = ?d }
|
|
|
|
|
AND
|
2009-09-20 21:43:20 +03:00
|
|
|
|
tt.blog_id = b.blog_id
|
|
|
|
|
AND
|
2012-04-29 19:21:49 +03:00
|
|
|
|
b.blog_type <> 'close'
|
2009-09-20 21:43:20 +03:00
|
|
|
|
GROUP BY
|
|
|
|
|
tt.topic_tag_text
|
|
|
|
|
ORDER BY
|
|
|
|
|
count desc
|
|
|
|
|
LIMIT 0, ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2009-09-20 21:43:20 +03:00
|
|
|
|
$aReturn=array();
|
|
|
|
|
$aReturnSort=array();
|
2012-04-06 08:02:37 +03:00
|
|
|
|
if ($aRows=$this->oDb->select($sql,is_null($iUserId) ? DBSIMPLE_SKIP : $iUserId,$iLimit)) {
|
2012-06-25 20:53:05 +03:00
|
|
|
|
foreach ($aRows as $aRow) {
|
2009-09-20 21:43:20 +03:00
|
|
|
|
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
|
|
|
|
|
}
|
|
|
|
|
ksort($aReturn);
|
|
|
|
|
foreach ($aReturn as $aRow) {
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
2009-09-20 21:43:20 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturnSort;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Увеличивает у топика число комментов
|
|
|
|
|
*
|
|
|
|
|
* @param int $sTopicId ID топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2008-09-21 09:36:57 +03:00
|
|
|
|
public function increaseTopicCountComment($sTopicId) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
SET
|
|
|
|
|
topic_count_comment=topic_count_comment+1
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sTopicId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обновляет топик
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function UpdateTopic(ModuleTopic_EntityTopic $oTopic) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
SET
|
|
|
|
|
blog_id= ?d,
|
2008-09-27 18:21:07 +03:00
|
|
|
|
topic_title= ?,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
topic_tags= ?,
|
2009-02-15 10:10:07 +02:00
|
|
|
|
topic_date_add = ?,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
topic_date_edit = ?,
|
|
|
|
|
topic_user_ip= ?,
|
2009-02-15 10:10:07 +02:00
|
|
|
|
topic_publish= ?d ,
|
|
|
|
|
topic_publish_draft= ?d ,
|
|
|
|
|
topic_publish_index= ?d,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
topic_rating= ?f,
|
|
|
|
|
topic_count_vote= ?d,
|
2012-03-10 07:45:19 +02:00
|
|
|
|
topic_count_vote_up= ?d,
|
|
|
|
|
topic_count_vote_down= ?d,
|
|
|
|
|
topic_count_vote_abstain= ?d,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
topic_count_read= ?d,
|
2008-10-25 23:31:29 +03:00
|
|
|
|
topic_count_comment= ?d,
|
2011-10-09 20:23:38 +03:00
|
|
|
|
topic_count_favourite= ?d,
|
2008-10-25 23:31:29 +03:00
|
|
|
|
topic_cut_text = ? ,
|
2009-03-01 12:19:06 +02:00
|
|
|
|
topic_forbid_comment = ? ,
|
|
|
|
|
topic_text_hash = ?
|
2008-09-21 09:36:57 +03:00
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getTitle(),$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getDateEdit(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getRating(),$oTopic->getCountVote(),$oTopic->getCountVoteUp(),$oTopic->getCountVoteDown(),$oTopic->getCountVoteAbstain(),$oTopic->getCountRead(),$oTopic->getCountComment(),$oTopic->getCountFavourite(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash(),$oTopic->getId());
|
|
|
|
|
if ($res!==false and !is_null($res)) {
|
2008-09-27 18:21:07 +03:00
|
|
|
|
$this->UpdateTopicContent($oTopic);
|
|
|
|
|
return true;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-27 18:21:07 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обновляет контент топика
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopic $oTopic Объект топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function UpdateTopicContent(ModuleTopic_EntityTopic $oTopic) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic_content')."
|
2008-09-27 18:21:07 +03:00
|
|
|
|
SET
|
|
|
|
|
topic_text= ?,
|
|
|
|
|
topic_text_short= ?,
|
|
|
|
|
topic_text_source= ?,
|
|
|
|
|
topic_extra= ?
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$oTopic->getText(),$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra(),$oTopic->getId());
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Строит строку условий для SQL запроса топиков
|
|
|
|
|
*
|
|
|
|
|
* @param array $aFilter Фильтр
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2008-09-21 09:36:57 +03:00
|
|
|
|
protected function buildFilter($aFilter) {
|
|
|
|
|
$sWhere='';
|
2012-03-31 20:10:02 +03:00
|
|
|
|
if (isset($aFilter['topic_date_more'])) {
|
2013-01-30 20:44:04 +02:00
|
|
|
|
$sWhere.=" AND t.topic_date_add > ".$this->oDb->escape($aFilter['topic_date_more']);
|
2012-03-31 20:10:02 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
if (isset($aFilter['topic_publish'])) {
|
|
|
|
|
$sWhere.=" AND t.topic_publish = ".(int)$aFilter['topic_publish'];
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-26 23:52:26 +03:00
|
|
|
|
if (isset($aFilter['topic_rating']) and is_array($aFilter['topic_rating'])) {
|
2008-10-11 00:02:31 +03:00
|
|
|
|
$sPublishIndex='';
|
|
|
|
|
if (isset($aFilter['topic_rating']['publish_index']) and $aFilter['topic_rating']['publish_index']==1) {
|
|
|
|
|
$sPublishIndex=" or topic_publish_index=1 ";
|
|
|
|
|
}
|
2008-09-26 23:52:26 +03:00
|
|
|
|
if ($aFilter['topic_rating']['type']=='top') {
|
2008-10-11 00:02:31 +03:00
|
|
|
|
$sWhere.=" AND ( t.topic_rating >= ".(float)$aFilter['topic_rating']['value']." {$sPublishIndex} ) ";
|
2008-09-26 23:52:26 +03:00
|
|
|
|
} else {
|
2008-10-11 00:02:31 +03:00
|
|
|
|
$sWhere.=" AND ( t.topic_rating < ".(float)$aFilter['topic_rating']['value']." ) ";
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-09-26 23:52:26 +03:00
|
|
|
|
}
|
|
|
|
|
if (isset($aFilter['topic_new'])) {
|
|
|
|
|
$sWhere.=" AND t.topic_date_add >= '".$aFilter['topic_new']."'";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
if (isset($aFilter['user_id'])) {
|
2010-02-21 02:16:40 +02:00
|
|
|
|
$sWhere.=is_array($aFilter['user_id'])
|
|
|
|
|
? " AND t.user_id IN(".implode(', ',$aFilter['user_id']).")"
|
|
|
|
|
: " AND t.user_id = ".(int)$aFilter['user_id'];
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
if (isset($aFilter['blog_id'])) {
|
2009-09-18 23:36:07 +03:00
|
|
|
|
if(!is_array($aFilter['blog_id'])) {
|
|
|
|
|
$aFilter['blog_id']=array($aFilter['blog_id']);
|
|
|
|
|
}
|
|
|
|
|
$sWhere.=" AND t.blog_id IN ('".join("','",$aFilter['blog_id'])."')";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2008-09-26 23:52:26 +03:00
|
|
|
|
if (isset($aFilter['blog_type']) and is_array($aFilter['blog_type'])) {
|
2009-09-18 23:36:07 +03:00
|
|
|
|
$aBlogTypes = array();
|
|
|
|
|
foreach ($aFilter['blog_type'] as $sType=>$aBlogId) {
|
|
|
|
|
/**
|
|
|
|
|
* Позиция вида 'type'=>array('id1', 'id2')
|
|
|
|
|
*/
|
|
|
|
|
if(!is_array($aBlogId) && is_string($sType)){
|
|
|
|
|
$aBlogId=array($aBlogId);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Позиция вида 'type'
|
|
|
|
|
*/
|
|
|
|
|
if(is_string($aBlogId) && is_int($sType)) {
|
|
|
|
|
$sType=$aBlogId;
|
|
|
|
|
$aBlogId=array();
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
|
|
|
|
$aBlogTypes[] = (count($aBlogId)==0)
|
2009-09-18 23:36:07 +03:00
|
|
|
|
? "(b.blog_type='".$sType."')"
|
2009-09-19 13:53:33 +03:00
|
|
|
|
: "(b.blog_type='".$sType."' AND t.blog_id IN ('".join("','",$aBlogId)."'))";
|
2009-09-18 23:36:07 +03:00
|
|
|
|
}
|
|
|
|
|
$sWhere.=" AND (".join(" OR ",(array)$aBlogTypes).")";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2011-09-08 16:51:03 +03:00
|
|
|
|
if (isset($aFilter['topic_type'])) {
|
|
|
|
|
if(!is_array($aFilter['topic_type'])) {
|
|
|
|
|
$aFilter['topic_type']=array($aFilter['topic_type']);
|
|
|
|
|
}
|
2013-01-30 20:44:04 +02:00
|
|
|
|
$sWhere.=" AND t.topic_type IN (".join(",",array_map(array($this->oDb,'escape'),$aFilter['topic_type'])).")";
|
2011-09-08 16:51:03 +03:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return $sWhere;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получает список тегов по первым буквам тега
|
|
|
|
|
*
|
|
|
|
|
* @param string $sTag Тэг
|
|
|
|
|
* @param int $iLimit Количество
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2008-09-21 09:36:57 +03:00
|
|
|
|
public function GetTopicTagsByLike($sTag,$iLimit) {
|
2012-06-25 20:53:05 +03:00
|
|
|
|
$sTag=mb_strtolower($sTag,"UTF-8");
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$sql = "SELECT
|
|
|
|
|
topic_tag_text
|
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic_tag')."
|
2008-09-21 09:36:57 +03:00
|
|
|
|
WHERE
|
2008-11-03 13:08:12 +02:00
|
|
|
|
topic_tag_text LIKE ?
|
2008-09-21 09:36:57 +03:00
|
|
|
|
GROUP BY
|
|
|
|
|
topic_tag_text
|
|
|
|
|
LIMIT 0, ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$aReturn=array();
|
|
|
|
|
if ($aRows=$this->oDb->select($sql,$sTag.'%',$iLimit)) {
|
|
|
|
|
foreach ($aRows as $aRow) {
|
2009-09-08 15:02:51 +03:00
|
|
|
|
$aReturn[]=Engine::GetEntity('Topic_TopicTag',$aRow);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturn;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обновляем дату прочтения топика
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicRead $oTopicRead Объект факта чтения топика
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function UpdateTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic_read')."
|
2008-12-28 12:51:59 +02:00
|
|
|
|
SET
|
|
|
|
|
comment_count_last = ? ,
|
2009-01-24 11:54:59 +02:00
|
|
|
|
comment_id_last = ? ,
|
2008-12-28 12:51:59 +02:00
|
|
|
|
date_read = ?
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id = ?
|
|
|
|
|
AND
|
|
|
|
|
user_id = ?
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Устанавливаем дату прочтения топика
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicRead $oTopicRead Объект факта чтения топика
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function AddTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "INSERT INTO ".Config::Get('db.table.topic_read')."
|
2008-10-30 08:12:44 +02:00
|
|
|
|
SET
|
2008-11-03 22:18:09 +02:00
|
|
|
|
comment_count_last = ? ,
|
2009-01-24 11:54:59 +02:00
|
|
|
|
comment_id_last = ? ,
|
2008-10-30 08:12:44 +02:00
|
|
|
|
date_read = ? ,
|
2008-12-28 12:51:59 +02:00
|
|
|
|
topic_id = ? ,
|
2008-09-21 09:36:57 +03:00
|
|
|
|
user_id = ?
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2009-01-24 11:54:59 +02:00
|
|
|
|
return $this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
|
2008-12-28 12:51:59 +02:00
|
|
|
|
}
|
2009-10-25 22:01:05 +02:00
|
|
|
|
/**
|
|
|
|
|
* Удаляет записи о чтении записей по списку идентификаторов
|
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param array $aTopicId Список ID топиков
|
2009-10-25 22:01:05 +02:00
|
|
|
|
* @return bool
|
2012-06-25 20:53:05 +03:00
|
|
|
|
*/
|
2009-10-25 22:01:05 +02:00
|
|
|
|
public function DeleteTopicReadByArrayId($aTopicId) {
|
|
|
|
|
$sql = "
|
|
|
|
|
DELETE FROM ".Config::Get('db.table.topic_read')."
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id IN(?a)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$aTopicId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2009-10-25 22:01:05 +02:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить список просмотром/чтения топиков по списку айдишников
|
|
|
|
|
*
|
|
|
|
|
* @param array $aArrayId Список ID топиков
|
|
|
|
|
* @param int $sUserId ID пользователя
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-05-29 18:32:37 +03:00
|
|
|
|
public function GetTopicsReadByArray($aArrayId,$sUserId) {
|
|
|
|
|
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2009-05-29 18:32:37 +03:00
|
|
|
|
$sql = "SELECT
|
|
|
|
|
t.*
|
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic_read')." as t
|
2009-05-29 18:32:37 +03:00
|
|
|
|
WHERE
|
2010-04-04 17:58:11 +03:00
|
|
|
|
t.topic_id IN(?a)
|
2009-05-29 18:32:37 +03:00
|
|
|
|
AND
|
2010-04-04 17:58:11 +03:00
|
|
|
|
t.user_id = ?d
|
2009-05-29 18:32:37 +03:00
|
|
|
|
";
|
|
|
|
|
$aReads=array();
|
2010-04-04 17:58:11 +03:00
|
|
|
|
if ($aRows=$this->oDb->select($sql,$aArrayId,$sUserId)) {
|
2009-05-29 18:32:37 +03:00
|
|
|
|
foreach ($aRows as $aRow) {
|
2009-09-08 15:02:51 +03:00
|
|
|
|
$aReads[]=Engine::GetEntity('Topic_TopicRead',$aRow);
|
2009-05-29 18:32:37 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2009-05-29 18:32:37 +03:00
|
|
|
|
return $aReads;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавляет факт голосования за топик-вопрос
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote Объект голосования в топике-опросе
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2010-05-27 18:16:20 +03:00
|
|
|
|
public function AddTopicQuestionVote(ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote) {
|
2009-08-20 15:50:14 +03:00
|
|
|
|
$sql = "INSERT INTO ".Config::Get('db.table.topic_question_vote')."
|
2008-10-01 21:53:51 +03:00
|
|
|
|
(topic_id,
|
|
|
|
|
user_voter_id,
|
|
|
|
|
answer
|
|
|
|
|
)
|
|
|
|
|
VALUES(?d, ?d, ?f)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
|
|
|
|
if ($this->oDb->query($sql,$oTopicQuestionVote->getTopicId(),$oTopicQuestionVote->getVoterId(),$oTopicQuestionVote->getAnswer())===0)
|
2008-10-01 21:53:51 +03:00
|
|
|
|
{
|
|
|
|
|
return true;
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2008-10-01 21:53:51 +03:00
|
|
|
|
return false;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить список голосований в топике-опросе по списку айдишников
|
|
|
|
|
*
|
|
|
|
|
* @param array $aArrayId Список ID топиков
|
|
|
|
|
* @param int $sUserId ID пользователя
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
2009-05-29 18:32:37 +03:00
|
|
|
|
public function GetTopicsQuestionVoteByArray($aArrayId,$sUserId) {
|
|
|
|
|
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2009-05-29 18:32:37 +03:00
|
|
|
|
$sql = "SELECT
|
|
|
|
|
v.*
|
|
|
|
|
FROM
|
2009-08-20 15:50:14 +03:00
|
|
|
|
".Config::Get('db.table.topic_question_vote')." as v
|
2009-05-29 18:32:37 +03:00
|
|
|
|
WHERE
|
2010-04-04 17:58:11 +03:00
|
|
|
|
v.topic_id IN(?a)
|
|
|
|
|
AND
|
|
|
|
|
v.user_voter_id = ?d
|
2009-05-29 18:32:37 +03:00
|
|
|
|
";
|
|
|
|
|
$aVotes=array();
|
2010-04-04 17:58:11 +03:00
|
|
|
|
if ($aRows=$this->oDb->select($sql,$aArrayId,$sUserId)) {
|
2009-05-29 18:32:37 +03:00
|
|
|
|
foreach ($aRows as $aRow) {
|
2009-09-08 15:02:51 +03:00
|
|
|
|
$aVotes[]=Engine::GetEntity('Topic_TopicQuestionVote',$aRow);
|
2009-05-29 18:32:37 +03:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
}
|
2009-05-29 18:32:37 +03:00
|
|
|
|
return $aVotes;
|
|
|
|
|
}
|
2009-11-25 02:37:01 +02:00
|
|
|
|
/**
|
|
|
|
|
* Перемещает топики в другой блог
|
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param array $aTopics Список ID топиков
|
|
|
|
|
* @param int $sBlogId ID блога
|
2009-11-25 02:37:01 +02:00
|
|
|
|
* @return bool
|
2012-06-25 20:53:05 +03:00
|
|
|
|
*/
|
2009-11-25 02:37:01 +02:00
|
|
|
|
public function MoveTopicsByArrayId($aTopics,$sBlogId) {
|
|
|
|
|
if(!is_array($aTopics)) $aTopics = array($aTopics);
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2009-11-25 02:37:01 +02:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
|
|
|
|
SET
|
|
|
|
|
blog_id= ?d
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id IN(?a)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sBlogId,$aTopics);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2009-11-25 02:37:01 +02:00
|
|
|
|
}
|
2009-11-25 16:06:02 +02:00
|
|
|
|
/**
|
|
|
|
|
* Перемещает топики в другой блог
|
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param int $sBlogId ID старого блога
|
|
|
|
|
* @param int $sBlogIdNew ID нового блога
|
2009-11-25 16:06:02 +02:00
|
|
|
|
* @return bool
|
2012-06-25 20:53:05 +03:00
|
|
|
|
*/
|
2009-11-25 16:06:02 +02:00
|
|
|
|
public function MoveTopics($sBlogId,$sBlogIdNew) {
|
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic')."
|
|
|
|
|
SET
|
|
|
|
|
blog_id= ?d
|
|
|
|
|
WHERE
|
|
|
|
|
blog_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sBlogIdNew,$sBlogId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2009-11-25 16:06:02 +02:00
|
|
|
|
}
|
2010-04-17 20:55:22 +03:00
|
|
|
|
/**
|
|
|
|
|
* Перемещает теги топиков в другой блог
|
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param int $sBlogId ID старого блога
|
|
|
|
|
* @param int $sBlogIdNew ID нового блога
|
2010-04-17 20:55:22 +03:00
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function MoveTopicsTags($sBlogId,$sBlogIdNew) {
|
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic_tag')."
|
|
|
|
|
SET
|
|
|
|
|
blog_id= ?d
|
|
|
|
|
WHERE
|
|
|
|
|
blog_id = ?d
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sBlogIdNew,$sBlogId);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2010-04-17 20:55:22 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Перемещает теги топиков в другой блог
|
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param array $aTopics Список ID топиков
|
|
|
|
|
* @param int $sBlogId ID блога
|
2010-04-17 20:55:22 +03:00
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function MoveTopicsTagsByArrayId($aTopics,$sBlogId) {
|
|
|
|
|
if(!is_array($aTopics)) $aTopics = array($aTopics);
|
2012-06-25 20:53:05 +03:00
|
|
|
|
|
2010-04-17 20:55:22 +03:00
|
|
|
|
$sql = "UPDATE ".Config::Get('db.table.topic_tag')."
|
|
|
|
|
SET
|
|
|
|
|
blog_id= ?d
|
|
|
|
|
WHERE
|
|
|
|
|
topic_id IN(?a)
|
2012-06-25 20:53:05 +03:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql,$sBlogId,$aTopics);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2010-04-17 20:55:22 +03:00
|
|
|
|
}
|
2011-07-24 00:55:56 +03:00
|
|
|
|
/**
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* Возвращает список фотографий к топику-фотосет по списку id фоток
|
2011-07-24 00:55:56 +03:00
|
|
|
|
*
|
2012-06-25 20:53:05 +03:00
|
|
|
|
* @param array $aPhotoId Список ID фото
|
|
|
|
|
* @return array
|
2011-07-24 00:55:56 +03:00
|
|
|
|
*/
|
|
|
|
|
public function GetTopicPhotosByArrayId($aArrayId) {
|
|
|
|
|
if (!is_array($aArrayId) or count($aArrayId)==0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sql = "SELECT
|
|
|
|
|
*
|
|
|
|
|
FROM
|
|
|
|
|
".Config::Get('db.table.topic_photo')."
|
|
|
|
|
WHERE
|
|
|
|
|
id IN(?a)
|
|
|
|
|
ORDER BY FIELD(id,?a) ";
|
|
|
|
|
$aReturn=array();
|
|
|
|
|
if ($aRows=$this->oDb->select($sql,$aArrayId,$aArrayId)) {
|
|
|
|
|
foreach ($aRows as $aPhoto) {
|
|
|
|
|
$aReturn[]=Engine::GetEntity('Topic_TopicPhoto',$aPhoto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturn;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить список изображений из фотосета по id топика
|
|
|
|
|
*
|
|
|
|
|
* @param int $iTopicId ID топика
|
|
|
|
|
* @param int|null $iFromId ID с которого начинать выборку
|
|
|
|
|
* @param int|null $iCount Количество
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function getPhotosByTopicId($iTopicId, $iFromId, $iCount) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE topic_id = ?d {AND id > ?d LIMIT 0, ?d}';
|
|
|
|
|
$aPhotos = $this->oDb->select($sql, $iTopicId, ($iFromId !== null) ? $iFromId : DBSIMPLE_SKIP, $iCount);
|
|
|
|
|
$aReturn = array();
|
|
|
|
|
if (is_array($aPhotos) && count($aPhotos)) {
|
|
|
|
|
foreach($aPhotos as $aPhoto) {
|
|
|
|
|
$aReturn[] = Engine::GetEntity('Topic_TopicPhoto', $aPhoto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturn;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить список изображений из фотосета по временному коду
|
|
|
|
|
*
|
|
|
|
|
* @param string $sTargetTmp Временный ключ
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function getPhotosByTargetTmp($sTargetTmp) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE target_tmp = ?';
|
|
|
|
|
$aPhotos = $this->oDb->select($sql, $sTargetTmp);
|
|
|
|
|
$aReturn = array();
|
|
|
|
|
if (is_array($aPhotos) && count($aPhotos)) {
|
|
|
|
|
foreach($aPhotos as $aPhoto) {
|
|
|
|
|
$aReturn[] = Engine::GetEntity('Topic_TopicPhoto', $aPhoto);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $aReturn;
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить изображение из фотосета по его id
|
|
|
|
|
*
|
|
|
|
|
* @param int $iPhotoId ID фото
|
|
|
|
|
* @return ModuleTopic_EntityTopicPhoto|null
|
|
|
|
|
*/
|
|
|
|
|
public function getTopicPhotoById($iPhotoId) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'SELECT * FROM ' . Config::Get('db.table.topic_photo') . ' WHERE id = ?d';
|
|
|
|
|
$aPhoto = $this->oDb->selectRow($sql, $iPhotoId);
|
|
|
|
|
if ($aPhoto) {
|
|
|
|
|
return Engine::GetEntity('Topic_TopicPhoto', $aPhoto);
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить число изображений из фотосета по id топика
|
|
|
|
|
*
|
|
|
|
|
* @param int $iTopicId ID топика
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function getCountPhotosByTopicId($iTopicId) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'SELECT count(id) FROM ' . Config::Get('db.table.topic_photo') . ' WHERE topic_id = ?d';
|
|
|
|
|
$aPhotosCount = $this->oDb->selectCol($sql, $iTopicId);
|
|
|
|
|
return $aPhotosCount[0];
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить число изображений из фотосета по id топика
|
|
|
|
|
*
|
|
|
|
|
* @param string $sTargetTmp Временный ключ
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function getCountPhotosByTargetTmp($sTargetTmp) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'SELECT count(id) FROM ' . Config::Get('db.table.topic_photo') . ' WHERE target_tmp = ?';
|
|
|
|
|
$aPhotosCount = $this->oDb->selectCol($sql, $sTargetTmp);
|
|
|
|
|
return $aPhotosCount[0];
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавить к топику изображение
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото к топику-фотосету
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function addTopicPhoto($oPhoto) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
if (!$oPhoto->getTopicId() && !$oPhoto->getTargetTmp()) return false;
|
|
|
|
|
$sTargetType = ($oPhoto->getTopicId()) ? 'topic_id' : 'target_tmp';
|
|
|
|
|
$iTargetId = ($sTargetType == 'topic_id') ? $oPhoto->getTopicId() : $oPhoto->getTargetTmp();
|
|
|
|
|
$sql = 'INSERT INTO '. Config::Get('db.table.topic_photo') . ' SET
|
2011-07-20 00:32:36 +03:00
|
|
|
|
path = ?, description = ?, ?# = ?';
|
2012-03-10 07:45:19 +02:00
|
|
|
|
return $this->oDb->query($sql, $oPhoto->getPath(), $oPhoto->getDescription(), $sTargetType, $iTargetId);
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обновить данные по изображению
|
|
|
|
|
*
|
|
|
|
|
* @param ModuleTopic_EntityTopicPhoto $oPhoto Объект фото
|
|
|
|
|
*/
|
|
|
|
|
public function updateTopicPhoto($oPhoto) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
if (!$oPhoto->getTopicId() && !$oPhoto->getTargetTmp()) return false;
|
|
|
|
|
if ($oPhoto->getTopicId()) {
|
|
|
|
|
$oPhoto->setTargetTmp = null;
|
|
|
|
|
}
|
|
|
|
|
$sql = 'UPDATE '. Config::Get('db.table.topic_photo') . ' SET
|
2011-07-20 00:32:36 +03:00
|
|
|
|
path = ?, description = ?, topic_id = ?d, target_tmp=? WHERE id = ?d';
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$this->oDb->query($sql, $oPhoto->getPath(), $oPhoto->getDescription(), $oPhoto->getTopicId(), $oPhoto->getTargetTmp(), $oPhoto->getId());
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Удалить изображение
|
|
|
|
|
*
|
|
|
|
|
* @param int $iPhotoId ID фото
|
|
|
|
|
*/
|
|
|
|
|
public function deleteTopicPhoto($iPhotoId) {
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$sql = 'DELETE FROM '. Config::Get('db.table.topic_photo') . ' WHERE
|
2011-07-20 00:32:36 +03:00
|
|
|
|
id= ?d';
|
2012-03-10 07:45:19 +02:00
|
|
|
|
$this->oDb->query($sql, $iPhotoId);
|
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Пересчитывает счетчик избранных топиков
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2012-03-10 07:45:19 +02:00
|
|
|
|
public function RecalculateFavourite() {
|
|
|
|
|
$sql = "
|
2011-10-09 20:23:38 +03:00
|
|
|
|
UPDATE ".Config::Get('db.table.topic')." t
|
|
|
|
|
SET t.topic_count_favourite = (
|
|
|
|
|
SELECT count(f.user_id)
|
|
|
|
|
FROM ".Config::Get('db.table.favourite')." f
|
|
|
|
|
WHERE
|
|
|
|
|
f.target_id = t.topic_id
|
|
|
|
|
AND
|
|
|
|
|
f.target_publish = 1
|
|
|
|
|
AND
|
|
|
|
|
f.target_type = 'topic'
|
|
|
|
|
)
|
2012-03-10 07:45:19 +02:00
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2012-03-10 07:45:19 +02:00
|
|
|
|
}
|
2012-06-25 20:53:05 +03:00
|
|
|
|
/**
|
|
|
|
|
* Пересчитывает счетчики голосований
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
2012-03-10 07:45:19 +02:00
|
|
|
|
public function RecalculateVote() {
|
|
|
|
|
$sql = "
|
|
|
|
|
UPDATE ".Config::Get('db.table.topic')." t
|
|
|
|
|
SET t.topic_count_vote_up = (
|
|
|
|
|
SELECT count(*)
|
|
|
|
|
FROM ".Config::Get('db.table.vote')." v
|
|
|
|
|
WHERE
|
|
|
|
|
v.target_id = t.topic_id
|
|
|
|
|
AND
|
|
|
|
|
v.vote_direction = 1
|
|
|
|
|
AND
|
|
|
|
|
v.target_type = 'topic'
|
|
|
|
|
), t.topic_count_vote_down = (
|
|
|
|
|
SELECT count(*)
|
|
|
|
|
FROM ".Config::Get('db.table.vote')." v
|
|
|
|
|
WHERE
|
|
|
|
|
v.target_id = t.topic_id
|
|
|
|
|
AND
|
|
|
|
|
v.vote_direction = -1
|
|
|
|
|
AND
|
|
|
|
|
v.target_type = 'topic'
|
|
|
|
|
), t.topic_count_vote_abstain = (
|
|
|
|
|
SELECT count(*)
|
|
|
|
|
FROM ".Config::Get('db.table.vote')." v
|
|
|
|
|
WHERE
|
|
|
|
|
v.target_id = t.topic_id
|
|
|
|
|
AND
|
|
|
|
|
v.vote_direction = 0
|
|
|
|
|
AND
|
|
|
|
|
v.target_type = 'topic'
|
|
|
|
|
)
|
|
|
|
|
";
|
2013-07-10 10:39:15 +03:00
|
|
|
|
$res=$this->oDb->query($sql);
|
|
|
|
|
return $res===false or is_null($res) ? false : true;
|
2012-03-10 07:45:19 +02:00
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
?>
|