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()); }
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; }
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; }
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)); } }