<?php// no direct accessdefined( '_VALID_MOS' ) or die( 'Appel direct interdit.' );// Pour la liste dÈroulante gÈnÈrer en AJAXheader('Content-type: text/html; charset=iso-8859-1'); // load the html drawing classrequire_once( $mainframe->getPath( 'front_html', 'com_cityguide' ) );require_once( 'voc_rubrique.php' ); // permet d'aller chercher le vocabulaire des rubriques (genres)$mainframe->setPageTitle( 'CityGuide' );switch( $task ) { case 'viewUnes': viewUnes( $option ); break; case 'recordVote': recordVote(); break; case 'viewDetail': viewDetail($option); break; case 'programmation': programmation($id, $type); break; case 'progSuivante': progSuivante(); break; default: viewUnes( $option ); break;}// Fonction qui permet a partir d'un idGenre de rechercher ces parents et de les retourner sous forme de tableau// idGenre : correspond ‡ l'identifiant genre, a partir duquel nous allons rechercher ces parents (les niveaux superieur au niveau du genre donnÈ en parametre)// niveau: permet de retourner les parents d'un niveau prÈdÈfini, si niveau = 0 on retourne les parents de tout les niveaux// Retourne un tableau des idgenre du niveau le plus bas au niveau le plus hautfunction searchFils($idGenre, $niveau=0){ global $database; // controle de l'existance du genre $sqlexiste = "SELECT count(*) FROM #__genre WHERE id = '$idGenre'"; $database->setQuery($sqlexiste); $existe = $database->query(); $tab = array(); $index = 0; // si le genre passÈ en parametre existe bien if($existe>0) { while(!empty($idGenre)) { $sql = "SELECT id, name, niveau, parent FROM #__genre WHERE id = '$idGenre'"; $database->setQuery($sql); $database->loadObject($info); // Si on recupere les genre de tout les niveaux if(empty($niveau)) { if(!empty($idGenre)) { $tab[$index][0] = $info->name; $tab[$index][1] = $info->id; $index++; } } else // si on recupere les genres d'un seul niveau { if(!empty($idGenre) && $info->niveau == $niveau) { $tab[$index][0] = $info->name; $tab[$index][1] = $info->id; $index++; } } $idGenre = $info->parent; } } return $tab; }// Fonction pour voter// row : correspond ‡ l'objet lieu ou evt// objet : permet de dÈfinir s'il s'agit d'un evt (0) ou d'un lieu (1) ou d'un article (3)function afficher_vote($row, $objet=0){ global $mosConfig_live_site,$mainframe,$entete_vote,$database,$mosConfig_absolute_path; $script=' <script type="text/javascript" src="'.$mosConfig_live_site.'/components/com_cityguide/js/ajax.php"></script> <script type="text/javascript"> var vote_etoile_langue = new Array(); vote_etoile_langue[\'UPDATING\'] = \'Mise ‡ jour...\'; vote_etoile_langue[\'THANKS\'] = \'Votre vote est enregistrÈ!\'; vote_etoile_langue[\'ALREADY_VOTE\'] = \'Vous avez dÈj‡ votÈ!\'; vote_etoile_langue[\'VOTES\'] = \'votes\'; vote_etoile_langue[\'VOTE\'] = \'vote\'; </script> <link href="'.$mosConfig_live_site.'/components/com_cityguide/css/ajaxvote.php" rel="stylesheet" type="text/css" />'; $mainframe->addCustomHeadTag($script); if($objet == 0) $suffixe = "_evt"; if($objet == 1) $suffixe = "_lieu"; if($objet == 2) $suffixe = "_article"; $rating_sum = "rating_sum".$suffixe; $rating_count = "rating_count".$suffixe; $id = "id".$suffixe; $html .= '<form method="post" action="index.php?option=com_cityguide&task=recordVote" id="formulaire">'; // Affichage des etoiles $result=0; if($row->$rating_count!=0) $result = number_format(intval($row->$rating_sum) / intval( $row->$rating_count ),2)*20; $html .= '<div class="jwajaxvote-inline-rating"> <ul class="jwajaxvote-star-rating"> <li id="rating'.$row->$id.'" class="current-rating" style="width:'.$result.'%;"></li> <li><a href="javascript:void(null)" onclick="javascript:VoteAjax('.$row->$id.',1, '.$objet.');" title="1 Ètoile sur 5" class="one-star">1</a></li> <li><a href="javascript:void(null)" onclick="javascript:VoteAjax('.$row->$id.',2, '.$objet.');" title="2 Ètoiles sur 5" class="two-stars">2</a></li> <li><a href="javascript:void(null)" onclick="javascript:VoteAjax('.$row->$id.',3, '.$objet.');" title="3 Ètoiles sur 5" class="three-stars">3</a></li> <li><a href="javascript:void(null)" onclick="javascript:VoteAjax('.$row->$id.',4, '.$objet.');" title="4 Ètoiles sur 5" class="four-stars">4</a></li> <li><a href="javascript:void(null)" onclick="javascript:VoteAjax('.$row->$id.',5, '.$objet.');" title="5 Ètoiles sur 5" class="five-stars">5</a></li> </ul>'; if($row->$rating_count > 1) { $result = $row->$rating_count." votes"; } else { if($row->$rating_count == 1) $result = $row->$rating_count." vote"; else $result = $result." vote"; } $html .='<div id="'.$objet.'zoneValeur'.$row->$id.'"> ('.$result.')</div></div><br />'; $html .= '</form>'; return $html;}function recordVote() { global $database; // RÈcuperation des variables $user_rating = intval( $_GET['user_rating']); $cid = intval( $_GET['cid']); $objet = intval( $_GET['objet']); // permet de dÈfinir si on vote pour un evt (0) ou un lieu(1) $currip = ( phpversion() <= '4.2.1' ? @getenv( 'REMOTE_ADDR' ) : $_SERVER['REMOTE_ADDR'] ); $nom_id = "id"; // Nom de l'identifiant dans la requete if($objet == 0) { $table = "#__evenement"; $nomCookie = 'vote_evt'.$cid; $suffixe = "evt"; } if($objet == 1) { $table = "#__lieu"; $nomCookie = 'vote_lieu'.$cid; $suffixe = "lieu"; } if($objet == 2) { $table = "#__content_rating"; $nomCookie = 'vote_article'.$cid; $suffixe = "article"; $nom_id = "content_id"; } $rating_sum = "rating_sum_".$suffixe; $rating_count = "rating_count_".$suffixe; $query = "SELECT *" . "\n FROM $table" . "\n WHERE $nom_id ='". (int) $cid."'"; $database->setQuery( $query ); $database->loadObject($row); // Securite par cookie et IP if($_COOKIE[$nomCookie] || $currip == ($row->lastip)) { // envoie a la page Javascript les infos actualisÈ (vote pris en compte) $sql = "SELECT rating_sum AS $rating_sum, rating_count AS $rating_count FROM $table WHERE $nom_id='".$cid."'"; $database->setQuery( $sql ); $tab = $database->loadRow(); echo '0:'; // dÈj‡ votÈ echo $tab[0].":"; // rating_sum echo $tab[1].":"; // rating_count exit(); } else { setcookie($nomCookie, $nomCookie, time()+86400); /* expire dans une heure */ if (($user_rating >= 1) and ($user_rating <= 5)) { if($objet == 0 || $objet == 1) { $query = "UPDATE $table" . "\n SET rating_count = rating_count + 1, rating_sum = rating_sum + " . (int) $user_rating . ", lastip = " . $database->Quote( $currip ) . "\n WHERE $nom_id = '" . (int) $cid."'" ; $database->setQuery( $query ); $database->query() or die( $database->stderr() ); // envoie a la page Javascript les infos actualisÈ (vote pris en compte) $sql = "SELECT rating_sum, rating_count FROM $table WHERE $nom_id='".$cid."'"; $database->setQuery( $sql ); $tab = $database->loadRow(); echo '1:'; // pas encore votÈ echo $tab[0].":"; // rating_sum echo $tab[1].":"; // rating_count exit(); } else if ($objet == 2) { $sql = "SELECT count(*) FROM $table WHERE $nom_id='".$cid."'"; $database->setQuery( $sql ); $nbElement = $database->loadResult(); if($nbElement > 0) { $query = "UPDATE $table" . "\n SET rating_count = rating_count + 1, rating_sum = rating_sum + " . (int) $user_rating . ", lastip = " . $database->Quote( $currip ) . "\n WHERE $nom_id = '" . (int) $cid."'" ; $database->setQuery( $query ); $database->query() or die( $database->stderr() ); } else // on insert la ligne de vote pour cet article { $query = "INSERT INTO `$table` (`content_id`, `rating_sum`, `rating_count`, `lastip`) " . "\n VALUES ('" . (int) $cid."', '" . (int) $user_rating . "', '1', " . $database->Quote( $currip ).")"; $database->setQuery( $query ); $database->query() or die( $database->stderr() ); } // envoie a la page Javascript les infos actualisÈ (vote pris en compte) $sql = "SELECT rating_sum AS $rating_sum, rating_count AS $rating_count FROM $table WHERE $nom_id='".$cid."'"; $database->setQuery( $sql ); $tab = $database->loadRow(); echo '1:'; // pas encore votÈ echo $tab[0].":"; // rating_sum echo $tab[1].":"; // rating_count exit(); } } }}// Fonction qui affiches les unesfunction viewUnes ($option){ global $database; $id_genre = mosGetParam($_REQUEST,'id_genre'); $aujourdhui = date ("Y-m-d"); // Recherche en BDD des unes pour ce genre et a la date d'aujourd'hui $sql="SELECT E.id AS id_evt, E.nom AS nom_evt, E.description AS description_evt, E.rating_sum AS rating_sum_evt, E.rating_count AS rating_count_evt, L.id AS id_lieu, L.nom AS nom_lieu, L.description AS description_lieu, L.rating_sum AS rating_sum_lieu, L.rating_count AS rating_count_lieu, CG.img_200, C.id AS id_article FROM #__homepage H LEFT OUTER JOIN #__representation R ON H.id_representation = R.id LEFT OUTER JOIN #__lieu L ON H.id_lieu = L.id LEFT OUTER JOIN #__evenement E ON (H.id_evt = E.id OR R.id_evenement=E.id) LEFT OUTER JOIN #__content C ON H.id_article = C.id LEFT OUTER JOIN #__cg_media CG ON ((CG.id_lieu = L.id OR CG.id_evt = E.id) AND CG.published = '1' AND CG.ordering = '1' AND CG.type_media = 'image') WHERE H.id_genre = '$id_genre' AND H.published= '1' AND H.date_parution= '$aujourdhui' ORDER BY H.position"; $database->setQuery($sql); $unes = $database->loadObjectList(); HTML_cityguide::viewUnes( $unes, $option, $id_genre );}//************************ Fonction de com_content modifier ************************/** * Show a content item * @param object An object with the record data * @param boolean If <code>false</code>, the print button links to a popup window. If <code>true</code> then the print button invokes the browser print method. */ function show( &$row, &$params, &$access, $page=0 ) { global $mainframe, $hide_js; global $mosConfig_live_site; global $_MAMBOTS; require_once( $mainframe->getPath( 'front_html', 'com_content') ); $mainframe->appendMetaTag( 'description', $row->metadesc ); $mainframe->appendMetaTag( 'keywords', $row->metakey ); // adds mospagebreak heading or title to <site> Title if ( isset($row->page_title) && $row->page_title ) { $mainframe->setPageTitle( $row->title .' '. $row->page_title ); } // calculate Itemid HTML_content::_Itemid( $row ); // determines the link and `link text` of the readmore button & linked title HTML_content::_linkInfo( $row, $params ); // link used by print button $print_link = $mosConfig_live_site. '/index2.php?option=com_content&task=view&id=' . $row->id .'&pop=1&page='. $page . $row->Itemid_link; // process the new bots $_MAMBOTS->loadBotGroup( 'content' ); $results = $_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, $page ), true ); if ( $params->get( 'item_title' ) || $params->get( 'pdf' ) || $params->get( 'print' ) || $params->get( 'email' ) ) { ?> <div id="content_bloc"> <div id="content_bloc_top"></div> <div id="content_bloc_main"> <div id="content_label_actu"></div> <?php // displays Item Title Title( $row, $params, $access ); echo '<div class="sectiontableentry">'. afficher_vote ($row, 2) .'</div><img src="'. $mosConfig_live_site .'/templates/'. $mainframe->getTemplate() .'/images/seperator.gif" alt="Seperator" width="437" height="1" style="float:left; margin-top:3px; margin-left:15px;" align="bottom" />'; // Affichage des votes // displays PDF Icon HTML_content::PdfIcon( $row, $params, $hide_js ); // displays Print Icon mosHTML::PrintIcon( $row, $params, $hide_js, $print_link ); // displays Email Icon HTML_content::EmailIcon( $row, $params, $hide_js ); ?> <?php } else if ( $access->canEdit ) { // edit icon when item title set to hide ?> <table class="contentpaneopen<?php echo $params->get( 'pageclass_sfx' ); ?>"> <tr> <td> <?php HTML_content::EditIcon( $row, $params, $access ); ?> </td> </tr> </table> <?php } if ( !$params->get( 'intro_only' ) ) { $results = $_MAMBOTS->trigger( 'onAfterDisplayTitle', array( &$row, &$params, $page ) ); echo trim( implode( "\n", $results ) ); } $results = $_MAMBOTS->trigger( 'onBeforeDisplayContent', array( &$row, &$params, $page ) ); echo trim( implode( "\n", $results ) ); ?> <div id="content_item_text_nopic"> <?php // displays Section & Category HTML_content::Section_Category( $row, $params ); // displays Author Name HTML_content::Author( $row, $params ); // displays Created Date HTML_content::CreateDate( $row, $params ); // displays Urls HTML_content::URL( $row, $params ); ?> <?php // displays Table of Contents HTML_content::TOC( $row ); // displays Item Text echo ampReplace( $row->text ); ?> <?php // displays Modified Date HTML_content::ModifiedDate( $row, $params ); // displays Readmore button HTML_content::ReadMore( $row, $params ); ?> </div> <div id="content_comment"><a href="#">36 rÈactions</a></div> </div> <div id="content_bloc_bottom"></div></div><div id="spacer"></div> <?php $results = $_MAMBOTS->trigger( 'onAfterDisplayContent', array( &$row, &$params, $page ) ); echo trim( implode( "\n", $results ) ); // displays the next & previous buttons HTML_content::Navigation ( $row, $params ); // displays close button in pop-up window mosHTML::CloseButton ( $params, $hide_js ); // displays back button in pop-up window mosHTML::BackButton ( $params, $hide_js ); } function Title( &$row, &$params, &$access ) { global $mosConfig_live_site, $mainframe; if ( $params->get( 'item_title' ) ) { if ( $params->get( 'link_titles' ) && $row->link_on != '' ) { ?> <div id="content_item_title"><img src="<?php echo $mosConfig_live_site;?>/templates/<?php echo $mainframe->getTemplate(); ?>/images/content-item-icon.gif" alt="Content item icon" width="6" height="10" /> <a href="<?php echo $row->link_on;?>" class="contentpagetitle<?php echo $params->get( 'pageclass_sfx' ); ?>"> <?php echo $row->title;?></a> <?php HTML_content::EditIcon( $row, $params, $access ); ?> </div> <?php } else { ?> <div id="content_item_title"><img src="<?php echo $mosConfig_live_site;?>/templates/<?php echo $mainframe->getTemplate(); ?>/images/content-item-icon.gif" alt="Content item icon" width="6" height="10" /> <?php echo $row->title;?> <?php HTML_content::EditIcon( $row, $params, $access ); ?> </div> <?php } } else { ?> <div id="content_item_title"><img src="<?php echo $mosConfig_live_site;?>/templates/<?php echo $mainframe->getTemplate(); ?>/images/content-item-icon.gif" alt="Content item icon" width="6" height="10" /> <?php HTML_content::EditIcon( $row, $params, $access ); ?> </div> <?php } }//************************ FIN fonction de com_content modifier ************************/// Fonction qui permet d'afficher les detail d'un lieu, representation, evt// Parametre passÈ// id : correspond ‡ l'identifiant de l'ÈlÈment a affichÈ// type : correspond au type element (1 -> lieu, 0 -> evt, 2 -> representation)function viewDetail($option){ global $database; $id = mosGetParam($_GET,'id'); $type = mosGetParam($_GET,'type'); // Correspond ‡ l'id genre prÈselectionnÈ (ex dans la menu on choisi cinÈ, on est donc dans le cinÈma) // Par contre si on selectionne un lieu dans la homapage principal, on n'a pas prÈselectionnÈ un genre cette variable sera donc vide $id_genre_actu = mosGetParam($_GET,'id_genre'); // Controle que les variables ne soit pas vide if(empty($id) || ($type!= 0 && $type!= 1 && $type!= 2) ) exit(); // si c'est un lieu if($type == 1) { // Les infos additionnelles $requete = "SELECT name, title, type FROM #__lieu_champ WHERE published = '1' ORDER BY ordering"; $database->setQuery($requete); $champs = $database->loadObjectList(); // infos concernant les champs additionelles $nom_champ = array(); foreach ($champs as $champ) { $nom_champ[] = $champ->name; } // RÈcuperation des noms des champs complÈmentaires, que nous allons utilisÈ dans la requete $sql if(count($nom_champ) > 0) $mes_champ = ", ".implode(", ",$nom_champ); else $mes_champ =""; // informations concernant le lieu (hors medias) $sql="SELECT L.id AS id_lieu, L.nom AS nom_lieu, L.nom_compl AS nom_compl_lieu, L.adresse AS adresse_lieu, L.adresse_compl AS adresse_compl_lieu, L.tel AS tel_lieu, L.email AS email_lieu, L.description AS description_lieu, L.horaire AS horaire_lieu, L.prix AS prix_lieu, L.paiement AS paiement_lieu, L.handicap AS handicap_lieu, L.site AS site_lieu, L.rating_sum AS rating_sum_lieu, L.rating_count AS rating_count_lieu, V.nom AS ville, V.cp $mes_champ FROM #__lieu L INNER JOIN #__localite V ON V.id = L.id_ville WHERE L.id = '$id' AND L.published= '1'"; $genre = "SELECT G.id, name, niveau FROM #__lieu_genre LG INNER JOIN #__genre G ON G.id = LG.id_genre WHERE LG.id_lieu = '$id' ORDER BY LG.id DESC"; $medias = " SELECT * FROM #__cg_media WHERE id_lieu = '$id' AND published = '1' AND type_media <> 'document' ORDER BY type_media, ordering"; } // Si c'est un ÈvÈnement if($type == 0) { $genre = "SELECT G.id, name, niveau FROM #__evenement_genre EG INNER JOIN #__genre G ON G.id = EG.id_genre WHERE EG.id_evenement = '$id' ORDER BY EG.id DESC"; $database->setQuery($genre); $genres = $database->loadObjectList(); // les genres de l'element // Si aucun genre n'a Ètais prÈselectionnÈ, nous prennons le premier genre du lieu ou evt, si ce dernier n'est pas de niveau 1 // nous recherchons son parent de niveau 1 // ce genre nous est utile pour les champs additionnel qui sont rattachÈ a un genre particulier (champs additionnel pour le cinema par ex) if(empty($id_genre_actu)) { if($genres[0]->niveau == 1) $id_genre_actu = $genres[0]->id; else { $parent = searchFils($genres[0]->id, 1); $id_genre_actu = $parent[0][1]; // on recupere l'id du genre parent } } // Les infos additionnelles $requete = "SELECT name, title, type FROM #__evenement_champ WHERE published = '1' AND id_genre = '$id_genre_actu' ORDER BY ordering"; $database->setQuery($requete); $champs = $database->loadObjectList(); // infos concernant les champs additionelles $nom_champ = array(); foreach ($champs as $champ) { $nom_champ[] = $champ->name; } // RÈcuperation des noms des champs complÈmentaires, que nous allons utilisÈ dans la requete $sql if(count($nom_champ) > 0) $mes_champ = ", ".implode(", ",$nom_champ); else $mes_champ =""; // informations concernant le lieu (hors medias) $sql = "SELECT E.id AS id_evt, E.nom AS nom_evt, E.nom_compl AS nom_compl_evt, E.description AS description_evt, E.critique AS critique_evt, E.jeune_public AS jeune_public_evt, E.public_age AS public_age_evt, E.dateSortie AS dateSortie_evt, E.dateSortieL AS dateSortieL_evt, E.rating_sum AS rating_sum_evt, E.rating_count AS rating_count_evt $mes_champ FROM #__evenement E WHERE E.id = '$id' AND E.published = '1'"; $medias = " SELECT * FROM #__cg_media WHERE id_evt = '$id' AND published = '1' AND type_media <> 'document' ORDER BY type_media, ordering"; } if(!empty($sql) || !empty($genre) || !empty($medias) ) { $database->setQuery($sql); $database->loadObject($row); // infos concernant l'element // Si ce n'est pas un evenement car cette requete est exÈcutÈ avant si c'est un evenement if($type != 0) { $database->setQuery($genre); $genres = $database->loadObjectList(); // les genres de l'element // Controle qu'il y ai bien des informations ou un genre if(empty($row) || empty($genres)) { mosRedirect( 'index.php', "Une erreur est survenu sur cette fiche, veuillez contacter le webmaster." ); exit(); } // Si aucun genre n'a Ètais prÈselectionnÈ, nous prennons le premier genre du lieu ou evt, si ce dernier n'est pas de niveau 1 // nous recherchons son parent de niveau 1 if(empty($id_genre_actu)) { if($genres[0]->niveau == 1) $id_genre_actu = $genres[0]->id; else { $parent = searchFils($genres[0]->id, 1); $id_genre_actu = $parent[0][1]; // on recupere l'id du genre parent } } } $database->setQuery($medias); $medias = $database->loadObjectList(); HTML_cityguide::viewDetail( $row, $genres, $medias, $champs, $option, $type, $id_genre_actu ); }}// Fonction qui permet d'afficher les detail sur les horaires (sous forme d'onglet) d'un lieu, representation, evt sur un horizon du mois en cours + 1 mois// Parametre passÈ// id : correspond ‡ l'identifiant de l'ÈlÈment a affichÈ// type : correspond au type element (0 -> evt, 1 -> lieu, 2 -> representation)function programmation($id=0, $type=0, $limitStart=0){ global $database; global $mosConfig_live_site, $mainframe; // controle if(empty($id)) exit(); $suivant = false; // variable qui permet de dire si on va ou non afficher le bouton suivant // Si nous un evenement if($type == 0) { $aujourdhui = date ('Y-m-d'); $sql = "SELECT L.id AS id_lieu, L.nom AS nom_lieu, V.nom AS ville_lieu, V.cp AS cp_lieu, R.id_genre, P.dateDebut, P.horaireDebut, P.horaireFin, P.annuler, P.av_premiere, P.nouveaute, P.vo, P.prix, P.commentaire, R.id AS id_representation FROM #__programmation P INNER JOIN #__representation R ON R.id = P.id_representation INNER JOIN #__lieu L ON R.id_lieu = L.id INNER JOIN #__localite V ON L.id_ville = V.id INNER JOIN #__evenement E ON R.id_evenement = E.id WHERE R.id_evenement = '$id' AND P.dateDebut >= '$aujourdhui' ORDER BY R.id_lieu, P.dateDebut, P.horaireDebut"; $database->setQuery($sql); //echo $database->getQuery(); $progs = $database->loadObjectList(); $txt =""; if(count($progs)>0) { $init = false; // Permet d'initialiser la parcours des resultats $suivant = false; // indique s'il faut un bouton suivant ou pas $nbOnglet = 1; // compteur d'onglet par lieux foreach ($progs as $prog) { // on passe dans cette condition uniquement la premiere fois, pour initialiser les variables if($init == false) { $lieu = $prog->id_lieu; $id_representation = $prog->id_representation; $date_onglet = $prog->dateDebut; $nblieu = 1; // Ecriture de la date dans les ongets $date = $prog->dateDebut; // tableau des jours de la semaine $joursem = array('Dim ', 'Lun ', 'Mar ', 'Mer ', 'Jeu ', 'Ven ', 'Sam '); // extraction des jour, mois, an de la date list($annee, $mois, $jour) = explode('-', $date); // calcul du timestamp $timestamp = mktime (0, 0, 0, $mois, $jour, $annee); // affichage du jour de la semaine $jourJ = $joursem[date("w",$timestamp)].$jour."/".$mois." "; // Infos sur le lieu // on passe en parametre a la fonction viewDetail l'id du lieu ou evt ou representation, ainsi qu'un type //1 pour lieu, 2 pour evt, 3 pour representation $txt = '<div id="module_central_small_red"> <div id="module_central_small_red_header"> <div id="module_central_red_header_title">Horaires </div> </div> <div id="module_central_small_red_main"> <div id="module_central_small_red_inner"><br /> <div id="prog'.$nblieu.'"> {tab='.$jourJ.'}<img src="'. $mosConfig_live_site .'/templates/'. $mainframe->getTemplate() .'/images/module-item-icon.gif" alt="Seperator" width="5" height="7" style="margin-right:5px;" align="bottom" /><a href="index.php?option=com_cityguide&task=viewDetail&id='.$prog->id_lieu.'&type=1&id_genre='.$prog->id_genre.'" title="'.$prog->nom_lieu.'" class="program_title" style="color:#990000;" >'.$prog->nom_lieu.' - '.$prog->ville_lieu.' ('.$prog->cp_lieu.') </a><img src="'. $mosConfig_live_site .'/templates/'. $mainframe->getTemplate() .'/images/seperator_small.gif" alt="Seperator" width="411" height="1" style="margin-top:3px;margin-bottom:5px;" align="bottom" /> '; } if($lieu != $prog->id_lieu) { // Infos sur le lieu // on passe en parametre a la fonction viewDetail l'id du lieu ou evt ou representation, ainsi qu'un type //1 pour lieu, 2 pour evt, 3 pour representation $txt .= ' {/tabs} '; // Si plus de 7 onglets on fait apparaitre le bouton suivant if($nbOnglet > 7) { // on supprime les "-" pour pouvoir passÈ la date en parametre $date_param = str_replace( "-", "", $date ); $txt .= '<a href="javascript:void(0);" onClick="progSuivante('.$nblieu.','.$id_representation.', '.$date_param.');">Afficher les jours suivants >></a><br />'; } $id_representation = $prog->id_representation; $txt .= '</div>'; $nblieu++; $txt .= '<br /> <div id="prog'.$nblieu.'">'; $lieu = $prog->id_lieu; $nbOnglet = 0; // reinitialise le compteur } // Pour faire afficher uniquement 7 onglets; if($nbOnglet < 7) { // creation d'un nouvelle onglet, a chaque fois qu'on change de date if($date_onglet != $prog->dateDebut) { $nbOnglet++; // compteur d'onglet par lieux $date_onglet = $prog->dateDebut; // Ecriture de la date dans les ongets $date = $prog->dateDebut; // tableau des jours de la semaine $joursem = array('Dim ', 'Lun ', 'Mar ', 'Mer ', 'Jeu ', 'Ven ', 'Sam '); // extraction des jour, mois, an de la date list($annee, $mois, $jour) = explode('-', $date); // calcul du timestamp $timestamp = mktime (0, 0, 0, $mois, $jour, $annee); // affichage du jour de la semaine $jourJ = $joursem[date("w",$timestamp)].$jour."/".$mois." "; $txt .= ' {tab='.$jourJ.'}<img src="'. $mosConfig_live_site .'/templates/'. $mainframe->getTemplate() .'/images/module-item-icon.gif" alt="Seperator" width="5" height="7" style="margin-right:5px;" align="bottom" /><a href="index.php?option=com_cityguide&task=viewDetail&id='.$prog->id_lieu.'&type=1&id_genre='.$prog->id_genre.'" title="'.$prog->nom_lieu.'" class="program_title" style="color:#990000;" >'.$prog->nom_lieu.' - '.$prog->ville_lieu.' ('.$prog->cp_lieu.') </a><img src="'. $mosConfig_live_site .'/templates/'. $mainframe->getTemplate() .'/images/seperator_small.gif" alt="Seperator" width="411" height="1" style="margin-top:3px;margin-bottom:5px;" align="bottom" /><br /> '; } else { if($init == true) $txt .= " - "; else $init = true; } } else // si il y a plus de 7 onglets { if($date_onglet != $prog->dateDebut) $nbOnglet++; // compteur d'onglet par lieux else $txt .= " - "; } // On affiche tout les horaires, mais uniquement dans les 7 premiers onglets affichÈ if($nbOnglet <= 7) { // contruction du contnu des onglets, ici les horaires (si il y a des horaires) $horaire = "Horaire non communiqué"; if(!empty($prog->horaireDebut)) $horaire = substr($prog->horaireDebut,0,5); if(!empty($prog->horaireFin)) $horaire .= " - ".substr($prog->horaireDebut,0,5); // En infosbulles nous allons afficher toutes les infos complÈmentaire ‡ la sÈance $tip =""; if(!empty($prog->annuler)) $tip = 'ANNULER <br />'; if(!empty($prog->av_premiere)) $tip .= constant("_".$prog->id_genre."evenement").' en avant première <br />'; if(!empty($prog->nouveaute)) $tip .= "Nouveauté <br />"; if(!empty($prog->vo)) $tip .= constant("_".$prog->id_genre."evenement").' en VO<br />'; if(!empty($prog->prix)) $tip .= "Prix : ".$prog->prix."<br />"; if(!empty($prog->commentaire)) $tip .= "Informations complémentaire : ".$prog->commentaire."<br />"; if(!empty($tip)) $tip = infoBull( $tip ); // On ecris les horaires et info bulle dans les onglets $txt .= $horaire." ".$tip; } // fin de si de plus de 7 onglets } $txt .= ' {/tabs} '; // Si plus de 7 onglets on fait apparaitre le bouton suivant if($nbOnglet > 7) { // on supprime les "-" pour pouvoir passÈ la date en parametre $date_param = str_replace( "-", "", $date ); $txt .= '<a href="javascript:void(0);" onClick="progSuivante('.$nblieu.','.$id_representation.', '.$date_param.');" style="color:#FFFFFF;">Afficher les jours suivants >></a><br />'; } $txt .= '</div></div> <div id="module_central_small_red_bottom"></div> </div> </div>'; }// fin de si il y a des programmation } return $txt;}//************************ Fonction mosToolTip de joomla.php modifier ************************//*** Utility function to provide ToolTips* @param string ToolTip text* @param string Box title* @returns HTML code for ToolTip*/function infoBull( $tooltip, $title='', $width='', $image='tooltip.png', $text='', $href='#', $link=1 ) { global $mosConfig_live_site; if ( $width ) { $width = ', WIDTH, \''.$width .'\''; } if ( $title ) { $title = ', CAPTION, \''.$title .'\''; } if ( !$text ) { $image = $mosConfig_live_site . '/includes/js/ThemeOffice/'. $image; $text = '<img src="'. $image .'" border="0" />'; } $style = 'style="text-decoration: none; color: #333;"'; if ( $href ) { $style = ''; } else{ $href = '#'; } $mousover = 'return overlib(\''. $tooltip .'\''. $title .', BELOW, RIGHT'. $width .');'; $tip = "<!-- Tooltip -->\n"; if ( $link ) { $tip .= '<a href="'. $href .'" onmouseover="'. $mousover .'" onmouseout="return nd();" '. $style .'>'. $text .'</a>'; } else { $tip .= '<span onmouseover="'. $mousover .'" onmouseout="return nd();" '. $style .'>'. $text .'</span>'; } return $tip;}//************************ Fin fonction de joomla.php modifier ************************/function progSuivante(){ global $database,$mosConfig_live_site; $id_representation = mosGetParam($_REQUEST,'id_representation'); $date_start = mosGetParam($_REQUEST,'date_start'); if(empty($date_start) || empty($id_representation)) { echo "Une erreur s'est produite, veuillez contacter le webmaster. "; exit(); } $date_start = substr($date_start,0,4)."-".substr($date_start,4,2)."-".substr($date_start,6,2); $sql = "SELECT L.id AS id_lieu, R.id_genre, P.dateDebut, P.horaireDebut, P.horaireFin, P.annuler, P.av_premiere, P.nouveaute, P.vo, P.prix, P.commentaire, R.id AS id_representation FROM #__programmation P INNER JOIN #__representation R ON R.id = P.id_representation INNER JOIN #__lieu L ON R.id_lieu = L.id INNER JOIN #__localite V ON L.id_ville = V.id INNER JOIN #__evenement E ON R.id_evenement = E.id WHERE R.id = '$id_representation' AND P.dateDebut > '$date_start' ORDER BY R.id_lieu, P.dateDebut, P.horaireDebut"; $database->setQuery($sql); //echo $database->getQuery(); $progs = $database->loadObjectList(); $txt =""; $nblieu = 1; // Si il y a des programmation if(count($progs)>0) { $init = false; // Permet d'initialiser la parcours des resultats $suivant = false; // indique s'il faut un bouton suivant ou pas $nbOnglet = 1; // compteur d'onglet par lieux foreach ($progs as $prog) { // on passe dans cette condition uniquement la premiere fois, pour initialiser les variables if($init == false) { $lieu = $prog->id_lieu; $date_onglet = $prog->dateDebut; // Ecriture de la date dans les ongets $date = $prog->dateDebut; // tableau des jours de la semaine $joursem = array('Dim ', 'Lun ', 'Mar ', 'Mer ', 'Jeu ', 'Ven ', 'Sam '); // extraction des jour, mois, an de la date list($annee, $mois, $jour) = explode('-', $date); // calcul du timestamp $timestamp = mktime (0, 0, 0, $mois, $jour, $annee); // affichage du jour de la semaine $jourJ = $joursem[date("w",$timestamp)].$jour."/".$mois." "; // Infos sur le lieu // on passe en parametre a la fonction viewDetail l'id du lieu ou evt ou representation, ainsi qu'un type //1 pour lieu, 2 pour evt, 3 pour representation $txt = ' {tab='.$jourJ.'} '; } // Pour faire afficher uniquement 7 onglets; if($nbOnglet < 7) { // creation d'un nouvelle onglet, a chaque fois qu'on change de date if($date_onglet != $prog->dateDebut) { $nbOnglet++; // compteur d'onglet par lieux $date_onglet = $prog->dateDebut; // Ecriture de la date dans les ongets $date = $prog->dateDebut; // tableau des jours de la semaine $joursem = array('Dim ', 'Lun ', 'Mar ', 'Mer ', 'Jeu ', 'Ven ', 'Sam '); // extraction des jour, mois, an de la date list($annee, $mois, $jour) = explode('-', $date); // calcul du timestamp $timestamp = mktime (0, 0, 0, $mois, $jour, $annee); // affichage du jour de la semaine $jourJ = $joursem[date("w",$timestamp)].$jour."/".$mois." "; $txt .= ' {tab='.$jourJ.'} '; } else { if($init == true) $txt .= ", "; else $init = true; } } else // si il y a plus de 7 onglets { if($date_onglet != $prog->dateDebut) $nbOnglet++; // compteur d'onglet par lieux else $txt .= ", "; } // On affiche tout les horaires, mais uniquement dans les 7 premiers onglets affichÈ if($nbOnglet <= 7) { // contruction du contnu des onglets, ici les horaires (si il y a des horaires) $horaire = "Horaire non communiqué"; if(!empty($prog->horaireDebut)) $horaire = substr($prog->horaireDebut,0,5); if(!empty($prog->horaireFin)) $horaire .= " - ".substr($prog->horaireDebut,0,5); // En infosbulles nous allons afficher toutes les infos complÈmentaire ‡ la sÈance $tip =""; if(!empty($prog->annuler)) $tip = 'ANNULER <br />'; if(!empty($prog->av_premiere)) $tip .= constant("_".$prog->id_genre."evenement").' en avant première <br />'; if(!empty($prog->nouveaute)) $tip .= "Nouveauté <br />"; if(!empty($prog->vo)) $tip .= constant("_".$prog->id_genre."evenement").' en VO<br />'; if(!empty($prog->prix)) $tip .= "Prix : ".$prog->prix."<br />"; if(!empty($prog->commentaire)) $tip .= "Informations complémentaire : ".$prog->commentaire."<br />"; if(!empty($tip)) $tip = infoBull( $tip ); // On ecris les horaires et info bulle dans les onglets $txt .= $horaire." ".$tip; } // fin de si de plus de 7 onglets } $txt .= ' {/tabs} '; // Si plus de 7 onglets on fait apparaitre le bouton suivant if($nbOnglet >= 7) { // on supprime les "-" pour pouvoir passÈ la date en parametre $date_param = str_replace( "-", "", $date ); $txt .= '<a href="javascript:void(0);" onClick="progSuivante('.$nblieu.','.$prog->id_representation.', '.$date_param.');">Afficher les jours suivants >></a><br />'; } }// si il y a des programmation //echo $txt; $txt = ' <div class="jwts_tabberlive" id="jwts_tab1"> <ul class="jwts_tabbernav"> <li id="li_1" class=""><a title="Mer.02/04 " href="javascript:document.getElementById(\'li_1\').className=\'jwts_tabberactive\';alert(document.getElementsByClassName(\'jwts_tabberactive\'));javascript:void(null);">Mer.02/04 </a></li> <li id="li_2" class=""><a title="Jeu.03/04 " href="javascript:document.getElementById(\'li_2\').className=\'jwts_tabberactive\';document.getElementById(\'li_3\').className=\'\';javascript:void(null);">Jeu.03/04 </a></li> <li id="li_3" class="jwts_tabberactive"><a title="Ven.04/04 " href="javascript:void(null);">Ven.04/04 </a></li> <li id="li_4" class=""><a title="Sam.05/04 " href="javascript:document.getElementById(\'li_4\').className=\'jwts_tabberactive\';document.getElementById(\'li_3\').className=\'\';javascript:void(null);">Sam.05/04 </a></li> <li id="li_5" class=""><a title="Dim.06/04 " href="javascript:document.getElementById(\'li_5\').className=\'jwts_tabberactive\';document.getElementById(\'li_3\').className=\'\';javascript:void(null);">Dim.06/04 </a></li> <li id="li_6" class=""><a title="Lun.07/04 " href="javascript:document.getElementById(\'li_6\').className=\'jwts_tabberactive\';document.getElementById(\'li_3\').className=\'\';javascript:void(null);">Lun.07/04 </a></li> <li id="li_7" class=""><a title="Mar.08/04 " href="javascript:document.getElementById(\'li_7\').className=\'jwts_tabberactive\';document.getElementById(\'li_3\').className=\'\';javascript:void(null);">Mar.08/04 </a></li> </ul> <div class="jwts_tabbertab" title=""> <h2><a href="javascript:void(null);" name="advtab">Mer.02/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Jeu.03/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Ven.04/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Sam.05/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Dim.06/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Lun.07/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> <div class="jwts_tabbertab jwts_tabbertabhide" title=""> <h2><a href="javascript:void(null);" name="advtab">Mar.08/04 </a></h2> 13:40 , 14:15 , 15:45 , 16:30 , 17:50 , 18:45 , 20:00 , 21:00 , 22:05 </div> </div>'; $header = " <!-- JoomlaWorks \"Tabs & Slides\" Plugin (v2.3) starts here --> <style type=\"text/css\" media=\"screen\"> @import \"".$mosConfig_live_site."/mambots/content/plugin_jw_ts/tabs_slides.css\"; </style> <style type=\"text/css\" media=\"print\">.jwts_tabbernav{display:none;}</style> <script type=\"text/javascript\">var jwts_slideSpeed=30; var jwts_timer=10;</script> <script type=\"text/javascript\" src=\"".$mosConfig_live_site."/mambots/content/plugin_jw_ts/tabs_slides.js\"></script> "; $header .= "<script type=\"text/javascript\" src=\"".$mosConfig_live_site."/mambots/content/plugin_jw_ts/tabs_slides_def_loader.js\"></script>"; $header .= " <!-- ttttttttttttttttttttttttttttttttttttttttt --> "; $txt = $header.$txt; echo $txt; //a metre dans le code /*global $_MAMBOTS; // variables globale des Mambots $row_bot = new t(); // Nouvelle instance de cette classe t, dÈclarer dans cityguide.html.php, class crÈer uniquement pour le mambot $row_bot->text = $txt; // dÈfinir la propritÈt text de cet objet (corp du msg) $_MAMBOTS->loadBotGroup( 'content' ); // charger les bots de contenu $params =& new mosParameters( '' ); // pas de paramËtre $results = $_MAMBOTS->trigger( 'onPrepareContent', array( &$row_bot, &$params, 0 ), true ); // execute l'action des bots echo $row_bot->text; // remplace le corp du msg par le resultat des bots*/}?>