/**
  * Validate field form
  * 
  * @param ilPropertyFormGUI $form 
  * @param ilUserDefinedFields $user_field_definitions 
  * @param array $access 
  * @return bool
  */
 protected function validateForm($form, $user_field_definitions, array &$access)
 {
     global $lng;
     if ($form->checkInput()) {
         $valid = true;
         $incoming = (array) $form->getInput("access");
         $access = array();
         foreach (array_keys($this->getAccessOptions()) as $id) {
             $access[$id] = in_array($id, $incoming);
         }
         if ($access['required'] && !$access['visib_reg']) {
             $this->confirm_change = true;
             $form->getItemByPostVar("access")->setAlert($lng->txt('udf_required_requires_visib_reg'));
             $valid = false;
         }
         if (!$this->field_id && $user_field_definitions->nameExists($form->getInput("name"))) {
             $form->getItemByPostVar("name")->setAlert($lng->txt('udf_name_already_exists'));
             $valid = false;
         }
         if ($form->getInput("field_type") == UDF_TYPE_SELECT) {
             $user_field_definitions->setFieldValues($form->getInput("selvalue"));
             if ($error = $user_field_definitions->validateValues()) {
                 switch ($error) {
                     case UDF_DUPLICATE_VALUES:
                         $form->getItemByPostVar("selvalue")->setAlert($lng->txt('udf_duplicate_entries'));
                         $valid = false;
                         break;
                 }
             }
         }
         if (!$valid) {
             ilUtil::sendFailure($lng->txt("form_input_not_valid"));
         }
         return $valid;
     }
     return false;
 }
 /**
  * Validate field form
  * 
  * @param ilPropertyFormGUI $form 
  * @param ilUserDefinedFields $user_field_definitions 
  * @param array $access 
  * @param array $a_field_permissions 
  * @return bool
  */
 protected function validateForm($form, $user_field_definitions, array &$access, array $a_field_permissions = null)
 {
     global $lng;
     if ($form->checkInput()) {
         $valid = true;
         $incoming = (array) $form->getInput("access");
         if ($a_field_permissions) {
             $perm_map = self::getAccessPermissions();
         }
         $access = array();
         foreach (array_keys($this->getAccessOptions()) as $id) {
             $access[$id] = in_array($id, $incoming);
             // disabled fields
             if ($a_field_permissions && !$a_field_permissions[ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS][$perm_map[$id]]) {
                 $access[$id] = $this->field_definition[$id];
             }
         }
         if ($access['required'] && !$access['visib_reg']) {
             $this->confirm_change = true;
             $form->getItemByPostVar("access")->setAlert($lng->txt('udf_required_requires_visib_reg'));
             $valid = false;
         }
         if (!$this->field_id && $user_field_definitions->nameExists($form->getInput("name"))) {
             $form->getItemByPostVar("name")->setAlert($lng->txt('udf_name_already_exists'));
             $valid = false;
         }
         if ($form->getInput("field_type") == UDF_TYPE_SELECT && (!$a_field_permissions || $a_field_permissions[ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY][ilUDFPermissionHelper::SUBACTION_FIELD_PROPERTIES])) {
             $user_field_definitions->setFieldValues($form->getInput("selvalue"));
             if ($error = $user_field_definitions->validateValues()) {
                 switch ($error) {
                     case UDF_DUPLICATE_VALUES:
                         $form->getItemByPostVar("selvalue")->setAlert($lng->txt('udf_duplicate_entries'));
                         $valid = false;
                         break;
                 }
             }
         }
         if (!$valid) {
             ilUtil::sendFailure($lng->txt("form_input_not_valid"));
         }
         return $valid;
     }
     return false;
 }