Actions

開発者エリア/Maharaアーキテクチャイントロダクション/コアサブシステム: Difference between revisions

From Mahara Wiki

< 開発者エリア/Maharaアーキテクチャイントロダクション
No edit summary
No edit summary
 
(42 intermediate revisions by the same user not shown)
Line 1: Line 1:
作成中です - [[User:Mits|mits]] ([[User talk:Mits|talk]])
コア開発者およびプラグイン開発者のMaharaコード記述作業を容易にするため、Maharaには特定機能を提供するためのいくつかのサブシステムがあります。あなたはMaharaコードの多くの場所で使われているサブシステムを確認できます。
 
コア開発者およびプラグイン開発者のMaharaコード記述作業を容易にするため、Maharaには特定機能を提供するためのいくつかのサブシステムがあります。In order to make the job of writing Mahara easier, both for the core developers and plugin writers, Mahara has several subsystems to provide certain functionality. You'll see them used in many places across Mahara's codebase.


<div id="section_1">
<div id="section_1">


===活動システム Activity System===
===活動システム===


The activity system allows Mahara to notify users about things that have happened in the system. It supports pluggable activity types, which are provided by the core and plugins, and the notification plugin type hooks in here to allow users to choose how they receive these messages.
活動システムによりMaharaはシステムで発生していることをユーザに通知できます。これはコアおよびプラグインで提供されるプラグイン可能な活動タイプをサポートします。ここで接続された通知プラグインタイプではどのようにこれらのメッセージを受信するかユーザが選択できます。


</div><div id="section_2">
</div><div id="section_2">


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


Mahara supports both MySQL and PostgreSQL by using ADODB for database abstraction, and XMLDB for handling the schema and upgrades. Mahara has a library on top of ADODB to make simple operations easier to perform - such as getting records, inserting/deleting rows. In many places in Mahara however, raw SQL is used to grab the data required.
Maharaはデータベース抽象にADODBの使用によりMySQLおよびPostgreSQLの両方をサポートします。また、スキーマおよびアップデートのためXMLDBを使用します。また、スキーマおよびアップグレードの処理にXMLDBを使用します。Maharaにはレコードの取得、行の挿入および削除のようなシンプルな処理を簡単に実行するためADODBのトップにライブラリがあります。しかし、Maharaの多くの場所では必要なデータを取得するため生のSQLが使用されます。


Mahara's database has foreign keys, and in the case of PostgreSQL, some more data integrity features.
Maharaのデータベースには外部キーがあります。また、PostgreSQLを使用する場合、さらにデータ整合性機能があります。


</div><div id="section_3">
</div><div id="section_3">
Line 21: Line 19:
===Cron===
===Cron===


Mahara implements cron internally. The main reason for this is to prevent the need for people to set up and edit cron jobs constantly. As cron is implemented internally, new plugins can simply register what cron jobs they want to run with Mahara, which will ensure they are run at the appropriate times (note: you still need one cron job set up to trigger Mahara's internal cron, but you set it up when setting up Mahara and then forget about it).
Maharaは内部的にcronを実装しています。この主な理由は常にcronジョブを設定および繰り返し編集する手間を省くことにあります。cronは内部的に実装されるため、新しいプラグインをどのcronジョブをMaharaで動作させるか簡単に登録できます。登録したcronジョブは確実に適切な時間に動作します (メモ: Maharan内部ジョブとして実行させるため、あなたはcronジョブの設置が必要ですが、Maharaのセットアップ時のみ設定して後は忘れてください)


</div><div id="section_4">
</div><div id="section_4">


===エラー処理およびロギング Error Handling and Logging===
===エラー処理およびロギング===


Being a PHP5 application, Mahara provides and uses exceptions for much of the error handling. Mahara also provides excellent logging facilities (to apache error logs) that give detailed error messages and backtraces when a problem occurs. Mahara also catches uncaught exceptions and displays generic "an error occured" pages, that don't give away any information to potential hackers about what went wrong.
PHPアプリケーションとして、Maharaはほとんどのエラー処理に例外処理を提供および使用します。Maharaには問題が発生した時のために詳細エラーメッセージおよびバックトレースを提供する素晴らしいログ機能 (Apacheエラーログに記録) もあります。また、Maharaは補足できなかった例外を取得して「エラーが発生しました」ページを表示します。これは潜在的な侵入者に何が問題であるのかという情報を与えないことを目的としています。


</div><div id="section_5">
</div><div id="section_5">


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


Mahara bundles the Pieforms form building library. It provides a very simple way to generate and process forms. It takes away the hard work of writing HTML and even much of the tedious validation work. It also handles session key checking for you, so you'll never generate a form vulnerable to XSS unless your try really hard to work around it. And if necessary, it provides the capability to lay out a form with widgets anywhere you choose - though most of the time you'll be happy enough with the forms generated by default.
MaharaはPieformsフォームビルディングライブラリを同梱しています。これはフォームを生成および処理するための非常にシンプルな方法を提供します。これはHTML記述の大変な作業、さらに退屈な検証作業も取り除きます。また、あなたのためにセッションキーをチェックするため、あなたが脆弱性対策に力を入れている場合を除いて、XSSに脆弱性のあるフォームを生成する必要はありません。
必要であれば、あなたが選択する場所にウィジェットのフォームを配置できる機能を提供できます (多くの場合、デフォルトで生成されるフォームで十分です)。


</div><div id="section_6">
</div><div id="section_6">


===HTMLフィルタリング HTML Filtering: HTMLPurifier===
===HTMLフィルタリング: HTMLPurifier===


In plenty of places in Mahara, user content is displayed. We bundle HTMLPurifier and provide wrapper functions for it, so you never have to worry about users inserting malicious tags. This filter is so good, we've previously had people complain that they can't embed anything at all! Mahara now ships with filters for allowing embedded code from select websites that most people trust, such as Youtube and Slideshare, and the filters are naturally pluggable.
Mahara内の多くの場所でユーザコンテンツが表示されます。私たちはHTMLPurifierを実装してラッパ関数を提供しますので、あなたはユーザから悪意のあるタグを埋め込まれることを心配する必要はありません。このフィルタは大変素晴らしいため、私たちは過去に全く何も埋め込めませんと苦情を受けたことがあります! Maharaには選択したYouTube、Slideshare等の信頼できるウェブサイトからコードを埋め込めるフィルタが実装されています。もちろん、フィルタは着脱可能です。


</div><div id="section_7">
</div><div id="section_7">


===テンプレーティング Templating: Dwoo===
===テンプレーティング: Dwoo===


Mahara uses Dwoo for its templating needs since Mahara 1.2, and previous to 1.2 used Smarty. PHP developers familiar with Smarty's abilities will find Dwoo quite similar, and we use it extensively throughout Mahara.
MaharaはMahara 1.2以降、テンプレーティングにDwooを使用します。1.2以前のバージョンではSmartyを使用していました。Smartyの機能に精通しているPHP開発者はDwooが非常に類似していることに気付くことでしょう。私たちはMaharaで広範囲にわたりDwooを使用しています。


{| style="width: 1265px; height: 26px" cellspacing="1" cellpadding="1"
{| style="width: 1265px; height: 26px" cellspacing="1" cellpadding="1"
|
|
'''Previous: '''[[Developer Area/Mahara Architecture Introduction/Core Components|'''Core Components''']]


'''前へ: '''[[開発者エリア/Maharaアーキテクチャイントロダクション/コアコンポーネント|'''コアコンポーネント''']]
'''前へ: '''[[開発者エリア/Maharaアーキテクチャイントロダクション/コアコンポーネント|'''コアコンポーネント''']]

Latest revision as of 08:24, 1 December 2019

コア開発者およびプラグイン開発者のMaharaコード記述作業を容易にするため、Maharaには特定機能を提供するためのいくつかのサブシステムがあります。あなたはMaharaコードの多くの場所で使われているサブシステムを確認できます。

活動システム

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

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

Maharaはデータベース抽象にADODBの使用によりMySQLおよびPostgreSQLの両方をサポートします。また、スキーマおよびアップデートのためXMLDBを使用します。また、スキーマおよびアップグレードの処理にXMLDBを使用します。Maharaにはレコードの取得、行の挿入および削除のようなシンプルな処理を簡単に実行するためADODBのトップにライブラリがあります。しかし、Maharaの多くの場所では必要なデータを取得するため生のSQLが使用されます。

Maharaのデータベースには外部キーがあります。また、PostgreSQLを使用する場合、さらにデータ整合性機能があります。

Cron

Maharaは内部的にcronを実装しています。この主な理由は常にcronジョブを設定および繰り返し編集する手間を省くことにあります。cronは内部的に実装されるため、新しいプラグインをどのcronジョブをMaharaで動作させるか簡単に登録できます。登録したcronジョブは確実に適切な時間に動作します (メモ: Maharan内部ジョブとして実行させるため、あなたはcronジョブの設置が必要ですが、Maharaのセットアップ時のみ設定して後は忘れてください)。

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

PHPアプリケーションとして、Maharaはほとんどのエラー処理に例外処理を提供および使用します。Maharaには問題が発生した時のために詳細エラーメッセージおよびバックトレースを提供する素晴らしいログ機能 (Apacheエラーログに記録) もあります。また、Maharaは補足できなかった例外を取得して「エラーが発生しました」ページを表示します。これは潜在的な侵入者に何が問題であるのかという情報を与えないことを目的としています。

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

MaharaはPieformsフォームビルディングライブラリを同梱しています。これはフォームを生成および処理するための非常にシンプルな方法を提供します。これはHTML記述の大変な作業、さらに退屈な検証作業も取り除きます。また、あなたのためにセッションキーをチェックするため、あなたが脆弱性対策に力を入れている場合を除いて、XSSに脆弱性のあるフォームを生成する必要はありません。 必要であれば、あなたが選択する場所にウィジェットのフォームを配置できる機能を提供できます (多くの場合、デフォルトで生成されるフォームで十分です)。

HTMLフィルタリング: HTMLPurifier

Mahara内の多くの場所でユーザコンテンツが表示されます。私たちはHTMLPurifierを実装してラッパ関数を提供しますので、あなたはユーザから悪意のあるタグを埋め込まれることを心配する必要はありません。このフィルタは大変素晴らしいため、私たちは過去に全く何も埋め込めませんと苦情を受けたことがあります! Maharaには選択したYouTube、Slideshare等の信頼できるウェブサイトからコードを埋め込めるフィルタが実装されています。もちろん、フィルタは着脱可能です。

テンプレーティング: Dwoo

MaharaはMahara 1.2以降、テンプレーティングにDwooを使用します。1.2以前のバージョンではSmartyを使用していました。Smartyの機能に精通しているPHP開発者はDwooが非常に類似していることに気付くことでしょう。私たちはMaharaで広範囲にわたりDwooを使用しています。

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