function checkUser($user_to_check, $param = false) { $output = false; $_testvar = ''; $f_arr = $param ? $param : Get::req($this->id . "_input", DOTY_MIXED, false); if (!$user_to_check) { return $output; } if (!$f_arr) { return $output; } $a_obj = Docebo::user()->getAclManager(); $fman = new FieldList(); $filter = $this->json->decode(stripslashes($f_arr)); $user_data_std = $a_obj->getUser($user_to_check, false); $user_data_extra = $fman->getUserFieldEntryData($user_to_check, false); $exclusive = $filter['exclusive']; $conds = $filter['filters']; if (count($conds) <= 0) { return true; } //if no conditions, return true anyway $output = $exclusive; foreach ($conds as $cond) { $id_field = $cond['id_field']; $params = $this->json->decode($cond['value']); if ($params == null) { $params = $cond['value']; } $res = $exclusive; list($id_type, $id) = explode('_', $id_field); switch ($id_type) { // stadard core_user fields 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 $user_data_std[ACL_INFO_USERID] = $a_obj->relativeId($user_data_std[ACL_INFO_USERID]); $res = Field::checkUserField($user_data_std[ACL_INFO_USERID], $params); break; case 1: //firstname $res = Field::checkUserField($user_data_std[ACL_INFO_FIRSTNAME], $params); break; case 2: //lastname $res = Field::checkUserField($user_data_std[ACL_INFO_LASTNAME], $params); break; case 3: //email $res = Field::checkUserField($user_data_std[ACL_INFO_EMAIL], $params); break; case 4: //register date $res = Field_Date::checkUserField($user_data_std[ACL_INFO_REGISTER_DATE], $params); break; case 5: //lastenter $res = Field_Date::checkUserField($user_data_std[ACL_INFO_LASTENTER], $params); break; default: $res = false; } break; // custom fields ----------------------------------- // custom fields ----------------------------------- case _CUSTOM_FIELDS_PREFIX: //first check if the user own this extra field if (isset($user_data_extra[$id])) { $fobj = $fman->getFieldInstance($id); $res = $fobj->checkUserField($user_data_extra[$id], $params); //check if the field value match the condition } else { $res = false; } break; // other fields ------------------------------------- // other fields ------------------------------------- case _OTHER_FIELDS_PREFIX: $ofobj = new OtherFieldTypes(); $res = $ofobj->checkUserField($id, $user_to_check, $params); break; default: $res = false; } if ($exclusive) { //AND of conditions if (!$res) { $output = false; break; } } else { //OR of conditions if ($res) { $output = true; break; } } } return $output; }