this MOD is a small calendar with:
- navigation (by day/month/year)
- automatic research of the images per day (without taking into account the category)
Demo :
hereas you can note, the current day is highlighted as well as the days where the user can find images.
when one day is highlighted, by a simple click on it, the user can consult all the images of the concerned day in all categories (of course by checking the permissions).
with the arrows in bottom, the user can travel in time while choosing per day, month or year
Note : you must have installed the following MOD =>
[MOD] Search between specifyed datenever forget to backup the files which you will modify.Installation Level: Easy
Installation Time: 5 Minutes
>> 03 files to edit from 4images root:
[change]
/includes/page_header.php[change]
/includes/functions.php[change]
/templates/<yourtemplate>/search.html ------ Installation ------ STEP 1:Open
/includes/page_header.phpAdd at the end of the file, just before
?> :
//-------------------------------------------[ [Mod] Calendar with nav and search ]
$nav_calendar = get_calendar('', bordercolor, head2, tablehead, imagerow1, imagerow2, navbar, button_new);
// paramters => function get_calendar($date = '', $class_table, $class_nav, $class_week_days, $class_noday, $class_eachday, $class_today,$class_linkday)
$site_template->register_vars("nav_calendar", $nav_calendar);
unset($nav_calendar);
//-------------------------------------------[/[Mod] Calendar with nav and search ]
Note : these values (
bordercolor, head2, tablehead, imagerow1, imagerow2, navbar, button_new ) are mine. it correspond to the classes (see in the file
style.css into your template directory) who will be used for the calendar.
Do not hesitate to modify them to personalize the colors of your calendar.
Step 2:Open
/includes/functions.phpAdd at the end of the file, just before
?> :
//-------------------------------------------[ [Mod] Calendar with nav and search ]
/***************************************************************************
calendrier.php - A calendar
-------------------
begin : June 2002
Version : 2.1 (Jan 04)
copyleft : (C) 2002-2003 PHPtools4U.com - Mathieu LESNIAK
email : support@phptools4u.com
website : http://www.phptools4u.com/scripts/calendrier/
***************************************************************************/
function get_calendar($date = '', $class_table, $class_nav, $class_week_days, $class_noday, $class_eachday, $class_today,$class_linkday) {
global $site_db;
global $link_on_day, $PHP_SELF, $params;
global $HTTP_POST_VARS, $HTTP_GET_VARS;
$calendar_txt['french']['monthes'] = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',
'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$calendar_txt['french']['days'] = array('Lundi', 'Mardi', 'Mercredi','Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
$calendar_txt['french']['first_day'] = 0;
$calendar_txt['french']['misc'] = array('Mois précédent', 'Mois suivant','Jour précédent', 'Jour suivant', 'Année précédente', 'Année suivante');
### English version
$calendar_txt['english']['monthes'] = array('', 'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October','November', 'December');
$calendar_txt['english']['days'] = array('Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday','Sunday');
$calendar_txt['english']['first_day'] = -1;
$calendar_txt['english']['misc'] = array('Previous month', 'Next month', 'Previous day', 'Next day', 'Next year', 'Previous year');
### Spanish version
$calendar_txt['spanish']['monthes'] = array('', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
$calendar_txt['spanish']['days'] = array('Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo');
$calendar_txt['spanish']['first_day'] = 0;
$calendar_txt['spanish']['misc'] = array('Mes anterior', 'Mes próximo', 'día anterior', 'día siguiente', 'Año anterior', 'Año siguiente');
### German version
$calendar_txt['german']['monthes'] = array('', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',
'August', 'September', 'Oktober','November', 'Dezember');
$calendar_txt['german']['days'] = array('Montag', 'Dienstag', 'Mittwoch', 'Donnerstag','Freitag','Samstag', 'Sonntag');
$calendar_txt['german']['first_day'] = 0;
$calendar_txt['german']['misc'] = array('Vorhergehender Monat', 'Folgender Monat', 'Vorabend', 'Am nächsten Tag', 'Vorjahr', 'Folgendes Jahr');
### Default Params
$param_d['calendar_columns'] = 5; // Nb of columns
$param_d['show_day'] = 1; // Show the day bar
$param_d['show_month'] = 1; // Show the month bar
$param_d['nav_link'] = 1; // Add a nav bar below
$param_d['link_after_date'] = 0; // Enable link on days after the current day
$param_d['link_before_date'] = 1; // Enable link on days before the current day
$param_d['link_on_day'] = 'search.php?date=%%dd%%'; // Link to put on each day
$param_d['use_img'] = 1; // Use gif for nav bar on the bottom
### New params V2
$param_d['lang'] = 'french'; // change to your language : french / english / spanish / german
$param_d['day_mode'] = 0; // Set to 1 : Enable day view with hours (nothing to see)
$param_d['time_step'] = 60;
$param_d['time_start'] = '0:00';
$param_d['time_stop'] = '24:00';
$param_d['highlight'] = array();
// Can be 'highlight' or 'text'
$param_d['highlight_type'] = 'highlight';
$param_d['cell_width'] = 20;
$param_d['cell_height'] = 20;
$param_d['short_day_name'] = 1;
$param_d['link_on_hour'] = $PHP_SELF.'?hour=%%hh%%';
### /Params
### Getting all params
while (list($key, $val) = each($param_d)) {
if (isset($params[$key])) {
$param[$key] = $params[$key];
}
else {
$param[$key] = $param_d[$key];
}
}
$monthes_name = $calendar_txt[$param['lang']]['monthes'];
$param['calendar_columns'] = ($param['show_day']) ? 7 : $param['calendar_columns'];
$date = priv_reg_glob_calendar('date');
if ($date == '') {
$timestamp = time();
}
else {
$month = substr($date, 4 ,2);
$day = substr($date, 6, 2);
$year = substr($date, 0 ,4);
$timestamp = mktime(0, 0, 0, $month, $day, $year);
}
$current_day = date("d", $timestamp);
$current_month = date('n', $timestamp);
$current_month_2 = date('m', $timestamp);
$current_year = date('Y', $timestamp);
$first_decalage = date("w", mktime(0, 0, 0, $current_month, 1, $current_year));
### Sunday is the _LAST_ day
$first_decalage = ( $first_decalage == 0 ) ? 7 : $first_decalage;
$current_day_index = date('w', $timestamp) + $calendar_txt[$param['lang']]['first_day'] - 1;
$current_day_index = ($current_day_index == -1) ? 7 : $current_day_index;
$current_day_name = $calendar_txt[$param['lang']]['days'][$current_day_index];
$current_month_name = $monthes_name[$current_month];
$nb_days_month = date("t", $timestamp);
$current_timestamp = mktime(23,59,59,date("m"), date("d"), date("Y"));
### CSS
$output = '<style type="text/css">'."\n";
$output .= '@import url('.TEMPLATE_PATH.'/style.css);'."\n";
$output .= '</style>'."\n";
$output .= '<table width="100%" border="0" class="'.$class_table.'" cellpadding="2" cellspacing="1">'."\n";
### Displaying the current month/year
if ($param['show_month'] == 1) {
$output .= '<tr>'."\n";
$output .= ' <td colspan="'.$param['calendar_columns'].'" align="center" class="'.$class_nav.'">'."\n";
### Insert an img at will
if ($param['use_img'] ) {
$output .= '<img src="'.get_gallery_image("mois.gif").'"> ';
}
if ( $param['day_mode'] == 1 ) {
$output .= ' '.$current_day_name.' '.$current_day.' '.$current_month_name.' '.$current_year."\n";
}
else {
$output .= ' '.$current_month_name.' '.$current_year."\n";
}
$output .= ' </td>'."\n";
$output .= '</tr>'."\n";
### select all images for current month
$date_start = mktime(0,0,0,$current_month_2,1,$current_year);
$date_end = mktime(23,59,59,$current_month_2,$nb_days_month,$current_year);
$user_access = get_permission();
$sql = "SELECT image_date, cat_id
FROM ".IMAGES_TABLE."
WHERE image_active = 1 AND image_date >= ".$date_start." AND image_date <= ".$date_end;
$result = $site_db->query($sql);
$date_img_month = array();
while ($row = $site_db->fetch_array($result)) {
if (check_permission("auth_viewcat", $row['cat_id'])) { // check permissions on cat_id
$new_date = date("Ymd",$row['image_date']); // convert the date
$date_img_month[] = $new_date; // put the date in the array if permissions are OK
}
}
// $site_db->free_result();
}
### Building the table row with the days
if ($param['show_day'] == 1 && $param['day_mode'] == 0) {
$output .= '<tr align="center">'."\n";
$first_day = $calendar_txt[$param['lang']]['first_day'];
for ($i = $first_day; $i < 7 + $first_day; $i++) {
$index = ( $i >= 7) ? (7 + $i): $i;
$index = ($i < 0) ? (7 + $i) : $i;
$day_name = ( $param['short_day_name'] == 1 ) ? substr($calendar_txt[$param['lang']]['days'][$index], 0, 1) : $calendar_txt[$param['lang']]['days'][$index];
$output .= ' <td class="'.$class_week_days.'"><b>'.$day_name.'</b></td>'."\n";
}
$output .= '</tr>'."\n";
$first_decalage = $first_decalage - $calendar_txt[$param['lang']]['first_day'];
$first_decalage = ( $first_decalage > 7 ) ? $first_decalage - 7 : $first_decalage;
}
else {
$first_decalage = 0;
}
$output .= '<tr align="center">'."\n";
$int_counter = 0;
if ( $param['day_mode'] == 1 ) {
list($hour_start, $min_start) = explode(':', $param['time_start']);
list($hour_end, $min_end) = explode(':', $param['time_stop']);
$ts_start = ( $hour_start * 60 ) + $min_start;
$ts_end = ( $hour_end * 60 ) + $min_end;
$nb_steps = ceil( ($ts_end - $ts_start) / $param['time_step'] );
for ( $i = 0; $i <= $nb_steps; $i++ ) {
$current_ts = ($ts_start) + $i * $param['time_step'];
$current_hour = floor($current_ts / 60);
$current_min = $current_ts % 60;
$current_hour = (strlen($current_hour) < 2) ? '0'.$current_hour : $current_hour;
$current_min = (strlen($current_min) < 2) ? '0'.$current_min : $current_min;
$highlight_current = ( isset($param['highlight'][date('Ymd', $timestamp).$current_hour.$current_min]) );
$css_2_use = ( $highlight_current ) ? 'HL' : 'Days';
$txt_2_use = ( $highlight_current && $param['highlight_type'] == 'text') ? $param['highlight'][date('Ymd', $timestamp).$current_hour.$current_min] : '';
$output .= '<tr>'."\n";
if ( $param['link_on_hour'] != '') {
$output .= ' <td class="'.$class_noday.'" width="10%"><a href="'.str_replace('%%hh%%', date('Ymd', $timestamp).$current_hour.$current_min, $param['link_on_hour']).'">'.$current_hour.':'.$current_min.'</a></td>'."\n";
}
else {
$output .= ' <td class="'.$class_noday.'" width="10%">'.$current_hour.':'.$current_min.'</td>'."\n";
}
$output .= ' <td class="'.$class_noday.'">'.$txt_2_use.'</td> '."\n";
$output .= '</tr>'."\n";
}
}
else {
# Filling with empty cells at the begining
for ($i = 1; $i < $first_decalage; $i++) {
$output .= '<td class="'.$class_noday.'"> </td>'."\n";
$int_counter++;
}
### Building the table
for ($i = 1; $i <= $nb_days_month; $i++) {
### Do we highlight the current day ?
$i_2 = ($i < 10) ? '0'.$i : $i;
$highlight_current = ( isset($param['highlight'][date('Ym', $timestamp).$i_2]) );
### Row start
if ( ($i + $first_decalage) % $param['calendar_columns'] == 2 && $i != 1) {
$output .= '<tr align="center">'."\n";
$int_counter = 0;
}
$css_2_use = ( $highlight_current ) ? 'HL' : 'Days';
$txt_2_use = ( $highlight_current && $param['highlight_type'] == 'text') ? '<br>'.$param['highlight'][date('Ym', $timestamp).$i_2] : '';
$current_date = $current_year.$current_month_2.$i_2 ;
if ($i == $current_day) {
if (in_array($current_date, $date_img_month)) { //
$output .= '<td class="'.$class_today.'" align="center"><a href="'.str_replace('%%dd%%', $current_year.$current_month_2.$i_2,$param['link_on_day']).'&search_keywords=***&day_start='.$i_2.'&month_start='.$current_month_2.'&year_start='.$current_year.'&day_end='.$i_2.'&month_end='.$current_month_2.'&year_end='.$current_year.'">'.$i.'</a>'.$txt_2_use.'</td>'."\n";
} else {
$output .= '<td class="'.$class_today.'" align="center">'.$i.$txt_2_use.'</td>'."\n";
}
}
elseif ($param['link_on_day'] != '') {
$loop_timestamp = mktime(0,0,0, $current_month, $i, $current_year);
if (( ($param['link_after_date'] == 0) && ($current_timestamp < $loop_timestamp)) || (($param['link_before_date'] == 0) && ($current_timestamp >= $loop_timestamp)) ){
$output .= '<td class="'.$class_eachday.'">'.$i.$txt_2_use.'</td>'."\n";
}
else {
if (in_array($current_date, $date_img_month)) {
$output .= '<td class="'.$class_linkday.'"><a href="'.str_replace('%%dd%%', $current_year.$current_month_2.$i_2,$param['link_on_day']).'&search_keywords=***&day_start='.$i_2.'&month_start='.$current_month_2.'&year_start='.$current_year.'&day_end='.$i_2.'&month_end='.$current_month_2.'&year_end='.$current_year.'">'.$i.'</a>'.$txt_2_use.'</td>'."\n";
} else {
$output .= '<td class="'.$class_eachday.'">'.$i.$txt_2_use.'</td>'."\n";
}
}
}
else {
$output .= '<td class="'.$class_eachday.'">'.$i.'</td>'."\n";
}
$int_counter++;
### Row end
if ( ($i + $first_decalage) % ($param['calendar_columns'] ) == 1 ) {
$output .= '</tr>'."\n";
}
}
$cell_missing = $param['calendar_columns'] - $int_counter;
for ($i = 0; $i < $cell_missing; $i++) {
$output .= '<td class="'.$class_noday.'"> </td>'."\n";
}
$output .= '</tr>'."\n";
}
### Display the nav links on the bottom of the table
if ($param['nav_link'] == 1) {
$previous_day = date("Ymd",
mktime( 12,
0,
0,
$current_month,
$current_day - 1,
$current_year
)
);
$previous_month = date("Ymd",
mktime( 12,
0,
0,
($current_month - 1),
$current_day,
$current_year
)
);
$previous_year = date("Ymd",
mktime( 12,
0,
0,
$current_month,
$current_day,
($current_year - 1)
)
);
$next_day = date("Ymd",
mktime( 1,
12,
0,
$current_month,
$current_day + 1,
$current_year
)
);
$next_month = date("Ymd",
mktime( 1,
12,
0,
$current_month + 1,
$current_day,
$current_year
)
);
$next_year = date("Ymd",
mktime( 12,
0,
0,
$current_month,
$current_day,
($current_year + 1)
)
);
if ($param['use_img']) {
$g = '<img src="'.get_gallery_image("g.gif").'" border="0">';
$gg = '<img src="'.get_gallery_image("gg.gif").'" border="0">';
$ggg = '<img src="'.get_gallery_image("ggg.gif").'" border="0">';
$d = '<img src="'.get_gallery_image("d.gif").'" border="0">';
$dd = '<img src="'.get_gallery_image("dd.gif").'" border="0">';
$ddd = '<img src="'.get_gallery_image("ddd.gif").'" border="0">';
}
else {
$g = '<';
$gg = '<<';
$ggg = '<<<';
$d = '>';
$dd = '>>';
$ddd = '>>>';
}
// nav link for : next day
if ( ($param['link_after_date'] == 0)
&& ($current_timestamp < mktime(0,0,0, $current_month, $current_day+1, $current_year))
) {
$next_day_link = ' ';
}
else {
$next_day_link = '<a href="search.php?date='.$next_day.'" title="'.$calendar_txt[$param['lang']]['misc'][3].'">'.$d.'</a>'."\n";
}
// nav link for : previous day
if ( ($param['link_before_date'] == 0)
&& ($current_timestamp > mktime(0,0,0, $current_month, $current_day-1, $current_year))
){
$previous_day_link = ' ';
}
else {
$previous_day_link = '<a href="search.php?date='.$previous_day.'" title="'.$calendar_txt[$param['lang']]['misc'][2].'">'.$g.'</a>'."\n";
}
// nav link for : next month
if ( ($param['link_after_date'] == 0)
&& ($current_timestamp < mktime(0,0,0, $current_month+1, $current_day, $current_year))
) {
$next_month_link = ' ';
}
else {
$next_month_link = '<a href="search.php?date='.$next_month.'" title="'.$calendar_txt[$param['lang']]['misc'][1].'">'.$dd.'</a>'."\n";
}
// nav link for : previous month
if ( ($param['link_before_date'] == 0)
&& ($current_timestamp >= mktime(0,0,0, $current_month-1, $current_day, $current_year))
){
$previous_month_link = ' ';
}
else {
$previous_month_link = '<a href="search.php?date='.$previous_month.'" title="'.$calendar_txt[$param['lang']]['misc'][0].'">'.$gg.'</a>'."\n";
}
// nav link for : next year
if ( ($param['link_after_date'] == 0)
&& ($current_timestamp < mktime(0,0,0, $current_month, $current_day, $current_year+1))
) {
$next_year_link = ' ';
}
else {
$next_year_link = '<a href="search.php?date='.$next_year.'" title="'.$calendar_txt[$param['lang']]['misc'][5].'">'.$ddd.'</a>'."\n";
}
// nav link for : previous year
if ( ($param['link_before_date'] == 0)
&& ($current_timestamp >= mktime(0,0,0, $current_month, $current_day, $current_year-1))
){
$previous_year_link = ' ';
}
else {
$previous_year_link = '<a href="search.php?date='.$previous_year.'" title="'.$calendar_txt[$param['lang']]['misc'][4].'">'.$ggg.'</a>'."\n";
}
$output .= '<tr>'."\n";
$output .= ' <td align="center" colspan="'.$param['calendar_columns'].'" class="'.$class_nav.'">'."\n";
$output .= ' <table width="100%" border="0" >';
$output .= ' <tr>'."\n";
$output .= ' <td width="16%" align="left" >'."\n";
$output .= $previous_year_link;
$output .= ' </td>'."\n";
$output .= ' <td width="16%" align="left" >'."\n";
$output .= $previous_month_link;
$output .= ' </td>'."\n";
$output .= ' <td width="16%" align="center" >'."\n";
$output .= $previous_day_link;
$output .= ' </td>'."\n";
$output .= ' <td width="16%" align="center" >'."\n";
$output .= $next_day_link;
$output .= ' </td>'."\n";
$output .= ' <td width="16%" align="right" >'."\n";
$output .= $next_month_link;
$output .= ' </td>'."\n";
$output .= ' <td width="16%" align="right" >'."\n";
$output .= $next_year_link;
$output .= ' </td>'."\n";
$output .= ' </tr>';
$output .= ' </table>';
$output .= ' </td>'."\n";
$output .= '</tr>'."\n";
}
$output .= '</table>'."\n";
return $output;
}
function priv_reg_glob_calendar($var) {
Global $HTTP_GET_VARS, $HTTP_POST_VARS;
if (isset($HTTP_GET_VARS[$var])) {
return $HTTP_GET_VARS[$var];
}
elseif (isset($HTTP_POST_VARS[$var])) {
return $HTTP_POST_VARS[$var];
}
else {
return '';
}
}
//-------------------------------------------[/[Mod] Calendar with nav and search ]
Note : modify the parameter
$param_d['lang'] by making it correspond to your language.
STEP 3:Open
/templates/<yourtemplate>/search.htmlor other file like home.html or details.html...
find this code:
{endif random_image}
add after :
<!-- //-------------------------------------------[ [Mod] Calendar with nav and search ] -->
<table width="150" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="head2" height="20" background="{template_url}/images/cat.gif"> <img src="{template_url}/images/spacer.gif" alt="" width="4" height="4" />Calendar</td>
</tr>
<tr>
<td class="tablebgcolor"><img src="{template_url}/images/spacer.gif" alt="" width="1" height="1" /></td>
</tr>
<tr>
<td align="center" class="row1">
{nav_calendar}
</td>
</tr>
<tr>
<td class="tablebgcolor"><img src="{template_url}/images/spacer.gif" alt="" width="1" height="1" /></td>
</tr>
</table>
<!-- //-------------------------------------------[/[Mod] Calendar with nav and search ] -->
STEP 4:Download the attached files, unzip and copy all 7 pics into
/templates/<yourtemplate>/images_<yourlanguage>/You can also choose disable images for nav in the calendar : set parameter
$param_d['use_img'] to
0.
------ END of Installation ------ now launch your search page to see the result!