[PLUGINS] +les plugins de bases
[ptitvelo/web/www.git] / www / plugins / saisies / saisies_pipelines.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 function saisies_header_prive($flux){
7 $js = find_in_path('javascript/saisies.js');
8 $flux .= "\n<script type='text/javascript' src='$js'></script>\n";
9 $css = generer_url_public('saisies.css');
10 $flux .= "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
11 $css_constructeur = find_in_path('css/formulaires_constructeur.css');
12 $flux .= "\n<link rel='stylesheet' href='$css_constructeur' type='text/css' />\n";
13 return $flux;
14 }
15
16 function saisies_affichage_final($flux){
17 if (($p = strpos($flux,"<!--!inserer_saisie_editer-->"))!==false){
18 // On insère la CSS devant le premier <link> trouvé
19 if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head'))
20 $pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
21 $css = generer_url_public('saisies.css');
22 $ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
23 $flux = substr_replace($flux, $ins_css, $pi, 0);
24
25 // On insère le JS à la fin du <head>
26 $pos_head = strpos($flux, '</head');
27 $js = find_in_path('javascript/saisies.js');
28 $ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
29 $flux = substr_replace($flux, $ins_js, $pos_head, 0);
30 }
31 return $flux;
32 }
33
34 // Déclaration des pipelines
35 function saisies_saisies_autonomes($flux) { return $flux; }
36 function saisies_formulaire_saisies($flux) { return $flux; }
37
38 // Déclarer automatiquement les champs d'un CVT si on les trouve dans un tableau de saisies et s'ils ne sont pas déjà déclarés
39 function saisies_formulaire_charger($flux){
40 // Si le flux data est inexistant, on quitte : Le CVT d'origine a décidé de ne pas continuer
41 if (!is_array($flux['data'])){
42 return $flux;
43 }
44
45 // Il faut que la fonction existe et qu'elle retourne bien un tableau
46 if (include_spip('inc/saisies')
47 and $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'])
48 ){
49 // On ajoute au contexte les champs à déclarer
50 $contexte = saisies_lister_valeurs_defaut($saisies);
51 $flux['data'] = array_merge($contexte, $flux['data']);
52
53 // On ajoute le tableau complet des saisies
54 $flux['data']['_saisies'] = $saisies;
55 }
56 return $flux;
57 }
58
59 // Aiguiller CVT vers un squelette propre à Saisies lorsqu'on a déclaré des saisies et qu'il n'y a pas déjà un HTML
60 function saisies_styliser($flux){
61 // Si on cherche un squelette de formulaire
62 if (strncmp($flux['args']['fond'],'formulaires/',12)==0
63 // Et qu'il y a des saisies dans le contexte
64 and isset($flux['args']['contexte']['_saisies'])
65 // Et que le fichier choisi est vide ou n'existe pas
66 and include_spip('inc/flock')
67 and $ext = $flux['args']['ext']
68 and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette)
69 and !trim($contenu_squelette)
70 ){
71 $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext"));
72 }
73
74 return $flux;
75 }
76
77 // Ajouter les vérifications déclarées dans la fonction "saisies" du CVT
78 function saisies_formulaire_verifier($flux){
79 // Il faut que la fonction existe et qu'elle retourne bien un tableau
80 if (include_spip('inc/saisies') and $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'])){
81 // On ajoute au contexte les champs à déclarer
82 $erreurs = saisies_verifier($saisies);
83 if ($erreurs and !isset($erreurs['message_erreur']))
84 $erreurs['message_erreur'] = _T('saisies:erreur_generique');
85 $flux['data'] = array_merge($erreurs, $flux['data']);
86 }
87
88
89 return $flux;
90 }
91
92 ?>