Exemple #1
0
 public function hasErrors(Result $errors)
 {
     if ($errors->isValid()) {
         return FALSE;
     }
     foreach ($this->fields as $field) {
         if ($errors->hasErrors($field->getName())) {
             return TRUE;
         }
     }
     return FALSE;
 }
Exemple #2
0
 /**
  * Run the validation
  *
  * @param Array $values Data to validate
  * @param Bool $partial Partial validation? (@see `validatePartial()`)
  * @return Result object
  */
 protected function _validate($values, $partial = FALSE)
 {
     $result = new Result();
     if (is_object($values)) {
         $values = $this->prepForObject($values);
     }
     foreach ($this->rules as $key => $rules) {
         $value = NULL;
         if (array_key_exists($key, $values)) {
             $value = $values[$key];
         }
         $rules = $this->setupRules($rules);
         foreach ($rules as $rule) {
             if ($partial && $rule instanceof Rule\Required && $value === NULL) {
                 continue;
             }
             $rule->setAllValues($values);
             $rule_return = $rule->validate($key, $value);
             // Skip the rest of the rules?
             // e.g. Presence failed
             if ($rule->isFailed()) {
                 break;
             }
             // Hard stopping rule? Record the error and move on.
             // e.g. Required failed
             if ($rule->isStopped()) {
                 $result->addFailed($key, $rule);
                 break;
             }
             // Passed? Move on to the next rule
             if ($rule_return === TRUE) {
                 continue;
             }
             // At this point:
             //
             // 1) The rule failed (`$rule_return` === FALSE)
             // 2) This field is *not* required (no self::STOP)
             //
             // This means we have an incorrect optional value. Accordingly,
             // empty values are ok (because optional) anything else is not.
             if (is_string($value) && trim($value) !== '' || is_array($value) && !empty($value)) {
                 $result->addFailed($key, $rule);
             }
         }
     }
     return $result;
 }
Exemple #3
0
 /**
  * Combines the results of two different model validation calls
  *
  * @param bool|ValidationResult $one FALSE (if nothing was submitted) or a
  *   ValidationResult object.
  * @param bool|ValidationResult $two FALSE (if nothing was submitted) or a
  *   ValidationResult object.
  * @return bool|ValidationResult $one FALSE (if nothing was submitted) or a
  *   ValidationResult object.
  */
 private function combineResults($one, $two)
 {
     $result = FALSE;
     if ($one instanceof ValidationResult) {
         $result = $one;
         if ($two instanceof ValidationResult && $two->failed()) {
             foreach ($two->getFailed() as $field => $rules) {
                 foreach ($rules as $rule) {
                     $result->addFailed($field, $rule);
                 }
             }
         }
     } elseif ($two instanceof ValidationResult) {
         $result = $two;
     }
     return $result;
 }
Exemple #4
0
 /**
  * Takes a model validation result object and checks for errors on the
  * posted 'ee_fv_field' and returns an error message, or success message
  * but only if the request was an AJAX request.
  *
  * @param EllisLab\ExpressionEngine\Service\Validation\Result $result A model validation result
  * @return array|NULL NULL if the request was not via AJAX, otherwise an
  *   an array with an error message or a success notification.
  */
 protected function ajaxValidation(ValidationResult $result)
 {
     if (ee()->input->is_ajax_request()) {
         $field = ee()->input->post('ee_fv_field');
         if ($result->hasErrors($field)) {
             return array('error' => $result->renderError($field));
         } else {
             return array('success');
         }
     }
     return NULL;
 }
Exemple #5
0
 public function update()
 {
     if (empty($_POST)) {
         ee()->functions->redirect($this->base_url);
     }
     $errors = new ValidationResult();
     $templates = ee()->api->get('Template')->with('TemplateGroup')->with('TemplateRoute')->filter('site_id', ee()->config->item('site_id'))->order('TemplateRoute.order', 'asc')->order('TemplateGroup.group_name', 'asc')->order('template_name', 'asc')->all();
     $submitted = ee()->input->post('routes');
     $order = array_keys($submitted);
     foreach ($templates as $template) {
         $id = $template->template_id;
         $submitted[$id]['route'] = trim($submitted[$id]['route']);
         if (!$template->TemplateRoute) {
             $template->TemplateRoute = ee('Model')->make('TemplateRoute');
         }
         $route = $template->TemplateRoute;
         if (empty($submitted[$id]['route'])) {
             $template->TemplateRoute = NULL;
             continue;
         }
         $route->route_required = $submitted[$id]['required'] != 'n';
         $route->route = $submitted[$id]['route'];
         $route->order = array_search($id, $order);
         $result = $route->validate();
         if ($result->isNotValid()) {
             foreach ($result->getFailed() as $field => $rules) {
                 foreach ($rules as $rule) {
                     $errors->addFailed("routes[{$id}][route]", $rule);
                 }
             }
         }
     }
     if ($errors->isValid()) {
         $templates->save();
         ee('CP/Alert')->makeInline()->asSuccess()->withTitle(lang('template_routes_saved'))->addToBody(lang('template_routes_saved_desc'))->defer();
         ee()->functions->redirect($this->base_url);
     } else {
         ee()->load->helper('html_helper');
         ee('CP/Alert')->makeInline()->asIssue()->withTitle(lang('template_routes_not_saved'))->addToBody(lang('template_routes_not_saved_desc'))->now();
         $this->index($templates, $errors);
     }
 }