Changeset 113610 in spip-zone


Ignore:
Timestamp:
Jan 26, 2019, 10:01:03 AM (3 months ago)
Author:
root
Message:

On propage l'utilisation de page_noizetier_repertorier() dans le formulaires editer_page et on ajoute la possibilité de traiter un critère champ != valeur

Location:
_plugins_/noizetier/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/formulaires/editer_page.php

    r113522 r113610  
    156156        if ($edition != 'modifier') {
    157157                $composition = _request('composition');
    158                 // Identifiant libre
    159158                $type_page = _request('type_page');
    160                 $where = array('composition!=' . sql_quote(''));
    161                 $pages = sql_allfetsel('page', 'spip_noizetier_pages', $where);
    162                 if ($pages) {
    163                         $pages = array_map('reset', $pages);
    164                         if (isset($pages[$type_page.'-'.$composition])) {
    165                                 $erreurs['composition'] = _T('noizetier:formulaire_identifiant_deja_pris');
    166                         }
    167                 }
    168                 // Syntaxe
    169                 if (!preg_match('#^[a-z0-9_]+$#', $composition)) {
     159                $informations = array('nom');
     160                $filtres = array(
     161                        'type' => $type_page,
     162                        'composition' => $composition
     163                );
     164                include_spip('inc/noizetier_page');
     165                $page = page_noizetier_repertorier($informations, $filtres);
     166
     167                if ($page) {
     168                        // Existence d'une composition de même nom.
     169                        $erreurs['composition'] = _T('noizetier:formulaire_identifiant_deja_pris');
     170                } elseif (!preg_match('#^[a-z0-9_]+$#', $composition)) {
     171                        // Erreur de syntaxe sur le nom de la composition
    170172                        $erreurs['composition'] = _T('noizetier:formulaire_erreur_format_identifiant');
    171173                }
     
    365367
    366368        // Récupération des compositions explicites et virtuelles
    367         $select = array('page', 'type', 'composition', 'nom', 'branche');
    368         $where = array('composition!=' . sql_quote(''));
    369         $compositions = sql_allfetsel($select, 'spip_noizetier_pages', $where);
     369        include_spip('inc/noizetier_page');
     370        $informations = array('page', 'type', 'composition', 'nom', 'branche');
     371        $filtres = array('composition' => '!');
     372        $compositions = page_noizetier_repertorier($informations, $filtres);
    370373        if ($compositions) {
    371374                // On réindexe le tableau entier par l'identifiant de la page
  • _plugins_/noizetier/trunk/inc/noizetier_page.php

    r113605 r113610  
    278278
    279279                // On ajoute toujours l'identifiant page car il sert à l'indexation du tableau de sortie.
    280                 if ($information_valide) {
    281                         $select = array_merge($select, array('page'));
     280                if ($information_valide and !in_array('page', $select)) {
     281                        $select[] = 'page';
    282282                }
    283283        }
     
    287287                $where = array();
    288288                if ($filtres) {
    289                         foreach ($filtres as $_champ => $_valeur) {
    290                                 $where[] = $_champ . '=' . sql_quote($_valeur);
     289                        foreach ($filtres as $_champ => $_critere) {
     290                                $operateur = '=';
     291                                $valeur = $_critere;
     292                                if (substr($_critere, 0, 1) == '!') {
     293                                        $operateur = '!=';
     294                                        $valeur = ltrim($_critere, '!');
     295                                }
     296                                $where[] = $_champ . $operateur . sql_quote($valeur);
    291297                        }
    292298                }
Note: See TracChangeset for help on using the changeset viewer.