Changeset 67353 in spip-zone


Ignore:
Timestamp:
Oct 31, 2012, 4:25:27 PM (7 years ago)
Author:
esj@…
Message:

Spipal extension de CONFIGURER_METAS: inclure les inclusions avant de chercher les balises HTML de saisies (report de r67352).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spipal/formulaires/configurer_metas.php

    r46795 r67353  
    11<?php
    2 
    32/***************************************************************************\
    4  *  SPIP, Systeme de publication pour l'internet                           *
    5  *                                                                         *
    6  *  Copyright (c) 2001-2010                                                *
    7  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
    8  *                                                                         *
    9  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
    10  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
     3 *  Associaspip, extension de SPIP pour gestion d'associations
     4 *
     5 * @copyright Copyright (c) 2007 Bernard Blazin & Francois de Montlivault
     6 * @copyright Copyright (c) 2010 Emmanuel Saint-James
     7 *
     8 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    119\***************************************************************************/
    1210
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     11if (!defined('_ECRIRE_INC_VERSION'))
     12        return;
    1413
    15 function formulaires_configurer_metas_charger_dist($form)
    16 {
    17         $f = charger_fonction('charger', "formulaires/$form", true);
     14function formulaires_configurer_metas_charger_dist($form) {
     15        $f = charger_fonction('charger', "formulaires/$form", TRUE);
    1816        if ($f)
    1917                return $f($form);
    2018        else {
    2119                $infos = formulaires_configurer_metas_infos($form);
    22                 if (!is_array($infos)) return $infos;
     20                if (!is_array($infos))
     21                        return $infos;
    2322                if (isset($infos['meta']) AND isset($GLOBALS[$infos['meta']]))
    2423                    return $GLOBALS[$infos['meta']];
    25                 spip_log("configurer_meta, charger: table des meta pour $form inconnue" . $infos['meta']);
     24                spip_log("configurer_meta, charger: table des meta pour $form inconnue ".$infos['meta'],'associaspip');
    2625                return array();
    2726        }
    2827}
    2928
    30 function formulaires_configurer_metas_verifier_dist($form)
    31 {
    32         $f = charger_fonction('verifier', "formulaires/$form", true);
     29function formulaires_configurer_metas_verifier_dist($form) {
     30        $f = charger_fonction('verifier', "formulaires/$form", TRUE);
    3331        return $f ? $f($form) : array();
    3432}
    3533
    36 function formulaires_configurer_metas_traiter_dist($form)
    37 {
    38         $f = charger_fonction('traiter', "formulaires/$form", true);
     34function formulaires_configurer_metas_traiter_dist($form) {
     35        $f = charger_fonction('traiter', "formulaires/$form", TRUE);
    3936        if ($f)
    4037                return $f($form);
    4138        else {
    4239                $infos = formulaires_configurer_metas_infos($form);
    43                 if (!is_array($infos)) return $infos; // fait ci-dessus en fait
     40                if (!is_array($infos))
     41                        return $infos; // fait ci-dessus en fait
    4442                $vars = formulaires_configurer_metas_recense($infos['path'], PREG_PATTERN_ORDER);
    4543                $meta = $infos['meta'];
    4644                foreach (array_unique($vars[2]) as $k) {
    4745                        $v = _request($k);
    48                         ecrire_meta($k, is_array($v) ? serialise($v) : $v, 'oui', $meta);
     46                        ecrire_meta($k, is_array($v) ? serialize($v) : $v, 'oui', $meta);
    4947                }
    5048                return !isset($infos['prefix']) ? array()
     
    5452
    5553// version amelioree de la RegExp de cfg_formulaire.
    56 define('_EXTRAIRE_SAISIES', 
     54define('_EXTRAIRE_SAISIES',
    5755        '#<(select|textarea|input)[^>]*\sname=["\'](\w+)(\[\w*\])?["\'](?: class=["\']([^\'"]*)["\'])?( multiple=)?[^>]*?>#ims');
     56
     57define('_EXTRAIRE_INCLURE','#INCLU[DR]E{fond=([^,} ]+)[^}]*}#s');
    5858
    5959// determiner la liste des noms des saisies d'un formulaire
    6060// (a refaire avec SAX)
    61 function formulaires_configurer_metas_recense($form, $opt='')
    62 {
     61function formulaires_configurer_metas_recense($form, $opt='') {
    6362        if (!$opt) $opt = PREG_SET_ORDER;
    6463        $f = file_get_contents($form);
     64        if (preg_match_all(_EXTRAIRE_INCLURE, $f, $r, PREG_SET_ORDER)) {
     65                foreach($r as $m) {
     66                        if ($i = find_in_path($m[1] . '.html'))
     67                          $f = str_replace($m[0], file_get_contents($i), $f);
     68                }
     69        }
    6570        if ($f AND preg_match_all(_EXTRAIRE_SAISIES, $f, $r, $opt))
    6671                return $r;
    67         else return array();
     72        else
     73                return array();
    6874}
    6975
     
    7783// Recuperer la description XML du plugin et normaliser
    7884// Si ce n'est pas un plugin, dire qu'il faut prendre la table std des meta.
    79 function formulaires_configurer_metas_infos($form){
     85function formulaires_configurer_metas_infos($form) {
    8086
    8187        $path = find_in_path($form.'.' . _EXTENSION_SQUELETTES, 'formulaires/');
    82         if (!$path) return ''; // cas traite en amont normalement.
     88        if (!$path)
     89                return ''; // cas traite en amont normalement.
    8390        if (!preg_match(_EXTRAIRE_PLUGIN, $path, $m))
    8491                return array('path' => $path, 'meta' => 'meta');
    8592        $plugin = $m[2];
    8693        $get_infos = charger_fonction('get_infos','plugins');
    87         $infos = $get_infos($plugin, false, $m[1]);
     94        $infos = $get_infos($plugin, FALSE, $m[1]);
    8895        if (!is_array($infos))
    8996          return _T('erreur_plugin_nom_manquant') . ' ' . $plugin . ' ' . $path;
     
    9198        $prefix = $infos['prefix'];
    9299        $infos['path'] = $path;
    93         if (!isset($infos['meta'])) $infos['meta'] = ($prefix . '_metas');
     100        if (!isset($infos['meta']))
     101                $infos['meta'] = ($prefix . '_metas');
    94102        return $infos;
    95103}
     104
    96105?>
Note: See TracChangeset for help on using the changeset viewer.