Skip to content
Extraits de code Groupes Projets
Valider 7c065700 rédigé par camille.sauvage@espci.fr's avatar camille.sauvage@espci.fr
Parcourir les fichiers

suppression de fichiers accidentellement ajoutés au dépôt

parent 7e44352f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 0 ajout et 913 suppressions
<?php
/**
* Utilisation de pipelines
*
* @package SPIP\Formidable\Pipelines
**/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Optimiser la base de donnée en enlevant les liens de formulaires supprimés
*
* @pipeline optimiser_base_disparus
* @param array $flux
* Données du pipeline
* @return array
* Données du pipeline
*/
function formidable_optimiser_base_disparus($flux){
// Les réponses qui sont à la poubelle
$res = sql_select(
'id_formulaires_reponse AS id',
'spip_formulaires_reponses',
'statut = '.sql_quote('poubelle')
);
// On génère la suppression
$flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res);
return $flux;
}
?>
/configurer_formidable_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire_champs.html/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire_champs.php/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire_traitements.html/1.1.1.1/Mon Dec 3 09:03:16 2012//
/editer_formulaire_traitements.php/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formidable.php/1.2/Mon Dec 3 14:10:46 2012//
/importer_formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012//
/importer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formidable.html/1.3/Tue Mar 19 14:58:24 2013//
D
formidable-spip-3/formulaires
/cvsroot
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:formidable:cfg_titre_parametrages_analyse:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
[(#SAISIE{input,classe,
label=<:formidable:cfg_analyse_classe_label:>,
explication=<:formidable:cfg_analyse_classe_explication:>
})]
<input type="hidden" name="_meta_casier" value="formidable/analyse" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>
<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id_formulaire,nouveau})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable}|oui)
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
#GENERER_SAISIES{#ENV{_contenu}}
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class='boutons'>
<span class='image_loading'></span>
<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
</p>
</div></form>
]
</div>
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/saisies');
function formulaires_editer_formulaire_charger($id_formulaire, $nouveau){
$contexte = array();
$editer_formulaire = $GLOBALS['formulaires']['editer_formulaire'];
$champs = saisies_lister_champs($editer_formulaire);
$id_formulaire = intval($id_formulaire);
$contexte['_contenu'] = $editer_formulaire;
// Est-ce qu'on a le droit ?
if (autoriser('editer', 'formulaire')){
// Est-ce que le formulaire existe ?
if ($id_formulaire > 0 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
// Alors on pré-remplit avec les valeurs
foreach($champs as $champ)
$contexte[$champ] = $formulaire[$champ];
$contexte['_action'] = array('editer_formulaire', $id_formulaire);
}
// Sinon si c'est une création
elseif ($nouveau == 'oui'){
// On déclare juste les champs
foreach ($champs as $champ)
$contexte[$champ] = '';
$contexte['_action'] = array('editer_formulaire', $nouveau);
}
// Sinon c'est n'importe quoi
else{
$contexte['editable'] = false;
$contexte['message_erreur'] = 'Erreur dans les parametres.';
}
}
else{
$contexte['editable'] = false;
$contexte['message_erreur'] = _T('formidable:erreur_autorisation');
}
return $contexte;
}
function formulaires_editer_formulaire_verifier($id_formulaire, $nouveau){
$configurer_formulaire = $GLOBALS['formulaires']['editer_formulaire'];
$erreurs = saisies_verifier($configurer_formulaire);
// On vérifie l'unicité de l'identifiant
if (!$erreurs['identifiant'] and sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant = '.sql_quote(_request('identifiant').' and id_formulaire != '.$id_formulaire)))
$erreurs['identifiant'] = _T('formidable:erreur_identifiant');
return $erreurs;
}
function formulaires_editer_formulaire_traiter($id_formulaire, $nouveau){
include_spip('inc/editer');
$id_formulaire = $id_formulaire ? $id_formulaire : $nouveau;
$retours = formulaires_editer_objet_traiter('formulaire', $id_formulaire);
// S'il n'y a pas d'erreur et que le formulaire est bien là
if (!$retours['message_erreur'] and $retours['id_formulaire'] > 0){
// Si c'était un nouveau on reste sur l'édition
if (!intval($id_formulaire) and $nouveau == 'oui'){
$retours['redirect'] = parametre_url(generer_url_ecrire('formulaire_edit'), 'id_formulaire', $retours['id_formulaire'], '&');
}
// Sinon on redirige vers la page de visualisation
else{
$retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $retours['id_formulaire'], '&');
}
}
return $retours;
}
?>
<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV*{message_erreur}|non)
<div class="ajax">
#FORMULAIRE_CONSTRUIRE_FORMULAIRE{formidable_#ENV{id}, #ENV{_saisies}}
</div>
]
[(#ENV{editable}|oui)
<form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<p class="boutons">
<span class="image_loading"></span>
[(#ENV*{message_erreur}|non)
<em class="attention"><:saisies:construire_attention_enregistrer:></em>
<button type="submit" class="submit">
<img src="#CHEMIN{images/formulaire-enregistrer-16.png}" alt="" />
<:bouton_enregistrer:>
</button>
]
[(#ENV*{message_erreur}|oui)
<button type="submit" class="link" name="annulation" value="oui">
<:bouton_annuler:>
</button>
<button type="submit" class="submit" name="confirmation" value="oui">
<img src="#CHEMIN{images/formulaire-enregistrer-16.png}" alt="" />
<:bouton_enregistrer:>
</button>
]
</p>
</div></form>
]
</div>
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
function formulaires_editer_formulaire_champs_charger($id_formulaire){
$contexte = array();
$id_formulaire = intval($id_formulaire);
// On teste si le formulaire existe
if ($id_formulaire
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
and autoriser('editer', 'formulaire', $id_formulaire)
){
$saisies = unserialize($formulaire['saisies']);
if (!is_array($saisies)) $saisies = array();
$contexte['_saisies'] = $saisies;
$contexte['id'] = $id_formulaire;
}
return $contexte;
}
function formulaires_editer_formulaire_champs_verifier($id_formulaire){
include_spip('inc/saisies');
$erreurs = array();
// Si c'est pas une confirmation ni une annulation
if (!_request('confirmation') and !($annulation = _request('annulation'))){
// On récupère le formulaire dans la session
$saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
// On récupère les anciennes saisies
$saisies_anciennes = unserialize(sql_getfetsel(
'saisies',
'spip_formulaires',
'id_formulaire = '.$id_formulaire
));
// On compare
$comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
// S'il y a des suppressions, on demande confirmation avec attention
if ($comparaison['supprimees'])
$erreurs['message_erreur'] = _T('saisies:construire_attention_supprime');
}
// Si on annule on génère une erreur bidon juste pour réafficher le formulaire
elseif ($annulation){
$erreurs['pouetpouet'] = true;
}
return $erreurs;
}
function formulaires_editer_formulaire_champs_traiter($id_formulaire){
include_spip('inc/saisies');
$retours = array();
$id_formulaire = intval($id_formulaire);
// On récupère le formulaire dans la session
$saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
// On récupère les anciennes saisies
$saisies_anciennes = unserialize(sql_getfetsel(
'saisies',
'spip_formulaires',
'id_formulaire = '.$id_formulaire
));
// On envoie les nouvelles dans la table dans la table
$ok = sql_updateq(
'spip_formulaires',
array(
'saisies' => serialize($saisies_nouvelles)
),
'id_formulaire = '.$id_formulaire
);
// Si c'est bon on appelle d'éventuelles fonctions d'update des traitements puis on renvoie vers la config des traitements
if ($ok){
// On va chercher les traitements
$traitements = unserialize(sql_getfetsel(
'traitements',
'spip_formulaires',
'id_formulaire = '.$id_formulaire
));
// Pour chaque traitements on regarde s'i y a une fonction d'update
if (is_array($traitements))
foreach ($traitements as $type_traitement => $traitement){
if ($update = charger_fonction('update', "traiter/$type_traitement", true)){
$update($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles);
}
}
// On redirige vers la config suivante
$retours['redirect'] = parametre_url(
parametre_url(
parametre_url(
generer_url_ecrire('formulaire_edit')
, 'id_formulaire', $id_formulaire
)
, 'configurer', 'traitements'
)
, 'avertissement', 'oui'
);
}
return $retours;
}
?>
<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable}|oui)
<form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
#GENERER_SAISIES{#ENV{_configurer_traitements}}
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div></form>
<script type="text/javascript">
$(function(){
// On commence par cacher toutes les options
$('.options_traiter').hide().find('h3').hide();
// Ensuite on parcourt les traitements choisis
$('.editer_traitements_choisis input')
.each(function(){
// Si c'est coché on affiche le fieldset d'options
if ($(this).is(':checked')){
$('.options_traiter.'+$(this).val()).show();
$(this).parents('.editer_traitements_choisis').toggleClass('hover');
}
})
.click(function(){
$('.options_traiter.'+$(this).val()).slideToggle('fast');
$(this).parents('.editer_traitements_choisis').toggleClass('hover');
});
});
</script>
]
</div>
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/formidable');
function formulaires_editer_formulaire_traitements_charger($id_formulaire){
$contexte = array();
$id_formulaire = intval($id_formulaire);
// On teste si le formulaire existe
if ($id_formulaire
and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
and autoriser('editer', 'formulaire', $id_formulaire)
){
$traitements = unserialize($formulaire['traitements']);
$saisies = unserialize($formulaire['saisies']);
if (!is_array($traitements)) $traitements = array();
if (!is_array($saisies)) $saisies = array();
$contexte['traitements'] = $traitements;
$contexte['traitements_choisis'] = array_keys($traitements);
$contexte['formulaire'] = _T_ou_typo($saisies, 'multi');
$contexte['id'] = $id_formulaire;
$traitements_disponibles = traitements_lister_disponibles();
$configurer_traitements = array();
foreach ($traitements_disponibles as $type_traitement => $traitement){
$configurer_traitements[] = array(
'saisie' => 'checkbox',
'options' => array(
'nom' => 'traitements_choisis',
'label' => $traitement['titre'],
'datas' => array(
$type_traitement => $traitement['description']
)
)
);
$configurer_traitements[] = array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'options',
'label' => $traitement['titre'],
'li_class' => "$type_traitement options_traiter"
),
'saisies' => saisies_transformer_noms($traitement['options'], '/^.*$/', "traitements[$type_traitement][\\0]")
);
}
$contexte['_configurer_traitements'] = $configurer_traitements;
// Si on demande un avertissement et qu'il y a déjà des traitements de configurés
if (_request('avertissement') == 'oui')
$contexte['message_ok'] = $traitements ? _T('formidable:traitements_avertissement_modification') : _T('formidable:traitements_avertissement_creation');
}
else{
$contexte['editable'] = false;
}
// On enlève l'éventuel avertissement pour le prochain envoi
$contexte['action'] = parametre_url(self(), 'avertissement', '');
return $contexte;
}
function formulaires_editer_formulaire_traitements_verifier($id_formulaire){
include_spip('inc/saisies');
$erreurs = array();
$traitements_disponibles = traitements_lister_disponibles();
// On regarde quels traitements sont demandés
$traitements_choisis = _request('traitements_choisis');
if (is_array($traitements_choisis))
foreach ($traitements_choisis as $type_traitement){
$erreurs = array_merge($erreurs, saisies_verifier(saisies_transformer_noms($traitements_disponibles[$type_traitement]['options'], '/^.*$/', "traitements[$type_traitement][\\0]")));
}
return $erreurs;
}
function formulaires_editer_formulaire_traitements_traiter($id_formulaire){
$retours = array();
$id_formulaire = intval($id_formulaire);
// On récupère tout le tableau des traitements
$traitements = _request('traitements');
// On ne garde que les morceaux qui correspondent aux traitements choisis
$traitements_choisis = _request('traitements_choisis');
if (!$traitements_choisis) $traitements_choisis = array();
$traitements_choisis = array_flip($traitements_choisis);
$traitements = array_intersect_key($traitements, $traitements_choisis);
// Et on l'enregistre tel quel
$ok = sql_updateq(
'spip_formulaires',
array(
'traitements' => serialize($traitements)
),
'id_formulaire = '.$id_formulaire
);
// On va sur la page de visualisation quand c'est fini
if ($ok){
$retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
}
else{
$retours['editable'] = true;
$retours['message_erreur'] = _T('formidable:erreur_base');
}
return $retours;
}
?>
<BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}>
[(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ]
[(#ENV**{_remplacer_formulaire})]
</BOUCLE_remplacer_le_formulaire>
<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}>
[(#SET{enregistrement,[(#TRAITEMENTS**|unserialize|table_valeur{'enregistrement'})]})]
[(#SET{anonymiser,[(#GET{enregistrement}|table_valeur{'anonymiser'})]})]
[(#GET{anonymiser}|=={on}|oui)<h3><:formidable:formulaire_anonyme_explication:>]</h3>
</BOUCLE_formulaire>
<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable}|oui)
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
#GENERER_SAISIES{#ENV{_saisies}}
<li style="display:none;">
<label for="mechantrobot-#ENV{id}"><:antispam_champ_vide:></label>
<input type="text" id="mechantrobot-#ENV{id}" name="mechantrobot" value="#ENV{mechantrobot}" />
</li>
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class='boutons'>
<span class='image_loading'></span>
<input type='submit' class='submit' value='<:bouton_valider:>' />
</p>
</div></form>
]
[(#EDITABLE|non)
[(#ENV{formidable_afficher_apres}|=={valeurs}|oui)
#VOIR_SAISIES{#ENV*{_saisies},#ENV}
]
[(#ENV{formidable_afficher_apres}|=={rien}|oui)
]
]
<br />
</div>
<//B_remplacer_le_formulaire>
<?php
/**
* Gestion de l'affichage et traitement d'un formulaire Formidable
*
* @package SPIP\Formidable\Formulaires
**/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/formidable');
include_spip('inc/saisies');
include_spip('base/abstract_sql');
include_spip('inc/autoriser');
/**
* Chargement du formulaire CVT de Formidable.
*
* Genere le formulaire dont l'identifiant (numerique ou texte est indique)
*
* @param int|string $id_formulaire
* Identifiant numerique ou textuel du formulaire formidable
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
*
* @return array
* Contexte envoyé au squelette HTML du formulaire.
**/
function formulaires_formidable_charger($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
$contexte = array();
// On peut donner soit un id soit un identifiant
if (intval($id_formulaire) > 0)
$where = 'id_formulaire = '.intval($id_formulaire);
elseif (is_string($id_formulaire))
$where = 'identifiant = '.sql_quote($id_formulaire);
else
return;
// On cherche si le formulaire existe
if ($formulaire = sql_fetsel('*', 'spip_formulaires', $where)) {
// on ajoute un point d'entrée avec les infos de ce formulaire
// pour d'eventuels plugins qui en ont l'utilité
$contexte += array('_formidable' => $formulaire);
// Est-ce que la personne a le droit de répondre ?
if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire'=>$formulaire))){
$saisies = unserialize($formulaire['saisies']);
$traitements = unserialize($formulaire['traitements']);
// On déclare les champs
$contexte += array_fill_keys(saisies_lister_champs($saisies), '');
$contexte['mechantrobot'] = '';
// On ajoute le formulaire complet
$contexte['_saisies'] = $saisies;
$contexte['id'] = $formulaire['id_formulaire'];
$contexte['_hidden'] = '<input type="hidden" name="id_formulaire" value="'.$contexte['id'].'"/>';
// S'il y a des valeurs par défaut dans l'appel, alors on pré-remplit
if ($valeurs){
// Si c'est une chaine on essaye de la parser
if (is_string($valeurs)){
$liste = explode(',', $valeurs);
$liste = array_map('trim', $liste);
$valeurs = array();
foreach ($liste as $i=>$cle_ou_valeur){
if ($i % 2 == 0)
$valeurs[$liste[$i]] = $liste[$i+1];
}
}
// On regarde si maintenant on a un tableau
if ($valeurs and is_array($valeurs)){
$contexte = array_merge($contexte, $valeurs);
}
}
// Si on passe un identifiant de reponse, on edite cette reponse si elle existe
if ($id_formulaires_reponse = intval($id_formulaires_reponse)) {
$contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
if ($ok) {
// On ajoute un hidden pour dire que c'est une modif
$contexte['_hidden'] .= "\n".'<input type="hidden" name="deja_enregistre_'.$formulaire['id_formulaire'].'" value="'.$id_formulaires_reponse.'"/>';
} else {
$contexte['editable'] = false;
$contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_edition_reponse_inexistante');
}
} else {
// Si multiple = non mais que c'est modifiable, alors on va chercher
// la dernière réponse si elle existe
if ($options = $traitements['enregistrement']
and !$options['multiple']
and $options['modifiable']
and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options)
) {
$id_formulaires_reponse = array_pop($reponses);
$contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
// On ajoute un hidden pour dire que c'est une modif
$contexte['_hidden'] .= "\n".'<input type="hidden" name="deja_enregistre_'.$formulaire['id_formulaire'].'" value="'.$id_formulaires_reponse.'"/>';
}
}
}
else{
$contexte['editable'] = false;
// le formulaire a déjà été répondu.
// peut être faut il afficher les statistiques des réponses
if ($formulaire['apres'] == 'stats') {
// Nous sommes face à un sondage auquel on a déjà répondu !
// On remplace complètement l'affichage du formulaire
// par un affichage du résultat de sondage !
$contexte['_remplacer_formulaire'] = recuperer_fond('modeles/formulaire_analyse', array(
'id_formulaire' => $formulaire['id_formulaire'],
));
} else {
$contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_deja_repondu');
}
}
}
else{
$contexte['editable'] = false;
$contexte['message_erreur'] = _T('formidable:erreur_inexistant');
}
if (!isset($contexte['_hidden'])) {
$contexte['_hidden'] = '';
}
$contexte['_hidden'] .= "\n".'<input type="hidden" name="formidable_afficher_apres'/*.$formulaire['id_formulaire']*/.'" value="'.$formulaire['apres'].'"/>';// marche pas
$contexte['formidable_afficher_apres']=$formulaire['apres'];
return $contexte;
}
/**
* Vérification du formulaire CVT de Formidable.
*
* Pour chaque champ posté, effectue les vérifications demandées par
* les saisies et retourne éventuellement les erreurs de saisie.
*
* @param int|string $id_formulaire
* Identifiant numerique ou textuel du formulaire formidable
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
*
* @return array
* Tableau des erreurs
**/
function formulaires_formidable_verifier($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
$erreurs = array();
// Sale bête !
if (_request('mechantrobot') != ''){
$erreurs['hahahaha'] = 'hahahaha';
return $erreurs;
}
$id_formulaire = intval(_request('id_formulaire'));
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
$saisies = unserialize($formulaire['saisies']);
$erreurs = saisies_verifier($saisies);
if ($erreurs and !isset($erreurs['message_erreur']))
$erreurs['message_erreur'] = _T('formidable:erreur_generique');
return $erreurs;
}
/**
* Traitement du formulaire CVT de Formidable.
*
* Exécute les traitements qui sont indiqués dans la configuration des
* traitements de ce formulaire formidable.
*
* Une fois fait, gère le retour après traitements des saisies en fonction
* de ce qui a été configuré dans le formulaire, par exemple :
* - faire réafficher le formulaire,
* - faire afficher les saisies
* - rediriger sur une autre page...
*
* @param int|string $id_formulaire
* Identifiant numerique ou textuel du formulaire formidable
* @param array $valeurs
* Valeurs par défauts passées au contexte du formulaire
* Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
* @param int|bool $id_formulaires_reponse
* Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
*
* @return array
* Tableau des erreurs
**/
function formulaires_formidable_traiter($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
$retours = array();
$id_formulaire = intval(_request('id_formulaire'));
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
$traitements = unserialize($formulaire['traitements']);
// selon le choix, le formulaire se remet en route à la fin ou non
$retours['editable'] = ($formulaire['apres']=='formulaire');
$retours['formidable_afficher_apres'] = $formulaire['apres'];
// Si on a une redirection valide
if (($formulaire['apres']== "redirige") AND ($formulaire['url_redirect']!="")) {
refuser_traiter_formulaire_ajax();
// traiter les raccourcis artX, brX
include_spip("inc/lien");
$url_redirect = typer_raccourci($formulaire['url_redirect']);
if (count($url_redirect)>2) {
$url_redirect = $url_redirect[0].$url_redirect[2];
} else {
$url_redirect = $formulaire['url_redirect']; // URL classique
}
$retours['redirect'] = $url_redirect;
}
// Si on a des traitements
if (is_array($traitements) and !empty($traitements)) {
foreach($traitements as $type_traitement=>$options){
if ($appliquer_traitement = charger_fonction($type_traitement, 'traiter/', true)) {
$retours = $appliquer_traitement(
array(
'formulaire' => $formulaire,
'options' => $options
),
$retours
);
}
}
// Si on a personnalisé le message de retour, c'est lui qui est affiché uniquement
if ($formulaire['message_retour']) {
$retours['message_ok'] = _T_ou_typo($formulaire['message_retour']);
}
}
else{
$retours['message_ok'] = _T('formidable:retour_aucun_traitement');
}
return $retours;
}
/**
* Ajoute dans le contexte les elements
* donnés par une reponse de formulaire indiquée
*
* @param array $contexte
* Contexte pour le squelette HTML du formulaire
* @param int $id_formulaires_reponse
* Identifiant de réponse
* @param bool $ok
* La reponse existe bien ?
* @return array $contexte
* Contexte complète des nouvelles informations
*
**/
function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, &$ok) {
// On va chercher tous les champs
$champs = sql_allfetsel(
'nom, valeur',
'spip_formulaires_reponses_champs',
'id_formulaires_reponse = '.$id_formulaires_reponse
);
$ok = count($champs) ? true : false;
// On remplit le contexte avec
foreach ($champs as $champ){
$test_array = unserialize($champ['valeur']);
$contexte[$champ['nom']] = is_array($test_array) ? $test_array : $champ['valeur'];
}
return $contexte;
}
?>
<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id})]">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable}|oui)
<form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
[(#SAISIE{selection, type_import,
label=<:formidable:importer_formulaire_format_label:>,
datas=#ENV{_types_import},
defaut=yaml,
cacher_option_intro=oui})]
[(#SAISIE{input, fichier,
label=<:formidable:importer_formulaire_fichier_label:>,
type=file,
size=6})]
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_telecharger:>" /></p>
</div></form>
]
</div>
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/formidable');
function formulaires_importer_formulaire_charger(){
$contexte = array();
// On va chercher toutes les fonctions d'importation existantes
$types_echange = echanges_formulaire_lister_disponibles();
$types_import = array();
foreach ($types_echange['importer'] as $type=>$fonction){
$types_import[$type] = _T("formidable:echanger_formulaire_${type}_importer");
}
$contexte['_types_import'] = $types_import;
return $contexte;
}
function formulaires_importer_formulaire_verifier(){
$erreurs = array();
return $erreurs;
}
function formulaires_importer_formulaire_traiter(){
$retours = array();
if (!$_FILES['fichier']['error']){
$type_import = _request('type_import');
$fichier = $_FILES['fichier']['tmp_name'];
$importer = charger_fonction('importer', "echanger/formulaire/$type_import", true);
$erreur_ou_id = $importer($fichier);
if (!is_numeric($erreur_ou_id)){
$retours['message_erreur'] = $erreur;
$retours['editable'] = true;
}
else{
$id_formulaire = intval($erreur_ou_id);
$retours['redirect'] = generer_url_ecrire('formulaire', "id_formulaire=$id_formulaire");
}
}
return $retours;
}
?>
/formulaire.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
D
formidable-spip-3/icones_barre
/cvsroot
formidable_1_0/icones_barre/formulaire.png

688 octets

/formidable-128.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formidable-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formidable-64.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formidable.svg/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-action-ajouter.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-analyse-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-config-champs-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-config-traitements-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-dupliquer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-editer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-exporter-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-nouveau-48.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-reponse-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-reponse-supprimer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-reponses-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-reponses-exporter-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
/formulaire-supprimer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012//
D
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter