Phpblock showrights()

提供: GeeklogJpWiki

[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > ユーザ権限PHPブロック

ユーザ権限PHPブロック phpblock_showrights()

  • 日本語版標準パッケージ(20061121版)に組み込み済み

phpblock_showrightsは「ユーザが持っている権限をブロックに表示する」というPHPブロックを使用するサンプルプログラムです。

ここではエラーや動作状況をエラーログに書き出すコードを記述するときの方法も提示されており、そのサンプルに沿った記述を行うことで、サイトが安定してきたときにはエラーログへの書き出しを抑制し、パフォーマンスの向上を行うことが出来るよう配慮されています。

利用方法

  1. 管理者ログインしてブロック管理画面を表示します。
  2. ブロックを新規作成します。
  3. ブロックのモードを「PHPブロック」にします。
  4. 「関数」のフォームに、phpblock_showrightsを指定します。
ユーザ権限表示PHPブロック関数

インストール方法

この機能は日本語版標準パッケージ(20061121版)で組み込み済みですが、それ以前のバージョンの場合には、以下のように/system/custom/phpblock_showrights.phpを/system/lib-custom.phpに組み込みます。

/system/lib-custom.php

以下の行を追加してプログラムを組み込みます。

// ユーザー権限表示PHPブロック関数を組み込む
require_once( 'custom/phpblock_showrights.php' );

/system/custom/phpblock_showrights.php

/**
* Sample PHP Block function
*
* this is a sample function used by a PHP block.  This will show the rights that
* a user has in the "What you have access to" block.
*
*/
function phpblock_showrights()
{
    global $_RIGHTS, $_CST_VERBOSE;

    if ($_CST_VERBOSE) {
        COM_errorLog('**** Inside phpblock_showrights in lib-custom.php ****', 1);
    }

    $retval .= ' ';

    for ($i = 0; $i < count($_RIGHTS); $i++) {
        $retval .=  '<li>' . $_RIGHTS[$i] . '</li>' . LB;
    }

    if ($_CST_VERBOSE) {
        COM_errorLog('**** Leaving phpblock_showrights in lib-custom.php ****', 1);
    }

    return $retval;
}

この関数は実用的でありながらプログラムとしてはほぼ最小限なので理解し易いと思います。

コメントを付けていくと

function phpblock_showrights()
{
関数の定義
    global $_RIGHTS, $_CST_VERBOSE;
関数の中で使用する外部で定義されている変数の宣言
$_RIGHTSは lib_common.php で $_RIGHTS = explode( ',', SEC_getUserPermissions() ); と設定されている。
アクセスしているユーザーが持っている権限を取得して保持している変数。
$_CST_VERBOSEは lib_custom.php の最初に設定されたユーザー関数のメッセージを記録するかどうかの設定
    if ($_CST_VERBOSE) {
        COM_errorLog('**** Inside phpblock_showrights in lib-custom.php ****', 1);
    }
$_CST_VERBOSEがTrueの時はCOM_errorLog()によってこの関数の最初を実行したことを記録する。
    $retval = '';
戻り値に使用する変数の初期化
    for ($i = 0; $i < count($_RIGHTS); $i++) {
        $retval .=  '<li>' . $_RIGHTS[$i] . '</li>' . LB;       ……※
    }
権限の一覧のリストを作成
※の行を $i=0 が count($_RIGHTS)-1 になるまで繰り返す
LBは config.phpの最後の方で define('LB',"\n"); と定義されている。
    if ($_CST_VERBOSE) {
        COM_errorLog('**** Leaving phpblock_showrights in lib-custom.php ****', 1);
    }
$_CST_VERBOSEがTrueの時はCOM_errorLog()によってこの関数の最後を実行したことを記録する。
    return $retval;
}
戻り値付で関数から抜ける。
個人用ツール