Changeset 76976 in spip-zone


Ignore:
Timestamp:
Oct 5, 2013, 10:55:50 AM (8 years ago)
Author:
julienlfy@…
Message:

Surcharge de la fonction 'boucle_DOCUMENTS_dist' du core, afin qu'elle puisse retourner les documents rattachés aux évènements.

Location:
_plugins_/simple_calendrier/branches/v1
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/simple_calendrier/branches/v1/changelog.txt

    r76525 r76976  
    11Plugin Simple Calendrier pour SPIP 2.1
    22------------------------------------------
     3
     41.2.11 le 05/10/2013
     5--------------------
     6Surcharge de la fonction 'boucle_DOCUMENTS_dist' du core, afin qu'elle puisse retourner les documents rattachés aux évènements.
     7
    38
    491.2.10 le 25/09/2013
  • _plugins_/simple_calendrier/branches/v1/plugin.xml

    r76525 r76976  
    55    <auteur>[Julien Lanfrey->http://contrib.spip.net/ju3873]</auteur>
    66    <licence>GPL &#169; 2010-2011</licence>
    7     <version>1.2.10</version>
     7    <version>1.2.11</version>
    88    <version_base>1.4</version_base>
    99    <etat>stable</etat>
  • _plugins_/simple_calendrier/branches/v1/public/simplecal_boucles.php

    r51309 r76976  
    8787
    8888
     89// -----------------------------------------
     90// Surcharge de ecrire/public/boucles.php :
     91// Prise en compte de l'objet 'evenement'
     92// -----------------------------------------
     93//
     94// <BOUCLE(DOCUMENTS)>
     95//
     96// http://doc.spip.org/@boucle_DOCUMENTS_dist
     97function boucle_DOCUMENTS($id_boucle, &$boucles) {
     98        $boucle = &$boucles[$id_boucle];
     99        $id_table = $boucle->id_table;
     100
     101        // on ne veut pas des fichiers de taille nulle,
     102        // sauf s'ils sont distants (taille inconnue)
     103        array_unshift($boucle->where,array("'($id_table.taille > 0 OR $id_table.distant=\\'oui\\')'"));
     104
     105        // Supprimer les vignettes
     106        if (!isset($boucle->modificateur['criteres']['mode'])
     107        AND !isset($boucle->modificateur['criteres']['tout'])) {
     108                array_unshift($boucle->where,array("'!='", "'$id_table.mode'", "'\\'vignette\\''"));
     109        }
     110
     111        // Pour une boucle generique (DOCUMENTS) sans critere de lien, verifier
     112        // qu notre document est lie a un element publie
     113        // (le critere {tout} permet de les afficher tous quand meme)
     114        // S'il y a un critere de lien {id_article} par exemple, on zappe
     115        // ces complications (et tant pis si la boucle n'a pas prevu de
     116        // verification du statut de l'article)
     117        if ((!isset($boucle->modificateur['tout']) OR !$boucle->modificateur['tout'])
     118        AND (!isset($boucle->modificateur['criteres']['id_objet']) OR !$boucle->modificateur['criteres']['id_objet'])
     119        ) {
     120                # Espace avant LEFT JOIN indispensable pour insertion de AS
     121                # a refaire plus proprement
     122
     123                ## la boucle par defaut ignore les documents de forum
     124                $boucle->from[$id_table] = "spip_documents LEFT JOIN spip_documents_liens AS l
     125                        ON $id_table.id_document=l.id_document
     126                        LEFT JOIN spip_articles AS aa
     127                                ON (l.id_objet=aa.id_article AND l.objet=\'article\')
     128                        LEFT JOIN spip_breves AS bb
     129                                ON (l.id_objet=bb.id_breve AND l.objet=\'breve\')
     130                        LEFT JOIN spip_rubriques AS rr
     131                                ON (l.id_objet=rr.id_rubrique AND l.objet=\'rubrique\')
     132                        LEFT JOIN spip_forum AS ff
     133                                ON (l.id_objet=ff.id_forum AND l.objet=\'forum\')
     134                        LEFT JOIN spip_evenements AS ee
     135                                ON (l.id_objet=ee.id_evenement AND l.objet=\'evenement\')
     136                ";
     137                $boucle->group[] = "$id_table.id_document";
     138
     139                if ($GLOBALS['var_preview']) {
     140                        array_unshift($boucle->where,"'(aa.statut IN (\'publie\',\'prop\') OR bb.statut  IN (\'publie\',\'prop\') OR rr.statut IN (\'publie\',\'prive\') OR ff.statut IN (\'publie\',\'prop\') OR ee.statut IN (\'publie\',\'prop\'))'");
     141                } else {
     142                        $postdates = ($GLOBALS['meta']['post_dates'] == 'non')
     143                                ? ' AND aa.date<=\'.sql_quote(quete_date_postdates()).\''
     144                                : '';
     145                        array_unshift($boucle->where,"'((aa.statut = \'publie\'$postdates) OR bb.statut = \'publie\' OR rr.statut = \'publie\' OR ff.statut=\'publie\' OR ee.statut=\'publie\')'");
     146                }
     147        }
     148
     149
     150        return calculer_boucle($id_boucle, $boucles);
     151}
     152
    89153
    90154?>
Note: See TracChangeset for help on using the changeset viewer.