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 記事ランキング

本日 月間