/** * 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'); }
/** * 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; }
/** * 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'); }