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;
 }