- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- PukiWiki/plugin へ行く。
- 1 (2006-08-17 (木) 13:34:09)
- 2 (2006-08-17 (木) 16:18:15)
- 3 (2006-08-17 (木) 17:42:23)
- 4 (2006-08-17 (木) 19:55:47)
plugin memo 
- ちょっとPlus!に書き込まれていた記事をコピペ
プラグイン 既定される関数名 型 戻り値 プラグイン初期化 function plugin_XXX_init() void ブロック型 function plugin_XXX_convert() string 本文 インライン型 function plugin_XXX_inline() string 本文 アクション function plugin_XXX_action() array 'msg'=>'タイトル','body'=>'本文'
PukiWiki公式より
Plugin開発者向け、主な内部関数 
| 関数 | 内容 |
| get_source($page) | ページの内容をソース状態で取得 |
| is_editable($page) | ページが編集可能かどうか |
| is_page($page,$reload=FALSE) | ページが存在するかどうか。$page がページ名かどうかのチェックはなさげ。 |
| is_pagename($str) | 文字列がページ名かどうか |
| make_pagelink($page,$alias=,$anchor=,$refer='') | ページへのリンクを作成 |
| strip_bracket($str) | [[ や ]] で囲まれたページ名から、Bracket部分を取り除く |
アクセス制御用の関数仕様 
- check_readable($page, $auth_flag=true, $exit_flag=true)
- 閲覧することができるかチェックする。
- 今のところread_authと全く同じ。内部でread_authのみを呼び出している。
- check_editable($page, $auth_flag=true, $exit_flag=true)
- 編集することができるかチェックする。
- edit_auth+凍結などのチェックをする場合。
- read_auth($page, $auth_flag=true, $exit_flag=true)
- 閲覧権限があるかチェックする。
- edit_auth($page, $auth_flag=true, $exit_flag=true)
- 編集権限があるかチェックする。
| 引数 | 説明 |
| $page | ページ名文字列 |
| $auth_flag | true: 現在のログイン状態で認証NGであれば、BASIC認証発動(デフォルト) |
| false:現在のログイン状態で判断するだけ | |
| $exit_flag | true: 認証NGの場合、check_xxxable関数側でNG画面に遷移する(デフォルト) |
| false:認証NGの場合でも、戻り値falseで戻ってくるだけ |
| 戻り値 | true: 認証OK |
| false:認証NG |
- get_source, file関数を使用している全てのプラグインで、 以下の関数による事前チェックを行うように改造しなければ、 そこがセキュリティホールになるので注意!!
- 使わないプラグインはpukiwiki/plugin/disableディレクトリを作って そこに入れておくなどして、無効化すると良い。
- check_xxxxable系とxxx_auth系の使い分けは、特に問題がなければ、総合的な 観点で読めるか書けるかを判断しているcheck_xxxx系の方を利用する方がよいと思う。
- 第2、第3引数のデフォルト値は既存プラグインとの互換性のために用意している。 今後プラグインを実装する場合は明示的に指定した方がよいと思う。
関数名・グローバル変数名(案) 
プラグインは、PukiWiki 配下で稼動するため、本体に影響を及ぼさないために、 関数名およびグローバル変数名の命名には、注意が必要となる。 プラグイン内で利用するプライベート関数であっても、プラグインを開発する 際には、無用な混乱や、今後の本体開発・プラグイン開発の負荷を軽減する上でも、 これら命名には、プラグイン名をプレフィックスとして付加することを推奨する。
1つの PHP のシステムとしては、命名規則を明確に定めないと、これら名前においては、 コンフリクトし、稼動しないこととなる。
- 非互換ついでに、PukiWiki/1.4でプラグインをクラス化してしまおうかと考えています。
class Plugin_xxx { var $... /* define()していた定数やその他の変数など */ function Plugin_xxx() { /* plugin_xxx_init() */ } function action() { /* plugin_xxx_action() */ } function convert() { /* plugin_xxx_convert() */ } function inline() { /* plugin_xxx_inline() */ }こうしておけば名前空間が独立するので、本体とのしがらみを多少軽減できるかな、と。 -- ぱんだ? 2003-02-24 (月) 18:39:59
![[PukiWiki] [PukiWiki]](wiki/image/dog3.png)