ModuleFavourite_MapperFavourite

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

Protected Properties

Hide inherited properties

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

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddFavourite() Добавляет таргет в избранное ModuleFavourite_MapperFavourite
AddTag() Добавляет тег ModuleFavourite_MapperFavourite
DeleteFavourite() Удаляет таргет из избранного ModuleFavourite_MapperFavourite
DeleteFavouriteByTargetId() Удаляет избранное по списку идентификаторов таргетов ModuleFavourite_MapperFavourite
DeleteTagByTarget() Удаление тегов по таргету ModuleFavourite_MapperFavourite
DeleteTags() Удаляет теги ModuleFavourite_MapperFavourite
GetCountFavouriteOpenCommentsByUserId() Возвращает число комментариев к открытым блогам в избранном по ID пользователя ModuleFavourite_MapperFavourite
GetCountFavouriteOpenTopicsByUserId() Возвращает число топиков в открытых блогах из избранного по ID пользователя ModuleFavourite_MapperFavourite
GetCountFavouritesByUserId() Возвращает число таргетов определенного типа в избранном по ID пользователя ModuleFavourite_MapperFavourite
GetFavouriteOpenCommentsByUserId() Получает список комментариев к записям открытых блогов ModuleFavourite_MapperFavourite
GetFavouriteOpenTopicsByUserId() Получает список топиков из открытых блогов ModuleFavourite_MapperFavourite
GetFavouritesByArray() Получить список избранного по списку айдишников ModuleFavourite_MapperFavourite
GetFavouritesByUserId() Получает список таргетов из избранного ModuleFavourite_MapperFavourite
GetGroupTags() Возвращает наиболее часто используемые теги ModuleFavourite_MapperFavourite
GetTags() Возвращает список тегов по фильтру ModuleFavourite_MapperFavourite
SetFavouriteTargetPublish() Меняет параметры публикации у таргета ModuleFavourite_MapperFavourite
UpdateFavourite() Обновляет запись об избранном ModuleFavourite_MapperFavourite
__construct() Передаем коннект к БД Mapper

Method Details

AddFavourite() method
public bool AddFavourite(ModuleFavourite_EntityFavourite $oFavourite)
$oFavourite ModuleFavourite_EntityFavourite Объект избранного
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#31 (show)
public function AddFavourite(ModuleFavourite_EntityFavourite $oFavourite) {
    
$sql "
        INSERT INTO "
.Config::Get('db.table.favourite').
            ( target_id, target_type, user_id, tags )
        VALUES
            (?d, ?, ?d, ?)
    "
;
    if (
$this->oDb->query(
        
$sql,
        
$oFavourite->getTargetId(),
        
$oFavourite->getTargetType(),
        
$oFavourite->getUserId(),
        
$oFavourite->getTags()
    )===
0) {
        return 
true;
    }
    return 
false;
}

Добавляет таргет в избранное

AddTag() method
public bool AddTag(ModuleFavourite_EntityTag $oTag)
$oTag ModuleFavourite_EntityTag Объект тега
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#157 (show)
public function AddTag($oTag) {
    
$sql "
        INSERT INTO "
.Config::Get('db.table.favourite_tag')."
            SET target_id = ?d, target_type = ?, user_id = ?d, is_user = ?d, text =?
    "
;
    if (
$this->oDb->query(
        
$sql,
        
$oTag->getTargetId(),
        
$oTag->getTargetType(),
        
$oTag->getUserId(),
        
$oTag->getIsUser(),
        
$oTag->getText()
    )===
0) {
        return 
true;
    }
    return 
false;
}

Добавляет тег

DeleteFavourite() method
public bool DeleteFavourite(ModuleFavourite_EntityFavourite $oFavourite)
$oFavourite ModuleFavourite_EntityFavourite Объект избранного
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#105 (show)
public function DeleteFavourite(ModuleFavourite_EntityFavourite $oFavourite) {
    
$sql "
        DELETE FROM "
.Config::Get('db.table.favourite').
        WHERE
            user_id = ?d
        AND
            target_id = ?d
        AND 
            target_type = ?                
    "
;
    if (
$this->oDb->query(
        
$sql,
        
$oFavourite->getUserId(),
        
$oFavourite->getTargetId(),
        
$oFavourite->getTargetType()
    )) {
        return 
true;
    }
    return 
false;
}

Удаляет таргет из избранного

DeleteFavouriteByTargetId() method
public bool DeleteFavouriteByTargetId(array|int $aTargetId, string $sTargetType)
$aTargetId array|int Список ID владельцев
$sTargetType string Тип владельца
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#424 (show)
public function DeleteFavouriteByTargetId($aTargetId,$sTargetType) {
    
$sql "
        DELETE FROM "
.Config::Get('db.table.favourite').
        WHERE 
            target_id IN(?a) 
            AND 
            target_type = ? "
;
    if (
$this->oDb->query($sql,$aTargetId,$sTargetType)) {
        return 
true;
    }
    return 
false;
}

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

DeleteTagByTarget() method
public bool DeleteTagByTarget(array $aTargetId, string $sTargetType)
$aTargetId array Список ID владельцев
$sTargetType string Тип владельца
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#443 (show)
public function DeleteTagByTarget($aTargetId,$sTargetType) {
    
$sql "
        DELETE FROM "
.Config::Get('db.table.favourite_tag')."
        WHERE
            target_type = ?
            AND
            target_id IN(?a)
            "
;
    if (
$this->oDb->query($sql,$sTargetType,$aTargetId)) {
        return 
true;
    }
    return 
false;
}

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

DeleteTags() method
public bool DeleteTags(ModuleFavourite_EntityFavourite $oFavourite)
$oFavourite ModuleFavourite_EntityFavourite Объект избранного
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#131 (show)
public function DeleteTags($oFavourite) {
    
$sql "
        DELETE FROM "
.Config::Get('db.table.favourite_tag')."
        WHERE
            user_id = ?d
            AND
            target_type = ?
            AND
            target_id = ?d
    "
;
    if (
$this->oDb->query(
        
$sql,
        
$oFavourite->getUserId(),
        
$oFavourite->getTargetType(),
        
$oFavourite->getTargetId()
    )) {
        return 
true;
    }
    return 
false;
}

Удаляет теги

GetCountFavouriteOpenCommentsByUserId() method
public array GetCountFavouriteOpenCommentsByUserId(int $sUserId)
$sUserId int ID пользователя
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#317 (show)
public function GetCountFavouriteOpenCommentsByUserId($sUserId) {
    
$sql "SELECT         
                count(f.target_id) as count                                    
            FROM 
                "
.Config::Get('db.table.favourite')." AS f,
                "
.Config::Get('db.table.comment')." AS c,
                "
.Config::Get('db.table.topic')." AS t,
                "
.Config::Get('db.table.blog')." AS b    
            WHERE 
                    f.user_id = ?d
                AND
                    f.target_publish = 1
                AND
                    f.target_type = 'comment'
                AND
                    f.target_id = c.comment_id
                AND 
                    c.target_id = t.topic_id
                AND 
                    t.blog_id = b.blog_id
                AND 
                    b.blog_type IN ('open', 'personal')        
                ;"
;
    return ( 
$aRow=$this->oDb->selectRow($sql,$sUserId) )
        ? 
$aRow['count']
        : 
false;
}

Возвращает число комментариев к открытым блогам в избранном по ID пользователя

GetCountFavouriteOpenTopicsByUserId() method
public array GetCountFavouriteOpenTopicsByUserId(string $sUserId)
$sUserId string ID пользователя
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#393 (show)
public function GetCountFavouriteOpenTopicsByUserId($sUserId) {
    
$sql "SELECT         
                count(f.target_id) as count                                    
            FROM 
                "
.Config::Get('db.table.favourite')." AS f,
                "
.Config::Get('db.table.topic')." AS t,
                "
.Config::Get('db.table.blog')." AS b    
            WHERE 
                    f.user_id = ?d
                AND
                    f.target_publish = 1
                AND
                    f.target_type = 'topic'
                AND
                    f.target_id = t.topic_id
                AND 
                    t.blog_id = b.blog_id
                AND 
                    b.blog_type IN ('open', 'personal')        
                ;"
;
    return ( 
$aRow=$this->oDb->selectRow($sql,$sUserId) )
        ? 
$aRow['count']
        : 
false;
}

Возвращает число топиков в открытых блогах из избранного по ID пользователя

GetCountFavouritesByUserId() method
public array GetCountFavouritesByUserId(int $sUserId, string $sTargetType, array $aExcludeTarget)
$sUserId int ID пользователя
$sTargetType string Тип владельца
$aExcludeTarget array Список ID владельцев для исклчения
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#243 (show)
public function GetCountFavouritesByUserId($sUserId,$sTargetType,$aExcludeTarget) {
    
$sql "SELECT         
                count(target_id) as count                                    
            FROM 
                "
.Config::Get('db.table.favourite')."                                
            WHERE 
                    user_id = ?
                AND
                    target_publish = 1
                AND
                    target_type = ?
                { AND target_id NOT IN (?a) }        
                ;"
;
    return ( 
$aRow=$this->oDb->selectRow(
        
$sql,$sUserId,
        
$sTargetType,
        (
count($aExcludeTarget) ? $aExcludeTarget DBSIMPLE_SKIP)
    )
    )
        ? 
$aRow['count']
        : 
false;
}

Возвращает число таргетов определенного типа в избранном по ID пользователя

GetFavouriteOpenCommentsByUserId() method
public array GetFavouriteOpenCommentsByUserId(int $sUserId, int &$iCount, int $iCurrPage, int $iPerPage)
$sUserId int ID пользователя
$iCount int Возвращает количество элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#275 (show)
public function GetFavouriteOpenCommentsByUserId($sUserId,&$iCount,$iCurrPage,$iPerPage) {
    
$sql "
        SELECT f.target_id                                        
        FROM 
            "
.Config::Get('db.table.favourite')." AS f,
            "
.Config::Get('db.table.comment')." AS c,
            "
.Config::Get('db.table.topic')." AS t,
            "
.Config::Get('db.table.blog')." AS b    
        WHERE 
                f.user_id = ?d
            AND
                f.target_publish = 1
            AND
                f.target_type = 'comment'
            AND
                f.target_id = c.comment_id
            AND 
                c.target_id = t.topic_id
            AND 
                t.blog_id = b.blog_id
            AND 
                b.blog_type IN ('open', 'personal')    
        ORDER BY target_id DESC    
        LIMIT ?d, ?d "
;

    
$aFavourites=array();
    if (
$aRows=$this->oDb->selectPage(
        
$iCount$sql$sUserId,
        (
$iCurrPage-1)*$iPerPage$iPerPage
    
)) {
        foreach (
$aRows as $aFavourite) {
            
$aFavourites[]=$aFavourite['target_id'];
        }
    }
    return 
$aFavourites;
}

Получает список комментариев к записям открытых блогов из избранного указанного пользователя

GetFavouriteOpenTopicsByUserId() method
public array GetFavouriteOpenTopicsByUserId(int $sUserId, int &$iCount, int $iCurrPage, int $iPerPage)
$sUserId int ID пользователя
$iCount int Возвращает количество элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#354 (show)
public function GetFavouriteOpenTopicsByUserId($sUserId,&$iCount,$iCurrPage,$iPerPage) {
    
$sql "
        SELECT f.target_id                                        
        FROM 
            "
.Config::Get('db.table.favourite')." AS f,
            "
.Config::Get('db.table.topic')." AS t,
            "
.Config::Get('db.table.blog')." AS b    
        WHERE 
                f.user_id = ?d
            AND
                f.target_publish = 1
            AND
                f.target_type = 'topic'
            AND
                f.target_id = t.topic_id
            AND 
                t.blog_id = b.blog_id
            AND 
                b.blog_type IN ('open', 'personal')    
        ORDER BY target_id DESC    
        LIMIT ?d, ?d "
;

    
$aFavourites=array();
    if (
$aRows=$this->oDb->selectPage(
        
$iCount$sql$sUserId,
        (
$iCurrPage-1)*$iPerPage$iPerPage
    
)) {
        foreach (
$aRows as $aFavourite) {
            
$aFavourites[]=$aFavourite['target_id'];
        }
    }
    return 
$aFavourites;
}

Получает список топиков из открытых блогов из избранного указанного пользователя

GetFavouritesByArray() method
public array GetFavouritesByArray(array $aArrayId, string $sTargetType, int $sUserId)
$aArrayId array Список ID владельцев
$sTargetType string Тип владельца
$sUserId int ID пользователя
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#79 (show)
public function GetFavouritesByArray($aArrayId,$sTargetType,$sUserId) {
    if (!
is_array($aArrayId) or count($aArrayId)==0) {
        return array();
    }
    
$sql "SELECT *                             
            FROM "
.Config::Get('db.table.favourite')."
            WHERE             
                user_id = ?d
                AND        
                target_id IN(?a)     
                AND
                target_type = ? "
;
    
$aFavourites=array();
    if (
$aRows=$this->oDb->select($sql,$sUserId,$aArrayId,$sTargetType)) {
        foreach (
$aRows as $aRow) {
            
$aFavourites[]=Engine::GetEntity('Favourite',$aRow);
        }
    }
    return 
$aFavourites;
}

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

GetFavouritesByUserId() method
public array GetFavouritesByUserId(int $sUserId, string $sTargetType, int &$iCount, int $iCurrPage, int $iPerPage, array $aExcludeTarget=array ( ))
$sUserId int ID пользователя
$sTargetType string Тип владельца
$iCount int Возвращает количество элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
$aExcludeTarget array Список ID владельцев для исклчения
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#205 (show)
public function GetFavouritesByUserId($sUserId,$sTargetType,&$iCount,$iCurrPage,$iPerPage,$aExcludeTarget=array()) {
    
$sql "            
        SELECT target_id                                        
        FROM "
.Config::Get('db.table.favourite')."                                
        WHERE 
                user_id = ?
            AND
                target_publish = 1
            AND
                target_type = ? 
            { AND target_id NOT IN (?a) }        
        ORDER BY target_id DESC    
        LIMIT ?d, ?d "
;

    
$aFavourites=array();
    if (
$aRows=$this->oDb->selectPage(
        
$iCount,
        
$sql,
        
$sUserId,
        
$sTargetType,
        (
count($aExcludeTarget) ? $aExcludeTarget DBSIMPLE_SKIP),
        (
$iCurrPage-1)*$iPerPage,
        
$iPerPage
    
)) {
        foreach (
$aRows as $aFavourite) {
            
$aFavourites[]=$aFavourite['target_id'];
        }
    }
    return 
$aFavourites;
}

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

GetGroupTags() method
public array GetGroupTags(int $iUserId, string $sTargetType, bool $bIsUser, int $iLimit)
$iUserId int ID пользователя
$sTargetType string Тип владельца
$bIsUser bool Возвращает все теги ли только пользовательские
$iLimit int Количество элементов
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#465 (show)
public function GetGroupTags($iUserId,$sTargetType,$bIsUser,$iLimit) {
    
$sql "SELECT
        text,
        count(text)    as count
        FROM
            "
.Config::Get('db.table.favourite_tag')."
        WHERE
            1=1
            {AND user_id = ?d }
            {AND target_type = ? }
            {AND is_user = ?d }
        GROUP BY
            text
        ORDER BY
            count desc
        LIMIT 0, ?d
            "
;
    
$aReturn=array();
    
$aReturnSort=array();
    if (
$aRows=$this->oDb->select($sql,$iUserId,$sTargetType,is_null($bIsUser) ? DBSIMPLE_SKIP $bIsUser,$iLimit)) {
        foreach (
$aRows as $aRow) {
            
$aReturn[mb_strtolower($aRow['text'],'UTF-8')]=$aRow;
        }
        
ksort($aReturn);
        foreach (
$aReturn as $aRow) {
            
$aReturnSort[]=Engine::GetEntity('ModuleFavourite_EntityTag',$aRow);
        }
    }
    return 
$aReturnSort;
}

Возвращает наиболее часто используемые теги

GetTags() method
public array GetTags(array $aFilter, array $aOrder, int &$iCount, int $iCurrPage, int $iPerPage)
$aFilter array Фильтр
$aOrder array Сортировка
$iCount int Возвращает количество элементов
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#505 (show)
public function GetTags($aFilter,$aOrder,&$iCount,$iCurrPage,$iPerPage) {
    
$aOrderAllow=array('target_id','user_id','is_user');
    
$sOrder='';
    foreach (
$aOrder as $key=>$value) {
        if (!
in_array($key,$aOrderAllow)) {
            unset(
$aOrder[$key]);
        } elseif (
in_array($value,array('asc','desc'))) {
            
$sOrder.={$key} {$value},";
        }
    }
    
$sOrder=trim($sOrder,',');
    if (
$sOrder=='') {
        
$sOrder=' target_id desc ';
    }

    
$sql "SELECT
                *
            FROM
                "
.Config::Get('db.table.favourite_tag')."
            WHERE
                1 = 1
                { AND user_id = ?d }
                { AND target_type = ? }
                { AND target_id = ?d }
                { AND is_user = ?d }
                { AND text = ? }
            ORDER by 
{$sOrder}
            LIMIT ?d, ?d ;
                "
;
    
$aResult=array();
    if (
$aRows=$this->oDb->selectPage($iCount,$sql,
                                      isset(
$aFilter['user_id']) ? $aFilter['user_id'] : DBSIMPLE_SKIP,
                                      isset(
$aFilter['target_type']) ? $aFilter['target_type'] : DBSIMPLE_SKIP,
                                      isset(
$aFilter['target_id']) ? $aFilter['target_id'] : DBSIMPLE_SKIP,
                                      isset(
$aFilter['is_user']) ? $aFilter['is_user'] : DBSIMPLE_SKIP,
                                      isset(
$aFilter['text']) ? $aFilter['text'] : DBSIMPLE_SKIP,
                                      (
$iCurrPage-1)*$iPerPage$iPerPage
    
)) {
        foreach (
$aRows as $aRow) {
            
$aResult[]=Engine::GetEntity('ModuleFavourite_EntityTag',$aRow);
        }
    }
    return 
$aResult;
}

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

SetFavouriteTargetPublish() method
public bool SetFavouriteTargetPublish(array|int $aTargetId, string $sTargetType, int $iPublish)
$aTargetId array|int Список ID владельцев
$sTargetType string Тип владельца
$iPublish int Флаг публикации
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#182 (show)
public function SetFavouriteTargetPublish($aTargetId,$sTargetType,$iPublish) {
    
$sql "
        UPDATE "
.Config::Get('db.table.favourite').
        SET 
            target_publish = ?d
        WHERE                
            target_id IN(?a)
        AND
            target_type = ?                
    "
;
    return 
$this->oDb->query($sql,$iPublish,$aTargetId,$sTargetType);
}

Меняет параметры публикации у таргета

UpdateFavourite() method
public bool UpdateFavourite(ModuleFavourite_EntityFavourite $oFavourite)
$oFavourite ModuleFavourite_EntityFavourite Объект избранного
{return} bool
Source Code: /classes/modules/favourite/mapper/Favourite.mapper.class.php#55 (show)
public function UpdateFavourite(ModuleFavourite_EntityFavourite $oFavourite) {
    
$sql "
        UPDATE "
.Config::Get('db.table.favourite')."
            SET tags = ? WHERE user_id = ?d and target_id = ?d and target_type = ?
    "
;
    if (
$this->oDb->query(
        
$sql,
        
$oFavourite->getTags(),
        
$oFavourite->getUserId(),
        
$oFavourite->getTargetId(),
        
$oFavourite->getTargetType()
    )!==
false) {
        return 
true;
    }
    return 
false;
}

Обновляет запись об избранном