Changeset 91255 in spip-zone for _grenier_


Ignore:
Timestamp:
Aug 4, 2015, 10:55:55 AM (4 years ago)
Author:
marcimat@…
Message:

Le plugin champs extra (déprécié) à base d'une colonne 'extra' ayant des contenus sérialisés
devient compatible 3.1

On en profite pour :

  • Nettoyer de spip 3.1 quelques lignes de codes encore présentes qui concernaient ce plugin
  • Éviter quelques notices PHP ça et là
  • Enlever les fins de php
  • Passer un fichier en utf8
Location:
_grenier_/champs_extras
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _grenier_/champs_extras/extras_options.php

    r21371 r91255  
    2020// ou [(#EXTRA|isbn)] (ce dernier applique les filtres definis dans mes_options)
    2121// Champs extra
    22 // Non documentes, en voie d'obsolescence, cf. ecrire/inc/extra
    23 // http://doc.spip.org/@balise_EXTRA_dist
     22// Non documentes
    2423function balise_EXTRA_dist ($p) {
    2524        $_extra = champ_sql('extra', $p);
     
    6463$GLOBALS['champs_extra'] = Array (
    6564        'auteurs' => Array (
    66                         "alim" => "radio|brut|Préférences alimentaires|Veggie,Viande",
    67                         "habitation" => "liste|brut|Lieu|Kuala Lumpur,Cape Town,Uppsala",
    68                         "ml" => "case|propre|Je souhaite m'abonner à la mailinglist",
    69                         "age" => "ligne|propre|Âge du capitaine",
    70                         "biblio" => "bloc|propre|Bibliographie"
    71                 ),
     65                "alim" => "radio|brut|Préférences alimentaires|Veggie,Viande",
     66                "habitation" => "liste|brut|Lieu|Kuala Lumpur,Cape Town,Uppsala",
     67                "ml" => "case|propre|Je souhaite m'abonner à la mailinglist",
     68                "age" => "ligne|propre|Âge du capitaine",
     69                "biblio" => "bloc|propre|Bibliographie"
     70        ),
     71        'articles' => Array (
     72                "isbn" => "ligne|typo|ISBN",
     73                "options" => "multiple|brut|Options de cet article|1,2,3,plus"
     74        ),
     75        'syndic' => Array (
     76                "isbn" => "ligne|typo|ISBN",
     77                "options" => "multiple|brut|Options de ce site|1,2,3,plus"
     78        ),
     79        'rubriques' => Array (
     80                "isbn" => "ligne|typo|ISBN",
     81                "options" => "multiple|brut|Options de cette rubrique|1,2,3,plus"
     82        ),
     83        'mots' => Array (
     84                "isbn" => "ligne|typo|ISBN",
     85                "options" => "multiple|brut|Options de ce mot|1,2,3,plus"
     86        ),
     87        'breves' => Array (
     88                "isbn" => "ligne|typo|ISBN",
     89                "options" => "multiple|brut|Options de cette breve|1,2,3,plus"
     90        )
     91);
     92*/
    7293
    73         'articles' => Array (
    74                         "isbn" => "ligne|typo|ISBN",
    75                          "options" => "multiple|brut|Options de cet article|1,2,3,plus"                 
    76                 ),
    77         'syndic' => Array (
    78                         "isbn" => "ligne|typo|ISBN",
    79                          "options" => "multiple|brut|Options de ce site|1,2,3,plus"                     
    80                 ),
    81         'rubriques' => Array (
    82                         "isbn" => "ligne|typo|ISBN",
    83                          "options" => "multiple|brut|Options de cette rubrique|1,2,3,plus"                       
    84                 ),
    85         'mots' => Array (
    86                         "isbn" => "ligne|typo|ISBN",
    87                          "options" => "multiple|brut|Options de ce mot|1,2,3,plus"                       
    88                 ),
    89         'breves' => Array (
    90                         "isbn" => "ligne|typo|ISBN",
    91                          "options" => "multiple|brut|Options de cette breve|1,2,3,plus"                 
    92                 )
    93         );
    94 */
    95 ?>
  • _grenier_/champs_extras/extras_pipelines.php

    r85826 r91255  
    1212
    1313function extras_afficher_contenu_objet($flux){
    14         if ($GLOBALS['champs_extra']){
     14        if (!empty($GLOBALS['champs_extra'])) {
    1515                include_spip('base/abstract_sql');
    1616                $type = $flux['args']['type'];
    1717                $table_objet = table_objet($type);
    18                 $id_table_objet = id_table_objet($type);               
     18                $id_table_objet = id_table_objet($type);
    1919                $id_objet = $flux['args']['id_objet'];
    2020                $spip_table_objet = table_objet_sql($type);
    21        
     21
    2222                // Verfifier qu'il y a bien un champ extra (sinon plantage garanti)
    2323                $description_table = description_table($spip_table_objet);
    24                 if ($description_table["field"]["extra"]) $extra = sql_getfetsel('extra',$spip_table_objet,"$id_table_objet=".intval($id_objet));
    25                 include_spip('inc/extra');
    26                 $flux['data'].= extra_affichage($extra,$table_objet);
     24                if (isset($description_table["field"]["extra"])) {
     25                        $extra = sql_getfetsel('extra', $spip_table_objet, "$id_table_objet=".intval($id_objet));
     26                        include_spip('inc/extra');
     27                        $flux['data'] .= extra_affichage($extra, $table_objet);
     28                }
    2729        }
    28        
     30
     31        return $flux;
     32}
     33
     34/**
     35 * Désérialiser les champs 'extra' au besoin sur un formulaire d'édition
     36 *
     37 * @link https://core.spip.net/projects/spip/repository/revisions/11507
     38 *
     39 * @param array $flux
     40 * @return array
     41 */
     42function extras_formulaire_charger($flux) {
     43        if (strncmp($flux['args']['form'],"editer_",7)==0) {
     44                if (isset($flux['data']['extra']) and !is_array($flux['data']['extra'])) {
     45                        $flux['data']['extra'] = @unserialize($flux['data']['extra']);
     46                }
     47        }
    2948        return $flux;
    3049}
     
    5473function extras_pre_edition($flux){
    5574        $serveur = '';
    56         $table_objet = $flux['args']['table_objet'];
    57         $id_objet = $flux['args']['id_objet'];
    58        
    59         $trouver_table = charger_fonction('trouver_table', 'base');
    60         $desc = $trouver_table($table_objet, $serveur);
    61        
    62         // recuperer les extras (utilise $_POST, un peu sale...
    63         // a voir pour le faire marcher avec les crayons)
    64         if (isset($desc['field']['extra'])
    65         AND isset($_POST['extra'])
    66         AND $GLOBALS['champs_extra']) {
    67                 include_spip('inc/extra');
    68                 $extra = extra_update($table_objet, $id_objet, $_POST);
    69                 if ($extra !== false)
    70                         $flux['data']['extra'] = $extra;
     75        if (!empty($flux['args']['table_objet'])) {
     76                $table_objet = $flux['args']['table_objet'];
     77                $id_objet = $flux['args']['id_objet'];
     78
     79                $trouver_table = charger_fonction('trouver_table', 'base');
     80                $desc = $trouver_table($table_objet, $serveur);
     81
     82                // recuperer les extras (utilise $_POST, un peu sale...
     83                // a voir pour le faire marcher avec les crayons)
     84                if (isset($desc['field']['extra'])
     85                AND isset($_POST['extra'])
     86                AND isset($GLOBALS['champs_extra'])) {
     87                        include_spip('inc/extra');
     88                        $extra = extra_update($table_objet, $id_objet, $_POST);
     89                        if ($extra !== false)
     90                                $flux['data']['extra'] = $extra;
     91                }
    7192        }
    7293
     
    7596
    7697
    77 ?>
  • _grenier_/champs_extras/inc/extra.php

    r85826 r91255  
    1111\***************************************************************************/
    1212
     13if (!defined("_ECRIRE_INC_VERSION")) return;
    1314
    1415
     
    1617// Pour utiliser les champs "extra", il faut installer dans le fichier
    1718// ecrire/mes_options un tableau definissant les champs pour chaque
    18 // type d'objet que l'on veut Žtendre (article, rubrique, breve, auteur,
     19// type d'objet que l'on veut étendre (article, rubrique, breve, auteur,
    1920// site ou mot). Pour acceder aux valeurs des champs extra dans les
    2021// squelettes du site public, utiliser la notation :
     
    8485////////////////////////////////////////////////////////////////////////////////////
    8586
    86 //
    87 if (!defined("_ECRIRE_INC_VERSION")) return;
     87// éviter de charger 2 fois la fonction extra sur spip < 3.1
     88include_spip('inc/filtres');
     89
     90if (!function_exists('extra')) {
     91/**
     92 * Récupération de données d'un (très vieux) champ extra
     93 *
     94 * Ce filtre n'a de sens qu'avec la balise `#EXTRA`
     95 * lorsque les tables (SPIP 1.8) possédaient une colonne 'extra'
     96 * où étaient stockés des valeurs supplémentaires sérialisées.
     97 *
     98 * On pouvait les obtenir avec `[(#EXTRA|extra{cle})]`
     99 *
     100 * @deprecated Utiliser le plugin Champs Extras
     101 * @param string $letexte
     102 *     Texte de la colonne `extra` avec les données sérialisées
     103 * @param string $champ
     104 *     Nom du champ supplémentaire désiré
     105 * @return string
     106 *     Valeur du champ
     107**/
     108function extra($letexte, $champ) {
     109        $champs = unserialize($letexte);
     110        return $champs[$champ];
     111}
     112}
    88113
    89114// a partir de la liste des champs, generer la liste des input
     
    138163
    139164        // bug explode
    140         if($champs_proposes == explode('|', '')) $champs_proposes = Array();
     165        if ($champs_proposes == explode('|', '')) $champs_proposes = Array();
    141166
    142167        // maintenant, on affiche les formulaires pour les champs renseignes dans $extra
    143168        // et pour les champs proposes
     169        $affiche = '';
    144170        reset($champs_proposes);
    145171        while (list(, $champ) = each($champs_proposes)) {
    146172                $desc = $champs[$champ];
    147                 list($form, $filtre, $prettyname, $choix, $valeurs) = explode("|", $desc);
     173                list($form, $filtre, $prettyname, $choix, $valeurs) = array_pad(explode("|", $desc), 5, null);
    148174
    149175                if (!$prettyname) $prettyname = ucfirst($champ);
     
    342368        $champs = $GLOBALS['champs_extra'][$table_objet];
    343369
     370        $affiche = '';
    344371        while (list($nom,$contenu) = each($extra)) {
    345372                list ($style, $filtre, $prettyname, $choix, $valeurs) =
    346                         explode("|", $champs[$nom]);
     373                        array_pad(explode("|", $champs[$nom]), 5, null);
    347374                list($filtre, ) = explode(",", $filtre);
    348375                switch ($style) {
     
    408435}
    409436
    410 ?>
  • _grenier_/champs_extras/plugin.xml

    r85826 r91255  
    11<plugin>
    2   <nom>Champs Extras (deprecated)</nom>
    3   <slogan>De nouveaux champs (s&#233;rialis&#233;s) aux objets d'&#233;dition</slogan>
    4   <auteur>collectif</auteur>
    5   <version>1.0.2</version>
    6   <etat>stable</etat>
    7   <description>Champs extras issus du core de SPIP (disponible pour compatibilit&#233; ascendante : utiliser de pr&#233;f&#233;rence [Champs extras 2->http://contrib.spip.net/Champs-Extras-2])</description>
    8   <prefix>extras</prefix>
    9   <necessite id='SPIP' version='[2.0.0;3.0.99]' />
    10   <options>extras_options.php</options>
    11   <lien>http://contrib.spip.net/Champs-Extra,2939</lien>
    12   <pipeline>
    13           <nom>editer_contenu_objet</nom>
    14           <inclure>extras_pipelines.php</inclure>
    15   </pipeline>
    16   <pipeline>
    17           <nom>pre_edition</nom>
    18           <inclure>extras_pipelines.php</inclure>
    19   </pipeline>
    20   <pipeline>
    21           <nom>afficher_contenu_objet</nom>
    22           <inclure>extras_pipelines.php</inclure>
    23   </pipeline>
    24   <pipeline>
    25           <nom>afficher_revision_objet</nom>
    26           <inclure>extras_pipelines.php</inclure>
    27   </pipeline>
    28   <categorie>outil</categorie>
     2        <nom>Champs Extras (deprecated)</nom>
     3        <slogan>De nouveaux champs (s&#233;rialis&#233;s) aux objets d'&#233;dition</slogan>
     4        <auteur>collectif</auteur>
     5        <version>1.0.3</version>
     6        <etat>stable</etat>
     7        <description>Champs extras issus du core de SPIP (disponible pour compatibilit&#233; ascendante : utiliser de pr&#233;f&#233;rence [Champs extras 2->http://contrib.spip.net/Champs-Extras-2])</description>
     8        <prefix>extras</prefix>
     9        <necessite id='SPIP' version='[2.0.0;3.1.99]' />
     10        <options>extras_options.php</options>
     11        <lien>http://contrib.spip.net/Champs-Extra,2939</lien>
     12        <pipeline>
     13                <nom>editer_contenu_objet</nom>
     14                <inclure>extras_pipelines.php</inclure>
     15        </pipeline>
     16        <pipeline>
     17                <nom>formulaire_charger</nom>
     18                <inclure>extras_pipelines.php</inclure>
     19        </pipeline>
     20        <pipeline>
     21                <nom>pre_edition</nom>
     22                <inclure>extras_pipelines.php</inclure>
     23        </pipeline>
     24        <pipeline>
     25                <nom>afficher_contenu_objet</nom>
     26                <inclure>extras_pipelines.php</inclure>
     27        </pipeline>
     28        <pipeline>
     29                <nom>afficher_revision_objet</nom>
     30                <inclure>extras_pipelines.php</inclure>
     31        </pipeline>
     32        <categorie>outil</categorie>
    2933</plugin>
Note: See TracChangeset for help on using the changeset viewer.