[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / saisies / inc / saisies_lister.php
index d66a8b7..b9016cd 100644 (file)
@@ -55,7 +55,11 @@ function saisies_lister_par_nom($contenu, $avec_conteneur = true) {
        if (is_array($contenu)) {
                foreach ($contenu as $ligne) {
                        if (is_array($ligne)) {
-                               if (array_key_exists('saisie', $ligne) and (!isset($ligne['saisies']) or !is_array($ligne['saisies']) or $avec_conteneur) and isset($ligne['options'])) {
+                               if (
+                                       array_key_exists('saisie', $ligne)
+                                       and (!isset($ligne['saisies']) or !is_array($ligne['saisies']) or $avec_conteneur)
+                                       and isset($ligne['options'])
+                               ) {
                                        $saisies[$ligne['options']['nom']] = $ligne;
                                }
                                if (isset($ligne['saisies']) and is_array($ligne['saisies'])) {
@@ -73,20 +77,22 @@ function saisies_lister_par_nom($contenu, $avec_conteneur = true) {
  * # saisies_lister_avec_option('sql', $saisies);.
  *
  *
- * @param String $option  Nom de l'option cherchée
- * @param Array  $saisies Liste de saisies
- * @param String $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
+ * @param string $option  Nom de l'option cherchée
+ * @param array  $saisies Liste de saisies
+ * @param string $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
  *
  * @return liste de ces saisies triees par nom ayant une option X définie
  */
 function saisies_lister_avec_option($option, $saisies, $tri = 'nom') {
        $saisies_option = array();
+       
        // tri par nom si ce n'est pas le cas
        $s = array_keys($saisies);
        if (is_int(array_shift($s))) {
                $trier = 'saisies_lister_par_'.$tri;
                $saisies = $trier($saisies);
        }
+       
        foreach ($saisies as $nom_ou_id => $saisie) {
                if (isset($saisie['options'][$option]) and $saisie['options'][$option]) {
                        $saisies_option[$nom_ou_id] = $saisie;
@@ -99,8 +105,8 @@ function saisies_lister_avec_option($option, $saisies, $tri = 'nom') {
 /**
  * Liste les saisies ayant une definition SQL.
  *
- * @param Array  $saisies liste de saisies
- * @param String $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
+ * @param array  $saisies liste de saisies
+ * @param string $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
  *
  * @return liste de ces saisies triees par nom ayant une option sql définie
  */
@@ -108,6 +114,36 @@ function saisies_lister_avec_sql($saisies, $tri = 'nom') {
        return saisies_lister_avec_option('sql', $saisies, $tri);
 }
 
+/**
+ * Liste les saisies d'un certain type.
+ *
+ * @example `$saisies_date = saisies_lister_avec_type($saisies, 'date')`
+ *
+ * @param array  $saisies liste de saisies
+ * @param string $type    Type de la saisie
+ * @param string $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom')
+ *
+ * @return liste de ces saisies triees par nom
+ */
+function saisies_lister_avec_type($saisies, $type, $tri = 'nom') {
+       $saisies_type = array();
+       
+       // tri par nom si ce n'est pas le cas
+       $s = array_keys($saisies);
+       if (is_int(array_shift($s))) {
+               $trier = 'saisies_lister_par_'.$tri;
+               $saisies = $trier($saisies);
+       }
+       
+       foreach ($saisies as $nom_ou_id => $saisie) {
+               if ($saisie['saisie'] == $type) {
+                       $saisies_type[$nom_ou_id] = $saisie;
+               }
+       }
+
+       return $saisies_type;
+}
+
 /**
  * Prend la description complète du contenu d'un formulaire et retourne
  * les saisies "à plat" classées par type de saisie.
@@ -182,13 +218,16 @@ function saisies_charger_champs($contenu) {
 function saisies_lister_valeurs_defaut($contenu) {
        $contenu = saisies_lister_par_nom($contenu, false);
        $defauts = array();
+       
        foreach ($contenu as $nom => $saisie) {
                // Si le nom du champ est un tableau indexé, il faut parser !
                if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)) {
                        $nom = $separe[1];
-                       // Dans ce cas on ne récupère que le nom, la valeur par défaut du tableau devra être renseigné autre part
+                       // Dans ce cas on ne récupère que le nom,
+                       // la valeur par défaut du tableau devra être renseigné autre part
                        $defauts[$nom] = array();
-               } else {
+               }
+               else {
                        $defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : '';
                }
        }
@@ -256,7 +295,7 @@ function saisies_comparer_rappel($a, $b) {
  * @param array $saisies_anciennes Un tableau décrivant des saisies
  * @param array $saisies_nouvelles Un autre tableau décrivant des saisies
  * @param bool  $avec_conteneur    Indique si on veut prendre en compte dans la comparaison
- * les conteneurs comme les fieldsets
+ *                                 les conteneurs comme les fieldsets
  *
  * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
  */
@@ -280,8 +319,10 @@ function saisies_lister_disponibles($saisies_repertoire = 'saisies') {
                        foreach ($liste as $fichier => $chemin) {
                                $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
                                $dossier = str_replace($fichier, '', $chemin);
+
                                // On ne garde que les saisies qui ont bien le HTML avec !
-                               if (file_exists("$dossier$type_saisie.html")
+                               if (
+                                       file_exists("$dossier$type_saisie.html")
                                        and (
                                                is_array($saisie = saisies_charger_infos($type_saisie))
                                        )
@@ -311,13 +352,14 @@ function saisies_groupes_lister_disponibles($saisies_repertoire = 'saisies') {
                        foreach ($liste as $fichier => $chemin) {
                                $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
                                $dossier = str_replace($fichier, '', $chemin);
-                               // On ne garde que les saisies qui ont bien le HTML avec !
+                               
                                if (is_array($saisie = saisies_charger_infos($type_saisie, $saisies_repertoire))) {
                                        $saisies[$type_saisie] = $saisie;
                                }
                        }
                }
        }
+
        return $saisies;
 }
 
@@ -329,6 +371,7 @@ function saisies_groupes_lister_disponibles($saisies_repertoire = 'saisies') {
 function saisies_lister_disponibles_sql($saisies_repertoire = 'saisies') {
        $saisies = array();
        $saisies_disponibles = saisies_lister_disponibles($saisies_repertoire);
+       
        foreach ($saisies_disponibles as $type => $saisie) {
                if (isset($saisie['defaut']['options']['sql']) and $saisie['defaut']['options']['sql']) {
                        $saisies[$type] = $saisie;
@@ -350,6 +393,7 @@ function saisies_charger_infos($type_saisie, $saisies_repertoire = 'saisies') {
                include_spip('inc/yaml');
                $fichier = find_in_path("$saisies_repertoire/$type_saisie.yaml");
                $saisie = yaml_decode_file($fichier);
+               
                if (is_array($saisie)) {
                        $saisie['titre'] = (isset($saisie['titre']) and $saisie['titre'])
                                ? _T_ou_typo($saisie['titre']) : $type_saisie;
@@ -358,7 +402,8 @@ function saisies_charger_infos($type_saisie, $saisies_repertoire = 'saisies') {
                        $saisie['icone'] = (isset($saisie['icone']) and $saisie['icone'])
                                ? find_in_path($saisie['icone']) : '';
                }
-       } else {
+       }
+       else {
                $saisie = array();
        }