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
Property | Type | Description | Defined By |
---|---|---|---|
oDb | DbSimple_Generic_Database | Объект подключения к базе данных | Mapper |
Public Methods
Method | Description | Defined 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
public bool AddFavourite(ModuleFavourite_EntityFavourite $oFavourite)
| ||
$oFavourite | ModuleFavourite_EntityFavourite | Объект избранного |
{return} | bool |
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;
}
Добавляет таргет в избранное
public bool AddTag(ModuleFavourite_EntityTag $oTag)
| ||
$oTag | ModuleFavourite_EntityTag | Объект тега |
{return} | bool |
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;
}
Добавляет тег
public bool DeleteFavourite(ModuleFavourite_EntityFavourite $oFavourite)
| ||
$oFavourite | ModuleFavourite_EntityFavourite | Объект избранного |
{return} | bool |
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;
}
Удаляет таргет из избранного
public bool DeleteFavouriteByTargetId(array|int $aTargetId, string $sTargetType)
| ||
$aTargetId | array|int | Список ID владельцев |
$sTargetType | string | Тип владельца |
{return} | bool |
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;
}
Удаляет избранное по списку идентификаторов таргетов
public bool DeleteTagByTarget(array $aTargetId, string $sTargetType)
| ||
$aTargetId | array | Список ID владельцев |
$sTargetType | string | Тип владельца |
{return} | bool |
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;
}
Удаление тегов по таргету
public bool DeleteTags(ModuleFavourite_EntityFavourite $oFavourite)
| ||
$oFavourite | ModuleFavourite_EntityFavourite | Объект избранного |
{return} | bool |
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;
}
Удаляет теги
public array GetCountFavouriteOpenCommentsByUserId(int $sUserId)
| ||
$sUserId | int | ID пользователя |
{return} | array |
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 пользователя
public array GetCountFavouriteOpenTopicsByUserId(string $sUserId)
| ||
$sUserId | string | ID пользователя |
{return} | array |
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 пользователя
public array GetCountFavouritesByUserId(int $sUserId, string $sTargetType, array $aExcludeTarget)
| ||
$sUserId | int | ID пользователя |
$sTargetType | string | Тип владельца |
$aExcludeTarget | array | Список ID владельцев для исклчения |
{return} | array |
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 пользователя
public array GetFavouriteOpenCommentsByUserId(int $sUserId, int &$iCount, int $iCurrPage, int $iPerPage)
| ||
$sUserId | int | ID пользователя |
$iCount | int | Возвращает количество элементов |
$iCurrPage | int | Номер страницы |
$iPerPage | int | Количество элементов на страницу |
{return} | array |
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;
}
Получает список комментариев к записям открытых блогов из избранного указанного пользователя
public array GetFavouriteOpenTopicsByUserId(int $sUserId, int &$iCount, int $iCurrPage, int $iPerPage)
| ||
$sUserId | int | ID пользователя |
$iCount | int | Возвращает количество элементов |
$iCurrPage | int | Номер страницы |
$iPerPage | int | Количество элементов на страницу |
{return} | array |
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;
}
Получает список топиков из открытых блогов из избранного указанного пользователя
public array GetFavouritesByArray(array $aArrayId, string $sTargetType, int $sUserId)
| ||
$aArrayId | array | Список ID владельцев |
$sTargetType | string | Тип владельца |
$sUserId | int | ID пользователя |
{return} | array |
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;
}
Получить список избранного по списку айдишников
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 |
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;
}
Получает список таргетов из избранного
public array GetGroupTags(int $iUserId, string $sTargetType, bool $bIsUser, int $iLimit)
| ||
$iUserId | int | ID пользователя |
$sTargetType | string | Тип владельца |
$bIsUser | bool | Возвращает все теги ли только пользовательские |
$iLimit | int | Количество элементов |
{return} | array |
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;
}
Возвращает наиболее часто используемые теги
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 |
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;
}
Возвращает список тегов по фильтру
public bool SetFavouriteTargetPublish(array|int $aTargetId, string $sTargetType, int $iPublish)
| ||
$aTargetId | array|int | Список ID владельцев |
$sTargetType | string | Тип владельца |
$iPublish | int | Флаг публикации |
{return} | bool |
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);
}
Меняет параметры публикации у таргета
public bool UpdateFavourite(ModuleFavourite_EntityFavourite $oFavourite)
| ||
$oFavourite | ModuleFavourite_EntityFavourite | Объект избранного |
{return} | bool |
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;
}
Обновляет запись об избранном