ModuleSubscribe

Package modules.subscribe
Inheritance class ModuleSubscribe » Module » LsObject
Since 1.0
Source Code /classes/modules/subscribe/Subscribe.class.php
Модуль Subscribe - подписки пользователей

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aTargetTypes array Список доступных объектов подписок с параметрами ModuleSubscribe
bIsInit bool Указывает на то, была ли проведенна инициализация модуля Module
oEngine Engine Объект ядра Module
oMapper ModuleSubscribe_MapperSubscribe Объект маппера ModuleSubscribe
oUserCurrent ModuleUser_EntityUser|null Объект текущего пользователя ModuleSubscribe

Public Methods

Hide inherited methods

MethodDescriptionDefined By
AddSubscribe() Добавляет подписку в БД ModuleSubscribe
AddSubscribeSimple() Создает подписку, если уже есть, то возвращает существующую ModuleSubscribe
AddTargetType() Добавляет в разрешенные новый тип ModuleSubscribe
CheckTarget() Проверка объекта подписки ModuleSubscribe
CheckTargetTopicNewComment() Проверка объекта подписки с типом "topic_new_comment" ModuleSubscribe
GetSubscribeByKey() Возвращает подписку по ключу ModuleSubscribe
GetSubscribeByTargetAndMail() Возвращает подписку по объекту подписки и емайлу ModuleSubscribe
GetSubscribes() Возвращает список подписок по фильтру ModuleSubscribe
GetTargetTypes() Возвращает список типов объектов ModuleSubscribe
GetUrlTarget() Возвращает URL страницы с объектом подписки ModuleSubscribe
GetUrlTargetTopicNewComment() Возвращает URL на страницы объекта подписки с типом "topic_new_comment" ModuleSubscribe
Init() Инициализация ModuleSubscribe
IsAllowTargetForGuest() Проверка на подписку для гостей ModuleSubscribe
IsAllowTargetType() Проверяет разрешен ли данный тип в подписке ModuleSubscribe
Send() Производит отправку писем по подписчикам подписки ModuleSubscribe
SetInit() Помечает модуль как инициализированный Module
Shutdown() Метод срабатывает при завершении работы ядра Module
UpdateSubscribe() Обновление подписки ModuleSubscribe
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Module
__construct() При создании модуля передаем объект ядра Module
isInit() Возвращает значение флага инициализации модуля Module

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
__clone() Блокируем копирование/клонирование объекта Module

Property Details

aTargetTypes property
protected array $aTargetTypes;

Список доступных объектов подписок с параметрами На данный момент допустим параметр allow_for_guest=>1 - указывает на возможность создавать подписку для гостя

oMapper property
protected ModuleSubscribe_MapperSubscribe $oMapper;

Объект маппера

oUserCurrent property
protected ModuleUser_EntityUser|null $oUserCurrent;

Объект текущего пользователя

Method Details

AddSubscribe() method
public ModuleSubscribe_EntitySubscribe|bool AddSubscribe(ModuleSubscribe_EntitySubscribe $oSubscribe)
$oSubscribe ModuleSubscribe_EntitySubscribe Объект подписки
{return} ModuleSubscribe_EntitySubscribe|bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#136 (show)
public function AddSubscribe($oSubscribe) {
    if (
$sId=$this->oMapper->AddSubscribe($oSubscribe)) {
        
$oSubscribe->setId($sId);
        return 
$oSubscribe;
    }
    return 
false;
}

Добавляет подписку в БД

AddSubscribeSimple() method
public ModuleSubscribe_EntitySubscribe|bool AddSubscribeSimple(string $sTargetType, string $sTargetId, string $sMail)
$sTargetType string Тип
$sTargetId string ID владельца
$sMail string Емайл
{return} ModuleSubscribe_EntitySubscribe|bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#151 (show)
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail) {
    if (!
$sMail) {
        return 
false;
    }
    if (!(
$oSubscribe=$this->Subscribe_GetSubscribeByTargetAndMail($sTargetType,$sTargetId,$sMail))) {
        
$oSubscribe=Engine::GetEntity('Subscribe');
        
$oSubscribe->setTargetType($sTargetType);
        
$oSubscribe->setTargetId($sTargetId);
        
$oSubscribe->setMail($sMail);
        
$oSubscribe->setDateAdd(date("Y-m-d H:i:s"));
        
$oSubscribe->setKey(func_generator(32));
        
$oSubscribe->setIp(func_getIp());
        
$oSubscribe->setStatus(1);
        
$this->Subscribe_AddSubscribe($oSubscribe);
    }
    return 
$oSubscribe;
}

Создает подписку, если уже есть, то возвращает существующую

AddTargetType() method
public bool AddTargetType(string $sTargetType, array $aParams=array ( ))
$sTargetType string Тип
$aParams array Параметры
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#70 (show)
public function AddTargetType($sTargetType,$aParams=array()) {
    if (!
array_key_exists($sTargetType,$this->aTargetTypes)) {
        
$this->aTargetTypes[$sTargetType]=$aParams;
        return 
true;
    }
    return 
false;
}

Добавляет в разрешенные новый тип

CheckTarget() method
public bool CheckTarget(string $sTargetType, int $iTargetId, int $iStatus=NULL)
$sTargetType string Тип
$iTargetId int ID владельца
$iStatus int Статус подписки
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#94 (show)
public function CheckTarget($sTargetType,$iTargetId,$iStatus=null) {
    
$sMethod 'CheckTarget'.func_camelize($sTargetType);
    if (
method_exists($this,$sMethod)) {
        return 
$this->$sMethod($iTargetId,$iStatus);
    }
    return 
false;
}

Проверка объекта подписки

CheckTargetTopicNewComment() method
public bool CheckTargetTopicNewComment(int $iTargetId, int $iStatus)
$iTargetId int ID владельца
$iStatus int Статус
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#254 (show)
public function CheckTargetTopicNewComment($iTargetId,$iStatus) {
    if (
$oTopic=$this->Topic_GetTopicById($iTargetId)) {
        
/**
         * Топик может быть в закрытом блоге, поэтому необходимо разрешить подписку только если пользователь в нем состоит
         * Отписываться разрешаем с любого топика
         */
        
if ($iStatus==and $oTopic->getBlog()->getType()=='close') {
            if (!
$this->oUserCurrent or !$this->Blog_GetBlogUserByBlogIdAndUserId($oTopic->getBlogId(),$this->oUserCurrent->getId())) {
                return 
false;
            }
        }
        return 
true;
    }
    return 
false;
}

Проверка объекта подписки с типом "topic_new_comment" Название метода формируется автоматически

GetSubscribeByKey() method
public ModuleSubscribe_EntitySubscribe|null GetSubscribeByKey(string $sKey)
$sKey string Ключ
{return} ModuleSubscribe_EntitySubscribe|null
Source Code: /classes/modules/subscribe/Subscribe.class.php#210 (show)
public function GetSubscribeByKey($sKey) {
    
$aRes=$this->GetSubscribes(array('key'=>$sKey),array(),1,1);
    if (isset(
$aRes['collection'][0])) {
        return 
$aRes['collection'][0];
    }
    return 
null;
}

Возвращает подписку по ключу

GetSubscribeByTargetAndMail() method
public ModuleSubscribe_EntitySubscribe|null GetSubscribeByTargetAndMail(string $sTargetType, int $iTargetId, string $sMail)
$sTargetType string Тип
$iTargetId int ID владельца
$sMail string Емайл
{return} ModuleSubscribe_EntitySubscribe|null
Source Code: /classes/modules/subscribe/Subscribe.class.php#197 (show)
public function GetSubscribeByTargetAndMail($sTargetType,$iTargetId,$sMail) {
    
$aRes=$this->GetSubscribes(array('target_type'=>$sTargetType,'target_id'=>$iTargetId,'mail'=>$sMail),array(),1,1);
    if (isset(
$aRes['collection'][0])) {
        return 
$aRes['collection'][0];
    }
    return 
null;
}

Возвращает подписку по объекту подписки и емайлу

GetSubscribes() method
public array('collection'=>array,'count'=>int) GetSubscribes(array $aFilter, array $aOrder, int $iCurrPage, int $iPerPage)
$aFilter array Фильтр
$aOrder array Сортировка
$iCurrPage int Номер страницы
$iPerPage int Количество элементов на страницу
{return} array('collection'=>array,'count'=>int)
Source Code: /classes/modules/subscribe/Subscribe.class.php#186 (show)
public function GetSubscribes($aFilter,$aOrder,$iCurrPage,$iPerPage) {
    return array(
'collection'=>$this->oMapper->GetSubscribes($aFilter,$aOrder,$iCount,$iCurrPage,$iPerPage),'count'=>$iCount);
}

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

GetTargetTypes() method
public array GetTargetTypes()
{return} array
Source Code: /classes/modules/subscribe/Subscribe.class.php#60 (show)
public function GetTargetTypes() {
    return 
$this->aTargetTypes;
}

Возвращает список типов объектов

GetUrlTarget() method
public bool GetUrlTarget(string $sTargetType, int $iTargetId)
$sTargetType string Тип
$iTargetId int ID владельца
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#109 (show)
public function GetUrlTarget($sTargetType,$iTargetId) {
    
$sMethod 'GetUrlTarget'.func_camelize($sTargetType);
    if (
method_exists($this,$sMethod)) {
        return 
$this->$sMethod($iTargetId);
    }
    return 
false;
}

Возвращает URL страницы с объектом подписки Актуально при переходе по ссылки с отпиской от рассылки и последующим редиректом

GetUrlTargetTopicNewComment() method
public string|bool GetUrlTargetTopicNewComment(int $iTargetId)
$iTargetId int ID топика
{return} string|bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#276 (show)
public function GetUrlTargetTopicNewComment($iTargetId) {
    if (
$oTopic=$this->Topic_GetTopicById($iTargetId) and $oTopic->getPublish()) {
        return 
$oTopic->getUrl();
    }
    return 
false;
}

Возвращает URL на страницы объекта подписки с типом "topic_new_comment" Название метода формируется автоматически

Init() method
public void Init()
Source Code: /classes/modules/subscribe/Subscribe.class.php#51 (show)
public function Init() {
    
$this->oMapper=Engine::GetMapper(__CLASS__);
    
$this->oUserCurrent=$this->User_GetUserCurrent();
}

Инициализация

IsAllowTargetForGuest() method
public bool IsAllowTargetForGuest(string $sTargetType)
$sTargetType string Тип
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#122 (show)
public function IsAllowTargetForGuest($sTargetType) {
    if (
$this->IsAllowTargetType($sTargetType)) {
        if (isset(
$this->aTargetTypes[$sTargetType]['allow_for_guest']) and $this->aTargetTypes[$sTargetType]['allow_for_guest']) {
            return 
true;
        }
    }
    return 
false;
}

Проверка на подписку для гостей

IsAllowTargetType() method
public bool IsAllowTargetType(string $sTargetType)
$sTargetType string Тип
{return} bool
Source Code: /classes/modules/subscribe/Subscribe.class.php#83 (show)
public function IsAllowTargetType($sTargetType) {
    return 
in_array($sTargetType,array_keys($this->aTargetTypes));
}

Проверяет разрешен ли данный тип в подписке

Send() method
public void Send(int $sTargetType, int $iTargetId, string $sTemplate, string $sTitle, array $aParams=array ( ), array $aExcludeMail=array ( ), string $sPluginName=NULL)
$sTargetType int Тип объекта подписки
$iTargetId int ID объекта подписки
$sTemplate string Имя шаблона письма, например, notify.mail.tpl
$sTitle string Заголовок письма
$aParams array Параметра для передачи в шаблон письма
$aExcludeMail array Список емайлов на которые НЕ нужно отправлять
$sPluginName string Название или класс плагина для корректной отправки
Source Code: /classes/modules/subscribe/Subscribe.class.php#228 (show)
public function Send($sTargetType,$iTargetId,$sTemplate,$sTitle,$aParams=array(),$aExcludeMail=array(),$sPluginName=null) {
    
$iPage=1;
    
$aSubscribes=$this->Subscribe_GetSubscribes(array('target_type'=>$sTargetType,'target_id'=>$iTargetId,'status'=>1,'exclude_mail'=>$aExcludeMail),array(),$iPage,20);
    while (
$aSubscribes['collection']) {
        
$iPage++;
        foreach (
$aSubscribes['collection'] as $oSubscribe) {
            
$aParams['sSubscribeKey']=$oSubscribe->getKey();
            
$this->Notify_Send(
                
$oSubscribe->getMail(),
                
$sTemplate,
                
$sTitle,
                
$aParams,
                
$sPluginName
            
);
        }
        
$aSubscribes=$this->Subscribe_GetSubscribes(array('target_type'=>$sTargetType,'target_id'=>$iTargetId,'status'=>1),array(),$iPage,20);
    }
}

Производит отправку писем по подписчикам подписки

UpdateSubscribe() method
public int UpdateSubscribe(ModuleSubscribe_EntitySubscribe $oSubscribe)
$oSubscribe ModuleSubscribe_EntitySubscribe Объект подписки
{return} int
Source Code: /classes/modules/subscribe/Subscribe.class.php#174 (show)
public function UpdateSubscribe($oSubscribe) {
    return 
$this->oMapper->UpdateSubscribe($oSubscribe);
}

Обновление подписки