Exemple #1
0
 protected function db_update_validation()
 {
     $validation_result = (object) array('success' => false);
     $field_types = $this->get_field_types();
     $required_fields = $this->required_fields;
     $unique_fields = $this->_unique_fields;
     $edit_fields = $this->get_edit_fields();
     if (!empty($required_fields)) {
         foreach ($edit_fields as $edit_field) {
             $field_name = $edit_field->field_name;
             if (!isset($this->validation_rules[$field_name]) && in_array($field_name, $required_fields)) {
                 $this->set_rules($field_name, $field_types[$field_name]->display_as, 'required');
             }
         }
     }
     /** Checking for unique fields. If the field value is not unique then
      * return a validation error straight away, if not continue... */
     if (!empty($unique_fields)) {
         $form_validation = $this->form_validation();
         $form_validation_check = false;
         foreach ($edit_fields as $edit_field) {
             $field_name = $edit_field->field_name;
             if (in_array($field_name, $unique_fields)) {
                 $state_info = $this->getStateInfo();
                 $primary_key = $this->get_primary_key();
                 $field_name_value = $_POST[$field_name];
                 $this->basic_model->where($primary_key, $state_info->primary_key);
                 $row = $this->basic_model->get_row();
                 if (!isset($row->{$field_name})) {
                     throw new Exception("The field name doesn't exist in the database. " . "Please use the unique fields only for fields " . "that exist in the database");
                 }
                 $previous_field_name_value = $row->{$field_name};
                 if (!empty($previous_field_name_value) && $previous_field_name_value != $field_name_value) {
                     $form_validation->set_rules($field_name, $field_types[$field_name]->display_as, 'is_unique[' . $this->basic_db_table . '.' . $field_name . ']');
                     $form_validation_check = true;
                 }
             }
         }
         if ($form_validation_check && !$form_validation->run()) {
             $validation_result->error_message = $form_validation->error_string();
             $validation_result->error_fields = $form_validation->_error_array;
             return $validation_result;
         }
     }
     if (!empty($this->validation_rules)) {
         $form_validation = $this->form_validation();
         $edit_fields = $this->get_edit_fields();
         foreach ($edit_fields as $edit_field) {
             $field_name = $edit_field->field_name;
             if (isset($this->validation_rules[$field_name])) {
                 $rule = $this->validation_rules[$field_name];
                 $form_validation->set_rules($rule['field'], $rule['label'], $rule['rules']);
             }
         }
         if ($form_validation->run()) {
             $validation_result->success = true;
         } else {
             $validation_result->error_message = $form_validation->error_string();
             $validation_result->error_fields = $form_validation->_error_array;
         }
     } else {
         $validation_result->success = true;
     }
     return $validation_result;
 }