Exemplo n.º 1
0
 /**
  * Process complex interval
  * 
  * @param RestoModel $model
  * @param string $filterName
  * @param array $requestParams
  * @param array $values
  * @return string
  */
 private function processComplexInterval($model, $filterName, $values)
 {
     /*
      * First and last characters give operators
      */
     $op1 = substr(trim($values[0]), 0, 1);
     $op2 = substr(trim($values[1]), -1);
     /*
      * A = {n1,n2} then returns  = n1 or = n2
      */
     if ($op1 === '{' && $op2 === '}') {
         return '(' . $model->getDbKey($model->searchFilters[$filterName]['key']) . ' = ' . pg_escape_string(substr($values[0], 1)) . ' OR ' . $model->getDbKey($model->searchFilters[$filterName]['key']) . ' = ' . pg_escape_string(substr($values[1], 0, strlen($values[1]) - 1)) . ')';
     }
     /*
      * Other cases i.e. 
      * A = [n1,n2] then returns <= n1 and <= n2
      * A = [n1,n2[ then returns <= n1 and B < n2
      * A = ]n1,n2[ then returns < n1 and B < n2
      * 
      */
     if (($op1 === '[' || $op1 === ']') && ($op2 === '[' || $op2 === ']')) {
         return $model->getDbKey($model->searchFilters[$filterName]['key']) . ($op1 === '[' ? ' >= ' : ' > ') . pg_escape_string(substr($values[0], 1)) . ' AND ' . $model->getDbKey($model->searchFilters[$filterName]['key']) . ($op2 === ']' ? ' <= ' : ' < ') . pg_escape_string(substr($values[1], 0, strlen($values[1]) - 1));
     }
 }