/** * Проверка на ограничение по времени на постинг на стене * * @param ModuleUser_EntityUser $oUser Пользователь * @param ModuleWall_EntityWall $oWall Объект сообщения на стене * * @return bool */ public function CanAddWallTime($oUser, $oWall) { // * Для администраторов ограничение по времени не действует if ($oUser->isAdministrator() || $oUser->isModerator() || Config::Get('acl.create.wall.limit_time') == 0 || $oUser->getRating() >= Config::Get('acl.create.wall.limit_time_rating')) { return true; } if ($oWall->getUserId() == $oWall->getWallUserId()) { return true; } // * Получаем последнее сообщение $aWall = E::ModuleWall()->GetWall(array('user_id' => $oWall->getUserId()), array('id' => 'desc'), 1, 1, array()); // * Если сообщений нет if ($aWall['count'] == 0) { return true; } $oWallLast = array_shift($aWall['collection']); $sDate = strtotime($oWallLast->getDateAdd()); if ($sDate && time() - $sDate < Config::Get('acl.create.wall.limit_time')) { return false; } return true; }
/** * Уведомление о новом сообщение на стене * * @param ModuleWall_EntityWall $oWall Объект нового сообщения на стене * @param ModuleUser_EntityUser $oUser Объект пользователя */ public function SendWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser) { $this->Send($oWall->getWallUser(), 'notify.wall.new.tpl', $this->Lang_Get('notify_subject_wall_new'), array('oUserTo' => $oWall->getWallUser(), 'oWall' => $oWall, 'oUser' => $oUser, 'oUserWall' => $oWall->getWallUser())); }
/** * Обновление записи * * @param ModuleWall_EntityWall $oWall Объект записи на стене * @return bool */ public function UpdateWall($oWall) { $sql = "UPDATE " . Config::Get('db.table.wall') . "\n SET\n count_reply = ?d,\n last_reply = ?\n WHERE id = ?d\n "; return $this->oDb->query($sql, $oWall->getCountReply(), $oWall->getLastReply(), $oWall->getId()); }
/** * Уведомление о новом сообщение на стене * * @param ModuleWall_EntityWall $oWall Объект нового сообщения на стене * @param ModuleUser_EntityUser $oUser Объект пользователя * * @return bool */ public function SendWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser) { return $this->Send($oWall->getWallUser(), 'wall_new.tpl', E::ModuleLang()->Get('notify_subject_wall_new'), array('oUserTo' => $oWall->getWallUser(), 'oWall' => $oWall, 'oUser' => $oUser, 'oUserWall' => $oWall->getWallUser())); }
/** * Удаление сообщения * * @param ModuleWall_EntityWall $oWall Объект записи на стене */ public function DeleteWall($oWall) { $this->oMapper->DeleteWallsByPid($oWall->getId()); $this->oMapper->DeleteWallById($oWall->getId()); if ($oWallParent = $oWall->GetPidWall()) { $this->UpdatePidWall($oWallParent); } }
/** * Обновляет родительские данные у записи - количество ответов и ID последних ответов * * @param ModuleWall_EntityWall $oWall * * @param null|int $iLimit */ 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']); $oWall->setLastReply(join(',', array_keys($aResult['collection']))); $this->UpdateWall($oWall); } }
/** * Обновление записи * * @param ModuleWall_EntityWall $oWall Объект записи на стене * * @return bool */ public function UpdateWall($oWall) { $sql = "\n UPDATE ?_wall\n\t\t\tSET \n\t\t\t \tcount_reply = ?d,\n\t\t\t \tlast_reply = ?\n\t\t\tWHERE id = ?d\n\t\t"; $bResult = $this->oDb->query($sql, $oWall->getCountReply(), $oWall->getLastReply(), $oWall->getId()); return $bResult !== false; }
/** * Уведомление о новом сообщение на стене * * @param ModuleWall_EntityWall $oWall Объект нового сообщения на стене * @param ModuleUser_EntityUser $oUser Объект пользователя */ public function SendNotifyWallNew(ModuleWall_EntityWall $oWall, ModuleUser_EntityUser $oUser) { $this->Notify_Send($oWall->getWallUser(), 'wall.new.tpl', $this->Lang_Get('emails.wall_new.subject'), array('oUserTo' => $oWall->getWallUser(), 'oWall' => $oWall, 'oUser' => $oUser, 'oUserWall' => $oWall->getWallUser())); }
/** * Обновление записи * * @param ModuleWall_EntityWall $oWall Объект записи на стене * @return bool */ public function UpdateWall($oWall) { $sql = "UPDATE " . Config::Get('db.table.wall') . "\n\t\t\tSET \n\t\t\t \tcount_reply = ?d,\n\t\t\t \tlast_reply = ?\n\t\t\tWHERE id = ?d\n\t\t"; $res = $this->oDb->query($sql, $oWall->getCountReply(), $oWall->getLastReply(), $oWall->getId()); return $this->IsSuccessful($res); }