本文整理汇总了PHP中E::GetEntity方法的典型用法代码示例。如果您正苦于以下问题:PHP E::GetEntity方法的具体用法?PHP E::GetEntity怎么用?PHP E::GetEntity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类E
的用法示例。
在下文中一共展示了E::GetEntity方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Store
/**
* Saves file in storage
*
* @param string $sFile
* @param string $sDestination
*
* @return bool|ModuleUploader_EntityItem
*/
public function Store($sFile, $sDestination = null)
{
if (!$sDestination) {
$oUser = E::ModuleUser()->GetUserCurrent();
if (!$oUser) {
return false;
}
$sDestination = E::ModuleUploader()->GetUserFileDir($oUser->getId());
}
if ($sDestination) {
$sMimeType = ModuleImg::MimeType($sFile);
$bIsImage = strpos($sMimeType, 'image/') === 0;
$iUserId = E::UserId();
$sExtension = F::File_GetExtension($sFile, true);
if (substr($sDestination, -1) == '/') {
$sDestinationDir = $sDestination;
} else {
$sDestinationDir = dirname($sDestination) . '/';
}
$sUuid = ModuleMresource::CreateUuid('file', $sFile, md5_file($sFile), $iUserId);
$sDestination = $sDestinationDir . $sUuid . '.' . $sExtension;
if ($sStoredFile = E::ModuleUploader()->Move($sFile, $sDestination, true)) {
$oStoredItem = E::GetEntity('Uploader_Item', array('storage' => 'file', 'uuid' => $sUuid, 'original_filename' => basename($sFile), 'url' => $this->Dir2Url($sStoredFile), 'file' => $sStoredFile, 'user_id' => $iUserId, 'mime_type' => $sMimeType, 'is_image' => $bIsImage));
return $oStoredItem;
}
}
return false;
}
示例2: GetSubscribeByTypeAndMail
/**
* Получение подписки по типу и емейлу
*
* @param string $sType Тип
* @param string $sMail Емайл
*
* @return ModuleSubscribe_EntitySubscribe|null
*/
public function GetSubscribeByTypeAndMail($sType, $sMail)
{
$sql = "SELECT * FROM ?_subscribe WHERE target_type = ? AND mail = ?";
if ($aRow = $this->oDb->selectRow($sql, $sType, $sMail)) {
return E::GetEntity('Subscribe', $aRow);
}
return null;
}
示例3: GetEventByTarget
/**
* Получает событие по типу и его ID
*
* @param string $sEventType Тип
* @param int $iTargetId ID владельца события
* @param int|null $iUserId ID пользователя
*
* @return ModuleStream_EntityEvent
*/
public function GetEventByTarget($sEventType, $iTargetId, $iUserId = null)
{
$sql = "SELECT * FROM\n\t\t\t\t\t?_stream_event\n\t\t\t\tWHERE target_id = ?d AND event_type = ? { AND user_id = ?d } ";
$aRow = $this->oDb->selectRow($sql, $iTargetId, $sEventType, is_null($iUserId) ? DBSIMPLE_SKIP : $iUserId);
if ($aRow) {
return E::GetEntity('ModuleStream_EntityEvent', $aRow);
}
return null;
}
示例4: GetCaptcha
/**
* @param string $sKeyName
*
* @return ModuleCaptcha_EntityCaptcha
*/
public function GetCaptcha($sKeyName = null)
{
/** @var ModuleCaptcha_EntityCaptcha $oCaptcha */
$oCaptcha = E::GetEntity('Captcha_Captcha');
if (!$sKeyName) {
$sKeyName = $this->sKeyName;
}
E::ModuleSession()->Set($sKeyName, $oCaptcha->getKeyString());
return $oCaptcha;
}
示例5: GetSkinsList
/**
* Returns array of skin entities
*
* @param array $aFilter - array('type' => 'site'|'admin')
* @return ModuleSkin_EntitySkin[]
*/
public function GetSkinsList($aFilter = array())
{
if (is_null($this->aSkins)) {
$aSkinList = array();
if (isset($aFilter['dir'])) {
$sSkinsDir = $aFilter['dir'];
} else {
$sSkinsDir = Config::Get('path.skins.dir');
}
if (isset($aFilter['name'])) {
$sPattern = $sSkinsDir . $aFilter['name'];
} else {
$sPattern = $sSkinsDir . '*';
}
$aList = glob($sPattern, GLOB_ONLYDIR);
if ($aList) {
if (!isset($aFilter['type'])) {
$aFilter['type'] = '';
}
$sActiveSkin = Config::Get('view.skin');
foreach ($aList as $sSkinDir) {
$sSkin = basename($sSkinDir);
$aData = array('id' => $sSkin, 'dir' => $sSkinDir);
$oSkinEntity = E::GetEntity('Skin', $aData);
$oSkinEntity->SetIsActive($oSkinEntity->GetId() == $sActiveSkin);
$aSkinList[$oSkinEntity->GetId()] = $oSkinEntity;
}
}
$this->aSkins = $aSkinList;
}
if (!$aFilter || empty($aFilter['type'])) {
$aResult = $this->aSkins;
} else {
$aResult = array();
foreach ($this->aSkins as $sSkinName => $oSkinEntity) {
if ($aFilter['type'] == $oSkinEntity->GetType()) {
$aResult[$sSkinName] = $oSkinEntity;
}
}
}
return $aResult;
}
示例6: SubmitAddField
protected function SubmitAddField($oContentType)
{
// * Проверяем отправлена ли форма с данными
if (!F::isPost('submit_field')) {
return false;
}
// * Проверка корректности полей формы
if (!$this->CheckFieldsField($oContentType)) {
return false;
}
$oField = E::GetEntity('Topic_Field');
$oField->setFieldType(F::GetRequest('field_type'));
$oField->setContentId($oContentType->getContentId());
$oField->setFieldName(F::GetRequest('field_name'));
$oField->setFieldDescription(F::GetRequest('field_description'));
$oField->setFieldRequired(F::GetRequest('field_required'));
if (F::GetRequest('field_type') == 'select') {
$oField->setOptionValue('select', F::GetRequest('field_values'));
}
$sFieldUniqueName = F::TranslitUrl(F::GetRequest('field_unique_name'));
if (F::GetRequest('field_unique_name_translit')) {
$sFieldUniqueName = F::TranslitUrl(F::GetRequest('field_name'));
}
$oField->setFieldUniqueName($sFieldUniqueName);
try {
if (E::ModuleTopic()->AddContentField($oField)) {
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('action.admin.contenttypes_success_fieldadd'), null, true);
R::Location('admin/settings-contenttypes/edit/' . $oContentType->getContentId() . '/');
}
} catch (Exception $e) {
// Если ошибка дублирования уникального ключа, то выводим соответствующее сообщение
if (1062 == $e->getCode()) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('plugin.contentfieldsx.error_field_unique_name_duplicate', array('unique_name' => htmlspecialchars($sFieldUniqueName))), null, false);
}
}
return false;
}
示例7: GetUserChangemailByCodeTo
/**
* Возвращает объект смены емайла по коду подтверждения
*
* @param string $sCode Код подтверждения
*
* @return ModuleUser_EntityChangemail|null
*/
public function GetUserChangemailByCodeTo($sCode)
{
$sql = "\n SELECT *\n FROM ?_user_changemail\n WHERE code_to = ?\n LIMIT 1\n ";
if ($aRow = $this->oDb->selectRow($sql, $sCode)) {
return E::GetEntity('ModuleUser_EntityChangemail', $aRow);
}
return null;
}
示例8: Write
/**
* Запись события в ленту
*
* @param int $iUserId ID пользователя
* @param string $sEventType Тип события
* @param int $iTargetId ID владельца
* @param int $iPublish Статус
*
* @return bool
*/
public function Write($iUserId, $sEventType, $iTargetId, $iPublish = 1)
{
$iPublish = (int) $iPublish;
if (!$this->IsAllowEventType($sEventType)) {
return false;
}
$aParams = $this->aEventTypes[$sEventType];
if (isset($aParams['unique']) and $aParams['unique']) {
// * Проверяем на уникальность
/** @var ModuleStream_EntityEvent $oEvent */
if ($oEvent = $this->GetEventByTarget($sEventType, $iTargetId)) {
// * Событие уже было
if ($oEvent->getPublish() != $iPublish) {
$oEvent->setPublish($iPublish);
$this->UpdateEvent($oEvent);
}
return true;
}
}
if (isset($aParams['unique_user']) and $aParams['unique_user']) {
// * Проверяем на уникальность для конкретного пользователя
if ($oEvent = $this->GetEventByTarget($sEventType, $iTargetId, $iUserId)) {
// * Событие уже было
if ($oEvent->getPublish() != $iPublish) {
$oEvent->setPublish($iPublish);
$this->UpdateEvent($oEvent);
}
return true;
}
}
if ($iPublish) {
/**
* Создаем новое событие
*/
/** @var ModuleStream_EntityEvent $oEvent */
$oEvent = E::GetEntity('Stream_Event');
$oEvent->setEventType($sEventType);
$oEvent->setUserId($iUserId);
$oEvent->setTargetId($iTargetId);
$oEvent->setDateAdded(date('Y-m-d H:i:s'));
$oEvent->setPublish($iPublish);
$this->AddEvent($oEvent);
}
return true;
}
示例9: EventAjaxUserAdd
public function EventAjaxUserAdd()
{
E::ModuleViewer()->SetResponseAjax('json');
if ($this->IsPost()) {
Config::Set('module.user.captcha_use_registration', false);
$oUser = E::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
// * Заполняем поля (данные)
$oUser->setLogin($this->GetPost('user_login'));
$oUser->setMail($this->GetPost('user_mail'));
$oUser->setPassword($this->GetPost('user_password'));
$oUser->setPasswordConfirm($this->GetPost('user_password'));
$oUser->setDateRegister(F::Now());
$oUser->setIpRegister('');
$oUser->setActivate(1);
if ($oUser->_Validate()) {
E::ModuleHook()->Run('registration_validate_after', array('oUser' => $oUser));
$oUser->setPassword($oUser->getPassword(), true);
if (E::ModuleUser()->Add($oUser)) {
E::ModuleHook()->Run('registration_after', array('oUser' => $oUser));
// Подписываем пользователя на дефолтные события в ленте активности
E::ModuleStream()->SwitchUserEventDefaultTypes($oUser->getId());
if ($this->IsPost('user_setadmin')) {
E::ModuleAdmin()->SetAdministrator($oUser->GetId());
}
}
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('registration_ok'));
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('error'));
E::ModuleViewer()->AssignAjax('aErrors', $oUser->_getValidateErrors());
}
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
}
}
示例10: CreateRssItem
/**
* Creates RSS item for the topic
*
* @return ModuleRss_EntityRssItem
*/
public function CreateRssItem()
{
$aRssItemData = array('title' => $this->getTitle(), 'description' => $this->getText(), 'link' => $this->getUrl(), 'author' => $this->getUser() ? $this->getUser()->getMail() : '', 'guid' => $this->getUrlShort(), 'comments' => $this->getUrl() . '#comments', 'pub_date' => $this->getDateShow() ? date('r', strtotime($this->getDateShow())) : '');
$oRssItem = E::GetEntity('ModuleRss_EntityRssItem', $aRssItemData);
return $oRssItem;
}
示例11: processTopicFields
//.........这里部分代码省略.........
if (!$iMaxFileSize || filesize($_FILES['fields_' . $oField->getFieldId()]['tmp_name']) <= $iMaxFileSize) {
$aPathInfo = pathinfo($_FILES['fields_' . $oField->getFieldId()]['name']);
if (!$aFileExtensions || in_array(strtolower($aPathInfo['extension']), $aFileExtensions)) {
$sFileTmp = $_FILES['fields_' . $oField->getFieldId()]['tmp_name'];
$sDirSave = Config::Get('path.uploads.root') . '/files/' . E::ModuleUser()->GetUserCurrent()->getId() . '/' . F::RandomStr(16);
mkdir(Config::Get('path.root.dir') . $sDirSave, 0777, true);
if (is_dir(Config::Get('path.root.dir') . $sDirSave)) {
$sFile = $sDirSave . '/' . F::RandomStr(10) . '.' . strtolower($aPathInfo['extension']);
$sFileFullPath = Config::Get('path.root.dir') . $sFile;
if (copy($sFileTmp, $sFileFullPath)) {
//удаляем старый файл
if ($oTopic->getFieldFile($oField->getFieldId())) {
$sOldFile = Config::Get('path.root.dir') . $oTopic->getFieldFile($oField->getFieldId())->getFileUrl();
F::File_Delete($sOldFile);
}
$aFileObj = array();
$aFileObj['file_hash'] = F::RandomStr(32);
$aFileObj['file_name'] = E::ModuleText()->Parser($_FILES['fields_' . $oField->getFieldId()]['name']);
$aFileObj['file_url'] = $sFile;
$aFileObj['file_size'] = $_FILES['fields_' . $oField->getFieldId()]['size'];
$aFileObj['file_extension'] = $aPathInfo['extension'];
$aFileObj['file_downloads'] = 0;
$sData = serialize($aFileObj);
F::File_Delete($sFileTmp);
}
}
} else {
$sTypes = implode(', ', $aFileExtensions);
E::ModuleMessage()->AddError(E::ModuleLang()->Get('topic_field_file_upload_err_type', array('types' => $sTypes)), null, true);
}
} else {
E::ModuleMessage()->AddError(E::ModuleLang()->Get('topic_field_file_upload_err_size', array('size' => $iMaxFileSize)), null, true);
}
F::File_Delete($_FILES['fields_' . $oField->getFieldId()]['tmp_name']);
}
}
// Поле с изображением
if ($oField->getFieldType() == 'single-image-uploader') {
$sTargetType = $oField->getFieldType() . '-' . $oField->getFieldId();
$iTargetId = $oTopic->getId();
// 1. Удалить значение target_tmp
// Нужно затереть временный ключ в ресурсах, что бы в дальнейшем картнка не
// воспринималась как временная.
if ($sTargetTmp = E::ModuleSession()->GetCookie(ModuleUploader::COOKIE_TARGET_TMP)) {
// 2. Удалить куку.
// Если прозошло сохранение вновь созданного топика, то нужно
// удалить куку временной картинки. Если же сохранялся уже существующий топик,
// то удаление куки ни на что влиять не будет.
E::ModuleSession()->DelCookie(ModuleUploader::COOKIE_TARGET_TMP);
// 3. Переместить фото
$sNewPath = E::ModuleUploader()->GetUserImageDir(E::UserId(), true, false);
$aMresourceRel = E::ModuleMresource()->GetMresourcesRelByTargetAndUser($sTargetType, 0, E::UserId());
if ($aMresourceRel) {
$oResource = array_shift($aMresourceRel);
$sOldPath = $oResource->GetFile();
$oStoredFile = E::ModuleUploader()->Store($sOldPath, $sNewPath);
/** @var ModuleMresource_EntityMresource $oResource */
$oResource = E::ModuleMresource()->GetMresourcesByUuid($oStoredFile->getUuid());
if ($oResource) {
$oResource->setUrl(E::ModuleMresource()->NormalizeUrl(E::ModuleUploader()->GetTargetUrl($sTargetType, $iTargetId)));
$oResource->setType($sTargetType);
$oResource->setUserId(E::UserId());
// 4. В свойство поля записать адрес картинки
$sData = $oResource->getMresourceId();
$oResource = array($oResource);
E::ModuleMresource()->UnlinkFile($sTargetType, 0, $oTopic->getUserId());
E::ModuleMresource()->AddTargetRel($oResource, $sTargetType, $iTargetId);
}
}
} else {
// Топик редактируется, просто обновим поле
$aMresourceRel = E::ModuleMresource()->GetMresourcesRelByTargetAndUser($sTargetType, $iTargetId, E::UserId());
if ($aMresourceRel) {
$oResource = array_shift($aMresourceRel);
$sData = $oResource->getMresourceId();
} else {
$sData = false;
// $this->DeleteField($oField);
}
}
}
E::ModuleHook()->Run('content_field_proccess', array('sData' => &$sData, 'oField' => $oField, 'oTopic' => $oTopic, 'aValues' => $aValues, 'sType' => &$sType));
//Добавляем поле к топику.
if ($sData) {
/** @var ModuleTopic_EntityContentValues $oValue */
$oValue = E::GetEntity('Topic_ContentValues');
$oValue->setTargetId($oTopic->getId());
$oValue->setTargetType('topic');
$oValue->setFieldId($oField->getFieldId());
$oValue->setFieldType($oField->getFieldType());
$oValue->setValue($sData);
$oValue->setValueSource(in_array($oField->getFieldType(), array('file', 'single-image-uploader')) ? $sData : $_REQUEST['fields'][$oField->getFieldId()]);
$this->AddTopicValue($oValue);
}
}
}
}
}
return true;
}
示例12: CreateRssChannel
/**
* Creates RSS channel for the blog (without items)
*
* @return ModuleRss_EntityRssChannel
*/
public function CreateRssChannel()
{
$aRssChannelData = array('title' => C::Get('view.name') . '/' . $this->getTitle(), 'description' => $this->getDescription(), 'link' => $this->getLink(), 'language' => C::Get('lang.current'), 'managing_editor' => $this->getOwner() ? $this->getOwner()->getMail() : '', 'web_master' => C::Get('general.rss_editor_mail'), 'generator' => 'Alto CMS v.' . ALTO_VERSION);
$oRssChannel = E::GetEntity('ModuleRss_EntityRssChannel', $aRssChannelData);
return $oRssChannel;
}
示例13: AjaxBlogJoin
/**
* Подключение/отключение к блогу
*
*/
protected function AjaxBlogJoin()
{
// Устанавливаем формат Ajax ответа
E::ModuleViewer()->SetResponseAjax('json');
// Пользователь авторизован?
if (!$this->oUserCurrent) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('need_authorization'), E::ModuleLang()->Get('error'));
return;
}
// Блог существует?
$nBlogId = intval(F::GetRequestStr('idBlog', null, 'post'));
if (!$nBlogId || !($oBlog = E::ModuleBlog()->GetBlogById($nBlogId))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'), E::ModuleLang()->Get('error'));
return;
}
$this->oCurrentBlog = $oBlog;
// Type of the blog
$oBlogType = $oBlog->getBlogType();
// Current status of user in the blog
/** @var ModuleBlog_EntityBlogUser $oBlogUser */
$oBlogUser = E::ModuleBlog()->GetBlogUserByBlogIdAndUserId($oBlog->getId(), $this->oUserCurrent->getId());
if (!$oBlogUser || $oBlogUser->getUserRole() < ModuleBlog::BLOG_USER_ROLE_GUEST && (!$oBlogType || $oBlogType->IsPrivate())) {
// * Проверяем тип блога на возможность свободного вступления или вступления по запросу
if ($oBlogType && !$oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE) && !$oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_REQUEST)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('blog_join_error_invite'), E::ModuleLang()->Get('error'));
return;
}
if ($oBlog->getOwnerId() != $this->oUserCurrent->getId()) {
// Subscribe user to the blog
if ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE)) {
$bResult = false;
if ($oBlogUser) {
$oBlogUser->setUserRole(ModuleBlog::BLOG_USER_ROLE_USER);
$bResult = E::ModuleBlog()->UpdateRelationBlogUser($oBlogUser);
} elseif ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_FREE)) {
// User can free subscribe to blog
/** @var ModuleBlog_EntityBlogUser $oBlogUserNew */
$oBlogUserNew = E::GetEntity('Blog_BlogUser');
$oBlogUserNew->setBlogId($oBlog->getId());
$oBlogUserNew->setUserId($this->oUserCurrent->getId());
$oBlogUserNew->setUserRole(ModuleBlog::BLOG_USER_ROLE_USER);
$bResult = E::ModuleBlog()->AddRelationBlogUser($oBlogUserNew);
}
if ($bResult) {
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_ok'), E::ModuleLang()->Get('attention'));
E::ModuleViewer()->AssignAjax('bState', true);
// Увеличиваем число читателей блога
$oBlog->setCountUser($oBlog->getCountUser() + 1);
E::ModuleBlog()->UpdateBlog($oBlog);
E::ModuleViewer()->AssignAjax('iCountUser', $oBlog->getCountUser());
// Добавляем событие в ленту
E::ModuleStream()->Write($this->oUserCurrent->getId(), 'join_blog', $oBlog->getId());
// Добавляем подписку на этот блог в ленту пользователя
E::ModuleUserfeed()->SubscribeUser($this->oUserCurrent->getId(), ModuleUserfeed::SUBSCRIBE_TYPE_BLOG, $oBlog->getId());
} else {
$sMsg = $oBlogType->IsPrivate() ? E::ModuleLang()->Get('blog_join_error_invite') : E::ModuleLang()->Get('system_error');
E::ModuleMessage()->AddErrorSingle($sMsg, E::ModuleLang()->Get('error'));
return;
}
}
// Подписываем по запросу
if ($oBlogType->GetMembership(ModuleBlog::BLOG_USER_JOIN_REQUEST)) {
// Подписка уже была запрошена, но результатов пока нет
if ($oBlogUser && $oBlogUser->getUserRole() == ModuleBlog::BLOG_USER_ROLE_WISHES) {
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('blog_join_request_already'), E::ModuleLang()->Get('attention'));
E::ModuleViewer()->AssignAjax('bState', true);
return;
}
if ($oBlogUser) {
if (!in_array($oBlogUser->getUserRole(), array(ModuleBlog::BLOG_USER_ROLE_REJECT, ModuleBlog::BLOG_USER_ROLE_WISHES))) {
$sMessage = E::ModuleLang()->Get('blog_user_status_is') . ' "' . E::ModuleBlog()->GetBlogUserRoleName($oBlogUser->getUserRole()) . '"';
E::ModuleMessage()->AddNoticeSingle($sMessage, E::ModuleLang()->Get('attention'));
E::ModuleViewer()->AssignAjax('bState', true);
return;
} else {
$oBlogUser->setUserRole(ModuleBlog::BLOG_USER_ROLE_WISHES);
$bResult = E::ModuleBlog()->UpdateRelationBlogUser($oBlogUser);
}
} else {
// Подписки ещё не было - оформим ее
/** @var ModuleBlog_EntityBlogUser $oBlogUserNew */
$oBlogUserNew = E::GetEntity('Blog_BlogUser');
$oBlogUserNew->setBlogId($oBlog->getId());
$oBlogUserNew->setUserId($this->oUserCurrent->getId());
$oBlogUserNew->setUserRole(ModuleBlog::BLOG_USER_ROLE_WISHES);
$bResult = E::ModuleBlog()->AddRelationBlogUser($oBlogUserNew);
}
if ($bResult) {
// Отправим сообщение модераторам и администраторам блога о том, что
// этот пользоватлеь захотел присоединиться к нашему блогу
$aBlogUsersResult = E::ModuleBlog()->GetBlogUsersByBlogId($oBlog->getId(), array(ModuleBlog::BLOG_USER_ROLE_MODERATOR, ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR), null);
if ($aBlogUsersResult) {
/** @var ModuleUser_EntityUser[] $aBlogModerators */
$aBlogModerators = array();
/** @var ModuleBlog_EntityBlogUser $oCurrentBlogUser */
foreach ($aBlogUsersResult['collection'] as $oCurrentBlogUser) {
//.........这里部分代码省略.........
示例14: EventPreviewTopic
/**
* Предпросмотр топика
*
*/
protected function EventPreviewTopic()
{
/**
* Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
* Это позволяет избежать ошибок в некоторых браузерах, например, Opera
*/
E::ModuleViewer()->SetResponseAjax(F::AjaxRequest(true) ? 'json' : 'jsonIframe', false);
// * Пользователь авторизован?
if (!$this->oUserCurrent) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('need_authorization'), E::ModuleLang()->Get('error'));
return;
}
// * Допустимый тип топика?
if (!E::ModuleTopic()->IsAllowTopicType($sType = F::GetRequestStr('topic_type'))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('topic_create_type_error'), E::ModuleLang()->Get('error'));
return;
}
// * Создаем объект топика для валидации данных
$oTopic = E::GetEntity('ModuleTopic_EntityTopic');
$oTopic->_setValidateScenario($sType);
// зависит от типа топика
$oTopic->setTitle(strip_tags(F::GetRequestStr('topic_title')));
$oTopic->setTextSource(F::GetRequestStr('topic_text'));
$aTags = F::GetRequestStr('topic_field_tags');
if (!$aTags) {
// LS compatibility
$aTags = F::GetRequestStr('topic_tags');
}
$oTopic->setTags($aTags);
$oTopic->setDateAdd(F::Now());
$oTopic->setUserId($this->oUserCurrent->getId());
$oTopic->setType($sType);
$oTopic->setBlogId(F::GetRequestStr('blog_id'));
$oTopic->setPublish(1);
// * Валидируем необходимые поля топика
$oTopic->_Validate(array('topic_title', 'topic_text', 'topic_tags', 'topic_type'), false);
if ($oTopic->_hasValidateErrors()) {
E::ModuleMessage()->AddErrorSingle($oTopic->_getValidateError());
return false;
}
// * Формируем текст топика
list($sTextShort, $sTextNew, $sTextCut) = E::ModuleText()->Cut($oTopic->getTextSource());
$oTopic->setCutText($sTextCut);
$oTopic->setText(E::ModuleText()->Parse($sTextNew));
$oTopic->setTextShort(E::ModuleText()->Parse($sTextShort));
// * Готовим дополнительные поля, кроме файлов
if ($oType = $oTopic->getContentType()) {
//получаем поля для данного типа
if ($aFields = $oType->getFields()) {
$aValues = array();
// вставляем поля, если они прописаны для топика
foreach ($aFields as $oField) {
if (isset($_REQUEST['fields'][$oField->getFieldId()])) {
$sText = null;
//текстовые поля
if (in_array($oField->getFieldType(), array('input', 'textarea', 'select'))) {
$sText = E::ModuleText()->Parse($_REQUEST['fields'][$oField->getFieldId()]);
}
//поле ссылки
if ($oField->getFieldType() == 'link') {
$sText = $_REQUEST['fields'][$oField->getFieldId()];
}
//поле даты
if ($oField->getFieldType() == 'date') {
if (isset($_REQUEST['fields'][$oField->getFieldId()])) {
if (F::CheckVal($_REQUEST['fields'][$oField->getFieldId()], 'text', 6, 10) && substr_count($_REQUEST['fields'][$oField->getFieldId()], '.') == 2) {
list($d, $m, $y) = explode('.', $_REQUEST['fields'][$oField->getFieldId()]);
if (@checkdate($m, $d, $y)) {
$sText = $_REQUEST['fields'][$oField->getFieldId()];
}
}
}
}
if ($sText) {
$oValue = E::GetEntity('Topic_ContentValues');
$oValue->setFieldId($oField->getFieldId());
$oValue->setFieldType($oField->getFieldType());
$oValue->setValue($sText);
$oValue->setValueSource($_REQUEST['fields'][$oField->getFieldId()]);
$aValues[$oField->getFieldId()] = $oValue;
}
}
}
$oTopic->setTopicValues($aValues);
}
}
// * Рендерим шаблон для предпросмотра топика
$oViewer = E::ModuleViewer()->GetLocalViewer();
$oViewer->Assign('oTopic', $oTopic);
$oViewer->Assign('bPreview', true);
// Alto-style template
$sTemplate = 'topics/topic.show.tpl';
if (!E::ModuleViewer()->TemplateExists($sTemplate)) {
// LS-style template
$sTemplate = "topic_preview_{$oTopic->getType()}.tpl";
if (!E::ModuleViewer()->TemplateExists($sTemplate)) {
//.........这里部分代码省略.........
示例15: Send
/**
* Универсальный метод отправки уведомлений на email
*
* @param ModuleUser_EntityUser|string $xUserTo Кому отправляем (пользователь или email)
* @param string $sTemplate Шаблон для отправки
* @param string $sSubject Тема письма
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
* @param string|null $sPluginName Плагин из которого происходит отправка
* @param bool $bForceSend Отправлять сразу, даже при опции module.notify.delayed = true
*
* @return bool
*/
public function Send($xUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null, $bForceSend = false)
{
if ($xUserTo instanceof ModuleUser_EntityUser) {
$sMail = $xUserTo->getMail();
$sName = $xUserTo->getLogin();
} else {
$sMail = $xUserTo;
$sName = '';
}
/**
* Передаём в шаблон переменные
*/
foreach ($aAssign as $sVarName => $sValue) {
$this->oViewerLocal->Assign($sVarName, $sValue);
}
/**
* Формируем шаблон
*/
$sTemplate = $this->sPrefix . $sTemplate;
$sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
/**
* Если в конфигураторе указан отложенный метод отправки,
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if (Config::Get('module.notify.delayed') && !$bForceSend) {
$oNotifyTask = E::GetEntity('Notify_Task', array('user_mail' => $sMail, 'user_login' => $sName, 'notify_text' => $sBody, 'notify_subject' => $sSubject, 'date_created' => F::Now(), 'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL));
if (Config::Get('module.notify.insert_single')) {
$this->aTask[] = $oNotifyTask;
$bResult = true;
} else {
$bResult = $this->oMapper->AddTask($oNotifyTask);
}
} else {
// * Отправляем e-mail
E::ModuleMail()->SetAdress($sMail, $sName);
E::ModuleMail()->SetSubject($sSubject);
E::ModuleMail()->SetBody($sBody);
E::ModuleMail()->SetHTML();
$bResult = E::ModuleMail()->Send();
}
return $bResult;
}