コード例 #1
0
ファイル: Widget.class.php プロジェクト: hard990/altocms
 /**
  * Загружает список виджетов и конфигурирует их
  *
  * @return array
  */
 protected function _loadWidgetsList()
 {
     // Список виджетов из основного конфига
     $aWidgets = (array) Config::Get('widgets');
     // Добавляем списки виджетов из конфигов плагинов
     $aPlugins = F::GetPluginsList();
     if ($aPlugins) {
         foreach ($aPlugins as $sPlugin) {
             if ($aPluginWidgets = Config::Get('plugin.' . $sPlugin . '.widgets')) {
                 foreach ($aPluginWidgets as $xKey => $aWidgetData) {
                     // ID виджета может задаваться либо ключом элемента массива, либо параметром 'id'
                     if (isset($aWidgetData['id'])) {
                         $sWidgetId = $aWidgetData['id'];
                     } elseif (!is_integer($xKey)) {
                         $sWidgetId = $aWidgetData['id'] = $xKey;
                     } else {
                         $sWidgetId = null;
                     }
                     $aWidgetData = $this->_getWidgetData($sWidgetId, $aWidgetData, $aWidgets);
                     if ($sWidgetId) {
                         $aWidgets[$sWidgetId] = $aWidgetData;
                     } else {
                         $aWidgets[] = $aWidgetData;
                     }
                 }
                 //$aWidgets = F::Array_MergeCombo($aWidgets, $aPluginWidgets);
             }
         }
     }
     $aResult = array();
     if ($aWidgets) {
         // формируем окончательный список виджетов
         foreach ($aWidgets as $sKey => $aWidgetData) {
             if ($aWidgetData) {
                 // Если ID виджета не задан, то он формируется автоматически
                 if (!isset($aWidgetData['id']) && !is_numeric($sKey)) {
                     $aWidgetData['id'] = $sKey;
                 }
                 $oWidget = $this->MakeWidget($aWidgetData);
                 $aResult[$oWidget->getId()] = $oWidget;
             }
         }
     }
     return $aResult;
 }
コード例 #2
0
ファイル: Engine.class.php プロジェクト: anp135/altocms
 /**
  * Возвращает информацию о пути до файла класса.
  * Используется в {@link autoload автозагрузке}
  *
  * @static
  *
  * @param LsObject|string $oObject Объект - модуль, экшен, плагин, хук, сущность
  * @param int             $iArea   В какой области проверять (классы движка, общие классы, плагины)
  *
  * @return null|string
  */
 public static function GetClassPath($oObject, $iArea = self::CI_AREA_ACTUAL)
 {
     $aInfo = static::GetClassInfo($oObject, self::CI_OBJECT);
     $sPluginDir = '';
     if ($aInfo[self::CI_PLUGIN]) {
         $sPlugin = F::StrUnderscore($aInfo[self::CI_PLUGIN]);
         $aPlugins = F::GetPluginsList($iArea & self::CI_AREA_ALL_PLUGINS, false);
         if (isset($aPlugins[$sPlugin]['dirname'])) {
             $sPluginDir = $aPlugins[$sPlugin]['dirname'];
         } else {
             $sPluginDir = $sPlugin;
         }
     }
     $aPathSeek = Config::Get('path.root.seek');
     if ($aInfo[self::CI_ENTITY]) {
         // Сущность
         if ($aInfo[self::CI_PLUGIN]) {
             // Сущность модуля плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/entity/' . $aInfo[self::CI_ENTITY] . '.entity.class.php';
         } else {
             // Сущность модуля ядра
             $sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/entity/' . $aInfo[self::CI_ENTITY] . '.entity.class.php';
         }
     } elseif ($aInfo[self::CI_MAPPER]) {
         // Маппер
         if ($aInfo[self::CI_PLUGIN]) {
             // Маппер модуля плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/mapper/' . $aInfo[self::CI_MAPPER] . '.mapper.class.php';
         } else {
             // Маппер модуля ядра
             $sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/mapper/' . $aInfo[self::CI_MAPPER] . '.mapper.class.php';
         }
     } elseif ($aInfo[self::CI_ACTION]) {
         // Экшн
         if ($aInfo[self::CI_PLUGIN]) {
             // Экшн плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/actions/Action' . $aInfo[self::CI_ACTION] . '.class.php';
         } else {
             // Экшн ядра
             $sFile = 'classes/actions/Action' . $aInfo[self::CI_ACTION] . '.class.php';
         }
     } elseif ($aInfo[self::CI_MODULE]) {
         // Модуль
         if ($aInfo[self::CI_PLUGIN]) {
             // Модуль плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/' . $aInfo[self::CI_MODULE] . '.class.php';
         } else {
             // Модуль ядра
             $sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/' . $aInfo[self::CI_MODULE] . '.class.php';
         }
     } elseif ($aInfo[self::CI_HOOK]) {
         // Хук
         if ($aInfo[self::CI_PLUGIN]) {
             // Хук плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/hooks/Hook' . $aInfo[self::CI_HOOK] . '.class.php';
         } else {
             // Хук ядра
             $sFile = 'classes/hooks/Hook' . $aInfo[self::CI_HOOK] . '.class.php';
         }
     } elseif ($aInfo[self::CI_BLOCK]) {
         // LS-compatible
         if ($aInfo[self::CI_PLUGIN]) {
             // Блок плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/blocks/Block' . $aInfo[self::CI_BLOCK] . '.class.php';
         } else {
             // Блок ядра
             $sFile = 'classes/blocks/Block' . $aInfo[self::CI_BLOCK] . '.class.php';
         }
     } elseif ($aInfo[self::CI_WIDGET]) {
         // Виджет
         if ($aInfo[self::CI_PLUGIN]) {
             // Виджет плагина
             $sFile = 'plugins/' . $sPluginDir . '/classes/widgets/Widget' . $aInfo[self::CI_WIDGET] . '.class.php';
         } else {
             // Блок ядра
             $sFile = 'classes/widgets/Widget' . $aInfo[self::CI_WIDGET] . '.class.php';
         }
     } elseif ($aInfo[self::CI_PLUGIN]) {
         // Плагин
         $sFile = 'plugins/' . $sPluginDir . '/Plugin' . $aInfo[self::CI_PLUGIN] . '.class.php';
     } else {
         $sClassName = is_string($oObject) ? $oObject : get_class($oObject);
         $sFile = $sClassName . '.class.php';
         $aPathSeek = array(Config::Get('path.dir.engine') . '/classes/core/', Config::Get('path.dir.engine') . '/classes/abstract/');
     }
     $sPath = F::File_Exists($sFile, $aPathSeek);
     return $sPath ? $sPath : null;
 }
コード例 #3
0
ファイル: Lang.class.php プロジェクト: AntiqS/altocms
 /**
  * Загружает текстовки из языковых файлов
  *
  * @param $sLangName - Язык для загрузки
  * @param $sLangFor  - Для какого языка выполняется загрузка
  */
 protected function LoadLangFiles($sLangName, $sLangFor = null)
 {
     if (!$sLangFor) {
         $sLangFor = $this->sCurrentLang;
     }
     // Подключаем основной языковой файл
     $this->_loadFiles($this->aLangPaths, $sLangName, null, $sLangFor);
     // * Ищем языковые файлы модулей и объединяем их с текущим
     $sMask = '/modules/*/' . static::LANG_PATTERN . '.php';
     $this->_loadFileByMask($this->aLangPaths, $sMask, $sLangName, 'module', $sLangFor);
     // * Ищет языковые файлы экшенов и объединяет их с текущим
     $sMask = '/actions/*/' . static::LANG_PATTERN . '.php';
     $this->_loadFileByMask($this->aLangPaths, $sMask, $sLangName, 'action', $sLangFor);
     // * Ищем языковые файлы активированных плагинов
     if ($aPluginList = F::GetPluginsList()) {
         foreach ($aPluginList as $sPluginName) {
             $aDirs = Plugin::GetDirLang($sPluginName);
             foreach ($aDirs as $sDir) {
                 $aParams = array('name' => $sPluginName, 'category' => 'plugin');
                 $this->_loadFiles($sDir, $sLangName, $aParams, $sLangFor);
             }
         }
     }
     // * Ищет языковой файл текущего шаблона
     $this->LoadLangFileTemplate($sLangName, $sLangFor);
 }
コード例 #4
0
ファイル: Plugin.class.php プロジェクト: AntiqS/altocms
 /**
  * Returns array of dirs with language files of the plugin
  *
  * @param object|string $xPlugin
  *
  * @return array
  */
 public static function GetDirLang($xPlugin)
 {
     $aResult = array();
     $aSeekDirs = Config::Get('path.root.seek');
     $sPluginDirName = self::_pluginDirName($xPlugin);
     $aPluginList = F::GetPluginsList(true, false);
     $sManifestFile = null;
     if (isset($aPluginList[$sPluginDirName]['dirname'])) {
         $sPluginDirName = $aPluginList[$sPluginDirName]['dirname'];
     }
     foreach ($aSeekDirs as $sDir) {
         $sPluginDir = $sDir . '/plugins/' . $sPluginDirName . '/templates/language/';
         if (is_dir($sPluginDir)) {
             $aResult[] = F::File_NormPath($sPluginDir);
         }
     }
     return $aResult;
 }
コード例 #5
0
ファイル: Plugin.class.php プロジェクト: ZeoNish/altocms
 /**
  * Возвращает список активированных плагинов в системе
  *
  * @return array
  */
 public function GetActivePlugins()
 {
     if (is_null($this->aActivePlugins)) {
         $this->aActivePlugins = F::GetPluginsList(false, false);
     }
     return $this->aActivePlugins;
 }
コード例 #6
0
ファイル: Loader.class.php プロジェクト: Azany/altocms
 /**
  * Автоопределение класса или файла экшена
  *
  * @param   string $sAction
  * @param   string $sEvent
  * @param   bool   $bFullPath
  *
  * @return  string|null
  */
 public static function SeekActionClass($sAction, $sEvent = null, $bFullPath = false)
 {
     $bOk = false;
     $sActionClass = '';
     $sFileName = 'Action' . ucfirst($sAction) . '.class.php';
     // Сначала проверяем файл экшена среди стандартных
     $aSeekDirs = array(Config::Get('path.dir.app'), Config::Get('path.dir.common'));
     if ($sActionFile = F::File_Exists('/classes/actions/' . $sFileName, $aSeekDirs)) {
         $sActionClass = 'Action' . ucfirst($sAction);
         $bOk = true;
     } else {
         // Если нет, то проверяем файл экшена среди плагинов
         $aPlugins = F::GetPluginsList(false, false);
         foreach ($aPlugins as $sPlugin => $aPluginInfo) {
             if ($sActionFile = F::File_Exists('plugins/' . $aPluginInfo['dirname'] . '/classes/actions/' . $sFileName, $aSeekDirs)) {
                 $sActionClass = 'Plugin' . F::StrCamelize($sPlugin) . '_Action' . ucfirst($sAction);
                 $bOk = true;
                 break;
             }
         }
     }
     if ($bOk) {
         return $bFullPath ? $sActionFile : $sActionClass;
     }
     return null;
 }
コード例 #7
0
ファイル: function.php プロジェクト: AntiqS/altocms
function func_list_plugins($bAll = false)
{
    return F::GetPluginsList($bAll);
}
コード例 #8
0
ファイル: Config.class.php プロジェクト: anp135/altocms
 /**
  * @return string
  */
 protected static function _getHash()
 {
     return md5(ALTO_VERSION . serialize(F::GetPluginsList(false, true)));
 }