MODxにこんなAPI・クラスが欲しい

MODxのソースを見ていて、こんなAPI・クラスが欲しいなあと思いました。

  • ドキュメントの作成・更新・削除
  • テンプレートの作成・更新・削除
  • テンプレート変数の作成・更新・削除
  • ドキュメントグループの作成・更新・削除
  • ユーザの作成・更新・削除
  • 権限の作成・更新・削除
  • アクセス許可の作成・更新・削除
  • モジュール開発用のクラス

ないですよね、たぶん?

現在、MODxでのリソース開発の要となるのは、APIクラスのDocumentParserクラスとDBAPIクラスで、この2つのクラスさえ把握しておけば十分です。DocumentParserクラスは/manager/includes/document.parser.class.inc.phpに、/manager/includes/extenders/dbapi.mysql.class.inc.phpにあります。

でも、実際の問題として、これらのAPIには取得系のメソッドしかないんですよね。スニペットにはこれでも十分ですが、プラグインやモジュールの開発には不十分です。レコードの挿入・更新・削除をしたい場合、DBAPIクラスを利用して、自前でSQL文を組み、自前でクエリを発行してやらなければなりません。なので、MODxの全てのテーブルを把握していない限りは、データベースを扱うリソースの開発は少し敷居が高いものだと思います。

単に作成・更新・削除するだけならそうでもないと思うのですが、きちんとやろうとすると、必ず権限のチェックやアクセス許可のチェック、関連するレコードの作成・更新・削除が必要になってきます。これがすごく面倒だと思います。テーブルも延々と数珠つなぎになっています。

巷のリソースを見てみると、この辺りの処理方法は人それぞれです。基本的には、権限チェック→アクセス許可チェック→データベース操作(リレーションの処理)という流れになると思うので、この辺りを堅くまとめたものがAPIとして欲しいですね。

モジュールについては、既存のPHPスクリプトをMODxのモジュールとして組み込むことは難しくありません。基本的にモジュールは独立した一つのPHPスクリプトだからです。しかし、MODxとの親和性を高めようとすると難しくなります。

例えば、HTMLの組み方には決まりがあります。この決まりに従って画面を作成すれば、マネージャテーマなどへの対応が容易になります。マネージャのCSSがそのまま使えるので、CSSも必要ありません。ただし、ガイドラインは公開されていないので、マネージャや既存のモジュールのHTMLから読み取る必要があります。

モジュールは、本当に人によって組み方がバラバラです。しかし、ほとんどの場合はPHPスクリプトとHTMLが共存しています。リクエストの処理、モジュール用のURI生成、UI生成あたりを行うクラスがあると便利だと感じました。

0.9.7では、リソースからアプリケーション(マネージャ)のコントローラやアクションメソッドを呼び出したり、タスク処理のようなこともできるのかなあと想像しているのですが、その場合には、それらを利用して作成・更新・削除の処理も簡単にできるようになるのかもしれませんね。しばらく先の話だと思いますし、0.9.6系と互換性のあるAPIも残されるようなので、冒頭のような機能を簡単に実現するための、MODxのAPIクラスの拡張クラスがあったらいいなあと思いました。

ドキュメントやテンプレート、テンプレート変数関係は大変そうですが、それ以外は簡単にできそうな気もしますね。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (0)

この記事へのトラックバックはまだありません。

この記事のトラックバックURI
http://dxd8.com/archives/131/trackback/
この記事のURI
http://dxd8.com/archives/131/