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