[PLUGINS] +maj gis4
[lhc/web/www.git] / www / plugins / saisies / inc / saisies.php
index bca21ae..53853ef 100644 (file)
@@ -3,7 +3,7 @@
 /**\r
  * Gestion de l'affichage des saisies\r
  *\r
- * @return SPIP\Saisies\Saisies\r
+ * @package SPIP\Saisies\Saisies\r
 **/\r
 \r
 // Sécurité\r
@@ -40,10 +40,11 @@ include_spip('inc/saisies_manipuler');
 // Les outils pour afficher les saisies et leur vue\r
 include_spip('inc/saisies_afficher');\r
 \r
-/*\r
+/**\r
  * Cherche la description des saisies d'un formulaire CVT dont on donne le nom\r
  *\r
  * @param string $form Nom du formulaire dont on cherche les saisies\r
+ * @param array $args Tableau d'arguments du formulaire\r
  * @return array Retourne les saisies du formulaire sinon false\r
  */\r
 function saisies_chercher_formulaire($form, $args){\r
@@ -68,7 +69,7 @@ function saisies_chercher_formulaire($form, $args){
        }\r
 }\r
 \r
-/*\r
+/**\r
  * Cherche une saisie par son id, son nom ou son chemin et renvoie soit la saisie, soit son chemin\r
  *\r
  * @param array $saisies Un tableau décrivant les saisies\r
@@ -136,12 +137,12 @@ function saisies_generer_nom($formulaire, $type_saisie){
        return $type_saisie.'_'.$compteur;\r
 }\r
 \r
-/*\r
+/**\r
  * Crée un identifiant Unique\r
  * pour toutes les saisies donnees qui n'en ont pas \r
  *\r
  * @param Array $saisies Tableau de saisies\r
- * @param Bool $regenerer_id Régénère un nouvel identifiant pour toutes les saisies ?\r
+ * @param Bool $regenerer Régénère un nouvel identifiant pour toutes les saisies ?\r
  * @return Array Tableau de saisies complété des identifiants\r
  */\r
 function saisies_identifier($saisies, $regenerer = false) {\r
@@ -160,7 +161,7 @@ function saisies_identifier($saisies, $regenerer = false) {
  * (et pour ses sous saisies éventuels)\r
  *\r
  * @param Array $saisie Tableau d'une saisie\r
- * @param Bool $regenerer_id Régénère un nouvel identifiant pour la saisie ?\r
+ * @param Bool $regenerer Régénère un nouvel identifiant pour la saisie ?\r
  * @return Array Tableau de la saisie complété de l'identifiant\r
 **/\r
 function saisie_identifier($saisie, $regenerer = false) {\r
@@ -175,7 +176,7 @@ function saisie_identifier($saisie, $regenerer = false) {
        return $saisie;\r
 }\r
 \r
-/*\r
+/**\r
  * Vérifier tout un formulaire tel que décrit avec les Saisies\r
  *\r
  * @param array $formulaire Le contenu d'un formulaire décrit dans un tableau de Saisies\r
@@ -250,41 +251,44 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles=true){
        return $erreurs;\r
 }\r
 \r
-/*\r
+/**\r
  * Applatie une description tabulaire\r
- * @param string $tab, le tableau à aplatir\r
+ * @param string $tab Le tableau à aplatir\r
  * @return $nouveau_tab\r
  */\r
 function saisies_aplatir_tableau($tab){\r
-    $nouveau_tab = array();\r
-    foreach($tab as $entree=>$contenu){\r
-        if (is_array($contenu)){\r
-            foreach ($contenu as $cle => $valeur){\r
-                $nouveau_tab[$cle] = $valeur;\r
-                }\r
-            }\r
-        else{\r
-            $nouveau_tab[$entree] = $contenu;\r
-            }\r
-        }\r
-    return $nouveau_tab;\r
+       $nouveau_tab = array();\r
+       foreach($tab as $entree=>$contenu){\r
+               if (is_array($contenu)) {\r
+                       foreach ($contenu as $cle => $valeur) {\r
+                               $nouveau_tab[$cle] = $valeur;\r
+                       }\r
+               } else {\r
+                       $nouveau_tab[$entree] = $contenu;\r
+               }\r
+       }\r
+       return $nouveau_tab;\r
 }\r
 \r
-/*\r
+/**\r
  * Applatie une description chaînée, en supprimant les sous-groupes.\r
- * @param string $chaine, la chaîne à aplatir\r
+ * @param string $chaine La chaîne à aplatir\r
  * @return $chaine\r
  */\r
 function saisies_aplatir_chaine($chaine){\r
-    return trim(preg_replace("#(?:^|\n)(\*(?:.*)|/\*)\n#i","\n",$chaine));\r
-    }\r
-/*\r
+       return trim(preg_replace("#(?:^|\n)(\*(?:.*)|/\*)\n#i","\n",$chaine));\r
+}\r
+\r
+/**\r
  * Transforme une chaine en tableau avec comme principe :\r
+ * \r
  * - une ligne devient une case\r
  * - si la ligne est de la forme truc|bidule alors truc est la clé et bidule la valeur\r
  * - si la ligne commence par * alors on commence un sous-tableau\r
  * - si la ligne est égale à /*, alors on fini le sous-tableau\r
+ * \r
  * @param string $chaine Une chaine à transformer\r
+ * @param string $separateur Séparateur utilisé\r
  * @return array Retourne un tableau PHP\r
  */\r
 function saisies_chaine2tableau($chaine, $separateur="\n"){\r
@@ -298,36 +302,34 @@ function saisies_chaine2tableau($chaine, $separateur="\n"){
                        // Si ce n'est pas une ligne sans rien\r
                        if ($ligne !== ''){\r
                                // si ca commence par * c'est qu'on va faire un sous tableau\r
-                               if (strpos($ligne,"*")===0){\r
+                               if (strpos($ligne,"*")===0) {\r
                                        $soustab=True;\r
                                        $soustab_cle    = _T_ou_typo(substr($ligne,1), 'multi');\r
                                        if (!isset($tableau[$soustab_cle])){\r
                                                $tableau[$soustab_cle] = array();\r
                                        }\r
                                }\r
-                               elseif ($ligne=="/*"){//si on finit sous tableau\r
+                               elseif ($ligne=="/*") {//si on finit sous tableau\r
                                        $soustab=False;\r
                                }\r
                                else{//sinon c'est une entrée normale\r
                                // Si on trouve un découpage dans la ligne on fait cle|valeur\r
-                                       if (strpos($ligne, '|') !== false){\r
+                                       if (strpos($ligne, '|') !== false) {\r
                                                list($cle,$valeur) = explode('|', $ligne, 2);\r
                                                // permettre les traductions de valeurs au passage\r
                                                if ($soustab == True){\r
                                                        $tableau[$soustab_cle][$cle] = _T_ou_typo($valeur, 'multi');\r
-                                                       }\r
-                                               else{\r
+                                               } else {\r
                                                        $tableau[$cle] = _T_ou_typo($valeur, 'multi');\r
-                                                       }\r
+                                               }\r
                                        }\r
                                // Sinon on génère la clé\r
                                        else{\r
-                                               if ($soustab == True){\r
+                                               if ($soustab == True) {\r
                                                        $tableau[$soustab_cle][$i] = _T_ou_typo($ligne,'multi');\r
-                                                       }\r
-                                               else{\r
+                                               } else {\r
                                                        $tableau[$i] = _T_ou_typo($ligne,'multi');\r
-                                                       }\r
+                                               }\r
                                        }\r
                                }\r
                        }\r
@@ -337,18 +339,21 @@ function saisies_chaine2tableau($chaine, $separateur="\n"){
        // Si c'est déjà un tableau on lui applique _T_ou_typo (qui fonctionne de manière récursive avant de le renvoyer\r
        elseif (is_array($chaine)){\r
                return _T_ou_typo($chaine, 'multi');\r
-       }\r
-       else{\r
+       } else {\r
                return array();\r
        }\r
 }\r
 \r
-/*\r
+/**\r
  * Transforme un tableau en chaine de caractères avec comme principe :\r
+ * \r
  * - une case de vient une ligne de la chaine\r
  * - chaque ligne est générée avec la forme cle|valeur\r
  * - si une entrée du tableau est elle même un tableau, on met une ligne de la forme *clef\r
  * - pour marquer que l'on quitte un sous-tableau, on met une ligne commencant par /*, sauf si on bascule dans un autre sous-tableau.\r
+ *\r
+ * @param array $tableau Tableau à transformer\r
+ * @return string Texte représentant les données du tableau\r
  */\r
 function saisies_tableau2chaine($tableau){\r
        if ($tableau and is_array($tableau)){\r
@@ -387,27 +392,20 @@ function saisies_tableau2chaine($tableau){
 \r
 \r
 /**\r
- * Passe une valeur en tableau d'élements si ce n'en est pas une\r
- *\r
- * entrée :\r
- * cle|valeur\r
- * cle|valeur\r
- *\r
- * Sinon :\r
- * valeur,valeur\r
+ * Transforme une valeur en tableau d'élements si ce n'est pas déjà le cas\r
  *\r
  * @param mixed $valeur\r
  * @return array Tableau de valeurs\r
 **/\r
-function saisies_valeur2tableau($valeur, $sinon_separateur="") {\r
+function saisies_valeur2tableau($valeur) {\r
        if (is_array($valeur)) {\r
                return $valeur;\r
        }\r
-       \r
+\r
        if (!strlen($valeur)) {\r
                return array();\r
        }\r
-       \r
+\r
        $t = saisies_chaine2tableau($valeur);\r
        if (count($t) > 1) {\r
                return $t;\r
@@ -418,20 +416,45 @@ function saisies_valeur2tableau($valeur, $sinon_separateur="") {
        if (isset($t[0])) {\r
                $t = saisies_chaine2tableau($t[0], ',');\r
        }\r
-       \r
+\r
        return $t;\r
 }\r
 \r
 \r
+/**\r
+ * Pour les saisies multiples (type checkbox) proposant un choix alternatif,\r
+ * retrouve à partir des data de choix proposés\r
+ * et des valeurs des choix enregistrés\r
+ * le texte enregistré pour le choix alternatif.\r
+ *\r
+ * @param array $data\r
+ * @param array $valeur\r
+ * @return string choix_alternatif\r
+**/\r
+function saisies_trouver_choix_alternatif($data,$valeur) {\r
+       if (!is_array($valeur)) {\r
+               $valeur = saisies_chaine2tableau($valeur) ;\r
+       }\r
+       if (!is_array($data)) {\r
+               $data = saisies_chaine2tableau($data) ;\r
+       }\r
+       $choix_theorique = array_keys($data);\r
+       $choix_alternatif = array_values(array_diff($valeur,$choix_theorique));\r
+       return $choix_alternatif[0];//on suppose que personne ne s'est amusé à proposer deux choix alternatifs\r
+}\r
 \r
-\r
-/*\r
+/**\r
  * Génère une page d'aide listant toutes les saisies et leurs options\r
+ *\r
+ * Retourne le résultat du squelette `inclure/saisies_aide` auquel\r
+ * on a transmis toutes les saisies connues.\r
+ * \r
+ * @return string Code HTML\r
  */\r
 function saisies_generer_aide(){\r
        // On a déjà la liste par saisie\r
        $saisies = saisies_lister_disponibles();\r
-       \r
+\r
        // On construit une liste par options\r
        $options = array();\r
        foreach ($saisies as $type_saisie=>$saisie){\r
@@ -448,7 +471,7 @@ function saisies_generer_aide(){
                $saisies[$type_saisie]['options'] = $options_saisie;\r
        }\r
        ksort($options);\r
-       \r
+\r
        return recuperer_fond(\r
                'inclure/saisies_aide',\r
                array(\r
@@ -458,7 +481,7 @@ function saisies_generer_aide(){
        );\r
 }\r
 \r
-/*\r
+/**\r
  * Le tableau de saisies a-t-il une option afficher_si ?\r
  *\r
  * @param array $saisies Un tableau de saisies\r
@@ -476,7 +499,7 @@ function saisies_afficher_si($saisies) {
 }\r
 \r
 \r
-/*\r
+/**\r
  * Le tableau de saisies a-t-il une option afficher_si_remplissage ?\r
  *\r
  * @param array $saisies Un tableau de saisies\r
@@ -491,4 +514,4 @@ function saisies_afficher_si_remplissage($saisies) {
        }\r
        return false;\r
 }\r
-?>\r
+\r