プラットフォーム概要
出典: SugarForum.jp
目次 |
モジュールフレームワーク
SugarCRMは「モジュール」を基本単位として構成されています。システムで標準で用意されているコンタクトリスト機能やリード機能などもすべてモジュールによって実現されています。各モジュールは、Model-View-Controller(以下MVC)アーキテクチャ、すなわちデータベースへのアクセスを管理する「Model(SugarBean)」と、レコードを作成・編集・削除するため処理を記述する「Controller」とユーザインターフェース「View」を持ちます。
通常のMVCアーキテクチャを用いたWebアプリケーションでは、アプリケーション単位でMVCが定義されますが、Sugarの場合、モジュール単位でMVCを定義し、それら複数のMVCが最終的にダッシュボード上でまとめて表示されます。
モジュール以外の部分(ダッシュボードやACLなど)はSugarCRMのフレームワークとして提供されています。
トップレベルのフォルダ構成
Sugarのトップレベルのフォルダ構成とそこに格納されたデータについて説明します。
- cache : Sugarで扱う様々なキャッシュ(言語ファイル、vardefsファイル、Smartyテンプレートなど)
- custom : Sugarを拡張する際はこのフォルダを使います。既存モジュールを拡張する場合でも、モジュールフォルダに直接手を付けず、customフォルダにコードを置くことで、アップグレードセーフなカスタマイズを施すことが出来ます。
- data : システムの要となるファイルが収められています。特に、SugarBean.php は全てのSugarクラスのスーパークラスとして重要です。
- include : Sugarの様々な機能を実現するコードが、このフォルダに整理されて収められています。
- metadata : 多対多関係のメタデータが全て収められています。Sugarでは、多対多関係はテーブルとして表現されます。メタデータはそのテーブルの定義です。
- modules : 全てのモジュールがこのフォルダの中にあります。それぞれのモジュールフォルダには、vardefsファイルや、Sugarクラス、レイアウトを定義するメタデータ、言語ファイルなど、モジュールに関するほとんどのファイルが収められています。
アプリケーションの呼出(URL規則)
Sugarの各機能は、必ずルートフォルダのindex.phpを経由して呼び出されます。その際に使う主なパラメータは3つです。
- module : 呼び出すモジュールの名称
- action : モジュールで定義されたアクション
- record : アクセスするレコードのID
URLの例は次のようになります。
[サーバのアドレス]index.php?module=Contacts&action=DetailView&record=d545d1dd
これは、「ContactsモジュールのDetailView(詳細ビュー)アクションを、レコードID=d545d1ddで呼び出せ」と読めます。よりかみ砕くと、「レコードIDがd545d1ddのコンタクトを詳細表示せよ」となります。
重要なファイルとコードの断片
- SugarBean.php : すべてのSugarクラスのスーパークラス。MVCでいうところモデルにあたります。
- $app_strings : Sugar全体で使用される、文字列。各言語ごとに用意されます。
- $app_list_strings : データベースのカラムにenumを使う場合など、HTMLのフォームに<select>タグを使います。そこで選択肢として使用される文字列は、$app_list_stringsに連想配列として指定します。各言語ごとに用意されます。
- $mod_strings : カレントモジュールのみで有効な文字列です。各言語ごとに用意されます。
