Changeset 49016 in spip-zone


Ignore:
Timestamp:
Jun 23, 2011, 1:59:43 PM (10 years ago)
Author:
guillaume@…
Message:
  • Ajout de la Balise #BANNIERES
  • Redimendionnement automatique des bannières suivant les informations renseignés dans le formulaire de configuration
  • Amélioration des performances (une requete était superflu)
Location:
_plugins_/bannieres/bannieres_2
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/bannieres/bannieres_2/Alire.txt

    r46889 r49016  
    11Bannieres pour SPIP 2.0
    22------------------------
     3+ version 0.29
     4----------------
     5- Ajout de la Balise #BANNIERES
     6- Redimendionnement automatique des bannières suivant les informations renseigné dans le formulaire de configuration
     7- Amélioration des performances
     8
     9+ version 0.28
     10----------------
     11???
    312
    413+ version 0.27
  • _plugins_/bannieres/bannieres_2/action/visit_url.php

    r38849 r49016  
    4747header("location:".$url);
    4848
    49 exit;
     49exit();
    5050}
    5151?>
  • _plugins_/bannieres/bannieres_2/balise/banniere.php

    r48747 r49016  
    44        include_spip('base/abstract_sql');
    55
     6include_spip('inclure/affiche_banniere');
    67
    78// Balise independante du contexte ici
     
    910        return calculer_balise_dynamique($p, 'BANNIERE', array());
    1011}
    11  
     12
    1213// Balise de traitement des données
    1314function balise_BANNIERE_dyn($position='1',$contexte='',$pays='') {
    14 
    15 /*
    16  * geolocalisation limitée à la France -> voir plugin geographie
    17  * ToDO : tester le numero du pays
    18  * $contexte doit etre au format code postal France
    19  */
    20 
    21 if(!is_numeric($contexte)) {
    22         $contexte='';
    23 }
    24 if (defined('_DIR_PLUGIN_GEOGRAPHIE')) $geo = 'oui';
    25 
    26 if ($geo=='oui' and $pays=='70' and $contexte !=''){
    27 
    28         // On est en 'France'
    29 
    30         // On cherche d'abord si il y a une reponse avec le code postal
    31         $rayon ='local';
    32         $diffusion = $contexte;
    33 
    34         $data = chercher_banniere($position , $rayon , $diffusion);
    35 
    36         //      Si pas de resultats avec le code postal, on cherche ailleurs
    37         if ($data ==''){
    38                
    39                 // On recupere le numero du departement à partir du début du code postal
    40                 $departement = substr($contexte,0,2);
    41                
    42                 // Cas des DOM TOM
    43                 if($departement == '97'){
    44                 $departement = substr($contexte,0,3);
    45                 }
    46                
    47                 //on recupere l'id_departement et l'id_region à partir de la table spip_geo_departements
    48                 $champs_geo = array('id_departement', 'id_region');
    49                 $where_geo = 'abbr='.sql_quote($departement);
    50                 $ids=sql_fetsel($champs_geo, "spip_geo_departements", $where_geo,'','', $limit = '1');
    51                        
    52                 // Le departement n'a pas été trouvé
    53                 if ($ids == '') {
    54                
    55                 // Que fais-ton si on n'a pas de résultats ?
    56                
    57                 } else {
    58                
    59                         // On cherche si il y a quelque chose à afficher avec ce departement
    60                         $rayon = 'departement';
    61                         $diffusion = $ids['id_departement'];
    62                        
    63                         $data = chercher_banniere($position , $rayon , $diffusion);
    64                        
    65                         // Si rien dans le departement on s'attaque à la region
    66                         if ($data ==''){
    67                        
    68                                 $rayon ='region';
    69                                 $diffusion = $ids['id_region'];
    70        
    71                                 $data = chercher_banniere($position , $rayon , $diffusion);
    72                                
    73                                 // Si rien dans la region, alors on cherche au niveau national 
    74                                 if ($data ==''){
    75                                         $rayon = 'pays';
    76                                         $diffusion = $pays;
    77                                
    78                                         $data = chercher_banniere($position , $rayon , $diffusion);
    79                                        
    80                                                 // rien de configuré alons on affiche la banniere par defaut
    81                                                 if ($data ==''){
    82                                                         $rayon = 'int';
    83                                                         $diffusion = '';
    84                                                        
    85                                                         $data = chercher_banniere($position , $rayon , $diffusion);
    86                                                        
    87                                                         }
    88                                
    89                                 }
    90                         }
    91                 }
    92         }
    93 } else {
    94 
    95 
    96         // On est PAS en 'France' ou on n'a pas d'autre infos
    97         // On affiche alors une bannière générique ou 'internationale'
    98         $rayon ='int';
    99         $diffusion = '';
    100        
    101         $data = chercher_banniere($position , $rayon , $diffusion);
    102        
     15        return affiche_banniere($position='1',$contexte='',$pays='');
    10316}
    10417
    105 if ($data) {
    106         // on recupere les données trouvées pour afficher la bonne bannière
    107         $id_objet               = 'id_banniere';
    108         $id                             = $data['id_banniere'];
    109         $alt                    = $data['alt'];
    110        
    111         return afficher_banniere($id_objet , $id , $alt);
    112 
    113 } else {
    114         return;
    115 }
    116 
    117 }
    118        
    119 // chercher la bonne banniere
    120 function chercher_banniere($position='', $rayon ='', $diffusion ='') {
    121 
    122         // Champs à récupérer
    123         // $champs = array('id_banniere', 'alt');
    124        
    125        
    126         // dans le cas du local il peut y avoir plusieurs codes postaux séparés par des virgules
    127         // dans les autres cas il n'y a qu'une valeur
    128         if ($rayon =='local'){
    129                 $ou = 'diffusion LIKE "%'.$diffusion.'%"';
    130         } else {
    131                 $ou = 'diffusion ='.sql_quote($diffusion);
    132         }
    133        
    134         // construction des conditions de la requette
    135         $where = array(
    136                 'debut<=CURRENT_DATE()',
    137                 'fin>=CURRENT_DATE()',
    138                 'rayon='.sql_quote($rayon),
    139                 'position='.sql_quote($position),
    140                 $ou,
    141         );
    142        
    143         // On récupère les données dans la base
    144         // $data=sql_fetsel($champs, "spip_bannieres", $where,'','RAND()', $limit = '1');
    145         $data=sql_fetsel("*", "spip_bannieres", $where,'','RAND()', $limit = '1');
    146 
    147 return $data;
    148 
    149 }
    150 
    151 
    152 //
    153 // afficher le document associe a la banniere
    154 //
    155 function afficher_banniere($id_objet='',$id='',$alt='') {
    156 
    157         // Chercher dans la base le document associe à la banniere
    158         $type = "banniere";
    159         $select = "D.id_document, D.extension, D.titre,  D.descriptif,  D.fichier, D.largeur, D.hauteur";
    160         $from = "spip_documents AS D LEFT JOIN spip_documents_liens AS L ON  L.id_document=D.id_document";
    161         $where = "L.id_objet=$id AND L.objet='$type' AND D.extension $img IN ('gif', 'jpg', 'png', 'swf')";
    162         $order = "0+D.titre, D.date";
    163 
    164         $document = sql_fetsel($select, $from, $where, '','RAND()', $limit = '1');
    165         $url = sql_getfetsel ('site', 'spip_bannieres', 'id_banniere='.$id);
    166 
    167   if ($document){ 
    168    
    169    
    170          
    171         // cas du flash:
    172     // on passe les donnees ds FlashVars
    173     // que le flash peut recuperer ou non               
    174         if ($document['extension'] == 'swf'){ 
    175             $url_site = rawurlencode($GLOBALS['meta']['adresse_site']);
    176         $logo_banniere =
    177             "<object type='application/x-shockwave-flash' data='"._DIR_IMG.$document['fichier']."' id='bandeau' width='".$document['largeur']."' height='".$document['hauteur']."'>
    178               <param name='movie' value='"._DIR_IMG.$document['fichier']."' />
    179               <param name='quality' value='high' />
    180               <param name='menu' value='false' />         
    181               <param name='wmode' value='transparent' />
    182               <param name='FlashVars' value='url_site=$url_site&amp;action=visit_url&amp;banniere=$id&amp;url=".rawurlencode($url)."' />
    183             </object>";   
    184  
    185         } else {   
    186            //Todo : s'assurer que c'est une image
    187       $logo_banniere = '<img src="'._DIR_IMG.$document['fichier'].'" alt="'.$alt.'" width="'.$document['largeur'].'" height="'.$document['hauteur'].'" border="0" />';
    188  
    189         }
    190      
    191   } else {   
    192      // rien dans la base peut etre un logo ? - ancien systeme.   
    193         include_spip('inc/iconifier');
    194        
    195         $chercher_logo = charger_fonction('chercher_logo', 'inc');
    196         $logo = $chercher_logo($id, $id_objet, 'on');
    197        
    198         list($img, $clic) = decrire_logo($id_objet,'on',$id, 170, 170, $logo, $texteon, $script, $flag_modif AND !$logo_s);
    199  
    200         // si on a trouve on l'affiche
    201         $logo_banniere = '<img src="'.$logo['0'].'" alt="'.$document['titre'].'" width="'.$document['largeur'].'" height="'.$document['hauteur'].'" border="0" />';
    202   }
    203 
    204         // rechercher l'url de destination
    205         if($url && $document['extension'] != 'swf') {
    206                 $lien = '<a href="'.generer_url_action('visit_url','banniere='.$id.'&url='.rawurlencode($url)).'" title="'.$document['titre'].'" class="banniere">';
    207                 $lien .= $logo_banniere.$document['descriptif'].'</a>';
    208         } else {
    209                 $lien = $logo_banniere;
    210         }
    211 
    212 // Incrementer compteur affichage
    213 
    214 if (!_IS_BOT) {
    215 
    216         $query = sql_update ("spip_bannieres", array('affichages' => "affichages+1"), "id_banniere=$id") ;
    217 }
    218   return $lien;
    219 
    220 }
    22118?>
  • _plugins_/bannieres/bannieres_2/lang/bannieres_fr.php

    r48741 r49016  
    3232        'choix_pays' => 'Choisir le pays',
    3333        'choix_region' => 'Choisir la r&eacute;gion',
     34        'config_legende_image' => 'Redimensionner les banni&egrave;res',
     35        'config_libelle_hauteur' => 'Hauteur maximale',
     36        'config_libelle_largeur' => 'Largeur maximale',
     37        'config_libelle_pixels'  => 'en pixels',
    3438        'confirm_supprimer' => '&Ecirc;tes vous s&ucirc;r de vouloir supprimer cette campagne ?',
    3539        'creation' => 'Date de cr&eacute;ation : ',
  • _plugins_/bannieres/bannieres_2/plugin.xml

    r48747 r49016  
    22        <nom>Banni&egrave;res</nom>
    33        <auteur>Jeannot, inspir&eacute; de Fran&ccedil;ois de Montlivault et Matthieu Marcillaud, [erational->http://www.erational.org]</auteur>
    4         <version>0.28</version>
     4        <version>0.29</version>
    55        <version_base>0.22</version_base>
    66  <licence>&#169; 2009-2011 GNU/GPL</licence>
Note: See TracChangeset for help on using the changeset viewer.