/**\r
* Gestion de l'affichage des saisies\r
*\r
- * @return SPIP\Saisies\Saisies\r
+ * @package SPIP\Saisies\Saisies\r
**/\r
\r
// Sécurité\r
// 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
}\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
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
* (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
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
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
// 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
// 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
\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
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
$saisies[$type_saisie]['options'] = $options_saisie;\r
}\r
ksort($options);\r
- \r
+\r
return recuperer_fond(\r
'inclure/saisies_aide',\r
array(\r
);\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
}\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
}\r
return false;\r
}\r
-?>\r
+\r