private static function buildWhereClauseForAdvancedSearch($dbname2searchTerm) { $where = array(); $where['clause'] = array(); $where['params'] = array(); foreach ($dbname2searchTerm as $dbname => $term) { $isRange = false; if (strstr($term, '~')) { $info = explode('~', $term); if ($dbname == 'utime' || $dbname == 'mtime' || $dbname == 'lptime') { $input1 = $info[0] != "" ? Application_Common_DateHelper::UserTimezoneStringToUTCString($info[0]) : null; $input2 = $info[1] != "" ? Application_Common_DateHelper::UserTimezoneStringToUTCString($info[1]) : null; } else { if ($dbname == 'bit_rate' || $dbname == 'sample_rate') { $input1 = isset($info[0]) ? doubleval($info[0]) * 1000 : null; $input2 = isset($info[1]) ? doubleval($info[1]) * 1000 : null; } else { $input1 = isset($info[0]) ? $info[0] : null; $input2 = isset($info[1]) ? $info[1] : null; } } $isRange = true; } else { $input1 = $term; } if ($isRange) { $sub = array(); if ($input1 != null) { $sub[] = $dbname . " >= :" . $dbname . "1"; } if ($input2 != null) { $sub[] = $dbname . " <= :" . $dbname . "2"; } if (!empty($sub)) { $where['clause'][$dbname] = "(" . implode(' AND ', $sub) . ")"; if ($input1 != null) { $where['params'][$dbname . "1"] = $input1; } if ($input2 != null) { $where['params'][$dbname . "2"] = $input2; } } } else { if (trim($input1) !== "") { $where['clause'][$dbname] = $dbname . " ILIKE :" . $dbname . "1"; $where['params'][$dbname . "1"] = "%" . $input1 . "%"; } } } return $where; }
public function storeCriteriaIntoDb($p_criteriaData) { // delete criteria under $p_blockId CcBlockcriteriaQuery::create()->findByDbBlockId($this->id)->delete(); //Logging::info($p_criteriaData); //insert modifier rows if (isset($p_criteriaData['criteria'])) { $critKeys = array_keys($p_criteriaData['criteria']); for ($i = 0; $i < count($critKeys); $i++) { foreach ($p_criteriaData['criteria'][$critKeys[$i]] as $d) { $field = $d['sp_criteria_field']; $value = $d['sp_criteria_value']; if ($field == 'utime' || $field == 'mtime' || $field == 'lptime') { $value = Application_Common_DateHelper::UserTimezoneStringToUTCString($value); } $qry = new CcBlockcriteria(); $qry->setDbCriteria($field)->setDbModifier($d['sp_criteria_modifier'])->setDbValue($value)->setDbBlockId($this->id); if (isset($d['sp_criteria_extra'])) { if ($field == 'utime' || $field == 'mtime' || $field == 'lptime') { $d['sp_criteria_extra'] = Application_Common_DateHelper::UserTimezoneStringToUTCString($d['sp_criteria_extra']); } $qry->setDbExtra($d['sp_criteria_extra']); } $qry->save(); } } } // insert limit info $qry = new CcBlockcriteria(); $qry->setDbCriteria("limit")->setDbModifier($p_criteriaData['etc']['sp_limit_options'])->setDbValue($p_criteriaData['etc']['sp_limit_value'])->setDbBlockId($this->id)->save(); // insert repeate track option $qry = new CcBlockcriteria(); $qry->setDbCriteria("repeat_tracks")->setDbModifier("N/A")->setDbValue($p_criteriaData['etc']['sp_repeat_tracks'])->setDbBlockId($this->id)->save(); }