Exemplo n.º 1
0
 /**
  * Fix a value(s) for a Filter statement
  * @param $value - the value that needs fixing
  * @param $fieldName - the field we are fixing
  * @param SugarBean $bean - the Bean
  * @param SugarQuery $q - the Query
  * @param SugarQuery_Builder_Where $where - the Where statement
  * @param $op - the filter operand
  * @return bool - true if everything can pass as normal, false if new filters needed to be added to override the existing $op
  */
 public function fixForFilter(&$value, $fieldName, SugarBean $bean, SugarQuery $q, SugarQuery_Builder_Where $where, $op)
 {
     if ($op === '$daterange') {
         return true;
     }
     $dateLengthCheck = is_array($value) ? reset($value) : $value;
     if (strlen(trim($dateLengthCheck)) < 11) {
         if (!is_array($value)) {
             $dateParsed = date_parse($value);
         } else {
             $dateParsed[0] = date_parse($value[0]);
             $dateParsed[1] = date_parse($value[1]);
         }
         switch ($op) {
             case '$gt':
                 $value = date("Y-m-d", strtotime($value . "+1 day"));
                 $dateParsed = date_parse($value);
                 $value = gmdate('Y-m-d\\TH:i:s', gmmktime(0, 0, 0, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 break;
             case '$gte':
                 $value = gmdate('Y-m-d\\TH:i:s', gmmktime(0, 0, 0, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 break;
             case '$lt':
                 $value = date("Y-m-d", strtotime($value . "-1 day"));
                 $dateParsed = date_parse($value);
                 $value = gmdate('Y-m-d\\TH:i:s', gmmktime(23, 59, 59, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 break;
             case '$lte':
                 $value = gmdate('Y-m-d\\TH:i:s', gmmktime(23, 59, 59, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 break;
             case '$between':
             case '$dateBetween':
                 $value[0] = gmdate('Y-m-d\\TH:i:s', gmmktime(0, 0, 0, $dateParsed[0]['month'], $dateParsed[0]['day'], $dateParsed[0]['year']));
                 $value[1] = gmdate('Y-m-d\\TH:i:s', gmmktime(23, 59, 59, $dateParsed[1]['month'], $dateParsed[1]['day'], $dateParsed[1]['year']));
                 break;
             case '$starts':
             case '$equals':
                 $value = array();
                 $value[0] = gmdate('Y-m-d\\TH:i:s', gmmktime(0, 0, 0, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 $value[1] = gmdate('Y-m-d\\TH:i:s', gmmktime(23, 59, 59, $dateParsed['month'], $dateParsed['day'], $dateParsed['year']));
                 $where->between($fieldName, $this->apiUnformatField($value[0]), $this->apiUnformatField($value[1]), $bean);
                 return false;
         }
     }
     return true;
 }