Changeset 57056 in spip-zone


Ignore:
Timestamp:
Jan 13, 2012, 5:47:49 PM (8 years ago)
Author:
marcimat@…
Message:

abstraction là aussi pour mutualiser.

File:
1 edited

Legend:

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

    r57055 r57056  
    410410 */
    411411function inc_pmb_auteurs_select_dist(&$command, $iterateur) {
     412        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'auteurs', 'id_auteur');
     413}
     414
     415
     416
     417/**
     418 *
     419 * Selectionne une ou plusieurs collections PMB
     420 * et retourne un tableau des elements parsees
     421 *
     422 * Une collection
     423 * (PMB:COLLECTIONS) {id_collection}
     424 *
     425 * Des collections
     426 * (PMB:COLLECTIONS) {liste #TABLEAU_IDS_COLLECTION}
     427 *
     428 */
     429function inc_pmb_collections_select_dist(&$command, $iterateur) {
     430        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'collections', 'id_collection');
     431}
     432
     433
     434
     435/**
     436 *
     437 * Selectionne une ou plusieurs editeurs PMB
     438 * et retourne un tableau des elements parsees
     439 *
     440 * Un editeur
     441 * (PMB:EDITEURS) {id_editeur}
     442 *
     443 * Des editeurs
     444 * (PMB:EDITEURS) {liste #TABLEAU_IDS_EDITEUR}
     445 *
     446 */
     447function inc_pmb_editeurs_select_dist(&$command, $iterateur) {
     448        return inc_pmb_select_abstract_dist(&$command, $iterateur, 'editeurs', 'id_editeur');
     449}
     450
     451
     452/**
     453 * Editeurs, auteurs et collections sont les memes principes
     454 * on les regroupe dans une fonction d'abstraction...
     455 *
     456 * @param array $command
     457 *              Le tableau command de l'iterateur
     458 *
     459 * @param array $iterateur
     460 *              L'iterateur complet
     461 *
     462 * @param string $objet
     463 *              Le nom de l'objet (pluriel) ex:auteurs
     464 *
     465 * @param string $_id_objet
     466 *              Le nom de l'identifant de l'objet 'id_auteur'
     467**/
     468//
     469function inc_pmb_select_abstract_dist(&$command, $iterateur, $objet, $_id_objet) {
    412470        $criteres = $command['where'];
    413471       
     
    415473        // ou egalement un critere id=x
    416474        $ids = array();
    417        
    418475
    419476        // depuis une liste
     
    422479        }
    423480
    424         // depuis un critere id_auteur=x ou {id_auteur?}
    425         if ($id = pmb_critere_valeur($criteres, 'id_auteur')) {
     481        // depuis un critere id_objet=x ou {id_objet?}
     482        if ($id = pmb_critere_valeur($criteres, $_id_objet)) {
    426483                $ids = pmb_intersect_ids($ids, $id);
    427484        }
    428485
    429         // retourner les auteurs selectionnees
    430         $res = pmb_extraire_auteurs_ids($ids);
     486        // retourner les objets selectionnees
     487        $pmb_extraire_ids = 'pmb_extraire_' . $objet . '_ids';
     488        $res = $pmb_extraire_ids($ids);
    431489
    432490        return $res;
    433491}
    434 
    435 
    436 
    437 /**
    438  *
    439  * Selectionne une ou plusieurs collections PMB
    440  * et retourne un tableau des elements parsees
    441  *
    442  * Une collection
    443  * (PMB:COLLECTIONS) {id_collection}
    444  *
    445  * Des collections
    446  * (PMB:COLLECTIONS) {liste #TABLEAU_IDS_COLLECTION}
    447  *
    448  */
    449 function inc_pmb_collections_select_dist(&$command, $iterateur) {
    450         $criteres = $command['where'];
    451        
    452         // on peut fournir une liste l'id
    453         // ou egalement un critere id=x
    454         $ids = array();
    455        
    456 
    457         // depuis une liste
    458         if (is_array($command['liste']) and count($command['liste'])) {
    459                 $ids = $command['liste'];
    460         }
    461 
    462         // depuis un critere id_collection=x ou {id_collection?}
    463         if ($id = pmb_critere_valeur($criteres, 'id_collection')) {
    464                 $ids = pmb_intersect_ids($ids, $id);
    465         }
    466 
    467         // retourner les collections selectionnees
    468         $res = pmb_extraire_collections_ids($ids);
    469 
    470         return $res;
    471 }
    472 
    473 
    474 
    475 /**
    476  *
    477  * Selectionne une ou plusieurs editeurs PMB
    478  * et retourne un tableau des elements parsees
    479  *
    480  * Un editeur
    481  * (PMB:EDITEURS) {id_editeur}
    482  *
    483  * Des editeurs
    484  * (PMB:EDITEURS) {liste #TABLEAU_IDS_EDITEUR}
    485  *
    486  */
    487 function inc_pmb_editeurs_select_dist(&$command, $iterateur) {
    488         $criteres = $command['where'];
    489        
    490         // on peut fournir une liste l'id
    491         // ou egalement un critere id=x
    492         $ids = array();
    493 
    494         // depuis une liste
    495         if (is_array($command['liste']) and count($command['liste'])) {
    496                 $ids = $command['liste'];
    497         }
    498 
    499         // depuis un critere id_collection=x ou {id_editeur?}
    500         if ($id = pmb_critere_valeur($criteres, 'id_editeur')) {
    501                 $ids = pmb_intersect_ids($ids, $id);
    502         }
    503 
    504         // retourner les collections selectionnees
    505         $res = pmb_extraire_editeurs_ids($ids);
    506 
    507         return $res;
    508 }
    509 
    510492
    511493
Note: See TracChangeset for help on using the changeset viewer.