/** * Универсальный метод отправки уведомлений на 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); } }
/** * Универсальный метод отправки уведомлений на 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; }
/** * Универсальный метод отправки уведомлений на 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 ''; }
/** * Возвращает отрендеренный шаблон * * @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; }
/** * Получает локальную копию модуля * * return ModuleViewer */ public function GetLocalViewer() { $oViewerLocal = new ModuleViewer(Engine::getInstance()); $oViewerLocal->Init(true); $oViewerLocal->VarAssign(); $oViewerLocal->Assign('aLang', $this->Lang_GetLangMsg()); return $oViewerLocal; }