PluginsController::admin_index PHP Method

admin_index() public method

プラグインの一覧を表示する
public admin_index ( ) : void
return void
    public function admin_index()
    {
        $this->Plugin->cacheQueries = false;
        $datas = $this->Plugin->find('all', array('order' => 'Plugin.priority'));
        if (!$datas) {
            $datas = array();
        }
        // プラグインフォルダーのチェックを行う。
        $pluginInfos = array();
        $paths = App::path('Plugin');
        foreach ($paths as $path) {
            $Folder = new Folder($path);
            $files = $Folder->read(true, true, true);
            foreach ($files[0] as $file) {
                $pluginInfos[basename($file)] = $this->Plugin->getPluginInfo($datas, $file);
            }
        }
        $pluginInfos = array_values($pluginInfos);
        // Hash::sortの為、一旦キーを初期化
        $pluginInfos = array_reverse($pluginInfos);
        // Hash::sortの為、逆順に変更
        $availables = $unavailables = array();
        foreach ($pluginInfos as $pluginInfo) {
            if (isset($pluginInfo['Plugin']['priority'])) {
                $availables[] = $pluginInfo;
            } else {
                $unavailables[] = $pluginInfo;
            }
        }
        //並び替えモードの場合はDBにデータが登録されていないプラグインを表示しない
        if (!empty($this->passedArgs['sortmode'])) {
            $sortmode = true;
            $pluginInfos = Hash::sort($availables, '{n}.Plugin.priority', 'asc', 'numeric');
        } else {
            $sortmode = false;
            $pluginInfos = array_merge(Hash::sort($availables, '{n}.Plugin.priority', 'asc', 'numeric'), $unavailables);
        }
        // 表示設定
        $this->set('datas', $pluginInfos);
        $this->set('corePlugins', Configure::read('BcApp.corePlugins'));
        $this->set('sortmode', $sortmode);
        if ($this->request->is('ajax')) {
            $this->render('ajax_index');
        }
        $this->subMenuElements = array('plugins');
        $this->pageTitle = 'プラグイン一覧';
        $this->help = 'plugins_index';
    }