Exemple #1
0
function cextras_formulaire_verifier($flux){
	// recuperer les champs crees par les plugins
	$form = $flux['args']['form'];
	// formulaire d'edition ?
	if (strncmp($form, 'editer_', 7) === 0) {
		$type = substr($form, 7);
		
		// des champs extras correspondent ?
		if ($extras = cextras_get_extras_match($type)) {

			// Il peut arriver qu'un prefixe soit appliqué sur les noms de champs de formulaire
			// La contrainte est que le formulaire inseré doit appeler le pipeline 'formulaire_verifier'
			// avec le bon type d'objet (en indiquant le prefixe) et concaténer ainsi les résultats
			if (isset($flux['args']['prefixe_champs_extras'])
			and $prefixe = $flux['args']['prefixe_champs_extras']) {
			} else {
				$prefixe = '';
			}
					
			include_spip('inc/autoriser');

			// si le plugin "verifier" est actif, on tentera dans
			// la verification de lancer la fonction de verification
			// demandee par le champ, si definie dans sa description
			// 'verifier' (et 'verifier_options')
			$verifier = charger_fonction('verifier', 'inc', true);
			
			foreach ($extras as $c) {
				// si on est autorise a modifier le champ
				// et que le champ est obligatoire
				// alors on renvoie une erreur.
				// Mais : ne pas renvoyer d'erreur si le champ est
				// obligatoire, mais qu'il n'est pas visible dans le formulaire
				// (si affiche uniquement pour la rubrique XX par exemple).
				// On teste seulement les champs dont la modification est autorisee
				$type = $c->_type . '_' . $c->champ;
				$id_objet = $flux['args']['args'][0]; // ? vraiment toujours ?

				// l'autorisation n'a pas de contexte a transmettre
				// comme dans l'autre appel (cextras_afficher_contenu_objet())
				// du coup, on risque de se retrouver parfois avec des
				// resultats differents... Il faudra surveiller.
				if (autoriser('modifierextra', $type, $id_objet, '', array(
					'type' => $c->_type,
					'id_objet' => $id_objet)))
				{	
					if ($c->obligatoire AND !_request($prefixe . $c->champ)) {
						$flux['data'][$prefixe . $c->champ] = _T('info_obligatoire');
					} elseif ($c->verifier AND $verifier) {
						if ($erreur = $verifier(_request($prefixe . $c->champ), $c->verifier, $c->verifier_options)) {
							$flux['data'][$prefixe . $c->champ] = $erreur;
						}
					}
				}
			}
		}
	}
	return $flux;
}
Exemple #2
0
function cextras_formulaire_verifier($flux){
	// recuperer les champs crees par les plugins
	$form = $flux['args']['form'];
	// formulaire d'edition ?
	if (strpos($form, 'editer_') !== false) {
		$type = str_replace('editer_','',$form);
		// des champs extras correspondent ?
		if ($extras = cextras_get_extras_match($type)) {
			foreach ($extras as $c) {
				if ($c->obligatoire AND !_request($c->champ)) {
					$flux['data'][$c->champ] = _T('info_obligatoire');
				}
				// ajouter une fonction de verification ici
				// verifier_extra($c, _request($c->champ))
			}
		}
	}	
	return $flux;
}