/** * This function performs the validation work for complex object models. * * In addition to checking the current object, all related objects will * also be validated. If all pass then <code>true</code> is returned; otherwise * an aggreagated array of ValidationFailed objects will be returned. * * @param array $columns Array of column names to validate. * @return mixed <code>true</code> if all validations pass; array of <code>ValidationFailed</code> objets otherwise. */ protected function doValidate($columns = null) { if (!$this->alreadyInValidation) { $this->alreadyInValidation = true; $retval = null; $failureMap = array(); // We call the validate method on the following object(s) if they // were passed to this object by their coresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aDonor !== null) { if (!$this->aDonor->validate($columns)) { $failureMap = array_merge($failureMap, $this->aDonor->getValidationFailures()); } } if ($this->aGiftTypeRelatedByGiftType !== null) { if (!$this->aGiftTypeRelatedByGiftType->validate($columns)) { $failureMap = array_merge($failureMap, $this->aGiftTypeRelatedByGiftType->getValidationFailures()); } } if ($this->aCampaign !== null) { if (!$this->aCampaign->validate($columns)) { $failureMap = array_merge($failureMap, $this->aCampaign->getValidationFailures()); } } if ($this->aFund !== null) { if (!$this->aFund->validate($columns)) { $failureMap = array_merge($failureMap, $this->aFund->getValidationFailures()); } } if (($retval = DonationPeer::doValidate($this, $columns)) !== true) { $failureMap = array_merge($failureMap, $retval); } $this->alreadyInValidation = false; } return !empty($failureMap) ? $failureMap : true; }
<?php $errors = array(); if (!empty($_POST)) { $domain = filter_input(INPUT_POST, 'domain', FILTER_SANITIZE_STRING); $own_domain = filter_input(INPUT_POST, 'own_domain', FILTER_SANITIZE_URL); $candidate_number = filter_input(INPUT_POST, 'candidate_number', FILTER_SANITIZE_NUMBER_INT); $plan_id = filter_input(INPUT_POST, 'plan_id', FILTER_SANITIZE_NUMBER_INT); $state = filter_input(INPUT_POST, 'state', FILTER_SANITIZE_NUMBER_INT); $city = filter_input(INPUT_POST, 'city', FILTER_SANITIZE_NUMBER_INT); $observations = filter_input(INPUT_POST, 'observations', FILTER_SANITIZE_STRING); $campaign = new Campaign(array('domain' => $domain, 'own_domain' => $own_domain, 'plan_id' => $plan_id, 'candidate_number' => $candidate_number, 'state' => $state, 'city' => $city, 'observations' => $observations)); if ($campaign->validate()) { $campaign->create(); if (switch_to_blog($campaign->blog_id)) { wp_redirect(home_url()); } else { //TODO: improve error handling for campaign creation $errors = array('error' => Campaign::getStrings('NaoFoiPossivelCriar')); } } else { $errors = $campaign->errorHandler->errors; } } // hack to make the redirection above work (without using noheader // the call to wp_redirect generate a headers already sent warning) if (isset($_GET['noheader'])) { require_once ABSPATH . 'wp-admin/admin-header.php'; } ?>