当前位置: 首页>>代码示例>>PHP>>正文


PHP Action::EventNotFound方法代码示例

本文整理汇总了PHP中Action::EventNotFound方法的典型用法代码示例。如果您正苦于以下问题:PHP Action::EventNotFound方法的具体用法?PHP Action::EventNotFound怎么用?PHP Action::EventNotFound使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Action的用法示例。


在下文中一共展示了Action::EventNotFound方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: EventShowComment

 /**
  * Обрабатывает ссылку на конкретный комментарий, определят к какому топику он относится и перенаправляет на него
  * Актуально при использовании постраничности комментариев
  */
 protected function EventShowComment()
 {
     $iCommentId = $this->sCurrentEvent;
     /**
      * Проверяем к чему относится комментарий
      */
     if (!($oComment = $this->Comment_GetCommentById($iCommentId))) {
         return parent::EventNotFound();
     }
     if ($oComment->getTargetType() != 'topic' or !($oTopic = $oComment->getTarget())) {
         return parent::EventNotFound();
     }
     /**
      * Определяем необходимую страницу для отображения комментария
      */
     if (!Config::Get('module.comment.use_nested') or !Config::Get('module.comment.nested_per_page')) {
         Router::Location($oTopic->getUrl() . '#comment' . $oComment->getId());
     }
     $iPage = $this->Comment_GetPageCommentByTargetId($oComment->getTargetId(), $oComment->getTargetType(), $oComment);
     if ($iPage == 1) {
         Router::Location($oTopic->getUrl() . '#comment' . $oComment->getId());
     } else {
         Router::Location($oTopic->getUrl() . "?cmtpage={$iPage}#comment" . $oComment->getId());
     }
     exit;
 }
开发者ID:pinguo-liguo,项目名称:livestreet,代码行数:30,代码来源:ActionComments.class.php

示例2: Init

 public function Init()
 {
     if (!$this->User_IsAuthorization() or !($oUserCurrent = $this->User_GetUserCurrent()) or !$oUserCurrent->isAdministrator()) {
         return parent::EventNotFound();
     }
     $this->oUserCurrent = $oUserCurrent;
 }
开发者ID:lifecom,项目名称:test,代码行数:7,代码来源:ActionAdmin.class.php

示例3: Init

 /**
  * Инициализация
  *
  */
 public function Init()
 {
     // * Доступ только у авторизованных пользователей
     $this->oUserCurrent = E::ModuleUser()->GetUserCurrent();
     if (!$this->oUserCurrent) {
         parent::EventNotFound();
     }
     $this->SetDefaultEvent('index');
     E::ModuleViewer()->Assign('sMenuItemSelect', 'feed');
 }
开发者ID:AntiqS,项目名称:altocms,代码行数:14,代码来源:ActionUserfeed.class.php

示例4: EventDownloadFile

 public function EventDownloadFile()
 {
     $this->SetTemplate(false);
     $sTopicId = $this->GetParam(0);
     $sFieldId = $this->GetParam(1);
     E::ModuleSecurity()->ValidateSendForm();
     if (!($oTopic = E::ModuleTopic()->GetTopicById($sTopicId))) {
         return parent::EventNotFound();
     }
     if (!($this->oType = E::ModuleTopic()->GetContentType($oTopic->getType()))) {
         return parent::EventNotFound();
     }
     if (!($oField = E::ModuleTopic()->GetContentFieldById($sFieldId))) {
         return parent::EventNotFound();
     }
     if ($oField->getContentId() != $this->oType->getContentId()) {
         return parent::EventNotFound();
     }
     //получаем объект файла
     $oFile = $oTopic->getFieldFile($oField->getFieldId());
     //получаем объект поля топика, содержащий данные о файле
     $oValue = $oTopic->getField($oField->getFieldId());
     if ($oFile && $oValue) {
         if (preg_match("/^(http:\\/\\/)/i", $oFile->getFileUrl())) {
             $sFullPath = $oFile->getFileUrl();
             R::Location($sFullPath);
         } else {
             $sFullPath = Config::Get('path.root.dir') . $oFile->getFileUrl();
         }
         $sFilename = $oFile->getFileName();
         /*
          * Обновляем данные
          */
         $aFileObj = array();
         $aFileObj['file_name'] = $oFile->getFileName();
         $aFileObj['file_url'] = $oFile->getFileUrl();
         $aFileObj['file_size'] = $oFile->getFileSize();
         $aFileObj['file_extension'] = $oFile->getFileExtension();
         $aFileObj['file_downloads'] = $oFile->getFileDownloads() + 1;
         $sText = serialize($aFileObj);
         $oValue->setValue($sText);
         $oValue->setValueSource($sText);
         //сохраняем
         E::ModuleTopic()->UpdateContentFieldValue($oValue);
         /*
          * Отдаем файл
          */
         header('Content-type: ' . $oFile->getFileExtension());
         header('Content-Disposition: attachment; filename="' . $sFilename . '"');
         F::File_PrintChunked($sFullPath);
     } else {
         E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('content_download_file_error'));
         return R::Action('error');
     }
 }
开发者ID:AntiqS,项目名称:altocms,代码行数:55,代码来源:ActionDownload.class.php

示例5: Init

 /**
  * Инициализация
  *
  * @return string
  */
 public function Init()
 {
     /**
      * Если нет прав доступа - перекидываем на 404 страницу
      */
     if (!$this->User_IsAuthorization() or !($oUserCurrent = $this->User_GetUserCurrent()) or !$oUserCurrent->isAdministrator()) {
         return parent::EventNotFound();
     }
     $this->SetDefaultEvent('index');
     $this->oUserCurrent = $oUserCurrent;
 }
开发者ID:cbrspc,项目名称:LIVESTREET-1-DISTRIB,代码行数:16,代码来源:ActionAdmin.class.php

示例6: Init

 /**
  * Инициализация
  *
  */
 public function Init()
 {
     /**
      * Доступ только у авторизованных пользователей
      */
     $this->oUserCurrent = $this->User_getUserCurrent();
     if (!$this->oUserCurrent) {
         parent::EventNotFound();
     }
     $this->Viewer_Assign('sMenuItemSelect', 'feed');
 }
开发者ID:Casper-SC,项目名称:livestreet,代码行数:15,代码来源:ActionUserfeed.class.php

示例7: Init

 /**
  * Инициализация
  *
  */
 public function Init()
 {
     /**
      * Лента доступна только для авторизованных
      */
     $this->oUserCurrent = $this->User_getUserCurrent();
     if (!$this->oUserCurrent) {
         parent::EventNotFound();
     }
     $this->SetDefaultEvent('index');
     $this->Viewer_Assign('aStreamEventTypes', $this->Stream_getEventTypes());
     $this->Viewer_Assign('sMenuItemSelect', 'stream');
     /**
      * Загружаем в шаблон JS текстовки
      */
     $this->Lang_AddLangJs(array('stream_subscribes_already_subscribed', 'error'));
 }
开发者ID:lifecom,项目名称:Huddlebuddle,代码行数:21,代码来源:ActionStream.class.php

示例8: EventReceptiondeskCategoryIndex

 protected function EventReceptiondeskCategoryIndex()
 {
     if (!($oCategory = $this->PluginReceptiondesk_Category_GetCategoryByUrl($this->GetParamEventMatch(0, 0)))) {
         return parent::EventNotFound();
     }
     $iPage = $this->GetParamEventMatch(1, 2) ? $this->GetParamEventMatch(1, 2) : 1;
     if ($iPage == 1) {
         $this->Viewer_SetHtmlCanonical(Router::GetPath('receptiondesk'));
     }
     $aResult = $this->PluginReceptiondesk_Question_GetQuestionList($iPage, Config::Get('plugin.receptiondesk.receptiondesk_question_per_page'), 1, $oCategory->getId());
     $aPaging = $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('plugin.receptiondesk.receptiondesk_question_per_page'), Config::Get('pagination.pages.count'), Router::GetPath('receptiondesk') . $oCategory->getUrl() . '/');
     $this->Viewer_Assign('oCurrentCategory', $oCategory);
     $this->Viewer_Assign('aQuestionList', $aResult['collection']);
     $this->Viewer_Assign('aPaging', $aPaging);
     if (Config::Get('plugin.receptiondesk.receptiondesk_create_popup')) {
         $this->Viewer_Assign('bPopup', true);
     }
     $this->SetTemplateAction('index');
 }
开发者ID:olegverstka,项目名称:kprf.dev,代码行数:19,代码来源:ActionReceptiondesk.class.php

示例9: EventShowTopics

 /**
  * Выводит список топиков
  *
  */
 protected function EventShowTopics()
 {
     /**
      * Меню
      */
     $this->sMenuSubItemSelect = $this->sCurrentEvent;
     /*
      * Получаем тип контента
      */
     if (!($this->oType = E::ModuleTopic()->GetContentType($this->sCurrentEvent))) {
         return parent::EventNotFound();
     }
     /**
      * Устанавливаем title страницы
      */
     E::ModuleViewer()->AddHtmlTitle($this->oType->getContentTitleDecl());
     /**
      * Передан ли номер страницы
      */
     $iPage = $this->GetParamEventMatch(0, 2) ? $this->GetParamEventMatch(0, 2) : 1;
     /**
      * Получаем список топиков
      */
     $aResult = E::ModuleTopic()->GetTopicsByType($iPage, Config::Get('module.topic.per_page'), $this->oType->getContentUrl());
     $aTopics = $aResult['collection'];
     /**
      * Формируем постраничность
      */
     $aPaging = E::ModuleViewer()->MakePaging($aResult['count'], $iPage, Config::Get('module.topic.per_page'), Config::Get('pagination.pages.count'), R::GetPath('filter') . $this->sCurrentEvent);
     /**
      * Загружаем переменные в шаблон
      */
     E::ModuleViewer()->Assign('aPaging', $aPaging);
     E::ModuleViewer()->Assign('aTopics', $aTopics);
     $this->SetTemplateAction('index');
 }
开发者ID:AntiqS,项目名称:altocms,代码行数:40,代码来源:ActionFilter.class.php

示例10: EventWhois

 /**
  * Показывает инфу профиля
  *
  */
 protected function EventWhois()
 {
     /**
      * Получаем логин из УРЛа
      */
     $sUserLogin = $this->sCurrentEvent;
     /**
      * Проверяем есть ли такой юзер
      */
     if (!($this->oUserProfile = $this->User_GetUserByLogin($sUserLogin))) {
         return parent::EventNotFound();
     }
     /**
      * Получаем список друзей
      */
     $aUsersFriend = $this->User_GetUsersFriend($this->oUserProfile->getId());
     if (Config::Get('general.reg.invite')) {
         /**
          * Получаем список тех кого пригласил юзер
          */
         $aUsersInvite = $this->User_GetUsersInvite($this->oUserProfile->getId());
         $this->Viewer_Assign('aUsersInvite', $aUsersInvite);
         /**
          * Получаем того юзера, кто пригласил текущего
          */
         $oUserInviteFrom = $this->User_GetUserInviteFrom($this->oUserProfile->getId());
         $this->Viewer_Assign('oUserInviteFrom', $oUserInviteFrom);
     }
     /**
      * Получаем список юзеров блога
      */
     $aBlogUsers = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_USER);
     $aBlogModerators = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_MODERATOR);
     $aBlogAdministrators = $this->Blog_GetBlogUsersByUserId($this->oUserProfile->getId(), ModuleBlog::BLOG_USER_ROLE_ADMINISTRATOR);
     /**
      * Получаем список блогов которые создал юзер
      */
     $aBlogsOwner = $this->Blog_GetBlogsByOwnerId($this->oUserProfile->getId());
     /**
      * Вызов хуков
      */
     $this->Hook_Run('profile_whois_show', array("oUserProfile" => $this->oUserProfile));
     /**
      * Загружаем переменные в шаблон
      */
     $this->Viewer_Assign('aBlogUsers', $aBlogUsers);
     $this->Viewer_Assign('aBlogModerators', $aBlogModerators);
     $this->Viewer_Assign('aBlogAdministrators', $aBlogAdministrators);
     $this->Viewer_Assign('aBlogsOwner', $aBlogsOwner);
     $this->Viewer_Assign('aUsersFriend', $aUsersFriend);
     $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_profile') . ' ' . $this->oUserProfile->getLogin());
     $this->Viewer_AddHtmlTitle($this->Lang_Get('user_menu_profile_whois'));
     /**
      * Устанавливаем шаблон вывода
      */
     $this->SetTemplateAction('whois');
 }
开发者ID:lifecom,项目名称:test,代码行数:61,代码来源:ActionProfile.class.php

示例11: EventRead

 /**
  * Чтение письма
  */
 protected function EventRead()
 {
     $this->sMenuSubItemSelect = 'read';
     // * Получаем номер сообщения из УРЛ и проверяем существует ли оно
     $sTalkId = $this->GetParam(0);
     if (!($oTalk = E::ModuleTalk()->GetTalkById($sTalkId))) {
         return parent::EventNotFound();
     }
     // * Пользователь есть в переписке?
     if (!($oTalkUser = E::ModuleTalk()->GetTalkUser($oTalk->getId(), $this->oUserCurrent->getId()))) {
         return parent::EventNotFound();
     }
     // * Пользователь активен в переписке?
     if ($oTalkUser->getUserActive() != ModuleTalk::TALK_USER_ACTIVE) {
         return parent::EventNotFound();
     }
     // * Обрабатываем добавление коммента
     if (isset($_REQUEST['submit_comment'])) {
         $this->SubmitComment();
     }
     // * Достаём комменты к сообщению
     $aReturn = E::ModuleComment()->GetCommentsByTargetId($oTalk, 'talk');
     $iMaxIdComment = $aReturn['iMaxIdComment'];
     $aComments = $aReturn['comments'];
     // * Помечаем дату последнего просмотра
     $oTalkUser->setDateLast(F::Now());
     $oTalkUser->setCommentIdLast($iMaxIdComment);
     $oTalkUser->setCommentCountNew(0);
     E::ModuleTalk()->UpdateTalkUser($oTalkUser);
     E::ModuleViewer()->AddHtmlTitle($oTalk->getTitle());
     E::ModuleViewer()->Assign('oTalk', $oTalk);
     E::ModuleViewer()->Assign('aComments', $aComments);
     E::ModuleViewer()->Assign('iMaxIdComment', $iMaxIdComment);
     /*
      * Подсчитываем нужно ли отображать комментарии.
      * Комментарии не отображаются, если у вестки только один читатель
      * и ранее созданных комментариев нет.
      */
     if (count($aComments) == 0) {
         $iActiveSpeakers = 0;
         foreach ((array) $oTalk->getTalkUsers() as $oTalkUser) {
             if ($oTalkUser->getUserId() != $this->oUserCurrent->getId() && $oTalkUser->getUserActive() == ModuleTalk::TALK_USER_ACTIVE) {
                 $iActiveSpeakers++;
                 break;
             }
         }
         if ($iActiveSpeakers == 0) {
             E::ModuleViewer()->Assign('bNoComments', true);
         }
     }
     E::ModuleViewer()->Assign('bAllowToComment', true);
     $this->SetTemplateAction('message');
 }
开发者ID:ZeoNish,项目名称:altocms,代码行数:56,代码来源:ActionTalk.class.php

示例12: EventCity

 /**
  * Показывает юзеров по городу
  *
  */
 protected function EventCity()
 {
     if (!($oCity = $this->User_GetCityByName(urldecode($this->getParam(0))))) {
         return parent::EventNotFound();
     }
     /**
      * Получаем статистику
      */
     $this->GetStats();
     /**
      * Передан ли номер страницы
      */
     $iPage = $this->GetParamEventMatch(1, 2) ? $this->GetParamEventMatch(1, 2) : 1;
     /**
      * Получаем список юзеров
      */
     $aResult = $this->User_GetUsersByCity($oCity->getName(), $iPage, Config::Get('module.user.per_page'));
     $aUsersCity = $aResult['collection'];
     /**
      * Формируем постраничность
      */
     $aPaging = $this->Viewer_MakePaging($aResult['count'], $iPage, Config::Get('module.user.per_page'), 4, Router::GetPath('people') . $this->sCurrentEvent . '/' . $oCity->getName());
     /**
      * Загружаем переменные в шаблон
      */
     if ($aUsersCity) {
         $this->Viewer_Assign('aPaging', $aPaging);
     }
     $this->Viewer_Assign('oCity', $oCity);
     $this->Viewer_Assign('aUsersCity', $aUsersCity);
 }
开发者ID:lifecom,项目名称:Huddlebuddle,代码行数:35,代码来源:ActionPeople.class.php

示例13: EventInvite

 /**
  * Показ и обработка формы приглаешний
  *
  */
 protected function EventInvite()
 {
     /**
      * Только при активном режиме инвайтов
      */
     if (!Config::Get('general.reg.invite')) {
         return parent::EventNotFound();
     }
     $this->sMenuItemSelect = 'invite';
     $this->sMenuSubItemSelect = '';
     E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('settings_menu_invite'));
     /**
      * Если отправили форму
      */
     if (isPost('submit_invite')) {
         E::ModuleSecurity()->ValidateSendForm();
         $bError = false;
         /**
          * Есть права на отправку инфайтов?
          */
         if (!E::ModuleACL()->CanSendInvite($this->oUserCurrent) && !$this->oUserCurrent->isAdministrator()) {
             E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_invite_available_no'), E::ModuleLang()->Get('error'));
             $bError = true;
         }
         /**
          * Емайл корректен?
          */
         if (!F::CheckVal(F::GetRequestStr('invite_mail'), 'mail')) {
             E::ModuleMessage()->AddError(E::ModuleLang()->Get('settings_invite_mail_error'), E::ModuleLang()->Get('error'));
             $bError = true;
         }
         /**
          * Запускаем выполнение хуков
          */
         E::ModuleHook()->Run('settings_invate_send_before', array('oUser' => $this->oUserCurrent));
         /**
          * Если нет ошибок, то отправляем инвайт
          */
         if (!$bError) {
             $oInvite = E::ModuleUser()->GenerateInvite($this->oUserCurrent);
             E::ModuleNotify()->SendInvite($this->oUserCurrent, F::GetRequestStr('invite_mail'), $oInvite);
             E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('settings_invite_submit_ok'));
             E::ModuleHook()->Run('settings_invate_send_after', array('oUser' => $this->oUserCurrent));
         }
     }
     E::ModuleViewer()->Assign('iCountInviteAvailable', E::ModuleUser()->GetCountInviteAvailable($this->oUserCurrent));
     E::ModuleViewer()->Assign('iCountInviteUsed', E::ModuleUser()->GetCountInviteUsed($this->oUserCurrent->getId()));
 }
开发者ID:ZeoNish,项目名称:altocms,代码行数:52,代码来源:ActionSettings.class.php

示例14: EventEdit

 /**
  * Редактирование ссылки
  *
  * @return unknown
  */
 protected function EventEdit()
 {
     /**
      * Меню
      */
     $this->sMenuSubItemSelect = '';
     $this->sMenuItemSelect = 'question';
     /**
      * Получаем номер топика из УРЛ и проверяем существует ли он
      */
     $sTopicId = $this->GetParam(0);
     if (!($oTopic = $this->Topic_GetTopicById($sTopicId))) {
         return parent::EventNotFound();
     }
     /**
      * Проверяем тип топика
      */
     if ($oTopic->getType() != 'question') {
         return parent::EventNotFound();
     }
     /**
      * Если права на редактирование
      */
     if (!$this->ACL_IsAllowEditTopic($oTopic, $this->oUserCurrent)) {
         return parent::EventNotFound();
     }
     /**
      * Вызов хуков
      */
     $this->Hook_Run('topic_edit_show', array('oTopic' => $oTopic));
     /**
      * Загружаем переменные в шаблон
      */
     $this->Viewer_Assign('aBlogsAllow', $this->Blog_GetBlogsAllowByUser($this->oUserCurrent));
     $this->Viewer_Assign('bEditDisabled', $oTopic->getQuestionCountVote() == 0 ? false : true);
     $this->Viewer_AddHtmlTitle($this->Lang_Get('topic_question_title_edit'));
     /**
      * Устанавливаем шаблон вывода
      */
     $this->SetTemplateAction('add');
     /**
      * Проверяем отправлена ли форма с данными(хотяб одна кнопка)
      */
     if (isset($_REQUEST['submit_topic_publish']) or isset($_REQUEST['submit_topic_save'])) {
         /**
          * Обрабатываем отправку формы
          */
         return $this->SubmitEdit($oTopic);
     } else {
         /**
          * Заполняем поля формы для редактирования
          * Только перед отправкой формы!
          */
         $_REQUEST['topic_title'] = $oTopic->getTitle();
         $_REQUEST['topic_text'] = $oTopic->getTextSource();
         $_REQUEST['topic_tags'] = $oTopic->getTags();
         $_REQUEST['blog_id'] = $oTopic->getBlogId();
         $_REQUEST['topic_id'] = $oTopic->getId();
         $_REQUEST['topic_publish_index'] = $oTopic->getPublishIndex();
         $_REQUEST['topic_forbid_comment'] = $oTopic->getForbidComment();
         $_REQUEST['answer'] = array();
         $aAnswers = $oTopic->getQuestionAnswers();
         foreach ($aAnswers as $aAnswer) {
             $_REQUEST['answer'][] = $aAnswer['text'];
         }
     }
 }
开发者ID:narush,项目名称:livestreet,代码行数:72,代码来源:ActionQuestion.class.php

示例15: EventAdd

 /**
  * Добавление топика
  *
  */
 protected function EventAdd()
 {
     $sTopicType = $this->GetParam(0);
     $iBlogId = (int) getRequest('blog_id');
     if (!($oTopicType = $this->Topic_GetTopicType($sTopicType))) {
         return parent::EventNotFound();
     }
     /**
      * Проверяем права на создание топика
      */
     if (!$this->ACL_CanAddTopic($this->oUserCurrent, $oTopicType)) {
         $this->Message_AddErrorSingle($this->Rbac_GetMsgLast());
         return Router::Action('error');
     }
     $this->sMenuSubItemSelect = $sTopicType;
     /**
      * Получаем доступные блоги по типам
      */
     $aBlogs = array();
     $aBlogs['open'] = $this->Blog_GetBlogsByType('open');
     /**
      * Убираем из списка блоги в которые не доступен постинг
      */
     foreach ($aBlogs['open'] as $k => $oBlogOpen) {
         if (!$this->ACL_IsAllowBlog($oBlogOpen, $this->oUserCurrent)) {
             unset($aBlogs['open'][$k]);
         }
     }
     if ($this->oUserCurrent->isAdministrator()) {
         $aBlogs['close'] = $this->Blog_GetBlogsByType('close');
     } else {
         $aBlogs['close'] = $this->Blog_GetBlogsByTypeAndUserId('close', $this->oUserCurrent->getId());
     }
     /**
      * Вызов хуков
      */
     $this->Hook_Run('topic_add_show', array('aBlogs' => &$aBlogs));
     /**
      * Проверяем на отсутствие блогов
      */
     $bSkipBlogs = true;
     foreach ($aBlogs as $aBlogsType) {
         if ($aBlogsType) {
             $bSkipBlogs = false;
         }
     }
     /**
      * Загружаем переменные в шаблон
      */
     $this->Viewer_Assign('topicType', $oTopicType);
     $this->Viewer_Assign('blogsAllow', $aBlogs);
     $this->Viewer_Assign('skipBlogs', $bSkipBlogs);
     $this->Viewer_Assign('blogId', $iBlogId);
     $this->Viewer_AddHtmlTitle($this->Lang_Get('topic.add.title.add'));
     $this->SetTemplateAction('add');
 }
开发者ID:pinguo-liguo,项目名称:livestreet,代码行数:60,代码来源:ActionContent.class.php


注:本文中的Action::EventNotFound方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。