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';
}