SugarCRM

第5回 モデルの定義をカスタマイズしてみよう


河村 嘉之
オープンソースCRM株式会社
2009/1/15


画面を定義する「メタデータアーキテクチャ」

 ここからは、先ほど表示したソースコードで省略した「fields」「indices」「relationships」の各項目について説明します。

■フィールドの定義

 fields項目には、個々のフィールドに関する定義を記述します。例えば、取引先担当者のリードソースフィールドは以下のように定義されています。

'lead_source' => array (
 'name' => 'lead_source',
 'vname' => 'LBL_LEAD_SOURCE',
 'type' => 'enum',
 'options' => 'lead_source_dom',
 'len' => '100',
 'comment' => 'How did the contact come about',
),

 各フィールドの定義は配列として設定されます。このフィールドは「lead_sourceという名前で、lead_source_domという選択肢を取る列挙型で、フィールドの長さが100文字である」ことを表しています。ここで定義できる代表的な項目は以下の表のようになります。

項目名 説明
name
フィールド名
vname
このフィールドのラベルの言語パックでのキー
type
このフィールドの型
isnull
このフィールドにnull値を許すか
len
フィールドの長さ(文字列の場合は文字数)
options
列挙型の場合の選択肢(言語パック内での名前を指定)
dbtype
データベースでの型(typeと異なる場合)
required
必須項目か?
massupdate
一括更新できるか?
default
このフィールドのデフォルト値
source
このフィールドがデータベースからではなく計算される場合は「nondb」を指定
表3 フィールドで定義できる項目

 また、フィールドの型は以下のものが指定できます。

説明
datetime
日時型
bool
ブール型
char
文字配列
varchar
可変長文字列
int
整数値
enum
列挙型
assigned_user_name
ユーザー名へのリンク
relate
ほかのBeanへの関連
表4 フィールドで定義可能な型

■インデックスの定義

 indices項目では、データベース上のインデックスを定義します。ここに定義すると、SugarCRMによってデータベース上にインデックスが作成されます。name属性でこのインデックスの名前、type属性でインデックスの型、fields属性でインデックスを生成するフィールドを列挙した配列を指定します。インデックスの型として、主キー(primary)、一意(unique)、普通のインデックス(index)を指定することができます。

array(
 'name' => 'idx_cont_last_first',
 'type' => 'index',
 'fields' => array('last_name', 'first_name', 'deleted')
),

■関連の定義

 関連の定義に関しては、定義方法と表示方法を含め、次回詳しく説明します。

モデルのカスタマイズ

 では次に、モデルにカスタマイズを加えてみましょう。取引先担当者モジュールには「誕生日フィールド」があります。ここでは、この誕生日フィールドの値を利用して、今日から誕生日までの日数を表示するフィールドを追加します。

 取引先担当者モジュールのフィールドは、modules/Contacts/vardefs.phpで定義されています。ここを編集して新たにフィールドを加えることも可能ですが、ここを編集してしまうと、パッチの適用やアップグレードの際に上書きされてしまう可能性があります。そこでSugarCRMでは、モデルのフィールド定義にもアップグレードセーフ(第4回参照)の仕組みを用意し、製品の本体とカスタマイズを分離することができます。

 ここでは、このアップグレードセーフの仕組みを利用して新しいフィールドを追加します。この仕組みを使うことにより、定義ファイル中に追加したい部分だけを記述することにより、フィールドを追加できます。この手順は以下のようになります。

  1. 追加するフィールドの定義ファイルの作成
  2. 追加するラベルの言語ファイルの作成
  3. カスタムロジックの実装
  4. 再構築
  5. .ビューへのフィールドの追加

 ここからそれぞれのステップについて説明していきます。

2/3

Index
徹底解剖、SugarCRM(5)
 モデルの定義をカスタマイズしてみよう
  Page 1
 モデルを担当する「Bean」
 Beanのフィールドとデータベースの関連付け
  Page 2
 画面を定義する「メタデータアーキテクチャ」
 モデルのカスタマイズ
  Page 3
 カスタマイズの具体的な手順
 今回のまとめ

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間