プラグイン/開発者向け
の編集
Top
/
プラグイン
/
開発者向け
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
RIGHT:&size(12){Category:[[:Plugin]] [[:CategoryDev]], [[:Category_Document]]}; *プラグイン開発者向け [#v936221e] >プラグインを開発してみようと思う方へのページです。(まだ目次にしかなっていません^_^;) ----- #contents ----- **関連 [#gc343d2e] -[[PukiWiki/技術資料]] --[[PukiWiki/Plug-inの仕様]] --[[PukiWiki/CSSのclass一覧]] --[[PukiWiki/関数一覧表]] -[[PukiWiki/1.4/プラグイン開発を便利に]] -[[PukiWiki/1.4/Proxy]] -[[BugTrack/779]] : (PHPのコードの)クリンナップのまとめ **各種命名規則 [#n5c6aa2f] ***プラグイン名 [#a8535462] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#q1f6de34]] ***プラグインファイル名 [#q14eace5] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#k4a8a55f]] ***関数名 [#zfd2c104] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#z3423080]] ***定数名 [#lb1c6171] -[[BugTrack2/29>BugTrack2/29#zd28eeb6]] **&aname(changes);1.3から1.4で変更されている箇所 [#zc1e39f5] ***UTIME [#l5b11d6b] 1.3までは、UTIMEは、ローカルタイムを示していたが、1.4では、UTCとなっている。 UTIMEを利用しているプラグインは、注意して下さい。 -[[BugTrack/169]] -[[BugTrack2/76]] ***インラインプラグイン [#s0ec5068] -[[PukiWiki/1.4/InlinePlugin]] -[[PukiWiki/Plug-inの仕様]] ** 推奨事項など [#k07763bb] - PukiWiki/Plug-inの仕様 -- [[GET, POST メソッドの入出力パラメータ名に関する制限>PukiWiki/Plug-inの仕様#]] -- [[内部で予約しているグローバル変数など>PukiWiki/Plug-inの仕様#]] -- [[PukiWiki本体の重要な定義など>PukiWiki/Plug-inの仕様#]] *** 主な内部関数 [#v4d76a2e] とりあえず、使ったときに調べたものから。~ 1.4 系メインに書き直しました。 -詳細: [[PukiWiki/関数一覧表]] :lib/auth.php| -- pkwk_login($pass) --- 入力文字列$pass が$adminpass と一致するかをチェック(1.4.4 以降, 1.5 系) -- check_editable($page) --- ページ名$page の編集認証をチェック(1.4 系, 1.5 系) -- check_readable($page) --- ページ名$page の閲覧認証をチェック(1.4 系, 1.5 系) -- get_auth_user() --- ログイン中のユーザー名を得る(1.5.1 以降) → [[BugTrack2/375]] :lib/convert_html.php| -- convert_html($lines) --- 1行を1つの要素とする配列$lines をPukiWiki 形式からHTML に変換する(1.4 系, 1.5 系) -- convert_html($string) --- 文字列$string をPukiWiki 形式からHTML に変換する(1.3 系, 1.4 系, 1.5 系) :lib/file.php| -- get_source($page) --- ページの内容をソース状態で取得(1.3 系, 1.4 系, 1.5 系) -- page_write($page, $postdata) --- ページ名$page のソースを文字列$postdata で更新、同時にバックアップなども更新する(1.4 系, 1.5 系) --- 必ず事前にis_pagename() で不正なページ名でないかを確認してから、利用してください。&br;編集からは操作不可能なページを作成する事になってしまいます。 :lib/func.php| -- is_pagename($str) --- 文字列$str が有効なページ名であるかどうか(1.3 系, 1.4 系, 1.5 系) -- is_page($page) --- ページ名$page が存在するかどうか(1.3 系, 1.4 系, 1.5 系) --- $page が有効なページ名であるかどうかのチェックは、別途行う必要がある -- is_editable($page) --- ページ名$page が編集可能かどうかを、「ページ名が有効であるか」と「編集不可ページに指定されていないか」から判定(1.3 系, 1.4 系, 1.5 系) --- 1.4 系ではページが凍結されているかも判定条件に追加されている -- strip_bracket($str) --- ''[[ページ名]]'' からBracket部分を取り除き、''ページ名''を得る(1.3 系, 1.4 系, 1.5 系) -- htmlsc($string, $flags, $charset) --- 変換に用いるデフォルトの文字コードがUTF-8やdefault_charset設定に変更された、[[htmlspecialchars 関数>PHP関数:htmlspecialchars]]用の互換ラッパーです(1.5 系) → [[BugTrack2/355>BugTrack2/355#lb1b06b4]] --- GREPによる検索・置き換えで簡単に互換動作できるよう、htmlspecialchars() → htmlsc() とした場合の$flags と$charset 初期値は、過去のバージョン準拠に近づくよう設定されています。(本体設定と異なる文字コードを扱う可能性がある場合は、置き換えだけでなく文字コードを明示指定する必要があります) --- 将来のバージョンでデフォルト動作が変更となっても問題がないよう、ソースコードでは$flags と$charset を可能な限り明示的に呼び出す事をお勧めします。 :lib/make_link.php| -- make_link($string, $page = '') --- 文字列$string から[[PukiWiki のインライン要素>FormattingRules#l7110f11]](各種リンクやユーザ定義ルールなど)のみを展開して、HTML に変換する(1.4 系, 1.5 系) --- $page には相対リンクの基準となるページ名を指定(省略された場合は、$vars['page'] を利用しようとします) -- make_pagelink($page) --- ページ名$page へのリンクを作成(1.4 系, 1.5 系) --- 事前にis_pagename() で不正なページ名でないかを確認してから、利用してください -- get_fullname($name, $refer) --- ページ名$name が相対参照であった場合、基準ページ$refer から絶対参照を得る(1.3.3 以降, 1.4 系, 1.5 系) :lib/html.php| -- strip_htmltag($str) --- 文字列$str から全てのHTML タグを消去します(1.3 系, 1.4 系, 1.5 系) --- 過去に無効化できるバグがあった経緯から、PukiWikiのコードは PHP のstrip_tags() を意図的に避けるように作られています。 :lib/plugin.php| -- exist_plugin($name) --- プラグイン名$name 用のファイルが存在すればrequire_once() (1.4 系, 1.5 系) --- 1.4.6 以降require 回数制限チェックあり。&br;自作プラグイン等から既存のプラグインをrequire_onceやinclude_onceしているものがちょくちょくあるが、代わりにこのexist_pluginを使うべきか。&br;(関連話題: [[BugTrack2/116]]) **補足情報 [#n0c3f832] -[[BugTrack2/213>BugTrack2/213#hb0abc89]] グローバル変数 $scriptは参照せず、get_script_uri() を使用することを推奨 -- リダイレクトする場合は絶対パスである事が必須なので、必ずget_script_uri() を使用してください -ファイル所有者の自動修正を行う関数が、PukiWiki の標準関数に追加されました --[[BugTrack2/55]] **過去の情報 [#hd338007] ***関数名・グローバル変数名(案) [#k017d75b] プラグインは、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() */ } こうしておけば名前空間が独立するので、本体とのしがらみを多少軽減できるかな、と。 -- [[ぱんだ]] SIZE(10){2003-02-24 (月) 18:39:59} ***リンク集 [#za754bcb] - PHPXref - クロスリファレンスドキュメントの自動生成 -- http://www.pat.hi-ho.ne.jp/dimension/tips/tips_phpxref.shtml
タイムスタンプを変更しない
RIGHT:&size(12){Category:[[:Plugin]] [[:CategoryDev]], [[:Category_Document]]}; *プラグイン開発者向け [#v936221e] >プラグインを開発してみようと思う方へのページです。(まだ目次にしかなっていません^_^;) ----- #contents ----- **関連 [#gc343d2e] -[[PukiWiki/技術資料]] --[[PukiWiki/Plug-inの仕様]] --[[PukiWiki/CSSのclass一覧]] --[[PukiWiki/関数一覧表]] -[[PukiWiki/1.4/プラグイン開発を便利に]] -[[PukiWiki/1.4/Proxy]] -[[BugTrack/779]] : (PHPのコードの)クリンナップのまとめ **各種命名規則 [#n5c6aa2f] ***プラグイン名 [#a8535462] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#q1f6de34]] ***プラグインファイル名 [#q14eace5] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#k4a8a55f]] ***関数名 [#zfd2c104] -[[PukiWiki/Plug-inの仕様>PukiWiki/Plug-inの仕様#z3423080]] ***定数名 [#lb1c6171] -[[BugTrack2/29>BugTrack2/29#zd28eeb6]] **&aname(changes);1.3から1.4で変更されている箇所 [#zc1e39f5] ***UTIME [#l5b11d6b] 1.3までは、UTIMEは、ローカルタイムを示していたが、1.4では、UTCとなっている。 UTIMEを利用しているプラグインは、注意して下さい。 -[[BugTrack/169]] -[[BugTrack2/76]] ***インラインプラグイン [#s0ec5068] -[[PukiWiki/1.4/InlinePlugin]] -[[PukiWiki/Plug-inの仕様]] ** 推奨事項など [#k07763bb] - PukiWiki/Plug-inの仕様 -- [[GET, POST メソッドの入出力パラメータ名に関する制限>PukiWiki/Plug-inの仕様#]] -- [[内部で予約しているグローバル変数など>PukiWiki/Plug-inの仕様#]] -- [[PukiWiki本体の重要な定義など>PukiWiki/Plug-inの仕様#]] *** 主な内部関数 [#v4d76a2e] とりあえず、使ったときに調べたものから。~ 1.4 系メインに書き直しました。 -詳細: [[PukiWiki/関数一覧表]] :lib/auth.php| -- pkwk_login($pass) --- 入力文字列$pass が$adminpass と一致するかをチェック(1.4.4 以降, 1.5 系) -- check_editable($page) --- ページ名$page の編集認証をチェック(1.4 系, 1.5 系) -- check_readable($page) --- ページ名$page の閲覧認証をチェック(1.4 系, 1.5 系) -- get_auth_user() --- ログイン中のユーザー名を得る(1.5.1 以降) → [[BugTrack2/375]] :lib/convert_html.php| -- convert_html($lines) --- 1行を1つの要素とする配列$lines をPukiWiki 形式からHTML に変換する(1.4 系, 1.5 系) -- convert_html($string) --- 文字列$string をPukiWiki 形式からHTML に変換する(1.3 系, 1.4 系, 1.5 系) :lib/file.php| -- get_source($page) --- ページの内容をソース状態で取得(1.3 系, 1.4 系, 1.5 系) -- page_write($page, $postdata) --- ページ名$page のソースを文字列$postdata で更新、同時にバックアップなども更新する(1.4 系, 1.5 系) --- 必ず事前にis_pagename() で不正なページ名でないかを確認してから、利用してください。&br;編集からは操作不可能なページを作成する事になってしまいます。 :lib/func.php| -- is_pagename($str) --- 文字列$str が有効なページ名であるかどうか(1.3 系, 1.4 系, 1.5 系) -- is_page($page) --- ページ名$page が存在するかどうか(1.3 系, 1.4 系, 1.5 系) --- $page が有効なページ名であるかどうかのチェックは、別途行う必要がある -- is_editable($page) --- ページ名$page が編集可能かどうかを、「ページ名が有効であるか」と「編集不可ページに指定されていないか」から判定(1.3 系, 1.4 系, 1.5 系) --- 1.4 系ではページが凍結されているかも判定条件に追加されている -- strip_bracket($str) --- ''[[ページ名]]'' からBracket部分を取り除き、''ページ名''を得る(1.3 系, 1.4 系, 1.5 系) -- htmlsc($string, $flags, $charset) --- 変換に用いるデフォルトの文字コードがUTF-8やdefault_charset設定に変更された、[[htmlspecialchars 関数>PHP関数:htmlspecialchars]]用の互換ラッパーです(1.5 系) → [[BugTrack2/355>BugTrack2/355#lb1b06b4]] --- GREPによる検索・置き換えで簡単に互換動作できるよう、htmlspecialchars() → htmlsc() とした場合の$flags と$charset 初期値は、過去のバージョン準拠に近づくよう設定されています。(本体設定と異なる文字コードを扱う可能性がある場合は、置き換えだけでなく文字コードを明示指定する必要があります) --- 将来のバージョンでデフォルト動作が変更となっても問題がないよう、ソースコードでは$flags と$charset を可能な限り明示的に呼び出す事をお勧めします。 :lib/make_link.php| -- make_link($string, $page = '') --- 文字列$string から[[PukiWiki のインライン要素>FormattingRules#l7110f11]](各種リンクやユーザ定義ルールなど)のみを展開して、HTML に変換する(1.4 系, 1.5 系) --- $page には相対リンクの基準となるページ名を指定(省略された場合は、$vars['page'] を利用しようとします) -- make_pagelink($page) --- ページ名$page へのリンクを作成(1.4 系, 1.5 系) --- 事前にis_pagename() で不正なページ名でないかを確認してから、利用してください -- get_fullname($name, $refer) --- ページ名$name が相対参照であった場合、基準ページ$refer から絶対参照を得る(1.3.3 以降, 1.4 系, 1.5 系) :lib/html.php| -- strip_htmltag($str) --- 文字列$str から全てのHTML タグを消去します(1.3 系, 1.4 系, 1.5 系) --- 過去に無効化できるバグがあった経緯から、PukiWikiのコードは PHP のstrip_tags() を意図的に避けるように作られています。 :lib/plugin.php| -- exist_plugin($name) --- プラグイン名$name 用のファイルが存在すればrequire_once() (1.4 系, 1.5 系) --- 1.4.6 以降require 回数制限チェックあり。&br;自作プラグイン等から既存のプラグインをrequire_onceやinclude_onceしているものがちょくちょくあるが、代わりにこのexist_pluginを使うべきか。&br;(関連話題: [[BugTrack2/116]]) **補足情報 [#n0c3f832] -[[BugTrack2/213>BugTrack2/213#hb0abc89]] グローバル変数 $scriptは参照せず、get_script_uri() を使用することを推奨 -- リダイレクトする場合は絶対パスである事が必須なので、必ずget_script_uri() を使用してください -ファイル所有者の自動修正を行う関数が、PukiWiki の標準関数に追加されました --[[BugTrack2/55]] **過去の情報 [#hd338007] ***関数名・グローバル変数名(案) [#k017d75b] プラグインは、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() */ } こうしておけば名前空間が独立するので、本体とのしがらみを多少軽減できるかな、と。 -- [[ぱんだ]] SIZE(10){2003-02-24 (月) 18:39:59} ***リンク集 [#za754bcb] - PHPXref - クロスリファレンスドキュメントの自動生成 -- http://www.pat.hi-ho.ne.jp/dimension/tips/tips_phpxref.shtml
テキスト整形のルールを表示する