コード例 #1
0
ファイル: QueryBuilder.php プロジェクト: cretzu89/EPESI
 public function to_sql(Utils_RecordBrowser_CritsInterface $crits)
 {
     if ($crits->is_active() == false) {
         return array('', array());
     }
     if ($crits instanceof Utils_RecordBrowser_CritsSingle) {
         return $this->build_single_crit_query($crits);
     } elseif ($crits instanceof Utils_RecordBrowser_Crits) {
         $vals = array();
         $sql = array();
         foreach ($crits->get_component_crits() as $c) {
             list($s, $v) = $this->to_sql($c);
             if ($s) {
                 $vals = array_merge($vals, $v);
                 $sql[] = "({$s})";
             }
         }
         $glue = ' ' . $crits->get_join_operator() . ' ';
         $sql_str = implode($glue, $sql);
         if ($crits->get_negation() && $sql_str) {
             $sql_str = "NOT ({$sql_str})";
         }
         return array($sql_str, $vals);
     } elseif ($crits instanceof Utils_RecordBrowser_CritsRawSQL) {
         $sql = $crits->get_negation() ? $crits->get_negation_sql() : $crits->get_sql();
         return array($sql, $crits->get_vals());
     }
     return array('', array());
 }
コード例 #2
0
ファイル: CritsToWords.php プロジェクト: cretzu89/EPESI
 protected function to_words_internal(Utils_RecordBrowser_CritsInterface $crits)
 {
     if ($crits->is_active() == false) {
         return self::$empty_c;
     }
     if ($crits instanceof Utils_RecordBrowser_CritsSingle) {
         return $this->build_single_crit_to_words($crits);
     } elseif ($crits instanceof Utils_RecordBrowser_Crits) {
         return $this->build_compound_crits_to_words($crits);
     } elseif ($crits instanceof Utils_RecordBrowser_CritsRawSQL) {
         return $this->build_raw_sql_crits_to_words($crits);
     }
     return self::$empty_c;
 }
コード例 #3
0
ファイル: CritsValidator.php プロジェクト: cretzu89/EPESI
 public function validate(Utils_RecordBrowser_CritsInterface $crits, $record)
 {
     if (!$crits->is_active()) {
         return true;
     }
     $success = true;
     if ($crits instanceof Utils_RecordBrowser_CritsSingle) {
         $success = $this->validate_single($crits, $record);
     } elseif ($crits instanceof Utils_RecordBrowser_Crits) {
         $success = $this->validate_compound($crits, $record);
     } elseif ($crits instanceof Utils_RecordBrowser_CritsRawSQL) {
         $success = $this->validate_sql($crits, $record);
     }
     return $success;
 }
コード例 #4
0
 public function crits_to_json(Utils_RecordBrowser_CritsInterface $crits)
 {
     $crits->normalize();
     if ($crits instanceof Utils_RecordBrowser_Crits) {
         $cc = $crits->get_component_crits();
         $condition = $crits->get_join_operator();
         if (!$condition) {
             $condition = 'AND';
         }
         $ret = array('condition' => $condition);
         $rules = array();
         foreach ($cc as $c) {
             $rr = $this->crits_to_json($c);
             if ($rr) {
                 $rules[] = $rr;
             }
         }
         $ret['rules'] = $rules;
         return $ret;
     } elseif ($crits instanceof Utils_RecordBrowser_CritsSingle) {
         list($operator, $value) = self::map_crits_operator_to_query_builder($crits->get_operator(), $crits->get_value());
         $ret = array('id' => $crits->get_field(), 'field' => $crits->get_field(), 'operator' => $operator, 'value' => $value);
         return $ret;
     } elseif ($crits instanceof Utils_RecordBrowser_CritsRawSQL) {
     } else {
         throw new Exception("crits to json exporter: unsupported class: " . get_class($crits));
     }
 }