source: pmb4.2/trunk/fuentes/pmb/includes/abts_func.inc.php @ 819

Last change on this file since 819 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 14.1 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: abts_func.inc.php,v 1.5 2015-04-03 11:16:21 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9/* ce sélecteur est basé sur le calendrier dont la description et
10   l'auteur initial sont mentionnés ci-dessous.
11   Il a été modifié afin d'être utilisable dans notre application */
12
13
14/***************************************************************************
15             ____  _   _ ____  _              _     _  _   _   _
16            |  _ \| | | |  _ \| |_ ___   ___ | |___| || | | | | |
17            | |_) | |_| | |_) | __/ _ \ / _ \| / __| || |_| | | |
18            |  __/|  _  |  __/| || (_) | (_) | \__ \__   _| |_| |
19            |_|   |_| |_|_|    \__\___/ \___/|_|___/  |_|  \___/
20           
21                       calendrier.php  -  A calendar
22                             -------------------
23    begin                : June 2002
24    copyright            : (C) 2002 PHPtools4U.com - Mathieu LESNIAK
25    email                : support@phptools4u.com
26
27***************************************************************************/
28
29/***************************************************************************
30 *
31 *   This program is free software; you can redistribute it and/or modify
32 *   it under the terms of the GNU General Public License as published by
33 *   the Free Software Foundation; either version 2 of the License, or
34 *   (at your option) any later version.
35 *
36 ***************************************************************************/
37
38/*
39- $params['calendar_id'] :  Par défaut à 1, incrémenter cette valeur pour utiliser plusieurs calendriers sur la même page. 
40- $params['calendar_columns'] :  Par défaut à 7, modifier ce nombre pour diminuer / augmenter le nombres de colonnes.
41- $params['show_day'] :  Par défaut à 1, permet d'afficher les jours (L M M J V S D)
42- $params['show_month'] :  Par défaut à 1, permet d'afficher le nom du mois et l'année en haut
43- $params['nav_link'] :  Par défaut à 1, affiche les liens pour les jours et mois précédents / suivants
44- $params['link_after_date'] :  Par défaut à 0, si activé, affiche les liens de la navigation (cf ci-dessus) pour les dates supérieures au jour en cours
45- $params['link_on_day'] :  Lien à attribuer sur les jours du calendrier. A chaque lien est rajouté la date en argument. Prévoir de mettre '?argument=' en fin de lien
46- $params['font_face'] :  Police a utiliser (par défaut : 'Verdana, Arial, Helvetica')
47- $params['font_size'] :  Taille de la police moyenne en pixels (10 par défaut)
48- $params['bg_color'] :  Couleur du fond des cases des jours (blanc - #FFFFFF par défaut)
49- $params['today_bg_color'] :  Couleur de fond de la case du jour en cours
50- $params['font_today_color'] :  Couleur de la police pour le jour en cours
51- $params['font_color'] :  Couleur de la police
52- $params['font_nav_bg_color'] :  Couleur de fond pour la barre des jours (L M M J V S D)
53- $params['font_nav_color'] :  Couleur de la police pour la barre des jours (L M M J V S D)
54- $params['font_header_color'] :  Couleur de la police pour le nom du mois
55- $params['border_color'] :  Couleur pour les séparation des cases et des bordures
56- $params['use_img'] :  Utilise des fichiers gif à côté du nom du mois et pour la barre de navigation en bas. Si défini à '0', affiche les liens textes.
57
58*/
59
60$base_url = "./admin.php?categ=calendrier&sub=$sub";
61$base_url_mois = "./admin.php?categ=calendrier&sub=edition";
62
63$params['calendar_id'] = 1 ;                           
64$params['calendar_columns'] = 7 ;                       
65$params['show_day'] = 1 ;                               
66$params['show_month'] = 1 ;                             
67$params['nav_link'] = 0 ;                               
68$params['link_on_day'] = "" ;           
69$params['link_after_date'] = 1 ;                       
70$params['link_before_date'] = 0 ; 
71$params['font_face'] = "Verdana, Arial, Helvetica" ;   
72$params['font_size'] = 10 ;                             
73$params['bg_color'] = "#FFFFFF" ;                       
74$params['today_bg_color'] = "#FF0000" ;                 
75$params['font_today_color'] = "#000000" ;               
76$params['font_color'] = "#000000" ;                     
77$params['font_nav_bg_color'] = "#AAAAAA" ;             
78$params['font_nav_color'] = "#000000" ;                 
79$params['font_header_color'] = "#00FF00" ;             
80$params['border_color'] = "#000000" ;                   
81$params['use_img'] = 1 ; 
82
83
84function calendar_gestion($date = '', $navbar=0, $url_maj_base='', $base_url_mois="", $form_input_par_jour=0,$modele_id,$num_abt) {
85        global $link_on_day, $params, $base_url, $caller, $msg, $charset, $date_caller;
86        global $dbh,$pmb_first_week_day_format ;
87        global $style_calendrier ;
88        global $admin_calendrier_form_mois_start, $admin_calendrier_form_mois_end, $admin_calendrier_form_mois_commentaire ;
89        global $deflt2docs_location;
90       
91        // Default Params
92        $param_d['calendar_id']         = 1; // Calendar ID
93        $param_d['calendar_columns']= 5; // Nb of columns
94        $param_d['show_day']            = 1; // Show the day bar
95        $param_d['show_month']          = 1; // Show the month bar
96        $param_d['nav_link']            = 1; // Add a nav bar below
97        $param_d['link_after_date']     = 0; // Enable link on days after the current day
98        $param_d['link_before_date']= 0; // Enable link on days before the current day
99        $param_d['link_on_day']         = $PHP_SELF.'?date='; // Link to put on each day
100        $param_d['font_face']           = 'Verdana, Arial, Helvetica'; // Default font to use
101        $param_d['font_size']           = 10; // Font size in px
102        $param_d['bg_color']            = '#FFFFFF'; 
103        $param_d['today_bg_color']      = '#A0C0C0';
104        $param_d['font_today_color']= '#990000';
105        $param_d['font_color']          = '#000000';
106        $param_d['font_nav_bg_color']= '#A9B4B3';
107       
108        $param_d['font_nav_color']      = '#FFFFFF';
109        $param_d['font_header_color']   = '#FFFFFF';
110        $param_d['border_color']        = '#3f6551';
111        $param_d['use_img']             = 1; // Use gif for nav bar on the bottom
112       
113        $monthes_name = array('',$msg[1006],$msg[1007],$msg[1008],$msg[1009],$msg[1010],$msg[1011],$msg[1012],$msg[1013],$msg[1014],$msg[1015],$msg[1016],$msg[1017]);
114        $days_name = array('',$msg[1018],$msg[1019],$msg[1020],$msg[1021],$msg[1022],$msg[1023],$msg[1024]);
115       
116        while (list($key, $val) = each($param_d)) {
117                if (isset($params[$key])) $param[$key] = $params[$key];
118                else $param[$key] = $param_d[$key];
119        }
120        $param['calendar_columns'] = ($param['show_day']) ? 7 : $param['calendar_columns'];
121       
122        //priv_reg_glob_calendar('date');
123        if ($date == '') {
124                $date_MySQL = " CURDATE() ";
125        } else {
126                $month          = substr($date, 4 ,2);
127                $day            = substr($date, 6, 2);
128                $year           = substr($date, 0 ,4);
129                $date_MySQL = "'$year-$month-$day'";
130        }
131        $rqt_date = "select date_format(".$date_MySQL.", '%d') as current_day, date_format(".$date_MySQL.", '%m') as current_month_2, date_format(".$date_MySQL.", '%c') as current_month, date_format(".$date_MySQL.", '%Y') as current_year " ;
132        $resultatdate=pmb_mysql_query($rqt_date);
133        $resdate=pmb_mysql_fetch_object($resultatdate);
134        $current_day            = $resdate->current_day;
135        $current_month          = $resdate->current_month;
136        $current_month_2        = $resdate->current_month_2;
137        $current_year           = $resdate->current_year;
138        $date_MySQL_firstday = "'$year-$current_month_2-01'";
139        $rqt_date = "select date_format(".$date_MySQL_firstday.", '%w') as first_day_pos,
140                                date_format(DATE_SUB(DATE_ADD(".$date_MySQL_firstday.", INTERVAL 1 MONTH),INTERVAL 1 DAY), '%d') as nb_days_month " ;
141        $resultatdate=pmb_mysql_query($rqt_date);
142        $resdate=pmb_mysql_fetch_object($resultatdate);
143        $first_day_pos          = $resdate->first_day_pos;
144        $first_day_pos          = ($first_day_pos == 0) ? 7 : $first_day_pos;
145        $nb_days_month          = $resdate->nb_days_month ;
146        $current_month_name = $monthes_name[$current_month];
147       
148        /* Ajout ER : détection si date en cours du calendrier correspond ou pas à la date de l'appelant
149                Sans ce test, le lien sur tous les jours identiques d'un autre mois n'étaient pas affichés, exemple :
150                        appelant avec date au 04/10/2003 >> lien du 04/11/2003 absent */
151        $date_MySQL_caller = "'".substr($date_caller, 0 ,4)."-".substr($date_caller, 4 ,2)."-".substr($date_caller, 6 ,2)."'";
152        $rqt_date = "select date_format(".$date_MySQL_caller.", '%d') as current_day, date_format(".$date_MySQL_caller.", '%c') as current_month, date_format(".$date_MySQL_caller.", '%Y') as current_year ";
153        $resultatdate=pmb_mysql_query($rqt_date);
154        $resdate=pmb_mysql_fetch_object($resultatdate);
155        $caller_day             = $resdate->current_day;
156        $caller_month           = $resdate->current_month;
157        $caller_year            = $resdate->current_year;
158        if (($caller_month==$current_month) && ($caller_year==$current_year) && ($caller_day==$current_day)) $same_date=1; else $same_date=0;
159        if (!$style_calendrier) {
160                $style_calendrier = '<style type="text/css">
161                                <!--
162                                .calendarNav'.$param['calendar_id'].'   {  font-family: '.$param['font_face'].'; font-size: '.($param['font_size']-1).'px; font-style: normal; background-color: '.$param['border_color'].'}
163                                .calendarTop'.$param['calendar_id'].'   {  font-family: '.$param['font_face'].'; font-size: '.($param['font_size']+1).'px; font-style: normal; color: '.$param['font_header_color'].'; font-weight: bold;  background-color: '.$param['border_color'].'}
164                                .calendarToday'.$param['calendar_id'].' {  font-family: '.$param['font_face'].'; font-size: '.$param['font_size'].'px; font-weight: bold; color: '.$param['font_today_color'].'; background-color: '.$param_d['today_bg_color'].';}
165                                .calendarDays'.$param['calendar_id'].'  {  font-family: '.$param['font_face'].'; font-size: '.$param['font_size'].'px; font-style: normal; color: '.$param['font_color'].'; background-color: '.$param['bg_color'].'; text-align: center}
166                                .calendarHeader'.$param['calendar_id'].'{  font-family: '.$param['font_face'].'; font-size: '.($param['font_size']-1).'px; background-color: '.$param['font_nav_bg_color'].'; color: '.$param['font_nav_color'].';}
167                                .calendarTable'.$param['calendar_id'].' {  background-color: '.$param['border_color'].'; border: 1px '.$param['border_color'].' solid}
168                                -->
169                                </style>';
170                $output = $style_calendrier ;
171        }
172        if ($form_input_par_jour) $output .= $admin_calendrier_form_mois_start ;       
173        $output .= '<TABLE border="0"  cellpadding="1" cellspacing="0">'."\n";
174        // Displaying the current month/year
175        if ($param['show_month'] == 1) {
176                $output .= '<TR>'."\n";
177                $output .= '    <TD colspan="'.$param['calendar_columns'].'" align="right" >'."\n";
178                $output .= "<a name='".$current_year."-".$current_month_2."' ></a>";
179                if ($base_url_mois) $output .= "<a href='".$base_url_mois."&date=".$current_year.$current_month_2."01' alt='".$msg["calendrier_edition"]."' title='".$msg["calendrier_edition"]."'>";
180                if ($param['use_img'] ) $output .= "<IMG src='./images/mois.gif'>";                     
181                $output .= $current_month_name.' '.$current_year;
182                if ($base_url_mois) $output .= "</a>";
183                $output .= "</TD>";
184                $output .= "</TR>"."\n";
185        }
186        if($pmb_first_week_day_format){
187                $first_day_pos++;
188                if($first_day_pos==8) $first_day_pos=1;
189        }
190        // Building the table row with the days
191        if ($param['show_day'] == 1) {
192                $output .= '<TR align="right">'."\n";
193                if($pmb_first_week_day_format) $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1024].'</B></TD>'."\n";
194                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1018].'</B></TD>'."\n";
195                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1019].'</B></TD>'."\n";
196                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1020].'</B></TD>'."\n";
197                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1021].'</B></TD>'."\n";
198                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1022].'</B></TD>'."\n";
199                $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1023].'</B></TD>'."\n";
200                if(!$pmb_first_week_day_format) $output .= '<TD class="calendarHeader'.$param['calendar_id'].'"><B>'.$msg[1024].'</B></TD>'."\n";
201                $output .= '</TR>'."\n";       
202        } else {
203                $first_day_pos = 1;     
204        }
205
206        $output .= '<TR align="right">';
207        $int_counter = 0;
208        for ($i = 1; $i < $first_day_pos; $i++) {
209                $output .= '<TD>&nbsp;</TD>'."\n";
210                $int_counter++;
211        }
212        // Building the table
213        for ($i = 1; $i <= $nb_days_month; $i++) {
214                $i_2 = ($i < 10) ? '0'.$i : $i;
215                $commentaire=htmlentities($reception[$current_year.'-'.$current_month_2.'-'.$i_2]['commentaire'],ENT_QUOTES, $charset) ;
216                $obj="$current_year-$current_month_2-$i_2";     
217       
218                ### Row start
219                if ((($i + $first_day_pos-1) % $param['calendar_columns']) == 1 && $i != 1) {
220                        $output .= "<TR align='right'>";
221                        $int_counter = 0;
222                }
223                if ($form_input_par_jour) {
224                        $input_commentaire = "&nbsp;".str_replace("!!name!!", "comment_".$i_2, $admin_calendrier_form_mois_commentaire) ;
225                        $input_commentaire = "&nbsp;".str_replace("!!commentaire!!", $commentaire, $input_commentaire) ;
226                } else $input_commentaire = "" ; 
227                $serie=0;
228                if($num_abt){// Pour la grille abonnement
229                        $type_serie=$type_horsserie=0;
230                        $requete = "select type from abts_grille_abt where num_abt='$num_abt' and date_parution ='$obj'";
231                        $resultat=pmb_mysql_query($requete);           
232                        while($r=pmb_mysql_fetch_object($resultat)){
233                                $type=$r->type;                         
234                                if ($type==1)$type_serie=1;
235                                if ($type==2)$type_horsserie=2; 
236                        }               
237                        $serie=$type_serie+$type_horsserie;             
238                }
239                else{// Pour la grille modèle                   
240                        $requete = "select type_serie from abts_grille_modele where num_modele='$modele_id' and date_parution ='$obj'";
241                        $resultat=pmb_mysql_query($requete);                   
242                        while($r=pmb_mysql_fetch_object($resultat)){
243                                $type_serie=$r->type_serie;                                     
244                                $serie+=$type_serie;           
245                        }
246                }
247                // c'est un périodique
248                if ($serie==1) {
249                        $class = " class='lien_date' ";
250                } 
251                // c'est un hors-série
252                elseif ($serie==2) {
253                        $class = " class='lien_date_hs'";
254                }
255                // c'est un hors-série et un périodique
256                elseif ($serie==3) {
257                        $class = " class='lien_date_hs_p'";
258                }
259                // rien n'est attendu ce jour là
260                else {
261                        $class = " ";
262                }               
263                $td_link="onClick='ad_date(\"$obj\",event);return false;'";
264                $output .="<TD align='right' $class id='$obj' $td_link>" .
265                                "<a href='#'>$i</a></TD>\n";   
266                $int_counter++;
267                // Row end
268                if ( (($i+$first_day_pos-1) % $param['calendar_columns']) == 0 ) {
269                        $output .= '</TR>'."\n";       
270                }
271        }
272        $cell_missing = $param['calendar_columns'] - $int_counter;
273       
274        for ($i = 0; $i < $cell_missing; $i++) {
275                $output .= '<TD align="right">&nbsp;</TD>'."\n";
276        }
277        $output .= '</TR>'."\n";
278        $output .= '</TABLE>'."\n";
279        return $output;
280}
281
Note: See TracBrowser for help on using the repository browser.