Example #1
0
 function _getSearchUsersBaseQuery($internal_fields, $extra_fields = FALSE, $idst_filter = FALSE)
 {
     require_once $GLOBALS["where_framework"] . "/lib/lib.field.php";
     $field_names = $this->_getTableUserFieldNames();
     // "SELECT * FROM ".. is made by the functions that calls this one..
     $res = $this->_getTableUser() . " WHERE valid='1' ";
     $internal_fields_tot = is_array($internal_fields) ? count($internal_fields) : 0;
     if ($internal_fields_tot > 0) {
         $res .= "AND (";
     }
     $i = 1;
     foreach ($internal_fields as $field_id => $val) {
         if (isset($val["add_before"]) && !empty($val["add_before"])) {
             $res .= " " . $val["add_before"];
         }
         $res .= $field_names[$field_id];
         $comp_op = isset($val["comp_op"]) && !empty($val["comp_op"]) ? $val["comp_op"] : "=";
         if (!isset($val["like"]) || $val["like"] == "off") {
             $res .= $comp_op . "'" . $val["filter"] . "' ";
         } else {
             if ($val["like"] == "both") {
                 $res .= " LIKE '%" . $val["filter"] . "%' ";
             } else {
                 if ($val["like"] == "start") {
                     $res .= " LIKE '%" . $val["filter"] . "' ";
                 } else {
                     if ($val["like"] == "end") {
                         $res .= " LIKE '" . $val["filter"] . "%' ";
                     }
                 }
             }
         }
         if (isset($val["add_after"]) && !empty($val["add_after"])) {
             $res .= $val["add_after"] . " ";
         }
         if ($i < $internal_fields_tot) {
             if (isset($val["nextop"]) && !empty($val["nextop"])) {
                 $next_operator = strtoupper($val["nextop"]);
             } else {
                 $next_operator = "AND";
             }
             $res .= $next_operator . " ";
         }
         $i++;
     }
     if ($internal_fields_tot > 0) {
         $res .= ") ";
     }
     if ($extra_fields !== FALSE) {
         $fl = new FieldList();
         $fl->setFieldEntryTable($GLOBALS['prefix_fw'] . '_field_userentry');
         // <- ??!
         $fields = $extra_fields["fields"];
         $method = $extra_fields["method"];
         $like_type = $extra_fields["like"];
         $search = $extra_fields["search"];
         $found_users = $fl->quickSearchUsersFromEntry($fields, $method, $like_type, $search);
         if ($idst_filter !== FALSE) {
             $idst_filter = array_intersect($idst_filter, $found_users);
         } else {
             $idst_filter = $found_users;
         }
     }
     if ($idst_filter !== FALSE) {
         $res .= "AND idst IN (" . implode(",", $idst_filter) . ") ";
     }
     $res .= "ORDER BY userid ";
     return $res;
 }