入力チェックを行うサンプル

このプラグインについて

入力チェックを行うサンプルです。

コメント本文の入力を3行以上に強制するプラグインを作成し、プラグイン作成の流れを解説します。

ダウンロード

以下のリンクからプラグインをダウンロードできます。

導入方法

ファイルのアップロード

config.sample3.phpbegin.sample3.phplibs/freo/plugins/ ディレクトリ内にアスキーモードでアップロードします。

完了

適当なエントリーにコメントを登録し、本文が3行以下の際にエラーが表示されれば成功です。

コード解説

まずは、半角英数字とアンダーバーで任意のプラグインIDを決めます。今回は、プラグインIDは sample3 とします。

config.sample3.php

<?php

//プラグインの名前
define('FREO_PLUGIN_SAMPLE3_NAME', 'サンプル3');

//プラグインのバージョン
define('FREO_PLUGIN_SAMPLE3_VERSION', '0.0.0');

//beginファイルの読み込み設定
define('FREO_PLUGIN_SAMPLE3_LOAD_BEGIN', 'view');

?>

config. + プラグインID + .php」というファイルを作成すると、プラグインの設定ファイルとして扱われます。

FREO_PLUGIN_ + 大文字表記のプラグインID + _NAME」という定数で、プラグインの名前を定義します。これは管理ページのプラグイン一覧などに表示されます。この定義はどんなプラグインを作る場合でも必須です。

FREO_PLUGIN_ + 大文字表記のプラグインID + _VERSION」という定数で、プラグインのバージョン情報を定義します。この定義はどんなプラグインを作る場合でも必須です。バージョン情報の表記方法は自由に決めることができます。(21.21.0.2 など、いずれの形式も可です。)

FREO_PLUGIN_ + 大文字表記のプラグインID + _LOAD_BEGIN」という定数を定義すると、begin.sample3.php ファイルの読み込みタイミングを制御できます。今回の場合、freo/index.php/view にアクセスしたときのみ begin.sample3.php が読み込まれます。この定義はプラグインによっては不要です。省略した場合、常に begin.sample3.php ファイルが読み込まれるようになります。

この定義は、, 区切りで複数指定することができます。具体的には、

//beginファイルの読み込み設定
define('FREO_PLUGIN_SAMPLE3_LOAD_BEGIN', 'sample1,test,aaa/bbb');

と定義しておくと、freo/index.php/sample1freo/index.php/testfreo/index.php/aaa/bbb にアクセスしたとき begin.sample3.php が読み込まれます。

今回は定義していませんが、「FREO_PLUGIN_ + 大文字表記のプラグインID + _UNLOAD_BEGIN」という定数を定義すると、begin.sample3.php ファイルを読み込まないタイミングを指定できます。具体的には、beginファイルの読み込み設定の代わりに

//beginファイルの読み込み除外設定
define('FREO_PLUGIN_SAMPLE3_UNLOAD_BEGIN', 'abc');

と定義しておくと、freo/index.php/abc にアクセスしたとき以外に begin.sample3.php が読み込まれます。

begin.sample3.php

<?php

/* メイン処理 */
function freo_begin_sample3()
{
  global $freo;

  //リクエストメソッドがPOSTで無ければ処理しない
  if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    return;
  }

  //本文が無ければ処理しない
  if (!isset($_POST['comment']['text']) or $_POST['comment']['text'] == '') {
    return;
  }

  //本文の行数を取得
  $count = substr_count($_POST['comment']['text'], "\n") + 1;

  //行数チェック
  if ($count < 3) {
    $freo->smarty->append('errors', '本文は3行以上入力してください。');
  }

  return;
}

?>

begin. + プラグインID + .php」というファイルを作成し、そのファイル内で「freo_begin_ + プラグインID」という関数を定義すると、プログラム本体の処理が開始される直前に呼び出されます。

今回は、コメント登録時に本文が3行以下ならSmartyの errors にエラーメッセージを割り当てています。この値は、コメント登録時のエラーメッセージとして扱われます。