"#C0C0C0","Background color"=>"#808080","Body text color"=>"#000000","Caption color"=>"#FFFFFF","Width"=>"200","Height"=>"-1",); $hint_for_invis=TRUE; $location_label='Location'; $cal_cspacing='0'; $cal_size='3'; $cal_monthview_desc_as_ol=true; $def_view_param=1; if($def_view_param==2) {$def_view=3;} elseif($def_view_param==3) {$def_view=6;} elseif($def_view_param==4) {$def_view=9;} elseif($def_view_param==5) {$def_view=12;} else {$def_view=1;} $em_enabled=FALSE; //event manager $em_show_participants= FALSE; $rss_settings=array("Title"=>"Type title here...","Description"=>"Type description here...","Language"=>"en-us","Copyright"=>"","Managing editor"=>"","Webmaster"=>"","Category"=>"","Category domain"=>"","Cloud domain"=>"","Cloud port"=>"","Cloud path"=>"","Cloud reg proc"=>"","Cloud protocol"=>"","TTL"=>"","Rating"=>"","Skip hours"=>"","Skip days"=>"","Text input title"=>"","Text input description"=>"","Text input name"=>"","Text input link"=>"","Image"=>""); $max_items_in_rss=0; $max_lines_in_rss_desc=0; $hide_expired_in_rss=true; $include_date_in_rss_desc=false; $page_charset='iso-8859-1'; $utf_fl=(strpos(strtolower($page_charset),'utf')!==false?true:false); $db_fields_events='"Id","Short_description","Category","Details","Start_date","End_date","Location"'.$f_lf; //%%HIDDEN,%%DLINE,%%USER-Loc; %%TEMPLATE1%%-Decs $db_fields_recur= '"Id","Short_description","Category","Details","Start_date","End_date","Location","recurType","repeatEvery","repeatPeriod","stopAfter"'.$f_lf; $db_fields_reg='"Event_id","User","Timestamp","Notes"'.$f_lf; $css_day1='day1'; $css_day2='day2'; $css_day3='day3'; $css_mday1='mday1'; $css_mday2='mday2'; $css_mday3='mday3'; $css_currday='currday'; $css_mcurrday='mcurrday'; $css_calh1='calh1'; $css_calh2='calh2'; $css_calurl='calurl'; $css_desc='desc'; $css_date='date'; $css_details='details'; $cal_css=''); $hours12_array=array('NA','1','2','3','4','5','6','7','8','9','10','11','12'); $hours_array=array('NA','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','0'); $min_array=array('00','05','10','15','20','25','30','35','40','45','50','55'); $period_list=array('This Week','This Month','This Quarter','This Year','Next Week','Next 7 Days','Next 30 Days','Next Month','Next Quarter','Next Year','All Events'); $repeatPeriod_list=array('0'=>'Year','1'=>'Month','2'=>'Week'); $month_name=$f_month_names; $day_name=$f_day_names; $lang_l=array(); $lg_=''; $lg_1=''; $available_lang_sets=array('BG'=>'Bulgarian','CS'=>'Czech','NL'=>'Dutch','EN'=>'English','FR'=>'French','DE'=>'German','HE'=>'Hebrew','HU'=>'Hungarian','IT'=>'Italian','NO'=>'Norwegian','PL'=>'Polish','PT'=>'Portuguese','RU'=>'Russian','SL'=>'Slovenian', 'ES'=>'Spanish', 'SK'=>'Slovak'); $all_settings=f_read_file($cal_settings_fname); update_language_set(); $admin_emails='info@hardans.com'; $admin_emails=(get_magic_quotes_gpc()? stripslashes($admin_emails): $admin_emails); $admin_emails_array=explode(";", $admin_emails); $admin_email=$admin_emails_array[0]; $mails_list=array('EA'=>'Event Announcement','ECA'=>'Event Change Announcement','ER'=>'Event Reminder','AG'=>'Agenda','RConf'=>'Registration Confirmation','RCancel'=>'Registration Cancelation','RChange'=>'Registration Change','GE'=>'Generic'); $RConf_subject="Registration Confirmation for %short_description%"; $RConf_message="Dear %name% %sirname%,".$f_br.$f_br."This e-mail confirms your registration for the following event:".$f_br."Event Name: %short_description%".$f_br."Category: %category%".$f_br."Details: %details%".$f_br."Location: %location%".$f_br."Date(s): %date%".$f_br."Time: %time%".$f_br.$f_br."Your registration info:".$f_br."Date: %register_date%".$f_br."Notes: %notes%".$f_br.$f_br."For further information contact:".$f_br.$admin_email; $RCancel_subject="Registration Cancelation for %short_description%"; $RCancel_message="Dear %name% %sirname%,".$f_br.$f_br."This e-mail confirms your cancelation for the following event:".$f_br."Event Name: %short_description%".$f_br."Category: %category%".$f_br."Details: %details%".$f_br."Location: %location%".$f_br."Date(s): %date%".$f_br."Time: %time%".$f_br.$f_br."Your registration info:".$f_br."Date: %register_date%".$f_br."Notes: %notes%".$f_br.$f_br."For further information contact:".$f_br.$admin_email; $RChange_subject="Registration Change for %short_description%"; $RChange_message="Dear %name% %sirname%,".$f_br.$f_br."This e-mail confirms your registration change for the following event:".$f_br."Event Name: %short_description%".$f_br."Category: %category%".$f_br."Details: %details%".$f_br."Location: %location%".$f_br."Date(s): %date%".$f_br."Time: %time%".$f_br.$f_br."Your registration info:".$f_br."Date: %register_date%".$f_br."Notes: %notes%".$f_br.$f_br."For further information contact:".$f_br.$admin_email; $EA_subject="Announcement for %short_description%"; $EA_message="Dear %name% %sirname%,".$f_br.$f_br."You have requested to be informed for '%category%' events. ".$f_br."This e-mail is to announce the following event:".$f_br."Event Name: %short_description%".$f_br."Category: %category%".$f_br."Details: %details%".$f_br."Location: %location%".$f_br."Date(s): %date%".$f_br."Time: %time%".$f_br.$f_br."If you want to register for this event, visit our site at %calendarurl%.".$f_br."Deadline for registration: %deadline%".$f_br.$f_br."For further information contact:".$f_br.$admin_email; $ECA_subject="Event Change Announcement for %short_description%"; $ECA_message="Dear %name% %sirname%,".$f_br.$f_br."You have requested to be informed for '%category%'. ".$f_br."This e-mail is to announce change for the following event:".$f_br."Event Name: %short_description%".$f_br."Category: %category%".$f_br."Details: %details%".$f_br."Location: %location%".$f_br."Date(s): %date%".$f_br."Time: %time%".$f_br.$f_br."If you want to register for this event, visit our site at %calendarurl%.".$f_br."Deadline for registration: %deadline%".$f_br.$f_br."0) { j=l.options.length; } ' .'for(i=0; i0) { j=r.options.length; } ' .'for(i=0; i'; $js_innova= << MSG; $innova_def= << var oEdit1=new InnovaEditor("oEdit1");oEdit1.width="100%";oEdit1.height="350px";oEdit1.btnPrint=false;oEdit1.useTab=false; oEdit1.btnPreview=false;oEdit1.btnPaste=false;oEdit1.btnPasteText=true;oEdit1.btnFlash=true; oEdit1.btnMedia=true;oEdit1.btnSuperscript=true;oEdit1.btnSubscript=true;oEdit1.btnStrikethrough=true;oEdit1.btnClearAll=true;oEdit1.btnSave=false; oEdit1.arrStyle=[["BODY",false,"","font: 12px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;background: #DEBB8D;"],["a",false,"","font: 12px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#804000;margin:0px;"],["p",false,"","text-indent:0px;padding:0px;margin:0px;"],["h1",false,"","font: bold 20px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"],["h2",false,"","font: bold 18px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"],["h3",false,"","font: bold 16px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"],["h4",false,"","font: bold 12px Arial, Helvetica, sans-serif;color:#514326;margin:0px;"],["h5",false,"","font: bold 12px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"],["h6",false,"","font: 12px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"],["h6",false,"","font: 12px 'Comic Sans MS', comic sans MS, verdana, sans-serif;color:#514326;margin:0px;"]]; oEdit1.cmdAssetManager="modalDialogShow('../innovaeditor/assetmanager/assetmanager.php?lang=english&root=../',640,465)"; oEdit1.customColors=["#ff4500","#ffa500","#808000","#4682b4","#1e90ff","#9400d3","#ff1493","#a9a9a9"]; oEdit1.mode="HTMLBody";oEdit1.REPLACE("htmlarea"); MSG; $read_access=false; $browse_with_events=true; $admin_actions=array('addevent','index','mng_settings','setmailing','editevent','delevent','saveevent','mailing','mng_categories','del_category', 'edit_category','add_category','duplicate'); $show_cal_from_outside=array("showcal","showevents","showcaljs","showeventsjs"); function update_language_set() { global $lang_set_fname,$month_name,$day_name,$period_list,$repeatPeriod_list,$f_day_names,$f_month_names,$lang_l, $all_settings,$cal_settings_fname,$lg_1,$lg_,$f_names_lang_sets,$available_lang_sets; $all_settings=f_read_file($cal_settings_fname); $page_lang=f_GFS($all_settings,'',''); if($page_lang!='' && $page_lang!='EZG') $page_lang=$page_lang; elseif(isset($_REQUEST['lang'])) $page_lang=f_strip_tags($_REQUEST['lang']); else $page_lang='EN'; $page_lang=strtoupper($page_lang); if(!array_key_exists($page_lang,$available_lang_sets)) $page_lang='EN'; $lg_1=($page_lang=='EN'?'':'lang='.$page_lang); $lg_=($page_lang=='EN'?'':'&lang='.$page_lang); $lang_set_results=f_read_lang_set($lang_set_fname, $page_lang, 'calendar', $period_list); if(isset($lang_set_results['day_name'])) $day_name=$lang_set_results['day_name']; if(isset($lang_set_results['month_name'])) $month_name=$lang_set_results['month_name']; if(isset($lang_set_results['period_list'])) $period_list=$lang_set_results['period_list']; if(isset($lang_set_results['repeatPeriod_list'])) $repeatPeriod_list=$lang_set_results['repeatPeriod_list']; if(isset($lang_set_results['lang_l'])) $lang_l=$lang_set_results['lang_l']; } function show_calendar($action_id,$ms='') // Calendar User Mode { global $page_id,$cal_template_fname,$db_events_fname,$doc_dir,$s_path,$rel_path,$category_id,$category_name,$month_name, $def_view,$cal_css,$date_params,$lang_l,$lg_,$lg_1,$f_js_end,$f_js_st,$show_cal_from_outside,$f_lf; if($action_id=="show" || in_array($action_id, $show_cal_from_outside)) $flag="user"; else $flag='admin'; $current_date=my_mktime(); $nav_bar_mon=date('n',$current_date); settype($nav_bar_mon,'integer'); $nav_bar_year=date('Y',$current_date); settype($nav_bar_year,'integer'); if(!in_array($action_id,$show_cal_from_outside)) { $data=f_read_file($cal_template_fname); $date_params=f_GFS($data,'%DATEFORMAT(',')%'); $data=str_replace('%DATEFORMAT('.$date_params.')%','',$data); if($flag!='admin') $data=f_build_logged_info($data, $page_id, $rel_path, $s_path, $lg_1); if(strpos($data,'<'.'?')!==false) $data=f_eval_php($data); } $view_type=(isset($_REQUEST['view']))? intval($_REQUEST['view']): $def_view; // set of month/week flag $month_mode=(isset($_GET['mode']) && $_GET['mode']=='month'); $week_mode=(isset($_GET['mode']) && $_GET['mode']=='week'); $mode=(isset($_GET['mode']))? f_strip_tags($_GET['mode']): null; $range_or_period='period'; $range_msg=''; $selected_period=0; if(isset($_REQUEST['period'])) $period=f_strip_tags($_REQUEST['period']); if(isset($period) && ($period==0 || $period==4)) $week_mode=true; if(isset($period) && ($period==1 || $period==7)) $month_mode=true; if(isset($period) && $period==7) $nav_bar_mon=$nav_bar_mon+1; if(isset($period) && $period==2) { if(in_array($nav_bar_mon, array(3,6,9,12))) $nav_bar_mon-=1; elseif(in_array($nav_bar_mon, array(1,4,7,10))) $nav_bar_mon+=1; $view_type=3; } if(isset($period) && $period==8) { if(in_array($nav_bar_mon,array(3,6,9,12))) $nav_bar_mon-=1; elseif(in_array($nav_bar_mon,array(1,4,7,10))) $nav_bar_mon+=1; $nav_bar_mon=$nav_bar_mon+3; if($nav_bar_mon>12) $nav_bar_mon-=12; $view_type=3; } if(isset($period) && $period==3) $view_type=12; if(isset($period) && $period==9) {$nav_bar_year=$nav_bar_year+1;$view_type=12;} if(isset($_POST['range_or_period']) && $_POST['range_or_period']=='range') { $range_or_period='range'; $view_type=$def_view; $month_mode=false; $week_mode=false;} // check for month/year selector if(isset($_GET['mon'])) // on "<<" or ">>" press { $nav_bar_mon=intval($_GET['mon']); $nav_bar_year=intval($_GET['year']); } elseif(isset($_GET['selected_mon'])) // on 'GO' button press - month/year selection { $nav_bar_mon=intval($_GET['selected_mon'])+1; $nav_bar_year=intval($_GET['selected_year']); } elseif(isset($_GET['event_id'])) // search events - needed in EZG search { $event_id=intval($_GET['event_id']); $res_record=db_get_specific_event($db_events_fname,$event_id); $nav_bar_mon=date('n',$res_record['Start_date']); $nav_bar_year=date('Y',$res_record['Start_date']); } if($nav_bar_year<1950) $nav_bar_year=1950; elseif($nav_bar_year>2050) $nav_bar_year=2050; // view type if($view_type==1 || $month_mode || $week_mode) //1-month view { $months=array($nav_bar_mon); $years=array($nav_bar_year); } elseif($view_type==3) //3-months view { if($nav_bar_mon==1) { $months=array(12,1,2); $years=array($nav_bar_year-1,$nav_bar_year,$nav_bar_year); } elseif($nav_bar_mon==12) { $months=array(11,12,1); $years=array($nav_bar_year,$nav_bar_year,$nav_bar_year+1); } else { $months=array($nav_bar_mon-1,$nav_bar_mon,$nav_bar_mon +1); $years=array($nav_bar_year,$nav_bar_year,$nav_bar_year); } } elseif($view_type==6) //6 months view { if($nav_bar_mon<=6) $months=range(1,6); else $months=range(7,12); $years=array($nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year); } elseif($view_type==9) //9 months view { if($nav_bar_mon<=6) $months=range(1,9); else $months=range(4,12); $years=array($nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year); } elseif($view_type==12) //12 months view { $months=range(1,12); $years=array($nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year,$nav_bar_year, $nav_bar_year,$nav_bar_year,$nav_bar_year); } // range & period selection if(!isset($_POST['range_or_period']) && !isset($_GET['period'])) { $fdayperiod_ts=mktime(0,0,0,$months[0],1,$years[0]); $ldayperiod_ts=mktime(23,59,59,$months[count($months)-1],f_days_in_month($months[count($months)-1], $years[count($years)-1]),$years[count($years)-1]); } else { $t=define_range_period($range_or_period,$nav_bar_mon,$current_date); $fdayperiod_ts=$t[0]; $ldayperiod_ts=$t[1]; $selected_period=$period; if(isset($period) && ($period==0 || $period==4)) { $week_mode_st_day=date('j',$fdayperiod_ts); if($period==0 && $week_mode_st_day>date('j',my_mktime())) $nav_bar_mon -=1; } if($range_or_period=='range' && $fdayperiod_ts>$ldayperiod_ts) { $fdayperiod_ts=mktime(0,0,0,$months[0],1,$years[0]); $ldayperiod_ts=mktime(23,59,59,$months[count($months)-1],f_days_in_month($months[count($months)-1], $years[count($years)-1]),$years[count($years)-1]); $range_msg='Start date CAN NOT be > end date'; } } if(isset($_GET['startday'])) $week_mode_st_day=intval($_GET['startday']); // calendar build $events_records=db_get_events_raw($fdayperiod_ts,$ldayperiod_ts,$flag); if(isset($events_records[0]['Category'])) { $category_id_temp=array(); foreach($category_id as $k=>$v) $category_id_temp[]="$v"; $events_records=db_get_events_raw($fdayperiod_ts,$ldayperiod_ts,$flag); } // if category selected if(isset($_GET['category'])) { $category=f_un_esc(f_strip_tags($_GET['category'])); $cat_id=($category=='All categories')?'-1':array_search($category,$category_name); if($cat_id>=0) { foreach($events_records as $k=>$v) { if($category==$v['Category'] || $category==get_category_info($v['Category'],'name')) $temp_records[]=$v; } if(!empty($temp_records)) $events_records=$temp_records; else $events_records=array(); } } $cal_html=($ms!=''?'
'.$ms.'
':'').''; for($i=0; $i)','%CALENDAR_OBJECT%',$data); $data=preg_replace('()','%CALENDAR_EVENTS%',$data); $data=f_obj_div_replacing('%CALENDAR_OBJECT%',$data); $data=f_obj_div_replacing('%CALENDAR_RANGE_SELECTION%',$data); $data=f_obj_div_replacing('%CALENDAR_SELECTION%',$data); $data=f_obj_div_replacing('%CALENDAR_EVENTS%',$data); $data=f_obj_div_replacing('%CALENDAR_EVENTS_INVISIBLE%',$data); $data=str_replace('%CALENDAR_OBJECT%',$cal_html,$data); $data=str_replace('%CALENDAR_SELECTION%',selection_bar($action_id,$nav_bar_mon,$nav_bar_year,$view_type,$mode),$data); $data=str_replace('%CALENDAR_CAT_SELECTION%',categories_selection_bar($action_id,$view_type,$mode,(isset($category)?$category:'')),$data); $data=str_replace('%CALENDAR_CAT_LIST%',category_list_bar($action_id,$view_type,$mode,'ver'),$data); $data=str_replace('%CALENDAR_CAT_LIST_HOR%',category_list_bar($action_id,$view_type,$mode,'hor'),$data); $data=str_replace('%CALENDAR_RANGE_SELECTION%', range_selection_bar($action_id,$range_or_period,$fdayperiod_ts, $ldayperiod_ts,$range_msg,$selected_period),$data); $data=str_replace('%CALENDAR_VIEWTYPE%',viewtype_bar($action_id,$nav_bar_mon,$nav_bar_year,($week_mode||$month_mode?1:$view_type)),$data); if(!$month_mode && !$week_mode) { $data=str_replace('%CALENDAR_NAVIGATION_NEXT%',navigation_bar($action_id,$nav_bar_mon,$nav_bar_year,'next',$view_type),$data); $data=str_replace('%CALENDAR_NAVIGATION_PREV%',navigation_bar($action_id,$nav_bar_mon,$nav_bar_year,'prev',$view_type),$data); if(!isset($_GET['event_id'])) $view_events=view_events($events_records,$fdayperiod_ts,$ldayperiod_ts,$flag,$view_type,$nav_bar_mon,$nav_bar_year); else $view_events=view_events($events_records,0,0,$flag,3,0,0,f_strip_tags($_GET['event_id'])); $data=str_replace('%CALENDAR_EVENTS%',$view_events,$data); } else { $data=str_replace('%CALENDAR_NAVIGATION_NEXT%','',$data); $data=str_replace('%CALENDAR_NAVIGATION_PREV%','',$data); $data=str_replace('%CALENDAR_EVENTS%','',$data); } if($flag=='admin') { $data=str_replace('%CALENDAR_EVENTS_INVISIBLE%',$view_events,$data); // $data=preg_replace('//'," ",$data); $data=str_replace(f_GFS($data,'',''),'',$data); } else { $data=str_replace('%CALENDAR_EVENTS_INVISIBLE%',"",$data); $data=str_replace('%LINK_TO_ADMIN%',$doc_dir.'centraladmin.php?pageid='.$page_id.'&indexflag=index'.$lg_,$data); } if($flag=='admin') { $menu=build_admin_menu($action_id,$view_type,$nav_bar_mon,$nav_bar_year); $data=str_replace(f_GFSAbi($data,''),'',$data); if(strpos($data,'')!==false) $data=str_replace('',''.$menu,$data); else { $data=str_replace(array(''); $body_part=substr($pattern, 0, strpos($pattern,'>')+1); $data=str_replace($body_part,$body_part.$menu,$data); } } $data=str_replace('',$cal_css.$f_lf.'',$data); print $data; } else { if($action_id=="showcal" || $action_id=="showcaljs") { $data=$cal_html;} else { $data=view_events($events_records,$fdayperiod_ts,$ldayperiod_ts,$flag,$view_type,$nav_bar_mon,$nav_bar_year);} if($action_id=="showcal" || $action_id=="showevents") { print '' .'' .'Calendar'.$f_lf.$cal_css.$f_lf .''.$data.''; } else { print "document.write('".$data."');"; } } } function category_list_bar($action_id,$view_type,$mode,$direction='ver',$param='') { global $s_path,$lang_l,$category_name,$css_calurl,$category_color,$f_br; $output=''; foreach($category_name as $k=>$v) { $va=f_un_esc($v); //$records_per_cat=$cat_allocation[$k]; $count=count($records_per_cat); if($param=='') { $output.="".$va."".($direction=='hor'?' ':$f_br); } else { //$c=' ('.$count.")"; $parsed_line=str_replace(array('%title%','%Title%','%TITLE%'),array($va,ucfirst($va),strtoupper($va)),$param); $parsed_line=str_replace(array('%name%','%Name%','%NAME%'),array($va,ucfirst($va),strtoupper($va)),$parsed_line); $parsed_line=str_replace('%category_color%',$category_color[$k],$parsed_line); $output.=str_replace('%item_url%',$s_path."?category=".urlencode($va),$parsed_line); } } return $output; } function define_range_period($range_or_period,$nav_month,$current_date) { global $month_name,$f_day_ofweek; $res=array(); $current_day=date('j',$current_date); settype($current_mon,'integer'); $current_mon=date('n',$current_date); settype($current_day,'integer'); $current_year=date('Y',$current_date); settype($current_year,'integer'); $period=f_strip_tags($_REQUEST['period']); $days_in_curr_mon=f_days_in_month($current_mon, $current_year); if($period==8 || $period==2) { $current_mon=$nav_month; settype($current_mon,'integer'); } if($range_or_period=='range') { $mon_from=array_search(f_strip_tags($_POST['monthFrom']),$month_name)+1; $mon_to=array_search(f_strip_tags($_POST['monthTo']),$month_name)+1; $fdayperiod_ts=mktime(0,0,0,$mon_from,intval($_POST['dayFrom']),intval($_POST['yearFrom'])); $ldayperiod_ts=mktime(23,59,59,$mon_to,intval($_POST['dayTo']),intval($_POST['yearTo'])); } else { $today_ts_st=mktime(0,0,0,$current_mon,$current_day,$current_year); $today_ts_end=mktime(23,59,59,$current_mon,$current_day,$current_year); $w_day=date('w',$current_date); settype($w_day,'integer'); $w_day_m=date('N',$current_date); settype($w_day_m,'integer'); if($period==0) //'This Week' { if($f_day_ofweek==1) {$d_offset_st=$w_day; $d_offset_end=6-$w_day;} else {$d_offset_st=($w_day_m>1?$w_day_m-1:$w_day_m); $d_offset_end=7-$w_day_m;} if(($current_day-$d_offset_st)<0 || ($current_day+$d_offset_end)>$days_in_curr_mon) { if(($current_day-$d_offset_st)<=0) { if($current_mon==1) { $st_m=12; $st_y=$current_year-1; } else { $st_m=$current_mon-1; $st_y=$current_year; } $st_d=($current_day-$d_offset_st)+f_days_in_month($st_m, $st_y); $end_d=$current_day+$d_offset_end; $end_m=$current_mon; $end_y=$current_year; } else { $st_d=$current_day-$d_offset_st; $st_m=$current_mon; $st_y=$current_year; if($current_mon==12) { $end_m=1; $end_y=$current_year+1; } else { $end_m=$current_mon+1; $end_y=$current_year; } $end_d=($current_day+$d_offset_end)-$days_in_curr_mon; } } else { $st_m=$current_mon; $st_d=$current_day-$d_offset_st; $st_y=$current_year; $end_m=$current_mon; $end_d=$current_day+$d_offset_end; $end_y=$current_year; } } elseif($period==1) //'This Month' { $st_m=$current_mon; $st_d=1; $st_y=$current_year; $end_m=$current_mon; $end_d=$days_in_curr_mon; $end_y=$current_year; } elseif($period==2) //This Quarter' { if($current_mon==1) { $st_m=12; $st_d=1; $st_y=$current_year-1; $end_m=2; $end_d=f_days_in_month(2, $current_year); $end_y=$current_year;} elseif($current_mon==12) { $st_m=11; $st_d=1; $st_y=$current_year; $end_m=1; $end_d=f_days_in_month(1, $current_year+1); $end_y=$current_year+1;} else { $st_m=$current_mon-1; $st_d=1; $st_y=$current_year; $end_m=$current_mon+1; $end_d=f_days_in_month($current_mon+1, $current_year); $end_y=$current_year;} } elseif($period==3) //'This Year' { $st_m=1; $st_d=1; $st_y=$current_year; $end_m=12; $end_d=f_days_in_month(12, $current_year); $end_y=$current_year; } elseif($period==4) //'Next Week' { $current_day+=7; if($current_day>$days_in_curr_mon) { if($current_mon==12) { $current_mon=1; $current_year+=1; } else { $current_mon+=1; } } if($f_day_ofweek==1) { $d_offset_st=$w_day; $d_offset_end = 6-$w_day; } else { $d_offset_st=($w_day_m>1?$w_day_m-1:$w_day_m); $d_offset_end = 7-$w_day_m; } if(($current_day-$d_offset_st)<0 || ($current_day+$d_offset_end)>$days_in_curr_mon) { if(($current_day-$d_offset_st)<=0) { if($current_mon==1) { $st_m=12; $st_y=$current_year-1; } else { $st_m=$current_mon-1; $st_y=$current_year; } $st_d=($current_day-$d_offset_st)+f_days_in_month($st_m, $st_y); $end_d=$current_day+$d_offset_end; $end_m=$current_mon; $end_y=$current_year; } else { $st_d=$current_day-$d_offset_st; $st_m=$current_mon; $st_y=$current_year; if($current_mon==12) { $end_m=1; $end_y=$current_year+1; } else { $end_m=$current_mon+1; $end_y=$current_year; } $end_d=($current_day+$d_offset_end)-$days_in_curr_mon; } } else { $st_m=$current_mon; $st_d=$current_day-$d_offset_st; $st_y=$current_year; $end_m=$current_mon; $end_d=$current_day+$d_offset_end; $end_y=$current_year; } } elseif($period==5) //'Next 7 Days' { $st_m=$current_mon; $st_d=$current_day; $st_y=$current_year; if(($current_day+7)>$days_in_curr_mon) { if($current_mon==12) { $end_m=1; $end_y=$current_year+1; } else { $end_m=$current_mon+1; $end_y=$current_year; } $end_d=($current_day+7)-$days_in_curr_mon; } else { $end_m=$current_mon; $end_d=$current_day+7; $end_y=$current_year; } } elseif($period==6) //'Next 30 Days' { $st_m=$current_mon; $st_d= $current_day; $st_y=$current_year; if(($current_day+30)>$days_in_curr_mon) { if($current_mon==12) { $end_m=1; $end_y=$current_year+1; } else { $end_m=$current_mon+1; $end_y=$current_year; } $end_d=($current_day+30)-$days_in_curr_mon; if($end_d>f_days_in_month($end_m, $end_y)) { $end_m=$end_m+1; $end_y=$end_y; $end_d=$end_d-f_days_in_month($end_m, $end_y);} } else { $end_m=$current_mon; $end_d=$current_day+30; $end_y=$current_year; } } elseif($period==7) //'Next Month' { $offset_m=($current_mon==12? 1: $current_mon+1); $offset_y=($current_mon!=12? $current_year:$current_year+1); $st_m=$offset_m; $st_d=1; $st_y=$offset_y; $end_m=$offset_m; $end_d=f_days_in_month($offset_m, $offset_y); $end_y=$offset_y; } elseif($period==8) //'Next Quarter' { if($current_mon==1) { $st_m=12; $st_d=1; $st_y=$current_year-1; $end_m=2; $end_d=f_days_in_month(2, $current_year); $end_y=$current_year;} elseif($current_mon==12) { $st_m=11; $st_d=1; $st_y=$current_year; $end_m=1; $end_d=f_days_in_month(1, $current_year+1); $end_y=$current_year+1;} else { $st_m=$current_mon-1; $st_d=1; $st_y=$current_year; $end_m=$current_mon+1; $end_d=f_days_in_month($current_mon+1, $current_year); $end_y=$current_year;} } elseif($period==9) //'Next Year' { $st_m=1; $st_d=1; $st_y=$current_year+1; $end_m=12; $end_d=f_days_in_month(12, $current_year+1); $end_y=$current_year+1; } if($period!=10) { $fdayperiod_ts=mktime(0, 0, 0, $st_m, $st_d, $st_y); $ldayperiod_ts=mktime(23, 59, 59, $end_m, $end_d, $end_y); } else { $fdayperiod_ts=0; $ldayperiod_ts=0; }//'ALL events' } $res=array($fdayperiod_ts, $ldayperiod_ts); return $res; } function edit_event($action_id) // Edit Event Screen { global $db_events_fname,$db_recur_fname,$def_view,$f_max_chars,$use_editor,$js_innova,$cal_template_fname; $output=""; if(isset($_GET['Id'])) { $event_id=f_strip_tags($_GET['Id']); $view_type=(isset($_GET['view']))?intval($_GET['view']):$def_view; $event_record=db_get_specific_event($db_events_fname,$event_id); $recur_record=db_get_specific_event($db_recur_fname,$event_id); if(!empty($recur_record)) { $event_record['event_frequency']= 'repeating'; $event_record['repeatPeriod']= $recur_record['repeatPeriod']; //$record['repeatEvery'] = $_POST['repeatEvery']; //$record['stopAfter'] = $_POST['stopAfter']; } if(isset($_GET['mon'])) { $menu=build_admin_menu($action_id,$view_type,intval($_GET['mon']),intval($_GET['year'])); } else { $menu.=build_admin_menu($action_id); } if(isset($_GET['mon'])) { $output=edit_event_form($event_record,$view_type,intval($_GET['mon']),intval($_GET['year'])); } else { $output=edit_event_form($event_record,$view_type); } $output=f_fmt_admin_screen($output, $menu); } $output=my_fmt_in_template($output); if($use_editor==true){$output=str_replace(array('',''),' '.$js_innova.'',$output);} print $output; } function add_event($action_id) { global $def_view,$use_editor,$js_innova, $cal_template_fname; $view_type=(isset($_GET['view']))? intval($_GET['view']): $def_view; $current_date=my_getdate(); $mday=(isset($_GET['mday'])? intval($_GET['mday']): $current_date['mday']); $mon=(isset($_GET['mon'])? intval($_GET['mon']): $current_date['mon']); $year=(isset($_GET['year'])? intval($_GET['year']): $current_date['year']); $output=add_event_form($mon,$mday,$year,$view_type); $output=f_fmt_admin_screen($output, build_admin_menu($action_id,$view_type,$mon,$year)); $output=my_fmt_in_template($output); if($use_editor==true) {$output=str_replace(array('',''),' '.$js_innova.'',$output);} print $output; } function save_event($action_id) // Save Event (add/edit) { global $s_path,$db_events_fname,$db_fields_events,$db_recur_fname,$db_fields_recur,$f_max_chars,$f_lf,$page_id; global $time_format,$def_view,$f_demo_mode,$month_name,$lang_l,$script_dir,$doc_dir, $cal_template_fname; global $thispage_id,$EA_message,$EA_subject,$em_enabled,$use_editor,$js_innova,$db_reg_fname, $f_br; if(!isset($_POST['Id'])) { $uniqueid=md5(uniqid(mt_rand(),true)); $data['Id']=$uniqueid; } //add event foreach($_POST as $k=>$v) { if($k=='flagedit' || $k=='flagadd') {continue;} $data[$k]=trim($v);} $view_type=(isset($_GET['view']))? intval($_GET['view']): $def_view; if(isset($_POST['Save']) || isset($_POST['savetemplate']) || isset($_POST['add_category'])) { $start_mon=$data['Start_month']+1; // 'start' and 'end' date as Unix timestamps $end_mon=$data['End_month']+1; if($data['Start_hour']!='NA') { settype($data['Start_hour'],'integer'); if($time_format==12) $start_hour=($data['Start_ampm']=='AM'?$data['Start_hour']:($data['Start_hour']+12)); else $start_hour=$data['Start_hour']; if($data['End_hour']=='NA') $end_date=mktime($start_hour,$data['Start_min'],0,$end_mon,$data['End_day'],$data['End_year']); else { settype($data['End_hour'],'integer'); if($time_format==12) $end_hour=($data['End_ampm']=='AM'? $data['End_hour']: ($data['End_hour']+12)); else $end_hour=$data['End_hour']; $end_date=mktime($end_hour,$data['End_min'],0,$end_mon,$data['End_day'],$data['End_year']); } $start_date=mktime($start_hour,$data['Start_min'],0,$start_mon,$data['Start_day'],$data['Start_year']); } else { $start_date=mktime(0,0,0,$start_mon,$data['Start_day'],$data['Start_year']); $end_date=mktime(0,0,0,$end_mon,$data['End_day'],$data['End_year']); } $record['Id']=$data['Id']; $record['Short_description']=$data['Short_description']; $record['Category']=$data['Category']; $record['Details']=$data['Details']; $record['Start_date']=$start_date; $record['End_date']=$end_date; $record['Location']=$data['Location']; $st_ts=mktime(0,0,0,$start_mon,$data['Start_day'],$data['Start_year']); $end_ts=mktime(0,0,0,$end_mon,$data['End_day'],$data['End_year']); if(isset($_POST['Deadline_month'])) $dl_st_ts=mktime(0,0,0,(array_search($_POST['Deadline_month'],$month_name)+1),$_POST['Deadline_day'],$_POST['Deadline_year']); if(isset($_POST['add_category'])) // adding new category { $msg=''; if(empty($_POST['cat_name']) || empty($_POST['cat_color']) || $_POST['cat_color']=='#') {$msg=f_format_err_msg(ucfirst($lang_l['cat err msg']));} else {$new_cat_id=add_edit_category('add'); update_categories_list(); $record['Category']=$new_cat_id;} $result=f_fmt_admin_screen(edit_event_form($record,$view_type), build_admin_menu($action_id).$f_br.$msg); $html_output=my_fmt_in_template($result); if($use_editor==true) { $html_output=str_replace(array('',''),array(' '.$js_innova.' ',' '.$js_innova.' '),$html_output); } print $html_output; exit(); } elseif( $st_ts>$end_ts || ($data['Short_description']=='' && !isset($_POST['savetemplate'])) || ($em_enabled && isset($_POST['use_em']) && $dl_st_ts>$st_ts) ) { $record['event_frequency']=f_strip_tags($_POST['event_frequency']); $record['repeatPeriod']=f_strip_tags($_POST['repeatPeriod']); //$record['repeatEvery']=$_POST['repeatEvery']; //$record['stopAfter']=$_POST['stopAfter']; if(isset($_POST['Hiddeninfo'])) $record['HIDDEN']=$_POST['Hiddeninfo']; if(isset($_POST['USER'])) $record['USER']=$_POST['USER']; if($em_enabled && isset($dl_st_ts)) $record['DEADLINE']=$dl_st_ts; //event manager DEADLINE $msg=""; if($record['Short_description']=='') $msg.=$lang_l['short description field is required']; elseif($st_ts>$end_ts) $msg.=$lang_l['start date should not exceed end date']; elseif($dl_st_ts>$st_ts) $msg.=$lang_l['deadline err msg']; $msg.=""; if(!isset($_POST['Id'])) { $temp_arr=array_reverse($record); array_pop($temp_arr); $record=array_reverse($temp_arr); } $menu=build_admin_menu($action_id).$f_br.$msg; if(isset($_GET['mon'])) $result=edit_event_form($record,$view_type,intval($_GET['mon']),intval($_GET['year'])); else $result=edit_event_form($record,$view_type); $result=f_fmt_admin_screen($result, $menu); $html_output=my_fmt_in_template($result); if($use_editor==true) { $html_output=str_replace(array('',''),array(' '.$js_innova.' ',' '.$js_innova.' '),$html_output); } print $html_output; exit(); } elseif($_POST['event_frequency']=='repeating' && ($_POST['repeatPeriod']=='0' && $data['Start_year']!=$data['End_year'] || $_POST['repeatPeriod']=='1' && ($data['Start_year']!=$data['End_year'] || $data['Start_month']!=$data['End_month']) || $_POST['repeatPeriod']=='2' && ($data['Start_year']!=$data['End_year'] || $data['Start_month']!=$data['End_month'] || $data['Start_day']!=$data['End_day'])) ) { $record['event_frequency']=$_POST['event_frequency']; $record['repeatPeriod']=$_POST['repeatPeriod']; if(isset($_POST['Hiddeninfo'])) $record['HIDDEN']=$_POST['Hiddeninfo']; if(isset($_POST['USER'])) $record['USER']=$_POST['USER']; if($em_enabled && isset($dl_st_ts)) $record['DEADLINE']=$dl_st_ts; //event manager DEADLINE $msg=""; if($_POST['repeatPeriod']=='0') $msg.=$lang_l['start year should match end year']; elseif($_POST['repeatPeriod']=='1') $msg.=$lang_l['start year&month should match end year&month']; else $msg.=$lang_l['start date should match end date']; $msg.=""; if (!isset($_POST['Id'])) { $temp_arr=array_reverse($record); array_pop($temp_arr); $record=array_reverse($temp_arr); } $menu=build_admin_menu($action_id).$f_br.$msg; if(isset($_GET['mon'])) $result=edit_event_form($record,$view_type,intval($_GET['mon']),intval($_GET['year'])); else $result=edit_event_form($record,$view_type); $result=f_fmt_admin_screen($result, $menu); $html_output=my_fmt_in_template($result); if($use_editor==true) { $html_output=str_replace(array('',''),array(' '.$js_innova.' ',' '.$js_innova.' '),$html_output); } print $html_output; exit(); } else { if($_POST['event_frequency']=='repeating' &&!isset($_POST['savetemplate'])) { $db_recurring_data=array(); $record_recur=$record; $record_recur['recurType']='1';// 1 - for repeating; 2 - for floating $record_recur['repeatEvery']='1'; //$_POST['repeatEvery']; $record_recur['repeatPeriod']=$_POST['repeatPeriod']; $record_recur['stopAfter']='0'; //$_POST['stopAfter']; $editedrecord_recur_line=prepare_for_write($record_recur); if(isset($_POST['Id']) && filesize($db_recur_fname)>0) { $handle=fopen($db_recur_fname, "r"); $php_start=fgetcsv($handle, 2048); $db_field_names=fgetcsv($handle, $f_max_chars); while ($data=fgetcsv($handle, $f_max_chars)) { if(in_array($_POST['Id'],$data)) {$db_recurring_data=$data; break;} } fclose($handle); } if (!isset($_POST['Id']) || empty($db_recurring_data)) db_add_event($db_recur_fname,$db_fields_recur,$editedrecord_recur_line); else db_edit_event($db_recur_fname,$record['Id'],$editedrecord_recur_line); } if(isset($_POST['Hiddeninfo']) && !empty($_POST['Hiddeninfo'])) { $record['Location'].='%%HIDDEN'.str_replace($f_lf,$f_br,$_POST['Hiddeninfo']).'HIDDEN%%'; } //HIDDEN info if(isset($_SESSION['cur_user']) && !isset($_POST['Id'])) {$record['Location'].='%%USER'.f_get_session_var_str('cur_user').'%%'; }//USER elseif(isset($_POST['USER']) && !empty($_POST['USER']) && isset($_POST['Id'])) {$record['Location'].='%%USER'.$_POST['USER'].'%%'; } if($em_enabled && isset($_POST['use_em']) && isset($_POST['Deadline_month'])) //event manager DEADLINE { $record['Location'].='%%DLINE'.$dl_st_ts.'DLINE%%'; } if(!$use_editor) $record['Details']=str_replace($f_lf,$f_br,$record['Details']); if(isset($_POST['savetemplate'])) { $record['Short_description'].='%%TEMPLATE1%%'; $old_t_data=get_event_template(); if(isset($old_t_data['Id'])) db_delete_event($db_events_fname, $old_t_data['Id']); } $editedrecord_line=prepare_for_write($record); if ($f_demo_mode==true) { print "Your event was not saved. This is a demo!".$f_br.$f_br; } else { if (!isset($_POST['Id'])) db_add_event($db_events_fname,$db_fields_events,$editedrecord_line); else db_edit_event($db_events_fname,$record['Id'],$editedrecord_line); } //if(!isset($thispage_id)) //{ // $re_url = '?action=index'; // foreach($_GET as $k=>$v) { if($k!='action') $re_url .= '&'.$k.'='.$v; } // f_url_redirect($doc_dir.'search.php?action=reindex&pid='.$page_id.'&entryid='.$record['Id'].'&redirect=' // .urlencode(str_replace('../','',$s_path.'?'.$lg_1).$re_url),false); // exit; //} //else { show_calendar($action_id); //} //unset($_POST); } } else // DELETE event { $rec_id=(isset($_GET['Id']))? f_strip_tags($_GET['Id']): $data['Id']; db_delete_event($db_events_fname, $rec_id); db_delete_event($db_recur_fname, $rec_id); if($em_enabled) db_delete_event($db_reg_fname, $rec_id); //if(!isset($thispage_id)) //{ // $re_url = '?action=index'; // foreach($_GET as $k=>$v) { if($k!='action') $re_url .= '&'.$k.'='.$v; } // f_url_redirect($doc_dir.'search.php?action=reindex&pid='.$page_id.'&entryid='.$rec_id.'&redirect=' // .urlencode(str_replace('../','',$s_path.'?'.$lg_1).$re_url),false); // exit; //} //else { show_calendar($action_id); //} } } function update_categories_list() { global $cal_settings_fname,$category_name,$category_id,$category_color,$category_vis,$category_mark,$category_mark_color; $new_category_id=array(); $new_category_name=array(); $new_category_color=array(); $new_category_vis=array(); $new_category_mark=array(); $new_category_mark_color=array(); $file_content=f_read_file($cal_settings_fname); while(strpos($file_content,''); settype($cat_id, 'integer'); $category_info=f_GFS($file_content,'',''); list($name,$color,$vis,$mark,$mark_color)=explode('%%', $category_info); $new_category_id[]=$cat_id; $new_category_name[]=$name; $new_category_color[]=$color; $new_category_vis[]=($vis=='1'?true:false); $new_category_mark[]=$mark; $new_category_mark_color[]=$mark_color; $file_content=str_replace(''.$category_info.'','', $file_content); } if(!empty($new_category_id)) {$category_name=$new_category_name; $category_id=$new_category_id; $category_color=$new_category_color; $category_vis=$new_category_vis; $category_mark=$new_category_mark; $category_mark_color=$new_category_mark_color;} foreach($category_color as $k=>$v) { if(strpos($v,'#')===false) $category_color[$k]='#'.$v; } $file_content=''; } function add_edit_category($flag, $cat_id='') { global $cal_settings_fname, $cal_template_fname, $category_name, $category_id, $category_color, $category_vis, $category_mark,$category_mark_color; clearstatcache(); if($flag!='del' && $flag!='none') { $cat_name=f_strip_tags($_POST['cat_name']); $cat_color=f_strip_tags($_POST['cat_color']); $cat_visible=(isset($_POST['cat_invisible'])?0:1); $cat_mark=f_strip_tags($_POST['cat_mark']); $cat_mark_color=($_POST['mark_color']!='#'?f_strip_tags($_POST['mark_color']):'');} $next_id=false; $file_con=''; if(!file_exists($cal_settings_fname)) { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$cal_settings_fname)); exit; } elseif(!$fp=fopen($cal_settings_fname,'r+')) {print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('DBFILE_NEEDCHMOD',$cal_settings_fname)); exit;} else { flock($fp, LOCK_EX); $fsize=filesize($cal_settings_fname); if($fsize>0) $file_con=fread($fp,$fsize); $tags_arr=array(); $newset_arr=array(); if(strpos($file_con,'$v) { $tags_arr[]='cat_'.$v; $newset_arr[]=$category_name[$k].'%%'.$category_color[$k].'%%'.($category_vis[$k]?1:0).'%%NA'.'%%'; } } if($flag=='add') // when adding category { $next_id=count($category_id); while(in_array($next_id,$category_id)) $next_id++; $tags_arr[]='cat_'.$next_id; $newset_arr[]=$cat_name.'%%'.$cat_color.'%%'.$cat_visible.'%%'.$cat_mark.'%%'.$cat_mark_color; } foreach($tags_arr as $k=>$cat) {$file_con=str_replace("*/ ?>", "<$cat>".$newset_arr[$k]."*/ ?>",$file_con);} if($flag=='edit') // when editing category { $file_con=str_replace(f_GFSAbi($file_con,'',''), ''.$cat_name.'%%'.$cat_color.'%%'.$cat_visible.'%%'.$cat_mark.'%%'.$cat_mark_color.'', $file_con); } elseif($flag=='del') $file_con=str_replace(f_GFSAbi($file_con,'',''),'',$file_con); ftruncate($fp, 0); fseek($fp, 0); if(fwrite($fp,$file_con)===FALSE) {print "Cannot write to file";exit;} flock($fp, LOCK_UN); fclose($fp); } return $next_id; } // --------------- DB functions ------------- function db_add_event($db_fname,$db_fields,$record_line) // add record in db files { global $f_db_first_line,$f_db_last_line,$f_lf,$f_use_linefeed,$cal_template_fname,$prefix; $buf=''; $old_data=''; if(!file_exists($db_fname)) {$handle=@fopen($db_fname,"w"); if($handle) fclose($handle);} clearstatcache(); if(file_exists($db_fname)) { if(!$handle=@fopen($db_fname, "r+")) {print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('DBFILE_NEEDCHMOD',$db_fname)); exit;} flock($handle, LOCK_EX); if(filesize($db_fname)==0) { $buf.=$f_db_first_line. $f_lf. $db_fields. $record_line. $f_db_last_line; } else { $old_data=fread($handle, filesize($db_fname)); if(strpos($old_data, $f_db_first_line)===false) $buf.=$f_db_first_line. $f_lf. $db_fields. $record_line. $f_db_last_line; else $buf.=str_replace($f_db_last_line, $record_line.$f_db_last_line, $old_data); if(ftruncate($handle, 0)===false) {echo "Failed to truncate file --> last update failed"; exit;} fseek($handle, 0); } if(fwrite($handle, $buf)===FALSE) { fwrite($handle, $old_data); echo "Failed to edit file --> last update failed"; exit; } flock($handle, LOCK_UN); fclose($handle); } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_fname)); exit; } } function db_edit_event($db_fname,$event_id,$editedrecord_line,$user='') // edit event record in db files { global $f_db_first_line,$f_db_last_line,$f_lf,$f_max_chars, $cal_template_fname; $data=""; if(file_exists($db_fname)) { if(!$handle=@fopen($db_fname, "r+")) {print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('DBFILE_NEEDCHMOD',$db_fname)); exit;} flock($handle, LOCK_EX); $old_data=fread($handle, filesize($db_fname)); fseek($handle, 0); $php_start=fgetcsv($handle, 2048); $data.=implode(',', array_values($php_start)).$f_lf; while ($result = fgetcsv($handle, $f_max_chars)) { if($user=='' && in_array($event_id, $result)) { $data.=$editedrecord_line; } elseif($user!='' && in_array($event_id, $result) && in_array($user, $result)) { $data.=$editedrecord_line; } //event manager elseif($result[0]==$f_db_last_line) { $data.=$f_db_last_line; } else { $record_line=prepare_for_move($result); $data.=$record_line; } } if(ftruncate($handle, 0)===false) {echo "Failed to truncate file --> last update failed";exit;} fseek($handle, 0); if (fwrite($handle, $data)===FALSE) { fwrite($handle, $old_data); echo "Failed to edit file --> last update failed"; exit; } flock($handle, LOCK_UN); fclose($handle); } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_fname)); exit; } } function db_delete_event($db_fname,$event_id,$user='') // delete record in db files { global $f_lf,$f_db_last_line,$f_max_chars,$cal_template_fname; $data='';$old_data=''; clearstatcache(); if(file_exists($db_fname)) { if(!$handle=@fopen($db_fname, "r+")) {print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('DBFILE_NEEDCHMOD',$db_fname)); exit;} flock($handle, LOCK_EX); if(filesize($db_fname)>0) { $old_data=fread($handle, filesize($db_fname)); fseek($handle, 0); $php_start=fgetcsv($handle, 2048); $data.=implode(',', array_values($php_start)).$f_lf; while($result=fgetcsv($handle, $f_max_chars)) { if($user=='' && in_array($event_id, $result)) { continue; } elseif($user!='' && in_array($event_id, $result) && in_array($user, $result)) { continue; } //event manager elseif($result[0]==$f_db_last_line) { $data.=$f_db_last_line; } else { $record_line=prepare_for_move($result); $data .= $record_line; } } if(ftruncate($handle,0)===false) {echo "Failed to truncate file --> last update failed";exit; } fseek($handle,0); if(fwrite($handle, $data)===FALSE) { fwrite($handle, $old_data); echo "Failed to edit file --> last update failed"; exit; } } flock($handle, LOCK_UN); fclose($handle); } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_fname)); exit; } } function db_get_specific_event($db_fname,$event_id) { global $f_max_chars,$f_db_last_line,$cal_template_fname; $record=array(); $result=array(); if(file_exists($db_fname)) { $handle=fopen($db_fname, "r"); $php_start=fgetcsv($handle, 2048); $db_field_names=fgetcsv($handle, $f_max_chars); while ($data=fgetcsv($handle, $f_max_chars)) { if ($data[0]!=$f_db_last_line) { $record=build_ass_array_record($data,$db_field_names); if($record['Id']==$event_id) { $result=$record; break; } } } fclose($handle); return $result; } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_fname)); exit; } } function db_get_registered($user='',$event_id='') { global $db_reg_fname,$f_db_last_line,$f_max_chars,$f_db_last_line,$cal_template_fname; $result=array(); if(file_exists($db_reg_fname)) { $handle=fopen($db_reg_fname,"r"); $php_start=fgetcsv($handle,2048); $db_field_names=fgetcsv($handle,2048); while($data=fgetcsv($handle,$f_max_chars)) { if ($data[0]!=$f_db_last_line) { if($user!='' && $event_id!='') { if($data[0]==$event_id && $data[1]==$user) { $record=build_ass_array_record($data,$db_field_names); $result=$record; break; } } else { $result[$data[0]][$data[1]]= array('timestamp'=>$data[2],'notes'=> $data[3]); } } } fclose($handle); return $result; } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_reg_fname)); exit; } } function db_get_events_raw($fdayperiod_ts,$ldayperiod_ts,$flag='user',$recur_flag=true) //extract events { global $db_events_fname,$db_recur_fname,$f_db_last_line,$f_max_chars,$cal_template_fname; $result=array(); $recurring_result=array(); if($recur_flag==true && file_exists($db_recur_fname) && $fdayperiod_ts!=0) $recurring_result=db_get_recurring_events($fdayperiod_ts,$ldayperiod_ts,$flag); if(file_exists($db_events_fname)) { if(filesize($db_events_fname)>0) { $handle=fopen($db_events_fname,"r"); $php_start=fgetcsv($handle,2048); $db_field_names=fgetcsv($handle,2048); while($data=fgetcsv($handle,$f_max_chars)) { if ($data[0]!=$f_db_last_line) { $rec=build_ass_array_record($data,$db_field_names); settype($rec['Start_date'], 'integer'); settype($rec['End_date'], 'integer'); if( ($rec['Start_date']>=$fdayperiod_ts && $rec['End_date']<=$ldayperiod_ts) || ($rec['Start_date']<=$fdayperiod_ts && $rec['End_date']>=$fdayperiod_ts) || ($rec['Start_date']<=$ldayperiod_ts && $rec['End_date']>=$ldayperiod_ts) || ($fdayperiod_ts==0) ) { $result[]= $rec; } } } fclose($handle); if(!empty($recurring_result)) $result=array_merge($recurring_result, $result); } return $result; } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_events_fname)); exit; } } function db_get_events($events_records,$fdayperiod_ts,$ldayperiod_ts,$flag='user') //extract events for certain period { global $f_db_last_line, $f_max_chars, $hide_expired, $category_vis, $hide_expired_in_rss; $result=array(); $mktime=my_mktime(); $today_ts=mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); foreach($events_records as $k=>$rec) { settype($rec['Start_date'], 'integer'); settype($rec['End_date'], 'integer'); if( ($rec['Start_date']>=$fdayperiod_ts && $rec['End_date']<=$ldayperiod_ts) || ($rec['Start_date']<=$fdayperiod_ts && $rec['End_date']>=$fdayperiod_ts) || ($rec['Start_date']<=$ldayperiod_ts && $rec['End_date']>=$ldayperiod_ts) || ($fdayperiod_ts==0) ) { if(($hide_expired==false && $fdayperiod_ts!=0 || $flag=='admin') && (!isset($_GET['hidepast']) ||isset($_GET['hidepast']) && $_GET['hidepast']=='false')) // { $result[]= $rec; } elseif($fdayperiod_ts==0 && $hide_expired_in_rss==false) $result[]=$rec; else { if( ($rec['End_date']>=$today_ts) || ($category_vis[get_cat_index($rec['Category'])]==false)) $result[]=$rec; } } //&&(!isset($_GET['hidepast'])||$_GET['hidepast']=='false') } return $result; } function db_get_recurring_events($fdayperiod_ts,$ldayperiod_ts,$flag='user') // extract events for particular period { global $db_recur_fname,$f_db_last_line,$f_max_chars,$hide_expired,$category_vis; $result=array(); $temp_result=array(); $mktime=mktime(); $today_ts=mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); if(file_exists($db_recur_fname) && filesize($db_recur_fname)>0) { $handle=fopen($db_recur_fname, "r"); $php_start=fgetcsv($handle, 2048); $db_field_names=fgetcsv($handle, 2048); while($data=fgetcsv($handle,$f_max_chars)) { if($data[0]!=$f_db_last_line) $temp_result[]=build_ass_array_record($data,$db_field_names); } fclose($handle); foreach($temp_result as $k=>$v) { $s=$v['Start_date']; $e=$v['End_date']; $r_st_n=date('n',$s); settype($r_st_n,'integer'); //recurring event start/end date $r_st_y=date('Y',$s); settype($r_st_y,'integer'); $r_st_j=date('j',$s); settype($r_st_j,'integer'); $r_st_h=date('G',$s); settype($r_st_h,'integer'); $r_st_min=date('i',$s); settype($r_st_min,'integer'); $r_end_n=date('n',$e); settype($r_end_n,'integer'); $r_end_y=date('Y',$e); settype($r_end_y,'integer'); $r_end_j=date('j',$e); settype($r_end_j,'integer'); $r_end_h=date('G',$e); settype($r_end_h,'integer'); $r_end_min=date('i',$e); settype($r_end_min,'integer'); settype($v['Start_date'],'integer'); settype($v['End_date'],'integer'); settype($v['stopAfter'],'integer'); settype($v['repeatEvery'],'integer'); if($v['repeatPeriod']=='0') // year { $st_y=date('Y',$fdayperiod_ts); settype($st_y,'integer'); // for period dates $end_y=date('Y',$ldayperiod_ts); settype($end_y,'integer'); $end_range=$end_y-$st_y; for($i=$st_y; $i<=$end_y; $i++) { $temp_ts=mktime($r_st_h,$r_st_min,0,$r_st_n,$r_st_j,$i); $temp_ts_end=mktime($r_end_h,$r_end_min,0,$r_end_n,$r_end_j,$i); //if($i%$v['repeatEvery']==0 && ($v['stopAfter']==0 || $i<($v['repeatEvery']*$v['stopAfter']))) //{ if($v['Start_date']<$temp_ts && $temp_ts<=$ldayperiod_ts) { if($hide_expired==false || $flag=='admin' || $temp_ts_end>=$today_ts || $category_vis[get_cat_index($v['Category'])]==false) { $v['Start_date']=$temp_ts; $v['End_date']=$temp_ts_end; $result[]=$v; } } //} } } elseif($v['repeatPeriod']=='1') // month { $st_n=date('n',$fdayperiod_ts);settype($st_n,'integer'); // for period dates $end_n=date('n',$ldayperiod_ts);settype($end_n,'integer'); $end_range=$end_n-$st_n; for($i=0;$i<=$end_range;$i++) { if(($st_n+$i)>12) {$new_st_n=$st_n+$i-12;$r_st_y=$r_st_y+1;$r_end_y=$r_end_y+1;} else $new_st_n=$st_n+$i; $temp_ts=mktime ($r_st_h,$r_st_min,0,$new_st_n,$r_st_j,$r_st_y); $temp_ts_end=mktime ($r_end_h, $r_end_min, 0, $new_st_n, $r_end_j, $r_end_y); //if(($st_n+$i-$r_st_n)%$v['repeatEvery']==0 && ($v['stopAfter']==0 || $i<($v['repeatEvery']*$v['stopAfter']))) //{ if($v['Start_date']<$temp_ts && $temp_ts>=$fdayperiod_ts && $temp_ts<=$ldayperiod_ts) { if($hide_expired==false || $flag=='admin' || $temp_ts_end>=$today_ts || $category_vis[get_cat_index($v['Category'])]==false) { $v['Start_date']=$temp_ts; $v['End_date']=$temp_ts_end; $result[]=$v; } } //} } } elseif($v['repeatPeriod']=='2') //week { $r_st_w=date('l',$v['Start_date']); $st_w=date('l',$fdayperiod_ts); // for period dates $st_range=$fdayperiod_ts; $i=0; while($r_st_w!=$st_w) { $i++; $st_range=mktime($r_st_h,$r_st_min,0,$r_st_n,$r_st_j+$i,$r_st_y); $st_w=date('l',$st_range); } $temp_ts=$st_range; $temp_ts_end=mktime($r_end_h,$r_end_min,0,$r_end_n,$r_end_j+$i,$r_end_y); while($st_range<=$ldayperiod_ts) { //if(($st_n+$i-$r_st_n)%$v['repeatEvery']==0 && ($v['stopAfter']==0 || $i<($v['repeatEvery']*$v['stopAfter']))) //{ if($v['Start_date']<$temp_ts && $temp_ts>=$fdayperiod_ts && $temp_ts<=$ldayperiod_ts) { if($hide_expired==false || $flag=='admin' || $temp_ts_end>=$today_ts || $category_vis[get_cat_index($v['Category'])]==false) { $v['Start_date']=$temp_ts; $v['End_date']=$temp_ts_end; $result[]=$v; } } //} $r_n_fixed=date('n',$st_range); settype($r_n_fixed,'integer'); $r_y_fixed=date('Y',$st_range); settype($r_y_fixed,'integer'); $r_j_fixed=date('j',$st_range); settype($r_j_fixed,'integer'); if(($r_j_fixed+7)>f_days_in_month($r_n_fixed, $r_y_fixed)) { $day_offset=$r_j_fixed+7-f_days_in_month($r_n_fixed,$r_y_fixed); if($r_n_fixed==12) {$month_offset=1;$year_offset=$r_y_fixed+1;} else {$month_offset=$r_n_fixed+1;$year_offset=$r_y_fixed;} $temp_ts=mktime($r_st_h,$r_st_min,0,$month_offset,$day_offset,$year_offset); $temp_ts_end=mktime($r_end_h,$r_end_min,0,$month_offset,$day_offset,$year_offset); } else { $temp_ts=mktime($r_st_h,$r_st_min,0,$r_n_fixed,$r_j_fixed+7,$r_y_fixed); $temp_ts_end=mktime($r_end_h,$r_end_min,0,$r_n_fixed,$r_j_fixed+7,$r_y_fixed); } $st_range=$temp_ts; } } } } return $result; } function get_event_template() { global $db_events_fname,$f_max_chars; $event_record=array(); $result_data=array(); if(file_exists($db_events_fname) && filesize($db_events_fname)>0) { $handle=fopen($db_events_fname,"r"); $php_start=fgetcsv($handle,2048); $db_field_names=fgetcsv($handle,2048); while($data=fgetcsv($handle,$f_max_chars)) { if(isset($data[1]) && strpos(urldecode($data[1]),'%%TEMPLATE1%%')!==false) { $data[1]=str_replace('%%TEMPLATE1%%','',$data[1]); $result_data=$data; break; } } fclose($handle); if(!empty($result_data)) $event_record=build_ass_array_record($result_data,$db_field_names); } return $event_record; } //-------------MISC----------------------- function prepare_for_write($data) // prepare event for writing in db { global $f_lf; foreach ($data as $k=>$v) { $temp=trim($v); if($k=='Short_description' || $k=='Details' || $k=='Location' || $k=='Notes') {$data[$k]='"'.urlencode($temp).'"';} else { $data[$k]= '"'.(get_magic_quotes_gpc()?str_replace(",","%2C",$temp):str_replace(array('\\','\'','"',','),array('\\\\','\\\'','\"',"%2C"), $temp)).'"'; } } $line = implode(',', array_values($data)).$f_lf; return $line; } function prepare_for_move($data) // prepare event for moving in db { global $f_lf; foreach ($data as $k=>$v) { $data[$k]='"'.$v.'"'; } $line=implode(',', array_values($data)).$f_lf; return $line; } function build_ass_array_record($value, $key) //data from db files into associative array { global $f_lf; $output=array(); if(!is_array($key)) { $temp=str_replace(array($f_lf,'"'),array('',''),$key); $key=explode(',',$temp);} foreach($key as $k=>$v) { if($v=='Location') { $current_v=urldecode(current($value)); $t=f_GFS($current_v,'%%USER','%%'); //user that has created event $h=f_GFS($current_v,'%%HIDDEN','HIDDEN%%'); //hidden info $d=f_GFS($current_v,'%%DLINE','DLINE%%'); //deadline $output[$v]=str_replace(array('%%USER'.$t.'%%','%%HIDDEN'.$h.'HIDDEN%%','%%DLINE'.$d.'DLINE%%'),array('','',''),$current_v); $output['USER']=$t; $output['HIDDEN']=$h; $output['DEADLINE']=$d; } else { $output[$v]=current($value); } next($value); } return $output; } function get_category_info($search_category,$flag) { global $category_name,$category_color,$category_id; return f_get_category_info($category_name,$category_color,$category_id,$search_category,$flag); } function get_cat_index($cat_id) { global $category_id; settype($cat_id, "integer"); if(in_array($cat_id,$category_id)) { $id=array_search($cat_id,$category_id); } else { $id=1; } return $id; } function format_date($date_ts) { global $date_params,$month_name,$day_name,$utf_fl; $res=''; if($date_params=='') { $res=f_my_substr($month_name[date('n',$date_ts)-1],0,3,$utf_fl).date(' j, Y ',$date_ts).'('.f_my_substr($day_name[date('w',$date_ts)],0,3,$utf_fl).')'; } else { $params=str_replace(array('dddd','ddd','dd','d','mmmm','mmm','mm','m','yyyy','yy'), array('XX3','XX4','d','j','XX2','XX1','m','n','Y','y'),$date_params); $res=date("$params", $date_ts); $res=str_replace('XX1',f_my_substr($month_name[date('n',$date_ts)-1],0,3,$utf_fl),$res); $res=str_replace('XX2',substr($month_name[date('n',$date_ts)-1], 0),$res); $res=str_replace('XX4',f_my_substr($day_name[date('w',$date_ts)],0,3,$utf_fl),$res); $res=str_replace('XX3',substr($day_name[date('w',$date_ts)], 0),$res); } return $res; } function my_getdate() { $current_date=getdate(my_mktime()); return $current_date; } function my_mktime() { return f_tzone_date(mktime()); } function cur_day_check($day,$mon,$year) // calendar current day check { $current_date=my_getdate(); $currday=$current_date['mday']; $currmon=$current_date['mon']; $curryear=$current_date['year']; if($day==$currday && $mon==$currmon && $year==$curryear) {$flag=true;} else {$flag=false;} return $flag; } function season_check($day_bgcolors) { global $category_vis; foreach($day_bgcolors as $k=>$v) { if(array_key_exists($k,array_keys($category_vis, false))) { return true; } else { return false; } } } function num_vis_category($day_bgcolors) { global $category_vis; $new_day_bgcolors=array(); $filter=array(); $filter=array_keys($category_vis,true); foreach($day_bgcolors as $k=>$v) { foreach($filter as $key=>$val) { if($v==get_category_info($val,'color')) {$new_day_bgcolors[]=$v;} } } return $new_day_bgcolors; } function define_colors($mon,$year,$event_records) // define colors for each day in a period { $bg_colors[]=array(); for($i=1; $i<=f_days_in_month($mon, $year); $i++) { $st_i_ts=mktime(0,0,0,$mon,$i,$year); $end_i_ts=mktime(23,59,59,$mon,$i,$year); foreach($event_records as $k=>$v) { if( ($v['Start_date']>=$st_i_ts && $v['End_date']<=$end_i_ts) || ($v['Start_date']<=$st_i_ts && $v['End_date']>=$st_i_ts) || ($v['Start_date']<=$end_i_ts && $v['End_date']>=$end_i_ts) ) { if(strpos(urldecode($v['Short_description']),'%%TEMPLATE1%%')===false) $bg_colors [$i][] = get_category_info($v['Category'],'color'); //category change } } } return $bg_colors; } function define_events($mon,$year,$event_records,$month_mode=false) //define events for each day in a period { global $hint_for_invis,$location_label,$time_format,$category_vis,$em_enabled,$css_calurl,$s_path,$lang_l, $f_br,$f_lf,$month_name, $cal_monthview_desc_as_ol,$f_xhtml_on,$rel_path; $events_perday[]=array(); if($em_enabled) //event manager { $registered=db_get_registered(); $users=f_get_all_users($rel_path,true); } $mktime=my_mktime(); $today_ts=mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); for($i=1; $i<=f_days_in_month($mon,$year); $i++) { $st_i_ts=mktime(0,0,0,$mon,$i,$year); $end_i_ts=mktime(23,59,59,$mon,$i,$year); if($time_format==12) {$t_format='g:ia';$pattern='12:00am';$pattern2='11:59pm';} else {$t_format='G:i';$pattern='0:00';$pattern2='23:59';} foreach($event_records as $k=>$v) { if( ($v['Start_date']>=$st_i_ts && $v['End_date']<=$end_i_ts) || ($v['Start_date']<=$st_i_ts && $v['End_date']>=$st_i_ts) || ($v['Start_date']<=$end_i_ts && $v['End_date']>=$end_i_ts) ) { if($hint_for_invis==true || $category_vis[get_cat_index($v['Category'])]==true) { if(strpos(urldecode($v['Short_description']),'%%TEMPLATE1%%')===false) { $loc_value=f_sth(urldecode($v['Location'])); $desc_value=''.f_sth(urldecode($v['Short_description'])).''.$f_br; $details_value=f_sth_2(urldecode($v['Details'])); if($f_xhtml_on) $details_value=str_replace("
","
",$details_value); //extra info --> time, location, registrtion $extra_info=($loc_value!=''? $f_br.''.$location_label.': '.$loc_value.$f_br:''); if((date($t_format,$v['Start_date'])==date($t_format,$v['End_date']))&& (date($t_format,$v['End_date'])!=$pattern)) $extra_info.="(".date($t_format,$v['Start_date']).')'; elseif(date($t_format,$v['Start_date'])!=date($t_format,$v['End_date']) && date($t_format,$v['Start_date'])!=$pattern && date($t_format,$v['End_date'])!=$pattern2) $extra_info.="(".date($t_format,$v['Start_date'])."-".date($t_format,$v['End_date']).')'; $em_use=($em_enabled && isset($v['DEADLINE']) && !empty($v['DEADLINE'])); if($month_mode && $em_use && !isset($v['recurType']) && $category_vis[get_cat_index($v['Category'])]==true) //event manager { $extra_info.=$f_br.''.ucfirst($lang_l['status']).': '; if($v['Start_date']<=$today_ts) $extra_info.=ucfirst($lang_l['expired']); elseif($v['DEADLINE']>=$today_ts) { $extra_info.=ucfirst($lang_l['open']).$f_br.'['.$lang_l['register'].']'; } else $extra_info.=' '.ucfirst($lang_l['closed']); } $buff=(!$month_mode?''.$desc_value.''.$details_value; $buff.=(!$month_mode?$extra_info.'':'').$f_br; if($month_mode) { $temp_month=str_replace(array('\\"','\\\\',$f_lf,chr(13)), array('"','\\',' ',' '),$buff); $temp_month=str_replace('\'', '\\\'',$temp_month); $buff='
'; if($cal_monthview_desc_as_ol) //:: { $temp_month=htmlspecialchars($temp_month,ENT_QUOTES); $buff.='
'.$desc_value.$extra_info.'
'; } else $buff.='
' .$desc_value.$extra_info.$f_br.$f_br.$temp_month.'
'; } $events_perday[$i][]=$buff; } } } } } return $events_perday; } function build_overlib($caption,$desc,$esc_flag=false) { global $hint_settings; if(!$esc_flag) $overlib=' onmouseover="return overlib(\''.$caption ."',CAPTION,'".$desc."', TEXTCOLOR, '".$hint_settings['Body text color']."',BGCOLOR,'" .$hint_settings['Frame color']."',FGCOLOR,'".$hint_settings['Background color']."', CAPCOLOR,'".$hint_settings['Caption color'] ."',WIDTH,'".$hint_settings['Width']."',HEIGHT,'".$hint_settings['Height'].'\',RIGHT);" onmouseout="nd();"'; else $overlib=" onmouseover=\"return overlib(\'".$caption ."\',CAPTION,\'".$desc."\', TEXTCOLOR, \'".$hint_settings['Body text color']."\',BGCOLOR,\'" .$hint_settings['Frame color']."\',FGCOLOR,\'".$hint_settings['Background color']."\', CAPCOLOR,\'" .$hint_settings['Caption color'] ."\',WIDTH,\'".$hint_settings['Width']."\',HEIGHT,\'".$hint_settings['Height']."\',RIGHT);\" onmouseout=\"nd();\""; return $overlib; } function define_events_by_hours($event_records,$st_i_ts,$end_i_ts,$start_day,$flag='events') // define colors by hour { global $hint_for_invis,$category_vis,$time_format,$location_label,$em_enabled,$css_calurl,$s_path,$lang_l, $f_br,$f_lf,$month_name, $cal_monthview_desc_as_ol,$f_xhtml_on; $res_array[]=array(); $h_array=array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23'); $counter=0; $r_st_j=date('j',$st_i_ts);settype($r_st_j,'integer'); $r_st_h=date('G',$st_i_ts);settype($r_st_h,'integer'); $r_st_min=date('i',$st_i_ts);settype($r_st_min,'integer'); $mktime=my_mktime(); $today_ts=mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); for($i=$start_day; $i<=($start_day+6); $i++) { $r_st_n=date('n',$st_i_ts);settype($r_st_n,'integer'); $r_st_y=date('Y',$st_i_ts);settype($r_st_y,'integer'); $day_offset=$r_st_j+$counter; if($day_offset>f_days_in_month($r_st_n, $r_st_y)) { $day_offset=$r_st_j+$counter-f_days_in_month($r_st_n,$r_st_y); if($r_st_n==12) { $r_st_n=1; $r_st_y=$r_st_y+1;} else { $r_st_n=$r_st_n+1; } } $ids_included=array(); foreach($h_array as $key=>$hour) { $temp_st_ts=mktime($r_st_h+$key, $r_st_min+1, 0, $r_st_n, $day_offset, $r_st_y); $temp_end_ts=mktime($r_st_h+$key+1, $r_st_min-1, 0, $r_st_n, $day_offset, $r_st_y); foreach($event_records as $k=>$v) { $fl=true; if($time_format==12) { $t_format='g:ia'; $pattern='12:00am'; $pattern2='11:59pm'; } else { $t_format='G:i'; $pattern='0:00'; $pattern2='23:59';} if(date($t_format, $v['Start_date'])==$pattern && date($t_format, $v['End_date'])==$pattern) { $v['End_date']=mktime(23,59,59, date('n',$v['End_date']), date('j',$v['End_date']), date('Y',$v['End_date'])); $fl=false;} if(date($t_format,$v['Start_date'])==date($t_format,$v['End_date']) && date($t_format,$v['Start_date'])!=$pattern) { $d=date('j',$v['End_date']); $m=date('n',$v['End_date']); $y=date('Y',$v['End_date']); $v['End_date'] = mktime(23,59,59,$m,$d,$y); } if( (($v['Start_date']>=$temp_st_ts && $v['End_date']<=$temp_end_ts) || ($v['Start_date']<=$temp_st_ts && $v['End_date']>=$temp_st_ts) || ($v['Start_date']<=$temp_end_ts && $v['End_date']>=$temp_end_ts)) && (!$fl || date('G', $v['Start_date'])>=date('G', $temp_st_ts)&& date('G', $v['End_date'])<=date('G', $temp_end_ts) || date('G', $v['Start_date'])<=date('G', $temp_st_ts)&& date('G', $v['End_date'])>date('G', $temp_end_ts) || date('G', $v['Start_date'])>=date('G', $temp_st_ts)&& date('G', $v['End_date'])'.$f_br; $details_value=f_sth_2(urldecode($v['Details'])); if($f_xhtml_on) $details_value=str_replace("
","
",$details_value); $extra_info=($loc_value!=""? "".$location_label.': '.$loc_value.$f_br: ""); if((date($t_format,$v['Start_date'])==date($t_format,$v['End_date']))&& (date($t_format, $v['End_date'])!=$pattern)) $extra_info.="(".date($t_format,$v['Start_date']).')'; elseif(date($t_format, $v['Start_date'])!=date($t_format, $v['End_date']) && date($t_format, $v['Start_date'])!=$pattern && date($t_format, $v['End_date'])!=$pattern2) // if time defined event $extra_info.="(".date($t_format,$v['Start_date'])."-". date($t_format,$v['End_date']).')'; $em_use=($em_enabled && isset($v['DEADLINE']) && !empty($v['DEADLINE'])); if($em_use && !isset($v['recurType']) && $category_vis[get_cat_index($v['Category'])]==true) //event manager { $extra_info.=$f_br.''.ucfirst($lang_l['status']).': '; if($v['Start_date']<=$today_ts) $extra_info.=ucfirst($lang_l['expired']); elseif($v['DEADLINE']>=$today_ts) { $extra_info.=ucfirst($lang_l['open']).$f_br.'[' .$lang_l['register'].']'.$f_br.$f_br; } else {$extra_info.=' '.ucfirst($lang_l['closed']);} } $temp_month=str_replace(array('\\"','\\\\',$f_lf,chr(13)), array('"','\\',' ',' '),$details_value); $temp_month=str_replace('\'', '\\\'',$temp_month); $buff='
'; if(array_search($v['Id'],$ids_included)===false) { if($cal_monthview_desc_as_ol) { $temp_month=htmlspecialchars($temp_month, ENT_QUOTES); $buff.='
'.$desc_value.$extra_info.'
'; } else $buff.='
'.$desc_value.$extra_info.$f_br.$f_br.$temp_month.'
'; $ids_included[]=$v['Id']; } $res_array[$i][$hour][]=$buff; } } } } } $counter += 1; } return $res_array; } // ------------------ HTML functions --------------------------- function bl_fn($class,$more_class='') { return ' class="'.$class.($more_class!=''? " $more_class":'').'"'; } function build_select_category($name,&$data,&$colors,$selected,$size=1) { global $category_id, $f_lf; $r=''; if(is_array($data) && !empty($data)) { $r='\n"; foreach($category_name_temp as $k=>$v) { $output.="
'; $cal_html.=''; // displaying weekday names foreach (($f_day_ofweek==1?$day_name:$day_name_rev) as $k=>$v) { $cal_html.=""; } $cal_html.=($month_mode && !$excl_link_flag? '':'').""; $cal_html.=''; // displaying last days from previous month if($firstday!=0 || ($mon==2 && $days_in_curr_mon==28)) { $days_prev_mon=($mon==1)?f_days_in_month(12,$year):f_days_in_month(($mon-1),$year); if($firstday!=0) { $t=$days_prev_mon-$firstday+1; for($i=0; $i<$firstday; $i++){$cal_html.="";$t++;} } else { $t=$days_prev_mon-6; for($i=0; $i<7; $i++){$cal_html.="";$t++;} $cal_html.=''; } if ($firstday==0 && $mon==2 && $days_in_curr_mon==28) $cal_html.=''; } for($i=1;$i<=$days_in_curr_mon;$i++) // displaying days from selected month { if($cal_pointer>6) { $cal_pointer = 0; if($month_mode && !($cal_js && isset($_GET['link']) && $_GET['link']=='0') ) $cal_html.=''; $cal_html.=''; $row_counter++; } if(array_key_exists(($i), $bg_colors)) { $day_bgcolors=$bg_colors[$i]; $events_per_day=(isset($events_per_period[$i])? implode("",$events_per_period[$i]): ""); if(cur_day_check($i,$mon,$year)) $cal_html.=""; } else { if(cur_day_check($i,$mon,$year)) $cal_html.="'; } $cal_pointer++; } $next_month_days=1; // displaying first days from next month while($cal_pointer<=6) { $cal_html.=""; $next_month_days++; $cal_pointer++; } if($month_mode && !$excl_link_flag) $cal_html.=''; $cal_html.=""; $row_counter++; if($row_counter<6 && !$month_mode) { $cal_html.=""; $cal_pointer=0; while($cal_pointer<=6) { $cal_html.=""; $next_month_days++; $cal_pointer++; } $cal_html.=""; } $cal_html.="
'; if($excl_link_flag) $cal_html.='
'.$month.' '.$year.'
'; else { if($internal_nav) { $rp=($cal_usermode)?'18':'0'; $cal_html.='
'; $cal_html.=(!$month_mode && $cal_size<3 ? f_my_substr($month,0,3,$utf_fl): $month).' ' .$year.'
'; $cal_html.='
'.$nav_prev.'
'; $cal_html.='
'.$nav_next.'
'; } else { $rp=($cal_usermode)?'18':'0'; $cal_html.='
'; $cal_html.=(!$month_mode && $cal_size<3 ? f_my_substr($month,0,3,$utf_fl): $month).' '.$year.'
'; } if($cal_usermode) { $cal_html.='
'; $cal_html.='
'; } } $cal_html.='
".($month_mode?$v:f_my_substr($v,0,1,$utf_fl))." 
$t$t
1) // visibility { if(season_check($day_bgcolors) && count(num_vis_category($day_bgcolors))==1) $clr=current(num_vis_category($day_bgcolors)); else $clr=$category_color[0]; } else $clr=current($day_bgcolors); $cal_html.=(!$month_mode?' style="background:'.$clr.'"':'').'>
'; $overlib='';$hint_title=''; $hint_text=''; if($cal_usermode && !$month_mode) { if($events_per_day!='') { $hint_title=$month_name[date('n',mktime(0,0,0,$mon,$i,$year))-1].date(' j, Y',mktime(0,0,0, $mon,$i,$year)); if($cal_js) { $buff=str_replace(array('\\"','"',$f_lf,chr(13)), array('"','"',' ',' '), $events_per_day); $hint_text=str_replace(array('\\"','"','\'','/',$f_lf,chr(13)),array('"','"','\\\\\\\'','\/',' ',' '),$buff); $overlib=build_overlib($hint_text,$hint_title,true); } else { $buff=str_replace(array('\\"',$f_lf,chr(13)), array('"',' ',' '),$events_per_day); $buff=str_replace(array('\'','\\\\'), array('\\\'','\\'),$buff); $hint_text=htmlspecialchars($buff, ENT_QUOTES); $overlib=build_overlib($hint_text,$hint_title); } } } $mark=''; if($count_bgcolors>=1) { $index=($count_bgcolors==1)?array_search($day_bgcolors[0],$category_color):0; if(isset($category_mark[$index]) && $index!==false && $category_mark[$index]!='NA') { $loffset=($cal_size>2)?$cal_size-2:0; $toffset=($cal_size>4)?$cal_size-4:0; $sz='font-size:'.(14+ ($cal_size)).'px;line-height:'.(17 +$cal_size).'px;left:-'.$cal_size.'px;top:-'.$cal_size.'px;right:-'.$cal_size.'px;'; if(!$month_mode)$sz.='bottom:-'.$cal_size.'px;'; $sz.='vertical-align:middle;margin:0 auto;'; //xxx if(!$cal_usermode) $sz.='cursor:pointer;'; $m_color=(isset($category_mark_color[$index]) && !empty($category_mark_color[$index])? $category_mark_color[$index]:'#ffffff'); $mark='
' .$category_mark[$index].'
'; } } if($cal_usermode) { if($mark=='')$cal_html.='' .$i.''; else $cal_html.=$mark.'
'.$i."
"; } else { $url=$s_path.'?action=addevent'.$url_p.'&mday='.$i.'&view='.$view_type; if($mark!='') $cal_html.=str_replace('
'.$i.""; } $cal_html.=($month_mode? $f_br.''.$events_per_day.'':'')."
"; else $cal_html.=""; if($flag=="admin") { $cal_html.="'.$i.''; } else $cal_html.=$i; $cal_html.='$next_month_days
$next_month_days
"; $cal_html.=(!$month_mode)?'':''; $pginroot=(isset($_GET['root']) && $_GET['root']=='1'); $calinroot=($rel_path==''); if($cal_js) { if($pginroot && !$calinroot) $cal_html=str_replace(array('../','..\/'),'',$cal_html); elseif(!$pginroot && $calinroot) $cal_html=str_replace(array('src="','src="'),array('src="../','src="..\/'),$cal_html); } if((!$cal_js || $pginroot) && $calinroot) $cal_html=str_replace(array('../','..\/'),'',$cal_html); return $cal_html; } //BUILD CALENDAR WEEK TABLE function build_week($events_raw,$action_id_orig,$mon,$year,$flag,$start_day) { global $s_path,$cal_dir,$time_format,$day_name,$month_name,$category_color,$f_day_ofweek,$f_lf,$lg_,$f_br,$f_ct,$cal_cspacing,$css_mday1,$css_day2, $css_mday2,$css_mday3,$css_calh1,$css_calh2,$css_desc,$css_date,$css_details,$week_mode_wh_only,$utf_fl; $action_id=($action_id_orig=='showcaljs')?'show':$action_id_orig; $hours12_array=array('0:00am','1:00am','2:00am','3:00am','4:00am','5:00am','6:00am','7:00am','8:00am','9:00am','10:00am','11:00am','12:00pm', '1:00pm','2:00pm','3:00pm','4:00pm','5:00pm','6:00pm','7:00pm','8:00pm','9:00pm','10:00pm','11:00pm'); $hours_array=array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23'); $h_array=($time_format==12)?$hours12_array:$hours_array; $mode='week'; $url_p=$lg_.'&mon='.$mon.'&year='.$year; settype($start_day,'integer'); $fdaymonth_ts=mktime(0,0,0,$mon,$start_day,$year); if(($start_day+6)>f_days_in_month($mon,$year)) { $start_day_fixed=$start_day+6-f_days_in_month($mon,$year); $ldaymonth_ts=($mon==12)?mktime(23,59,59,1,$start_day_fixed,$year+1):mktime(23,59,59,$mon+1,$start_day_fixed,$year); } else $ldaymonth_ts=mktime(23,59,59,$mon,$start_day+6,$year); $event_records=db_get_events($events_raw,$fdaymonth_ts,$ldaymonth_ts,$flag); $events_per_period=define_events_by_hours($event_records,$fdaymonth_ts,$ldaymonth_ts,$start_day); $bg_colors=define_events_by_hours($event_records,$fdaymonth_ts,$ldaymonth_ts,$start_day,'color'); if($f_day_ofweek==2) { $temp=$day_name[0]; $day_name_rev=$day_name; array_shift($day_name_rev); array_push($day_name_rev,$temp); } $cal_html=''; $cal_html.=''; $cal_html.=""; // displaying weekday names foreach(($f_day_ofweek==1?$day_name:$day_name_rev) as $k=>$v) { $temp_ts = $fdaymonth_ts + 24*60*60*$k; $cal_html.=""; } $cal_html.=""; foreach($h_array as $hour=>$val) { if($week_mode_wh_only==false || $hour>=9 && $hour<=18) { $cal_html.='"; for($d=$start_day; $d<=($start_day+6); $d++) { if(isset($bg_colors[$d][$hour])) { $h_bgcolors = $bg_colors[$d][$hour]; $events_per_day = (isset($events_per_period[$d][$hour])?implode (" ", $events_per_period[$d][$hour]):""); $buff=$events_per_day; $cal_html.="'; else $cal_html.=' '; } else $cal_html.=""; } $cal_html.=""; } } $cal_html.="
'; if($action_id_orig=='showcaljs' && isset($_GET['link']) && $_GET['link']=='0') { $cal_html.='
'.format_date($fdaymonth_ts).' - '.format_date($ldaymonth_ts).'
'; } else { $cal_html.='
'.navigation_bar($action_id,$mon,$year,'prev',1,'internal',$mode,$fdaymonth_ts) .'
'; $cal_html.='
'.format_date($fdaymonth_ts).' - ' .format_date($ldaymonth_ts).'
'; $cal_html.='
'.navigation_bar($action_id,$mon,$year,'next',1,'internal',$mode, $fdaymonth_ts).'
'; $cal_html.='
'; } $cal_html.='
 ".f_my_substr($month_name[date('n',$temp_ts)-1], 0, 3, $utf_fl).' '.date('j',$temp_ts).$f_br.$v."
$val'; if(isset($events_per_period[$d][$hour])) $cal_html.=''.$buff.' 
"; return $cal_html; } //BUILD EVENTS TABLE function view_events($events_raw,$fdayperiod_ts,$ldayperiod_ts,$flag,$view_type,$_mon,$_year,$event_id='',$old_reg_info='',$f_mail_type='', $all_users=array(),$send_to_list=array(),$send_to_group=array(),$short_form=false) { global $rel_path,$s_path,$page_id,$db_events_fname,$cal_dir,$doc_dir,$category_color,$day_name,$month_name,$lang_l,$lg_,$f_lf,$f_br,$f_ct, $time_format,$location_label,$f_db_last_line,$f_max_chars,$category_vis,$hide_expired,$include_hide_button,$read_access,$css_desc,$css_date,$css_details,$css_calurl,$em_enabled,$hint_settings,$em_show_participants,$cal_cspacing,$f_xhtml_on; $events_html=''; $records=array(); $registered=array(); $recur_flag=($flag=='admin')?false:true; $embed_form=($event_id!='')?true:false; $cal_js=(isset($_GET['action'])) && $_GET['action']=='showeventsjs'; $reg_href_url=$s_path; $pginroot=(isset($_GET['root']) && $_GET['root']=='1'); $calinroot=($rel_path==''); if($cal_js) { if(!$calinroot && $pginroot) $reg_href_url=str_replace('../','',$s_path); elseif($calinroot && !$pginroot) $reg_href_url='../'.$s_path; } if($embed_form==false) $records=db_get_events($events_raw,$fdayperiod_ts,$ldayperiod_ts,$flag); else $records[]=db_get_specific_event($db_events_fname,$event_id); $url_p=$lg_.'&mon='.$_mon.'&year='.$_year; $icon_st=' style="background:transparent;text-decoration:none"'; if(!empty($records)) { foreach ($records as $key=>$row) {$name[$key]=$row['Start_date'];} // sorting event records by start_date array_multisort($name,SORT_ASC,$records); if(!$embed_form && $include_hide_button && !$cal_js) //event manager { $hidepast=(isset($_GET['hidepast']) && ($_GET['hidepast']=='true' || $_GET['hidepast']=='1')? $_GET['hidepast']: 'false'); $events_html.='' .'"; } $use_icons=file_exists($cal_dir.'calendar_edit.png'); foreach($records as $k=> $v) { if(strpos(urldecode($v['Short_description']),'%%TEMPLATE1%%')===false) { if($category_vis[get_cat_index($v['Category'])]==true || $flag=="admin") // visibility { $font_color=get_category_info($v['Category'],'color'); //category change $events_html.=""; if($flag=="admin") // if admin screen - Edit/Del options { $events_html.=''; $events_html.=''.$lang_l['edit'].''; else $events_html.='>['.ucfirst($lang_l['edit']).']'; $events_html.=' '.$lang_l['delete'].''; else $events_html.='>['.ucfirst($lang_l['delete']).']'; $events_html.=''; } else $events_html.=' '; $events_html.=''.format_date($v['Start_date']); if(date('n j, Y',$v['Start_date'])==date('n j, Y',$v['End_date'])) $events_html.='' ; // one-day event else $events_html.=' - '.format_date($v['End_date']).''; //multiple-days event if ($time_format==12) { $t_format='g:i A';$pattern='12:00 AM'; } else {$t_format='G:i'; $pattern='0:00'; } if(date($t_format,$v['Start_date'])==date($t_format,$v['End_date']) && date($t_format,$v['Start_date'])==$pattern) //no time { $events_html.=' '; } else { $events_html.=''.date($t_format, $v['Start_date']); if(date($t_format,$v['Start_date'])!=date($t_format,$v['End_date'])) $events_html.=" - ".date($t_format, $v['End_date']); $events_html.=''; } $em_use=($em_enabled && isset($v['DEADLINE']) && !empty($v['DEADLINE'])); if($em_enabled && ($flag=="admin" || $category_vis[get_cat_index($v['Category'])]==true)) { $events_html.=''; $events_html.=($em_use? ucfirst($lang_l['deadline']).': '.format_date($v['DEADLINE']): " ").''; } $events_html.=''; $events_html.="['.$lang_l['mailing'].']'; $events_html.=' ['.$lang_l['duplicate'].']'; $events_html.=''; } else $events_html.='> '; $loc_value=f_sth(urldecode($v['Location'])); $desc_field_value=f_sth(urldecode($v['Short_description'])); $desc_field_value=str_replace('%%TEMPLATE1%%','',$desc_field_value); $details_fiels_value=f_sth_2(urldecode($v['Details'])); if($f_xhtml_on) $details_fiels_value=str_replace("
","
",$details_fiels_value); if($cal_js) { $desc_field_value=str_replace(array('\\"','"','/'),array('"','"','\/'), $desc_field_value); $details_fiels_value=str_replace(array('\\"','"','/'),array('"','"','\/'),$details_fiels_value); } $events_html.=''.$desc_field_value.''; $events_html.=''.($loc_value!=""? $location_label.': '.$loc_value: " ").''; if($em_enabled) //event manager { $events_html.=''; $em_html=' '; if($em_use && !isset($v['recurType']) && ($flag=="user" || $category_vis[get_cat_index($v['Category'])]==true) ) { $mktime=my_mktime(); $today_ts=mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); $em_html=ucfirst($lang_l['status']).': '; if($v['Start_date']<=$today_ts) $em_html.=ucfirst($lang_l['expired']); elseif($v['DEADLINE']>=$today_ts) { $em_html.=ucfirst($lang_l['open']); if((!$embed_form || isset($_GET['event_id'])) && $flag=="user") { $em_html.=' ['.$lang_l['register'].']';} } else $em_html.=ucfirst($lang_l['closed']); if((!$embed_form || isset($_GET['event_id'])) && $flag=="admin") $em_html.=' ['.$lang_l['register'].']'; } $events_html.=$em_html.''; } $events_html.=''; $events_html.=''; if(isset($v['USER']) && !empty($v['USER']) && $flag=="admin") { $events_html.=ucfirst($lang_l['author']).' ['.f_sth(urldecode($v['USER'])).']'; } elseif($flag=="admin") { $events_html.=ucfirst($lang_l['author']).' [admin]'; } $det=f_sth_2(urldecode($v['Details'])); if($f_xhtml_on) $det=str_replace("
","
",$det); $events_html.=''.$det; if($flag=="admin" && isset($v['HIDDEN'])) $events_html.=$f_br.f_sth_2($v['HIDDEN']); $events_html.=''; if($em_enabled) //event manager { $events_html.=''; if($em_use && !isset($v['recurType']) && ($flag=="user" || $category_vis[get_cat_index($v['Category'])]==true)) { $users=f_get_all_users($rel_path,true); $attendee_list=array(); $registered=db_get_registered(); $events_html.=ucfirst($lang_l['total attendee']).': '; if(!empty($registered) && isset($registered[$v['Id']])) { $events_html.=count($registered[$v['Id']]).' '; if($flag=="user" && (!$embed_form || isset($_GET['event_id'])) && $v['Start_date']>$today_ts) $events_html.=$f_br.'['.$lang_l['edit'].'] ['.$lang_l['cancel'].'] '.$lang_l['my registration'].''.$f_br; $events_html.=$f_br; if(count($registered[$v['Id']])>5 && !isset($_GET['event_id'])) { $registered_cut=array_slice($registered[$v['Id']],0,5); } else { $registered_cut=$registered[$v['Id']]; } if($flag=="admin") { foreach($registered_cut as $m=>$n) { $curr_user=$m; $buffer=''; if(isset($users[$curr_user])) { $user_details=$users[$curr_user]['details']; $attendee_list[$curr_user]=f_un_esc(ucfirst($user_details['name']).' '.$user_details['sirname']); $buffer=f_un_esc($user_details['name'].' '.$user_details['sirname'].$f_br.$user_details['email']); $notes_value=f_sth(urldecode($registered[$v['Id']][$curr_user]['notes'])); if(!empty($notes_value)) {$buffer.=$f_br.''.f_sth(ucfirst($lang_l['notes'])).':'.$f_br.$notes_value; } } $events_html.='::'.$curr_user.''; $events_html.=' ['.$lang_l['unregister'].']'.$f_br; } } elseif($read_access || $em_show_participants) { foreach($registered_cut as $m=>$n) { $curr_user=$m; if(isset($users[$curr_user])) { $user_details=$users[$curr_user]['details']; $events_html.='::'.f_un_esc($user_details['name'].' '.$user_details['sirname']).' '.$f_br; } else { $events_html.=':: undefined'.$f_br; } } } if(count($registered[$v['Id']])>5 && !isset($_GET['event_id'])) { $events_html.=''; } } else { $events_html.='0'; } } $events_html.=''; } $events_html.=''; } } } if($em_enabled && $embed_form && $f_mail_type=='' && !isset($_GET['event_id'])) //event manager { $events_html.="'; if($embed_form) { $events_html.=ucfirst($lang_l['notes']).$f_br.' ' .(empty($old_reg_info)?'': '','
'), array($f_lf,$f_lf), $mail_settings[$f_mail_type.'_message']); $events_html.="' .mailing_form($f_mail_type,$def_subject,$def_message,$send_to_group,$send_to_list,$all_users,$v['Category'],$event_id, $short_form).''; } elseif($em_enabled) { $events_html.=" '; } else { $events_html.=" '; } } else { $events_html.=''; $events_html.="'.ucfirst($lang_l['no events']).''; $events_html.=" '; } $events_html=''.$events_html.'
'; if($cal_js) { $events_html=str_replace(array('\''),array('\\\''),$events_html); if($pginroot && !$calinroot) $events_html=str_replace(array('../','..\/'),'',$events_html); elseif(!$pginroot && $calinroot) $events_html=str_replace(array('src="','src="'),array('src="../','src="..\/'),$events_html); } if((!$cal_js || $pginroot) && $calinroot) $events_html=str_replace(array('../','..\/'),'',$events_html); return $events_html; } // BUILD ADD/EDIT EVENT forms function add_event_form($mon,$mday,$year,$view_type) { global $page_id,$s_path,$category_name,$category_color,$month_name,$time_format,$lang_l,$lg_,$f_lf,$f_br,$f_ct,$days_in_month_array, $location_label,$em_enabled,$use_editor,$innova_def,$js_innova,$f_fmt_hidden, $ampm_array,$hours_array,$hours12_array, $min_array,$years_array, $repeatPeriod_list,$rel_path,$f_fmt_star,$f_fmt_input_p,$marks_array; $hidden_value=''; $t_data=get_event_template(); if($time_format==12) $h_array=$hours12_array; else$h_array=$hours_array; if(!empty($t_data)) { $location_value=f_sth(urldecode($t_data['Location'])); $hidden_value=(isset($t_data['HIDDEN'])? urldecode($t_data['HIDDEN']): ''); $hidden_value=str_replace($f_br,$f_lf,$hidden_value); $desc_value=f_sth(urldecode($t_data['Short_description'])); $desc_value=str_replace('%%TEMPLATE1%%','',$desc_value); $details_value= str_replace($f_br, $f_lf, f_sth_2(urldecode($t_data['Details']))); } $output='
'; $table_data=array(); $table_data[]=array($lang_l['short description'].$f_fmt_star,sprintf($f_fmt_input_p,'Short_description',(!empty($t_data)? $desc_value: ''))); $block_flag=(isset($_POST['add_category']) && (empty($_POST['cat_color']) || empty($_POST['cat_name']))); $cat=build_select_category('Category',$category_name,$category_color,$category_name[1]).' '.ucfirst($lang_l['add category']).''.$f_br; $cat.='
'; $cat.=build_add_category_form('', '#', $marks_array[0], '#', '') .''; $table_data[]=array($lang_l['category'],$cat); $tinymice_flag=(strpos($js_innova,'tiny_mce.js')!==false && $use_editor==true); $det=''.($use_editor==true?$innova_def:''); $table_data[]=array($lang_l['details'],$det); $table_data[]=array($location_label,sprintf($f_fmt_input_p,'Location',(!empty($t_data)? $location_value: ''))); $table_data[]=array($lang_l['hidden info'],''); $sd=f_build_select('Start_month',$month_name,$mon-1) .f_build_select('Start_day',$days_in_month_array,$mday,'','value').f_build_select('Start_year',$years_array,$year,'','value'); $sd.=' '.f_build_select('Start_hour',$h_array,$h_array[0], '', 'value').':' .f_build_select('Start_min',$min_array,$min_array[0], '', 'value'); if($time_format==12) $sd.=f_build_select('Start_ampm',$ampm_array,$ampm_array[0], '', 'value'); $table_data[]=array($lang_l['start date'],$sd); $ed=f_build_select('End_month',$month_name,$mon-1).f_build_select('End_day',$days_in_month_array,$mday, '', 'value') .f_build_select('End_year',$years_array,$year, '', 'value'); $ed.=' '.f_build_select('End_hour',$h_array,$h_array[0], '', 'value').':' .f_build_select('End_min',$min_array,$min_array[0], '', 'value'); if($time_format==12) $ed.=f_build_select('End_ampm',$ampm_array,$ampm_array[0], '', 'value'); $table_data[]=array($lang_l['end date'],$ed); if($em_enabled) //event manager { $u_em=' '.ucfirst($lang_l['open reg with dl']).' '.f_build_select('Deadline_month',$month_name,$month_name[$mon-1],'','value') .f_build_select('Deadline_day',$days_in_month_array,$mday,'','value').f_build_select('Deadline_year',$years_array,$year,'', 'value'); $table_data[]=array($lang_l['open reg'],$u_em); } $fr=''.ucfirst($lang_l['once']).''; $fr.=' '.ucfirst($lang_l['repeat every']).' ' .f_build_select("repeatPeriod",$repeatPeriod_list,$repeatPeriod_list[0]); //$output .= 'Repeat every '.f_build_select("repeatPeriod", $repeatPeriod_list, $repeatPeriod_list[0]).' Stop after events. (0- unlimited)'; $table_data[]=array(ucfirst($lang_l['frequency']),$fr); $end=$f_br.''; if(array_key_exists('Id',$event_record)) {$output.=sprintf($f_fmt_hidden,'Id',$event_record['Id']);} if(isset($event_record['USER']) && !empty($event_record['USER'])) {$output.=sprintf($f_fmt_hidden,'USER',f_sth(urldecode($event_record['USER'])));} if($is_template) $output.=sprintf($f_fmt_hidden,'savetemplate',"savetemplate"); $table_data=array(); $table_data[]=array($lang_l['short description'].$f_fmt_star,sprintf($f_fmt_input_p,'Short_description',$desc_value)); $block_flag=(isset($_POST['add_category']) && (empty($_POST['cat_color']) || empty($_POST['cat_name']) || $_POST['cat_name']=='#')); $cat=build_select_category('Category',$category_name,$category_color,(in_array($event_record['Category'],$category_id)?$event_record['Category']:'1')); $cat.=' '.ucfirst($lang_l['add category']).''.$f_br; $cat.='
'; $cat.=build_add_category_form((isset($_POST['cat_name'])?f_strip_tags($_POST['cat_name']):''), (isset($_POST['cat_color'])?f_strip_tags($_POST['cat_color']):'#'), (isset($_POST['cat_mark'])? $_POST['cat_mark']: $marks_array[0]), (isset($_POST['mark_color'])?f_strip_tags($_POST['mark_color']):'#'), (isset($_POST['cat_invisible'])? 'checked="checked"': '')) .''; $table_data[]=array($lang_l['category'],$cat); $tinymice_flag=(strpos($js_innova,'tiny_mce.js')!==false && $use_editor==true); $det=''.($use_editor==true?$innova_def:''); $table_data[]=array($lang_l['details'],$det); $table_data[]=array($location_label,sprintf($f_fmt_input_p,'Location',$location_value)); $table_data[]=array($lang_l['hidden info'],''); $s_d=$event_record['Start_date']; $e_d=$event_record['End_date']; $st_mon=date('n',$s_d); $st_day=date('j',$s_d); $st_year=date('Y',$s_d); $end_mon=date('n',$e_d); $end_day=date('j',$e_d); $end_year=date('Y',$e_d); $st_min=date('i',$s_d); $end_min=date('i',$e_d); if($time_format==12) {$st_hour=date('g',$s_d); $end_hour=date('g',$e_d); $st_ampm=date('A',$s_d); $end_ampm=date('A',$e_d);} else {$st_hour=date('G',$s_d); $end_hour=date('G',$e_d);} $s_t=f_build_select('Start_month',$month_name,$st_mon-1) .f_build_select('Start_day',$days_in_month_array,$st_day,'','value').f_build_select('Start_year',$years_array,$st_year, '', 'value').' '; if($time_format==12) { if($st_hour==$end_hour && $end_hour=='12' && $st_min==$end_min && $end_min=='00' && $st_ampm==$end_ampm && $end_ampm=='AM') {$s_t.=f_build_select('Start_hour',$h_array,$h_array[0], '', 'value'); } else { $s_t.=f_build_select('Start_hour',$h_array,$h_array[$st_hour],'','value'); } } else { if($st_hour==$end_hour && $end_hour=='24' && $st_min==$end_min && $end_min=='00') $s_t.=f_build_select('Start_hour',$h_array,$h_array[0],'','value'); else $s_t.=f_build_select('Start_hour',$h_array,$h_array[$st_hour],'','value'); } $s_t.=f_build_select('Start_min', $min_array, $st_min,'','value'); if($time_format==12) $s_t.=f_build_select('Start_ampm',$ampm_array,$st_ampm,'','value'); $table_data[]=array($lang_l['start date'],$s_t); $e_t=f_build_select('End_month',$month_name,$end_mon-1) .f_build_select('End_day',$days_in_month_array,$end_day, '', 'value').f_build_select('End_year',$years_array,$end_year, '', 'value').' '; if($time_format==12) { if( ($st_hour==$end_hour && $end_hour=='12' && $st_min==$end_min && $end_min=='00' && $st_ampm==$end_ampm && $end_ampm=='AM') || ($st_hour==$end_hour && $st_min==$end_min && $st_ampm==$end_ampm) ) {$e_t.=f_build_select('End_hour',$h_array,$h_array[0],'','value');} else $e_t.=f_build_select('End_hour',$h_array,$h_array[$end_hour],'','value'); } else { if( ($st_hour==$end_hour && $end_hour=='24' && $st_min==$end_min && $end_min=='00') || ($st_hour==$end_hour && $st_min==$end_min) ) {$e_t.=f_build_select('End_hour',$h_array, $h_array[0],'','value');} else $e_t.=f_build_select('End_hour',$h_array,$h_array[$end_hour],'','value'); } $e_t.=f_build_select('End_min',$min_array,$end_min,'','value'); if($time_format==12) $e_t.=f_build_select('End_ampm',$ampm_array,$end_ampm,'','value'); $table_data[]=array($lang_l['end date'],$e_t); if($em_enabled) { $em_use=(isset($event_record['DEADLINE']) && !empty($event_record['DEADLINE'])); $dline=($em_use? $event_record['DEADLINE']: $event_record['Start_date']); $dl_mon=date('n',$dline); $dl_day=date('j',$dline); $dl_year=date('Y',$dline); $u_em=' '.ucfirst($lang_l['open reg with dl']).' '.f_build_select('Deadline_month',$month_name,$month_name[$dl_mon-1], '', 'value').f_build_select('Deadline_day',$days_in_month_array,$dl_day,'','value').f_build_select('Deadline_year',$years_array,$dl_year,'', 'value'); $table_data[]=array($lang_l['open reg'],$u_em); } $fr=''.ucfirst($lang_l['once']).''; $fr.=' '.ucfirst($lang_l['repeat every']).' '.f_build_select("repeatPeriod", $repeatPeriod_list, (isset($event_record['repeatPeriod'])?$event_record['repeatPeriod']:$repeatPeriod_list[0])); $table_data[]=array(ucfirst($lang_l['frequency']),$fr); $end=$f_br.''; $output.="'; $output.="
" ."".$header_text."".$f_br.$f_br."".f_un_esc($user_info['details']['name'].' ' .$user_info['details']['sirname']).$f_br.$f_br.$user_info['details']['email'].$f_br.'
 
'; if(isset($reg_info['Event_id'])) $output.=view_events($event_data,0,0,'user',3,0,0,$id,$reg_info); else $output.=view_events($event_data,0,0,'user',3,0,0,$id); $output.='
"; return $output; } function mailing_form($def_mail,$def_subject,$def_message,$send_to_group,$send_to_list,$all_users,$cat_id,$event_id='',$short_form=false) { global $s_path,$lg_,$lang_l,$category_id,$mails_list,$css_details,$def_view, $f_br,$f_ct; $view_type=(isset($_GET['view']))? intval($_GET['view']): $def_view; $current_date=getdate(); $mon=(isset($_GET['mon'])? intval($_GET['mon']): $current_date['mon']); $year=(isset($_GET['year'])? intval($_GET['year']): $current_date['year']); $url_p=$lg_.'&mon='.$mon.'&year='.$year; $jstring="onchange=\"document.location='".$s_path."?action=mailing&Id=$event_id&view=$view_type" .$url_p."&type=' + this.options[this.selectedIndex].value;\" style='width:100%;' "; $jstring2="onchange=\"document.location='".$s_path."?action=".($short_form?'emregister':'mailing') ."&view=$view_type" .$url_p."&Id=$event_id&type=$def_mail&send_to=' + this.options[this.selectedIndex].value;\" "; $output=$f_br."
"; $output.="'; if($short_form==false) { $output.=""; $output.=""; $output.=""; } $output.=""; if($short_form==false) $output.=""; $output.="
".($short_form? ''.ucfirst($lang_l['register']).'': f_fmt_admin_title(ucfirst($lang_l['mailing']))).$f_br.$f_br.'
".ucfirst($lang_l['mail type'])."".$f_br; $output.=f_build_select("type", $mails_list, $def_mail, '', 'key',$jstring).$f_br.$f_br."
".ucfirst($lang_l['mail subject'])."".$f_br."
".ucfirst($lang_l['message'])."".$f_br."".$f_br."
"; $output.="".ucfirst($short_form? $lang_l['users']: $lang_l['send to']).""; $output.="".$f_br.$f_br; $output.=""; $output.="
".ucfirst($lang_l['users list'])."".$f_br.""; $output.="".ucfirst($lang_l['selected'])."".$f_br."
".$f_br."".ucfirst($lang_l['file attachment'])."".$f_br."
".$f_br."
"; return $output; } function get_mailing_settings($tag) { global $EA_subject,$EA_message, $ECA_subject,$ECA_message, $ER_subject,$ER_message, $AG_subject,$AG_message, $cal_settings_fname; global $RConf_subject,$RConf_message, $RCancel_subject,$RCancel_message, $RChange_subject,$RChange_message, $GE_subject,$GE_message; $settings=array('EA_subject'=>$EA_subject, 'EA_message'=>$EA_message, 'ECA_subject'=>$ECA_subject, 'ECA_message'=>$ECA_message, 'ER_subject'=>$ER_subject, 'ER_message'=>$ER_message, 'AG_subject'=>$AG_subject, 'AG_message'=>$AG_message, 'RConf_subject'=>$RConf_subject, 'RConf_message'=>$RConf_message, 'RCancel_subject'=>$RCancel_subject, 'RCancel_message'=>$RCancel_message, 'RChange_subject'=>$RChange_subject, 'RChange_message'=>$RChange_message, 'GE_subject'=>$GE_subject, 'GE_message'=>$GE_message); $set_raw=f_read_tagged_data($cal_settings_fname, $tag); if(strpos($set_raw,'')!==false) $settings[$tag.'_subject']=f_sth(f_GFS($set_raw,'','')); if(strpos($set_raw,'')!==false) $settings[$tag.'_message']=f_sth_2(f_GFS($set_raw,'','')); return $settings; } function build_add_category_form($cat_name, $cat_color, $cat_mark, $cat_mark_color, $invis_checked, $append_id='') { global $lang_l,$f_br,$f_ct,$s_path,$rel_path,$f_ftm_title,$marks_array; $output='
'.sprintf($f_ftm_title,ucfirst($lang_l['name'])).'' .'
'.sprintf($f_ftm_title,ucfirst($lang_l['mark'])).'
' .f_build_select('cat_mark', $marks_array, $cat_mark,' title="'.ucfirst($lang_l['mark msg']).'" ', 'value').'
' .'
'.sprintf($f_ftm_title,ucfirst($lang_l['category'])) .f_color_picker('cat_color'.$append_id,$rel_path).'
' .'' .'' .'' .'
'; return $output; } //EVENT MANAGER functions function parse_event_info($username,$message,$ev_info,$user_info,$reg_info='') //event manager { global $time_format; $content=str_replace("%short_description%",f_sth(urldecode($ev_info['Short_description'])),$message); $content=str_replace("%details%",f_sth_2(urldecode($ev_info['Details'])),$content); $content=str_replace("%category%",get_category_info($ev_info['Category'],'name'),$content); $content=str_replace("%location%",f_sth(urldecode($ev_info['Location'])),$content); $st_d=$ev_info['Start_date']; $end_d=$ev_info['End_date']; if(date('n j, Y',$st_d)==date('n j, Y',$end_d)) { $content=str_replace("%date%",format_date($st_d),$content);} else { $content=str_replace("%date%",format_date($st_d).' - '.format_date($end_d),$content); } if($time_format==12) { $t_f='g:i A'; $pattern='12:00 AM'; } else { $t_f='G:i'; $pattern='0:00'; } if(date($t_f,$st_d)==date($t_f,$end_d) && date($t_f,$st_d)==$pattern) {$content=str_replace("%time%",'',$content);} elseif(date($t_f,$st_d)==date($t_f,$end_d) && date($t_f,$st_d)!=$pattern) {$content=str_replace("%time%",date($t_f,$st_d),$content);} else { $content=str_replace("%time%",date($t_f,$st_d)." - ".date($t_f,$end_d),$content);} if(isset($ev_info['DEADLINE']) && !empty($ev_info['DEADLINE'])) $content=str_replace("%deadline%",format_date($ev_info['DEADLINE']),$content); $content=str_replace("%username%",$username,$content); $content=str_replace("%name%",f_un_esc($user_info['name']),$content); $content=str_replace("%sirname%",f_un_esc($user_info['sirname']),$content); $content=str_replace("%email%",$user_info['email'],$content); if(!empty($reg_info)) { $content=str_replace("%notes%",f_sth(urldecode($reg_info['Notes'])),$content); $content=str_replace("%register_date%",format_date($reg_info['Timestamp']),$content); } return $content; } function build_reg_url($event_id) { global $full_path_to_script; return $full_path_to_script.'?event_id='.f_sth($event_id); } function build_reg_subject($event_desc,$mail_subject) { return str_replace("%short_description%", f_sth(urldecode($event_desc)), f_sth($mail_subject)); } function register($action_id, $logged_user) //event manager { global $db_events_fname,$db_reg_fname,$db_fields_reg,$db_recur_fname,$category_vis,$cal_template_fname,$s_path,$lang_l,$lg_,$time_format, $f_lf,$admin_email,$f_br,$css_calurl,$rel_path; $body_section=''; $event_id=(isset($_REQUEST['Id']))? f_strip_tags($_REQUEST['Id']): ''; $user_info=f_get_user($logged_user,$rel_path); // user info $event_info=db_get_specific_event($db_events_fname,$event_id); // event info $reg_info=db_get_registered($logged_user,$event_id); // registration info $mktime=my_mktime(); $today_ts = mktime(0,0,0,date("n",$mktime),date("j",$mktime),date("Y",$mktime)); if(isset($_POST['Id'])) $post_id=f_strip_tags($_POST['Id']); if(isset($_POST['user'])) $post_user=f_strip_tags($_POST['user']); if(isset($_POST['notes'])) $post_notes=f_strip_tags($_POST['notes']); if(f_is_logged('SID_ADMIN')) {$body_section=$f_br.''.ucfirst($lang_l['logged as admin MSG']).''; } elseif($action_id=='register' && isset($_POST['submit'])) // user confirms registration { $mail_settings=get_mailing_settings('RConf'); $reg_record['Event_id']=$post_id; $reg_record['User']=$post_user; $reg_record['Timestamp']=mktime(); $reg_record['Notes']=$post_notes; $register_line=prepare_for_write($reg_record); db_add_event($db_reg_fname,$db_fields_reg,$register_line); $subject=build_reg_subject($event_info['Short_description'],$mail_settings['RConf_subject']); $url=build_reg_url($event_id); $content=parse_event_info($user_info['username'],f_sth_2($mail_settings['RConf_message']),$event_info,$user_info['details'],$reg_record); $content_text=str_replace("%calendarurl%",$url,$content); $content=str_replace("%calendarurl%",''.$url.'',$content); $res=send_mail($content,$content_text,$subject,$user_info['details']['email']); send_mail($content,$content_text,ucfirst($lang_l['notification']).' - '.$subject,$admin_email); show_calendar('show',''.$lang_l['success registered MSG'].''.$f_br.$f_br); exit; } elseif($action_id=='register' && isset($_GET['Id'])) // show registration form { if(isset($reg_info['Event_id'])) { $body_section=$f_br."".ucfirst($lang_l['dear'])." $logged_user, ".$f_br.$f_br."".ucfirst($lang_l['already registered'])."".$f_br.$f_br."".ucfirst($lang_l['details follow']) .":".$f_br."".ucfirst($lang_l['registration date']).": ".format_date($reg_info['Timestamp']).$f_br.ucfirst($lang_l['notes']).": " .f_sth(urldecode($reg_info['Notes']))."".$f_br.$f_br.ucfirst($lang_l['edit registration MSG'])." "; $body_section.='['.ucfirst($lang_l['edit']) .'] ['.ucfirst($lang_l['cancel']).'] '.$lang_l['my registration'].'.'; } else { $recurring=db_get_specific_event($db_recur_fname,$event_id); if(isset($event_info['DEADLINE']) && !empty($event_info['DEADLINE'])&& $event_info['DEADLINE']>=$today_ts) { $action=$s_path.'?action=register'.$lg_; $id=$event_id; $bt_name='submit'; $header_text=ucfirst($lang_l['register event MSG']); $body_section=register_form(array($event_info),$header_text,$action,$id,$user_info,$reg_info,$event_info,$bt_name); } else { $msg_text=""; if(!empty($recurring) || $category_vis[get_cat_index($event_info['Category'])]==false) {$msg_text.=ucfirst($lang_l['register event MSG']); } else { $msg_text.=ucfirst($lang_l['cant register MSG2']); } $msg_text.=''.$f_br.$f_br; show_calendar('show',$msg_text); exit; } } } elseif($action_id=='chregister' && isset($_POST['submit'])) // change registration { if($event_info['Start_date']>$today_ts) { $mail_settings=get_mailing_settings('RChange'); $reg_record['Event_id']=$post_id; $reg_record['User']=$post_user; $reg_record['Timestamp']=intval($_POST['timestamp']); $reg_record['Notes']=$post_notes; $register_line=prepare_for_write($reg_record); db_edit_event($db_reg_fname,$reg_record['Event_id'],$register_line,$reg_record['User']); $subject=build_reg_subject($event_info['Short_description'],$mail_settings['RChange_subject']); $url=build_reg_url($post_id); $content=parse_event_info($user_info['username'],f_sth_2($mail_settings['RChange_message']),$event_info,$user_info['details'],$reg_record); $content_text=str_replace("%calendarurl%", $url, $content); $content=str_replace("%calendarurl%", ''.$url.'', $content); $res=send_mail($content,$content_text,$subject,$user_info['details']['email']); send_mail($content,$content_text,ucfirst($lang_l['notification']).' - '.$subject,$admin_email); $msg_text=$lang_l['success edit MSG']; } else { $msg_text=$lang_l['cant edit MSG']; } show_calendar('show',''.$msg_text.''.$f_br.$f_br); exit; } elseif($action_id=='clregister' && isset($_POST['submit'])) // cancel registration { if($event_info['Start_date']>$today_ts) { $mail_settings=get_mailing_settings('RCancel'); db_delete_event($db_reg_fname,$post_id,$post_user); $subject=build_reg_subject($event_info['Short_description'],$mail_settings['RCancel_subject']); $url=build_reg_url($post_id); $content=parse_event_info($user_info['username'],f_sth_2($mail_settings['RCancel_message']),$event_info,$user_info['details'],$reg_info); $content_text=str_replace("%calendarurl%", $url, $content); $content=str_replace("%calendarurl%", ''.$url.'', $content); $res=send_mail($content,$content_text,$subject,$user_info['details']['email']); send_mail($content,$content_text,ucfirst($lang_l['notification']).' - '.$subject,$admin_email); $msg_text=$lang_l['success cancel MSG']; } else { $msg_text=$lang_l['cant cancel MSG']; } show_calendar('show',''.$msg_text.''.$f_br.$f_br); exit; } elseif(($action_id=='chregister' || $action_id=='clregister') && isset($_GET['Id'])) //show change/cancel form { $em_use=(isset($event_info['DEADLINE']) && !empty($event_info['DEADLINE'])); if($event_info['Start_date']>$today_ts) { if(isset($reg_info['Event_id'])) { if($action_id=='chregister') { $action=$s_path.'?action=chregister'.$lg_; $bt_name='edit'; } else { $action=$s_path.'?action=clregister'.$lg_; $bt_name='cancel my registration'; } $id=$reg_info['Event_id']; $header_text=ucfirst($lang_l['dear'])." $logged_user,".$f_br.$f_br; if($action_id=='chregister') $header_text.=$lang_l['to edit MSG']; else $header_text.=$lang_l['to cancel MSG']; if($em_use && $event_info['DEADLINE']<$today_ts) {$header_text.=$f_br.''.$lang_l['not recommended MSG'].'';} $body_section=register_form(array($event_info),$header_text,$action,$id,$user_info,$reg_info,$event_info,$bt_name); } elseif($em_use && $event_info['DEADLINE']>=$today_ts) { $body_section.=$lang_l['to register MSG'].' ['.ucfirst($lang_l['register']).']'; } } else {show_calendar('show',''.$lang_l['cant edit/cancel MSG'].''.$f_br.$f_br); exit;} } $output=my_fmt_in_template($body_section,true); print $output; } function em_register($action_id) { global $db_events_fname,$db_reg_fname,$db_fields_reg,$category_id,$js_move,$admin_email, $f_br; global $s_path,$page_id,$lang_l,$css_details,$f_lf, $cal_template_fname,$rel_path; $body_section = ''; $event_id=(isset($_REQUEST['Id']))? f_strip_tags($_REQUEST['Id']): ''; $event_info=db_get_specific_event($db_events_fname,$event_id); // event info $users=f_get_all_users($rel_path,true); if(isset($_POST['Submit'])) { $res_msg=''; $send_to=array(); $mail_settings= get_mailing_settings('RConf'); $message= $mail_settings['RConf_message']; $subject= $mail_settings['RConf_subject']; if(isset($_POST["selected_list"]) && $_POST["selected_list"]!=null) { $selected_list=(array) $_POST["selected_list"]; foreach($users as $k=>$v) { if(in_array($v['username'],$selected_list)) {$send_to[]=$v;} } } else { $res_msg=$lang_l['none users']; } $subject=build_reg_subject($event_info['Short_description'],$subject); $url=build_reg_url($event_id); $content_text = str_replace("%calendarurl%", $url, f_sth_2($message)); $content = str_replace("%calendarurl%", ''.$url.'', f_sth_2($message)); $content = str_replace($f_lf,$f_br,$content); foreach($send_to as $k=>$v) { $reg_info = db_get_registered($v['username'],$event_id); if(!isset($reg_info['Event_id'])) { $reg_record['Event_id'] = $event_id; $reg_record['User'] = $v['username']; $reg_record['Timestamp'] = mktime(); $reg_record['Notes'] = ''; $register_line = prepare_for_write($reg_record); db_add_event($db_reg_fname,$db_fields_reg,$register_line); $content_u = parse_event_info($v['username'],$content,$event_info,$v['details'],$reg_record); $content_text_u = parse_event_info($v['username'],$content_text,$event_info,$v['details'],$reg_record); $res = send_mail($content_u,$content_text_u,$subject,$v['details']['email']); send_mail($content_u,$content_text_u,ucfirst($lang_l['notification']).' - '.$subject,$admin_email); if(!$res) $res_msg .= $lang_l['send to'].$v['details']['email'].' FAILED; '; } else { $res_msg.=' '.ucfirst($lang_l['user']).' "'.$v['username'].'" ALREADY REGISTERED.'; } } show_calendar('index',''.($res_msg!=''? $res_msg:' '.$lang_l['users regsitered MSG']).''.$f_br.$f_br); exit; } elseif(isset($_GET['remove'])) { $remove_user= f_strip_tags($_GET['remove']); $event_id= f_strip_tags($_GET['Id']); $reg_info= db_get_registered($remove_user,$event_id); // registered info $user_info= f_get_user($remove_user,$rel_path); // user info $mail_settings= get_mailing_settings('RCancel'); $message= $mail_settings['RCancel_message']; $subject= $mail_settings['RCancel_subject']; db_delete_event($db_reg_fname,$event_id,$remove_user); $subject = build_reg_subject($event_info['Short_description'],$mail_settings['RCancel_subject']); $url = build_reg_url($event_id); $content = parse_event_info($user_info['username'],f_sth_2($mail_settings['RCancel_message']),$event_info,$user_info['details'],$reg_info); $content_text = str_replace("%calendarurl%", $url, $content); $content = str_replace("%calendarurl%", ''.$url.'',$content); $res = send_mail($content,$content_text,$subject,$user_info['details']['email']); send_mail($content,$content_text,ucfirst($lang_l['notification']).' - '.$subject,$admin_email); $msg_text = $lang_l['users unregsitered MSG']; show_calendar('index',''.$msg_text.''.$f_br.$f_br); exit; } else { $all_users=array(); $send_to_list=array(); $def_mail=(isset($_GET['type'])? f_strip_tags($_GET['type']):'EA'); if(isset($_GET['send_to'])) $send_to_group=$_GET['send_to']; elseif($def_mail=='EA'|| $def_mail=='ECA') $send_to_group=$event_info['Category']; else $send_to_group = 'registered'; if(!empty($users)) { foreach($users as $key => $row) { $u_name[$key]=$row['details']['name']; $u_name_lower=array_map('strtolower', $u_name); } array_multisort($u_name_lower,SORT_ASC, $users); } foreach($users as $k=>$v) { if(!empty($v['details']['email'])) $all_users [$v['username']]=$v['details']['name'].' '.$v['details']['sirname']; } if($send_to_group=='admin') { $send_to_list[$admin_email]='Admin'; } elseif($send_to_group=='all') { $send_to_list=$all_users; } elseif($send_to_group=='registered') { $registered=db_get_registered(); if(!empty($registered) && isset($registered[$event_id])) { foreach($registered[$event_id] as $curr_user=>$n) {$send_to_list[$curr_user]=$all_users[$curr_user];} } } else { foreach($users as $k=>$v) { if(isset($v['news']) && !empty($v['news'])) { foreach($v['news'] as $key=>$val) { if($val['page']==$page_id && $val['cat']==$send_to_group) { $send_to_list [$v['username']] = $v['details']['name'].' '.$v['details']['sirname'];} } } } } $output=''; $output.='
'.build_admin_menu($action_id).$f_br.$f_br.'
'; $output.=view_events(array($event_info),0,0,'admin',3,0,0, $event_id,'',$def_mail,$all_users,$send_to_list,$send_to_group,true).'
'; } $output=my_fmt_in_template($output,true); $output=str_replace(array('',''),array(' '.$js_move.' ',' '.$js_move.' '),$output); print $output; } function send_mail($content_html,$content_text,$subject,$send_to_email='',$attachment='',$file='',$file_type='') //event manager { global $admin_email,$f_sendmail_from,$f_lf,$f_br,$page_charset; $res=false; if(strpos($admin_email,'your@email.here')===false && $admin_email!='') { $content_text=str_replace($f_br,$f_lf,$content_text); $send_from=(($f_sendmail_from=='')? $admin_email: $f_sendmail_from); $send_to=($send_to_email!='')? array($send_to_email): array($admin_email); $res=f_sendMail($send_to,$send_from,$content_html,$content_text,$subject,$page_charset,$attachment,$file,$file_type); } return $res; } function mailing($action_id) //event manager { global $db_events_fname,$db_reg_fname,$db_fields_reg,$js_move,$admin_email,$f_br,$page_id,$s_path,$lang_l,$f_lf,$cal_template_fname,$rel_path; $event_id=f_strip_tags($_REQUEST['Id']); $event_info=db_get_specific_event($db_events_fname,$event_id); $users=f_get_all_users($rel_path,true); if(isset($_POST['Submit'])) //send mail { if(isset($_POST["selected_list"]) && $_POST["selected_list"]!=null) { $selected_list=(array) $_POST["selected_list"]; foreach($users as $k=>$v) { if(in_array($v['username'],$selected_list)) {$send_to[]=$v;} } } else { $send_to=$admin_email; } $attachment=''; if($_FILES['Attachment']['name']!="") { $file_attach=$_FILES['Attachment']['name']; $file_type=$_FILES['Attachment']['type']; $file_path=$_FILES['Attachment']['tmp_name']; if (!strlen($file_type)) { $file_type="applicaton/octet-stream"; } if ($file_type=='application/x-msdownload') { $file_type="applicaton/octet-stream"; } if(file_exists($file_path)) { $f=@fopen($file_path, "rb"); if($f) { while($f && !feof($f)) { $attachment.=fread($f,4096); } fclose($f); } } } $subject=build_reg_subject($event_info['Short_description'],$_POST['Subject']); $url=build_reg_url($event_id); $content_text=str_replace("%calendarurl%",$url,f_sth_2($_POST['Message'])); $content=str_replace("%calendarurl%",''.$url.'',f_sth_2($_POST['Message'])); $content=str_replace($f_lf,$f_br,$content); $res_msg=''; if($send_to==$admin_email) { $content=parse_event_info('Administrator',$content,$event_info,array('name'=>'Administrator','sirname'=>'','email'=>$send_to)); $content_text=parse_event_info('Administrator',$content_text, $event_info,array('name'=>'Administrator','sirname'=>'','email'=>$send_to)); if(!empty($attachment)) send_mail($content,$content_text,$subject,$send_to,$attachment,$file_attach,$file_type); else send_mail($content,$content_text,$subject,$send_to); } else { $res_msg=''; foreach($send_to as $k=>$v) { $reg_info=db_get_registered($v['username'],$event_id); // registration info - if any $content_u=parse_event_info($v['username'],$content,$event_info,$v['details'],$reg_info); $content_text_u=parse_event_info($v['username'],$content_text,$event_info,$v['details'],$reg_info); if(!empty($attachment)) $res=send_mail($content_u,$content_text_u,$subject,$v['details']['email'],$attachment,$file_attach,$file_type); else $res= send_mail($content_u,$content_text_u,$subject,$v['details']['email']); if(!$res) $res_msg.=ucfirst($lang_l['send to']).' '.$v['details']['email'].' FAILED; '; } } show_calendar('index',''.($res_msg!=''? $res_msg: $lang_l['mail sent MSG']).''.$f_br.$f_br); } else // send mail form { $all_users=array(); $send_to_list=array(); $def_mail=(isset($_GET['type'])? $_GET['type']:'EA'); if(isset($_GET['send_to'])) $send_to_group=$_GET['send_to']; elseif($def_mail=='EA'|| $def_mail=='ECA') $send_to_group=$event_info['Category']; else $send_to_group='registered'; if(!empty($users)) { foreach ($users as $key => $row) { $u_name[$key]=$row['details']['name']; $u_name_lower=array_map('strtolower', $u_name); } array_multisort($u_name_lower,SORT_ASC, $users); } foreach($users as $k=>$v) { if(!empty($v['details']['email'])) $all_users [$v['username']] = $v['details']['name'].' '.$v['details']['sirname']; } if($send_to_group=='admin') { $send_to_list [$admin_email]='Admin'; } elseif($send_to_group=='all') { $send_to_list=$all_users; } elseif($send_to_group=='registered') { $registered=db_get_registered(); if(!empty($registered) && isset($registered[$event_id])) { foreach($registered[$event_id] as $curr_user=>$n) {$send_to_list[$curr_user]=$all_users[$curr_user];} } } else { foreach($users as $k=>$v) { if(isset($v['news']) && !empty($v['news'])) { foreach($v['news'] as $key=>$val) { if($val['page']==$page_id && $val['cat']==$send_to_group) { $send_to_list [$v['username']]=$v['details']['name'].' '.$v['details']['sirname'];} } } } } $output=''; $output.='
'.build_admin_menu($action_id).$f_br.$f_br.'
'.view_events(array($event_info),0,0,'admin',3,0,0, $event_id,'',$def_mail,$all_users,$send_to_list,$send_to_group); $output.='
'; $output=my_fmt_in_template($output); $output=str_replace(array('',''),array(' '.$js_move.' ',' '.$js_move.' '),$output); print $output; } } function set_mailing($action_id) // EA, ECA, AG, RC, GE //event manager { global $s_path,$lg_,$lang_l,$mails_list,$f_lf,$cal_settings_fname,$cal_template_fname,$f_br,$f_ct; $jstring="onchange=\"document.location='". $s_path."?action=setmailing".$lg_."&type=' + this.options[this.selectedIndex].value;\" style='width:100%;'"; if(isset($_POST['Submit'])) { $tag=$_POST['type']; $new_setting=''.$_POST['Subject'].''.''.str_replace($f_lf,$f_br,$_POST['Message']).''; if(f_write_tagged_data($tag,$new_setting,$cal_settings_fname,$cal_template_fname)) $output=''.ucfirst($lang_l['settings saved']).''; else $output='Settings save failed'; } else { $def_mail=(isset($_GET['type'])? $_GET['type']:'EA'); $settings=get_mailing_settings($def_mail); $def_subject=$settings[$def_mail.'_subject']; $def_message=str_replace(array('
','
'), array($f_lf,$f_lf), $settings[$def_mail.'_message']); $output='
'; $table_data=array(); $table_data[]=array($lang_l['mail type'], f_build_select("type", $mails_list, $def_mail, '', 'key', $jstring)); $table_data[]=array($lang_l['mail subject'], ''.$def_message.''); $table_data[]=array('', ''.ucfirst($lang_l['explanations']).$f_br.'Use %register_date% and %notes% for user registration info.'.$f_br.'Use %calendarurl% for calendar page url'); $table_data[]=array('', '$row) {$row['Start_date']=intval($row['Start_date']); $sort_name[$key]=$row['Start_date'];} //sort $flag=array_multisort($sort_name,SORT_ASC,SORT_NUMERIC,$entries_records); if($max_items_in_rss!=0) $entries_records=array_slice($entries_records,0,$max_items_in_rss); $category=f_strip_tags(isset($_GET['cat']))?$_GET['cat']:((isset($_GET['category']))?$_GET['category']:''); $category=f_un_esc(urldecode($category)); if($category!='') { $temp=array(); foreach($entries_records as $k=>$v) {if(get_category_info($v['Category'],'name')==$category || $v['Category']==$category) {$temp[]=$v;} } $entries_records=$temp; } } $rss_data=array(); foreach($entries_records as $k=>$v) { $rss_item=array(); if(strpos(urldecode($v['Short_description']),'%%TEMPLATE1%%')===false && $category_vis[get_cat_index($v['Category'])]==true) { $short_desc=str_replace(''',"'",f_sth_2(urldecode($v['Short_description']))); $short_desc=(empty($v['Short_description'])?'empty':str_replace('&','&',$short_desc)); $category_line=str_replace(''',"'",f_sth(get_category_info($v['Category'],'name'))); if($max_lines_in_rss_desc==0) {$details=f_sth_2(urldecode($v['Details']));} else { $temp=f_sth_2(urldecode($v['Details'])); $max_chrl=$max_lines_in_rss_desc*60; $details=(strlen($temp)>$max_chrl)? f_split_html_content($temp, $max_chrl).' ...': $temp; } $details=preg_replace("'<[/!]*?[^<>]*?>'si"," ",$details); $details=str_replace(array('"',' ','&','<'),array('"',' ','&','<'),$details); $more=''; if($include_date_in_rss_desc) { if(date('n j, Y',$v['Start_date'])==date('n j, Y',$v['End_date'])) {$more.=format_date($v['Start_date']).', ';} else {$more.=format_date($v['Start_date']).' - '.format_date($v['End_date']).', ';} if($time_format==12) {$t_format='g:i A';$pattern='12:00 AM';} else {$t_format='G:i';$pattern='0:00';} if((date($t_format,$v['Start_date'])==date($t_format,$v['End_date'])) && (date($t_format,$v['Start_date'])!=$pattern)) $more.=date($t_format,$v['Start_date']).', '; elseif(date($t_format,$v['Start_date'])!=$pattern) $more.=date($t_format,$v['Start_date'])." - ".date($t_format,$v['End_date']).', '; } $location_field_value=str_replace(''',"'",f_sth(urldecode($v['Location']))); if(!empty($location_field_value)) { $more.=$location_label.': '.$location_field_value.', '; } $desc_line=$more.(empty($v['Details'])?' ':$details).'<br clear="all">'; $rss_item=array('title'=>$short_desc,'description'=>$desc_line,'link'=>$full_path_to_script."?entry_id=".$v['Id'], 'category'=>$category_line,'guid'=>$full_path_to_script."?entry_id=".$v['Id'],'pubDate'=>date('r', $v['Start_date'])); $rss_data[]=$rss_item; } } $output=f_build_rss($rss_data,$rss_settings,$page_charset,$full_path_to_script,filemtime($db_events_fname)); header("Content-Type: text/xml; charset=$page_charset"); echo $output; } function my_fmt_in_template($content, $force_eval=false) { global $cal_template_fname, $cal_css; $output=f_fmt_in_template($cal_template_fname,'%PAGECONTENT%',$cal_css); if($force_eval && strpos($output,'<'.'?')!==false) $output=f_eval_php($output); $output=str_replace('%PAGECONTENT%',$content,$output); if(!$force_eval) $output=f_removeAreas($output); return $output; } function process_calendar() { global $prefix,$thispage_id,$page_id,$version,$doc_dir,$lg_,$lg_1,$em_enabled,$admin_email,$s_path,$def_view,$em_enabled, $s_path,$read_access, $available_lang_sets,$lang_l,$rel_path,$f_br,$f_ct,$cal_template_fname,$cal_settings_fname,$category_id,$category_vis,$category_mark,$category_mark_color,$db_events_fname,$db_recur_fname,$db_fields_events,$all_settings,$cal_dir,$show_cal_from_outside, $db_events_fname,$db_fields_events; $db_convert_flag=f_GFS($all_settings,'',''); if($db_convert_flag!='1') { f_db_convert($cal_dir.$prefix."cal_events.ezg.php",$db_events_fname,false); f_db_convert($cal_dir.$prefix."cal_recurring.ezg.php",$db_recur_fname,false); f_write_tagged_data('db_convert','1',$cal_settings_fname,$cal_template_fname); clearstatcache(); $all_settings=f_read_file($cal_settings_fname); update_categories_list(); update_language_set(); } if(strpos($all_settings,'"; } else { $rss_public_options=array('0'=>'false','1'=>'true'); $def_lang=f_GFS($all_settings,'',''); if($def_lang=='' || $def_lang=='EZG') $def_lang='EN'; $def_public_rss=f_GFS($all_settings,'',''); if($def_public_rss=='') $def_public_rss='0'; $output=''; $output.=''; $output.="
'.ucfirst($lang_l['language']).''; $output.=f_build_select('lang',$available_lang_sets,strtoupper($def_lang)).'
'.ucfirst($lang_l['public rss']).''.f_build_select('public_rss',$rss_public_options,$def_public_rss).'
".$f_br."
"; } $output=f_fmt_admin_screen($output, build_admin_menu($action_id)); $output=my_fmt_in_template($output); print $output; } elseif($action_id=='mng_categories' || $action_id=='del_category' || $action_id=='edit_category' || $action_id=='add_category') { $err_on_submit=(isset($_POST['submit']) && (empty($_POST['cat_color']) || empty($_POST['cat_name']) || $_POST['cat_color']=='#')); $valid_submit=isset($_POST['submit']) && !$err_on_submit; $adding=($action_id=='add_category'); $output=''; if($err_on_submit) $output.=f_format_err_msg('You have to set both Name and Color for the category').$f_br; $show_id=''; if($action_id=='del_category' && isset($_GET['cat_id']) && $_GET['cat_id']!='0') {add_edit_category('del',$_GET['cat_id']); update_categories_list();} elseif($action_id=='edit_category') { if($valid_submit) {add_edit_category('edit',$_POST['cat_id']); update_categories_list();} else $show_id=$_REQUEST['cat_id']; } elseif($action_id=='add_category' && isset($_POST['submit']) && !$err_on_submit) {add_edit_category('add'); update_categories_list();} elseif($action_id=='add_category' && $valid_submit) {add_edit_category('add'); update_categories_list();} $all_events_indexes=extract_all_records_indexes($db_events_fname,$db_fields_events,array('Id','Category')); $cat_count=array(); foreach($category_id as $k=>$v) {$cat_count[$v]=count(extract_category_entries($all_events_indexes,$v));} $all_events_indexes=''; $cap_arrays=array('',$lang_l['category'],$lang_l['events']); $table_data=array(); $nav=''; $entry.='
'; $entry.='
'; $entry.=build_add_category_form($cat_name, $cat_color, $cat_mark, $cat_mark_color, $invis_checked) .'
'; $row_data=array('',array($entry,''),''); $table_data[]=$row_data; foreach($category_id as $k=>$v) { $cat_color=get_category_info($v,'color'); $cat_name=get_category_info($v,'name'); $index=get_cat_index($v); $invis_checked=($category_vis[$index]==false)?' checked="checked"':''; $cat_mark=(isset($category_mark[$index]))?$category_mark[$index]:'NA'; $cat_mark_color=(isset($category_mark_color[$index]))?$category_mark_color[$index]:'#'; if(empty($cat_mark_color)) $cat_mark_color='#'; if($cat_mark!='NA' && empty($cat_mark_color)) $cat_mark_color='#ffffff'; $entry_nav=array($lang_l['edit']=>'javascript:void(0);" onclick="javascript:sv(\'edit_cat_'.$v.'\');'); if($k!=0) $entry_nav[$lang_l['delete']]=$s_path.'?action=del_category&cat_id='.$v.'" onclick="javascript:return confirm(\''.ucfirst($lang_l['del category msg']).'\')'; $entry='
'.$cat_name.'
' .'
' .'
' .''.$f_br; $entry.=build_add_category_form($cat_name, strtolower($cat_color), $cat_mark, strtolower($cat_mark_color), $invis_checked, $v) .'
'; $color='
 
'; $row_data=array($color,array($entry,$entry_nav),'('.(isset($cat_count[$v])?$cat_count[$v]:0).')'); $table_data[]=$row_data; } $output.=f_admintable($nav,$cap_arrays,$table_data); $output=f_fmt_admin_screen($output, build_admin_menu($action_id)); $output=my_fmt_in_template($output); print $output; } } } function extract_all_records_indexes($fname,$db_field_names,$fields,$admin_flag=false) { global $f_db_last_line,$f_max_chars,$cal_template_fname; $result=array(); if(file_exists($fname)) { $handle=fopen($fname,"r"); $php_start_line=fgetcsv($handle,2048); $db_field_line=fgetcsv($handle,2048); $pos=ftell($handle); while($data=fgetcsv($handle,$f_max_chars)) { if($data[0]!=$f_db_last_line) { $temp=build_ass_array_record($data,$db_field_names); //if($admin_flag || $temp['Publish_Status']=='1') //{ $build_rec['Pos']=$pos; foreach($fields as $k=>$v) $build_rec[$v]=$temp[$v]; $result[]=$build_rec; //} } $pos=ftell($handle); } fclose($handle); } else { print f_fmt_in_template($cal_template_fname,f_fmt_error_msg('MISSING_DBFILE',$fname)); exit;} return $result; } function extract_category_entries($records,$category_id) { global $f_db_last_line,$f_max_chars; $result=array(); foreach($records as $k=>$v){if($v['Category']==$category_id) $result[]=$v;} return $result; } process_calendar(); ?>