ModuleTopic_MapperTopic

Package modules.topic
Inheritance class ModuleTopic_MapperTopic » Mapper » LsObject
Since 1.0
Source Code /classes/modules/topic/mapper/Topic.mapper.class.php
Объект маппера для работы с БД

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
oDb DbSimple_Generic_Database Объект подключения к базе данных Mapper

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddTopic() Добавляет топик ModuleTopic_MapperTopic
AddTopicContent() Добавляет контент топика ModuleTopic_MapperTopic
AddTopicQuestionVote() Добавляет факт голосования за топик-вопрос ModuleTopic_MapperTopic
AddTopicRead() Устанавливаем дату прочтения топика ModuleTopic_MapperTopic
AddTopicTag() Добавление тега к топику ModuleTopic_MapperTopic
DeleteTopic() Удаляет топик. ModuleTopic_MapperTopic
DeleteTopicContentByTopicId() Удаление контента топика по его номеру ModuleTopic_MapperTopic
DeleteTopicReadByArrayId() Удаляет записи о чтении записей по списку идентификаторов ModuleTopic_MapperTopic
DeleteTopicTagsByTopicId() Удаляет теги у топика ModuleTopic_MapperTopic
GetAllTopics() Возвращает все топики по фильтру ModuleTopic_MapperTopic
GetCountTopics() Количество топиков по фильтру ModuleTopic_MapperTopic
GetOpenTopicTags() Получает список тегов из топиков открытых блогов (open,personal) ModuleTopic_MapperTopic
GetTopicPhotosByArrayId() Возвращает список фотографий к топику-фотосет по списку id фоток ModuleTopic_MapperTopic
GetTopicTags() Получает список тегов топиков ModuleTopic_MapperTopic
GetTopicTagsByLike() Получает список тегов по первым буквам тега ModuleTopic_MapperTopic
GetTopicUnique() Получает топик по уникальному хешу(текст топика) ModuleTopic_MapperTopic
GetTopics() Список топиков по фильтру ModuleTopic_MapperTopic
GetTopicsByArrayId() Получить список топиков по списку айдишников ModuleTopic_MapperTopic
GetTopicsByTag() Получает список топиков по тегу ModuleTopic_MapperTopic
GetTopicsQuestionVoteByArray() Получить список голосований в топике-опросе по списку айдишников ModuleTopic_MapperTopic
GetTopicsRatingByDate() Получает топики по рейтингу и дате ModuleTopic_MapperTopic
GetTopicsReadByArray() Получить список просмотром/чтения топиков по списку айдишников ModuleTopic_MapperTopic
MoveTopics() Перемещает топики в другой блог ModuleTopic_MapperTopic
MoveTopicsByArrayId() Перемещает топики в другой блог ModuleTopic_MapperTopic
MoveTopicsTags() Перемещает теги топиков в другой блог ModuleTopic_MapperTopic
MoveTopicsTagsByArrayId() Перемещает теги топиков в другой блог ModuleTopic_MapperTopic
RecalculateFavourite() Пересчитывает счетчик избранных топиков ModuleTopic_MapperTopic
RecalculateVote() Пересчитывает счетчики голосований ModuleTopic_MapperTopic
UpdateTopic() Обновляет топик ModuleTopic_MapperTopic
UpdateTopicContent() Обновляет контент топика ModuleTopic_MapperTopic
UpdateTopicRead() Обновляем дату прочтения топика ModuleTopic_MapperTopic
__construct() Передаем коннект к БД Mapper
addTopicPhoto() Добавить к топику изображение ModuleTopic_MapperTopic
deleteTopicPhoto() Удалить изображение ModuleTopic_MapperTopic
getCountPhotosByTargetTmp() Получить число изображений из фотосета по id топика ModuleTopic_MapperTopic
getCountPhotosByTopicId() Получить число изображений из фотосета по id топика ModuleTopic_MapperTopic
getPhotosByTargetTmp() Получить список изображений из фотосета по временному коду ModuleTopic_MapperTopic
getPhotosByTopicId() Получить список изображений из фотосета по id топика ModuleTopic_MapperTopic
getTopicPhotoById() Получить изображение из фотосета по его id ModuleTopic_MapperTopic
increaseTopicCountComment() Увеличивает у топика число комментов ModuleTopic_MapperTopic
updateTopicPhoto() Обновить данные по изображению ModuleTopic_MapperTopic

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
buildFilter() Строит строку условий для SQL запроса топиков ModuleTopic_MapperTopic

Method Details

AddTopic() method
public int|bool AddTopic(ModuleTopic_EntityTopic $oTopic)
$oTopic ModuleTopic_EntityTopic Объект топика
{return} int|bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#31 (show)
public function AddTopic(ModuleTopic_EntityTopic $oTopic) {
    
$sql "INSERT INTO ".Config::Get('db.table.topic').
        (blog_id,
        user_id,
        topic_type,
        topic_title,            
        topic_tags,
        topic_date_add,
        topic_user_ip,
        topic_publish,
        topic_publish_draft,
        topic_publish_index,
        topic_cut_text,
        topic_forbid_comment,            
        topic_text_hash            
        )
        VALUES(?d,  ?d,    ?,    ?,    ?,  ?, ?, ?d, ?d, ?d, ?, ?, ?)
    "
;
    if (
$iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
                               
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash()))
    {
        
$oTopic->setId($iId);
        
$this->AddTopicContent($oTopic);
        return 
$iId;
    }
    return 
false;
}

Добавляет топик

AddTopicContent() method
public int|bool AddTopicContent(ModuleTopic_EntityTopic $oTopic)
$oTopic ModuleTopic_EntityTopic Объект топика
{return} int|bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#64 (show)
public function AddTopicContent(ModuleTopic_EntityTopic $oTopic) {
    
$sql "INSERT INTO ".Config::Get('db.table.topic_content').
        (topic_id,            
        topic_text,
        topic_text_short,
        topic_text_source,
        topic_extra            
        )
        VALUES(?d,  ?,    ?,    ?, ? )
    "
;
    if (
$iId=$this->oDb->query($sql,$oTopic->getId(),$oTopic->getText(),
                               
$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra()))
    {
        return 
$iId;
    }
    return 
false;
}

Добавляет контент топика

AddTopicQuestionVote() method
public bool AddTopicQuestionVote(ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote)
$oTopicQuestionVote ModuleTopic_EntityTopicQuestionVote Объект голосования в топике-опросе
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#711 (show)
public function AddTopicQuestionVote(ModuleTopic_EntityTopicQuestionVote $oTopicQuestionVote) {
    
$sql "INSERT INTO ".Config::Get('db.table.topic_question_vote').
        (topic_id,
        user_voter_id,
        answer        
        )
        VALUES(?d,  ?d,    ?f)
    "
;
    if (
$this->oDb->query($sql,$oTopicQuestionVote->getTopicId(),$oTopicQuestionVote->getVoterId(),$oTopicQuestionVote->getAnswer())===0)
    {
        return 
true;
    }
    return 
false;
}

Добавляет факт голосования за топик-вопрос

AddTopicRead() method
public bool AddTopicRead(ModuleTopic_EntityTopicRead $oTopicRead)
$oTopicRead ModuleTopic_EntityTopicRead Объект факта чтения топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#648 (show)
public function AddTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
    
$sql "INSERT INTO ".Config::Get('db.table.topic_read').
        SET 
            comment_count_last = ? ,
            comment_id_last = ? ,
            date_read = ? ,
            topic_id = ? ,                            
            user_id = ? 
    "
;
    return 
$this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
}

Устанавливаем дату прочтения топика

AddTopicTag() method
public int AddTopicTag(ModuleTopic_EntityTopicTag $oTopicTag)
$oTopicTag ModuleTopic_EntityTopicTag Объект тега топика
{return} int
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#87 (show)
public function AddTopicTag(ModuleTopic_EntityTopicTag $oTopicTag) {
    
$sql "INSERT INTO ".Config::Get('db.table.topic_tag').
        (topic_id,
        user_id,
        blog_id,
        topic_tag_text        
        )
        VALUES(?d,  ?d,  ?d,    ?)
    "
;
    if (
$iId=$this->oDb->query($sql,$oTopicTag->getTopicId(),$oTopicTag->getUserId(),$oTopicTag->getBlogId(),$oTopicTag->getText()))
    {
        return 
$iId;
    }
    return 
false;
}

Добавление тега к топику

DeleteTopic() method
public bool DeleteTopic(int $sTopicId)
$sTopicId int Объект топика или ID
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#138 (show)
public function DeleteTopic($sTopicId) {
    
$sql "DELETE FROM ".Config::Get('db.table.topic').
        WHERE
            topic_id = ?d                
    "
;
    if (
$this->oDb->query($sql,$sTopicId)) {
        return 
true;
    }
    return 
false;
}

Удаляет топик. Если тип таблиц в БД InnoDB, то удалятся всё связи по топику(комменты,голосования,избранное)

DeleteTopicContentByTopicId() method
public bool DeleteTopicContentByTopicId(int $iTopicId)
$iTopicId int ID топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#108 (show)
public function DeleteTopicContentByTopicId($iTopicId) {
    
$sql "DELETE FROM ".Config::Get('db.table.topic_content')." WHERE topic_id = ?d ";
    if (
$this->oDb->query($sql,$iTopicId)) {
        return 
true;
    }
    return 
false;
}

Удаление контента топика по его номеру

DeleteTopicReadByArrayId() method
public bool DeleteTopicReadByArrayId(array $aTopicId)
$aTopicId array Список ID топиков
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#665 (show)
public function DeleteTopicReadByArrayId($aTopicId) {
    
$sql "
        DELETE FROM "
.Config::Get('db.table.topic_read').
        WHERE
            topic_id IN(?a)                
    "
;
    if (
$this->oDb->query($sql,$aTopicId)) {
        return 
true;
    }
    return 
false;
}

Удаляет записи о чтении записей по списку идентификаторов

DeleteTopicTagsByTopicId() method
public bool DeleteTopicTagsByTopicId(int $sTopicId)
$sTopicId int ID топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#121 (show)
public function DeleteTopicTagsByTopicId($sTopicId) {
    
$sql "DELETE FROM ".Config::Get('db.table.topic_tag').
        WHERE
            topic_id = ?d                
    "
;
    if (
$this->oDb->query($sql,$sTopicId)) {
        return 
true;
    }
    return 
false;
}

Удаляет теги у топика

GetAllTopics() method
public array GetAllTopics(array $aFilter)
$aFilter array Фильтр
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#268 (show)
public function GetAllTopics($aFilter) {
    
$sWhere=$this->buildFilter($aFilter);

    if(!isset(
$aFilter['order'])) {
        
$aFilter['order'] = 't.topic_id desc';
    }
    if (!
is_array($aFilter['order'])) {
        
$aFilter['order'] = array($aFilter['order']);
    }

    
$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                                        
                ORDER by "
.implode(', '$aFilter['order'])." ";
    
$aTopics=array();
    if (
$aRows=$this->oDb->select($sql)) {
        foreach (
$aRows as $aTopic) {
            
$aTopics[]=$aTopic['topic_id'];
        }
    }

    return 
$aTopics;
}

Возвращает все топики по фильтру

GetCountTopics() method
public int GetCountTopics(array $aFilter)
$aFilter array Фильтр
{return} int
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#243 (show)
public function GetCountTopics($aFilter) {
    
$sWhere=$this->buildFilter($aFilter);
    
$sql "SELECT 
                count(t.topic_id) as count                                    
            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;"
;
    if (
$aRow=$this->oDb->selectRow($sql)) {
        return 
$aRow['count'];
    }
    return 
false;
}

Количество топиков по фильтру

GetOpenTopicTags() method
public array GetOpenTopicTags(int $iLimit, int|null $iUserId=NULL)
$iLimit int Количество
$iUserId int|null ID пользователя, чью теги получаем
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#415 (show)
public function GetOpenTopicTags($iLimit,$iUserId=null) {
    
$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
        WHERE
            1 = 1
            { AND tt.user_id = ?d }
            AND
            tt.blog_id = b.blog_id
            AND
            b.blog_type <> 'close'
        GROUP BY 
            tt.topic_tag_text
        ORDER BY 
            count desc        
        LIMIT 0, ?d
            "
;
    
$aReturn=array();
    
$aReturnSort=array();
    if (
$aRows=$this->oDb->select($sql,is_null($iUserId) ? DBSIMPLE_SKIP $iUserId,$iLimit)) {
        foreach (
$aRows as $aRow) {
            
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
        }
        
ksort($aReturn);
        foreach (
$aReturn as $aRow) {
            
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
        }
    }
    return 
$aReturnSort;
}

Получает список тегов из топиков открытых блогов (open,personal)

GetTopicPhotosByArrayId() method
public array GetTopicPhotosByArrayId(array $aArrayId)
$aArrayId array Список ID фото
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#840 (show)
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;
}

Возвращает список фотографий к топику-фотосет по списку id фоток

GetTopicTags() method
public array GetTopicTags(int $iLimit, array $aExcludeTopic=array ( ))
$iLimit int Количество
$aExcludeTopic array Список ID топиков для исключения
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#375 (show)
public function GetTopicTags($iLimit,$aExcludeTopic=array()) {
    
$sql "SELECT 
        tt.topic_tag_text,
        count(tt.topic_tag_text)    as count         
        FROM 
            "
.Config::Get('db.table.topic_tag')." as tt
        WHERE 
            1=1
            {AND tt.topic_id NOT IN(?a) }        
        GROUP BY 
            tt.topic_tag_text
        ORDER BY 
            count desc        
        LIMIT 0, ?d
            "
;
    
$aReturn=array();
    
$aReturnSort=array();
    if (
$aRows=$this->oDb->select(
        
$sql,
        (
is_array($aExcludeTopic)&&count($aExcludeTopic)) ? $aExcludeTopic DBSIMPLE_SKIP,
        
$iLimit
    
)
    ) {
        foreach (
$aRows as $aRow) {
            
$aReturn[mb_strtolower($aRow['topic_tag_text'],'UTF-8')]=$aRow;
        }
        
ksort($aReturn);
        foreach (
$aReturn as $aRow) {
            
$aReturnSort[]=Engine::GetEntity('Topic_TopicTag',$aRow);
        }
    }
    return 
$aReturnSort;
}

Получает список тегов топиков

GetTopicTagsByLike() method
public bool GetTopicTagsByLike(string $sTag, int $iLimit)
$sTag string Тэг
$iLimit int Количество
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#603 (show)
public function GetTopicTagsByLike($sTag,$iLimit) {
    
$sTag=mb_strtolower($sTag,"UTF-8");
    
$sql "SELECT 
            topic_tag_text                     
        FROM 
            "
.Config::Get('db.table.topic_tag')."    
        WHERE
            topic_tag_text LIKE ?            
        GROUP BY 
            topic_tag_text                    
        LIMIT 0, ?d        
            "
;
    
$aReturn=array();
    if (
$aRows=$this->oDb->select($sql,$sTag.'%',$iLimit)) {
        foreach (
$aRows as $aRow) {
            
$aReturn[]=Engine::GetEntity('Topic_TopicTag',$aRow);
        }
    }
    return 
$aReturn;
}

Получает список тегов по первым буквам тега

GetTopicUnique() method
public int|null GetTopicUnique(int $sUserId, string $sHash)
$sUserId int
$sHash string
{return} int|null
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#155 (show)
public function GetTopicUnique($sUserId,$sHash) {
    
$sql "SELECT topic_id FROM ".Config::Get('db.table.topic').
        WHERE                 
            topic_text_hash =?                         
            AND
            user_id = ?d
        LIMIT 0,1
            "
;
    if (
$aRow=$this->oDb->selectRow($sql,$sHash,$sUserId)) {
        return 
$aRow['topic_id'];
    }
    return 
null;
}

Получает топик по уникальному хешу(текст топика)

GetTopics() method
public array GetTopics(array $aFilter, int &$iCount, int $iCurrPage, int $iPerPage)
$aFilter array Фильтр
$iCount int Возвращает общее число элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#205 (show)
public function GetTopics($aFilter,&$iCount,$iCurrPage,$iPerPage) {
    
$sWhere=$this->buildFilter($aFilter);

    if(!isset(
$aFilter['order'])) {
        
$aFilter['order'] = 't.topic_date_add desc';
    }
    if (!
is_array($aFilter['order'])) {
        
$aFilter['order'] = array($aFilter['order']);
    }

    
$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                                        
                ORDER BY "
.
        
implode(', '$aFilter['order'])
        .
"
                LIMIT ?d, ?d"
;
    
$aTopics=array();
    if (
$aRows=$this->oDb->selectPage($iCount,$sql,($iCurrPage-1)*$iPerPage$iPerPage)) {
        foreach (
$aRows as $aTopic) {
            
$aTopics[]=$aTopic['topic_id'];
        }
    }
    return 
$aTopics;
}

Список топиков по фильтру

GetTopicsByArrayId() method
public array GetTopicsByArrayId(array $aArrayId)
$aArrayId array Список ID топиков
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#174 (show)
public function GetTopicsByArrayId($aArrayId) {
    if (!
is_array($aArrayId) or count($aArrayId)==0) {
        return array();
    }

    
$sql "SELECT 
                t.*,
                tc.*                             
            FROM 
                "
.Config::Get('db.table.topic')." as t    
                JOIN  "
.Config::Get('db.table.topic_content')." AS tc ON t.topic_id=tc.topic_id                
            WHERE 
                t.topic_id IN(?a)                                     
            ORDER BY FIELD(t.topic_id,?a) "
;
    
$aTopics=array();
    if (
$aRows=$this->oDb->select($sql,$aArrayId,$aArrayId)) {
        foreach (
$aRows as $aTopic) {
            
$aTopics[]=Engine::GetEntity('Topic',$aTopic);
        }
    }
    return 
$aTopics;
}

Получить список топиков по списку айдишников

GetTopicsByTag() method
public array GetTopicsByTag(string $sTag, array $aExcludeBlog, int &$iCount, int $iCurrPage, int $iPerPage)
$sTag string Тег
$aExcludeBlog array Список ID блогов для исключения
$iCount int Возвращает общее количество элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#308 (show)
public function GetTopicsByTag($sTag,$aExcludeBlog,&$iCount,$iCurrPage,$iPerPage) {
    
$sql "                
                        SELECT         
                            topic_id                                        
                        FROM 
                            "
.Config::Get('db.table.topic_tag')."                                
                        WHERE 
                            topic_tag_text = ?     
                            { AND blog_id NOT IN (?a) }
                        ORDER BY topic_id DESC    
                        LIMIT ?d, ?d "
;

    
$aTopics=array();
    if (
$aRows=$this->oDb->selectPage(
        
$iCount,$sql,$sTag,
        (
is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog DBSIMPLE_SKIP,
        (
$iCurrPage-1)*$iPerPage$iPerPage
    
)
    ) {
        foreach (
$aRows as $aTopic) {
            
$aTopics[]=$aTopic['topic_id'];
        }
    }
    return 
$aTopics;
}

Получает список топиков по тегу

GetTopicsQuestionVoteByArray() method
public array GetTopicsQuestionVoteByArray(array $aArrayId, int $sUserId)
$aArrayId array Список ID топиков
$sUserId int ID пользователя
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#732 (show)
public function GetTopicsQuestionVoteByArray($aArrayId,$sUserId) {
    if (!
is_array($aArrayId) or count($aArrayId)==0) {
        return array();
    }

    
$sql "SELECT 
                v.*                             
            FROM 
                "
.Config::Get('db.table.topic_question_vote')." as v 
            WHERE 
                v.topic_id IN(?a)
                AND    
                v.user_voter_id = ?d                                                      
            "
;
    
$aVotes=array();
    if (
$aRows=$this->oDb->select($sql,$aArrayId,$sUserId)) {
        foreach (
$aRows as $aRow) {
            
$aVotes[]=Engine::GetEntity('Topic_TopicQuestionVote',$aRow);
        }
    }
    return 
$aVotes;
}

Получить список голосований в топике-опросе по списку айдишников

GetTopicsRatingByDate() method
public array GetTopicsRatingByDate(string $sDate, int $iLimit, array $aExcludeBlog=array ( ))
$sDate string Дата
$iLimit int Количество
$aExcludeBlog array Список ID блогов для исключения
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#341 (show)
public function GetTopicsRatingByDate($sDate,$iLimit,$aExcludeBlog=array()) {
    
$sql "SELECT 
                    t.topic_id                                        
                FROM 
                    "
.Config::Get('db.table.topic')." as t
                WHERE                     
                    t.topic_publish = 1
                    AND
                    t.topic_date_add >= ?
                    AND
                    t.topic_rating >= 0
                    { AND t.blog_id NOT IN(?a) }                                                                     
                ORDER by t.topic_rating desc, t.topic_id desc
                LIMIT 0, ?d "
;
    
$aTopics=array();
    if (
$aRows=$this->oDb->select(
        
$sql,$sDate,
        (
is_array($aExcludeBlog)&&count($aExcludeBlog)) ? $aExcludeBlog DBSIMPLE_SKIP,
        
$iLimit
    
)
    ) {
        foreach (
$aRows as $aTopic) {
            
$aTopics[]=$aTopic['topic_id'];
        }
    }
    return 
$aTopics;
}

Получает топики по рейтингу и дате

GetTopicsReadByArray() method
public array GetTopicsReadByArray(array $aArrayId, int $sUserId)
$aArrayId array Список ID топиков
$sUserId int ID пользователя
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#683 (show)
public function GetTopicsReadByArray($aArrayId,$sUserId) {
    if (!
is_array($aArrayId) or count($aArrayId)==0) {
        return array();
    }

    
$sql "SELECT 
                t.*                             
            FROM 
                "
.Config::Get('db.table.topic_read')." as t 
            WHERE 
                t.topic_id IN(?a)
                AND
                t.user_id = ?d 
            "
;
    
$aReads=array();
    if (
$aRows=$this->oDb->select($sql,$aArrayId,$sUserId)) {
        foreach (
$aRows as $aRow) {
            
$aReads[]=Engine::GetEntity('Topic_TopicRead',$aRow);
        }
    }
    return 
$aReads;
}

Получить список просмотром/чтения топиков по списку айдишников

MoveTopics() method
public bool MoveTopics(int $sBlogId, int $sBlogIdNew)
$sBlogId int ID старого блога
$sBlogIdNew int ID нового блога
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#782 (show)
public function MoveTopics($sBlogId,$sBlogIdNew) {
    
$sql "UPDATE ".Config::Get('db.table.topic')."
        SET 
            blog_id= ?d
        WHERE
            blog_id = ?d
    "
;
    if (
$this->oDb->query($sql,$sBlogIdNew,$sBlogId)) {
        return 
true;
    }
    return 
false;
}

Перемещает топики в другой блог

MoveTopicsByArrayId() method
public bool MoveTopicsByArrayId(array $aTopics, int $sBlogId)
$aTopics array Список ID топиков
$sBlogId int ID блога
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#761 (show)
public function MoveTopicsByArrayId($aTopics,$sBlogId) {
    if(!
is_array($aTopics)) $aTopics = array($aTopics);

    
$sql "UPDATE ".Config::Get('db.table.topic')."
        SET 
            blog_id= ?d
        WHERE
            topic_id IN(?a)
    "
;
    if (
$this->oDb->query($sql,$sBlogId,$aTopics)) {
        return 
true;
    }
    return 
false;
}

Перемещает топики в другой блог

MoveTopicsTags() method
public bool MoveTopicsTags(int $sBlogId, int $sBlogIdNew)
$sBlogId int ID старого блога
$sBlogIdNew int ID нового блога
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#801 (show)
public function MoveTopicsTags($sBlogId,$sBlogIdNew) {
    
$sql "UPDATE ".Config::Get('db.table.topic_tag')."
        SET 
            blog_id= ?d
        WHERE
            blog_id = ?d
    "
;
    if (
$this->oDb->query($sql,$sBlogIdNew,$sBlogId)) {
        return 
true;
    }
    return 
false;
}

Перемещает теги топиков в другой блог

MoveTopicsTagsByArrayId() method
public bool MoveTopicsTagsByArrayId(array $aTopics, int $sBlogId)
$aTopics array Список ID топиков
$sBlogId int ID блога
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#820 (show)
public function MoveTopicsTagsByArrayId($aTopics,$sBlogId) {
    if(!
is_array($aTopics)) $aTopics = array($aTopics);

    
$sql "UPDATE ".Config::Get('db.table.topic_tag')."
        SET 
            blog_id= ?d
        WHERE
            topic_id IN(?a)
    "
;
    if (
$this->oDb->query($sql,$sBlogId,$aTopics)) {
        return 
true;
    }
    return 
false;
}

Перемещает теги топиков в другой блог

RecalculateFavourite() method
public bool RecalculateFavourite()
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#976 (show)
public function RecalculateFavourite() {
    
$sql "
            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'
            )
        "
;
    if (
$this->oDb->query($sql)) {
        return 
true;
    }
    return 
false;
}

Пересчитывает счетчик избранных топиков

RecalculateVote() method
public bool RecalculateVote()
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#1000 (show)
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'
            )
        "
;
    if (
$this->oDb->query($sql)) {
        return 
true;
    }
    return 
false;
}

Пересчитывает счетчики голосований

UpdateTopic() method
public bool UpdateTopic(ModuleTopic_EntityTopic $oTopic)
$oTopic ModuleTopic_EntityTopic Объект топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#473 (show)
public function UpdateTopic(ModuleTopic_EntityTopic $oTopic) {
    
$sql "UPDATE ".Config::Get('db.table.topic').
        SET 
            blog_id= ?d,
            topic_title= ?,                
            topic_tags= ?,
            topic_date_add = ?,
            topic_date_edit = ?,
            topic_user_ip= ?,
            topic_publish= ?d ,
            topic_publish_draft= ?d ,
            topic_publish_index= ?d,
            topic_rating= ?f,
            topic_count_vote= ?d,
            topic_count_vote_up= ?d,
            topic_count_vote_down= ?d,
            topic_count_vote_abstain= ?d,
            topic_count_read= ?d,
            topic_count_comment= ?d, 
            topic_count_favourite= ?d,
            topic_cut_text = ? ,
            topic_forbid_comment = ? ,
            topic_text_hash = ? 
        WHERE
            topic_id = ?d
    "
;
    if (
$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())) {
        
$this->UpdateTopicContent($oTopic);
        return 
true;
    }
    return 
false;
}

Обновляет топик

UpdateTopicContent() method
public bool UpdateTopicContent(ModuleTopic_EntityTopic $oTopic)
$oTopic ModuleTopic_EntityTopic Объект топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#511 (show)
public function UpdateTopicContent(ModuleTopic_EntityTopic $oTopic) {
    
$sql "UPDATE ".Config::Get('db.table.topic_content').
        SET                 
            topic_text= ?,
            topic_text_short= ?,
            topic_text_source= ?,
            topic_extra= ?
        WHERE
            topic_id = ?d
    "
;
    if (
$this->oDb->query($sql,$oTopic->getText(),$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra(),$oTopic->getId())) {
        return 
true;
    }
    return 
false;
}

Обновляет контент топика

UpdateTopicRead() method
public int UpdateTopicRead(ModuleTopic_EntityTopicRead $oTopicRead)
$oTopicRead ModuleTopic_EntityTopicRead Объект факта чтения топика
{return} int
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#629 (show)
public function UpdateTopicRead(ModuleTopic_EntityTopicRead $oTopicRead) {
    
$sql "UPDATE ".Config::Get('db.table.topic_read').
        SET 
            comment_count_last = ? ,
            comment_id_last = ? ,
            date_read = ? 
        WHERE
            topic_id = ? 
            AND                
            user_id = ? 
    "
;
    return 
$this->oDb->query($sql,$oTopicRead->getCommentCountLast(),$oTopicRead->getCommentIdLast(),$oTopicRead->getDateRead(),$oTopicRead->getTopicId(),$oTopicRead->getUserId());
}

Обновляем дату прочтения топика

addTopicPhoto() method
public bool addTopicPhoto(ModuleTopic_EntityTopicPhoto $oPhoto)
$oPhoto ModuleTopic_EntityTopicPhoto Объект фото к топику-фотосету
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#939 (show)
public function addTopicPhoto($oPhoto) {
    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
                    path = ?, description = ?, ?# = ?'
;
    return 
$this->oDb->query($sql$oPhoto->getPath(), $oPhoto->getDescription(), $sTargetType$iTargetId);
}

Добавить к топику изображение

buildFilter() method
protected string buildFilter(array $aFilter)
$aFilter array Фильтр
{return} string
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#532 (show)
protected function buildFilter($aFilter) {
    
$sWhere='';
    if (isset(
$aFilter['topic_date_more'])) {
        
$sWhere.=" AND t.topic_date_add >  '".mysql_real_escape_string($aFilter['topic_date_more'])."'";
    }
    if (isset(
$aFilter['topic_publish'])) {
        
$sWhere.=" AND t.topic_publish =  ".(int)$aFilter['topic_publish'];
    }
    if (isset(
$aFilter['topic_rating']) and is_array($aFilter['topic_rating'])) {
        
$sPublishIndex='';
        if (isset(
$aFilter['topic_rating']['publish_index']) and $aFilter['topic_rating']['publish_index']==1) {
            
$sPublishIndex=" or topic_publish_index=1 ";
        }
        if (
$aFilter['topic_rating']['type']=='top') {
            
$sWhere.=" AND ( t.topic_rating >= ".(float)$aFilter['topic_rating']['value'].{$sPublishIndex} ) ";
        } else {
            
$sWhere.=" AND ( t.topic_rating < ".(float)$aFilter['topic_rating']['value']."  ) ";
        }
    }
    if (isset(
$aFilter['topic_new'])) {
        
$sWhere.=" AND t.topic_date_add >=  '".$aFilter['topic_new']."'";
    }
    if (isset(
$aFilter['user_id'])) {
        
$sWhere.=is_array($aFilter['user_id'])
            ? 
" AND t.user_id IN(".implode(', ',$aFilter['user_id']).")"
            
" AND t.user_id =  ".(int)$aFilter['user_id'];
    }
    if (isset(
$aFilter['blog_id'])) {
        if(!
is_array($aFilter['blog_id'])) {
            
$aFilter['blog_id']=array($aFilter['blog_id']);
        }
        
$sWhere.=" AND t.blog_id IN ('".join("','",$aFilter['blog_id'])."')";
    }
    if (isset(
$aFilter['blog_type']) and is_array($aFilter['blog_type'])) {
        
$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();
            }

            
$aBlogTypes[] = (count($aBlogId)==0)
                ? 
"(b.blog_type='".$sType."')"
                
"(b.blog_type='".$sType."' AND t.blog_id IN ('".join("','",$aBlogId)."'))";
        }
        
$sWhere.=" AND (".join(" OR ",(array)$aBlogTypes).")";
    }
    if (isset(
$aFilter['topic_type'])) {
        if(!
is_array($aFilter['topic_type'])) {
            
$aFilter['topic_type']=array($aFilter['topic_type']);
        }
        
$sWhere.=" AND t.topic_type IN ('".join("','",array_map('mysql_real_escape_string',$aFilter['topic_type']))."')";
    }
    return 
$sWhere;
}

Строит строку условий для SQL запроса топиков

deleteTopicPhoto() method
public void deleteTopicPhoto(int $iPhotoId)
$iPhotoId int ID фото
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#966 (show)
public function deleteTopicPhoto($iPhotoId) {
    
$sql 'DELETE FROM 'Config::Get('db.table.topic_photo') . ' WHERE
                    id= ?d'
;
    
$this->oDb->query($sql$iPhotoId);
}

Удалить изображение

getCountPhotosByTargetTmp() method
public int getCountPhotosByTargetTmp(string $sTargetTmp)
$sTargetTmp string Временный ключ
{return} int
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#928 (show)
public function getCountPhotosByTargetTmp($sTargetTmp) {
    
$sql 'SELECT count(id) FROM ' Config::Get('db.table.topic_photo') . ' WHERE target_tmp = ?';
    
$aPhotosCount $this->oDb->selectCol($sql$sTargetTmp);
    return 
$aPhotosCount[0];
}

Получить число изображений из фотосета по id топика

getCountPhotosByTopicId() method
public int getCountPhotosByTopicId(int $iTopicId)
$iTopicId int ID топика
{return} int
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#917 (show)
public function getCountPhotosByTopicId($iTopicId) {
    
$sql 'SELECT count(id) FROM ' Config::Get('db.table.topic_photo') . ' WHERE topic_id = ?d';
    
$aPhotosCount $this->oDb->selectCol($sql$iTopicId);
    return 
$aPhotosCount[0];
}

Получить число изображений из фотосета по id топика

getPhotosByTargetTmp() method
public array getPhotosByTargetTmp(string $sTargetTmp)
$sTargetTmp string Временный ключ
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#885 (show)
public function getPhotosByTargetTmp($sTargetTmp) {
    
$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;
}

Получить список изображений из фотосета по временному коду

getPhotosByTopicId() method
public array getPhotosByTopicId(int $iTopicId, int|null $iFromId, int|null $iCount)
$iTopicId int ID топика
$iFromId int|null ID с которого начинать выборку
$iCount int|null Количество
{return} array
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#868 (show)
public function getPhotosByTopicId($iTopicId$iFromId$iCount) {
    
$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;
}

Получить список изображений из фотосета по id топика

getTopicPhotoById() method
public ModuleTopic_EntityTopicPhoto|null getTopicPhotoById(int $iPhotoId)
$iPhotoId int ID фото
{return} ModuleTopic_EntityTopicPhoto|null
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#902 (show)
public function getTopicPhotoById($iPhotoId) {
    
$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;
    }
}

Получить изображение из фотосета по его id

increaseTopicCountComment() method
public bool increaseTopicCountComment(int $sTopicId)
$sTopicId int ID топика
{return} bool
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#455 (show)
public function increaseTopicCountComment($sTopicId) {
    
$sql "UPDATE ".Config::Get('db.table.topic').
        SET 
            topic_count_comment=topic_count_comment+1
        WHERE
            topic_id = ?
    "
;
    if (
$this->oDb->query($sql,$sTopicId)) {
        return 
true;
    }
    return 
false;
}

Увеличивает у топика число комментов

updateTopicPhoto() method
public void updateTopicPhoto(ModuleTopic_EntityTopicPhoto $oPhoto)
$oPhoto ModuleTopic_EntityTopicPhoto Объект фото
Source Code: /classes/modules/topic/mapper/Topic.mapper.class.php#952 (show)
public function updateTopicPhoto($oPhoto) {
    if (!
$oPhoto->getTopicId() && !$oPhoto->getTargetTmp()) return false;
    if (
$oPhoto->getTopicId()) {
        
$oPhoto->setTargetTmp null;
    }
    
$sql 'UPDATE 'Config::Get('db.table.topic_photo') . ' SET
                    path = ?, description = ?, topic_id = ?d, target_tmp=? WHERE id = ?d'
;
    
$this->oDb->query($sql$oPhoto->getPath(), $oPhoto->getDescription(), $oPhoto->getTopicId(), $oPhoto->getTargetTmp(), $oPhoto->getId());
}

Обновить данные по изображению