ModuleWall
Package | application.modules.wall |
---|---|
Inheritance | class ModuleWall » Module » LsObject |
Since | 1.0 |
Source Code | /application/classes/modules/wall/Wall.class.php |
Модуль Wall - записи на стене профиля пользователя
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
oMapper | ModuleWall_MapperWall | Объект маппера | ModuleWall |
oUserCurrent | ModuleUser_EntityUser|null | Объект текущего пользователя | ModuleWall |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AddWall() | Добавление записи на стену | ModuleWall |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DeleteWall() | Удаление сообщения | ModuleWall |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetCountWall() | Возвращает число сообщений на стене по фильтру | ModuleWall |
GetWall() | Получение списка записей по фильтру | ModuleWall |
GetWallAdditionalData() | Получение записей по ID с дополнительные связаными данными | ModuleWall |
GetWallById() | Получение записи по ID | ModuleWall |
GetWallsByArrayId() | Получение записей по ID, без дополнительных данных | ModuleWall |
Init() | Инициализация | ModuleWall |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
UpdatePidWall() | Обновляет родительские данные у записи - количество ответов и ID последних ответов | ModuleWall |
UpdateWall() | Обновление записи | ModuleWall |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
oMapper
property
protected ModuleWall_MapperWall $oMapper;
Объект маппера
oUserCurrent
property
protected ModuleUser_EntityUser|null $oUserCurrent;
Объект текущего пользователя
Method Details
AddWall()
method
public bool|ModuleWall_EntityWall AddWall(ModuleWall_EntityWall $oWall)
| ||
$oWall | ModuleWall_EntityWall | Объект записи на стене |
{return} | bool|ModuleWall_EntityWall |
Source Code: /application/classes/modules/wall/Wall.class.php#59 (show)
public function AddWall($oWall)
{
if (!$oWall->getDateAdd()) {
$oWall->setDateAdd(date("Y-m-d H:i:s"));
}
if (!$oWall->getIp()) {
$oWall->setIp(func_getIp());
}
if ($iId = $this->oMapper->AddWall($oWall)) {
$oWall->setId($iId);
/**
* Обновляем данные у родительской записи
*/
if ($oPidWall = $oWall->GetPidWall()) {
$this->UpdatePidWall($oPidWall);
}
return $oWall;
}
return false;
}
Добавление записи на стену
DeleteWall()
method
public void DeleteWall(ModuleWall_EntityWall $oWall)
| ||
$oWall | ModuleWall_EntityWall | Объект записи на стене |
Source Code: /application/classes/modules/wall/Wall.class.php#268 (show)
public function DeleteWall($oWall)
{
$this->oMapper->DeleteWallsByPid($oWall->getId());
$this->oMapper->DeleteWallById($oWall->getId());
if ($oWallParent = $oWall->GetPidWall()) {
$this->UpdatePidWall($oWallParent);
}
}
Удаление сообщения
GetCountWall()
method
public int GetCountWall(array $aFilter)
| ||
$aFilter | array | Фильтр |
{return} | int |
Source Code: /application/classes/modules/wall/Wall.class.php#117 (show)
public function GetCountWall($aFilter)
{
return $this->oMapper->GetCountWall($aFilter);
}
Возвращает число сообщений на стене по фильтру
GetWall()
method
public array('collection'=>array,'count'=>int) GetWall(array $aFilter, array $aOrder, int $iCurrPage=1, int $iPerPage=10, array $aAllowData=NULL)
| ||
$aFilter | array | Фильтр |
$aOrder | array | Сортировка |
$iCurrPage | int | Номер страницы |
$iPerPage | int | Количество элементов на страницу |
$aAllowData | array | Список типов дополнительных данных для подгрузки в сообщения стены |
{return} | array('collection'=>array,'count'=>int) |
Source Code: /application/classes/modules/wall/Wall.class.php#101 (show)
public function GetWall($aFilter, $aOrder, $iCurrPage = 1, $iPerPage = 10, $aAllowData = null)
{
$aResult = array(
'collection' => $this->oMapper->GetWall($aFilter, $aOrder, $iCount, $iCurrPage, $iPerPage),
'count' => $iCount
);
$aResult['collection'] = $this->GetWallAdditionalData($aResult['collection'], $aAllowData);
return $aResult;
}
Получение списка записей по фильтру
GetWallAdditionalData()
method
public array GetWallAdditionalData(array $aWallId, array $aAllowData=NULL)
| ||
$aWallId | array | Список ID сообщений |
$aAllowData | array | Список типов дополнительных данных для подгрузки в сообщения стены |
{return} | array |
Source Code: /application/classes/modules/wall/Wall.class.php#149 (show)
public function GetWallAdditionalData($aWallId, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('user' => array(), 'wall_user' => array(), 'reply');
}
func_array_simpleflip($aAllowData);
if (!is_array($aWallId)) {
$aWallId = array($aWallId);
}
$aWalls = $this->GetWallsByArrayId($aWallId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
$aWallUserId = array();
$aWallReplyId = array();
foreach ($aWalls as $oWall) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oWall->getUserId();
}
if (isset($aAllowData['wall_user'])) {
$aWallUserId[] = $oWall->getWallUserId();
}
/**
* Список последних записей хранится в строке через запятую
*/
if (isset($aAllowData['reply']) and is_null($oWall->getPid()) and $oWall->getLastReply()) {
$aReply = explode(',', trim($oWall->getLastReply()));
$aWallReplyId = array_merge($aWallReplyId, $aReply);
}
}
/**
* Получаем дополнительные данные
*/
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId,
$aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
$aWallUsers = isset($aAllowData['wall_user']) && is_array($aAllowData['wall_user']) ? $this->User_GetUsersAdditionalData($aWallUserId,
$aAllowData['wall_user']) : $this->User_GetUsersAdditionalData($aWallUserId);
$aWallReply = array();
if (isset($aAllowData['reply']) and count($aWallReplyId)) {
$aWallReply = $this->GetWallAdditionalData($aWallReplyId, array('user' => array()));
}
/**
* Добавляем данные к результату
*/
foreach ($aWalls as $oWall) {
if (isset($aUsers[$oWall->getUserId()])) {
$oWall->setUser($aUsers[$oWall->getUserId()]);
} else {
$oWall->setUser(null); // или $oWall->setUser(new ModuleUser_EntityUser());
}
if (isset($aWallUsers[$oWall->getWallUserId()])) {
$oWall->setWallUser($aWallUsers[$oWall->getWallUserId()]);
} else {
$oWall->setWallUser(null);
}
$aReply = array();
if ($oWall->getLastReply()) {
$aReplyId = explode(',', trim($oWall->getLastReply()));
foreach ($aReplyId as $iReplyId) {
if (isset($aWallReply[$iReplyId])) {
$aReply[] = $aWallReply[$iReplyId];
}
}
}
$oWall->setLastReplyWall($aReply);
}
return $aWalls;
}
Получение записей по ID с дополнительные связаными данными
GetWallById()
method
public ModuleWall_EntityWall GetWallById(int $iId)
| ||
$iId | int | ID сообщения/записи |
{return} | ModuleWall_EntityWall |
Source Code: /application/classes/modules/wall/Wall.class.php#226 (show)
public function GetWallById($iId)
{
if (!is_numeric($iId)) {
return null;
}
$aResult = $this->GetWallAdditionalData($iId);
if (isset($aResult[$iId])) {
return $aResult[$iId];
}
return null;
}
Получение записи по ID
GetWallsByArrayId()
method
public array GetWallsByArrayId(array $aWallId)
| ||
$aWallId | array | Список ID сообщений |
{return} | array |
Source Code: /application/classes/modules/wall/Wall.class.php#128 (show)
public function GetWallsByArrayId($aWallId)
{
if (!is_array($aWallId)) {
$aWallId = array($aWallId);
}
$aWallId = array_unique($aWallId);
$aWalls = array();
$aResult = $this->oMapper->GetWallsByArrayId($aWallId);
foreach ($aResult as $oWall) {
$aWalls[$oWall->getId()] = $oWall;
}
return $aWalls;
}
Получение записей по ID, без дополнительных данных
Init()
method
public void Init()
|
Source Code: /application/classes/modules/wall/Wall.class.php#47 (show)
public function Init()
{
$this->oMapper = Engine::GetMapper(__CLASS__);
$this->oUserCurrent = $this->User_GetUserCurrent();
}
Инициализация
UpdatePidWall()
method
public void UpdatePidWall(ModuleWall_EntityWall $oWall, null|int $iLimit=NULL)
| ||
$oWall | ModuleWall_EntityWall | Объект записи на стене |
$iLimit | null|int |
Source Code: /application/classes/modules/wall/Wall.class.php#244 (show)
public function UpdatePidWall($oWall, $iLimit = null)
{
if (is_null($iLimit)) {
$iLimit = Config::Get('module.wall.count_last_reply');
}
$aResult = $this->GetWall(array('pid' => $oWall->getId()), array('id' => 'desc'), 1, $iLimit, array());
if ($aResult['count']) {
$oWall->setCountReply($aResult['count']);
$aKeys = array_keys($aResult['collection']);
sort($aKeys, SORT_NUMERIC);
$oWall->setLastReply(join(',', $aKeys));
} else {
$oWall->setCountReply(0);
$oWall->setLastReply('');
}
$this->UpdateWall($oWall);
}
Обновляет родительские данные у записи - количество ответов и ID последних ответов
UpdateWall()
method
public bool UpdateWall(ModuleWall_EntityWall $oWall)
| ||
$oWall | ModuleWall_EntityWall | Объект записи на стене |
{return} | bool |
Source Code: /application/classes/modules/wall/Wall.class.php#86 (show)
public function UpdateWall($oWall)
{
return $this->oMapper->UpdateWall($oWall);
}
Обновление записи