Changeset 56804 in spip-zone


Ignore:
Timestamp:
Jan 8, 2012, 10:32:23 PM (9 years ago)
Author:
marcimat@…
Message:
  • On ne charge le webservice que lorsque necessaire
  • On évite de transporter $ws partout.
  • On met des caches sur le parsage.
Location:
_plugins_/spip-pmb/trunk
Files:
8 edited

Legend:

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

    r55941 r56804  
    6060                // connexion webservices pmb
    6161                #include_spip('pmb_fonctions');
    62                 #pmb_ws_charger_client($ws);
     62                #pmb_webservice();
    6363
    6464        // ici, c'est un login PMB "peut être"...
     
    7878
    7979        // le password arrive en sha256(pass+alea) lorsque c'est un auteur SPIP
    80         // mais en clair si c'est un auteur hors SPIP   
     80        // mais en clair si c'est un auteur hors SPIP
    8181
    8282        // Securite
     
    8686        //connexion webservices pmb
    8787        include_spip('pmb_fonctions');
    88         pmb_ws_charger_client($ws);
    8988
    90        
    9189        // Utilisateur connu ?
    9290        try {
    93               //$session_id = $ws->pmbesOPACEmpr_login($login,$pass);
    94               $session_id = $ws->pmbesOPACEmpr_login_md5($login, md5($pass));
    95               if ($session_id) {
    96                       // importer les infos depuis pmb,
    97                       // avec le statut par defaut a l'install
    98                       // refuser d'importer n'importe qui
    99                       if (!$statut = $GLOBALS['pmb_statut_nouvel_auteur']) return array();
    100                      
    101                       if (!$resultpmb = $ws->pmbesOPACEmpr_get_account_info($session_id)) return array(); 
    102                      
    103                      
    104                       // Si l'utilisateur figure deja dans la base, y recuperer les infos
    105                       if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='pmb'")) {
    106                               //mette à jour les infos pmb de l'auteur
    107                               $m = sql_updateq('spip_auteurs_pmb', array(
    108                                       'pmb_session' => $session_id,
    109                                       'pmb_firstname' => importer_charset($resultpmb->personal_information->firstname, 'utf-8'),
    110                                       'pmb_lastname' => importer_charset($resultpmb->personal_information->lastname, 'utf-8'),
    111                                       'pmb_address_part1' => importer_charset($resultpmb->personal_information->address_part1, 'utf-8'),
    112                                       'pmb_address_part2' => importer_charset($resultpmb->personal_information->address_part2, 'utf-8'),
    113                                       'pmb_address_cp' => importer_charset($resultpmb->personal_information->address_cp, 'utf-8'),
    114                                       'pmb_address_city' => importer_charset($resultpmb->personal_information->address_city, 'utf-8'),
    115                                       'pmb_phone_number1' => importer_charset($resultpmb->personal_information->phone_number1, 'utf-8'),
    116                                       'pmb_phone_number2' => importer_charset($resultpmb->personal_information->phone_number2, 'utf-8'),
    117                                       'pmb_email' => importer_charset($resultpmb->personal_information->email, 'utf-8'),
    118                                       'pmb_birthyear' => importer_charset($resultpmb->personal_information->birthyear, 'utf-8'),
    119                                       'pmb_location_id' => importer_charset($resultpmb->location_id, 'utf-8'),
    120                                       'pmb_location_caption' => importer_charset($resultpmb->location_caption, 'utf-8'),
    121                                       'pmb_adhesion_date' => importer_charset($resultpmb->adhesion_date, 'utf-8'),
    122                                       'pmb_expiration_date' => importer_charset($resultpmb->expiration_date, 'utf-8')),
    123                                       "id_auteur=".$result['id_auteur']);
     91                $ws = pmb_webservice();
     92                //$session_id = $ws->pmbesOPACEmpr_login($login,$pass);
     93                $session_id = $ws->pmbesOPACEmpr_login_md5($login, md5($pass));
     94                if ($session_id) {
     95                        // importer les infos depuis pmb,
     96                        // avec le statut par defaut a l'install
     97                        // refuser d'importer n'importe qui
     98                        if (!$statut = $GLOBALS['pmb_statut_nouvel_auteur']) return array();
    12499
    125                             return $result;
    126                       }
    127                      
    128                       // Recuperer les donnees de l'auteur
    129                       // Convertir depuis UTF-8 (jeu de caracteres par defaut)
    130                       include_spip('inc/charsets');
    131                       $nom = importer_charset($resultpmb->personal_information->firstname." ".$result->personal_information->lastname, 'utf-8');
    132                       $email = importer_charset($resultpmb->personal_information->email, 'utf-8');
    133                       //$login = strtolower(importer_charset($resultpmb->cb, 'utf-8'));
    134                       $bio = '';
     100                        if (!$resultpmb = $ws->pmbesOPACEmpr_get_account_info($session_id)) return array(); 
    135101
    136                       $n = sql_insertq('spip_auteurs', array(
    137                                       'source' => 'pmb',
    138                                       'nom' => $nom,
    139                                       'login' => $login,
    140                                       'email' => $email,
    141                                       'bio' => $bio,
    142                                       'statut' => $statut,
    143                                       'pass' => ''));
    144                        spip_log("Creation de l'auteur '$nom' dans spip_auteurs id->".$n);
    145                    
    146                       //renseigner les infos pmb de l'auteur
    147                       $m = sql_insertq('spip_auteurs_pmb', array(
    148                                       'id_auteur' => $n,
    149                                       'pmb_session' => $session_id,
    150                                       'pmb_firstname' => importer_charset($resultpmb->personal_information->firstname, 'utf-8'),
    151                                       'pmb_lastname' => importer_charset($resultpmb->personal_information->lastname, 'utf-8'),
    152                                       'pmb_address_part1' => importer_charset($resultpmb->personal_information->address_part1, 'utf-8'),
    153                                       'pmb_address_part2' => importer_charset($resultpmb->personal_information->address_part2, 'utf-8'),
    154                                       'pmb_address_cp' => importer_charset($resultpmb->personal_information->address_cp, 'utf-8'),
    155                                       'pmb_address_city' => importer_charset($resultpmb->personal_information->address_city, 'utf-8'),
    156                                       'pmb_phone_number1' => importer_charset($resultpmb->personal_information->phone_number1, 'utf-8'),
    157                                       'pmb_phone_number2' => importer_charset($resultpmb->personal_information->phone_number2, 'utf-8'),
    158                                       'pmb_email' => importer_charset($resultpmb->personal_information->email, 'utf-8'),
    159                                       'pmb_birthyear' => importer_charset($resultpmb->personal_information->birthyear, 'utf-8'),
    160                                       'pmb_location_id' => importer_charset($resultpmb->location_id, 'utf-8'),
    161                                       'pmb_location_caption' => importer_charset($resultpmb->location_caption, 'utf-8'),
    162                                       'pmb_adhesion_date' => importer_charset($resultpmb->adhesion_date, 'utf-8'),
    163                                       'pmb_expiration_date' => importer_charset($resultpmb->expiration_date, 'utf-8')));
    164                       spip_log("Creation de l'auteur '$nom' dans spip_auteurs_pmb id->".$m);
     102                        // Si l'utilisateur figure deja dans la base, y recuperer les infos
     103                        if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='pmb'")) {
     104                                //mette à jour les infos pmb de l'auteur
     105                                $m = sql_updateq('spip_auteurs_pmb', array(
     106                                        'pmb_session'    => $session_id,
     107                                        'pmb_firstname'  => importer_charset($resultpmb->personal_information->firstname, 'utf-8'),
     108                                        'pmb_lastname'   => importer_charset($resultpmb->personal_information->lastname, 'utf-8'),
     109                                        'pmb_address_part1' => importer_charset($resultpmb->personal_information->address_part1, 'utf-8'),
     110                                        'pmb_address_part2' => importer_charset($resultpmb->personal_information->address_part2, 'utf-8'),
     111                                        'pmb_address_cp'    => importer_charset($resultpmb->personal_information->address_cp, 'utf-8'),
     112                                        'pmb_address_city'  => importer_charset($resultpmb->personal_information->address_city, 'utf-8'),
     113                                        'pmb_phone_number1' => importer_charset($resultpmb->personal_information->phone_number1, 'utf-8'),
     114                                        'pmb_phone_number2' => importer_charset($resultpmb->personal_information->phone_number2, 'utf-8'),
     115                                        'pmb_email'         => importer_charset($resultpmb->personal_information->email, 'utf-8'),
     116                                        'pmb_birthyear'     => importer_charset($resultpmb->personal_information->birthyear, 'utf-8'),
     117                                        'pmb_location_id'   => importer_charset($resultpmb->location_id, 'utf-8'),
     118                                        'pmb_location_caption' => importer_charset($resultpmb->location_caption, 'utf-8'),
     119                                        'pmb_adhesion_date'    => importer_charset($resultpmb->adhesion_date, 'utf-8'),
     120                                        'pmb_expiration_date'  => importer_charset($resultpmb->expiration_date, 'utf-8')),
     121                                        "id_auteur=".$result['id_auteur']);
    165122
    166                        if ($n)  return sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
     123                                return $result;
     124                        }
    167125
     126                        // Recuperer les donnees de l'auteur
     127                        // Convertir depuis UTF-8 (jeu de caracteres par defaut)
     128                        include_spip('inc/charsets');
     129                        $nom = importer_charset($resultpmb->personal_information->firstname." ".$result->personal_information->lastname, 'utf-8');
     130                        $email = importer_charset($resultpmb->personal_information->email, 'utf-8');
     131                        //$login = strtolower(importer_charset($resultpmb->cb, 'utf-8'));
     132                        $bio = '';
    168133
    169                       spip_log("Creation de l'auteur '$nom' impossible");
    170                       $ws->pmbesOPACEmpr_logout(session_get('pmb_session'));
    171                    
    172                      
    173                       return array();
    174                      
    175               } else {
    176                      //utilisateur inconnu
    177                     return array(); 
    178               }
     134                        $n = sql_insertq('spip_auteurs', array(
     135                                'source' => 'pmb',
     136                                'nom'    => $nom,
     137                                'login'  => $login,
     138                                'email'  => $email,
     139                                'bio'    => $bio,
     140                                'statut' => $statut,
     141                                'pass'   => ''));
     142                        spip_log("Creation de l'auteur '$nom' dans spip_auteurs id->".$n);
     143
     144                        //renseigner les infos pmb de l'auteur
     145                        $m = sql_insertq('spip_auteurs_pmb', array(
     146                                'id_auteur'   => $n,
     147                                'pmb_session' => $session_id,
     148                                'pmb_firstname'     => importer_charset($resultpmb->personal_information->firstname, 'utf-8'),
     149                                'pmb_lastname'      => importer_charset($resultpmb->personal_information->lastname, 'utf-8'),
     150                                'pmb_address_part1' => importer_charset($resultpmb->personal_information->address_part1, 'utf-8'),
     151                                'pmb_address_part2' => importer_charset($resultpmb->personal_information->address_part2, 'utf-8'),
     152                                'pmb_address_cp'    => importer_charset($resultpmb->personal_information->address_cp, 'utf-8'),
     153                                'pmb_address_city'  => importer_charset($resultpmb->personal_information->address_city, 'utf-8'),
     154                                'pmb_phone_number1' => importer_charset($resultpmb->personal_information->phone_number1, 'utf-8'),
     155                                'pmb_phone_number2' => importer_charset($resultpmb->personal_information->phone_number2, 'utf-8'),
     156                                'pmb_email'         => importer_charset($resultpmb->personal_information->email, 'utf-8'),
     157                                'pmb_birthyear'     => importer_charset($resultpmb->personal_information->birthyear, 'utf-8'),
     158                                'pmb_location_id'   => importer_charset($resultpmb->location_id, 'utf-8'),
     159                                'pmb_location_caption' => importer_charset($resultpmb->location_caption, 'utf-8'),
     160                                'pmb_adhesion_date'    => importer_charset($resultpmb->adhesion_date, 'utf-8'),
     161                                'pmb_expiration_date'  => importer_charset($resultpmb->expiration_date, 'utf-8')));
     162                        spip_log("Creation de l'auteur '$nom' dans spip_auteurs_pmb id->".$m);
     163
     164                        if ($n) {
     165                                return sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
     166                        }
     167
     168                        spip_log("Creation de l'auteur '$nom' impossible");
     169                        $ws->pmbesOPACEmpr_logout(session_get('pmb_session'));
     170
     171                        return array();
     172
     173                } else {
     174                        //utilisateur inconnu
     175                        return array(); 
     176                }
    179177        } catch (SoapFault $fault) {
    180178                print("Erreur : ".$fault->faultcode." : ".$fault->faultstring);
  • _plugins_/spip-pmb/trunk/inclure/inc-autreslecteurs.html

    r56799 r56804  
    77                <tbody>
    88                <BOUCLE_autres_lecteurs(PMB:NOTICES){id}{autres_lecteurs}>
    9                   <tr class="[(#COMPTEUR_BOUCLE|modulo{2}|?{row_even,row_odd})]">
    10                       <td><a href="#URL_NOTICE">
    11                                   [(#VALEUR{logo_src}
     9                        <tr class="[(#COMPTEUR_BOUCLE|modulo{2}|?{row_even,row_odd})]">
     10                                <td><a href="#URL_NOTICE">
     11                                [(#VALEUR{logo_src}
    1212                                        |image_reduire{0,80}
    1313                                        |inserer_attribut{class,spip_logos})]</a></td>
    14                       <td><a href="#URL_NOTICE">#TITRE</a></td>
    15                       <td><a href="[(#URL_PAGE{author_see,id=#ID_AUTEUR})]">#VALEUR{lesauteurs}</a></td>
    16                   </tr>
     14                                        <td><a href="#URL_NOTICE">#TITRE</a></td>
     15                                <td><a href="[(#URL_PAGE{author_see,id=#ID_AUTEUR})]">#VALEUR{lesauteurs}</a></td>
     16                        </tr>
    1717                </BOUCLE_autres_lecteurs>
    1818                </tbody>
  • _plugins_/spip-pmb/trunk/inclure/inc-notice-resume.html

    r56799 r56804  
    1 [(#SET{url,[(##URL_NOTICE{#ENV{notice/id}}|parametre_url{url_ret,#ENV{url_ret}})]})]
     1[(#SET{url,[(#URL_NOTICE{#ENV{notice/id}}|parametre_url{url_ret,#ENV{url_ret}})]})]
    22
    33[(#SET{logo,[(#INCLURE{fond=inclure/pmb-inc-logo,notice,largeur,hauteur}|trim)]})]
     
    88        </div>]
    99        <h3 class="h3 entry-title[ (#ENV{surlignable}|oui)surlignable]">
    10                 <a href="#GET{url}"[ title="(#NOM_SITE|texte_backend)"]>[(#ENV{notice/titre})]</a>
     10                <a href="#GET{url}"[ title="(#NOM_SITE|texte_backend)"]>#ENV{notice/titre}</a>
    1111        </h3>
    1212       
  • _plugins_/spip-pmb/trunk/inclure/inc-notice_display.html

    r56653 r56804  
    7070                        <li><a href="[(#CONFIG{spip_pmb/url}|concat{addtags.php}|parametre_url{noticeid,#ENV{id}})]" class="lien-modal"><:pmb:ajouter_tag:></a></li>
    7171                        <li><a href="[(#CONFIG{spip_pmb/url}|concat{avis.php}|parametre_url{todo,liste}|parametre_url{noticeid,#ENV{id}})]" class="lien-modal"><:pmb:donner_avis:></a></li>
    72                         <li><a href="[(#URL_PAGE{notice_display}|parametre_url{id,#ENV{id}}|parametre_url{reserver,1})]#compte-lecteur"><:pmb:reserver_ouvrage:></a></li>
     72                        <li><a href="[(#URL_NOTICE{#ENV{id}}|parametre_url{reserver,1})]#compte-lecteur"><:pmb:reserver_ouvrage:></a></li>
    7373                </ul>
    7474                ]
  • _plugins_/spip-pmb/trunk/modeles/notice.html

    r55941 r56804  
    1 [(#SET{notice, [(#ENV{id}|pmb_notice_extraire)]})] 
    2  <INCLURE{fond=inclure/inc-notice_display}{notice=#GET{notice}}{env}>
     1[(#SET{notice, [(#ENV{id}|pmb_notice_extraire)]})]
     2<INCLURE{fond=inclure/inc-notice_display}{notice=#GET{notice}}{env}>
  • _plugins_/spip-pmb/trunk/paquet.xml

    r56774 r56804  
    22        prefix="pmb"
    33        categorie="divers"
    4         version="1.106.0"
     4        version="1.107.0"
    55        etat="dev"
    66        compatibilite="[3.0.0-beta2;3.0.*]"
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r56779 r56804  
    2727
    2828
    29 $rpc_client = NULL;
    3029include_spip('inc/config');
    3130
     
    6362function pmb_section_extraire($id_section) {
    6463        $tableau_sections = Array();
    65         pmb_ws_charger_client($ws);
    6664        try {
    6765                //récupérer les infos sur la section parent
     66                $ws = pmb_webservice();
    6867                $section_parent = $ws->pmbesOPACGeneric_get_section_information($id_section);
    6968                $tableau_sections[0] = Array();
     
    8483function pmb_location_extraire($id_location) {
    8584        $tableau_locationsections = Array();
    86         pmb_ws_charger_client($ws);
    87         try {
     85        try {
     86                $ws = pmb_webservice();
    8887                $tab_locations = $ws->pmbesOPACGeneric_get_location_information_and_sections($id_location);
    8988                //récupérer les infos sur la localisation parent
     
    117116function pmb_liste_afficher_locations() {
    118117        $tableau_sections = Array();
    119         pmb_ws_charger_client($ws);
    120         try {
     118        try {
     119                $ws = pmb_webservice();
    121120                $tab_locations = $ws->pmbesOPACGeneric_list_locations();
    122121                $cpt = 0;
     
    141140        $search = array();
    142141        $search[] = array("inter"=>"and","field"=>17,"operator"=>"EQ", "value"=>$id_section);
    143        
    144         pmb_ws_charger_client($ws);
    145         try {
     142
     143        try {
     144                $ws = pmb_webservice();
    146145                $r=$ws->pmbesOPACAnonymous_advancedSearch($search);
    147146                $searchId=$r["searchId"];
     
    165164        $tableau_resultat = Array();
    166165       
    167         pmb_ws_charger_client($ws);
    168         try {
     166        try {
     167                $ws = pmb_webservice();
    169168                $result = $ws->pmbesCollections_get_collection_information_and_notices($id_collection,$id_session);
    170169                if ($result) {
     
    176175                        $tableau_resultat['notice_ids']        = Array();
    177176
    178                         pmb_extraire_resultats(&$ws, $result, $tableau_resultat, $debut, $nbresult);
     177                        pmb_extraire_resultats($result, $tableau_resultat, $debut, $nbresult);
    179178                }
    180179       
     
    194193 * @return
    195194**/
    196 function pmb_extraire_resultats(&$ws, $result, &$tableau_resultat, $debut, $nbresult) {
     195function pmb_extraire_resultats($result, &$tableau_resultat, $debut, $nbresult) {
    197196        $liste_notices = Array();
    198197        $cpt=0;
     
    201200                $liste_notices = array_slice($result->notice_ids, $debut, $nbresult);
    202201        }
    203         pmb_ws_recuperer_tab_notices($liste_notices, $ws, $tableau_resultat['notice_ids']);
     202        $tableau_resultat['notice_ids'] = pmb_ws_recuperer_tab_notices($liste_notices);
    204203        array_unshift($tableau_resultat['notice_ids'], array('nb_resultats' => $cpt));
    205204        #pmb_remettre_id_dans_resultats($tableau_resultat, $liste_notices);
     
    222221function pmb_editeur_extraire($id_editeur, $debut=0, $nbresult=5, $id_session=0) {
    223222        $tableau_resultat = Array();
    224        
    225         pmb_ws_charger_client($ws);
    226         try {
     223
     224        try {
     225                $ws = pmb_webservice();
    227226                $result = $ws->pmbesPublishers_get_publisher_information_and_notices($id_editeur,$id_session);
    228227                if ($result) {
     
    238237                        $tableau_resultat['notice_ids'] = Array();
    239238
    240                         pmb_extraire_resultats(&$ws, $result, $tableau_resultat, $debut, $nbresult);
     239                        pmb_extraire_resultats($result, $tableau_resultat, $debut, $nbresult);
    241240                }
    242241        }catch (Exception $e) {
     
    250249        $tableau_resultat = Array();
    251250       
    252         pmb_ws_charger_client($ws);
    253         try {
     251        try {
     252                $ws = pmb_webservice();
    254253                $result = $ws->pmbesAuthors_get_author_information_and_notices($id_auteur,$id_session);
    255254                if ($result) {
     
    275274                        $tableau_resultat['notice_ids'] = Array();
    276275
    277                         pmb_extraire_resultats(&$ws, $result, $tableau_resultat, $debut, $nbresult);
     276                        pmb_extraire_resultats($result, $tableau_resultat, $debut, $nbresult);
    278277                }
    279278        } catch (Exception $e) {
     
    358357                }
    359358        }
    360         pmb_ws_charger_client($ws);
    361         try {   
     359
     360        try {
     361                $ws = pmb_webservice();
    362362                $tableau_resultat[0] = Array();
    363363
     
    395395        $tresultat = Array();
    396396       
    397         pmb_ws_charger_client($ws);
    398         try {
     397        try {
     398                $ws = pmb_webservice();
    399399                $result = $ws->pmbesSearch_getAdvancedSearchFields('opac|search_fields',$langue,true);
    400400                $cpt=0;
     
    437437**/
    438438function pmb_ws_parser_notice($value) {
    439 
     439       
     440        // mise en cache des resultats en fonction de $value
     441        static $resultats = array();
     442        // on utilise le cache s'il est la.
     443        $hash = md5(serialize($value));
     444        if (isset($resultats[$hash])) {
     445                return $resultats[$hash];
     446        }
     447       
     448        $id_notice = $value->id;
     449       
    440450        include_spip("inc/filtres_images");
    441451        $indice_exemplaire = 0;
    442452        $tresultat = Array();
    443         $id_notice = $value->id;
    444453        $authors_700 = array();
    445454        $authors_701 = array();
     
    632641
    633642        $tresultat['id'] = $id_notice;
    634        
     643
     644        // on stocke en cache
     645        $resultats[$hash] = $tresultat;
    635646        return $tresultat;
    636647}
     
    651662
    652663        $listenotices = Array();
    653        
    654         pmb_ws_charger_client($ws);
    655        
    656         try {
     664
     665        try {
     666                $ws = pmb_webservice();
    657667                if ($ws->pmbesOPACGeneric_is_also_borrowed_enabled()) {
    658                        
    659668                        foreach ($ids_notice as $id_notice) {
    660669                                $r = $ws->pmbesOPACGeneric_also_borrowed($id_notice, 0);
     
    680689
    681690        $tresultat = Array();
    682         pmb_ws_charger_client($ws);
    683        
    684         try {
     691
     692        try {
     693                $ws = pmb_webservice();
    685694                $r=$ws->pmbesNotices_listNoticeExplNums($id_notice, $id_session);
    686695                $cpt = 0;
     
    707716 
    708717        $tresultat = Array();
    709         pmb_ws_charger_client($ws);
    710        
    711         try {
     718
     719        try {
     720                $ws = pmb_webservice();
    712721                $r=$ws->pmbesItems_fetch_notice_items($id_notice, $id_session);
    713722                $cpt = 0;
     
    737746
    738747
    739 //récuperer une notice en xml via les webservices
    740 function pmb_ws_recuperer_tab_notices ($listenotices, &$ws, &$tresultat) {
    741         try {
    742                 $r=$ws->pmbesNotices_fetchNoticeListArray($listenotices,"utf-8",true,false);
     748// récuperer une notice en xml via les webservices
     749// les parser, et stocker en cache statique car cette fonction
     750// est utilisee par toutes les boucles (PMB:NOTICES)
     751function pmb_ws_recuperer_tab_notices($listenotices) {
     752
     753        if (!is_array($listenotices)) {
     754                return false;
     755        }
     756       
     757        // on met en cache le resultat et on utilise le cache.
     758        // afin d'optimiser si plusieurs boucles sont utilisees.
     759        static $notices = array();
     760        $wanted = $listenotices;
     761        // ce qu'on a trouve...
     762        $res = array();
     763       
     764        foreach ($listenotices as $c=>$l) {
     765                if (isset($notices[$l])) {
     766                        $res[$c] = $notices[$l];
     767                        unset($wanted[$c]);
     768                }
     769        }
     770
     771        // si on a tout trouve, on s'en va...
     772        if (!count($wanted)) {
     773                return $res;
     774        }
     775
     776        // sinon on complete ce qui manque en interrogeant PMB
     777        try {
     778                $ws = pmb_webservice();
     779                $r=$ws->pmbesNotices_fetchNoticeListArray($wanted,"utf-8",true,false);
    743780                if (is_array($r)) {
    744                         $tresultat = array_map('pmb_ws_parser_notice', $r);
     781                        $r = array_map('pmb_ws_parser_notice', $r);
     782                        // on complete notre tableau de resultat
     783                        // avec nos trouvailles
     784                        foreach ($r as $notice) {
     785                                $key = array_search($notice['id'], $listenotices);
     786                                if ($key !== false) {
     787                                        $notices[ $notice['id'] ] = $res[$key] = $notice;
     788                                }
     789                        }
    745790                }
    746791        } catch (Exception $e) {
    747792                echo 'Exception reçue (14) : ',  $e->getMessage(), "\n";
    748         }
    749 }
    750 
    751 //charger les webservices
    752 function pmb_ws_charger_client(&$ws) {
    753         global $rpc_client;
    754         if ($rpc_client)
    755                 $ws = $rpc_client;
     793        }
     794       
     795        return $res;
     796}
     797
     798
     799/**
     800 * Charge le web service
     801 * qui permet de requeter sur notre PMB
     802 *
     803 * @return object WebService pour PMB
     804**/
     805function pmb_webservice() {
     806        static $ws = null;
     807        if ($ws) {
     808                return $ws;
     809        }
     810
    756811        try {
    757812                $rpc_type = lire_config("spip_pmb/rpc_type","soap");
     
    764819                        $ws = new jsonRPCClient(lire_config("spip_pmb/jsonrpc", ""), false);
    765820                }
    766                 $rpc_client = $ws;
    767821        }
    768822        catch (Exception $e) {
     
    770824        }
    771825
     826        return $ws;
    772827}
    773828
     
    798853      )*/
    799854        $tresultat = Array();
    800         pmb_ws_charger_client($ws);
    801        
    802         try {
     855       
     856        try {
     857                $ws = pmb_webservice();
    803858                $tresultat=$ws->pmbesSearch_get_sort_types();
    804859        } catch (Exception $e) {
     
    810865// retourne un tableau associatif contenant tous les champs d'une notice
    811866function pmb_notice_extraire ($id_notice) {
    812         $tableau_resultat = Array();
    813         pmb_ws_charger_client($ws);
    814         pmb_ws_recuperer_tab_notices(array((string)$id_notice), $ws, $tableau_resultat);
     867        $tableau_resultat = pmb_ws_recuperer_tab_notices(array((string)$id_notice));
    815868        $notice = array_shift($tableau_resultat);
    816869        return $notice;
     
    820873// retourne un tableau associatif contenant tous les champs d'un tableau d'id de notices
    821874function pmb_tabnotices_extraire ($tabnotices) {
    822         $tableau_resultat = Array();
    823875        $listenotices = Array();
    824         pmb_ws_charger_client($ws);
    825876        if (is_array($tabnotices)) {
    826877                $listenotices = array_values($tabnotices);
    827878        }
    828879
    829         pmb_ws_recuperer_tab_notices ($listenotices, $ws, $tableau_resultat);
    830         return $tableau_resultat;
     880        return pmb_ws_recuperer_tab_notices($listenotices);
    831881}
    832882
     
    834884function pmb_prets_extraire ($session_id, $type_pret=0) {
    835885        $tableau_resultat = Array();
    836         pmb_ws_charger_client($ws);
    837886        try{
     887                $ws = pmb_webservice();
    838888                $loans = $ws->pmbesOPACEmpr_list_loans($session_id, $type_pret);
    839889                $liste_notices = Array();
     
    861911                }
    862912                if ($cpt>0) {
    863                         $tableau_resultat['notice_ids'] = Array();
    864                         pmb_ws_recuperer_tab_notices($liste_notices, $ws, $tableau_resultat['notice_ids']); 
     913                        $tableau_resultat['notice_ids'] = pmb_ws_recuperer_tab_notices($liste_notices); 
    865914                }
    866915                #pmb_remettre_id_dans_resultats(&$tabreau_resultat, $liste_notices);
     
    875924function pmb_reservations_extraire($pmb_session) {
    876925        $tableau_resultat = Array();
    877         pmb_ws_charger_client($ws);
     926       
     927        $ws = pmb_webservice();
    878928        $reservations = $ws->pmbesOPACEmpr_list_resas($pmb_session);
    879929        $liste_notices = Array();
     
    897947        }
    898948        if ($cpt>0) {
    899                 $tableau_resultat['notice_ids'] = Array();
    900                 pmb_ws_recuperer_tab_notices($liste_notices, $ws, $tableau_resultat['notice_ids']); 
     949                $tableau_resultat['notice_ids'] = pmb_ws_recuperer_tab_notices($liste_notices); 
    901950        }
    902951        #pmb_remettre_id_dans_resultats(&$tabreau_resultat, $liste_notices)
     
    904953
    905954}
     955
     956/**
     957 *  tester si la session pmb est toujours active
     958**/
    906959function pmb_tester_session($pmb_session, $id_auteur) {
    907        
    908         //tester si la session pmb est toujours active
    909         pmb_ws_charger_client($ws);
    910        
    911         try {
     960        try {
     961                $ws = pmb_webservice();
    912962                if ($ws->pmbesOPACEmpr_get_account_info($pmb_session)) {
    913963                        return 1;
     
    924974
    925975function pmb_reserver_ouvrage($session_id, $notice_id, $bulletin_id, $location) {
    926         pmb_ws_charger_client($ws);
     976
    927977        $result= Array();
    928978
     979        $ws = pmb_webservice();
    929980        $result = $ws->pmbesOPACEmpr_add_resa($session_id, $notice_id, $bulletin_id, $location);
    930981
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r56799 r56804  
    242242
    243243        // autres lecteurs : ceux qui ont lu ceci ont aussi emprunte cela
    244         if (pmb_recherche_critere($criteres, 'autres_lectures')) {
     244        if (pmb_recherche_critere($criteres, 'autres_lecteurs')) {
    245245                $ids = pmb_ws_ids_notices_autres_lecteurs($ids);
    246246        }
Note: See TracChangeset for help on using the changeset viewer.