Exemplo n.º 1
0
 /**
  * Отображение главной страницы админки
  */
 protected function EventIndex()
 {
     /**
      * Определяем доступность установки расширенной админ-панели
      */
     $aPluginsAll = func_list_plugins(true);
     if (in_array('admin', $aPluginsAll)) {
         $this->Viewer_Assign('availableAdminPlugin', true);
     }
 }
Exemplo n.º 2
0
 /**
  * Загрузка плагинов и делегирование
  *
  */
 protected function LoadPlugins()
 {
     if ($aPluginList = func_list_plugins()) {
         foreach ($aPluginList as $sPluginName) {
             $sClassName = 'Plugin' . func_camelize($sPluginName);
             $oPlugin = new $sClassName();
             $oPlugin->Delegate();
             $this->aPlugins[$sPluginName] = $oPlugin;
         }
     }
 }
 /**
  * Возвращает список плагинов с XML описанием
  *
  * @param array $aFilter
  *
  * @return array
  */
 public function GetPluginsItems($aFilter = array())
 {
     $aPluginItemsReturn = array();
     $aPluginCodes = func_list_plugins(true);
     $aPluginItemsActive = $this->GetPluginsActive();
     /**
      * Получаем версии из БД для всех плагинов
      */
     if ($aPluginCodes) {
         $aVersionItems = $this->GetVersionItemsByFilter(array('code in' => $aPluginCodes, '#index-from' => 'code'));
     } else {
         $aVersionItems = array();
     }
     foreach ($aPluginCodes as $sPluginCode) {
         /**
          * Получаем из XML файла описания
          */
         if ($oXml = $this->GetPluginXmlInfo($sPluginCode)) {
             if (isset($aVersionItems[$sPluginCode])) {
                 $sVersionDb = $aVersionItems[$sPluginCode]->getVersion();
             } else {
                 $sVersionDb = null;
             }
             $aInfo = array('code' => $sPluginCode, 'is_active' => in_array($sPluginCode, $aPluginItemsActive), 'property' => $oXml, 'apply_update' => (is_null($sVersionDb) or version_compare($sVersionDb, (string) $oXml->version, '<')) ? true : false);
             $aPluginItemsReturn[$sPluginCode] = $aInfo;
         }
     }
     /**
      * Если нужно сортировать плагины
      */
     if (isset($aFilter['order'])) {
         if ($aFilter['order'] == 'name') {
             uasort($aPluginItemsReturn, function ($a, $b) {
                 if ((string) $a['property']->name->data == (string) $b['property']->name->data) {
                     return 0;
                 }
                 return (string) $a['property']->name->data < (string) $b['property']->name->data ? -1 : 1;
             });
         }
     }
     return $aPluginItemsReturn;
 }