function getUsers($param = false) { //retrieve all users matching given conditions $output = array(); $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); $a_obj = new DoceboACLManager(); $fman = new FieldList(); $user_to_check = Get::req('user', DOTY_INT, false); $f_arr = $param ? $param : urldecode(stripslashes(Get::req($this->id . "_input", DOTY_STRING, false))); $filter = is_string($f_arr) ? $json->decode(stripslashes($f_arr)) : $f_arr; $exclusive = $filter['exclusive']; $conds = $filter['filters']; //return a void array if no conditions specified if (count($conds) <= 0) { return array(); } //compose nested query // base query /Anonymous $base_query = "SELECT idst, userid " . " FROM %adm_user "; $std_condition = array(); $in_conditions = array(); $other_conditions = array(); foreach ($conds as $cond) { $id_field = $cond['id_field']; $params = $json->decode($cond['value']); if ($params == null) { $params = $cond['value']; } $res = $exclusive; list($id_type, $id) = explode('_', $id_field); switch ($id_type) { case _STANDARD_FIELDS_PREFIX: require_once _adm_ . '/modules/field/class.field.php'; require_once _adm_ . '/modules/field/class.date.php'; switch ($id) { case 0: //userid $temp = " userid "; switch ($params['cond']) { case 2: $temp .= " = '" . $a_obj->absoluteId($params['value']) . "' "; break; //equals //equals case 0: $temp .= " LIKE '%" . $params['value'] . "%' "; break; //contains //contains case 3: $temp .= " <> '" . $a_obj->absoluteId($params['value']) . "' "; break; //not equal //not equal case 1: $temp .= " NOT LIKE '%" . $params['value'] . "%' "; break; //does not contain //does not contain case 4: $temp .= " LIKE '" . $a_obj->absoluteId($params['value']) . "%' "; break; //starts with //starts with case 5: $temp .= " LIKE '%" . $params['value'] . "' "; break; //ends with //ends with default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; case 1: //firstname $temp = " firstname "; switch ($params['cond']) { case 2: $temp .= " = '" . $params['value'] . "' "; break; //equals //equals case 0: $temp .= " LIKE '%" . $params['value'] . "%' "; break; //contains //contains case 3: $temp .= " <> '" . $params['value'] . "' "; break; //not equal //not equal case 1: $temp .= " NOT LIKE '%" . $params['value'] . "%' "; break; //does not contain //does not contain case 4: $temp .= " LIKE '" . $params['value'] . "%' "; break; //starts with //starts with case 5: $temp .= " LIKE '%" . $params['value'] . "' "; break; //ends with //ends with default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; case 2: //lastname $temp = " lastname "; switch ($params['cond']) { case 2: $temp .= " = '" . $params['value'] . "' "; break; //equals //equals case 0: $temp .= " LIKE '%" . $params['value'] . "%' "; break; //contains //contains case 3: $temp .= " <> '" . $params['value'] . "' "; break; //not equal //not equal case 1: $temp .= " NOT LIKE '%" . $params['value'] . "%' "; break; //does not contain //does not contain case 4: $temp .= " LIKE '" . $params['value'] . "%' "; break; //starts with //starts with case 5: $temp .= " LIKE '%" . $params['value'] . "' "; break; //ends with //ends with default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; case 3: //email $temp = " email "; switch ($params['cond']) { case 2: $temp .= " = '" . $params['value'] . "' "; break; //equals //equals case 0: $temp .= " LIKE '%" . $params['value'] . "%' "; break; //contains //contains case 3: $temp .= " <> '" . $params['value'] . "' "; break; //not equal //not equal case 1: $temp .= " NOT LIKE '%" . $params['value'] . "%' "; break; //does not contain //does not contain case 4: $temp .= " LIKE '" . $params['value'] . "%' "; break; //starts with //starts with case 5: $temp .= " LIKE '%" . $params['value'] . "' "; break; //ends with //ends with default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; case 4: //register date $date = substr(Format::dateDb($params['value'], 'date'), 0, 10); $temp = " register_date "; switch ($params['cond']) { case 0: $temp .= " < '" . $date . " 00:00:00' "; break; //< //< case 1: $temp .= " <= '" . $date . " 23:59:59' "; break; //<= //<= case 2: $temp = " ( register_date >= '" . $date . " 00:00:00' AND register_date <= '" . $date . " 23:59:59' ) "; break; //= //= case 3: $temp .= " >= '" . $date . " 00:00:00' "; break; //>= //>= case 4: $temp .= " > '" . $date . " 23:59:59' "; break; //> //> default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; case 5: //lastenter $date = substr(Format::dateDb($params['value'], 'date'), 0, 10); $temp = " lastenter "; switch ($params['cond']) { case 0: $temp .= " < '" . $date . " 00:00:00' "; break; //< //< case 1: $temp .= " <= '" . $date . " 23:59:59' "; break; //<= //<= case 2: $temp = " ( lastenter >= '" . $date . " 00:00:00' AND lastenter <= '" . $date . " 23:59:59' ) "; break; //= //= case 3: $temp .= " >= '" . $date . " 00:00:00' "; break; //>= //>= case 4: $temp .= " > '" . $date . " 23:59:59' "; break; //> //> default: $temp .= " NOT LIKE '%' "; //unexistent } $std_condition[] = $temp; break; default: } break; // filter on a custom field // filter on a custom field case _CUSTOM_FIELDS_PREFIX: $fobj = $fman->getFieldInstance($id); $in_conditions[] = $fobj->getFieldQuery($params); break; // other special field // other special field case _OTHER_FIELDS_PREFIX: $ofobj = new OtherFieldsTypes(); $other_conditions[] = $ofobj->getFieldQuery($id, $params); break; default: } //end switch } //end foreach if ($exclusive) { $query = $base_query . ' WHERE 1 ' . (!empty($std_condition) ? " AND " . implode(" AND ", $std_condition) : '') . (!empty($in_conditions) ? ' AND idst IN ( ' . implode(" ) AND idst IN ( ", $in_conditions) . ' ) ' : '') . (!empty($other_conditions) ? ' AND idst IN ( ' . implode(" ) AND idst IN ( ", $other_conditions) . ' ) ' : ''); } else { $query = $base_query . ' WHERE 0 ' . (!empty($std_condition) ? ' OR ( ' . implode(" ) OR idst IN ( ", $std_condition) . ' ) ' : '') . (!empty($in_conditions) ? ' OR idst IN ( ' . implode(" ) OR idst IN ( ", $in_conditions) . ' ) ' : '') . (!empty($other_conditions) ? ' OR idst IN ( ' . implode(" ) OR idst IN ( ", $other_conditions) . ' ) ' : ''); } //produce output $output = array(); $re = $this->db->query($query); while ($rw = $this->db->fetch_assoc($re)) { if ($rw['userid'] != '/Anonymous') { $output[] = $rw['idst']; } } return $output; }