/** * Add custom search query (from the get param 'q') * * @param AIR2_Query $q * @param string $alias * @param string $search * @param boolean $useOr */ public static function add_search_str(&$q, $alias, $search, $useOr = null) { // make sure "SavedSearch" is part of the query $from_parts = $q->getDqlPart('from'); foreach ($from_parts as $string_part) { if ($match = strpos($string_part, "{$alias}.SavedSearch")) { $offset = strlen("{$alias}.SavedSearch") + 1; // remove space $pss_alias = substr($string_part, $match + $offset); $a = $pss_alias ? "{$pss_alias}." : ""; $str = "(" . $a . "ssearch_name LIKE ?)"; if ($useOr) { $q->orWhere($str, array("{$search}%")); } else { $q->addWhere($str, array("{$search}%")); } break; } } }
/** * Add custom search query (from the get param 'q') * * @param AIR2_Query $q * @param string $alias * @param string $search * @param boolean $useOr */ public static function add_search_str(&$q, $alias, $search, $useOr = null) { $mod = 'Organization'; if (InqOrg::$UUID_COL == 'Inquiry:inq_uuid') { $mod = 'Inquiry'; } // make sure "Organization" or "Inquiry" is part of the query $from_parts = $q->getDqlPart('from'); foreach ($from_parts as $string_part) { if ($match = strpos($string_part, "{$alias}.{$mod}")) { $offset = strlen("{$alias}.{$mod}") + 1; // remove space $org_alias = substr($string_part, $match + $offset); $a = $org_alias ? "{$org_alias}." : ""; if ($mod == 'Organization') { $str = "(" . $a . "org_name LIKE ? OR " . $a . "org_display_name LIKE ?)"; } else { $str = "(" . $a . "inq_title LIKE ? OR " . $a . "inq_ext_title LIKE ?)"; } if ($useOr) { $q->orWhere($str, array("%{$search}%", "%{$search}%")); } else { $q->addWhere($str, array("%{$search}%", "%{$search}%")); } break; } } }
/** * Add custom search query (from the get param 'q') * * @param AIR2_Query $q * @param string $alias * @param string $search * @param boolean $useOr */ public static function add_search_str(&$q, $alias, $search, $useOr = null) { // find the "Organization" alias in the query $from_parts = $q->getDqlPart('from'); foreach ($from_parts as $string_part) { if ($match = strpos($string_part, "{$alias}.Organization")) { $offset = strlen("{$alias}.Organization") + 1; // remove space $usr_alias = substr($string_part, $match + $offset); Organization::add_search_str($q, $usr_alias, $search, $useOr); break; } } }
/** * Add custom search query (from the get param 'q') * * @param AIR2_Query $q * @param string $alias * @param string $search * @param boolean $useOr */ public static function add_search_str(&$q, $alias, $search, $useOr = null) { $a = $alias ? "{$alias}." : ""; $str = "({$a}email_campaign_name like ? or email_subject_line like ?)"; $params = array("%{$search}%", "%{$search}%"); // try searching cre_user and organization if ($alias) { $parts = $q->getDqlPart('from'); foreach ($parts as $dql) { // CreUser if (preg_match("/{$alias}.CreUser.*\$/", $dql, $matches)) { $usr_alias = preg_replace("/{$alias}.CreUser\\s*/", '', $matches[0]); if ($usr_alias) { $tmp = Doctrine_Query::create(); User::add_search_str($tmp, $usr_alias, $search); $usrq = array_pop($tmp->getDqlPart('where')); $usrp = $tmp->getFlattenedParams(); $str .= " or {$usrq}"; $params = array_merge($params, $usrp); } } // Organization if (preg_match("/{$alias}.Organization.*\$/", $dql, $matches)) { $org_alias = preg_replace("/{$alias}.Organization\\s*/", '', $matches[0]); if ($org_alias) { $tmp = Doctrine_Query::create(); Organization::add_search_str($tmp, $org_alias, $search); $orgq = array_pop($tmp->getDqlPart('where')); $orgp = $tmp->getFlattenedParams(); $str .= " or {$orgq}"; $params = array_merge($params, $orgp); } } } } // add to query if ($useOr) { $q->orWhere($str, $params); } else { $q->addWhere($str, $params); } }