Source for file AppSearchObject.php

Documentation is available at AppSearchObject.php

  1. <?php
  2. // vim: foldmethod=marker
  3. /**
  4.  *  AppSearchObject.php
  5.  *
  6.  *  @author     Masaki Fujimoto <fujimoto@php.net>
  7.  *  @license    http://www.opensource.org/licenses/bsd-license.php The BSD License
  8.  *  @package    Ethna
  9.  *  @version    $Id: 2f03a93cc2c557028057ab580bfb0a2805368db4 $
  10.  */
  11.  
  12. /** アプリケーションオブジェクト検索条件: != */
  13. define('OBJECT_CONDITION_NE'0);
  14.  
  15. /** アプリケーションオブジェクト検索条件: == */
  16. define('OBJECT_CONDITION_EQ'1);
  17.  
  18. /** アプリケーションオブジェクト検索条件: LIKE */
  19. define('OBJECT_CONDITION_LIKE'2);
  20.  
  21. /** アプリケーションオブジェクト検索条件: > */
  22. define('OBJECT_CONDITION_GT'3);
  23.  
  24. /** アプリケーションオブジェクト検索条件: < */
  25. define('OBJECT_CONDITION_LT'4);
  26.  
  27. /** アプリケーションオブジェクト検索条件: >= */
  28. define('OBJECT_CONDITION_GE'5);
  29.  
  30. /** アプリケーションオブジェクト検索条件: <= */
  31. define('OBJECT_CONDITION_LE'6);
  32.  
  33. /** アプリケーションオブジェクト検索条件: AND */
  34. define('OBJECT_CONDITION_AND'7);
  35.  
  36. /** アプリケーションオブジェクト検索条件: OR */
  37. define('OBJECT_CONDITION_OR'8);
  38.  
  39.  
  40.  
  41. // {{{ Ethna_AppSearchObject
  42. /**
  43.  *  アプリケーションオブジェクト検索条件クラス
  44.  *
  45.  *  @author     Masaki Fujimoto <fujimoto@php.net>
  46.  *  @access     public
  47.  *  @package    Ethna
  48.  */
  49. {
  50.     /**#@+
  51.      *  @access private
  52.      */
  53.  
  54.     /** @protected    string  検索値 */
  55.     protected $value;
  56.  
  57.     /** @protected    int     検索条件 */
  58.     protected $condition;
  59.  
  60.     /**
  61.      *  @protected    array   追加検索条件を保持したEthna_AppSearchObjectの一覧
  62.      */
  63.     protected $object_list = array();
  64.  
  65.     /**#@-*/
  66.  
  67.  
  68.     /**
  69.      *  Ethna_AppSearchObjectのコンストラクタ
  70.      *
  71.      *  @access public
  72.      *  @param  string  $value      検索値
  73.      *  @param  int     $condition  検索条件(OBJECT_CONDITION_NE,...)
  74.      */
  75.     public function __construct($value$condition)
  76.     {
  77.         $this->value = $value;
  78.         $this->condition = $condition;
  79.     }
  80.  
  81.     /**
  82.      *  検索条件をOR/ANDで追加する
  83.      *
  84.      *  @access public
  85.      *  @param  string                          $name           検索対象カラム名
  86.      *  @param  object  Ethna_AppSearchObject   $search_object  追加する検索条件
  87.      *  @param  int                             $condition      追加条件(OR/AND)
  88.      */
  89.     function addObject($name$search_object$condition)
  90.     {
  91.         $tmp array();
  92.         $tmp['name'$name;
  93.         $tmp['object'$search_object;
  94.         $tmp['condition'$condition;
  95.         $this->object_list[$tmp;
  96.     }
  97.  
  98.     /**
  99.      *  指定されたフィールドが検索対象となっているかどうかを返す
  100.      *
  101.      *  @access public
  102.      */
  103.     function isTarget($field)
  104.     {
  105.         foreach ($this->object_list as $object{
  106.             if ($object['name'== $field{
  107.                 return true;
  108.             }
  109.             if (is_object($object['object'])) {
  110.                 $r $object['object']->isTarget($field);
  111.                 if ($r{
  112.                     return true;
  113.                 }
  114.             }
  115.         }
  116.         return false;
  117.     }
  118.  
  119.     /**
  120.      *  検索条件SQL文を返す
  121.      *
  122.      *  @access public
  123.      *  @param  string  検索対象カラム名
  124.      *  @return SQL文 
  125.      */
  126.     function toString($column)
  127.     {
  128.         $condition "(";
  129.         $tmp_value $this->value;
  130.         Ethna_AppSQL::escapeSQL($tmp_value);
  131.         $condition .= Ethna_AppSQL::getCondition("$column"$tmp_value$this->condition);
  132.  
  133.         foreach ($this->object_list as $elt{
  134.             if ($elt['condition'== OBJECT_CONDITION_OR{
  135.                 $condition .= " OR ";
  136.             else {
  137.                 $condition .= " AND ";
  138.             }
  139.             $condition .= $elt['object']->toString($elt['name']);
  140.         }
  141.  
  142.         return $condition ")";
  143.     }
  144. }
  145. // }}}

Documentation generated on Fri, 11 Nov 2011 03:57:40 +0900 by phpDocumentor 1.4.3