Esempio n. 1
0
 /**
  * Default homepage
  *
  * @return string
  */
 public function EventDefault()
 {
     E::ModuleViewer()->Assign('sMenuHeadItemSelect', 'homepage');
     $sHomepage = Config::Get('router.config.homepage');
     if ($sHomepage) {
         $sHomepageSelect = Config::Get('router.config.homepage_select');
         if ($sHomepageSelect == 'page') {
             // if page not active or deleted then this homepage is off
             $oPage = E::ModulePage()->GetPageByUrlFull($sHomepage, 1);
             if ($oPage) {
                 $sHomepage = $oPage->getUrlPath();
             } else {
                 $sHomepage = '';
             }
         } else {
             if ($sHomepageSelect == 'category_homepage') {
                 $sHomepageSelect = 'plugin-category-homepage';
             }
             $aHomePageSelect = explode('-', $sHomepageSelect);
             // if homepage was from plugin and plugin is not active then this homepage is off
             if ($aHomePageSelect[0] == 'plugin' && isset($aHomePageSelect[1])) {
                 if (!E::ActivePlugin($aHomePageSelect[1])) {
                     $sHomepage = '';
                 }
             }
         }
         if ($sHomepage == 'home') {
             if (E::ModuleViewer()->TemplateExists('actions/homepage/action.homepage.index.tpl')) {
                 $this->SetTemplateAction('index');
                 return;
             }
         } elseif ($sHomepage) {
             return R::Action($sHomepage);
         }
     }
     return R::Action('index');
 }
 /**
  * Возвращает ссылку фото определенного размера
  *
  * @param string|null $xSize    Размер фото, например, '100' или '150crop' или '150x100' или 'x100'
  *
  * @return null|string
  */
 public function getLink($xSize = null)
 {
     if ($sUrl = $this->getPath()) {
         if ($xSize) {
             $sResizedUrl = $this->getProp('_size-' . $xSize . '-url');
             if ($sResizedUrl) {
                 return $sResizedUrl;
             }
             $aPathInfo = pathinfo($sUrl);
             if (E::ActivePlugin('ls')) {
                 // Включена совместимость с LS
                 $sResizedUrl = $aPathInfo['dirname'] . '/' . $aPathInfo['filename'] . '_' . $xSize . '.' . $aPathInfo['extension'];
                 if (F::File_LocalUrl($sResizedUrl) && !F::File_Exists(F::File_Url2Dir($sResizedUrl))) {
                     $sResizedUrl = '';
                 }
             }
             if (!$sResizedUrl) {
                 $sModSuffix = F::File_ImgModSuffix($xSize, $aPathInfo['extension']);
                 if ($sModSuffix) {
                     $sResizedUrl = $sUrl . $sModSuffix;
                     if (Config::Get('module.image.autoresize')) {
                         $sFile = E::ModuleUploader()->Url2Dir($sResizedUrl);
                         $this->setProp('_size-' . $xSize . '-file', $sFile);
                         if (!F::File_Exists($sFile)) {
                             E::ModuleImg()->Duplicate($sFile);
                         }
                     }
                 }
             }
             if ($sResizedUrl) {
                 $sUrl = F::File_NormPath($sResizedUrl);
             }
             $this->setProp('_size-' . $xSize . '-url', $sUrl);
         }
     }
     return $sUrl;
 }
Esempio n. 3
0
 /**
  * Выполняет загрузку необходимых (возможно даже системных :)) переменных в шаблонизатор
  */
 public function VarAssign()
 {
     // * Загружаем весь $_REQUEST, предварительно обработав его функцией F::HtmlSpecialChars()
     $aRequest = $_REQUEST;
     F::HtmlSpecialChars($aRequest);
     $this->Assign('_aRequest', $aRequest);
     // * Параметры стандартной сессии
     // TODO: Убрать! Не должно этого быть на страницах сайта
     $this->Assign('_sPhpSessionName', session_name());
     $this->Assign('_sPhpSessionId', session_id());
     // * Загружаем роутинг с учетом правил rewrite
     $aRouter = array();
     $aPages = Config::Get('router.page');
     if (!$aPages || !is_array($aPages)) {
         throw new Exception('Router rules is underfined.');
     }
     foreach ($aPages as $sPage => $aAction) {
         $aRouter[$sPage] = R::GetPath($sPage);
     }
     $this->Assign('aRouter', $aRouter);
     // * Загружаем виджеты
     $this->Assign('aWidgets', $this->GetWidgets());
     // * Загружаем HTML заголовки
     $this->Assign('sHtmlTitle', $this->GetHtmlTitle());
     $this->Assign('sHtmlKeywords', $this->GetHtmlKeywords());
     $this->Assign('sHtmlDescription', $this->GetHtmlDescription());
     $this->Assign('aHtmlHeadFiles', $this->aHtmlHeadFiles);
     $this->Assign('aHtmlRssAlternate', $this->aHtmlRssAlternate);
     $this->Assign('sHtmlCanonical', $this->sHtmlCanonical);
     $this->Assign('aHtmlHeadTags', $this->aHtmlHeadTags);
     $this->Assign('aJsAssets', E::ModuleViewerAsset()->GetPreparedAssetLinks());
     // * Загружаем список активных плагинов
     $aPlugins = E::GetActivePlugins();
     $this->Assign('aPluginActive', array_fill_keys(array_keys($aPlugins), true));
     // * Загружаем пути до шаблонов плагинов
     $aPluginsTemplateUrl = array();
     $aPluginsTemplateDir = array();
     /** @var Plugin $oPlugin */
     foreach ($aPlugins as $sPlugin => $oPlugin) {
         $sDir = Plugin::GetTemplateDir(get_class($oPlugin));
         if ($sDir) {
             $this->oSmarty->addTemplateDir(array($sDir . 'tpls/', $sDir), $oPlugin->GetName(false));
             $aPluginsTemplateDir[$sPlugin] = $sDir;
             $aPluginsTemplateUrl[$sPlugin] = Plugin::GetTemplateUrl(get_class($oPlugin));
         }
     }
     if (E::ActivePlugin('ls')) {
         // LS-compatible //
         $this->Assign('aTemplateWebPathPlugin', $aPluginsTemplateUrl);
         $this->Assign('aTemplatePathPlugin', $aPluginsTemplateDir);
     }
     $sSkinTheme = $this->GetConfigTheme();
     if (!$sSkinTheme) {
         $sSkinTheme = 'default';
     }
     // Проверка существования темы
     if ($this->CheckTheme($sSkinTheme)) {
         $this->oSmarty->compile_id = $sSkinTheme;
     }
     $this->Assign('sSkinTheme', $sSkinTheme);
 }
Esempio n. 4
0
 /**
  * Вызывается по строке "check_plugin"
  * @param $aPlugins
  * @return bool
  */
 public function CheckPlugin($aPlugins)
 {
     if (is_string($aPlugins)) {
         $aPlugins = array($aPlugins);
     }
     $bResult = FALSE;
     foreach ($aPlugins as $sPluginName) {
         $bResult = $bResult || E::ActivePlugin($sPluginName);
         if ($bResult) {
             break;
         }
         continue;
     }
     return $bResult;
 }