public function beforeValidate(Model $model, $options = array())
 {
     if (array_key_exists($model->alias, $model->request->data)) {
         if (array_key_exists('contact_type_id', $model->data[$model->alias])) {
             $model->validator()->remove('value');
             switch ($model->data[$model->alias]['contact_type_id']) {
                 // 1 -> Mobile, 2 -> Phone, 3 -> Fax, 4 -> Email, 5 -> Other
                 case '1':
                 case '2':
                 case '3':
                     $model->validator()->add('value', 'required', array('rule' => 'Numeric', 'message' => $model->getErrorMessage('valuePhone')));
                     break;
                 case '4':
                     $model->validator()->add('value', 'required', array('rule' => array('email', true), 'message' => $model->getErrorMessage('valueEmail')));
                     break;
                 default:
                     // 5 -> Other
                     $model->validator()->add('value', 'required', array('rule' => 'notEmpty', 'message' => $model->getErrorMessage('value')));
                     break;
             }
         }
     }
     $model->validator()->remove('name');
     $model->validator()->add('name', 'required', array('rule' => 'notEmpty', 'message' => $model->getErrorMessage('value')));
     $model->validator()->remove('contact_type_id');
     $model->validator()->add('contact_type_id', 'required', array('rule' => 'notEmpty', 'message' => $model->getErrorMessage('contact_type_id')));
     return parent::beforeValidate($model, $options);
 }
Пример #2
0
 /**
  * beforeValidate is called before a model is validated, you can use this callback to
  * add behavior validation rules into a models validate array. Returning false
  * will allow you to make the validation fail.
  *
  * @param Model $model Model using this behavior
  * @param array $options Options passed from Model::save().
  * @return mixed False or null will abort the operation. Any other result will continue.
  * @see Model::save()
  */
 public function beforeValidate(Model $model, $options = array())
 {
     //ページデータをセット
     $referencePageId = $model->getReferencePageId($model->data);
     $fields = array('room_id', 'permalink');
     $targetPage = $model->findById($referencePageId, $fields);
     if (empty($targetPage)) {
         return false;
     }
     $model->data['Page']['room_id'] = Current::read('Room.id');
     $slug = $model->data['Page']['slug'];
     if (!isset($slug)) {
         $slug = '';
     }
     $model->data['Page']['slug'] = $slug;
     $permalink = '';
     if (strlen($targetPage['Page']['permalink']) !== 0) {
         $permalink = $targetPage['Page']['permalink'] . '/';
     }
     $permalink .= $slug;
     $model->data['Page']['permalink'] = $permalink;
     $model->data['Page']['is_published'] = true;
     $model->data['Page']['is_container_fluid'] = false;
     return parent::beforeValidate($model, $options);
 }
Пример #3
0
 public function beforeValidate(Model $Model, $options = array())
 {
     parent::beforeValidate($Model, $options);
     if ($this->settings[$Model->alias]['before'] === 'validate') {
         return $this->geocode($Model);
     }
     return true;
 }
Пример #4
0
 public function beforeValidate(Model $Model)
 {
     parent::beforeValidate($Model);
     if ($this->settings[$Model->alias]['before'] == 'validate') {
         $this->process($Model);
     }
     return true;
 }
 public function beforeValidate(Model $Model)
 {
     $return = parent::beforeValidate($Model);
     if ($this->settings[$Model->alias]['before'] == 'validate') {
         # we dont want to return the value, because other fields might then not be validated
         # (save will not continue with errors, anyway)
         $this->confirm($Model, $return);
     }
     return $return;
 }
 public function beforeValidate(Model $model, $options = array())
 {
     if (!empty($model->data[$model->alias])) {
         $save = array('lista' => $this->listId);
         foreach ($model->data[$model->alias] as $field => $value) {
             if (!empty($this->fields[$field])) {
                 $this->toSave[$this->fields[$field]] = $value;
             }
         }
         $this->toSave = array_merge($save, $this->toSave);
     }
     return parent::beforeValidate($model, $options);
 }
Пример #7
0
	/**
	* Trim através do callback beforeValidate
	*
	* @see ModelBehavior::beforeValidate()
	*/
	public function beforeValidate(Model $model, $options = array())
	{
		parent::beforeValidate($model, $options);

		$this->_Model = $model;

		if (isset($this->_disabledFor[$model->alias])) {
			return true;
		}

		$this->_autoTrim();

		return true;
	}
Пример #8
0
 /**
  * beforeValidate is called before a model is validated, you can use this callback to
  * add behavior validation rules into a models validate array. Returning false
  * will allow you to make the validation fail.
  *
  * @param Model $model モデル
  * @param array $options Options passed from Model::save().
  * @return mixed False or null will abort the operation. Any other result will continue.
  * @link http://book.cakephp.org/2.0/ja/models/callback-methods.html#beforevalidate
  * @see Model::save()
  */
 public function beforeValidate(Model $model, $options = array())
 {
     parent::beforeValidate($model, $options);
     if (in_array('edit', $options, true)) {
         // 編集時の動画 任意 対応
         if (isset($model->data[$model->alias][Video::VIDEO_FILE_FIELD]['size']) && $model->data[$model->alias][Video::VIDEO_FILE_FIELD]['size'] === 0) {
             unset($model->data[$model->alias][Video::VIDEO_FILE_FIELD]);
         }
         // 編集時のサムネイル 任意 対応
         if (isset($model->data[$model->alias][Video::THUMBNAIL_FIELD]['size']) && $model->data[$model->alias][Video::THUMBNAIL_FIELD]['size'] === 0) {
             unset($model->data[$model->alias][Video::THUMBNAIL_FIELD]);
         }
     }
     return true;
 }
 /**
  * Eseguita prima di una save(). Controlla se i campi specificati nelle impostazioni
  * sono vuoti e in tal caso li inizializza con il rispettivo valore.
  *
  * @param Model $Model Model che usa il behavior
  * @param array $options
  * @return array
  */
 public function beforeValidate(Model $Model, $options = array())
 {
     // Scorro i model presenti
     foreach ($Model->data as $m => $data) {
         // Controllo se vi sono campi per questo model
         if (isset($this->settings['fields'][$m])) {
             // Scorro i fields per questo model nei settings
             foreach ($this->settings['fields'][$m] as $field => $value) {
                 // Controllo se il campo esiste nel data ed è vuoto
                 if (array_key_exists($field, $data) && (!$data[$field] || is_null($data[$field]))) {
                     debug('modifico campo: ' . $data[$field]);
                     $Model->data[$m][$field] = $value;
                 }
             }
         }
     }
     return parent::beforeValidate($Model, $options);
 }
Пример #10
0
 public function beforeValidate(Model $Model, &$queryData)
 {
     parent::beforeValidate($Model);
     if (!empty($this->Model->whitelist)) {
         $this->Model->whitelist = array_merge($Model->whitelist, $this->fields());
     }
     if (!$this->_validateCaptchaMinTime($Model->data[$Model->alias])) {
         $this->Model->invalidate('captcha', 'captchaResultTooFast', true);
     } elseif (!$this->_validateCaptchaMaxTime($Model->data[$Model->alias])) {
         $this->Model->invalidate('captcha', 'captchaResultTooLate', true);
     } elseif (!$this->_validateDummyField($Model->data[$Model->alias])) {
         $this->Model->invalidate('captcha', 'captchaIllegalContent', true);
     } elseif (in_array($this->settings[$Model->alias]['type'], array('active', 'both')) && !$this->_validateCaptcha($Model->data[$Model->alias])) {
         $this->Model->invalidate('captcha', 'captchaResultIncorrect', true);
     }
     unset($Model->data[$Model->alias]['captcha']);
     unset($Model->data[$Model->alias]['captcha_hash']);
     unset($Model->data[$Model->alias]['captcha_time']);
     return true;
 }
 public function beforeValidate(Model $model, $options = array())
 {
     $fields = $this->settings[$model->alias];
     $alias = $model->alias;
     $fieldName = $fields['content'];
     if (!empty($model->data[$alias][$fieldName])) {
         $file = $model->data[$alias][$fieldName];
         if ($file['error'] == 4 && $fields['allowEmpty'] == true) {
             unset($model->data[$alias][$fieldName]);
         }
     } else {
         // if the file is null, remove validation
         if (!empty($model->data[$model->alias][$fields['name']])) {
             unset($model->validate[$fieldName]);
             $model->data[$alias][$fields['name']] = null;
             $model->data[$alias][$fieldName] = null;
             return true;
         }
     }
     return parent::beforeValidate($model, $options);
 }
Пример #12
0
 /**
  * Validação é feita no callback beforeValidate()
  *
  * @see Cake/Model/ModelBehavior::beforeValidate()
  *
  * @return bool $success
  */
 public function beforeValidate(Model $model, $options = array())
 {
     parent::beforeValidate($model, $options);
     $this->model = $model;
     if (!empty($this->settings['preConditions']) && is_array($this->settings['preConditions'])) {
         if (!$this->evalConditions($this->settings['preConditions'])) {
             return true;
         }
     }
     $pass = null;
     if (isset($model->data[$model->alias][$this->settings['fields']['password']])) {
         $pass = $model->data[$model->alias][$this->settings['fields']['password']];
     }
     $confirm = null;
     // caso haja um campo referente a confirmação de senha
     if ($this->settings['haveConfirm'] && isset($model->data[$model->alias][$this->settings['fields']['confirm']])) {
         $confirm = $model->data[$model->alias][$this->settings['fields']['confirm']];
     }
     $success = $this->isValidPassword($pass, $confirm);
     if ($success === true) {
         return true;
     }
     // adiciona os erros encontrados no atributo validationErrors do modelo atual
     $model->validationErrors = array_merge($model->validationErrors, $success);
     // caso a configuração force a limpeza dos valores (senha e confirmação)
     if (!$this->settings['unsetInFailure']) {
         return true;
     }
     if (isset($model->data[$model->alias][$this->settings['fields']['password']])) {
         unset($model->data[$model->alias][$this->settings['fields']['password']]);
     }
     if (isset($model->data[$model->alias][$this->settings['fields']['confirm']])) {
         unset($model->data[$model->alias][$this->settings['fields']['confirm']]);
     }
     return true;
 }
Пример #13
0
 function beforeValidate(&$Model)
 {
     extract($this->settings);
     foreach ($Model->hasAndBelongsToMany as $assoc_key => $assoc_model) {
         if (empty($Model->data[$assoc_key][$form_field])) {
             continue;
         }
         $tagIds = array();
         if ($assoc_model['className'] == $assoc_classname) {
             if (!empty($Model->data[$assoc_key])) {
                 $tagIds = $this->_getTags($Model, $assoc_key, $assoc_model);
             }
             if (!empty($tagIds)) {
                 foreach ($tagIds as $key => &$value) {
                     $value[$assoc_model['with']][$assoc_model['associationForeignKey']] = $value[$assoc_key]['id'];
                     $Model->data[$assoc_key][$key] = $value;
                 }
                 unset($value);
                 unset($Model->data[$assoc_key][$form_field]);
             }
         }
     }
     return parent::beforeValidate($Model);
 }
Пример #14
0
 public function beforeValidate(\Model $model, $options = array())
 {
     return parent::beforeValidate($model, $options);
 }
 /**
  * Run before a model is saved, used to set up slug for model.
  *
  * @param object $model Model about to be saved.
  * @return boolean true if save should proceed, false otherwise
  */
 function beforeValidate($model)
 {
     $return = parent::beforeValidate($model);
     $settings = $this->settings[$model->alias];
     $fields = (array) $settings['label'];
     if ($settings['real']) {
         foreach ($fields as $field) {
             if (!$model->hasField($field)) {
                 return $return;
             }
         }
     }
     if ((!$settings['real'] || $model->hasField($settings['slug'])) && ($settings['overwrite'] || empty($model->id))) {
         $label = '';
         foreach ($fields as $field) {
             if (!empty($model->data[$model->alias][$field])) {
                 $label .= (!empty($label) ? ' ' : '') . $model->data[$model->alias][$field];
             }
         }
         if (!empty($label)) {
             $slug = $this->_slug($label, $settings);
             $conditions = array("{$model->alias}.{$settings['slug']} LIKE" => "{$slug}%");
             if (!empty($model->id)) {
                 $conditions["{$model->alias}.{$model->primaryKey} <>"] = $model->id;
             }
             $result = $model->find('all', array('conditions' => $conditions, 'fields' => array($model->primaryKey, $settings['slug']), 'recursive' => -1));
             $sameUrls = null;
             if (!empty($result)) {
                 $sameUrls = Set::extract($result, '/' . $model->alias . '/' . $settings['slug']);
             }
             // If we have collissions
             if (!empty($sameUrls)) {
                 if (!in_array($slug, $sameUrls)) {
                     $slug = $slug;
                 } else {
                     sort($sameUrls);
                     if ($sameUrls[0] == $slug and count($sameUrls) == 1) {
                         $slug = "{$slug}{$settings['separator']}1";
                     } else {
                         $suffix = 1;
                         $slugLength = strlen($slug) + 1;
                         foreach ($sameUrls as $aSlug) {
                             $currentSuffix = substr($aSlug, $slugLength);
                             if ($suffix == $currentSuffix) {
                                 $suffix++;
                             }
                         }
                         $slug = "{$slug}{$settings['separator']}{$suffix}";
                     }
                 }
             }
             $model->data[$model->alias][$settings['slug']] = $slug;
             $this->_addToWhitelist($model, $settings['slug']);
         }
     }
     return $return;
 }
 /**
  * Adds the multiColumnUnique data validation rule dynamically
  *
  * Loops through the field groups and their fields which need to be unique.
  * First removes the multiColumnUniqueness rule from each unique field.
  * If the 'onlyOnce' option is set to false,
  * it adds the rule to each field of the field group.
  * Otherwise, by default, it adds the rule only to the first of the
  * relevant fields found in the data array.
  *
  * @param Model $model Model using this behavior
  * @param array $options Options passed from Model::save() (unused).
  * @return bool True if validate operation should continue, false to abort
  */
 public function beforeValidate(Model $model, $options = array())
 {
     $fieldGroupCount = count($this->settings[$model->alias]['fields']);
     for ($groupNr = 0; $groupNr < $fieldGroupCount; $groupNr++) {
         $uniqueFieldGrp = $this->settings[$model->alias]['fields'][$groupNr];
         $fieldGroupName = 'multiColumnUniqueness-group_' . ($groupNr + 1);
         foreach ($uniqueFieldGrp as $uniqueField) {
             if ($model->validator()->getField($uniqueField)) {
                 $model->validator()->remove($uniqueField, $fieldGroupName);
             }
         }
         foreach ($uniqueFieldGrp as $uniqueField) {
             if (isset($model->data[$model->name]) && array_key_exists($uniqueField, $model->data[$model->name])) {
                 $model->validator()->add($uniqueField, $fieldGroupName, array('rule' => array('multiColumnUniqueness', $uniqueFieldGrp), 'message' => $this->settings[$model->alias]['errMsg'][$groupNr]));
                 if ($this->settings[$model->alias]['onlyOnce']) {
                     break;
                 }
             }
         }
     }
     return parent::beforeValidate($model, $options);
 }
Пример #17
0
 /**
  *
  * @see ModelBehavior::beforeValidate()
  */
 public function beforeValidate(Model $model, $options = array())
 {
     parent::beforeValidate($model, $options);
     $this->_Model = $model;
     $this->__checkConfig($model);
     $this->localizeData();
     // always allow model validation occours
     return true;
 }
Пример #18
0
 /**
  * Run before a model is validated, used to set up slug for model.
  *
  * @param object $Model Model about to be saved.
  * @return boolean true if save should proceed, false otherwise
  * @access public
  */
 function beforeValidate(&$Model)
 {
     $return = parent::beforeValidate($Model);
     // Make label fields an array
     if (!is_array($this->__settings[$Model->alias]['label'])) {
         $this->__settings[$Model->alias]['label'] = array($this->__settings[$Model->alias]['label']);
     }
     // Make sure all label fields are available
     foreach ($this->__settings[$Model->alias]['label'] as $field) {
         if (!$Model->hasField($field)) {
             return $return;
         }
     }
     // See if we should be generating a slug
     if ($Model->hasField($this->__settings[$Model->alias]['slug']) && ($this->__settings[$Model->alias]['overwrite'] || empty($Model->id))) {
         // Build label out of data in label fields, if available, or using a default slug otherwise
         $label = '';
         foreach ($this->__settings[$Model->alias]['label'] as $field) {
             if (!empty($Model->data[$Model->alias][$field])) {
                 $label .= ife(!empty($label), ' ', '') . $Model->data[$Model->alias][$field];
             }
         }
         // Keep on going only if we've got something to slug
         if (!empty($label)) {
             // Get the slug
             $slug = $this->__slug($label, $this->__settings[$Model->alias]);
             // Look for slugs that start with the same slug we've just generated
             // this line removed
             //$conditions = array($Model->alias . '.' . $this->__settings[$Model->alias]['slug'] => 'LIKE ' . $slug . '%');
             // replaced with this by Jamie
             $conditions = array($Model->alias . '.' . $this->__settings[$Model->alias]['slug'] . ' LIKE' => $slug . '%');
             if (!empty($Model->id)) {
                 // this line removed
                 //$conditions[$Model->alias . '.' . $Model->primaryKey] = '!= ' . $Model->id;
                 // replaced with this by Jamie
                 $conditions['not'] = array($Model->alias . '.' . $Model->primaryKey => $Model->id);
             }
             $result = $Model->find('all', array('conditions' => $conditions, 'fields' => array($Model->primaryKey, $this->__settings[$Model->alias]['slug']), 'recursive' => -1));
             $sameUrls = null;
             if (!empty($result)) {
                 $sameUrls = Set::extract($result, '{n}.' . $Model->alias . '.' . $this->__settings[$Model->alias]['slug']);
             }
             // If we have collissions
             if (!empty($sameUrls)) {
                 // pr($sameUrls);
                 // die;
                 $begginingSlug = $slug;
                 $index = 1;
                 // Attach an ending incremental number until we find a free slug
                 while ($index > 0) {
                     if (!in_array($begginingSlug . $this->__settings[$Model->alias]['separator'] . $index, $sameUrls)) {
                         $slug = $begginingSlug . $this->__settings[$Model->alias]['separator'] . $index;
                         $index = -1;
                     }
                     $index++;
                 }
             }
             // Now set the slug as part of the model data to be saved, making sure that
             // we are on the white list of fields to be saved
             if (!empty($Model->whitelist) && !in_array($this->__settings[$Model->alias]['slug'], $Model->whitelist)) {
                 $Model->whitelist[] = $this->__settings[$Model->alias]['slug'];
             }
             $Model->data[$Model->alias][$this->__settings[$Model->alias]['slug']] = $slug;
         }
     }
     return $return;
 }
Пример #19
0
 /**
  * beforeValidate is called before a model is validated, you can use this callback to
  * add behavior validation rules into a models validate array. Returning false
  * will allow you to make the validation fail.
  *
  * @param Model $model Model using this behavior
  * @param array $options Options passed from Model::save().
  * @return mixed False or null will abort the operation. Any other result will continue.
  * @see Model::save()
  */
 public function beforeValidate(Model $model, $options = array())
 {
     if (!$model->hasField('status')) {
         return parent::beforeValidate($model, $options);
     }
     if (Current::permission('content_publishable')) {
         $statuses = self::$statuses;
     } else {
         $statuses = self::$statusesForEditor;
     }
     $model->validate = Hash::merge($model->validate, array('status' => array('numeric' => array('rule' => array('numeric'), 'message' => __d('net_commons', 'Invalid request.'), 'allowEmpty' => false, 'required' => true, 'on' => 'create'), 'inList' => array('rule' => array('inList', $statuses), 'message' => __d('net_commons', 'Invalid request.')))));
     return parent::beforeValidate($model, $options);
 }
Пример #20
0
 /**
  * beforeValidate Callback
  *
  * @param Model $Model Model invalidFields was called on.
  * @param array $options Options passed from Model::save().
  * @return boolean
  * @see Model::save()
  */
 public function beforeValidate(Model $model, $options = array())
 {
     $settings = $this->settings[$model->alias];
     if (!isset($settings['validate']) || $settings['validate'] === 'off') {
         return parent::beforeValidate($model, $options);
     }
     switch ($settings['validate']) {
         case 'on':
             $model->invalidate('name');
             return true;
         case 'test':
             return null;
         case 'whitelist':
             $this->_addToWhitelist($model, array('name'));
             return true;
         case 'stop':
             $model->invalidate('name');
             return false;
     }
 }
Пример #21
0
 public function beforeValidate(\Model $model, $options = array())
 {
     parent::beforeValidate($model, $options);
     $class = get_class($model);
     if (isset($_POST['MultiLanguage'][$class][$model->getID()]) && !isset($model->data['MultiLanguage'][$class])) {
         $model->data['MultiLanguage'][$class] = $_POST['MultiLanguage'][$class][$model->getID()];
         if (!is_numeric($model->getID()) && isset($model->data[$class]['id'])) {
             $model->data[$class]['id'] = 0;
         }
     }
     return true;
 }
Пример #22
0
 public function beforeValidate(&$model)
 {
     parent::beforeValidate($model);
     return $this->localizeData();
 }