サイトマップ
最近の更新

DokuWiki datasourceプラグイン - 他のプラグインにデータを供給する

概要

DokuWikiのHelperプラグインとして使用し、DokuWikiの持つ各種データへのアクセス方法を提供します。一般のユーザが直接使用することはほとんどないかと思いますが、他のプラグインから間接的に利用されることを想定したものですので、いろいろなことが書いてありますが、プラグイン開発者以外はあまり詳しく読む必要はないでしょう。

さて、datasourceプラグインが対象とするデータは以下のものとなります。

  • WikiページのMETA情報
  • 索引
  • 最近の変更
  • 履歴
  • tag情報
  • mediaファイル

また、DBMSを使用しないDokuWikiですが、DBMSを使った方が都合のよい場合もあります。そんなプラグインのために、独自にDB設定を実装するのでなく、ひとまとめにDB接続を提供する機能もあります。

使い方

各プラグインで、必要に応じてdatasourceプラグインのインスタンスを生成し、各APIを呼び出してください。戻り値としてDOMDocumentのオブジェクトが返されるので、適宜変換して使用してください。

$dso = plugin_load('helper', 'datasource');
$dom = $dso->read(<データソース名>);

API

read(<データソース名>)

指定したデータソース名に対応する情報を返します。指定可能なデータソース名は以下となります。

 
wiki:meta
DokuWikiページのメタ情報を返します。
 
wiki:index
DokuWikiの索引情報を返します。
 
wiki:changes
最近の変更を返します。
 
wiki:revisions
指定ページの履歴情報を返します。
 
tag:keys
tagプラグインのタグ名一覧を返します。これを使用するにはtagプラグインが必要です。
 
tag:list
tagプラグインのタグ名とタグ付けされたページの一覧を返します。これを使用するにはtagプラグインが必要です。
 
tag:related
tagプラグインの関連タグを返します。これを使用するにはtagプラグインが必要です。
 
media:<zipファイル>
メディアファイルとしてアップロードしたzipファイルに含まれるファイル一覧を返します。こちらは実験的な実装となります。
 
その他プラグインによる拡張名
他のプラグインがdatasourceプラグインを経由して情報を供給するように拡張することができます。たとえばmboardプラグインは、掲示板のコンテンツをdatasourceプラグインを介して供給し、お好みのフォーマットで出力するといったことが可能です。

connect()

PDOのインスタンスを返します。

マークアップと使用例

ヘルパー機能がメインですが、実際にどのようなデータが取得できるのかを調べるためのマークアップを用意しています。

wiki:meta

形式

wiki:meta?id=<ページID>
  id   .. 表示するページのページID。省略時は現在のページが対象となる。

ソース

<datasource name="wiki:meta"/>

実行結果クリックで表示

wiki:meta?id=:start

ソース

<datasource name="wiki:meta?id=:start"/>

実行結果クリックで表示

wiki:index

形式

wiki:index?ns=<namespace>&sort=<id|iddesc|title|titledesc|mtime|mtimedesc>&excludes=<除外ページ>
  ns   .. 対象の名前空間。省略時は現在のページの名前空間が対象となる。
  sort .. 出力の順序。id:ページIDの昇順、iddesc:ページIDの降順、title:ページタイトルの昇順、
          titledesc:ページタイトルの降順、mtime:更新日時の昇順、mtimedesc:更新日時の降順
  excludes .. 表示しないページIDのパターン (','区切りで複数可)

ソース

<datasource name="wiki:index?sort=idasc"/>

実行結果クリックで表示

wiki:index?ns=:

ソース

<datasource name="wiki:index?ns=:&excludes=playground,layout,wiki"/>

実行結果クリックで表示

wiki:changes

形式

wiki:changes?limit=<N>&ns=<NAMESPACE>&type=<TYPEs>&excludes=<PATTERNs>
  limit    .. 表示する最大の個数
  ns       .. 対象とする名前空間
  type     .. 変更の種類。C:create, E:edit, e:minoredit, D:delete, R:revert (','区切りで複数可)
              指定がない場合は、'C,E,R'と見なされる。
  excludes .. 表示しないページIDのパターン (','区切りで複数可)

ソース1

<datasource name="wiki:changes?excludes=layout&type=e&limit=3"/>

実行結果1クリックで表示

ソース2

<datasource name="wiki:changes?limit=5&excludes=layout"/>

実行結果2クリックで表示

wiki:revisions

形式

ソース

<datasource name="wiki:revisions"/>

実行結果クリックで表示

ソース

<datasource name="wiki:revisions?id=:"/>

実行結果クリックで表示

動作環境

  • Apache + PHP 5.3.X
  • DokuWiki .. 2011-05-25a “Rincewind”版での動作確認をしています。
  • PHP MySQL extension .. データベースの利用のために使います。
  • PHP PDO extension .. データベース接続に使います。
  • PHP DOM extension .. 戻り値はDOMDocumentのオブジェクトとして返されます。

ダウンロード

 
plugin/datasource.txt · 最終更新: 2012/09/25 16:44 by Kazuyuki Matsuda
特に明示されていない限り、本サイトの内容は次のライセンスに従います:Copyright(C) 2011 Shorindo, Inc. All Rights Reserved
Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki