Changeset 57071 in spip-zone


Ignore:
Timestamp:
Jan 14, 2012, 12:35:16 AM (8 years ago)
Author:
marcimat@…
Message:
  • boucle (PMB:DOCUMENTS){id_notice} et critere dessus {image=oui} ou {image=non}
  • deplacement de fonctions
Location:
_plugins_/spip-pmb/trunk
Files:
8 edited

Legend:

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

    r56891 r57071  
    136136
    137137
     138/**
     139 * Passe les \n en <br />
     140**/
    138141function pmb_nettoyer_caracteres_texte($valeur) {
    139142        $valeur = str_replace(
    140143                array( "\n"),
    141144                array("<br />"), $valeur);
    142         return $valeur;
    143 }
    144 
    145 
    146 function pmb_nettoyer_caracteres($valeur) {
    147         $valeur = stripslashes($valeur);
    148         $valeur = str_replace(
    149                 array("’", "œ", "“", "”",  "€"),
    150                 array("'", "&oelig;", "\"", "\"", "&euro;"), $valeur);
    151145        return $valeur;
    152146}
  • _plugins_/spip-pmb/trunk/inclure/inc-docnum.html

    r56144 r57071  
    1 [(#SET{tab_docnum, [(#ENV{id}|pmb_ws_documents_numeriques)]})]
    2 
    31[(#REM) Portfolio : album d'images ]
    4 <B_tab_docnumimages>
     2<B_portfolio>
    53<div class="documents documents_portfolio">
    64        <h2 class="h2"><:info_portfolio:></h2>
    7         <BOUCLE_tab_docnumimages(POUR){tableau #GET{tab_docnum}}>
    8                 [(#GET{tab_docnum/#CLE/mimetype}|contient{image}|oui)[
    9                 <a href="(#GET{tab_docnum/#CLE/downloadUrl})" type="[(#GET{tab_docnum/#CLE/mimetype})]"[ title="(#GET{tab_docnum/#CLE/name}|attribut_html|couper{80})"]>
    10                         [(#GET{tab_docnum/#CLE/downloadUrl,#GET{tab_docnum/#CLE/url}}
    11                                 |image_reduire{0,100}
    12                                 |inserer_attribut{class,spip_logos}
    13                                 |inserer_attribut{alt,[(#GET{tab_docnum/#CLE/name}|attribut_html|couper{80})]})]
    14                 </a>]]
    15         </BOUCLE_tab_docnumimages>
     5<BOUCLE_portfolio(PMB:DOCUMENTS){id_notice}{image=oui}>
     6        [<a href="(#URL_TELECHARGEMENT)" type="#MIMETYPE"[ title="(#NAME|attribut_html|couper{80})"]>
     7                [(#URL_TELECHARGEMENT|sinon{#URL}
     8                        |image_reduire{0,100}
     9                        |inserer_attribut{class,spip_logos}
     10                        |inserer_attribut{alt,[(#NAME|attribut_html|couper{80})]})]
     11        </a>]
     12</BOUCLE_portfolio>
    1613</div>
    17 </B_tab_docnumimages>
     14</B_portfolio>
     15
    1816
    1917[(#REM) Liste des autres documents joints ]
    20 <B_tab_docnumjoints>
     18<B_docs>
    2119<div class="liste documents documents_joints">
    2220        <h2 class="h2"><:titre_documents_joints:></h2>
    23         <ul class="liste-items">
    24         <BOUCLE_tab_docnumjoints(POUR){tableau #GET{tab_docnum}}>
    25                 [(#GET{tab_docnum/#CLE/mimetype}|contient{image}|non)[
    26                 <li class="item">
     21        <ul class="liste-items items">
     22        <BOUCLE_docs(PMB:DOCUMENTS){id_notice}{image=non}>
     23                [<li class="item">
    2724                        <strong>
    28                                 <a href="(#GET{tab_docnum/#CLE/downloadUrl})" title="<:bouton_telecharger:>" type="[(#GET{tab_docnum/#CLE/mimetype})]">
    29                                         [(#GET{tab_docnum/#CLE/name,<:info_document:>})]
     25                                <a href="(#URL_TELECHARGEMENT)" title="<:bouton_telecharger:>" type="#MIMETYPE">
     26                                        [(#NOM|sinon{<:info_document:>})]
    3027                                </a>
    3128                        </strong>
    32                 </li>]]
    33         </BOUCLE_tab_docnumjoints>
     29                </li>]
     30        </BOUCLE_docs>
    3431        </ul>
    3532</div>
    36 </B_tab_docnumjoints>
     33</B_docs>
     34
  • _plugins_/spip-pmb/trunk/inclure/inc-image-doc-joint.html

    r56653 r57071  
    1 <BOUCLE_tab_docnumimages(POUR){tableau #ENV{tab_docnum}}{0,1}>
    2 [(#ENV{tab_docnum/#CLE/mimetype}|contient{image}|oui)
    3         [(#ENV{copieimage,non}|=={non}|non)
    4                 [(#ENV{tab_docnum/#CLE/downloadUrl,#ENV{tab_docnum/#CLE/url}}
    5                         |copie_locale{force}
    6                         |image_reduire{#ENV{largeur,0},#ENV{hauteur,100}}
    7                         |inserer_attribut{class,spip_logos})]
    8         ]
    9         [(#ENV{copieimage,non}|=={non}|oui)
    10                 [(#ENV{tab_docnum/#CLE/downloadUrl,#ENV{tab_docnum/#CLE/url}}
    11                         |image_reduire{#ENV{largeur,0},#ENV{hauteur,100}}
    12                         |inserer_attribut{class,spip_logos})]
    13         ]
    14 ]</BOUCLE_tab_docnumimages>
     1<BOUCLE_notice_image(PMB:DOCUMENTS){id_notice}{image=oui}{0,1}>
     2
     3[(#ENV{copieimage,non}|=={non}|non)
     4        [(#URL_TELECHARGEMENT|sinon{#URL}
     5                |copie_locale{force}
     6                |image_reduire{#ENV{largeur,0},#ENV{hauteur,100}}
     7                |inserer_attribut{class,spip_logos})]
     8]
     9[(#ENV{copieimage,non}|=={non}|oui)
     10        [(#URL_TELECHARGEMENT|sinon{#URL}
     11                |image_reduire{#ENV{largeur,0},#ENV{hauteur,100}}
     12                |inserer_attribut{class,spip_logos})]
     13]
     14</BOUCLE_notice_image>
  • _plugins_/spip-pmb/trunk/inclure/inc-pmb_notice.html

    r57066 r57071  
    5252
    5353[(#ENV{afficher_docnum}|=={non}|non)
    54         [(#INCLURE{fond=inclure/inc-docnum,env,id,ajax,ajaxload})]
     54        [(#INCLURE{fond=inclure/inc-docnum,env,id_notice,ajax,ajaxload})]
    5555]
    5656
  • _plugins_/spip-pmb/trunk/inclure/pmb-inc-logo.html

    r57066 r57071  
    1515[(#VALEUR{logo_src}|non)
    1616        [(#REM) pas de logo, on regarde si une image est en document joint ]
    17         [(#SET{tab_docnum,[(#ID|pmb_ws_documents_numeriques)]})]
    18         [(#INCLURE{fond=inclure/inc-image-doc-joint,tab_docnum=#GET{tab_docnum},env})]
     17        [(#INCLURE{fond=inclure/inc-image-doc-joint,id_notice,copieimage,largeur,hauteur})]
    1918]
    2019</BOUCLE_logo_notice>
  • _plugins_/spip-pmb/trunk/paquet.xml

    r57066 r57071  
    22        prefix="pmb"
    33        categorie="divers"
    4         version="1.116.0"
     4        version="1.117.0"
    55        etat="dev"
    66        compatibilite="[3.0.0-beta2;3.0.*]"
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r57066 r57071  
    311311
    312312
    313 /**
    314  * A priori du code mort...
    315  * Mais on le mutualise dans une fonction
    316  *
    317 **/
    318 function pmb_remettre_id_dans_resultats(&$tabreau_resultat, $liste_notices) {
    319         if (is_array($liste_notices)) {
    320                 foreach($liste_notices as $cle => $notice) {
    321                         $tableau_resultat['notice_ids'][$cle]['id'] = $notice;
    322                 }
    323         }
    324 }
    325 
    326 
    327313
    328314/**
     
    475461        return $a;
    476462}
     463
     464
     465
     466
     467
     468/**
     469 * Retourne la liste des notices
     470 * ayant etes empruntees par les autres lecteurs
     471 * ayant empruntes la ou les notices en parametres
     472 *
     473 * @param array identifiant(s) de notice
     474 * @return array identifiant(s) de notices en relation
     475**/
     476function pmb_ids_notices_autres_lecteurs($ids_notice) {
     477        if (!is_array($ids_notice)) {
     478                $ids_notice = array($ids_notice);
     479        }
     480
     481        $listenotices = Array();
     482
     483        try {
     484                $ws = pmb_webservice();
     485                if ($ws->pmbesOPACGeneric_is_also_borrowed_enabled()) {
     486                        foreach ($ids_notice as $id_notice) {
     487                                $r = $ws->pmbesOPACGeneric_also_borrowed($id_notice, 0);
     488                                if (is_array($r)) {
     489                                        foreach ($r as $notice) {
     490                                                $listenotices[] = $notice['notice_id'];
     491                                        }
     492                                }
     493                        }
     494                        $listenotices = array_unique($listenotices);
     495                }
     496        }catch (Exception $e) {
     497                echo 'Exception reçue (10) : ',  $e->getMessage(), "\n";
     498        }
     499       
     500        return $listenotices;
     501}
     502
     503
     504
     505/**
     506 * Retourne la liste des documents d'une notice
     507 *
     508 * @param string $ids_notice
     509 *              Liste des identifiants de notices dont les documents sont a recuperer
     510 *
     511 * @return array
     512 *              Liste des documents
     513**/
     514function pmb_extraire_documents_ids($ids_notice) {
     515
     516        // retrouver les infos en cache
     517        list($res, $wanted) = pmb_cacher('documents', $ids_notice);
     518
     519        // si on a tout trouve, on s'en va...
     520        if (!count($wanted)) {
     521                return pmb_get_enfants($res, 'documents');
     522        }
     523       
     524        try {
     525                $ws = pmb_webservice();
     526                foreach ($ids_notice as $id_notice) {
     527                        // 2e. parametre $id_session non ulitise
     528                        $r=$ws->pmbesNotices_listNoticeExplNums($id_notice);
     529                        $documents = array();
     530                        if (is_array($r)) {
     531                                foreach ($r as $document) {
     532                                        $d = array();
     533                                        $d['nom']         = pmb_nettoyer_caracteres($document->name);
     534                                        $d['id_document'] = pmb_nettoyer_caracteres($document->id);
     535                                        $d['id_notice']   = $id_notice;
     536                                        $d['mimetype']    = pmb_nettoyer_caracteres($document->mimetype);
     537                                        $d['image']       = (strpos($d['mimetype'],'image')!==false)?'oui':'non';
     538                                        $d['url']         = pmb_nettoyer_caracteres($document->url);
     539                                        $d['url_telechargement'] = pmb_nettoyer_caracteres($document->downloadUrl);
     540                                        $documents[] = $d;
     541                                }
     542                        }
     543                        // remettre dans les demandes et sauver en cache
     544                        $key = array_search($id_notice, $ids_notice);
     545                        $res[$key] = array('documents'=>$documents);
     546                        pmb_cacher('documents', $id_notice, $res[$key], true);
     547                }
     548
     549        } catch (Exception $e) {
     550                 echo 'Exception reçue (11) : ',  $e->getMessage(), "\n";
     551        }
     552
     553        // si on a tout trouve, on s'en va...
     554        return pmb_get_enfants($res, 'documents');
     555       
     556}
     557
     558
     559/**
     560 * Retourne la liste des exemplaires (item)
     561 * d'une notice (identifiant d'un ouvrage/document)
     562 *
     563 * @param string $ids_notice
     564 *              Liste des identifiants de notices dont les exemplaires sont a recuperer
     565 *
     566 * @return array
     567 *              Liste des exemplaires
     568**/
     569function pmb_extraire_exemplaires_ids($ids_notice) {
     570        # meme fonctionnement que pmb_extraire_documents_ids()
     571        if (!$ids_notice) {
     572                return array();
     573        }
     574        $res = Array();
     575
     576        try {
     577                $ws = pmb_webservice();
     578                foreach ($ids_notice as $id_notice) {
     579                        // second parametre $id_session non utilise
     580                        $exemplaires = $ws->pmbesItems_fetch_notice_items($id_notice);
     581                        if (is_array($exemplaires)) {
     582                                foreach ($exemplaires as $exemplaire) {
     583                                        $e = Array();
     584                                        $e['id']               = $exemplaire->id;
     585                                        $e['id_notice']        = $id_notice;
     586                                        $e['code_barre']       = $exemplaire->cb;
     587                                        $e['cote']             = $exemplaire->cote;
     588                                        $e['id_location']      = $exemplaire->location_id;
     589                                        $e['titre_location']   = $exemplaire->location_caption;
     590                                        $e['id_section']       = $exemplaire->section_id;
     591                                        $e['titre_section']    = $exemplaire->section_caption;
     592                                        $e['statut']           = $exemplaire->statut;
     593                                        $e['support']          = $exemplaire->support;
     594                                        $e['situation']        = $exemplaire->situation;
     595                                        $res[] = $e;
     596                                }
     597                        }
     598                }
     599        } catch (Exception $e) {
     600                 echo 'Exception reçue (12) : ',  $e->getMessage(), "\n";
     601        }
     602       
     603        return $res;
     604}
     605
     606
     607/**
     608 * Retourne la liste des prets
     609 * d'un auteur pmb authentifie
     610 *
     611 * @param string $ids_pmb_session
     612 *              Sessions pmb de/des auteurs
     613 *
     614 * @param int $type_pret
     615 *              Type de reponse :
     616 *              1 : les prets en cours
     617 *              0 : les prets en retard
     618 *
     619 * @return array
     620 *              Liste des prets
     621**/
     622function pmb_extraire_prets_ids($ids_pmb_session, $type_pret=0) {
     623        $ids_pmb_session = array_filter($ids_pmb_session);
     624        if (!$ids_pmb_session) {
     625                return array();
     626        }
     627        $prets = array();
     628        $notices = Array();
     629        $ws = pmb_webservice();
     630       
     631        foreach ($ids_pmb_session as $id_pmb_session) {
     632                $prets = $ws->pmbesOPACEmpr_list_loans($id_pmb_session, $type_pret);
     633                if (is_array($prets)) {
     634                        foreach ($prets as $pret) {
     635                                $p = array();
     636                                $p['id_emprunteur']             = $pret->empr_id;
     637                                $p['id_notice']                 = $pret->notice_id;
     638                                $p['id_bulletin']               = $pret->bulletin_id;
     639                                $p['exemplaire_id']             = $pret->expl_id;
     640                                $p['exemplaire_code_barre']     = $pret->expl_cb;
     641                                $p['exemplaire_support']        = $pret->expl_support;
     642                                $p['exemplaire_id_location']    = $pret->expl_location_id;
     643                                $p['exemplaire_titre_location'] = $pret->expl_location_caption;
     644                                $p['exemplaire_id_section']     = $pret->expl_section_id;
     645                                $p['exemplaire_titre_section']  = $pret->expl_section_caption;
     646                                $p['exemplaire_libelle']        = $pret->expl_libelle;
     647                                $p['date_debut']                = $pret->loan_startdate;
     648                                $p['date_retour']               = $pret->loan_returndate;
     649                                $notices[] = $pret->notice_id;
     650                                $prets[] = $p;
     651                        }
     652                }
     653        }
     654        if ($prets) {
     655                // on integre les informations des notices
     656                $notices = pmb_extraire_notices_ids($notices);
     657                // (pas tres optimise... mais y en a pas beaucoup)
     658                foreach ($prets as $p) {
     659                        foreach ($notices as $n) {
     660                                if ($p['id_notice'] == $n['id_notice']) {
     661                                        $p['notice'] = $n;
     662                                        break;
     663                                }
     664                        }
     665                }
     666        }
     667        return $prets;
     668}
     669
     670/**
     671 * Retourne les reservations demandes...
     672 *
     673 * @param array $ids_pmb_session
     674 *              Les demandes, des 'pmb_session' (table spip_auteurs_pmb)
     675 *
     676 * @return array
     677 *              Tableau contenant les reservations
     678 *              Et dans 'notice' de chaque reservation
     679 *              les informations de la notice correspondante.
     680**/
     681function pmb_extraire_reservations_ids($ids_pmb_session) {
     682        $ids_pmb_session = array_filter($ids_pmb_session);
     683        if (!$ids_pmb_session) {
     684                return array();
     685        }
     686       
     687        $resas = array();
     688        $notices = Array();
     689        $ws = pmb_webservice();
     690       
     691        foreach ($ids_pmb_session as $id_pmb_session) {
     692                $reservations = $ws->pmbesOPACEmpr_list_resas($id_pmb_session);
     693                if (is_array($reservations)) {
     694                        foreach ($reservations as $reservation) {
     695                                $r = array();
     696                                $r['id_reservation']      = $reservation->resa_id;
     697                                $r['id_emprunteur']       = $reservation->empr_id;
     698                                $r['id_notice']           = $reservation->notice_id;
     699                                $r['id_bulletin']         = $reservation->bulletin_id;
     700                                $r['rank']                = $reservation->resa_rank;
     701                                $r['date_fin']            = $reservation->resa_dateend;
     702                                $r['retrait_id_location'] = $reservation->resa_retrait_location_id ;
     703                                $r['retrait_location']    = $reservation->resa_retrait_location;
     704                                $notices[] = $reservation->notice_id;
     705                                $resas[] = $r;
     706                        }
     707                }
     708        }
     709        if ($resas) {
     710                // on integre les informations des notices
     711                $notices = pmb_extraire_notices_ids($notices);
     712                // (pas tres optimise... mais y en a pas beaucoup)
     713                foreach ($resas as $r) {
     714                        foreach ($notices as $n) {
     715                                if ($r['id_notice'] == $n['id_notice']) {
     716                                        $r['notice'] = $n;
     717                                        break;
     718                                }
     719                        }
     720                }
     721        }
     722        return $resas;
     723}
     724
     725
    477726
    478727
     
    7751024
    7761025
    777 /**
    778  * Retourne la liste des notices
    779  * ayant etes empruntees par les autres lecteurs
    780  * ayant empruntes la ou les notices en parametres
    781  *
    782  * @param array identifiant(s) de notice
    783  * @return array identifiant(s) de notices en relation
    784 **/
    785 function pmb_ws_ids_notices_autres_lecteurs($ids_notice) {
    786         if (!is_array($ids_notice)) {
    787                 $ids_notice = array($ids_notice);
    788         }
    789 
    790         $listenotices = Array();
    791 
    792         try {
    793                 $ws = pmb_webservice();
    794                 if ($ws->pmbesOPACGeneric_is_also_borrowed_enabled()) {
    795                         foreach ($ids_notice as $id_notice) {
    796                                 $r = $ws->pmbesOPACGeneric_also_borrowed($id_notice, 0);
    797                                 if (is_array($r)) {
    798                                         foreach ($r as $notice) {
    799                                                 $listenotices[] = $notice['notice_id'];
    800                                         }
    801                                 }
    802                         }
    803                         $listenotices = array_unique($listenotices);
    804                 }
    805         }catch (Exception $e) {
    806                 echo 'Exception reçue (10) : ',  $e->getMessage(), "\n";
    807         }
    808        
    809         return $listenotices;
    810 }
    811 
    812 
    813 
    814 
    815 function pmb_ws_documents_numeriques ($id_notice, $id_session=0) {
    816 
    817         $tresultat = Array();
    818 
    819         try {
    820                 $ws = pmb_webservice();
    821                 $r=$ws->pmbesNotices_listNoticeExplNums($id_notice, $id_session);
    822                 $cpt = 0;
    823                 if (is_array($r)) {
    824                         foreach ($r as $docnum) {
    825                                 $tresultat[$cpt] = Array();
    826                                 $tresultat[$cpt]['name'] = str_replace("”","\"",str_replace("“","\"",str_replace("œ","&oelig;", stripslashes(str_replace("\n","<br />", str_replace("’","'",$docnum->name))))));
    827                                 $tresultat[$cpt]['mimetype'] = $docnum->mimetype;
    828                                 $tresultat[$cpt]['url'] = $docnum->url;
    829                                 $tresultat[$cpt]['downloadUrl'] = $docnum->downloadUrl;
    830 
    831                                 $cpt++;
    832                         }
    833                 }
    834 
    835         } catch (Exception $e) {
    836                  echo 'Exception reçue (11) : ',  $e->getMessage(), "\n";
    837         }
    838         return $tresultat;
    839 
    840 }
    841 
    842 
    843 /**
    844  * Retourne la liste des exemplaires (item)
    845  * d'une notice (identifiant d'un ouvrage/document)
    846  *
    847  * @param string $ids_notice
    848  *              Liste des identifiants de notices dont les exemplaires sont a recuperer
    849  *
    850  * @return array
    851  *              Liste des exemplaires
    852 **/
    853 function pmb_extraire_exemplaires_ids($ids_notice) {
    854         if (!$ids_notice) {
    855                 return array();
    856         }
    857         $res = Array();
    858 
    859         try {
    860                 $ws = pmb_webservice();
    861                 foreach ($ids_notice as $id_notice) {
    862                         // second parametre $id_session non utilise
    863                         $exemplaires = $ws->pmbesItems_fetch_notice_items($id_notice);
    864                         if (is_array($exemplaires)) {
    865                                 foreach ($exemplaires as $exemplaire) {
    866                                         $e = Array();
    867                                         $e['id']               = $exemplaire->id;
    868                                         $e['id_notice']        = $id_notice;
    869                                         $e['code_barre']       = $exemplaire->cb;
    870                                         $e['cote']             = $exemplaire->cote;
    871                                         $e['id_location']      = $exemplaire->location_id;
    872                                         $e['titre_location']   = $exemplaire->location_caption;
    873                                         $e['id_section']       = $exemplaire->section_id;
    874                                         $e['titre_section']    = $exemplaire->section_caption;
    875                                         $e['statut']           = $exemplaire->statut;
    876                                         $e['support']          = $exemplaire->support;
    877                                         $e['situation']        = $exemplaire->situation;
    878                                         $res[] = $e;
    879                                 }
    880                         }
    881                 }
    882         } catch (Exception $e) {
    883                  echo 'Exception reçue (12) : ',  $e->getMessage(), "\n";
    884         }
    885        
    886         return $res;
    887 }
    888 
    889 
    8901026
    8911027/**
     
    10161152
    10171153/**
    1018  * Retourne la liste des prets
    1019  * d'un auteur pmb authentifie
    1020  *
    1021  * @param string $ids_pmb_session
    1022  *              Sessions pmb de/des auteurs
    1023  *
    1024  * @param int $type_pret
    1025  *              Type de reponse :
    1026  *              1 : les prets en cours
    1027  *              0 : les prets en retard
    1028  *
    1029  * @return array
    1030  *              Liste des prets
    1031 **/
    1032 function pmb_extraire_prets_ids($ids_pmb_session, $type_pret=0) {
    1033         $ids_pmb_session = array_filter($ids_pmb_session);
    1034         if (!$ids_pmb_session) {
    1035                 return array();
    1036         }
    1037         $prets = array();
    1038         $notices = Array();
    1039         $ws = pmb_webservice();
    1040        
    1041         foreach ($ids_pmb_session as $id_pmb_session) {
    1042                 $prets = $ws->pmbesOPACEmpr_list_loans($id_pmb_session, $type_pret);
    1043                 if (is_array($prets)) {
    1044                         foreach ($prets as $pret) {
    1045                                 $p = array();
    1046                                 $p['id_emprunteur']             = $pret->empr_id;
    1047                                 $p['id_notice']                 = $pret->notice_id;
    1048                                 $p['id_bulletin']               = $pret->bulletin_id;
    1049                                 $p['exemplaire_id']             = $pret->expl_id;
    1050                                 $p['exemplaire_code_barre']     = $pret->expl_cb;
    1051                                 $p['exemplaire_support']        = $pret->expl_support;
    1052                                 $p['exemplaire_id_location']    = $pret->expl_location_id;
    1053                                 $p['exemplaire_titre_location'] = $pret->expl_location_caption;
    1054                                 $p['exemplaire_id_section']     = $pret->expl_section_id;
    1055                                 $p['exemplaire_titre_section']  = $pret->expl_section_caption;
    1056                                 $p['exemplaire_libelle']        = $pret->expl_libelle;
    1057                                 $p['date_debut']                = $pret->loan_startdate;
    1058                                 $p['date_retour']               = $pret->loan_returndate;
    1059                                 $notices[] = $pret->notice_id;
    1060                                 $prets[] = $p;
    1061                         }
    1062                 }
    1063         }
    1064         if ($prets) {
    1065                 // on integre les informations des notices
    1066                 $notices = pmb_extraire_notices_ids($notices);
    1067                 // (pas tres optimise... mais y en a pas beaucoup)
    1068                 foreach ($prets as $p) {
    1069                         foreach ($notices as $n) {
    1070                                 if ($p['id_notice'] == $n['id_notice']) {
    1071                                         $p['notice'] = $n;
    1072                                         break;
    1073                                 }
    1074                         }
    1075                 }
    1076         }
    1077         return $prets;
    1078 }
    1079 
    1080 /**
    1081  * Retourne les reservations demandes...
    1082  *
    1083  * @param array $ids_pmb_session
    1084  *              Les demandes, des 'pmb_session' (table spip_auteurs_pmb)
    1085  *
    1086  * @return array
    1087  *              Tableau contenant les reservations
    1088  *              Et dans 'notice' de chaque reservation
    1089  *              les informations de la notice correspondante.
    1090 **/
    1091 function pmb_extraire_reservations_ids($ids_pmb_session) {
    1092         $ids_pmb_session = array_filter($ids_pmb_session);
    1093         if (!$ids_pmb_session) {
    1094                 return array();
    1095         }
    1096        
    1097         $resas = array();
    1098         $notices = Array();
    1099         $ws = pmb_webservice();
    1100        
    1101         foreach ($ids_pmb_session as $id_pmb_session) {
    1102                 $reservations = $ws->pmbesOPACEmpr_list_resas($id_pmb_session);
    1103                 if (is_array($reservations)) {
    1104                         foreach ($reservations as $reservation) {
    1105                                 $r = array();
    1106                                 $r['id_reservation']      = $reservation->resa_id;
    1107                                 $r['id_emprunteur']       = $reservation->empr_id;
    1108                                 $r['id_notice']           = $reservation->notice_id;
    1109                                 $r['id_bulletin']         = $reservation->bulletin_id;
    1110                                 $r['rank']                = $reservation->resa_rank;
    1111                                 $r['date_fin']            = $reservation->resa_dateend;
    1112                                 $r['retrait_id_location'] = $reservation->resa_retrait_location_id ;
    1113                                 $r['retrait_location']    = $reservation->resa_retrait_location;
    1114                                 $notices[] = $reservation->notice_id;
    1115                                 $resas[] = $r;
    1116                         }
    1117                 }
    1118         }
    1119         if ($resas) {
    1120                 // on integre les informations des notices
    1121                 $notices = pmb_extraire_notices_ids($notices);
    1122                 // (pas tres optimise... mais y en a pas beaucoup)
    1123                 foreach ($resas as $r) {
    1124                         foreach ($notices as $n) {
    1125                                 if ($r['id_notice'] == $n['id_notice']) {
    1126                                         $r['notice'] = $n;
    1127                                         break;
    1128                                 }
    1129                         }
    1130                 }
    1131         }
    1132         return $resas;
    1133 }
    1134 
    1135 
    1136 
    1137 
    1138 /**
    11391154 *  tester si la session pmb est toujours active
    11401155**/
     
    12081223
    12091224
    1210 function contient($texte, $findme) {
    1211         return (strpos($texte, $findme) !== false);
    1212 }
    1213 
    1214 
     1225/**
     1226 * Nettoyer des caracteres etranges
     1227 * qui proviennent des requetes de PMB...
     1228 *
     1229 * @param string $valeur
     1230 *              Chaine a nettoyer
     1231 * @return string
     1232 *              Chaine nettoyee
     1233**/
     1234function pmb_nettoyer_caracteres($valeur) {
     1235        $valeur = stripslashes($valeur);
     1236        $valeur = str_replace(
     1237                array("’", "œ", "“", "”",  "€"),
     1238                array("'", "&oelig;", "\"", "\"", "&euro;"), $valeur);
     1239        return $valeur;
     1240}
    12151241?>
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r57066 r57071  
    281281
    282282        // depuis un critere id=x ou {id?}
     283        // a supprimer ?
    283284        if ($id = pmb_critere_valeur($criteres, 'id')) {
    284285                $ids = pmb_intersect_ids($ids, $id);
     
    292293        // autres lecteurs : ceux qui ont lu ceci ont aussi emprunte cela
    293294        if (pmb_recherche_critere($criteres, 'autres_lecteurs')) {
    294                 $ids = pmb_ws_ids_notices_autres_lecteurs($ids);
     295                $ids = pmb_ids_notices_autres_lecteurs($ids);
    295296        }
    296297
     
    527528        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'exemplaires', 'id_notice');
    528529}
     530
     531
     532
     533/**
     534 *
     535 * Selectionne les documents d'une ou plusieurs notices
     536 * et retourne un tableau des elements parsees
     537 *
     538 * Liste des documents
     539 * (PMB:DOCUMENTS) {id_notice}
     540 * (PMB:DOCUMENTS) {id_notice}{image=oui} // s'appuie sur le mime type image/
     541 * (PMB:DOCUMENTS) {id_notice}{image=non}
     542 *
     543 */
     544function inc_pmb_documents_select_dist(&$command, $iterateur) {
     545        // comme boucle_PMB_DOCUMENTS() ne fonctionne pas
     546        // on annule certains criteres passes par boucle_DOCUMENTS() de mediatheque
     547        $iterateur->exception_des_criteres('.mode'); // hum le .
     548        $iterateur->exception_des_criteres('.taille'); // hum le .
     549        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'documents', 'id_notice');
     550}
     551
    529552
    530553
     
    815838
    816839
     840/**
     841 * Boucle PMB:DOCUMENTS
     842 * eviter les traitements auto de SPIP
     843 *
     844 * note:mais ça marche pas (pas de prise en compte de la fonction
     845 * le connect est pas teste dans spip actuellement comme pour les criteres)
     846**/
     847#function boucle_PMB_DOCUMENTS($id_boucle, &$boucles) {
     848#       return calculer_boucle($id_boucle, $boucles);
     849#}
    817850
    818851/**
Note: See TracChangeset for help on using the changeset viewer.