Changeset 56779 in spip-zone


Ignore:
Timestamp:
Jan 8, 2012, 4:16:08 PM (8 years ago)
Author:
marcimat@…
Message:

un critère {autres_lecteurs} sur la boucle (PMB:NOTICES) pour indiquer «ceux qui ont emprunte cette notice ont aussi emprunte cela» et utilisation dans le squelette prévu pour.

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

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-pmb/trunk/inclure/inc-autreslecteurs.html

    r56147 r56779  
    1 [(#SET{tab_notices,[(#ENV{id}|pmb_ws_autres_lecteurs)]})]       
    2                
    31<B_autres_lecteurs>
    42<div class="pmb-autreslecteurs">
     
    86                <thead><tr class="row_first"><th></th><th><:pmb:titre:></th><th><:pmb:auteur:></th></tr></thead>
    97                <tbody>
    10                 <BOUCLE_autres_lecteurs(POUR){tableau #GET{tab_notices}}>
     8                <BOUCLE_autres_lecteurs(PMB:NOTICES){id}{autres_lecteurs}>
    119                  <tr class="[(#COMPTEUR_BOUCLE|modulo{2}|?{row_even,row_odd})]">
    1210                      <td><a href="[(#URL_PAGE{notice_display,id=#VALEUR{id}})]">
     
    1412                                        |image_reduire{0,80}
    1513                                        |inserer_attribut{class,spip_logos})]</a></td>
    16                       <td><a href="[(#URL_PAGE{notice_display,id=#VALEUR{id}})]">[(#VALEUR{titre})]</a></td>
    17                       <td><a href="[(#URL_PAGE{author_see,id=#VALEUR{id_auteur}})]">[(#VALEUR{lesauteurs})]</a></td>
     14                      <td><a href="[(#URL_PAGE{notice_display,id=#ID})]">#TITRE</a></td>
     15                      <td><a href="[(#URL_PAGE{author_see,id=#ID_AUTEUR})]">#VALEUR{lesauteurs}</a></td>
    1816                  </tr>
    1917                </BOUCLE_autres_lecteurs>
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r56772 r56779  
    636636}
    637637
    638 function pmb_ws_autres_lecteurs($id_notice) {
    639 
    640         $tresultat = Array();
     638
     639/**
     640 * Retourne la liste des notices
     641 * ayant etes empruntees par les autres lecteurs
     642 * ayant empruntes la ou les notices en parametres
     643 *
     644 * @param array identifiant(s) de notice
     645 * @return array identifiant(s) de notices en relation
     646**/
     647function pmb_ws_ids_notices_autres_lecteurs($ids_notice) {
     648        if (!is_array($ids_notice)) {
     649                $ids_notice = array($ids_notice);
     650        }
     651
     652        $listenotices = Array();
     653       
    641654        pmb_ws_charger_client($ws);
    642655       
    643656        try {
    644657                if ($ws->pmbesOPACGeneric_is_also_borrowed_enabled()) {
    645                         $r=$ws->pmbesOPACGeneric_also_borrowed($id_notice,0);
    646                         $listenotices = Array();
    647                         if (is_array($r)) {
    648                                 foreach ($r as $notice) {
    649                                         $listenotices[] = $notice['notice_id'];
     658                       
     659                        foreach ($ids_notice as $id_notice) {
     660                                $r = $ws->pmbesOPACGeneric_also_borrowed($id_notice, 0);
     661                                if (is_array($r)) {
     662                                        foreach ($r as $notice) {
     663                                                $listenotices[] = $notice['notice_id'];
     664                                        }
    650665                                }
    651666                        }
    652                         if (count($listenotices)>0) {
    653                                 pmb_ws_recuperer_tab_notices ($listenotices, $ws, $tresultat);
    654                         }
     667                        $listenotices = array_unique($listenotices);
    655668                }
    656669        }catch (Exception $e) {
    657670                echo 'Exception reçue (10) : ',  $e->getMessage(), "\n";
    658         }
    659         return $tresultat;
    660 }
     671        }
     672       
     673        return $listenotices;
     674}
     675
     676
    661677
    662678
     
    755771
    756772}
     773
     774
    757775function pmb_ws_liste_tri_recherche() {
    758776        //retourne un tableau contenant la liste des tris possibles
     
    808826                $listenotices = array_values($tabnotices);
    809827        }
    810        
     828
    811829        pmb_ws_recuperer_tab_notices ($listenotices, $ws, $tableau_resultat);
    812830        return $tableau_resultat;
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r56774 r56779  
    204204
    205205/**
     206 * (PMB:NOTICES) {id}
     207 * (PMB:NOTICES) {liste #TABLEAU_IDS}
     208 * (PMB:NOTICES) {id} {autres_lectures}
     209 * (PMB:NOTICES) {liste #TABLEAU_IDS} {autres_lectures}
     210 *
    206211 * Selectionner les notices demandees
    207212 * et retourner un tableau des elements parsees
     
    211216        // on peut fournir une liste l'id
    212217        // ou egalement un critere id=x
    213 
     218var_dump($command);
    214219        $ids = array();
    215220
     
    228233        }
    229234
     235        // autres lecteurs : ceux qui ont lu ceci ont aussi emprunte cela
     236        if (pmb_recherche_critere($command['where'], 'autres_lectures')) {
     237                $ids = pmb_ws_ids_notices_autres_lecteurs($ids);
     238        }
     239       
    230240        // retourner les notices selectionnees
    231241        $res = pmb_tabnotices_extraire($ids);
     
    233243        return $res;
    234244}
     245
     246
     247
     248
    235249
    236250
     
    252266        return $res;
    253267}
     268
     269
     270/**
     271 * Chercher la presence d'un critere dans le tableau where.
     272 *
     273 * @return array, un element par valeur trouvee
     274**/
     275function pmb_recherche_critere($criteres, $cle) {
     276        if (!is_array($criteres) OR !$criteres) {
     277                return $res;
     278        }
     279        foreach ($criteres as $c) {
     280                if (is_array($c) AND $c[1] == $cle) {
     281                        return true;
     282                }
     283        }
     284        return false;
     285}
     286
    254287?>
Note: See TracChangeset for help on using the changeset viewer.