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; } }