1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-01 05:55:02 +03:00
ifhub.club/application/classes/modules/subscribe/mapper/Subscribe.mapper.class.php
2014-10-08 15:49:34 +07:00

163 lines
5.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
* LiveStreet CMS
* Copyright © 2013 OOO "ЛС-СОФТ"
*
* ------------------------------------------------------
*
* Official site: www.livestreetcms.com
* Contact e-mail: office@livestreetcms.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* ------------------------------------------------------
*
* @link http://www.livestreetcms.com
* @copyright 2013 OOO "ЛС-СОФТ"
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
*
*/
/**
* Объект маппера для работы с БД
*
* @package application.modules.subscribe
* @since 1.0
*/
class ModuleSubscribe_MapperSubscribe extends Mapper
{
/**
* Добавляет подписку в БД
*
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
* @return int|bool
*/
public function AddSubscribe($oSubscribe)
{
$sql = "INSERT INTO " . Config::Get('db.table.subscribe') . " SET ?a ";
if ($iId = $this->oDb->query($sql, $oSubscribe->_getData())) {
return $iId;
}
return false;
}
/**
* Получение подписки по типы и емайлу
*
* @param string $sType Тип
* @param string $sMail Емайл
* @return ModuleSubscribe_EntitySubscribe|null
*/
public function GetSubscribeByTypeAndMail($sType, $sMail)
{
$sql = "SELECT * FROM " . Config::Get('db.table.subscribe') . " WHERE target_type = ? and mail = ?";
if ($aRow = $this->oDb->selectRow($sql, $sType, $sMail)) {
return Engine::GetEntity('Subscribe', $aRow);
}
return null;
}
/**
* Обновление подписки
*
* @param ModuleSubscribe_EntitySubscribe $oSubscribe Объект подписки
* @return int
*/
public function UpdateSubscribe($oSubscribe)
{
$sql = "UPDATE " . Config::Get('db.table.subscribe') . "
SET
status = ?,
date_remove = ?
WHERE id = ?d
";
$res = $this->oDb->query($sql, $oSubscribe->getStatus(),
$oSubscribe->getDateRemove(),
$oSubscribe->getId());
return $this->IsSuccessful($res);
}
/**
* Смена емайла в подписках
*
* @param string $sMailOld Старый емайл
* @param string $sMailNew Новый емайл
* @param int|null $iUserId Id пользователя
*
* @return int
*/
public function ChangeSubscribeMail($sMailOld, $sMailNew, $iUserId = null)
{
$sql = "UPDATE " . Config::Get('db.table.subscribe') . "
SET
mail = ?
WHERE mail = ? { and user_id = ?d }
";
$res = $this->oDb->query($sql, $sMailNew, $sMailOld, $iUserId ? $iUserId : DBSIMPLE_SKIP);
return $this->IsSuccessful($res);
}
/**
* Возвращает список подписок по фильтру
*
* @param array $aFilter Фильтр
* @param array $aOrder Сортировка
* @param int $iCount Возвращает общее количество элементов
* @param int $iCurrPage Номер страницы
* @param int $iPerPage Количество элементов на страницу
* @return array
*/
public function GetSubscribes($aFilter, $aOrder, &$iCount, $iCurrPage, $iPerPage)
{
$aOrderAllow = array('id', 'date_add', 'status');
$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 = ' id desc ';
}
if (isset($aFilter['exclude_mail']) and !is_array($aFilter['exclude_mail'])) {
$aFilter['exclude_mail'] = array($aFilter['exclude_mail']);
}
$sql = "SELECT
*
FROM
" . Config::Get('db.table.subscribe') . "
WHERE
1 = 1
{ AND target_type = ? }
{ AND target_id = ?d }
{ AND mail = ? }
{ AND mail not IN (?a) }
{ AND `key` = ? }
{ AND status = ?d }
ORDER by {$sOrder}
LIMIT ?d, ?d ;
";
$aResult = array();
if ($aRows = $this->oDb->selectPage($iCount, $sql,
isset($aFilter['target_type']) ? $aFilter['target_type'] : DBSIMPLE_SKIP,
isset($aFilter['target_id']) ? $aFilter['target_id'] : DBSIMPLE_SKIP,
isset($aFilter['mail']) ? $aFilter['mail'] : DBSIMPLE_SKIP,
(isset($aFilter['exclude_mail']) and count($aFilter['exclude_mail'])) ? $aFilter['exclude_mail'] : DBSIMPLE_SKIP,
isset($aFilter['key']) ? $aFilter['key'] : DBSIMPLE_SKIP,
isset($aFilter['status']) ? $aFilter['status'] : DBSIMPLE_SKIP,
($iCurrPage - 1) * $iPerPage, $iPerPage
)
) {
foreach ($aRows as $aRow) {
$aResult[] = Engine::GetEntity('Subscribe', $aRow);
}
}
return $aResult;
}
}