Actions

開発者エリア/Maharaアーキテクチャインストラクション/コアサブシステム

From Mahara Wiki

< 開発者エリア/Maharaアーキテクチャインストラクション
Revision as of 04:30, 8 March 2013 by Mits (talk | contribs)

作成中です - mits

コア開発者およびプラグイン開発者両者にとって開発が簡単になるよう、Maharaには特定の機能を提供する複数のサブシステムがあります。あなたはMaharaコードベースの多くの場所でこれらサブシステムに遭遇することになるでしょう。

活動システム

活動システムはMaharaに対して、システム内で何が起こっているのかユーザに通知を送信できるようにします。活動システムはコアおよびプラグインから提供される脱着可能な活動タイプをサポートします。また、ここで接続される通知プラグインタイプでは、ユーザがどのようにメッセージを受信するか選択することができます。

データベースレイヤ: ADODB/XMLDB

Maharaはデータベース抽出に関して、ADODBを使用することでMySQLおよびPostgreSQLの両者をサポートします。また、XMLDBを使用してスキーマ処理およびアップグレードをサポートしています。Maharaではシンプルな処理を簡単に実行できるよう、ADODBのトップにライブラリを持っています - レコードの取得、行の追加および削除等です。しかし、Maharaの多くの場所で必要なデータを取得するために生のSQLが使用されています。

Mahraのデータベースは外部キー (foreign key) を持ちます。また、PostgreSQLの場合、さらに整合性に関する機能があります。

Cron

Maharaはcronを内部に実装しています。このことに関する主な理由は、絶えずcronジョブのセットアップおよび編集をする必要性をなくすことにあります。内部的にcronが実装されているため、新しいプラグインでは、Maharaで実行したい適切な時間に動作するcronジョブを登録することができます (注意: それでも、あなたはMaharaの内部cronを動作させるためにサーバのcronジョブを設定する必要があります。もちろん、Mahara用にcronジョブを設定した後は、このことは忘れてください)。

エラー処理およびロギング

PHP5アプリケーションとして、Maharaは多くのエラー処理の例外を提供および利用します。Maharaは問題発生時に詳細エラーメッセージを提示して原因を分析するための素晴らしいロギング機能を提供します。また、Maharaは未確認の例外を捉えて、一般的な「an error occured」エラーページを表示します。このページは潜在的なハッカーが問題箇所を推測できるような情報を一切渡すことはありません。

フォームビルディング: Pieforms

MaharaにはPieformsフォーム構築ライブラリが同梱されています。これは非常に簡単にフォームを生成および処理する手段を提供します。これにより、HTMLを記述する大変な作業、そして退屈な妥当性確認作業さえも回避することができます。セッションキーのチェックも処理できるため、あなたはフォーム作成に一生懸命に取り組む努力をしない限り、XSSに対して脆弱性のあるフォームを作成することはありません。そして、必要であれば、あなたが選択した場所にウィジェットのフォームを配置する機能を提供することができます - しかし、多くの場合、あなたはデフォルトで生成されるフォームで十分だと思います。

HTMLフィルタリング: HTMLPurifier

Mahara内の多くの場所でユーザコンテンツが表示されます。私たちはHTMLPurifierを同梱して、そのためのラッパー関数を提供します。 ですから、あなたはユーザが悪意のあるタグを埋め込むことに心配する必要はありません。以前、何も埋め込むことができないとの苦情をお受けしたため、このフィルタは大変素晴らしいものになりました! MaharaはYoutubeおよびSlideshareのような最も信用されるウェブサイトを埋め込むためのフィルタを同梱しています。当然のことながら、フィルタは着脱可能です。

テンプレーティング: Dwoo

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Maharaはテンプレーティングの必要性からMahara1.2以降にDwooを使用しています。 また、1.2以前のバージョンではSmartyを使用しています。Smartyの機能に詳しいPHP開発者はDwooが極めて類似していることに気付くことでしょう。そして、私たちはMaharaの広範囲にDwooを使用しています。

前へ: コアコンポーネント