<?php

##################################################################################
#    HOTELDRUID
#    Copyright (C) 2001-2011 by Marco Maria Francesco De Santis (marco@digitaldruid.net)
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    any later version accepted by Marco Maria Francesco De Santis, which
#    shall act as a proxy as defined in Section 14 of version 3 of the
#    license.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU Affero General Public License for more details.
#
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##################################################################################


function crea_menu_date ($file_menu,$nuovo_file_menu,$tipo_periodi) {
$pag = "giorni_mesi.php";
#if ($tipo_periodi == "g") $aggiungi_giorni = 1;
#else $aggiungi_giorni = 7;
include($file_menu);
$file_intero = file("$file_menu");
$fileaperto = fopen("$nuovo_file_menu","w+");
flock($fileaperto,2);

$date_option = "";
#$n_date_menu = 0;
$fr_Sun = mex(" Do",$pag);
$fr_Mon = mex(" Lu",$pag);
$fr_Tue = mex(" Ma",$pag);
$fr_Wed = mex(" Me",$pag);
$fr_Thu = mex(" Gi",$pag);
$fr_Fri = mex(" Ve",$pag);
$fr_Sat = mex(" Sa",$pag);
$fr_Jan = mex("Gen",$pag);
$fr_Feb = mex("Feb",$pag);
$fr_Mar = mex("Mar",$pag);
$fr_Apr = mex("Apr",$pag);
$fr_May = mex("Mag",$pag);
$fr_Jun = mex("Giu",$pag);
$fr_Jul = mex("Lug",$pag);
$fr_Aug = mex("Ago",$pag);
$fr_Sep = mex("Set",$pag);
$fr_Oct = mex("Ott",$pag);
$fr_Nov = mex("Nov",$pag);
$fr_Dec = mex("Dic",$pag);
$num_file_intero = count($file_intero);

for ($num1 = 0 ; $num1 < $num_file_intero ; $num1++) {
if (substr($file_intero[$num1],0,7) == "<option") {
$data_option = aggiungi_slash(substr($file_intero[$num1],16,10));
$giorno_option = substr($data_option,8,2);
$mese_option = substr($data_option,5,2);
$anno_option = substr($data_option,0,4);
$nome_giorno = date("D" , mktime(0,0,0,$mese_option,$giorno_option,$anno_option));
$nome_mese = date("M" , mktime(0,0,0,$mese_option,$giorno_option,$anno_option));
if ($tipo_periodi == "g") {
if ($nome_giorno == "Sun") $nome_giorno = $fr_Sun;
if ($nome_giorno == "Mon") $nome_giorno = $fr_Mon;
if ($nome_giorno == "Tue") $nome_giorno = $fr_Tue;
if ($nome_giorno == "Wed") $nome_giorno = $fr_Wed;
if ($nome_giorno == "Thu") $nome_giorno = $fr_Thu;
if ($nome_giorno == "Fri") $nome_giorno = $fr_Fri;
if ($nome_giorno == "Sat") $nome_giorno = $fr_Sat;
} # fine if ($tipo_periodi == "g")
else $nome_giorno = "";
if ($nome_mese == "Jan") $nome_mese = $fr_Jan;
if ($nome_mese == "Feb") $nome_mese = $fr_Feb;
if ($nome_mese == "Mar") $nome_mese = $fr_Mar;
if ($nome_mese == "Apr") $nome_mese = $fr_Apr;
if ($nome_mese == "May") $nome_mese = $fr_May;
if ($nome_mese == "Jun") $nome_mese = $fr_Jun;
if ($nome_mese == "Jul") $nome_mese = $fr_Jul;
if ($nome_mese == "Aug") $nome_mese = $fr_Aug;
if ($nome_mese == "Sep") $nome_mese = $fr_Sep;
if ($nome_mese == "Oct") $nome_mese = $fr_Oct;
if ($nome_mese == "Nov") $nome_mese = $fr_Nov;
if ($nome_mese == "Dec") $nome_mese = $fr_Dec;
#if (!$date_option) {
#$a_ini_menu = substr($data_option,0,4);
#$m_ini_menu = (substr($data_option,5,2) - 1);
#$g_ini_menu = substr($data_option,8,2);
#} # fine if (!$date_option)
#$n_date_menu++;
$date_option .= "<option value=\\\"$data_option\\\">$nome_mese $giorno_option$nome_giorno, $anno_option</option>
";
} # fine if (substr($file_intero[$num1],0,7) == "<option")
} # fine for $num1

fwrite($fileaperto,"<?php 

");
fwrite($fileaperto,"\$y_ini_menu = array();
\$m_ini_menu = array();
\$d_ini_menu = array();
\$n_dates_menu = array();
\$d_increment = array();
");
if (!isset($d_increment) or !is_array($d_increment)) $d_increment = array();
for ($num1 = 0 ; $num1 < count($d_increment) ; $num1++) {
fwrite($fileaperto,"\$y_ini_menu[$num1] = \"".$y_ini_menu[$num1]."\";
\$m_ini_menu[$num1] = \"".$m_ini_menu[$num1]."\";
\$d_ini_menu[$num1] = \"".$d_ini_menu[$num1]."\";
\$n_dates_menu[$num1] = \"".$n_dates_menu[$num1]."\";
\$d_increment[$num1] = \"".$d_increment[$num1]."\";
");
} # fine for $num1
if (!empty($partial_dates)) fwrite($fileaperto,"\$partial_dates = 1;
");
fwrite($fileaperto,"\$d_names = \"\\\"".mex(" Do","giorni_mesi.php")."\\\",\\\"".mex(" Lu","giorni_mesi.php")."\\\",\\\"".mex(" Ma","giorni_mesi.php")."\\\",\\\"".mex(" Me","giorni_mesi.php")."\\\",\\\"".mex(" Gi","giorni_mesi.php")."\\\",\\\"".mex(" Ve","giorni_mesi.php")."\\\",\\\"".mex(" Sa","giorni_mesi.php")."\\\"\";
\$m_names = \"\\\"".mex("Gen","giorni_mesi.php")."\\\",\\\"".mex("Feb","giorni_mesi.php")."\\\",\\\"".mex("Mar","giorni_mesi.php")."\\\",\\\"".mex("Apr","giorni_mesi.php")."\\\",\\\"".mex("Mag","giorni_mesi.php")."\\\",\\\"".mex("Giu","giorni_mesi.php")."\\\",\\\"".mex("Lug","giorni_mesi.php")."\\\",\\\"".mex("Ago","giorni_mesi.php")."\\\",\\\"".mex("Set","giorni_mesi.php")."\\\",\\\"".mex("Ott","giorni_mesi.php")."\\\",\\\"".mex("Nov","giorni_mesi.php")."\\\",\\\"".mex("Dic","giorni_mesi.php")."\\\"\";

\$dates_options_list = \"

$date_option
\";

?>");
flock($fileaperto,3);
fclose($fileaperto);
} # fine function crea_menu_date




function aggiorna_menu_date ($file_menu,$tipo_periodi) {
$pag = "giorni_mesi.php";
#if ($tipo_periodi == "g") $aggiungi_giorni = 1;
#else $aggiungi_giorni = 7;
include($file_menu);
$file_intero = file("$file_menu");
$fileaperto = fopen("$file_menu","w+");
flock($fileaperto,2);
$date_option = "";
#$n_date_menu = 0;
for ($num1 = 0 ; $num1 < count($file_intero) ; $num1++) {
if (substr($file_intero[$num1],0,7) == "<option") {
$data_option = aggiungi_slash(substr($file_intero[$num1],16,10));
$giorno_option = substr($data_option,8,2);
$mese_option = substr($data_option,5,2);
$anno_option = substr($data_option,0,4);
$nome_giorno = date("D" , mktime(0,0,0,$mese_option,$giorno_option,$anno_option));
$nome_mese = date("M" , mktime(0,0,0,$mese_option,$giorno_option,$anno_option));
if ($tipo_periodi == "g") {
if ($nome_giorno == "Sun") $nome_giorno = mex(" Do",$pag);
if ($nome_giorno == "Mon") $nome_giorno = mex(" Lu",$pag);
if ($nome_giorno == "Tue") $nome_giorno = mex(" Ma",$pag);
if ($nome_giorno == "Wed") $nome_giorno = mex(" Me",$pag);
if ($nome_giorno == "Thu") $nome_giorno = mex(" Gi",$pag);
if ($nome_giorno == "Fri") $nome_giorno = mex(" Ve",$pag);
if ($nome_giorno == "Sat") $nome_giorno = mex(" Sa",$pag);
} # fine if ($tipo_periodi == "g")
else $nome_giorno = "";
if ($nome_mese == "Jan") $nome_mese = mex("Gen",$pag);
if ($nome_mese == "Feb") $nome_mese = mex("Feb",$pag);
if ($nome_mese == "Mar") $nome_mese = mex("Mar",$pag);
if ($nome_mese == "Apr") $nome_mese = mex("Apr",$pag);
if ($nome_mese == "May") $nome_mese = mex("Mag",$pag);
if ($nome_mese == "Jun") $nome_mese = mex("Giu",$pag);
if ($nome_mese == "Jul") $nome_mese = mex("Lug",$pag);
if ($nome_mese == "Aug") $nome_mese = mex("Ago",$pag);
if ($nome_mese == "Sep") $nome_mese = mex("Set",$pag);
if ($nome_mese == "Oct") $nome_mese = mex("Ott",$pag);
if ($nome_mese == "Nov") $nome_mese = mex("Nov",$pag);
if ($nome_mese == "Dec") $nome_mese = mex("Dic",$pag);
#if (!$date_option) {
#$a_ini_menu = substr($data_option,0,4);
#$m_ini_menu = (substr($data_option,5,2) - 1);
#$g_ini_menu = substr($data_option,8,2);
#} # fine if (!$date_option)
#$n_date_menu++;
$date_option .= "<option value=\\\"$data_option\\\">$nome_mese $giorno_option$nome_giorno, $anno_option</option>
";
} # fine if (substr($file_intero[$num1],0,7) == "<option")
} # fine for $num1
fwrite($fileaperto,"<?php 

");
fwrite($fileaperto,"\$y_ini_menu = array();
\$m_ini_menu = array();
\$d_ini_menu = array();
\$n_dates_menu = array();
\$d_increment = array();
");
if (!isset($d_increment) or !is_array($d_increment)) $d_increment = array();
for ($num1 = 0 ; $num1 < count($d_increment) ; $num1++) {
fwrite($fileaperto,"\$y_ini_menu[$num1] = \"".$y_ini_menu[$num1]."\";
\$m_ini_menu[$num1] = \"".$m_ini_menu[$num1]."\";
\$d_ini_menu[$num1] = \"".$d_ini_menu[$num1]."\";
\$n_dates_menu[$num1] = \"".$n_dates_menu[$num1]."\";
\$d_increment[$num1] = \"".$d_increment[$num1]."\";
");
} # fine for $num1
if (!empty($partial_dates)) fwrite($fileaperto,"\$partial_dates = 1;
");
fwrite($fileaperto,"\$d_names = \"\\\"".mex(" Do","giorni_mesi.php")."\\\",\\\"".mex(" Lu","giorni_mesi.php")."\\\",\\\"".mex(" Ma","giorni_mesi.php")."\\\",\\\"".mex(" Me","giorni_mesi.php")."\\\",\\\"".mex(" Gi","giorni_mesi.php")."\\\",\\\"".mex(" Ve","giorni_mesi.php")."\\\",\\\"".mex(" Sa","giorni_mesi.php")."\\\"\";
\$m_names = \"\\\"".mex("Gen","giorni_mesi.php")."\\\",\\\"".mex("Feb","giorni_mesi.php")."\\\",\\\"".mex("Mar","giorni_mesi.php")."\\\",\\\"".mex("Apr","giorni_mesi.php")."\\\",\\\"".mex("Mag","giorni_mesi.php")."\\\",\\\"".mex("Giu","giorni_mesi.php")."\\\",\\\"".mex("Lug","giorni_mesi.php")."\\\",\\\"".mex("Ago","giorni_mesi.php")."\\\",\\\"".mex("Set","giorni_mesi.php")."\\\",\\\"".mex("Ott","giorni_mesi.php")."\\\",\\\"".mex("Nov","giorni_mesi.php")."\\\",\\\"".mex("Dic","giorni_mesi.php")."\\\"\";

\$dates_options_list = \"

$date_option
\";

?>");
flock($fileaperto,3);
fclose($fileaperto);
} # fine function aggiorna_menu_date




function estendi_menu_date ($file_menu,$nuovo_file_menu,$tipo_periodi,$data_ini,$data_ini_agg,$data_fine,$anno,$pag) {

$mese_fine = substr($data_fine,5,2);
$anno_fine = substr($data_fine,0,4);
$giorno_fine = substr($data_fine,8,2);
if ((int) substr($data_fine,8,2) == 1) $mese_fine--;
if ($anno_fine > $anno) {
$diff = $anno_fine - $anno;
$mese_fine = ($diff * 12) + $mese_fine;
} # fine if ($anno_fine > $anno)
if (!$data_ini_agg or $data_ini_agg < $data_ini) $data_ini_agg = $data_ini;
$mese_ini_agg = substr($data_ini_agg,5,2);
$anno_ini_agg = substr($data_ini_agg,0,4);
$numgiorno = substr($data_ini_agg,8,2);
if ($anno_ini_agg > $anno) {
$diff = $anno_ini_agg - $anno;
$mese_ini_agg = ($diff * 12) + $mese_ini_agg;
} # fine if ($anno_fine > $anno)

if ($tipo_periodi == "g") $aggiungi_giorni = 1;
else $aggiungi_giorni = 7;

$date_option_agg = "";
$n_date_menu_agg = 0;
$mesecreato = $mese_ini_agg;
while ($mesecreato <= $mese_fine) {
if ($date_option_agg) $numgiorno = $numgiorno + $aggiungi_giorni;
$datafine = date("Y-m-d",mktime(0,0,0,$mese_ini_agg,$numgiorno,$anno));
$annocreato = date("Y",mktime(0,0,0,$mese_ini_agg,$numgiorno,$anno));
$mesecreato = date("n",mktime(0,0,0,$mese_ini_agg,$numgiorno,$anno));
if ($annocreato > $anno) {
$diff = $annocreato - $anno;
$mesecreato = ($diff * 12) + $mesecreato;
} # fine if ($annocreato > $anno)
$nome_giorno = date("D",mktime(0,0,0,$mese_ini_agg,$numgiorno,$anno));
if ($tipo_periodi == "g") $nome_giorno = "[$nome_giorno]";
else $nome_giorno = "";
$nome_mese = substr($datafine,5,2);
$numero_giorno = substr($datafine,8,2);
$numero_anno = substr($datafine,0,4);
if (!$date_option_agg) {
$a_ini_menu_agg = substr($datafine,0,4);
$m_ini_menu_agg = (substr($datafine,5,2) - 1);
$g_ini_menu_agg = substr($datafine,8,2);
} # fine if (!$date_option_agg)
$n_date_menu_agg++;
$date_option_agg .= "<option value=\\\"$datafine\\\">[$nome_mese] $numero_giorno$nome_giorno, $numero_anno</option>
";
} # fine while ($mesecreato <= $mese_fine)


if ($tipo_periodi == "g") {
$date_option_agg = str_replace("[Sun]",mex(" Do","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Mon]",mex(" Lu","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Tue]",mex(" Ma","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Wed]",mex(" Me","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Thu]",mex(" Gi","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Fri]",mex(" Ve","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[Sat]",mex(" Sa","giorni_mesi.php"),$date_option_agg);
} # fine if ($tipo_periodi == "g")
$date_option_agg = str_replace("[01]",mex("Gen","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[02]",mex("Feb","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[03]",mex("Mar","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[04]",mex("Apr","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[05]",mex("Mag","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[06]",mex("Giu","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[07]",mex("Lug","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[08]",mex("Ago","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[09]",mex("Set","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[10]",mex("Ott","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[11]",mex("Nov","giorni_mesi.php"),$date_option_agg);
$date_option_agg = str_replace("[12]",mex("Dic","giorni_mesi.php"),$date_option_agg);
unset($y_ini_menu);
unset($m_ini_menu);
unset($d_ini_menu);
unset($n_dates_menu);
unset($d_increment);
include($file_menu);
$num_periodi_vecchi = count($y_ini_menu);
$fileaperto = fopen($nuovo_file_menu,"w+");
flock($fileaperto,2);
fwrite($fileaperto,"<?php 

");
fwrite($fileaperto,"\$y_ini_menu = array();
\$m_ini_menu = array();
\$d_ini_menu = array();
\$n_dates_menu = array();
\$d_increment = array();
");
$num_menu = 0;
for ($num1 = 0 ; $num1 < $num_periodi_vecchi ; $num1++) {
$scrivi = 0;
if ($y_ini_menu[$num1]."-".$m_ini_menu[$num1]."-".$d_ini_menu[$num1] > $data_ini) $scrivi = 1;
else {
$numgiorno = $d_ini_menu[$num1];
for ($num2 = 0 ; $num2 < $n_dates_menu[$num1] ; $num2++) {
$data_corr = date("Y-m-d",mktime(0,0,0,($m_ini_menu[$num1] + 1),$numgiorno,$y_ini_menu[$num1]));
if ($data_corr >= $data_ini and $data_corr != $data_ini_agg) {
$y_ini_menu[$num1] = substr($data_corr,0,4);
$m_ini_menu[$num1] = (substr($data_corr,5,2) - 1);
$d_ini_menu[$num1] = substr($data_corr,8,2);
$n_dates_menu[$num1] = $n_dates_menu[$num1] - $num2;
if ($n_dates_menu[$num1]) $scrivi = 1;
break;
} # fine if ($data_corr >= $data_ini and...
$numgiorno = $numgiorno + $d_increment[$num1];
} # fine for $num2
} # fine else if ($y_ini_menu[$num1]."-".$m_ini_menu[$num1]."-".$d_ini_menu[$num1] > $data_ini)
if ($scrivi) {
fwrite($fileaperto,"\$y_ini_menu[$num_menu] = \"".$y_ini_menu[$num1]."\";
\$m_ini_menu[$num_menu] = \"".$m_ini_menu[$num1]."\";
\$d_ini_menu[$num_menu] = \"".$d_ini_menu[$num1]."\";
\$n_dates_menu[$num_menu] = \"".$n_dates_menu[$num1]."\";
\$d_increment[$num_menu] = \"".$d_increment[$num1]."\";
");
$num_menu++;
} # fine if ($scrivi)
} # fine for $num1
$dates_options_list_vett = explode("<option value=\"",$dates_options_list);
$num_dates_options_list = count($dates_options_list_vett);
$n_dates_options_list = "";
for ($num1 = 1 ; $num1 < $num_dates_options_list ; $num1++) {
$data_corr = substr($dates_options_list_vett[$num1],0,10);
if ($data_corr >= $data_ini and ($data_corr != $data_ini_agg or !$date_option_agg)) $n_dates_options_list .= "<option value=\"".$dates_options_list_vett[$num1];
} # fine for $num1
if ($n_date_menu_agg) {
fwrite($fileaperto,"\$y_ini_menu[$num_menu] = \"$a_ini_menu_agg\";
\$m_ini_menu[$num_menu] = \"$m_ini_menu_agg\";
\$d_ini_menu[$num_menu] = \"$g_ini_menu_agg\";
\$n_dates_menu[$num_menu] = \"$n_date_menu_agg\";
\$d_increment[$num_menu] = \"$aggiungi_giorni\";
");
} # fine if ($n_date_menu_agg)
if (!empty($partial_dates)) fwrite($fileaperto,"\$partial_dates = 1;
");
fwrite($fileaperto,"\$d_names = \"\\\"".mex(" Do","giorni_mesi.php")."\\\",\\\"".mex(" Lu","giorni_mesi.php")."\\\",\\\"".mex(" Ma","giorni_mesi.php")."\\\",\\\"".mex(" Me","giorni_mesi.php")."\\\",\\\"".mex(" Gi","giorni_mesi.php")."\\\",\\\"".mex(" Ve","giorni_mesi.php")."\\\",\\\"".mex(" Sa","giorni_mesi.php")."\\\"\";
\$m_names = \"\\\"".mex("Gen","giorni_mesi.php")."\\\",\\\"".mex("Feb","giorni_mesi.php")."\\\",\\\"".mex("Mar","giorni_mesi.php")."\\\",\\\"".mex("Apr","giorni_mesi.php")."\\\",\\\"".mex("Mag","giorni_mesi.php")."\\\",\\\"".mex("Giu","giorni_mesi.php")."\\\",\\\"".mex("Lug","giorni_mesi.php")."\\\",\\\"".mex("Ago","giorni_mesi.php")."\\\",\\\"".mex("Set","giorni_mesi.php")."\\\",\\\"".mex("Ott","giorni_mesi.php")."\\\",\\\"".mex("Nov","giorni_mesi.php")."\\\",\\\"".mex("Dic","giorni_mesi.php")."\\\"\";

\$dates_options_list = \"

".trim(addslashes($n_dates_options_list))."
$date_option_agg
\";

?>");
flock($fileaperto,3);
fclose($fileaperto);

} # fine function estendi_menu_date




?>