Browse Source

Formatage, dont correction d'un fichier où il y a eu cassage de nos PSR par un commit de Teddy #délation.

svn/root/tags/v2.19.7
rastapopoulos@spip.org 5 years ago
parent
commit
a0fc85f477
  1. 67
      formulaires/construire_formulaire.php
  2. 74
      inc/saisies.php
  3. 491
      inc/saisies_lister.php

67
formulaires/construire_formulaire.php

@ -77,8 +77,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
$configurer_saisie = $enregistrer_saisie = '';
// Pas d'erreur si l'on ne demande rien
if (!($nom_ou_id = $configurer_saisie = _request('configurer_saisie')
or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))) {
if (
!($nom_ou_id = $configurer_saisie = _request('configurer_saisie')
or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))
) {
return $erreurs;
}
@ -91,7 +93,8 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
if ($nom_ou_id[0] == '@') {
$saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel);
$nom = $saisies_actuelles[$nom_ou_id]['options']['nom'];
} else {
}
else {
$saisies_actuelles = saisies_lister_par_nom($formulaire_actuel);
$nom = $nom_ou_id;
}
@ -127,8 +130,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
}
// S'il y a l'option adéquat, on ajoute le champ pour modifier le nom
if (isset($options['modifier_nom']) and $options['modifier_nom']
and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) {
if (
isset($options['modifier_nom']) and $options['modifier_nom']
and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)
) {
$chemin_nom[] = 'saisies';
$chemin_nom[] = '0';
@ -161,6 +166,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) {
include_spip('inc/verifier');
$liste_verifications = verifier_lister_disponibles();
// La vérification fichiers ne sert que pour la saisie fichiers, et réciproquement, cette saisies n'utilise que cette vérification
if ($saisie['saisie'] == 'fichiers') {
$liste_verifications = array('fichiers'=>$liste_verifications['fichiers']);
@ -212,8 +218,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
}
$verif_options = array_merge(array($saisie_liste_verif), $verif_options);
}
// Permettre d'intégrer des saisies et fieldset au formulaire de configuration.
// Si des vérifications sont à faire, elles seront prises en compte
// lors des tests de vérifications à l'enregistrement.
@ -233,6 +238,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
$saisie_modifiee = _request("saisie_modifiee_${nom}");
// On cherche les erreurs de la configuration
$vraies_erreurs = saisies_verifier($formulaire_config);
// Si on autorise à modifier le nom ET qu'il doit être unique : on vérifie
if (isset($options['modifier_nom']) and $options['modifier_nom']
and isset($options['nom_unique']) and $options['nom_unique']) {
@ -241,6 +247,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
$vraies_erreurs["saisie_modifiee_${nom}[options][nom]"] = _T('saisies:erreur_option_nom_unique');
}
}
// On regarde s'il a été demandé un type de vérif
if (isset($saisie_modifiee['verifier']['type'])
and (($type_verif = $saisie_modifiee['verifier']['type']) != '')
@ -335,6 +342,7 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
}
$saisie = array_replace_recursive($saisie, $defaut);
}
$formulaire_actuel = saisies_inserer($formulaire_actuel, $saisie);
}
@ -410,6 +418,7 @@ function construire_formulaire_transformer_nom(&$valeur, $cle, $transformation)
$valeur = str_replace('@valeur@', $valeur, $transformation);
}
}
// À utiliser avec un array_walk_recursive()
// Applique une transformation à la valeur de tous les champs "afficher_si" d'un formulaire, y compris loin dans l'arbo
function construire_formulaire_transformer_afficher_si(&$valeur, $cle, $transformation) {
@ -425,6 +434,7 @@ function construire_formulaire_generer_saisie_configurable($saisie, $env) {
$identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : '';
// On cherche si ya un formulaire de config
$formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : '';
// On ajoute une classe
if (!isset($saisie['options']['conteneur_class'])) {
$saisie['options']['conteneur_class'] = ''; // initialisation
@ -557,8 +567,10 @@ function construire_formulaire_generer_saisie_configurable($saisie, $env) {
'fin'
);
}
// On génère le HTML de la saisie
$html = saisies_generer_html($saisie, $env);
return $html;
}
@ -583,27 +595,28 @@ function saisie_option_contenu_vide($var) {
function saisies_groupe_inserer($formulaire_actuel, $saisie) {
include_spip('inclure/configurer_saisie_fonctions');
//le groupe de saisies
$saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes');
//le groupe de saisies
$saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes');
//le tableau est-il en options ou en saisies ?
$classique_yaml=count($saisies_charger_infos['options']);
$formidable_yaml=count($saisies_charger_infos['saisies']);
if ($classique_yaml>0) {
$champ_options = 'options';
}
if ($formidable_yaml>0) {
$champ_options = 'saisies';
}
//le tableau est-il en options ou en saisies ?
$classique_yaml=count($saisies_charger_infos['options']);
$formidable_yaml=count($saisies_charger_infos['saisies']);
if ($classique_yaml>0) {
$champ_options = 'options';
}
if ($formidable_yaml>0) {
$champ_options = 'saisies';
}
//les champs du groupe
foreach ($saisies_charger_infos[$champ_options] as $info_saisie) {
unset($info_saisie['identifiant']);
$saisies_disponibles = saisies_lister_disponibles();
$construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie'];
$nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);
//les champs du groupe
foreach ($saisies_charger_infos[$champ_options] as $info_saisie) {
unset($info_saisie['identifiant']);
$saisies_disponibles = saisies_lister_disponibles();
$construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie'];
$nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);
$formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
}
return $formulaire_actuel;
$formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
}
return $formulaire_actuel;
}

74
inc/saisies.php

@ -11,28 +11,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/*
* Une librairie pour manipuler ou obtenir des infos sur un tableau de saisies
*
* saisies_lister_par_nom()
* saisies_lister_champs()
* saisies_lister_valeurs_defaut()
* saisies_charger_champs()
* saisies_chercher()
* saisies_supprimer()
* saisies_inserer()
* saisies_deplacer()
* saisies_modifier()
* saisies_verifier()
* saisies_comparer()
* saisies_generer_html()
* saisies_generer_vue()
* saisies_generer_nom()
* saisies_inserer_html()
* saisies_lister_disponibles()
* saisies_autonomes()
*/
// Différentes méthodes pour trouver les saisies
include_spip('inc/saisies_lister');
@ -50,7 +28,8 @@ include_spip('inc/saisies_afficher');
* @return array Retourne les saisies du formulaire sinon false
*/
function saisies_chercher_formulaire($form, $args) {
if ($fonction_saisies = charger_fonction('saisies', 'formulaires/'.$form, true)
if (
$fonction_saisies = charger_fonction('saisies', 'formulaires/'.$form, true)
and $saisies = call_user_func_array($fonction_saisies, $args)
and is_array($saisies)
// On passe les saisies dans un pipeline normé comme pour CVT
@ -96,9 +75,11 @@ function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin = fa
return $retourner_chemin ? array_merge($chemin, array('saisies'), $retour) : $retour;
}
}
} elseif (is_array($id_ou_nom_ou_chemin)) {
}
elseif (is_array($id_ou_nom_ou_chemin)) {
$chemin = $id_ou_nom_ou_chemin;
$saisie = $saisies;
// On vérifie l'existence quand même
foreach ($chemin as $cle) {
if (isset($saisie[$cle])) {
@ -107,6 +88,7 @@ function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin = fa
return null;
}
}
// Si c'est une vraie saisie
if ($saisie['saisie'] and $saisie['options']['nom']) {
return $retourner_chemin ? $chemin : $saisie;
@ -152,9 +134,11 @@ function saisies_identifier($saisies, $regenerer = false) {
if (!is_array($saisies)) {
return array();
}
foreach ($saisies as $k => $saisie) {
$saisies[$k] = saisie_identifier($saisie, $regenerer);
}
return $saisies;
}
@ -176,6 +160,7 @@ function saisie_identifier($saisie, $regenerer = false) {
if (isset($saisie['saisies']) and is_array($saisie['saisies'])) {
$saisie['saisies'] = saisies_identifier($saisie['saisies'], $regenerer);
}
return $saisie;
}
@ -202,6 +187,7 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
$champ = $saisie['options']['nom'];
$file = (($saisie['saisie'] == 'input' and isset($saisie['options']['type']) and $saisie['options']['type'] == 'file') or $saisie['saisie'] == 'fichiers');
$verifier = isset($saisie['verifier']) ? $saisie['verifier'] : false;
// Cas de la saisie 'fichiers':
if ($saisie['saisie'] == 'fichiers') {
$infos_fichiers_precedents = _request('cvtupload_fichiers_precedents');
@ -222,7 +208,9 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
} elseif (!isset($_FILES[$champ])) {
$valeur = null;
}
} else { // tout type de saisie, sauf fichiers
}
// Tout type de saisie, sauf fichiers
else {
// Si le nom du champ est un tableau indexé, il faut parser !
if (preg_match('/([\w]+)((\[[\w]+\])+)/', $champ, $separe)) {
$valeur = _request($separe[1]);
@ -236,12 +224,15 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
$valeur = _request($champ);
}
}
// Pour la saisie "destinataires" il faut filtrer si jamais on a mis un premier choix vide
if ($saisie['saisie'] == 'destinataires') {
$valeur = array_filter($valeur);
}
// On regarde d'abord si le champ est obligatoire
if ($obligatoire
if (
$obligatoire
and $obligatoire != 'non'
and (
($file and $valeur==null)
@ -260,11 +251,13 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
// On continue seulement si ya pas d'erreur d'obligation et qu'il y a une demande de verif
if ((!isset($erreurs[$champ]) or !$erreurs[$champ]) and is_array($verifier) and $verif_fonction) {
if ($verifier['type'] == 'fichiers') { // si on fait une vérification de type fichiers, il n'y a pas vraiment de normalisation, mais un retour d'erreur fichiers par fichiers
// Si on fait une vérification de type fichiers, il n'y a pas vraiment de normalisation, mais un retour d'erreur fichiers par fichiers
if ($verifier['type'] == 'fichiers') {
$normaliser = array();
} else {
$normaliser = null;
}
// Si le champ n'est pas valide par rapport au test demandé, on ajoute l'erreur
$options = isset($verifier['options']) ? $verifier['options'] : array();
if ($erreur_eventuelle = $verif_fonction($valeur, $verifier['type'], $options, $normaliser)) {
@ -274,12 +267,14 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
$erreurs_fichiers[$champ] = $normaliser;
}
}
// S'il n'y a pas d'erreur et que la variable de normalisation a été remplie, on l'injecte dans le POST
} elseif (!is_null($normaliser) and $verifier['type'] != 'fichiers') {
elseif (!is_null($normaliser) and $verifier['type'] != 'fichiers') {
set_request($champ, $normaliser);
}
}
}
// Last but not least, on passe nos résultats à un pipeline
$erreurs = pipeline(
'saisies_verifier',
@ -291,6 +286,7 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
'data' => $erreurs
)
);
return $erreurs;
}
@ -301,6 +297,7 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles = true, &$erreur
*/
function saisies_aplatir_tableau($tab) {
$nouveau_tab = array();
foreach ($tab as $entree => $contenu) {
if (is_array($contenu)) {
foreach ($contenu as $cle => $valeur) {
@ -310,6 +307,7 @@ function saisies_aplatir_tableau($tab) {
$nouveau_tab[$entree] = $contenu;
}
}
return $nouveau_tab;
}
@ -338,6 +336,7 @@ function saisies_chaine2tableau($chaine, $separateur = "\n") {
if ($chaine and is_string($chaine)) {
$tableau = array();
$soustab = false;
// On découpe d'abord en lignes
$lignes = explode($separateur, $chaine);
foreach ($lignes as $i => $ligne) {
@ -376,10 +375,12 @@ function saisies_chaine2tableau($chaine, $separateur = "\n") {
}
}
return $tableau;
} elseif (is_array($chaine)) {
}
elseif (is_array($chaine)) {
// Si c'est déjà un tableau on lui applique _T_ou_typo (qui fonctionne de manière récursive avant de le renvoyer
return _T_ou_typo($chaine, 'multi');
} else {
}
else {
return array();
}
}
@ -399,6 +400,7 @@ function saisies_tableau2chaine($tableau) {
if ($tableau and is_array($tableau)) {
$chaine = '';
$avant_est_tableau = false;
foreach ($tableau as $cle => $valeur) {
if (is_array($valeur)) {
$avant_est_tableau = true;
@ -417,10 +419,12 @@ function saisies_tableau2chaine($tableau) {
$chaine = trim($chaine);
return $chaine;
} elseif (is_string($tableau)) {
}
elseif (is_string($tableau)) {
// Si c'est déjà une chaine on la renvoie telle quelle
return $tableau;
} else {
}
else {
return '';
}
}
@ -471,6 +475,7 @@ function saisies_trouver_choix_alternatif($data, $valeur) {
if (!is_array($data)) {
$data = saisies_chaine2tableau($data) ;
}
$choix_theorique = array_keys($data);
$choix_alternatif = array_values(array_diff($valeur, $choix_theorique));
if (isset($choix_alternatif[0])) {
@ -524,15 +529,16 @@ function saisies_generer_aide() {
* @param array $saisies Un tableau de saisies
* @return boolean
*/
function saisies_afficher_si($saisies) {
$saisies = saisies_lister_par_nom($saisies, true);
// Dès qu'il y a au moins une option afficher_si, on l'active
foreach ($saisies as $saisie) {
if (isset($saisie['options']['afficher_si'])) {
return true;
}
}
return false;
}
@ -545,11 +551,13 @@ function saisies_afficher_si($saisies) {
*/
function saisies_afficher_si_remplissage($saisies) {
$saisies = saisies_lister_par_nom($saisies, true);
// Dès qu'il y a au moins une option afficher_si_remplissage, on l'active
foreach ($saisies as $saisie) {
if (isset($saisie['options']['afficher_si_remplissage'])) {
return true;
}
}
return false;
}

491
inc/saisies_lister.php

@ -8,7 +8,7 @@
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
return;
}
/**
@ -20,25 +20,24 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @return array Un tableau avec uniquement les saisies
*/
function saisies_lister_par_identifiant($contenu, $avec_conteneur = true)
{
$saisies = array();
if (is_array($contenu)) {
foreach ($contenu as $ligne) {
if (is_array($ligne)) {
$enfants_presents = (isset($ligne['saisies']) and is_array($ligne['saisies']));
if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) {
$saisies[$ligne['identifiant']] = $ligne;
}
if ($enfants_presents) {
$saisies = array_merge($saisies, saisies_lister_par_identifiant($ligne['saisies']));
}
}
}
}
return $saisies;
function saisies_lister_par_identifiant($contenu, $avec_conteneur = true) {
$saisies = array();
if (is_array($contenu)) {
foreach ($contenu as $ligne) {
if (is_array($ligne)) {
$enfants_presents = (isset($ligne['saisies']) and is_array($ligne['saisies']));
if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) {
$saisies[$ligne['identifiant']] = $ligne;
}
if ($enfants_presents) {
$saisies = array_merge($saisies, saisies_lister_par_identifiant($ligne['saisies']));
}
}
}
}
return $saisies;
}
/**
@ -50,26 +49,27 @@ function saisies_lister_par_identifiant($contenu, $avec_conteneur = true)
*
* @return array Un tableau avec uniquement les saisies
*/
function saisies_lister_par_nom($contenu, $avec_conteneur = true)
{
$saisies = array();
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'])) {
$saisies[$ligne['options']['nom']] = $ligne;
}
if (isset($ligne['saisies']) and is_array($ligne['saisies'])) {
$saisies = array_merge($saisies, saisies_lister_par_nom($ligne['saisies']));
}
}
}
}
return $saisies;
function saisies_lister_par_nom($contenu, $avec_conteneur = true) {
$saisies = array();
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'])
) {
$saisies[$ligne['options']['nom']] = $ligne;
}
if (isset($ligne['saisies']) and is_array($ligne['saisies'])) {
$saisies = array_merge($saisies, saisies_lister_par_nom($ligne['saisies']));
}
}
}
}
return $saisies;
}
/**
@ -83,22 +83,23 @@ function saisies_lister_par_nom($contenu, $avec_conteneur = true)
*
* @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;
}
}
return $saisies_option;
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;
}
}
return $saisies_option;
}
/**
@ -109,9 +110,8 @@ function saisies_lister_avec_option($option, $saisies, $tri = 'nom')
*
* @return liste de ces saisies triees par nom ayant une option sql définie
*/
function saisies_lister_avec_sql($saisies, $tri = 'nom')
{
return saisies_lister_avec_option('sql', $saisies, $tri);
function saisies_lister_avec_sql($saisies, $tri = 'nom') {
return saisies_lister_avec_option('sql', $saisies, $tri);
}
/**
@ -125,22 +125,23 @@ function saisies_lister_avec_sql($saisies, $tri = '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;
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;
}
/**
@ -152,24 +153,23 @@ function saisies_lister_avec_type($saisies, $type, $tri = 'nom')
*
* @return array Un tableau avec uniquement les saisies
*/
function saisies_lister_par_type($contenu)
{
$saisies = array();
if (is_array($contenu)) {
foreach ($contenu as $ligne) {
if (is_array($ligne)) {
if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))) {
$saisies[ $ligne['saisie'] ][ $ligne['options']['nom'] ] = $ligne;
}
if (is_array($ligne['saisies'])) {
$saisies = array_merge_recursive($saisies, saisies_lister_par_type($ligne['saisies']));
}
}
}
}
return $saisies;
function saisies_lister_par_type($contenu) {
$saisies = array();
if (is_array($contenu)) {
foreach ($contenu as $ligne) {
if (is_array($ligne)) {
if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))) {
$saisies[ $ligne['saisie'] ][ $ligne['options']['nom'] ] = $ligne;
}
if (is_array($ligne['saisies'])) {
$saisies = array_merge_recursive($saisies, saisies_lister_par_type($ligne['saisies']));
}
}
}
}
return $saisies;
}
/**
@ -181,11 +181,10 @@ function saisies_lister_par_type($contenu)
*
* @return array Un tableau listant les noms des champs
*/
function saisies_lister_champs($contenu, $avec_conteneur = true)
{
$saisies = saisies_lister_par_nom($contenu, $avec_conteneur);
function saisies_lister_champs($contenu, $avec_conteneur = true) {
$saisies = saisies_lister_par_nom($contenu, $avec_conteneur);
return array_keys($saisies);
return array_keys($saisies);
}
/**
@ -197,16 +196,15 @@ function saisies_lister_champs($contenu, $avec_conteneur = true)
*
* @return array Un tableau de contexte
*/
function saisies_charger_champs($contenu)
{
// array_fill_keys est disponible uniquement avec PHP >= 5.2.0
// return array_fill_keys(saisies_lister_champs($contenu, false), '');
$champs = array();
foreach (saisies_lister_champs($contenu, false) as $champ) {
$champs[$champ] = '';
}
return $champs;
function saisies_charger_champs($contenu) {
// array_fill_keys est disponible uniquement avec PHP >= 5.2.0
// return array_fill_keys(saisies_lister_champs($contenu, false), '');
$champs = array();
foreach (saisies_lister_champs($contenu, false) as $champ) {
$champs[$champ] = '';
}
return $champs;
}
/**
@ -217,23 +215,24 @@ function saisies_charger_champs($contenu)
*
* @return array Un tableau renvoyant la valeur par défaut de chaque champs
*/
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
$defauts[$nom] = array();
} else {
$defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : '';
}
}
return $defauts;
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
$defauts[$nom] = array();
}
else {
$defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : '';
}
}
return $defauts;
}
/**
@ -246,30 +245,29 @@ function saisies_lister_valeurs_defaut($contenu)
*
* @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
*/
function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true, $tri = 'nom')
{
$trier = "saisies_lister_par_$tri";
$saisies_anciennes = $trier($saisies_anciennes, $avec_conteneur);
$saisies_nouvelles = $trier($saisies_nouvelles, $avec_conteneur);
// Les saisies supprimées sont celles qui restent dans les anciennes quand on a enlevé toutes les nouvelles
$saisies_supprimees = array_diff_key($saisies_anciennes, $saisies_nouvelles);
// Les saisies ajoutées, c'est le contraire
$saisies_ajoutees = array_diff_key($saisies_nouvelles, $saisies_anciennes);
// Il reste alors les saisies qui ont le même nom
$saisies_restantes = array_intersect_key($saisies_anciennes, $saisies_nouvelles);
// Dans celles-ci, celles qui sont modifiées sont celles dont la valeurs est différentes
$saisies_modifiees = array_udiff(array_diff_key($saisies_nouvelles, $saisies_ajoutees), $saisies_restantes, 'saisies_comparer_rappel');
#$saisies_modifiees = array_udiff($saisies_nouvelles, $saisies_restantes, 'saisies_comparer_rappel');
// Et enfin les saisies qui ont le même nom et la même valeur
$saisies_identiques = array_diff_key($saisies_restantes, $saisies_modifiees);
return array(
'supprimees' => $saisies_supprimees,
'ajoutees' => $saisies_ajoutees,
'modifiees' => $saisies_modifiees,
'identiques' => $saisies_identiques,
);
function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true, $tri = 'nom') {
$trier = "saisies_lister_par_$tri";
$saisies_anciennes = $trier($saisies_anciennes, $avec_conteneur);
$saisies_nouvelles = $trier($saisies_nouvelles, $avec_conteneur);
// Les saisies supprimées sont celles qui restent dans les anciennes quand on a enlevé toutes les nouvelles
$saisies_supprimees = array_diff_key($saisies_anciennes, $saisies_nouvelles);
// Les saisies ajoutées, c'est le contraire
$saisies_ajoutees = array_diff_key($saisies_nouvelles, $saisies_anciennes);
// Il reste alors les saisies qui ont le même nom
$saisies_restantes = array_intersect_key($saisies_anciennes, $saisies_nouvelles);
// Dans celles-ci, celles qui sont modifiées sont celles dont la valeurs est différentes
$saisies_modifiees = array_udiff(array_diff_key($saisies_nouvelles, $saisies_ajoutees), $saisies_restantes, 'saisies_comparer_rappel');
#$saisies_modifiees = array_udiff($saisies_nouvelles, $saisies_restantes, 'saisies_comparer_rappel');
// Et enfin les saisies qui ont le même nom et la même valeur
$saisies_identiques = array_diff_key($saisies_restantes, $saisies_modifiees);
return array(
'supprimees' => $saisies_supprimees,
'ajoutees' => $saisies_ajoutees,
'modifiees' => $saisies_modifiees,
'identiques' => $saisies_identiques,
);
}
/**
@ -280,13 +278,12 @@ function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneu
*
* @return int Retourne 0 si les saisies sont identiques, 1 sinon.
*/
function saisies_comparer_rappel($a, $b)
{
if ($a === $b) {
return 0;
} else {
return 1;
}
function saisies_comparer_rappel($a, $b) {
if ($a === $b) {
return 0;
} else {
return 1;
}
}
/**
@ -302,9 +299,8 @@ function saisies_comparer_rappel($a, $b)
*
* @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
*/
function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true)
{
return saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur, 'identifiant');
function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true) {
return saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur, 'identifiant');
}
/**
@ -312,32 +308,32 @@ function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles
*
* @return array Un tableau listant des saisies et leurs options
*/
function saisies_lister_disponibles($saisies_repertoire = 'saisies')
{
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
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")
and (
is_array($saisie = saisies_charger_infos($type_saisie))
)
) {
$saisies[$type_saisie] = $saisie;
}
}
}
}
return $saisies;
function saisies_lister_disponibles($saisies_repertoire = 'saisies') {
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
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")
and (
is_array($saisie = saisies_charger_infos($type_saisie))
)
) {
$saisies[$type_saisie] = $saisie;
}
}
}
}
return $saisies;
}
/**
@ -345,27 +341,26 @@ function saisies_lister_disponibles($saisies_repertoire = 'saisies')
*
* @return array Un tableau listant des saisies et leurs options
*/
function saisies_groupes_lister_disponibles($saisies_repertoire = 'saisies')
{
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
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;
function saisies_groupes_lister_disponibles($saisies_repertoire = 'saisies') {
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
foreach ($liste as $fichier => $chemin) {
$type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
$dossier = str_replace($fichier, '', $chemin);
if (is_array($saisie = saisies_charger_infos($type_saisie, $saisies_repertoire))) {
$saisies[$type_saisie] = $saisie;
}
}
}
}
return $saisies;
}
/**
@ -373,17 +368,17 @@ function saisies_groupes_lister_disponibles($saisies_repertoire = 'saisies')
*
* @return array Un tableau listant des saisies et leurs options
*/
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;
}
}
return $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;
}
}
return $saisies;
}
/**
@ -393,25 +388,26 @@ function saisies_lister_disponibles_sql($saisies_repertoire = 'saisies')
*
* @return array Un tableau contenant le YAML décodé
*/
function saisies_charger_infos($type_saisie, $saisies_repertoire = 'saisies')
{
if (defined('_DIR_PLUGIN_YAML')) {
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;
$saisie['description'] = (isset($saisie['description']) and $saisie['description'])
? _T_ou_typo($saisie['description']) : '';
$saisie['icone'] = (isset($saisie['icone']) and $saisie['icone'])
? find_in_path($saisie['icone']) : '';
}
} else {
$saisie = array();
}
return $saisie;
function saisies_charger_infos($type_saisie, $saisies_repertoire = 'saisies') {
if (defined('_DIR_PLUGIN_YAML')) {
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;
$saisie['description'] = (isset($saisie['description']) and $saisie['description'])
? _T_ou_typo($saisie['description']) : '';
$saisie['icone'] = (isset($saisie['icone']) and $saisie['icone'])
? find_in_path($saisie['icone']) : '';
}
}
else {
$saisie = array();
}
return $saisie;
}
/**
@ -419,17 +415,16 @@ function saisies_charger_infos($type_saisie, $saisies_repertoire = 'saisies')
*
* @return array Retourne un tableau contenant les types de saisies qui ne doivent pas utiliser le _base.html commun
*/
function saisies_autonomes()
{
$saisies_autonomes = pipeline(
'saisies_autonomes',
array(
'fieldset',
'hidden',
'destinataires',
'explication',
)
);
return $saisies_autonomes;
function saisies_autonomes() {
$saisies_autonomes = pipeline(
'saisies_autonomes',
array(
'fieldset',
'hidden',
'destinataires',
'explication',
)
);
return $saisies_autonomes;
}

Loading…
Cancel
Save