Changeset 57061 in spip-zone


Ignore:
Timestamp:
Jan 13, 2012, 7:46:20 PM (8 years ago)
Author:
marcimat@…
Message:

Boucle(PMB:PRETS){pmb_session}{type=1}

Le type est : 1, les prets en cours, 0 les prets en retard...
[todo] améliorer le nom du critère !

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

Legend:

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

    r57059 r57061  
    4343        0,[(#LISTE{pmb-pretsretard,<:pmb:prets_en_retard:>,'Pas de pr&ecirc;t en retard'})]})]})]
    4444       
    45 <BOUCLE_prets(POUR){tableau #GET{prets}}>
     45<BOUCLE_prets_types(POUR){tableau #GET{prets}}>
    4646        <div id="#VALEUR{0}" class="ps surlignable"><h2 class="pas_surlignable">#VALEUR{1}</h2>
    4747        <div>
    48         [(#SET{tab_prets,[(#PMB_SESSION|pmb_prets_extraire{#CLE})]})]
    49                 <B_tab_resultat>
     48        <B_prets>
    5049                <table class="spip pmb-tableau">
    5150                <thead>
    52                         <tr class="row_first"><th><:pmb:code_barre:></th><th><:pmb:titre:></th><th><:pmb:support:></th><th><:pmb:date:></th><th><:pmb:retour:></th></tr>
     51                        <tr class="row_first">
     52                                <th><:pmb:code_barre:></th>
     53                                <th><:pmb:titre:></th>
     54                                <th><:pmb:support:></th>
     55                                <th><:pmb:date:></th>
     56                                <th><:pmb:retour:></th>
     57                        </tr>
    5358                </thead>
    5459                <tbody>
    55                 <BOUCLE_tab_resultat(POUR){tableau #GET{tab_prets}}>
    56                         [(#SET{notice, #GET{tab_prets/notice_ids/#CLE}})]
     60        <BOUCLE_prets(PMB:PRETS){pmb_session}{type=#CLE}>
    5761                        <tr[ class="(#COMPTEUR_BOUCLE|modulo{2}|?{row_even,row_odd})"]>
    58                                 <td><a href="#URL_PMB_NOTICE{#GET{notice/id}}">
    59                                 [(#GET{notice/logo_src}
    60                                         |image_reduire{0,80}
    61                                         |inserer_attribut{class,spip_logos})]</a> #GET{tab_prets/#CLE/expl_cb}
     62                                <td>
     63                                [(#VALEUR{notice/logo_src}|oui)
     64                                        <a href="#URL_PMB_NOTICE">
     65                                        [(#VALEUR{notice/logo_src}
     66                                                |image_reduire{0,80}
     67                                                |inserer_attribut{class,spip_logos})]
     68                                        </a>
     69                                ]
     70                                #EXPL_CB
    6271                                </td>
    63                                 <td><a href="#URL_PMB_NOTICE{#GET{tab_prets/#CLE/notice_id}}">#GET{tab_prets/#CLE/expl_libelle}</a></td>
    64                                 <td>#GET{tab_prets/#CLE/expl_support}</td>
    65                                 <td>#GET{tab_prets/#CLE/loan_startdate}</td>
    66                                 <td>#GET{tab_prets/#CLE/loan_returndate}</td>
     72                                <td><a href="#URL_PMB_NOTICE">#EXPL_LIBELLE</a></td>
     73                                <td>#EXPL_SUPPORT</td>
     74                                <td>#LOAN_STARTDATE</td>
     75                                <td>#LOAN_RETURNDATE</td>
    6776                        </tr>
    68                 </BOUCLE_tab_resultat>
     77        </BOUCLE_prets>
    6978                </tbody>
    7079                </table>
    71                 </B_tab_resultat>
    72                         [(#_prets:VALEUR{2})]
    73                 <//B_tab_resultat>
     80        </B_prets>
     81                [(#_prets_types:VALEUR{2})]
     82        <//B_prets>
    7483        </div>
    7584        </div>
    76 </BOUCLE_prets>
     85</BOUCLE_prets_types>
    7786
    7887
     
    92101                <BOUCLE_reservations(PMB:RESERVATIONS){pmb_session}>
    93102                        <tr[ class="(#COMPTEUR_BOUCLE|modulo{2}|?{row_even,row_odd})"]>
    94                                 <td><a href="#URL_PMB_NOTICE">
     103                                <td>
    95104                                        [(#VALEUR{notice/logo_src}|oui)
     105                                        <a href="#URL_PMB_NOTICE">
    96106                                                [(#VALEUR{notice/logo_src}
    97107                                                        |image_reduire{0,80}
    98108                                                        |inserer_attribut{class,spip_logos})]
     109                                        </a>
    99110                                        ]
    100                                         </a>
    101111                                </td>
    102112                                <td><a href="#URL_PMB_NOTICE">#VALEUR{notice/titre}</a></td>
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r57059 r57061  
    10001000
    10011001
    1002 // retourne un tableau associatif contenant les prêts en cours
    1003 function pmb_prets_extraire ($session_id, $type_pret=0) {
    1004         $tableau_resultat = Array();
    1005         try{
    1006                 $ws = pmb_webservice();
    1007                 $loans = $ws->pmbesOPACEmpr_list_loans($session_id, $type_pret);
    1008                 $liste_notices = Array();
    1009                 $cpt = 0;
    1010                 if (is_array($loans)) {
    1011                         foreach ($loans as $loan) {
    1012                                 $liste_notices[] = $loan->notice_id;
    1013                                 $tableau_resultat[$cpt] = Array();
    1014                                 $tableau_resultat[$cpt]['empr_id']               = $loan->empr_id;
    1015                                 $tableau_resultat[$cpt]['notice_id']             = $loan->notice_id;
    1016                                 $tableau_resultat[$cpt]['bulletin_id']           = $loan->bulletin_id;
    1017                                 $tableau_resultat[$cpt]['expl_id']               = $loan->expl_id;
    1018                                 $tableau_resultat[$cpt]['expl_cb']               = $loan->expl_cb;
    1019                                 $tableau_resultat[$cpt]['expl_support']          = $loan->expl_support;
    1020                                 $tableau_resultat[$cpt]['expl_location_id']      = $loan->expl_location_id;
    1021                                 $tableau_resultat[$cpt]['expl_location_caption'] = $loan->expl_location_caption;
    1022                                 $tableau_resultat[$cpt]['expl_section_id']       = $loan->expl_section_id;
    1023                                 $tableau_resultat[$cpt]['expl_section_caption']  = $loan->expl_section_caption;
    1024                                 $tableau_resultat[$cpt]['expl_libelle']          = $loan->expl_libelle;
    1025                                 $tableau_resultat[$cpt]['loan_startdate']        = $loan->loan_startdate;
    1026                                 $tableau_resultat[$cpt]['loan_returndate']       = $loan->loan_returndate;
    1027                                
    1028                                 $cpt++;
    1029                         }
    1030                 }
    1031                 if ($cpt>0) {
    1032                         $tableau_resultat['notice_ids'] = pmb_extraire_notices_ids($liste_notices); 
    1033                 }
    1034                 #pmb_remettre_id_dans_resultats(&$tabreau_resultat, $liste_notices);
    1035                
    1036         } catch (Exception $e) {
    1037                  echo 'Exception reçue (17) : ',  $e->getMessage(), "\n";
    1038         }
    1039         return $tableau_resultat;
    1040 }
    1041 
     1002/**
     1003 * Retourne la liste des prets
     1004 * d'un auteur pmb authentifie
     1005 *
     1006 * @param string $ids_pmb_session
     1007 *              Sessions pmb de/des auteurs
     1008 *
     1009 * @param int $type_pret
     1010 *              Type de reponse :
     1011 *              1 : les prets en cours
     1012 *              0 : les prets en retard
     1013 *
     1014 * @return array
     1015 *              Liste des prets
     1016**/
     1017function pmb_extraire_prets_ids($ids_pmb_session, $type_pret=0) {
     1018        $ids_pmb_session = array_filter($ids_pmb_session);
     1019        if (!$ids_pmb_session) {
     1020                return array();
     1021        }
     1022        $prets = array();
     1023        $notices = Array();
     1024        $ws = pmb_webservice();
     1025       
     1026        foreach ($ids_pmb_session as $id_pmb_session) {
     1027                $prets = $ws->pmbesOPACEmpr_list_loans($id_pmb_session, $type_pret);
     1028                if (is_array($prets)) {
     1029                        foreach ($prets as $pret) {
     1030                                $p = array();
     1031                                $p['id_emprunteur']         = $pret->empr_id;
     1032                                $p['id_notice']             = $pret->notice_id;
     1033                                $p['id_bulletin']           = $pret->bulletin_id;
     1034                                $p['expl_id']               = $pret->expl_id;
     1035                                $p['expl_cb']               = $pret->expl_cb;
     1036                                $p['expl_support']          = $pret->expl_support;
     1037                                $p['expl_id_location']      = $pret->expl_location_id;
     1038                                $p['expl_location_titre']   = $pret->expl_location_caption;
     1039                                $p['expl_id_section']       = $pret->expl_section_id;
     1040                                $p['expl_section_titre']    = $pret->expl_section_caption;
     1041                                $p['expl_libelle']          = $pret->expl_libelle;
     1042                                $p['loan_startdate']        = $pret->loan_startdate;
     1043                                $p['loan_returndate']       = $pret->loan_returndate;
     1044                                $notices[] = $pret->notice_id;
     1045                                $prets[] = $p;
     1046                        }
     1047                }
     1048        }
     1049        if ($prets) {
     1050                // on integre les informations des notices
     1051                $notices = pmb_extraire_notices_ids($notices);
     1052                // (pas tres optimise... mais y en a pas beaucoup)
     1053                foreach ($prets as $p) {
     1054                        foreach ($notices as $n) {
     1055                                if ($p['id_notice'] == $n['id_notice']) {
     1056                                        $p['notice'] = $n;
     1057                                        break;
     1058                                }
     1059                        }
     1060                }
     1061        }
     1062        return $prets;
     1063}
    10421064
    10431065/**
     
    10631085       
    10641086        foreach ($ids_pmb_session as $id_pmb_session) {
    1065                 $reservations = $ws->pmbesOPACEmpr_list_resas($pmb_session);
     1087                $reservations = $ws->pmbesOPACEmpr_list_resas($id_pmb_session);
    10661088                if (is_array($reservations)) {
    10671089                        foreach ($reservations as $reservation) {
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r57059 r57061  
    416416/**
    417417 *
    418  * Selectionne les reservations d'an auteurs identifie a PMB
     418 * Selectionne les reservations d'un ou plusieurs auteurs identifies a PMB
    419419 * et retourne un tableau des elements parsees
    420420 *
     
    426426function inc_pmb_reservations_select_dist(&$command, $iterateur) {
    427427        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'reservations', 'pmb_session');
     428}
     429
     430
     431/**
     432 *
     433 * Selectionne les prets d'un ou plusieurs auteurs identifies a PMB
     434 * et retourne un tableau des elements parsees
     435 *
     436 * Liste des prets
     437 * (PMB:PRETS) {pmb_session}{type=0} // en retard // todo : ameliorer le nom du critere type :p
     438 * (PMB:PRETS) {pmb_session}{type=1} // en cours
     439 * (PMB:PRETS) {liste #TABLEAU_PMB_SESSIONS}
     440 *
     441 */
     442function inc_pmb_prets_select_dist(&$command, $iterateur) {
     443        $criteres = $command['where'];
     444       
     445        // on peut fournir une liste l'id
     446        // ou egalement un critere id=x
     447        $ids = array();
     448
     449        // depuis une liste
     450        if (is_array($command['liste']) and count($command['liste'])) {
     451                $ids = $command['liste'];
     452        }
     453
     454        // depuis un critere pmb_session=x ou {pmb_session?}
     455        if ($id = pmb_critere_valeur($criteres, 'pmb_session')) {
     456                $iterateur->exception_des_criteres('pmb_session');
     457                $ids = pmb_intersect_ids($ids, $id);
     458        }
     459
     460        $type = 0;
     461        // {type=1}
     462        if ($types = pmb_critere_valeur($criteres, 'type')) {
     463                $iterateur->exception_des_criteres('type');
     464                // le premier trouve...
     465                $type = array_shift($types);
     466        }
     467
     468        // retourner les objets selectionnees
     469        $res = pmb_extraire_prets_ids($ids, $type);
     470
     471        return $res;
    428472}
    429473
     
    496540        if ($id = pmb_critere_valeur($criteres, $_id_objet)) {
    497541                $ids = pmb_intersect_ids($ids, $id);
     542                // pas la peine de filtrer dessus... surtout pour {pmb_session} qui n'y est plus ensuite
     543                $iterateur->exception_des_criteres($_id_objet);
    498544        }
    499545
Note: See TracChangeset for help on using the changeset viewer.