Пример #1
0
 /**
  * This method is forcing to return an empty query all the time
  * @param SugarQuery_Builder_Where $where
  */
 public static function addInvalidFilter(SugarQuery_Builder_Where $where)
 {
     $where->queryAnd()->isNull('id');
 }
Пример #2
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;
 }
Пример #3
0
 /**
  * This function adds a favorite filter to the sugar query
  *
  * @param SugarQuery $q The whole SugarQuery object
  * @param SugarQuery_Builder_Where $where The Where part of the SugarQuery object
  * @param string $link Which module are you adding the favorite filter to.
  */
 protected static function addFavoriteFilter(SugarQuery $q, SugarQuery_Builder_Where $where, $link, $joinType = 'LEFT')
 {
     $sfOptions = array('joinType' => $joinType, 'favorites' => true);
     if ($link == '' || $link == '_this') {
         $link_name = 'favorites';
     } else {
         $joinTo = $q->join($link, array('joinType' => 'LEFT'));
         $sfOptions['joinTo'] = $joinTo;
         $sfOptions['joinModule'] = $q->getFromBean()->module_name;
         $link_name = "sf_" . $link;
     }
     $fjoin = $q->join($link_name, $sfOptions);
     $where->notNull($fjoin->joinName() . '.id');
 }