/**
  * Универсальный метод отправки уведомлений на email
  *
  * @param ModuleUser_EntityUser|string $oUserTo Кому отправляем (пользователь или email)
  * @param string $sTemplate Шаблон для отправки
  * @param string $sSubject Тема письма
  * @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
  * @param string|null $sPluginName Плагин из которого происходит отправка
  * @param bool $bForceSend Отправлять сразу, даже при опции module.notify.delayed = true
  */
 public function Send($oUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null, $bForceSend = false)
 {
     if ($oUserTo instanceof ModuleUser_EntityUser) {
         $sMail = $oUserTo->getMail();
         $sName = $oUserTo->getLogin();
     } else {
         $sMail = $oUserTo;
         $sName = '';
     }
     /**
      * Передаём в шаблон переменные
      */
     foreach ($aAssign as $k => $v) {
         $this->oViewerLocal->Assign($k, $v);
     }
     /**
      * Формируем шаблон
      */
     $sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
     /**
      * Если в конфигураторе указан отложенный метод отправки,
      * то добавляем задание в массив. В противном случае,
      * сразу отсылаем на email
      */
     $oNotifyTask = Engine::GetEntity('Notify_Task');
     $oNotifyTask->setUserMail($sMail);
     $oNotifyTask->setUserLogin($sName);
     $oNotifyTask->setNotifyText($sBody);
     $oNotifyTask->setNotifySubject($sSubject);
     $oNotifyTask->setDateCreated(date("Y-m-d H:i:s"));
     $oNotifyTask->setNotifyTaskStatus(self::NOTIFY_TASK_STATUS_NULL);
     if (Config::Get('module.notify.delayed') and !$bForceSend) {
         if (Config::Get('module.notify.insert_single')) {
             $this->aTask[] = $oNotifyTask;
         } else {
             $this->oMapper->AddTask($oNotifyTask);
         }
     } else {
         /**
          * Отправляем мыло
          */
         $this->SendTask($oNotifyTask);
     }
 }
Esempio n. 2
0
 /**
  * Универсальный метод отправки уведомлений на 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;
 }
Esempio n. 3
0
 /**
  * Универсальный метод отправки уведомлений на email
  *
  * @param ModuleUser_EntityUser|string $oUserTo Кому отправляем (пользователь или email)
  * @param string $sTemplate Шаблон для отправки
  * @param string $sSubject Тема письма
  * @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
  * @param string|null $sPluginName Плагин из которого происходит отправка
  */
 public function Send($oUserTo, $sTemplate, $sSubject, $aAssign = array(), $sPluginName = null)
 {
     if ($oUserTo instanceof ModuleUser_EntityUser) {
         $sMail = $oUserTo->getMail();
         $sName = $oUserTo->getLogin();
     } else {
         $sMail = $oUserTo;
         $sName = '';
     }
     /**
      * Передаём в шаблон переменные
      */
     foreach ($aAssign as $k => $v) {
         $this->oViewerLocal->Assign($k, $v);
     }
     /**
      * Формируем шаблон
      */
     $sBody = $this->oViewerLocal->Fetch($this->GetTemplatePath($sTemplate, $sPluginName));
     /**
      * Если в конфигураторе указан отложенный метод отправки,
      * то добавляем задание в массив. В противном случае,
      * сразу отсылаем на email
      */
     if (Config::Get('module.notify.delayed')) {
         $oNotifyTask = Engine::GetEntity('Notify_Task', array('user_mail' => $sMail, 'user_login' => $sName, 'notify_text' => $sBody, 'notify_subject' => $sSubject, 'date_created' => date("Y-m-d H:i:s"), 'notify_task_status' => self::NOTIFY_TASK_STATUS_NULL));
         if (Config::Get('module.notify.insert_single')) {
             $this->aTask[] = $oNotifyTask;
         } else {
             $this->oMapper->AddTask($oNotifyTask);
         }
     } else {
         /**
          * Отправляем мыло
          */
         $this->Mail_SetAdress($sMail, $sName);
         $this->Mail_SetSubject($sSubject);
         $this->Mail_SetBody($sBody);
         $this->Mail_setHTML();
         $this->Mail_Send();
     }
 }
 /**
  * Обработка хука перед закрывающим тегом body
  *
  * @return string
  */
 public function Statistics()
 {
     if ($this->bShown) {
         return '';
     }
     $sTemplate = 'commons/common.statistics_performance.tpl';
     $oEngine = Engine::getInstance();
     // * Получаем статистику по БД, кешу и проч.
     $aStats = $oEngine->getStats();
     $aStats['cache']['mode'] = Config::Get('sys.cache.use') ? Config::Get('sys.cache.type') : 'off';
     $aStats['cache']['time'] = round($aStats['cache']['time'], 5);
     $aStats['memory']['limit'] = F::MemSizeFormat(F::MemSize2Int(ini_get('memory_limit')), 3);
     $aStats['memory']['usage'] = F::MemSizeFormat(memory_get_usage(), 3);
     $aStats['memory']['peak'] = F::MemSizeFormat(memory_get_peak_usage(true), 3);
     $aStats['viewer']['count'] = ModuleViewer::GetRenderCount();
     $aStats['viewer']['time'] = round(ModuleViewer::GetRenderTime(), 3);
     $aStats['viewer']['preproc'] = round(ModuleViewer::GetPreprocessingTime(), 3);
     $aStats['viewer']['total'] = round(ModuleViewer::GetTotalTime(), 3);
     $bIsShowStatsPerformance = R::GetIsShowStats();
     if ($bIsShowStatsPerformance) {
         E::ModuleViewer()->Assign('aStatsPerformance', $aStats);
         E::ModuleViewer()->Assign('bIsShowStatsPerformance', $bIsShowStatsPerformance);
         // * В ответ рендерим шаблон статистики
         if (!E::ModuleViewer()->TemplateExists($sTemplate)) {
             $sSkin = Config::Get('view.skin', Config::LEVEL_CUSTOM);
             $sTemplate = Config::Get('path.skins.dir') . $sSkin . '/tpls/' . $sTemplate;
         }
         if (E::ModuleViewer()->TemplateExists($sTemplate)) {
             $this->bShown = true;
             return E::ModuleViewer()->Fetch($sTemplate);
         } elseif (E::ModuleViewer()->TemplateExists('statistics_performance.tpl')) {
             // LS-compatibility
             $this->bShown = true;
             return E::ModuleViewer()->Fetch('statistics_performance.tpl');
         }
     }
     return '';
 }
Esempio n. 5
0
 /**
  * Возвращает отрендеренный шаблон
  *
  * @param string $sTemplate - Шаблон для рендеринга
  * @param array  $aVars     - Переменные для локального рендеринга
  * @param array  $aOptions  - Опции рендеринга
  *
  * @return  string
  */
 public function Fetch($sTemplate, $aVars = array(), $aOptions = array())
 {
     $this->_initRender();
     // * Проверяем наличие делегата
     $sTemplate = E::ModulePlugin()->GetDelegate('template', $sTemplate);
     if ($sTemplatePath = $this->TemplateExists($sTemplate, true)) {
         // Если задаются локальные параметры кеширования, то сохраняем общие
         $this->_tplSetOptions($aOptions);
         $oTpl = $this->_tplCreateTemplate($sTemplatePath);
         if ($aVars) {
             $oTpl->assign($aVars);
         }
         self::$_renderCount++;
         self::$_renderStart = microtime(true);
         self::$_inRender += 1;
         $sContent = $oTpl->fetch();
         self::$_inRender -= 1;
         self::$_renderTime += microtime(true) - self::$_renderStart;
         self::$_renderStart = 0;
         $this->_tplRestoreOptions();
         return $sContent;
     }
     return null;
 }
Esempio n. 6
0
 /**
  * Получает локальную копию модуля
  *
  * return ModuleViewer
  */
 public function GetLocalViewer()
 {
     $oViewerLocal = new ModuleViewer(Engine::getInstance());
     $oViewerLocal->Init(true);
     $oViewerLocal->VarAssign();
     $oViewerLocal->Assign('aLang', $this->Lang_GetLangMsg());
     return $oViewerLocal;
 }