Category::Plugin :CategoryDev, :Category_Document

プラグイン開発者向け

プラグインを開発してみようと思う方へのページです。(まだ目次にしかなっていません^_^;)



関連

各種命名規則

プラグイン名

プラグインファイル名

関数名

定数名

1.3から1.4で変更されている箇所

UTIME

1.3までは、UTIMEは、ローカルタイムを示していたが、1.4では、UTCとなっている。 UTIMEを利用しているプラグインは、注意して下さい。

インラインプラグイン

推奨事項など

主な内部関数

とりあえず、使ったときに調べたものから。
1.4 系メインに書き直しました。

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() で不正なページ名でないかを確認してから、利用してください。
      編集からは操作不可能なページを作成する事になってしまいます。
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 関数用の互換ラッパーです(1.5 系) → BugTrack2/355
    • GREPによる検索・置き換えで簡単に互換動作できるよう、htmlspecialchars() → htmlsc() とした場合の$flags と$charset 初期値は、過去のバージョン準拠に近づくよう設定されています。(本体設定と異なる文字コードを扱う可能性がある場合は、置き換えだけでなく文字コードを明示指定する必要があります)
    • 将来のバージョンでデフォルト動作が変更となっても問題がないよう、ソースコードでは$flags と$charset を可能な限り明示的に呼び出す事をお勧めします。
lib/make_link.php
  • make_link($string, $page = '')
    • 文字列$string からPukiWiki のインライン要素(各種リンクやユーザ定義ルールなど)のみを展開して、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 回数制限チェックあり。
      自作プラグイン等から既存のプラグインをrequire_onceやinclude_onceしているものがちょくちょくあるが、代わりにこのexist_pluginを使うべきか。
      (関連話題: BugTrack2/116

補足情報

過去の情報

関数名・グローバル変数名(案)

プラグインは、PukiWiki 配下で稼動するため、本体に影響を及ぼさないために、 関数名およびグローバル変数名の命名には、注意が必要となる。 プラグイン内で利用するプライベート関数であっても、プラグインを開発する 際には、無用な混乱や、今後の本体開発・プラグイン開発の負荷を軽減する上でも、 これら命名には、プラグイン名をプレフィックスとして付加することを推奨する。

1つの PHP のシステムとしては、命名規則を明確に定めないと、これら名前においては、 コンフリクトし、稼動しないこととなる。

リンク集


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-24 (水) 21:24:29
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.858 sec.

SourceForge