2 // vim: foldmethod=marker
4 * Ethna_AppSearchObject.php
6 * @author Masaki Fujimoto <fujimoto@php.net>
7 * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
12 /** アプリケーションオブジェクト検索条件: != */
13 define('OBJECT_CONDITION_NE', 0);
15 /** アプリケーションオブジェクト検索条件: == */
16 define('OBJECT_CONDITION_EQ', 1);
18 /** アプリケーションオブジェクト検索条件: LIKE */
19 define('OBJECT_CONDITION_LIKE', 2);
21 /** アプリケーションオブジェクト検索条件: > */
22 define('OBJECT_CONDITION_GT', 3);
24 /** アプリケーションオブジェクト検索条件: < */
25 define('OBJECT_CONDITION_LT', 4);
27 /** アプリケーションオブジェクト検索条件: >= */
28 define('OBJECT_CONDITION_GE', 5);
30 /** アプリケーションオブジェクト検索条件: <= */
31 define('OBJECT_CONDITION_LE', 6);
33 /** アプリケーションオブジェクト検索条件: AND */
34 define('OBJECT_CONDITION_AND', 7);
36 /** アプリケーションオブジェクト検索条件: OR */
37 define('OBJECT_CONDITION_OR', 8);
41 // {{{ Ethna_AppSearchObject
43 * アプリケーションオブジェクト検索条件クラス
45 * @author Masaki Fujimoto <fujimoto@php.net>
49 class Ethna_AppSearchObject
55 /** @var string 検索値 */
62 * @var array 追加検索条件を保持したEthna_AppSearchObjectの一覧
64 var $object_list = array();
70 * Ethna_AppSearchObjectのコンストラクタ
73 * @param string $value 検索値
74 * @param int $condition 検索条件(OBJECT_CONDITION_NE,...)
76 function Ethna_AppSearchObject($value, $condition)
78 $this->value = $value;
79 $this->condition = $condition;
86 * @param string $name 検索対象カラム名
87 * @param object Ethna_AppSearchObject $search_object 追加する検索条件
88 * @param int $condition 追加条件(OR/AND)
90 function addObject($name, $search_object, $condition)
94 $tmp['object'] =& $search_object;
95 $tmp['condition'] = $condition;
96 $this->object_list[] = $tmp;
100 * 指定されたフィールドが検索対象となっているかどうかを返す
104 function isTarget($field)
106 foreach ($this->object_list as $object) {
107 if ($object['name'] == $field) {
110 if (is_object($object['object'])) {
111 $r = $object['object']->isTarget($field);
124 * @param string 検索対象カラム名
127 function toString($column)
130 $tmp_value = $this->value;
131 Ethna_AppSQL::escapeSQL($tmp_value);
132 $condition .= Ethna_AppSQL::getCondition("$column", $tmp_value, $this->condition);
134 foreach ($this->object_list as $elt) {
135 if ($elt['condition'] == OBJECT_CONDITION_OR) {
136 $condition .= " OR ";
138 $condition .= " AND ";
140 $condition .= $elt['object']->toString($elt['name']);
143 return $condition . ")";