Changeset 57129 in spip-zone


Ignore:
Timestamp:
Jan 15, 2012, 2:44:52 PM (8 years ago)
Author:
marcimat@…
Message:

+ unimarc en plus,
+ touslesauteurs / tousliensauteurs c'est : lesauteurs_personne + lesauteurs_collectivite...
+ pas de genre dans le résumé (c'est un champs extra de chez nous ça...)
+ lien vers les éditeurs.

Location:
_plugins_/spip-pmb/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-pmb/trunk/inc/unimarc.php

    r57122 r57129  
    6868 *              'b' => array('titre', 'pmb_nettoyer_caracteres') // filtre a appliquer sur la valeur
    6969 *              'c' => array('texte', 'couper', 300) // filtre a appliquer sur la valeur : couper($valeur, 300)
     70 *              '9' => 'id/nom' // recherche la cle 9 et une valeur extraite d'une valeur 'id:xxx'
    7071 *
    7172 *              Ou encore, possibilite pour un attribut de donner plusieurs champs
     
    121122                // juste la valeur
    122123                } else {
    123                         $cle = $t;
    124                 }
    125 
    126                 return array(
    127                         array(
    128                                 'cle' => $cle,
    129                                 'valeur' => $valeur,
    130                         )
    131                 );
     124                        // soit 'nom' soit 'id:nom'
     125                        list($t, $sous) = explode(':', $t);
     126                        if (!$sous) {
     127                                // simple 'nom'
     128                                $cle = $t;
     129                        } else {
     130                                // 'id:nom'
     131                                list($valeur_cle, $valeur) = explode(':', $valeur, 2);
     132                                if ($valeur AND $valeur_cle==$t) {
     133                                        $cle = $sous;
     134                                        $valeur = $valeur;
     135                                } else {
     136                                        $cle = $valeur = '';
     137                                }
     138                        }
     139                }
     140               
     141                if ($cle and strlen($valeur)) {
     142                        return array(
     143                                array(
     144                                        'cle' => $cle,
     145                                        'valeur' => $valeur,
     146                                )
     147                        );
     148                }
    132149        }
    133150
     
    196213                '210' => array(
    197214                        'a' => 'lieu_publication',
    198                         'c' => 'editeur',
     215                        'c' => array(
     216                                'editeur'=>'$valeur',
     217                                'id_editeur'=>'$id',
     218                        ),
    199219                        'd' => 'annee_publication',
    200220                        'e' => 'lieu_fabrication',
     
    248268
    249269                // Unité matérielle
     270                // a quelle unite apartient cette notice,
     271                // c'est a dire un chapitre (notice) pour un livre (unite);
     272                // il y a normalement un id a recuperer...
    250273                '463' => array(
    251274                        // y a aussi plusieurs 9 decrivant un lien... ?
    252275                        't' => 'unite_materielle', // Titre
     276                        '9' => 'id:id_unite_materielle', // il y a differents 9... avec des valeurs 'id:3219'
    253277                ),
    254278
     
    272296                // 701 - Nom de personne - Autre responsabilité principale
    273297                // 702 - Nom de personne - Responsabilité secondaire
    274 
    275 
    276 
    277                 // Collectivité - Responsabilité principale
    278                 '710' => array(
    279                         'a' => array(
    280                                 'collectivite' => '$valeur',
    281                                 'id_collectivite' => '$id',
    282                         ),
    283                         //'4' => '' // Code de fonction
    284                 ),
    285 
    286 
    287                 // Collectivité - Autre responsabilité principale
    288                 '711' => array(
    289                         'a' => array(
    290                                 'collectivite_autre' => '$valeur',
    291                                 'id_collectivite_autre' => '$id',
    292                         ),
    293                         //'4' => '' // Code de fonction
    294                 ),
    295 
     298                // 710 - Nom de collectivite - Responsabilité principale
     299                // 711 - Nom de collectivite - Autre responsabilité principale
     300                // 712 - Nom de collectivite - Responsabilité secondaire
    296301
    297302                // Adresse électronique et mode d'accès
     
    342347// Nom de personne - Responsabilité principale
    343348function pmb_parse_unimarc_data_700($groupe, $id) {
    344         return pmb_parse_unimarc_data_70x($groupe, $id);
     349        return pmb_parse_unimarc_data_7xx($groupe, $id, 'personne');
    345350}
    346351
    347352// Nom de personne - Autre responsabilité principale
    348353function pmb_parse_unimarc_data_701($groupe, $id) {
    349         return pmb_parse_unimarc_data_70x($groupe, $id, 2);
     354        return pmb_parse_unimarc_data_7xx($groupe, $id, 'personne', 2);
    350355}
    351356
    352357// Nom de personne - Responsabilité secondaire
    353358function pmb_parse_unimarc_data_702($groupe, $id) {
    354         return pmb_parse_unimarc_data_70x($groupe, $id, 3);
    355 }
    356 
    357 
    358 function pmb_parse_unimarc_data_70x($groupe, $id, $indice='') {
     359        return pmb_parse_unimarc_data_7xx($groupe, $id, 'personne', 3);
     360}
     361
     362
     363// Nom de collectif - Responsabilité principale
     364function pmb_parse_unimarc_data_710($groupe, $id) {
     365        return pmb_parse_unimarc_data_7xx($groupe, $id, 'collectivite');
     366}
     367
     368// Nom de collectif - Autre responsabilité principale
     369function pmb_parse_unimarc_data_711($groupe, $id) {
     370        return pmb_parse_unimarc_data_7xx($groupe, $id, 'collectivite', 2);
     371}
     372
     373// Nom de collectif - Responsabilité secondaire
     374function pmb_parse_unimarc_data_712($groupe, $id) {
     375        return pmb_parse_unimarc_data_7xx($groupe, $id, 'collectivite', 3);
     376}
     377
     378// type : 'personne', 'collectivite' ...
     379function pmb_parse_unimarc_data_7xx($groupe, $id, $type, $indice='') {
    359380        $nom = $prenom = '';
     381        $type = '_' . $type;
    360382        foreach ($groupe as $element) {
    361383                switch($element->c) {
     
    374396                return array(
    375397                        array(
    376                                 'cle' => "id_auteur$indice",
     398                                'cle' => "id_auteur$type$indice",
    377399                                'valeur' => $id,
    378400                        ),
    379401                        array(
    380                                 'cle' => "liensauteurs$indice",
     402                                'cle' => "liensauteurs$type$indice",
    381403                                'valeur' => "<a href=\"" . generer_url_public('pmb_auteur', "id_auteur=$id") . "\">" . $nom . "</a>",
    382404                                '@post_traitements' => array('inter' => ', '),
    383405                        ),
    384406                        array(
    385                                 'cle' => "lesauteurs$indice",
     407                                'cle' => "lesauteurs$type$indice",
    386408                                'valeur' => $nom,
    387409                                '@post_traitements' => array('inter' => ', '),
  • _plugins_/spip-pmb/trunk/inclure/inc-pmb_editeur.html

    r57120 r57129  
    55                        <tbody>
    66                                [<tr><td><strong><:pmb:publisher_address1:></strong></td><td>(#ADRESSE1)</td></tr>]
    7                                 [<tr><td><strong><:pmb:publisher_address2:></strong></td><td>(#ADRESSE2})</td></tr>]
     7                                [<tr><td><strong><:pmb:publisher_address2:></strong></td><td>(#ADRESSE2)</td></tr>]
    88                                [<tr><td><strong><:pmb:publisher_zipcode:></strong></td><td>(#CODE_POSTAL)</td></tr>]
    99                                [<tr><td><strong><:pmb:publisher_city:></strong></td><td>(#VILLE)</td></tr>]
  • _plugins_/spip-pmb/trunk/inclure/inc-pmb_notice.html

    r57122 r57129  
    2727                                [<tr><td><strong><:pmb:edition:></strong></td><td>(#EDITION)</td></tr>]
    2828                                [<tr><td><strong><:pmb:collection:></strong></td><td>[<a href="(#URL_PMB_COLLECTION)">](#COLLECTION)[(#URL_PMB_COLLECTION|oui)</a>]</td></tr>]
    29                                 [<tr><td><strong><:pmb:unite_materielle:></strong></td><td>(#UNITE_MATERIELLE)</td></tr>]
    30                                 [<tr><td><strong><:pmb:collectivite:></strong></td><td>(#COLLECTIVITE)</td></tr>]
    31                                 [<tr><td><strong><:pmb:collectivite_autre:></strong></td><td>(#COLLECTIVITE_AUTRE)</td></tr>]
     29                                [<tr><td><strong><:pmb:unite_materielle:></strong></td><td>[(#ID_UNITE_MATERIELLE|oui)<a href="#URL_PMB_NOTICE{#ID_UNITE_MATERIELLE}">](#UNITE_MATERIELLE|oui)[(#UNITE_MATERIELLE)</a>]</td></tr>]
    3230                                [<tr><td><strong><:pmb:format:></strong></td><td>(#FORMAT)</td></tr>]
    3331                                [<tr><td><strong><:pmb:annee_publication:></strong></td><td>(#ANNEE_PUBLICATION)</td></tr>]
  • _plugins_/spip-pmb/trunk/lang/pmb_fr.php

    r57122 r57129  
    6161'editeur' => 'Éditeur',
    6262'editeurs' => 'Éditeurs',
    63 'edition' => 'Édition',
     63'edition' => 'Mention d\'édition',
    6464'en_savoir_plus' => 'en&nbsp;savoir&nbsp;+',
    6565'exemplaires' => 'Exemplaires',
     
    151151
    152152// U
    153 'unite_materielle' => 'Unité matérielle',
     153'unite_materielle' => 'Unité matérielle', // fait partie de...
    154154'url' => 'Adresse',
    155155'vous_etes_identifies' => 'Vous &ecirc;tes identifi&eacute;',
  • _plugins_/spip-pmb/trunk/modeles/notice_resume.html

    r57125 r57129  
    1515        </span>]
    1616
    17         [<br /><em>(#GENRE|ucfirst)</em>]
    1817        [<div class="introduction entry-content[ (#ENV{surlignable}|oui)surlignable]">
    1918                (#RESUME|couper{#ENV{longueur_resume,120}})
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r57118 r57129  
    943943        if (isset($value->f) && is_array($value->f)) {
    944944                foreach($value->f as $informations) {
     945                        #echo "\n<pre>"; print_r($informations); echo "</pre>";
    945946                        if ($res = pmb_parse_unimarc($informations)) {
    946947                                foreach ($res as $r) {
     
    987988        }
    988989       
    989         // tous les auteurs, pour se simplifier un peu...
    990         $tous = array();
    991         foreach (array('lesauteurs', 'lesauteurs2', 'lesauteurs3') as $a) {
    992                 if (isset($tresultat[$a]) and $tresultat[$a]) {
    993                         $tous[] = $tresultat[$a];
    994                 }
    995         }
    996         $tresultat['touslesauteurs'] = implode(', ', $tous);
    997        
    998         // tous les liens d'auteurs, pour se simplifier un peu...
    999         $tous = array();
    1000         foreach (array('liensauteurs', 'liensauteurs2', 'liensauteurs3') as $a) {
    1001                 if (isset($tresultat[$a]) and $tresultat[$a]) {
    1002                         $tous[] = $tresultat[$a];
    1003                 }
    1004         }
    1005         $tresultat['tousliensauteurs'] = implode(', ', $tous);
     990        // tous les auteurs et tous les liens d'auteurs
     991        // pour se simplifier un peu...
     992        foreach (array('lesauteurs', 'liensauteurs') as $quoi) {
     993                $tous = array();
     994                foreach (
     995                        array(
     996                                $quoi.'_personne'    , $quoi.'_personne2'    , $quoi.'_personne3',
     997                                $quoi.'_collectivite', $quoi.'_collectivite2', $quoi.'_collectivite3',
     998                ) as $a) {
     999                        if (isset($tresultat[$a]) and $tresultat[$a]) {
     1000                                $tous[] = $tresultat[$a];
     1001                        }
     1002                }
     1003                $tresultat['tous'.$quoi] = implode(', ', $tous);
     1004        }
     1005
    10061006
    10071007        // si pas de logo, mais isbn, on tente une demande a amazon
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r57116 r57129  
    300300                // prendra 50 nouveautes par defaut...
    301301                // sauf si {nouveautes 3}
     302                // /!\ ça ne recupere que 3, pas #ENV{nb,3}, peut etre parce
     303                // que c'est le premier argument d'un critere (limitation connue de SPIP).
     304                // on peut utiliser : {nouveautes 3}{0,#ENV{nb,3}} pour limiter entre 1 et 3 donc.
    302305                $nombre = pmb_interprete_argument_critere($criteres, 'nouveautes', 1);
    303306                $idsn = pmb_ids_notices_nouveautes('', $nombre);
Note: See TracChangeset for help on using the changeset viewer.