プラグイン管理でプラグインの先頭・最後への移動を追加する Ver3.2X版

さくっと消しちゃってた旧記事をGoogleから探し出して、Ver3.2X用に修正して無事プラグインの先頭・最後ができるようになったので、健忘録としてココに書いておくことにする という個人的なメモ。

修正箇所

 

修正箇所は、nucleus/libs/ADMIN.phpとnucleus/languageの自分が使っているLANGファイルです。

ADMIN.PHP

STEP1.action_plugindown()関数の下に以下を追加します

 

  1.    // 指定のプラグインを最上位にする
  2.     function action_plugintop() {
  3.         global $member, $manager;
  4.         // check if allowed
  5.         $member->isAdmin() or $this->disallow();
  6.         $plugid = intGetVar(‘plugid’);
  7.         if (!$manager->pidInstalled($plugid))
  8.             $this->error(_ERROR_NOSUCHPLUGIN);
  9.         // 指定されたプラグインのオーダーを取得する
  10.         $o = mysql_fetch_object(sql_query(‘SELECT porder FROM ‘.sql_table(‘plugin’).’ WHERE pid=’.$plugid));
  11.         $oldOrder = $o->porder;
  12.         // オーダー昇順に取得していく
  13.         $query =  ‘SELECT pid,porder FROM ‘.sql_table(‘plugin’).’ WHERE porder < ‘.$oldOrder.’ ORDER BY porder ASC’;
  14.         $aPIDs = array();
  15.         $r = sql_query($query);
  16.         while ($o = mysql_fetch_object($r)) {
  17.             array_push($aPIDs, array(
  18.                 ‘pid’ => $o->pid,
  19.                 ‘porder’ => $o->porder
  20.             ));
  21.         }
  22.         if (count($aPIDs) > 0) {
  23.             $newOrder = 2;
  24.             foreach ($aPIDs as $aPID)
  25.             {    sql_query(‘UPDATE ‘.sql_table(‘plugin’).’ SET porder=’.$newOrder.’ WHERE pid=’.$aPID[‘pid’]);
  26.                 $newOrder++;
  27.             }
  28.             // 指定したプラグインをトップに持ってくる
  29.             sql_query(‘UPDATE ‘.sql_table(‘plugin’).’ SET porder=1 WHERE pid=’.$plugid);
  30.         }
  31.         $this->action_pluginlist();
  32.     }
  33.     // 指定のプラグインを最下位にする
  34.     function action_pluginbottom() {
  35.         global $member, $manager;
  36.         // check if allowed
  37.         $member->isAdmin() or $this->disallow();
  38.         $plugid = intGetVar(‘plugid’);
  39.         if (!$manager->pidInstalled($plugid))
  40.             $this->error(_ERROR_NOSUCHPLUGIN);
  41.         // 指定されたプラグインのオーダーを取得する
  42.         $o = mysql_fetch_object(sql_query(‘SELECT porder FROM ‘.sql_table(‘plugin’).’ WHERE pid=’.$plugid));
  43.         $oldOrder = $o->porder;
  44.         // プラグイン総数を取得する
  45.         $maxOrder = mysql_num_rows(sql_query(‘SELECT * FROM ‘.sql_table(‘plugin’)));
  46.         // オーダー降順に取得していく
  47.         $query =  ‘SELECT pid,porder FROM ‘.sql_table(‘plugin’).’ WHERE porder > ‘.$oldOrder.’ ORDER BY porder ‘;
  48.         $aPIDs = array();
  49.         $r = sql_query($query);
  50.         while ($o = mysql_fetch_object($r)) {
  51.             array_push($aPIDs, array(
  52.                 ‘pid’ => $o->pid,
  53.                 ‘porder’ => $o->porder
  54.             ));
  55.         }
  56.         if (count($aPIDs) > 0) {
  57.             $newOrder = $oldOrder;
  58.             foreach ($aPIDs as $aPID)
  59.             {    sql_query(‘UPDATE ‘.sql_table(‘plugin’).’ SET porder=’.$newOrder.’ WHERE pid=’.$aPID[‘pid’]);
  60.                 $newOrder++;
  61.             }
  62.             // 指定したプラグインをトップに持ってくる
  63.             sql_query(‘UPDATE ‘.sql_table(‘plugin’).’ SET porder=’.$maxOrder.’ WHERE pid=’.$plugid);
  64.         }
  65.         $this->action_pluginlist();
  66.     }

STEP2.listplug_table_pluginlist()関数のUP/DOWNのechoの記述付近に以下を追記(echoの順番が表示順になるので好きなように)

 

  1. $url = $manager->addTicketToUrl($baseUrl . ‘plugintop’);
  2. echo “<a href='”,htmlspecialchars($url),”‘ tabindex='”.$template[‘tabindex’].”‘>”,_LIST_PLUGS_TOP,”</a>”;
  3. $url = $manager->addTicketToUrl($baseUrl . ‘pluginbottom’);
  4. echo “<br /><a href='”,htmlspecialchars($url),”‘ tabindex='”.$template[‘tabindex’].”‘>”,_LIST_PLUGS_BOTTOM,”</a>”;

STEP3.言語ファイルに先頭・最後の定義を追加する(_LIST_PLUGS_DOWNの定義のある付近で)

 

  1. define(‘_LIST_PLUGS_TOP’,            ‘先頭へ’);
  2. define(‘_LIST_PLUGS_BOTTOM’,        ‘最後へ’);

 

修正したファイルをアップロードして、プラグイン一覧にアクセスして無事「先頭へ」と「最後へ」が表示されていればOKです。

プッシュ通知を