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; }
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; }