File: /home/icsla/.trash/rteitel.com/ezg_data/functions.php
<?php
$f_version="functions 1.68";
/*
http://www.ezgenerator.com
Copyright (c) 2004-2010 Image-line
*/
error_reporting(E_ALL);
if(get_magic_quotes_runtime()==1) {set_magic_quotes_runtime(0);}
$f_db_folder='ezg_data/';
$f_ca_db_fname=$f_db_folder.'centraladmin.ezg.php';
$f_sitemap_fname='sitemap.php';
$f_ca_settings_fname=(isset($rel_path) && $rel_path==''? '':'../').$f_db_folder.'centraladmin_conf.ezg.php';
$f_template_source='documents/template_source.html';
$f_max_chars=25000;
$f_mysql_host="%MYSQLHOST%";
$f_mysql_dbname="%MYSQLDBNAME%";
$f_mysql_username="%MYSQLUSERNAME%";
$f_mysql_password="%MYSQLPWD%";
$f_mail_type="mail";
$f_SMTP_HOST='%SMTP_HOST%';
$f_SMTP_PORT='%SMTP_PORT%';
$f_SMTP_HELLO='%SMTP_HELLO%';
$f_SMTP_AUTH=('%SMTP_AUTH%'=='TRUE');
$f_SMTP_AUTH_USR='%SMTP_AUTH_USR%';
$f_site_charsets='iso-8859-1|';
$f_site_languages='English|';
$f_uni=('FALSE'=='TRUE');
$f_use_mb=($f_uni && function_exists('mb_strtolower'));
$f_SMTP_AUTH_PWD='%SMTP_AUTH_PWD%';
$f_return_path='';
$f_use_hostname=false;
$f_sendmail_from='';
if(isset($_SERVER['SERVER_SOFTWARE']))
$f_use_linefeed=(strpos($_SERVER['SERVER_SOFTWARE'],'Microsoft')!==false) || (strpos($_SERVER['SERVER_SOFTWARE'],'Win')!==false);
else $f_use_linefeed=false;
$f_lf=($f_use_linefeed? "\r\n": "\n");
$f_xhtml_on=false;
$f_ct=($f_xhtml_on? " />": ">");
$f_br="<br".$f_ct;
$f_hr="<hr".$f_ct;
$f_js_st=($f_xhtml_on? "/* <![CDATA[ */": "<!--");
$f_js_end=($f_xhtml_on? "/* ]]> */": "//-->");
$f_tzone_offset=f_read_tagged_data($f_ca_settings_fname,'tzoneoffset');
$f_names_lang_sets=array('BG'=>'Bulgarian','CA'=>'Catalan','CS'=>'Czech','DA'=>'Danish','NL'=>'Dutch','EN'=>'English','ET'=>'Estonian','FI'=>'Finnish','FR'=>'French','DE'=>'German','EL'=>'Greek','HU'=>'Hungarian','IS'=>'Icelandic','IT'=>'Italian','NO'=>'Norwegian','PL'=>'Polish','PT'=>'Portuguese','RO'=>'Romanian','RU'=>'Russian','SL'=>'Slovenian','ES'=>'Spanish','SV'=>'Swedish');
$f_day_names=array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
$f_month_names=array("January","February","March","April","May","June","July","August","September","October","November","December");
$f_max_rec_on_admin=20;
$f_demo_mode=false;
$f_captcha_img_type=strtolower('gif');
$f_captcha_size='medium';
$f_bg_tag='background: #ffffff;';
$f_atbg_class='topic_bg';
$f_atbgr_class='sub_bg';
$f_atbgc_class='news_bg';
$f_fmt_caption_add='<span id="etablecaption" class="rvts8" style="font-style:italic;font-size:15px;letter-spacing:7px;line-height:20px;text-transform:uppercase;">%s</span>'.$f_br;
$f_ftm_title='<span class="rvts8" style="font-size:9px;text-transform: uppercase;">%s</span>'.$f_br;
$f_fmt_span8='<span class="rvts8">%s</span>';
$f_fmt_span8_br='<span class="rvts8">%s</span>'.$f_br;
$f_fmt_span8em='<span class="rvts8"><em style="color:red;">%s</em></span>';
$f_fmt_span8em_br=$f_br.$f_br.$f_fmt_span8em;;
$f_fmt_star='<em style="color:red;">*</em>';
$f_fmt_hidden='<input type="hidden" name="%s" value="%s"'.$f_ct;
$f_fmt_a='<a class="rvts12" href="%s">%s</a>';
$f_fmt_input_p="<input class='input1' type='text' name='%s' value='%s' style='width:500px' maxlength='255'".$f_ct.$f_br; //used in add post
$f_fmt_input_c="<input class='input1' type='text' name='%s' value='%s' style='width:200px' maxlength='50'".$f_ct.$f_br; // used in add comment
$f_fmt_caption='<span class="rvts8" style="font-size:9px;text-transform:uppercase;font-weight:bold;line-height:16px;">%s</span>'; //?
$f_fmt_caption_url='<a class="rvts8" href="%s" style="font-size:9px;text-transform:uppercase;font-weight:bold;line-height:16px;text-decoration:%s">%s</a>'.$f_br;
$f_open_table_tag='<table cellspacing="2" cellpadding="4" align="center">'; //?
$f_db_first_line="<?php echo 'hi'; exit; /*";
$f_db_last_line="*/ ?>";
$f_use_search=true;
$f_tiny=false;
$md_dialog='var activeModalWin;function mDialogShow(url,width,height){var left=screen.availWidth/2-width/2;var top=screen.availHeight/2 - height/2;activeModalWin = window.open(url, "", "width="+width+"px,height="+height+",left="+left+",top="+top);window.onfocus=function(){if(activeModalWin.closed==false){activeModalWin.focus();};};}';
$md_dialog.="function openAsset(id){cmdAManager=\"".($f_tiny?'mDialogShow':'modalDialogShow')."('%sinnovaeditor/assetmanager/assetmanager.php?lang=english&root=%s&id=\'+id,640,465)\";eval(cmdAManager);}";
$md_dialog.="function setAssetValue(val,id){document.getElementById(id).value=val;ima=document.getElementById('ima_'+id);ima.src=val;ima.style.display='block';}";
$f_drop_script = <<<MSG
<script type="text/javascript">
var b_el=null;var tog=false;
function ToggleBody(e_id){var b_state='none';var img='%ROOT_PREFIX%images/expand.gif';if(tog&&(b_el!=null)&&(b_el.id!=e_id+"Body"))b_el.style.display='none';
if(document.getElementById){b_el=document.getElementById(e_id+"Body");u_img=document.getElementById(e_id+"Up");} else if(document.all){b_el=document.all[e_id+"Body"];u_img=document.all[e_id+"Up"];}
if(b_el!=null){if(b_el[0]){b_el=b_el[0];u_img=u_img[0];}if(b_el.style.display=="none"){img="%ROOT_PREFIX%images/collapse.gif";b_state='block';}u_img.src=img;b_el.style.display=b_state;}return false;}
</script>
MSG;
$f_framedtable = <<<MSG
<table width="%TABLEWIDTH%" cellspacing="0" cellpadding="0">
<tr><td><img src="%ROOT_PREFIX%images/t1tl.gif" class="cim" alt=""></td><td class="topic_t" >%CAPTION%</td><td><img src="%ROOT_PREFIX%images/t1tr.gif" class="cim" alt=""></td></tr>
<tr><td class="topic_l"><img src="%ROOT_PREFIX%images/t1l.gif" class="clr" alt=""></td>
<td class="topic_bg" valign="top">%BODY%</td>
<td class="topic_r"><img src="%ROOT_PREFIX%images/t1r.gif" class="clr" alt=""></td></tr>
<tr><td><img src="%ROOT_PREFIX%images/t1bl.gif" class="cim" alt=""></td><td class="topic_b"></td> <td><img src="%ROOT_PREFIX%images/t1br.gif" class="cim" alt=""></td></tr>
</table>
MSG;
$f_framedtable_drop = <<<MSG
<table width="%TABLEWIDTH%" cellspacing="0" cellpadding="0">
<tr><td style="cursor:pointer" onclick="ToggleBody('%ELEMENT_NAME%','%ROOT_PREFIX%');">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><img src="%ROOT_PREFIX%images/t1tl.gif" class="cim" alt=""></td>
<td class="topic_t" >%CAPTION%</td>
<td class="topic_t"><img id="%ELEMENT_NAME%Up" width="15" height="14" src="%ROOT_PREFIX%images/%STATEIMAGE%" alt=""></td>
<td><img src="%ROOT_PREFIX%images/t1tr.gif" class="cim" alt=""></td>
</tr>
</table>
</td></tr>
<tr><td>
<div id="%ELEMENT_NAME%Body" style="display:%STATE_DISPLAY%">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td class="topic_l"><img src="%ROOT_PREFIX%images/t1l.gif" class="clr" alt=""></td>
<td class="topic_bg" valign="top">%BODY%</td>
<td class="topic_r"><img src="%ROOT_PREFIX%images/t1r.gif" class="clr" alt=""></td>
</tr>
<tr><td><img src="%ROOT_PREFIX%images/t1bl.gif" class="cim" alt=""></td><td class="topic_b"></td><td><img src="%ROOT_PREFIX%images/t1br.gif" class="cim" alt=""></td></tr>
</table>
</div>
</td></tr>
</table>
MSG;
$f_http_prefix=(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on')?'https://':'http://';
function f_build_self_url($script_name)
{
global $f_http_prefix,$f_use_hostname;
if($f_use_hostname)
{return $f_http_prefix.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).(dirname($_SERVER['PHP_SELF'])=='/'?'':'/').$script_name;}
else
{
if(isset($_SERVER['SCRIPT_URI'])) return $_SERVER['SCRIPT_URI'];
else if((isset($_SERVER['SCRIPT_NAME']))&&(strpos($_SERVER['SCRIPT_NAME'],$script_name) !== false))
return $f_http_prefix.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
else return $f_http_prefix.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).(dirname($_SERVER['PHP_SELF'])=='/'?'':'/').$script_name;
}
}
function f_replace_accents($src)
{
global $AccChars,$NormChars;
$res=str_replace($AccChars,$NormChars,$src);
return $res;
}
function f_parse_dropdown($temp,$i)
{
for($ii=1;$ii<5;$ii++)
{
$drop_down_id='a'.$ii;
$temp=str_replace("ToggleBody('".$drop_down_id."'","ToggleBody('".$drop_down_id."_".$i."'",$temp);
$temp=str_replace($drop_down_id.'Body',$drop_down_id.'_'.$i.'Body',$temp);
$temp=str_replace($drop_down_id.'Up',$drop_down_id.'_'.$i.'Up',$temp);
}
return $temp;
}
function f_addentrytable($caption,$tabledata,$apend='',$tag='')
{
global $f_atbg_class,$f_atbgr_class,$f_br,$f_fmt_caption_add,$f_ftm_title;
$output='<script language="javascript" type="text/javascript">function s_roll(id,tg){document.getElementById(id).style.visibility=(tg)?"visible":"hidden"};function sv(id){tg=(document.getElementById(id).style.display=="none");document.getElementById(id).style.display=(tg)?"block":"none"};</script>';
$output.='<table class="atable" cellspacing="2" cellpadding="5" align="center" '.$tag.'>';
$output.='<tr class="'.$f_atbgr_class.'"><td align="left">'.sprintf($f_fmt_caption_add,$caption).'</td></tr>';
foreach($tabledata as $key=>$value)
{
$output.='<tr valign="top" class="'.$f_atbg_class.'"><td align="left">';
if(is_array($value))
{
if($value[0]!='')$output.=sprintf($f_ftm_title,$value[0]);
$v=$value[1];
}
else $v=$value;
$output.=$v.'</td></tr>';
}
if($apend!='') $output.='<tr><td>'.$apend.'</td></tr>';
$output.='</table>';
return $output;
}
function f_admintable($page_nav,$captions,$tabledata,$apend='',$tag='')
{
global $f_fmt_caption,$f_atbg_class,$f_atbgr_class,$f_atbgc_class,$f_fmt_caption_url;
$cs=count($captions);
$output='<script language="javascript" type="text/javascript">var act=null;function s_roll(id,tg,th,cn){if(act==null){th.className=cn;document.getElementById(id).style.visibility=(tg)?"visible":"hidden"}};function sv(id){tg=(document.getElementById(id).style.display=="none");act=(tg)?id:null;document.getElementById(id).style.display=(tg)?"block":"none"};function svc(id){document.getElementById(id).style.display="none";}</script>';
$output.='<table class="atable" cellspacing="1" cellpadding="4" align="center" '.$tag.(empty($tabledata)?' width="500px"':'').'>';
$output.='<tr><td colspan="'.$cs.'">'.$page_nav.'</td></tr>';
if(!empty($captions))
{
$output.='<tr class="'.$f_atbgr_class.'">';
foreach($captions as $key=>$value)
{
if(is_array($value)) $output.='<td align="left">'.sprintf($f_fmt_caption_url,$value[0],$value[1],ucfirst($value[2])).'</td>';
else $output.='<td align="left">'.sprintf($f_fmt_caption,ucfirst($value)).'</td>';
}
$output.='</tr>';
}
if(!empty($tabledata))
{
$i=1;
foreach($tabledata as $key=>$value)
{
$row='';$j=0;
$hglt_row=is_array($value);
if($hglt_row)
{
foreach($value as $key2=>$value2)
{
$row.='<td align="left">';
if(is_array($value2))
{
$j++;
$row.=$value2[0].'<div style="padding:7px 2px 1px 0px;visibility:hidden" id="aa'.$j.'_'.$i.'">';
if(is_array($value2[1])) foreach($value2[1] as $key3=>$value3) $row.='<span class="rvts8">[</span><a class="rvts12" href="'.$value3.'">'.$key3.'</a><span class="rvts8">]</span> ';
$row.='</div>';
}
else $row.=$value2;
$row.='</td>';
}
}
else $row.='<td align="left" colspan="'.$cs.'">'.$value.'</td>';;
$row.='</tr>';
if($hglt_row)
{
$output.='<tr valign="top" class="'.$f_atbg_class.'" onmouseover="';
if($j>0)for($w=1;$w<=$j;$w++)$output.='s_roll(\'aa'.$w.'_'.$i.'\',1,this,\''.$f_atbgr_class.'\');';
$output.='" onmouseout="';
if($j>0)for($w=1;$w<=$j;$w++)$output.='s_roll(\'aa'.$w.'_'.$i.'\',0,this,\''.$f_atbg_class.'\');';
}
else $output.='<tr valign="top" class="'.$f_atbgc_class;
$output.='">'.$row;
$i++;
}
}
if($apend!='') $output.='<tr><td colspan="'.$cs.'">'.$apend.'</td></tr>';
$output.='</table>';
return $output;
}
function f_framedtable($root,$caption,$body,$width,$drop,$drop_expand,$drop_id,$align)
{
global $f_framedtable_drop,$f_framedtable,$f_br;
$src=($drop)?$f_framedtable_drop:$f_framedtable;
if($drop)
{
$src=str_replace('%STATEIMAGE%',($drop_expand)?'collapse.gif':'expand.gif',$src);
$src=str_replace('%STATE_DISPLAY%',($drop_expand)?'block':'none',$src);
$src=str_replace('%ELEMENT_NAME%',$drop_id,$src);
}
$src=str_replace(array('%BODY%','%CAPTION%','%ROOT_PREFIX%','%TABLEWIDTH%'),array($f_br.$body.$f_br,$caption,$root,$width),$src);
if($align!=='')$src='<div align="'.$align.'">'.$src.'</div>';
return $src;
}
function f_framedtablScript($root)
{
global $f_drop_script;
$src=str_replace('%ROOT_PREFIX%',$root,$f_drop_script);
return $src;
}
function f_hiddendiv($hidden_div_css,$content,$id,$close_label='X',$out_div_extra_st='',$mid_div_extra_st='',$in_div_extra_st='')
{
global $f_br;
$output=$hidden_div_css.'<script language="javascript" type="text/javascript"> function show_Hdiv(id,ms,ha,op) {hda=id;opa=(op==null)?1:op;new Fx.Tween(id,{duration:ms}).start(\'opacity\',0,opa); if(ha!=false) var myDrag=(ha!=null)?$(id).makeDraggable({\'handle\':$(ha)}):$(id).makeDraggable();} function hide_Hdiv(id) {hda=\'\'; new Fx.Tween(id,{duration:500}).start(\'opacity\',opa,0);} </script>';
$output.='<div id="hdp_'.$id.'" '.$out_div_extra_st.'>';
$output.='<a id="hdpc_hdp_'.$id.'" href="javascript:hide_Hdiv(\'hdp_'.$id.'\');">'.$close_label.'</a>';
$output.=' <div id="hdps_hdp_'.$id.'" '.$mid_div_extra_st.'>';
$output.=' <div id="hd_hdp_'.$id.'" '.$in_div_extra_st.'>'.$content.'</div>';
$output.='</div></div>';
return $output;
}
function f_hiddendiv_innova($id,$content,$hdiv_width,$hdiv_height,$rel_path,$hdiv_header,$btn_1,$btn_2)
{
global $f_br,$f_ct;
$output='<style type="text/css">'.
' <!-- #hdp_'.$id.'{position:absolute;visibility:hidden;z-index: 1004;border:1px solid #d6d6d6;background:#eaeaea url('.$rel_path.'innovaeditor/scripts/icons/dialogbg.gif) repeat-x 0 0;;}'
.'#hdps_hdp_'.$id.' .hd_hdp_'.$id.' #hd_hdp_'.$id.'{display:block;} '
.'#hdps_hdp_'.$id.'{position:relative;padding: 5px 15px;} '
.'#hdpc_hdp_'.$id.'{position:absolute;top:2px;right:2px;} '
.'.inpChk{vertical-align:middle;margin:5px;width:13px;height:13px;} '
.'.txtLang,.txtInp{font:8pt tahoma;color:black;} '
.'.txtLang{color:#444444;} '
.'#dlg_caption{font: bold 17px Trebuchet MS;font-variant:small-caps;color:#444444;padding:5px 15px;} '
.'.inpBtn{padding:4px 10px;margin-left:2px;font: bold 11px Tahoma;color:#000000;background:#EEEEEE url(\''.$rel_path.'innovaeditor/scripts/style/button.png\');border:1px solid #DDDDDD;border-right-color:#AAAAAA;border-bottom-color:#AAAAAA;cursor:pointer;}--></style>';
$output.='<script language="javascript" type="text/javascript">'
.'function showDlg(id,ms,ha,op){$(id).position();$(id).pin();hda=id;opa=(op==null)?1:op;new Fx.Tween(id,{duration:ms}).start(\'opacity\',0,opa);if(ha!=false) var myDrag=(ha!=null)?$(id).makeDraggable({\'handle\':$(ha)}):$(id).makeDraggable();};'
.'function hideDlg(id){hda=\'\'; new Fx.Tween(id,{duration:500}).start(\'opacity\',opa,0);};'.'</script>';
$output.='<div id="hdp_'.$id.'" style="width:'.$hdiv_width.'px;height:'.$hdiv_height.'px;">';
$output.='<div id="drag_bar" style="cursor:move;height:30px;">'.$hdiv_header.'<a id="hdpc_hdp_'.$id.'" href="javascript:hideDlg(\'hdp_'.$id.'\');"><img style="float:right;cursor:pointer;" onmousedown="event.cancelBubble=true;if(event.preventDefault) event.preventDefault();" src="'.$rel_path.'innovaeditor/scripts/icons/btnClose.gif"'.$f_ct.'</a></div>';
$output.='<div id="hdps_hdp_'.$id.'"><div id="hd_hdp_'.$id.'">'.$content
.'<div style="text-align:right;"><input class="inpBtn" type="submit" name="add_to_group" value=" '.$btn_1.' " style="vertical-align:top;"' .$f_ct.' '.'<input class="inpBtn" type="button" value=" '.$btn_2.' " onclick="hideDlg(\'hdp_'.$id.'\');"'.$f_ct.'</div>'.'</div></div></div>';
return $output;
}
function f_getmime($ext)
{
if(strpos($ext,'tif')!==false) $mime='image/tiff';
elseif(strpos($ext,'png')!==false) $mime='image/png';
elseif(strpos($ext,'gif')!==false) $mime='image/gif';
elseif(strpos($ext,'jp')!==false) $mime='image/jpeg';
elseif(strpos($ext,'pdf')!==false) $mime='application/pdf';
elseif(strpos($ext,'swf')!==false) $mime='application/x-shockwave-flash';
elseif(strpos($ext,'doc')!==false) $mime='application/msword';
elseif(strpos($ext,'wav')!==false) $mime='audio/wav';
elseif(strpos($ext,'avi')!==false) $mime='video/avi';
else $mime='audio/mpeg3';
return $mime;
}
function f_countries($first_item)
{
global $f_countries_list;
$res=array_merge(array('Select'=>$first_item),$f_countries_list);
return $res;
}
function f_int_start_session($flag='')
{
$ssp='';
if(($ssp!='')&&(strpos($ssp,'%SESSIONS_')===false)) session_save_path($ssp);
session_start();
if($flag=='private') header("Cache-control: private");
}
function f_regenerate_session_id(){if(function_exists('session_regenerate_id') && version_compare(phpversion(),"4.3.3",">=") ) session_regenerate_id();}
function f_get_session_var($Var) {return (isset($_SESSION[$Var])? $_SESSION[$Var]: "");}
function f_get_session_var_str($var) {return f_strip_tags(f_get_session_var($var));}
function f_set_session_var($Var,$varValue) {$_SESSION[$Var]=$varValue;}
function f_is_logged($Var) {return (""!=f_get_session_var($Var));}
function f_unset_session()
{
$_SESSION=array();
if(isset($_COOKIE[session_name()])) setcookie(session_name(),'',time()-42000,'/');
session_destroy();
}
function f_url_redirect($url,$temp_redirect_on,$close_tg='')
{
global $f_ct;
if(false) echo '<meta http-equiv="refresh" content="0;url='.$url.'"'.$f_ct;
else {if($temp_redirect_on) header("HTTP/1.0 307 Temporary redirect"); header("Location: $url");}
}
function f_GFS($src,$start,$stop)
{
if($start=='')$res=$src;
else if(strpos($src,$start)===false){$res='';return $res;}
else $res=substr($src,strpos($src,$start)+strlen($start));
if(($stop!='')&&(strpos($res,$stop)!==false))$res=substr($res,0,strpos($res,$stop));
return $res;
}
function f_GFSAbi($src,$start,$stop){$res2=f_GFS($src,$start,$stop);return $start.$res2.$stop;}
function f_my_substr($string,$start,$stop,$utf_date_flag=false)
{
$c=$string;$f=ord($c[0]);$nb=$stop;
if($f>=0 && $f<=127) $nb=$stop;
if($f>=192 && $f<=223 && !$utf_date_flag) $nb=$stop;
if($f>=192 && $f<=223 && $utf_date_flag) $nb=$stop*2;
if($f>=224 && $f<=239 && $utf_date_flag) $nb=$stop*3;
if($f>=240 && $f<=247 && $utf_date_flag) $nb=$stop*4;
if($f>=248 && $f<=251 && $utf_date_flag) $nb=$stop*5;
if($f>=252 && $f<=253 && $utf_date_flag) $nb=$stop*6;
return substr($string,$start,$nb);
}
function f_strtolower($s)
{
global $f_uni,$f_use_mb;
return ($f_uni)?(($f_use_mb)?mb_strtolower($s,"UTF-8"):$s):strtolower($s);
}
function f_strtoupper($s)
{
global $f_uni,$f_use_mb;
return ($f_uni)?(($f_use_mb)?mb_strtoupper($s,"UTF-8"):$s):strtoupper($s);
}
function f_str_replace_once($needle,$replace,$haystack)
{
$pos=strpos($haystack,$needle);if($pos===false) return $haystack;
$result=substr_replace($haystack,$replace,$pos,strlen($needle));
return $result;
}
function f_validate_email($email)
{
if(!strlen($email)) return false;
if(!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/',$email)) return false;
if(preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/',$email)) return false;
if(!preg_match('/([0-9a-zA-Z_]{1})\@./',$email)) return false;
if(!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email)) return false;
if(preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email)) return false;
if(preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email)) return false;
if(!preg_match('/\.([a-zA-Z]{2,5})$/',$email)) return false;
return true;
}
function f_color_picker($edit,$root_path='../')
{
global $f_ct;
$hex=array('00','33','66','99','cc','ff');
$area='<area href="javascript:void(0);" onclick="javascript:tS'.$edit.'(\''.$edit.'\', \'#%s\');" coords="%s,%s,%s,%s" alt="" shape="rect"'.$f_ct;
$result='<img alt="Color Picker" usemap="#cp1'.$edit.'" src="'.$root_path.'ezg_data/colorpicker.png"'.$f_ct;
$result.='<map name="cp1'.$edit.'">';
for($i=0;$i<6;$i++)
for($k=0;$k<6;$k++)
for($j=0;$j<6;$j++){$l=($i*72)+($j*12)+1;$t=($k*12)+1;$color=$hex[$i].$hex[$k].$hex[$j];$result.=sprintf($area,$color,$l,$t,$l+12,$t+12);}
$result.='</map>';
$result.='<script type="text/javascript">function tS'.$edit.'(element,color){document.getElementById(element).value=color; document.getElementById(element).style.background=color; } </script>';
return $result;
}
//commented id:1
function f_draw_captcha($captcha,$root='../')
{
global $f_captcha_img_type,$f_captcha_size;
$sa=array(16,25,'csmall.gif',1,2,25,30,'cmedium.gif',3,2,45,50,'clarge.gif',4,6);
$ss=($f_captcha_size=='small')?0:(($f_captcha_size=='medium')?5:10);
$g=$f_captcha_img_type=='gif';
$h=($g)?($sa[$ss]+2):18;
$w=($g)?(($sa[$ss+1]*4)+2):105;
$im=imagecreate($w,$h);
if($g)
{
$src=imagecreatefromgif($root.'ezg_data/'.$sa[$ss+2]);
$clr1=imagecolorallocate($im,255,255,255);
}
else
{
$bg=imagecolorallocate($im,255,255,255);
for($i=0;$i<100;$i++){$clr2=imagecolorallocate($im,rand(110,255),rand(110,255),rand(110,255));$x=rand(0,105);$y=rand(0,18);imageline($im,$x,$y,$x+rand(0,3),$y+2,$clr2);}
for($i=0;$i<10;$i++){$x=rand(0,120);$y=rand(0,18);$xs=rand(180,255);$clr2=imagecolorallocate($im,$xs,$xs,$xs);imagearc($im,$x,$y,rand(10,30),rand(15,30),rand(0,360),rand(180,360),$clr2);}
$clr1=imagecolorallocate($im,120,120,120);
}
imagerectangle($im,0,0,$w-1,$h-1,$clr1);
$result='';
for($i=0;$i<strlen($captcha);$i++)
{
$char=substr($captcha,$i,1);
$or=ord($char)-65;
$xaz=25;
if($g){$yas2=rand(-1,$sa[$ss+3]);$xas2=rand(-$sa[$ss+4],$sa[$ss+4]);imagecopy($im,$src,($i*$sa[$ss+1])+1,1,0,($or*$sa[$ss])+$yas2,$sa[$ss+1],$sa[$ss]);}
else{$xas2=rand(5,14);$yas2=rand(-1,3);$clr=imagecolorallocate($im,rand(0,110),rand(0,110),rand(0,110));imagestring($im,5,$i*$xaz+$xas2,$yas2,$char,$clr);}
}
$img_type=(function_exists("image".$f_captcha_img_type))?$f_captcha_img_type:((function_exists("imagegif"))?'gif':(function_exists("imagejpeg"))?'jpeg':((function_exists("imagepng")))?'png':'');
if($img_type!='')
{
header("Content-type: image/$img_type");
if($img_type=='gif') imagegif($im);elseif($img_type=='jpeg') imagejpeg($im);elseif($img_type=='png') imagepng($im);
}
imagedestroy($im);
}
function f_generate_captcha_code()
{
if(!isset($_SESSION)) f_int_start_session();
$str="";
for($i=0;$i<4;$i++) $str.=chr(rand(97,122));
return $str;
}
function f_generate_captcha_code2(){$str=strtoupper(f_generate_captcha_code());$_SESSION['CAPTCHA_CODE']=md5($str);return $str;}
function f_draw_captcha2($root='../') {$code=f_generate_captcha_code2();f_draw_captcha($code,$root);}
function f_is_able_build_img()
{
if(function_exists('imagecreate') && (function_exists('imagegif') || function_exists('imagejpeg') || function_exists('imagepng'))) return true;
else return false;
}
function f_days_in_feb($year)
{
if($year<0) $year++;
$year+=4800;
if(($year%4)==0)
{
if(($year%100)==0) {if(($year%400)==0) {return(29);} else {return(28);}}
else return(29);
}
else return(28);
}
function f_days_in_month($month,$year)
{
if($month==2) return f_days_in_feb($year);
else
{
if($month==1 || $month==3 || $month==5 || $month==7 || $month==8 || $month==10 || $month==12) return(31);
else return(30);
}
}
function f_DecodeDate($days,&$Year,&$Month,&$Day)
{
$D1=365;$D4=($D1*4)+1;$D100=($D4*25)-1;$D400=($D100*4)+1;
$MonthDays=array(array(31,28,31,30,31,30,31,31,30,31,30,31),array(31,29,31,30,31,30,31,31,30,31,30,31));
$days+=693594;$days--;$Y=1;
while($days >= $D400){$days-=$D400;$Y+=400;}
DivMod($days,$D100,$I,$D);
if($I==4){$I++;$D+=$D100;}
$Y+=$I*100;DivMod($D,$D4,$I,$D);$Y+=$I*4;DivMod($D,$D1,$I,$D);
if($I==4){$I--;$D+=$D1;}
$Y+=$I;
$leap=($Y % 4 == 0)&&(($Y % 100 <> 0)||($Y % 400 == 0));
$DayTable=$MonthDays[$leap];$M=1;
while(true) {$I=$DayTable[$M-1];if($D<$I) break;$D-=$I;$M++;}
$Year=$Y;$Month=$M;$Day=$D+1;
}
function f_define_os($agent)
{
$result='';
if(strpos($agent,'Win')!==false)
{
if(strpos($agent,'Win32')!==false || strpos($agent,'Windows NT 5.1')!==false) $result='WinXP';
elseif(strpos($agent,'Windows NT 6.0')!==false) $result='WinVista';
elseif(strpos($agent,'Windows NT 5.2')!==false) $result='W2003';
elseif(strpos($agent,'Windows NT 5.0')!==false) $result='W2000';
elseif(strpos($agent,'Windows NT')!==false) $result='WinNT';
elseif(strpos($agent,'Windows 98')!==false) $result='Win98';
elseif(strpos($agent,'Windows 95')!==false) $result='Win95';
else $result='Windows';
}
elseif(strpos($agent,'Linux')!==false || strpos($agent,'FreeBSD')!==false) $result='Linux';
elseif(strpos($agent,'Debian')!==false || strpos($agent,'Ubuntu')!==false) $result='Linux';
elseif(strpos($agent,'Mac_PowerPC')!==false || strpos($agent,'Macintosh')!==false) $result='Mac';
elseif(strpos($agent,'Mac')!==false) $result='Mac';
return $result;
}
function xtract($text,$num)
{
if(preg_match_all('/\s+/',$text,$junk) <= $num) return $text;
$text=preg_replace_callback('/(<\/?[^>]+\s+[^>]*>)/','_abstractProtect',$text);
$words=0;
$out=array();$stack=array();
$tok=strtok($text,"\n\t ");
while($tok!==false and strlen($tok))
{
if(preg_match_all('/<(\/?[^\x01>]+)([^>]*)>/',$tok,$matches,PREG_SET_ORDER))
{foreach($matches as $tag) _recordTag($stack,$tag[1],$tag[2]);}
$out[]=$tok;
if(! preg_match('/^(<[^>]+>)+$/', $tok)) ++$words;
if($words==$num) break;
$tok=strtok("\n\t ");
}
$result=_abstractRestore(implode(' ', $out));
$stack=array_reverse($stack);
if($words==$num) $result.=' ...';
foreach($stack as $tag) $result.="</$tag>";
return $result;
}
function _abstractProtect($match) {return preg_replace('/\s/',"\x01",$match[0]);}
function _abstractRestore($strings){return preg_replace('/\x01/',' ',$strings);}
function _recordTag(&$stack, $tag, $args)
{
if(strlen($args) && $args[strlen($args)-1]=='/') return;
elseif($tag[0]=='/')
{
$tag=substr($tag,1);
for($i=count($stack)-1;$i>=0;$i--){if($stack[$i]==$tag){array_splice($stack,$i,1);return;}}
return;
}
elseif(in_array(strtolower($tag),array('h1','h2','h3','h4','h5','h6','p','li','ul','ol','div','span','a','strong','b','i','u','em','blockquote','font','h','td','tr','tbody','table'))) $stack[]=$tag;
}
function f_split_html_content($string, $max_chr) {return xtract($string,$max_chr/4);}
function f_un_esc($s) {return str_replace(array('\\\\','\\\'','\"'), array( '\\','\'','"'), $s);}
function f_esc($s) {return (get_magic_quotes_gpc()? $s: str_replace(array('\\','\'','"'), array('\\\\','\\\'','\"'), $s));}
function f_sth($s) {return htmlspecialchars(str_replace(array('\\\\','\\\'','\"',"%2C"),array('\\','\'','"',","),$s), ENT_QUOTES);}
function f_sth_2($s) {return str_replace(array('\\\\','\\\'','\"',"%2C",'<?','?>'),array('\\','\'','"',",",'<?','?>'),$s);}
function f_strip_tags($src) { $src=urldecode($src); $src=strip_tags($src); return $src; }
/* ------------------ read/write db files functions ------------------- */
function f_read_file($filename)
{
$contents='';
clearstatcache();
if(file_exists($filename))
{
$fsize=filesize($filename);
if($fsize>0) {$fp=fopen($filename,'r');$contents=fread($fp,$fsize);fclose($fp);}
}
if(get_magic_quotes_runtime()) $contents=stripslashes($contents);
return $contents;
}
function f_read_tagged_data($file,$tag)
{
$file_contents=f_read_file($file);
$setting=f_GFS($file_contents,'<'.$tag.'>','</'.$tag.'>');
return $setting;
}
function f_read_tagged_data_a($file,$tag)
{
$file_contents=f_read_file($file);
$setting=array();
foreach($tag as $k=>$v) $setting[$v]=f_GFS($file_contents,'<'.$v.'>','</'.$v.'>');
return $setting;
}
function f_write_tagged_data($tags,$newset,$db_settings_file,$template_fname,$del_flag=false)
{
$file_contents='<?php echo "hi"; exit; /* */ ?>';
if(!file_exists($db_settings_file)) {print f_fmt_in_template($template_fname,f_fmt_error_msg('MISSING_DBFILE',$db_settings_file));exit;}
elseif(!$fp=fopen($db_settings_file,'r+')) {print f_fmt_in_template($template_fname,f_fmt_error_msg('DBFILE_NEEDCHMOD',$db_settings_file));exit;}
else
{
flock($fp,LOCK_EX);
$fsize=filesize($db_settings_file);
if($fsize>0) $file_contents=fread($fp,$fsize);
if(!is_array($tags)) {$tags_arr=array($tags); $newset_arr=array($newset);}
else {$tags_arr=$tags;$newset_arr=$newset;}
foreach($tags_arr as $k=>$type)
{
if(strpos($file_contents, "<$type>")!==false)
{
$oldsettings=f_GFS($file_contents, "<$type>", "</$type>");
$file_contents=str_replace("<$type>".$oldsettings."</$type>",($del_flag==true?'':"<$type>".$newset_arr[$k]."</$type>"),$file_contents);
}
else $file_contents=str_replace("*/ ?>", "<$type>".$newset_arr[$k]."</$type>*/ ?>",$file_contents);
}
ftruncate($fp,0);fseek($fp,0);
if(fwrite($fp,$file_contents)===FALSE) {print "Cannot write to file";exit;}
flock($fp,LOCK_UN);fclose($fp);
return true;
}
}
function f_read_lang_set($file, $lang, $page_type, $period_list=array())
{
global $f_day_names,$f_month_names;
$result=array();
if(file_exists($file) && (filesize($file)>0))
{
$read_f=false;
$fp=fopen($file,'r');
while($data=fgets($fp,25000))
{
if(isset($data) && !empty($data))
{
if(strpos($data,'[END]')!==false && $read_f) break;
elseif($read_f) {$label=explode('=',$data); $default_lang_l["{$label[0]}"]=trim($label[1]);}
if(strpos($data,'[EN]')!==false) $read_f=true;
}
}
fseek($fp,0); $read_f=false;
while($data=fgets($fp,25000))
{
if(isset($data) && !empty($data))
{
if(strpos($data,'[END]')!==false && $read_f) break;
elseif($read_f)
{
$label=explode('=',$data);
if(in_array($page_type,array('blog','podcast','photoblog','calendar','guestbook')))
{
if(in_array($label[0],$f_day_names)) $new_day_name[]=trim($label[1]);
elseif(in_array($label[0],$f_month_names)) $new_month_name[]=trim($label[1]);
if($page_type=='calendar')
{
if(in_array($label[0],$period_list)) $new_period_list[]=trim($label[1]);
elseif(in_array($label[0],array('year','month','week'))) $new_repeatPeriod_list[]=ucfirst(trim($label[1]));
}
}
if(in_array($page_type,array('calendar','subscribe','ca','blog','podcast','photoblog','guestbook'))!==false) $new_lang_l["{$label[0]}"]=trim($label[1]);
}
if(strpos($data,'['.strtoupper($lang).']')!==false) {$read_f=true;}
}
}
fclose($fp);
if(isset($new_lang_l))
{ foreach($default_lang_l as $k=>$v) {if(isset($new_lang_l[$k])) $default_lang_l[$k]=$new_lang_l[$k];} $result['lang_l']=$default_lang_l;}
if(isset($new_day_name)) $result['day_name']=$new_day_name;
if(isset($new_month_name)) $result['month_name']=$new_month_name;
if(isset($new_period_list)) $result['period_list']=$new_period_list;
if(isset($new_repeatPeriod_list)) $result['repeatPeriod_list']=$new_repeatPeriod_list;
}
return $result;
}
/* ------------------ central admin functions ------------------- */
function f_get_sitemap($root_path,$incl_cats=false)
{
global $f_sitemap_fname;
$result=array();
$filename=(strpos($root_path,'sitemap.php')!==false)?$root_path:$root_path.$f_sitemap_fname;
if(file_exists($filename))
{
$fsize=filesize($filename);
if($fsize>0)
{
$fp=fopen($filename,'r');$content=fread($fp,$fsize);fclose($fp);
$lines_a=explode("\n",$content);$count=count($lines_a);
for($i=1;$i<$count;$i++)
{
if(strpos($lines_a[$i],'<?php echo "hi"; exit; /*')===false && strpos($lines_a[$i],'*/ ?>')===false)
{ if($incl_cats || strpos($lines_a[$i],'<id>')!==false) $result[]=explode("|",trim($lines_a[$i])); }
}
}
}
return $result;
}
function f_get_page_params($id,$root_path='../')
{
$result='';
$all_pages=f_get_sitemap($root_path);
foreach($all_pages as $k=>$v) {if($v[10]=='<id>'.$id) {$result=$v;break;}}
return $result;
}
function f_format_users($users, $user_as_index_in_result=false)
{
$users_array=array();$details_arr=array();$i=1;
while(strpos($users,'<user id="')!==false)
{
$i=f_GFS($users,'<user id="','" ');
$all='<user id="'.$i.'" '.f_GFS($users,'<user id="'.$i.'" ','</user>');
$basic=f_GFS($all,'<user id="'.$i.'" ','>').' ';
$details=f_GFS($all,'<details ','></details>').' ';
$access=f_GFS($all,'<access_data>','</access_data>').' ';
$news=f_GFS($all,'<news_data>','</news_data>').' '; // event manager
list($username,$password)=explode(' ',$basic);
$details_arr['email']=f_GFS($details,'email="','"');
$details_arr['name']=f_GFS($details,'name="','"');
$details_arr['sirname']=f_GFS($details,'sirname="','"');
$details_arr['creation_date']=f_GFS($details,'date="','"');
$details_arr['sr']=f_GFS($details,'sr="','"'); //self-registration flag
$status_flag=f_GFS($details,'status="','"');
$details_arr['status']=($status_flag!='')? $status_flag: '1'; //status flag
$access_arr=array(); $j=1;
while(strpos($access, '<access id="'.$j.'" ')!==false)
{
$access_full=f_GFSAbi($access,'<access id="'.$j.'" ','</access>');
$page_access_arr=array(); $m=1;
while(strpos($access_full,'<p id="'.$m.'" ')!==false)
{
$page_access_str=f_GFSAbi($access_full,'<p id="'.$m.'" ','>');
$page_access_arr []=array('page'=>f_GFS($page_access_str,'page="','"'), 'type'=>f_GFS($page_access_str,'type="','"'));
$m++;
}
$access_str=f_GFS($access_full,'<access id="'.$j.'" ','>');
list($section,$type)=explode(' ',$access_str);
$access_arr[]=array(substr($section,0,strpos($section,'='))=>f_GFS($section,'="','"'),substr($type,0,strpos($type,'='))=>f_GFS($type,'="','"'),'page_access'=>$page_access_arr);
$j++;
}
$news_arr=array();$j=1; // event manager
while(strpos($news,'<news id="'.$j.'" ')!==false)
{
$news_str=f_GFS($news,'<news id="'.$j.'" ','>');
list($page,$cat)=explode(' ',$news_str);
$news_arr []=array(substr($page,0,strpos($page,'='))=>f_GFS($page,'="','"'), substr($cat,0,strpos($cat,'='))=>f_GFS($cat,'="','"'));
$j++;
}
$user=f_GFS($username,'="','"');
if($user_as_index_in_result)
$users_array[$user]=array('id'=>$i,'username'=>$user,'password'=>f_GFS($password,'="','"'),'access'=>$access_arr,'details'=>$details_arr, 'news'=>$news_arr);
else
$users_array[]=array('id'=>$i,'username'=>$user,'password'=>f_GFS($password,'="','"'),'access'=>$access_arr,'details'=>$details_arr, 'news'=>$news_arr);
$users=str_replace($all,'',$users);
}
return $users_array;
}
function f_get_all_users($root_path,$user_as_index_in_result=false)
{
global $f_ca_db_fname;
$users_arr=array();
$filename=(strpos($root_path,'centraladmin.ezg.php')!==false)?$root_path:$root_path.$f_ca_db_fname;
$src=f_read_file($filename);
$users=f_GFS($src,'<users>','</users>');
if($users!='') $users_arr=f_format_users($users,$user_as_index_in_result);
return $users_arr;
}
function f_get_user($username,$root_path,$by_email='')
{
$specific_user=array();
$users_arr=f_get_all_users($root_path);
if(!empty($users_arr))
{
if($by_email!='') { foreach($users_arr as $k=>$v){if($v['details']['email']==$by_email) {$specific_user=$v;break;}} }
else { foreach($users_arr as $k=>$v){if(array_search($username,$v)!==false) {$specific_user=$v;break;}} }
}
$users_arr='';
return $specific_user;
}
function f_get_users_pg($page_id,$root_path)
{
global $f_ca_db_fname,$f_sitemap_fname;
$result=array();
$all_users=f_get_all_users($root_path.$f_ca_db_fname);
$page_info=f_get_page_params($page_id,$root_path.$f_sitemap_fname);
foreach($all_users as $key=>$user)
{
if($user['access'][0]['section']=='ALL') $result[]=$user['username'];
else
{
foreach($user['access'] as $k=>$v)
{
if($page_info[7]==$v['section'])
{
if($v['type']!='2') $result[]=$user['username'];
elseif(isset($v['page_access']))
{
foreach($v['page_access'] as $kk=>$vv) {if($page_id==$vv['page']) {$result[]=$user['username']; break;} }
}
}
}
}
}
$result=array_unique($result);
return $result;
}
function f_has_read_access($user_account,$prot_page_info,$pawd='none',$non_pass_flag=true)
{
$auth=false;$section_flag=false;$write_flag=false;$access=false;
if(isset($prot_page_info[1])) $prot_page_name=$prot_page_info[1];
$page_id=str_replace('<id>','',$prot_page_info[10]);
if(isset($user_account['username'])) $user=$user_account['username'];
if(!empty($user_account) && ($user_account['details']['status']=='1') && isset($prot_page_info[1]))
{
$pass=$user_account['password'];
if($user_account['access'][0]['section']!='ALL')
{
foreach($user_account['access'] as $k=>$v)
{
if($prot_page_info[7]==$v['section'])
{
$section_flag=true;
if($v['type']=='0') {$access=true;}
elseif($v['type']=='1') {$write_flag=true; $access=true;}
elseif($v['type']=='2' && isset($v['page_access']))
{
foreach($v['page_access'] as $key=>$val)
{
if($page_id==$val['page'] && ($val['type']=='1' || $val['type']=='3')) {$write_flag=true;$access=true;break;}
elseif($page_id==$val['page'] && $val['type']=='0') {$access=true;break;}
}
}
break;
}
}
}
else
{
$section_flag=true; $access=true;
if($user_account['access'][0]['type']=='1') $write_flag=true;
}
if($user_account['username']==$user && ($pass==crypt($pawd,$pass) || $non_pass_flag) && $section_flag)
{
$auth=$write_flag || (!isset($_GET['indexflag']) && $access);
}
}
return $auth;
}
function f_has_write_access($user,$page_info,$root_path='../')
{
global $f_ca_db_fname;
$access=false;
$page_id=str_replace('<id>','',$page_info[10]);
$user_account=f_get_user($user,$root_path.$f_ca_db_fname);
if(!empty($user_account) && ($user_account['details']['status']=='1') && isset($page_info[7]) && $page_info[7]!='')
{
if($user_account['access'][0]['section']!='ALL' && $user_account['username']==$user)
{
foreach($user_account['access'] as $k=>$v)
{
if($page_info[7]==$v['section'])
{
if($v['type']=='1') {$access=true;}
elseif($v['type']=='2' && isset($v['page_access']))
{
foreach($v['page_access'] as $key=>$val)
{
if($page_id==$val['page'] && ($val['type']=='1' || $val['type']=='3')) {$access=true;break;}
}
}
break;
}
}
}
elseif($user_account['username']==$user) {if($user_account['access'][0]['type']=='1') $access=true;}
}
return $access;
}
function f_has_register_access($user,$page_info,$root_path='../')
{
$auth=false;
$user_account=f_get_user($user,$root_path);
if(!empty($user_account) && ($user_account['details']['status']=='1'))
{
if($user_account['access'][0]['section']!='ALL' && $user_account['username']==$user)
{
foreach($user_account['access'] as $k=>$v)
{
if($page_info[7]==$v['section']) {$auth=true; break;}
}
}
elseif($user_account['username']==$user) {$auth=true;}
}
return $auth;
}
function f_user_edit_own_check($user,$user_account,$page_info)
{
$result=false;
$page_id=str_replace('<id>','',$page_info[10]);
if(!empty($user_account) && ($user_account['access'][0]['section']!='ALL') && $user_account['username']==$user)
{
foreach($user_account['access'] as $k=>$v)
{
if($page_info[7]==$v['section'])
{
if($v['type']=='2' && isset($v['page_access']))
{
foreach($v['page_access'] as $key=>$val) { if($page_id==$val['page'] && $val['type']=='3') {$result=true;break;} }
}
break;
}
}
}
return $result;
}
# ------------ functions generating HTML -----------------
# builds logged user menu (logout, change pass, edit profile), represented in EZG with %LOGGED_INFO% macro
function f_build_logged_info($content,$page_id,$root_path,$script_path,$lg='')
{
$code="<?php if(function_exists('user_navigation'))";
if(strpos($content,$code)!==false)
{
if(!isset($_SESSION)) f_int_start_session();
$logged_as_caadmin=isset($_SESSION['SID_ADMIN']); $logged_as_causer=isset($_SESSION['cur_user']);
if($logged_as_caadmin || $logged_as_causer)
{
$logged_user=$logged_as_caadmin? $_SESSION['SID_ADMIN']: $_SESSION['cur_user'];
while(strpos($content,$code)!==false)
{
$params_raw=f_GFSAbi($content,$code,"?>");
if($params_raw!='')
{
$logged_info='';
$params=explode(',',str_replace("'",'',f_GFS($params_raw,'user_navigation(',')')));
if(strtolower(implode('',$params))=="username") $logged_info=$logged_user;
else
{
$captions=array();$urls=array();
if(strpos($root_path,'documents')===false) $ca_url=$root_path.'documents/centraladmin.php?';
else $ca_url=$root_path.'centraladmin.php?';
if($logged_as_caadmin)
{
$captions[]=$params[1];$urls[]=$ca_url.'process=index&'.$lg;
$captions[]=$params[2];$urls[]=$ca_url.'process=logoutadmin&pageid='.$page_id.'&'.$lg;
}
elseif($logged_as_causer)
{
$captions[]=$params[0].' ['.$logged_user.']'; $urls[]='';
$ca_expanded_url=$ca_url.'&username='.$logged_user.'&pageid='.$page_id.'&ref_url='.urlencode($script_path).'&process=';
$captions[]=$params[3]; $urls[]=$ca_expanded_url.'changepass&'.$lg;
$captions[]=(isset($params[4])?$params[4]:'edit profile'); $urls[]=$ca_expanded_url.'editprofile&'.$lg;
$captions[]=$params[2]; $urls[]=$ca_url.'process=logout&pageid='.$page_id.'&'.$lg;
}
$logged_info=f_admin_navigation($captions,$urls);
}
$content=str_replace($params_raw,$logged_info,$content);
}
}
}
else { $content=str_replace(f_GFSAbi($content,$code,"?>"),'',$content); }
}
return $content;
}
function f_admin_filter_bar($fast_nav,$left_content,$right_content)
{
global $f_br;
$devider='<span class="rvts8"> | </span>';
$fast_nav_items=$fast_nav[0];
$fast_nav_selected=$fast_nav[1];
$output='<div style="position:relative;height:25px;width:100%;">';
foreach($fast_nav_items as $k=>$v)
{
$class=(((!isset($v['status']) && $fast_nav_selected=='') || (isset($v['status']) && $v['status']==$fast_nav_selected))?"rvts8":"rvts12");
if($k!=0) $output.=$devider;
$output.='<a class='.$class.' style="text-decoration:none;" href="'.$v['url'].'">'.$v['label'].' ('.$v['count'].')</a>';
}
$output.='</div><div style="position:relative;height:30px;width:100%;"><div style="position:absolute;top:0px;left:0;">'.$left_content.'</div>' .'<div style="position:absolute;top:0px;right:0px">'.$right_content.'</div></div>';
return $output;
}
# builds admin screen navigation menu ("selected" is index number)
function f_admin_navigation($captions, $urls, $selected='')
{
$output='<div style="padding:2px;text-align:center;">';
foreach($captions as $k=>$v)
{
$format_user='';$value=$v;
if(empty($urls[$k])) $output.=' <span class="rvts8">'.$value.'</span> ::';
elseif($k==$selected) $output.=' <a class="rvts8" href="'.$urls[$k].'">'.$value.'</a> ::';
else
{
if(strpos($v,'[')!==false)
{ $user=f_GFSAbi($v,'[',']');$format_user=' <span class="rvts8">'.$user.'</span>'; $value=str_replace($user,'',$v);}
if(!empty($v) && $v!=' ') $output.=' <a class="rvts12" href="'.$urls[$k].'">'.$value.'</a>'.$format_user.' ::';
}
}
$output.='<!--end_ca_header--></div>';
return $output;
}
# formats admin screen output
function f_fmt_admin_screen($content,$menu='')
{
global $f_br;
$output="<div style='padding:3px;margin: 0 auto;text-align:center;'>";
if(!empty($menu)) $output.=$menu.$f_br;
$output.=$content.'</div>';
return $output;
}
# formats admin screen title
function f_fmt_admin_title($title) {return '<span class="rvts8" style="font-variant:small-caps"><b>'.$title.'</b></span>';}
# formats page output in template
function f_fmt_in_template($filename,$page_output,$css='',$bg_tag='',$include_menu=true,$include_counter=false)
{
global $f_template_source;
if((strpos($filename,'../')!==false) &&(strpos($f_template_source,'../')===false)) $f_template_source='../'.$f_template_source;
if(file_exists($f_template_source)) $filename=$f_template_source;
$contents=f_read_file($filename);
if(strpos($filename,'template_source.html')!==false && strpos($contents,'%CONTENT%')!==false) $pattern='%CONTENT%';
elseif(strpos($contents,'<!--page-->')!==false && $include_menu) $pattern=f_GFS($contents,'<!--page-->','<!--/page-->');
else
{
$contents=str_replace(array('<BODY','</BODY'),array('<body','</body'),$contents);
$pattern=f_GFSAbi($contents,'<body','</body>');
$body_part=substr($pattern, 0, strpos($pattern,'>')+1);
if($bg_tag!=='') $body_part=str_replace('<body','<body style="'.$bg_tag.'"',$body_part);
$page_output=$body_part.$page_output.'</body>';
}
$contents=str_replace($pattern,$page_output,$contents);
if($include_counter==false) $contents=str_replace(f_GFS($contents,'<!--counter-->','<!--/counter-->'),'',$contents);
if(!empty($css)) $contents=str_replace('<!--scripts-->','<!--scripts-->'.$css, $contents);
return $contents;
}
function f_format_err_msg($msg){ global $f_br;return "<span class='rvts8'><em style='color:red;'>".$msg."</em></span>".$f_br;}
function f_fmt_error_msg($error_index, $affected_file='', $page_type='')
{
global $f_br,$f_ct;
$error_messages=array('MISSING_DBFILE'=>'Database file '.$affected_file.' is missing on server.',
'READFILE_FAILED'=>'Can\'t read database file '.$affected_file.'.',
'DBFILE_NEEDCHMOD'=>'Database file '.$affected_file.' doesn\'t have WRITE permissions.',
'EMAIL_NOTSET'=>'YOU HAVEN\'T DEFINED YOUR E-MAIL YET!!!',
'MAIL_FAILED'=>'Missing mail settings');
$output=$f_br."<span class='rvts4'><em style='color: red;'>";
if($error_index=='MAIL_FAILED') $output.='Email FAILED';
elseif($error_index!='EMAIL_NOTSET') $output.='Operation FAILED!';
else $output.='Page WILL NOT WORK!';
$output.="</em>";
$output.=$f_br.$f_br."REASON: ".$error_messages[$error_index];
if($error_index=='MISSING_DBFILE')
$output.=$f_br.$f_br."To SOLVE the problem, go to <em style='color: red;'>EZGenerator >> Project Settings >> Upload tab >></em>, press <em style='color: red;'>Re-upload Data</em> button and then run <em style='color: red;'>Upload</em>.";
elseif($error_index=='DBFILE_NEEDCHMOD')
$output.=$f_br.$f_br."To SOLVE the problem, connect to your server and set file permissions manually. If server is <em style='color: red;'>LINUX</em>, set <em style='color: red;'>CHMOD 666</em>. If server is <em style='color: red;'>Windows</em>, set <em style='color: red;'>WRITE permission</em>.";
elseif($error_index=='EMAIL_NOTSET')
$output.=$f_br.$f_br."To SOLVE the problem, go to <em style='color: red;'>EZGenerator >> ".strtoupper($page_type)." SETTINGS panel</em> and type your email address in <em style='color: red;'>E-MAIL</em> box.".$f_br.$f_br.(($page_type=='subscribe')?'<img src="http://ezg.e-officedirect.com/scripts/subscribe.gif" alt=""'.$f_ct:'');
elseif($error_index=='MAIL_FAILED')
$output.=$f_br.$f_br."To SOLVE the problem, check with your host provider if your server uses MAIL or SMTP for sending mails. $f_br If SMTP is used, get the smtp settings from your host provider, go to <em style='color: red;'>EZGenerator >> Project Settings >> PHP tab >></em> and set the smtp settings. $f_br If MAIL is used, check with your host provider if mail settings are correctly set.";
$output.="</span>";
return $output;
}
function f_rss_line($tag, $rss_setting, $fl_flag=false, $f_sth=false)
{
global $f_lf;
$t=($fl_flag)?' ':'';
return $t."<$tag>".($f_sth? f_sth($rss_setting): $rss_setting)."</$tag>".$f_lf;
}
function f_rss_line_st($line, $fl_flag=false)
{
global $f_lf;
$t=($fl_flag)?' ':'';
return $t.$line.$f_lf;
}
function f_build_rss_header($rss_settings,$page_charset,$page_url,$publish_date,$rss_header='',$fl_flag=false)
{
global $f_lf;
if(!isset($rss_settings['Subtitle (iTunes)'])) $rss_header='<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
else $rss_header='<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
$pub_date=date('r',$publish_date);
$output='<?xml version="1.0" encoding="'.$page_charset.'"?>'.$f_lf;
$output.=f_rss_line_st($rss_header,$fl_flag).f_rss_line_st('<channel>',$fl_flag);
$title=empty($rss_settings['Title'])?'My site':$rss_settings['Title'];
if(strpos($rss_header,'xmlns:atom')!==false)
$output.=f_rss_line_st('<atom:link href="'.$page_url.'?action=rss" rel="self" type="application/rss+xml"/>',$fl_flag);
$output.=f_rss_line('title',$title,$fl_flag,true).f_rss_line('link',$page_url,$fl_flag)
.f_rss_line('description',(empty($rss_settings['Description'])?'This is my site':$rss_settings['Description']),$fl_flag,true)
.f_rss_line('language',$rss_settings['Language'],$fl_flag).f_rss_line('pubDate',$pub_date,$fl_flag) .f_rss_line('lastBuildDate',$pub_date,$fl_flag)
.f_rss_line('docs','http://blogs.law.harvard.edu/tech/rss',$fl_flag);
$tags_list=array('copyright','managingEditor','webMaster','category','ttl','cloud','image','rating','textInput','skipHours','skipDays');
$settings_list=array('Copyright','Managing editor','Webmaster','Category','TTL','Cloud domain','Image','Rating','Text input title','Skip hours','Skip days');
foreach($settings_list as $k=>$v)
{
if(!empty($rss_settings[$v]))
{
$tag=$tags_list[$k]; $value=$rss_settings[$v];
if($v=='Category' && empty($rss_settings['Category domain'])) $output.=f_rss_line($tag,$value,$fl_flag,true);
elseif($v=='Category')
$output.=f_rss_line_st('<'.$tag.' domain="'.$rss_settings['Category domain'].'">'.$value.'</'.$tag.'>', $fl_flag, true);
elseif($v=='TTL' && $value!=0) $output.=f_rss_line($tag,$value,$fl_flag,true);
elseif($v=='Cloud domain')
$output.=f_rss_line_st('<'.$tag.' domain="'.$value.'" port="'.$rss_settings['Cloud port'].'" path="'.$rss_settings['Cloud path'].'" registerProcedure="'.$rss_settings['Cloud reg proc'].'" protocol="'.$rss_settings['Cloud protocol'].'"/>',$fl_flag);
elseif($v=='Image')
$output.=f_rss_line_st('<'.$tag.'>',$fl_flag).f_rss_line_st('<title>'.$title.'</title>',$fl_flag).f_rss_line_st('<link>'.$page_url.'</link>',$fl_flag).f_rss_line_st('<url>'.$value.'</url>',$fl_flag).f_rss_line_st('</'.$tag.'>',$fl_flag);
elseif($v=='Text input title')
$output.=f_rss_line_st('<'.$tag.' title="'.$value.'" description="'.$rss_settings['Text input description']
.'" name="'.$rss_settings['Text input name'].'" link="'.$rss_settings['Text input link'].'"></'.$tag.'>',$fl_flag);
else $output.=f_rss_line($tag, $value, $fl_flag,true);
}
}
// iTunes special tags <!-- iTunes prefers square images 300x300 pixels or larger and the image must be a jpeg or png -->
if(isset($rss_settings['Subtitle (iTunes)']))
{
$tags_list=array('itunes:summary','itunes:subtitle','itunes:author','itunes:image','itunes:owner','itunes:keywords','itunes:explicit','itunes:block','itunes:new-feed-url');
$settings_list=array('Description','Subtitle (iTunes)','Author (iTunes)','Image (iTunes)','Owner name (iTunes)','Keywords (iTunes)','Explicit (iTunes)', 'Block (iTunes)','New-feed-url (iTunes)');
foreach($settings_list as $k=>$v)
{
$tag=$tags_list[$k]; $value=$rss_settings[$v];
if($v=='Description') $output.=f_rss_line($tag, (empty($value)?'This is my podcast':$value), $fl_flag,true);
elseif($v=='Owner name (iTunes)' && (!empty($value) || !empty($rss_settings['Owner email (iTunes)'])) )
{
$output.=f_rss_line_st('<'.$tag.'>',$fl_flag);
if($rss_settings['Owner name (iTunes)']!='') $output.=f_rss_line('itunes:name',$rss_settings['Owner name (iTunes)'],$fl_flag,true);
if($rss_settings['Owner email (iTunes)']!='') $output.=f_rss_line('itunes:email',$rss_settings['Owner email (iTunes)'],$fl_flag,true);
$output.=f_rss_line_st('</'.$tag.'>',$fl_flag);
}
elseif(!empty($rss_settings[$v]))
{
if($v=='Image (iTunes)') $output.=f_rss_line_st('<'.$tag.' href="'.$value.'" />');
else $output.=f_rss_line($tag, $value, $fl_flag,true);
}
}
// iTunes categories
$itunes_cats=array('Category (iTunes)','Category II (iTunes)','Category III (iTunes)');
$itunes_subcats=array('Subcategory (iTunes)','Subcategory II (iTunes)','Subcategory III (iTunes)');
foreach($itunes_cats as $k=>$cat)
{
$subcat=$itunes_subcats[$k];
if(!empty($rss_settings[$cat]) && !empty($rss_settings[$subcat]))
{
$output.=f_rss_line_st('<itunes:category text="'.f_sth($rss_settings[$cat]).'">',$fl_flag);
$output.=f_rss_line_st('<itunes:category text="'.f_sth($rss_settings[$subcat]).'" />',$fl_flag);
$output.=f_rss_line_st('</itunes:category>',$fl_flag);
}
elseif(!empty($rss_settings[$cat])) $output.=f_rss_line_st('<itunes:category text="'.f_sth($rss_settings[$cat]).'"/>',$fl_flag);
}
}
return $output;
}
function f_build_rss_items($rss_data,$fl_flag=false)
{
$output='';
if(!empty($rss_data))
{
foreach($rss_data as $key=>$item)
{
$output.=f_rss_line_st('<item>',$fl_flag);
foreach($item as $tag=>$value)
{
if(!is_array($value))
{
if($tag=='guid') $output.=f_rss_line_st('<'.$tag.' isPermaLink="true">'.$value.'</'.$tag.'>',$fl_flag);
else $output.=f_rss_line($tag, $value, $fl_flag);
}
else
{
if($tag=='enclosure')
{$line='<'.$tag; foreach($value as $attr=>$v) $line.=' '.$attr.'="'.$v.'"'; $line.='/>'; $output.=f_rss_line_st($line,$fl_flag);}
elseif($tag=='category') $output.=f_rss_line_st('<'.$tag.' domain="'.$value['domain'].'">'.$value['value'].'</'.$tag.'>',$fl_flag);
}
}
$output.=f_rss_line_st('</item>',$fl_flag);
}
}
return $output;
}
function f_build_rss($rss_data,$rss_settings,$page_charset,$page_url,$publish_date,$rss_header='',$fl_flag=false)
{
$output=f_build_rss_header($rss_settings,$page_charset,$page_url,$publish_date,$rss_header,$fl_flag);
$output.=f_build_rss_items($rss_data,$fl_flag);
$output.=f_rss_line_st('</channel>',$fl_flag);
$output.=f_rss_line_st('</rss>',$fl_flag);
return $output;
}
# builds page navigation (1,2,3..) when records exceed certain max limit
function f_page_navigation($num_records,$page_url,$max,$page=1,$of_label='of',$style="class='rvts12'", $labels=array('first'=>'first','prev'=>'prev','next'=>'next','last'=>'last'),$pg_prefix='&')
{
$output='';
if($num_records>0)
{
if($max>0)
{
$output.='<div align="left" style="position:relative;padding-bottom:2px;height:14px;">';
if($num_records>$max)
{
$output.='<div>';
$n_pages=($num_records%$max==0? $num_records/$max: ceil($num_records/$max)); settype($n_pages, "integer");
if($page>1) $output.='<span class="rvts8">[</span><a '.$style.' href="'.$page_url.$pg_prefix.'page=1">'.strtoupper($labels['first']).'</a><span class="rvts8">]</span> ';
if(($page-1)>0) $output.='<span class="rvts8">[</span><a '.$style.' href="'.$page_url.$pg_prefix.'page='.($page-1).'">'.strtoupper($labels['prev']).'</a><span class="rvts8">]</span> ';
if($page>2 && $num_records>$max*$max) $output.='<span class="rvts8">... </span>';
if($num_records>$max*$max)
{
if($page==2) $st=$page-1;
elseif($page>2) $st=$page-2;
else $st=$page;
}
else $st=1;
for($i=$st;$i<=($num_records>$max*$max?($st+5):$n_pages);$i++)
{
if($i==$page) $output.='<span class="rvts8">['.$i.']</span>';
elseif($i<=$n_pages) $output.=' <a '.$style.' href="'.$page_url.$pg_prefix.'page='.$i.'">'.$i.'</a> ';
}
if($num_records>$max*$max && $page<$n_pages) $output.='<span class="rvts8"> ...</span>';
if($page<$n_pages) $output.=' <span class="rvts8">[</span><a '.$style.' href="'.$page_url.$pg_prefix.'page='.($page+1).'">'.strtoupper($labels['next']).'</a><span class="rvts8">]</span>';
if($page!=$n_pages) $output.=' <span class="rvts8">[</span><a '.$style.' href="'.$page_url.$pg_prefix.'page='.($n_pages).'">'.strtoupper($labels['last']).'</a><span class="rvts8">]</span>';
$output.='</div>';
}
if($num_records>0) {$output.='<div style="position:absolute;top:0px;right:0px"><span class="rvts8">'.(($page-1)*$max+1).' - '
.($max*$page>$num_records? $num_records: $max*$page).' '.$of_label.' '.$num_records.'</span></div>';}
$output.='</div>';
}
else $output.='<div style="text-align:right;padding-bottom:2px;"><span class="rvts8">1 - '.$num_records.' '.$of_label.' '.$num_records.'</span></div>';
}
return $output;
}
function f_build_input($name,$value,$style='',$max_len='',$type='text',$misc='')
{
global $f_ct;
$output='<input class="input1" type="'.$type.'" name="'.$name.'" value="'.$value.'" ';
if(!empty($style)) $output.='style="'.$style.'" ';
if(!empty($max_len)) $output.='maxlength="'.$max_len.'" ';
if(!empty($misc)) $output.=$misc.' ';
$output.=$f_ct;
return $output;
}
function f_build_input_cap($cap,$star,$name,$value,$style='',$max_len='',$type='text',$misc='')
{
global $f_fmt_span8,$f_fmt_star,$f_br;
$st=($star)?$f_fmt_star:'';
$res=sprintf($f_fmt_span8,$cap).$st.$f_br.f_build_input($name,$value,$style,$max_len,$type,$misc);
return $res;
}
function f_build_select($name,&$data,$selected,$style='',$mode='key',$jstring='')
{
$r='';
if(is_array($data) && !empty($data))
{
$r='<select class="input1" '.$jstring.' '.$style.' id="'.$name.'" name="'.$name."\">\n";
foreach($data as $k=>$v)
{
$k=($mode=='value'?$v:$k);
$r.='<option value="'.$k.'"';
if($k==$selected) $r.=' selected="selected"';
$r.='>'.$v.'</option>';
}
$r.='</select>';
}
return $r;
}
function f_build_tag_cloud($script_path,$all_records,$max_tags=50,$style='',$use_css=false, $use_flash=false)
{
$output='';
$tags_list=array();
$max_font_size=200; // max font size in %
$min_font_size=80; // min font size in %
foreach($all_records as $k=>$v)
{
$tags_per_record=explode(',',(urldecode($v['Keywords'])));
foreach($tags_per_record as $kk=>$tag)
{$tr_tag=strtolower(trim($tag)); if($tr_tag!=='' && array_key_exists($tr_tag, $tags_list)) $tags_list[$tr_tag]=$tags_list[$tr_tag]+1; else $tags_list[$tr_tag]=1; }
}
if(!empty($tags_list))
{
if((count($tags_list)>$max_tags))
{
arsort($tags_list);
$tags_count=0; $new_tags_list=array();
foreach($tags_list as $k=>$v)
{
$new_tags_list[$k]=$v;
$tags_count++;
if($max_tags<$tags_count)break;
}
$tags_list=$new_tags_list;
}
$max_freq=max(array_values($tags_list));
$min_freq=min(array_values($tags_list));
$diff=$max_freq-$min_freq;
if($diff==0) $diff=1;
ksort($tags_list);
$step=($max_font_size-$min_font_size)/$diff;
$output='';
foreach($tags_list as $k=>$v)
{
if($k!=='')
{
$size=round($min_font_size + (($v - $min_freq) * $step));
$uns=urlencode(stripslashes(urldecode($k)));
if(!$use_flash)
$output.='<li '.(!$use_css? 'style="display:inline;"': '').'><a '.$style.' href="'.$script_path."tag=".urlencode($k).'" style="'.(!$use_css?'white-space:nowrap;margin-right:8px;': '').'font-size:'.$size.'%;">' .stripslashes($k).'</a> </li>';
else
$output.="<a href='".$script_path."tag=".urlencode($k)."' style='font-size:+".(($size/100)*22)."pt'>".stripslashes($k)."</a>";
}
}
}
if(!empty($output) && !$use_flash) $output='<div><ul '.(!$use_css? 'style="font-size:12px;list-style-type:none;padding:0;margin:0;"': 'class="tcloud"') .'>'.$output.'</ul></div><div style="clear:left"></div>';
return $output;
}
function f_build_flash_tag($rel_path, $flash_tags_param, $tags_cloud, $cats='')
{
global $f_ct;
$p=$flash_tags_param;
$movie=$rel_path.'extdocs/tagcloud';
$w=200; $h=150; $tag_color="0x000000"; $tag_color2="0x808080"; $bg_color="#ffffff"; $wmode=false; $tspeed=100; $distr=true; $mode='tags';
if(!empty($p))
{
if(isset($p[0]) && !empty($p[0])) $w=$p[0];
if(isset($p[1]) && !empty($p[1])) $h=$p[1];
if(isset($p[2]) && !empty($p[2])) $tag_color="0x".$p[2];
if(isset($p[3]) && !empty($p[3])) $tag_color2="0x".$p[3];
if(isset($p[4]) && !empty($p[4])) $hi_color="0x".$p[4];
if(isset($p[5]) && !empty($p[5])) $bg_color="#".$p[5];
if(isset($p[6]) && !empty($p[6])) $wmode=$p[6];
if(isset($p[7]) && !empty($p[7])) $tspeed=$p[7];
if(isset($p[8]) && !empty($p[8])) $distr=$p[8];
if(isset($p[9]) && !empty($p[9])) $mode=$p[9];
}
$vars='tcolor='.$tag_color;
if(isset($tag_color2)) $vars.= '&tcolor2='.$tag_color2;
if(isset($hi_color)) $vars.= '&hicolor='.$hi_color;
$vars.= '&tspeed='.$tspeed. '&distr='.$distr. '&mode='.$mode;
if($mode!="cats") $vars.= '&tagcloud='.urlencode('<tags>').urlencode($tags_cloud).urlencode('</tags>');
if($mode!="tags") $vars.= '&categories='.urlencode($cats);
$output= '<script type="text/javascript"> AC_FL_RunContent("minversion","10,0,0,0","allowScriptAccess","sameDomain","movie","'.$movie.'","quality","high","src","'.$movie.'","width","'.$w.'","height","'.$h.'","FlashVars","'.$vars.'","wmode","'.($wmode=='true'?'transparent':'opaque').'","bgcolor","'.$bg_color .'","loop","false"); </script>';
$output.= '<noscript><object type="application/x-shockwave-flash" data="'.$movie.'.swf" width="'.$w.'" height="'.$h.'">';
$output.= '<param name="movie" value="'.$movie.'.swf"'.$f_ct.' <param name="bgcolor" value="'.$bg_color.'"'.$f_ct;
$output.= '<param name="AllowScriptAccess" value="always"'.$f_ct;
if($wmode=='true') $output.= '<param name="wmode" value="transparent"'.$f_ct;
$output.= '<param name="flashvars" value="'.$vars.'" '.$f_ct;
// alternate content
if($mode!= "cats" ) $output.= '<p>'.urldecode($tags_cloud).'</p>';
if($mode!= "tags" ) $output.= '<p>'.urldecode($cats).'</p>';
$output.= '<p>WP-Cumulus by <a href="http://www.roytanck.com/">Roy Tanck</a> and <a href="http://lukemorton.co.uk/">Luke Morton</a> requires <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> 9 or better.</p>';
$output.= '</object></noscript>';
return $output;
}
function f_tzone_date($date, $offset='')
{
global $f_tzone_offset;
if(empty($offset) || !empty($f_tzone_offset)) $offset=$f_tzone_offset;
$fixed_date=$date;
if(!empty($offset)) $fixed_date=$date+$offset*60*60;
return $fixed_date;
}
function f_format_date($timestamp,$params,$month_names,$day_names,$mode) # mode --> short, long
{
$res='';
$ts=f_tzone_date($timestamp);
if(!empty($params))
{
$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'),$params);
$res=date("$params",$ts);
$res=str_replace('XX1',f_my_substr($month_names[date('n',$ts)-1],0,3),$res);
$res=str_replace('XX2',$month_names[date('n',$ts)-1],$res);
$res=str_replace('XX4',f_my_substr($day_names[date('w',$ts)],0,3),$res);
$res=str_replace('XX3',$day_names[date('w',$ts)],$res);
}
else $res=($mode=='short')?$month_names[date('n', $ts)-1].date(', Y', $ts):$month_names[date('n', $ts)-1].date(' d, Y', $ts);
return $res;
}
function f_format_time($timestamp,$time_format,$mode='short') # mode --> short, long
{
$ts=f_tzone_date($timestamp);
$res=($mode=='short')?($time_format==12? date(' g:i A',$ts): date(' G:i',$ts)):($time_format==12? date(' d, Y g:i A',$ts): date(' d, Y G:i',$ts));
return $res;
}
function f_checksourcepage($data,$id)
{
$fname='';
if(strpos($data[1],'http:')===false && strpos($data[1],'https:')===false)
{
$sub_pref='';
if(($data[15]=='0') && ($data[3]=='1')) $sub_pref='SUB_'; // FRAMES and SUBPAGE
if(in_array($data[4],array('136','137','138','143','144','20'))) //Special pages
{
$f_dir=(strpos($data[1],'../')===false)?'':'../'.f_GFS($data[1],'../','/').'/';
$fname=$f_dir.$sub_pref.$id.($data[6]=='TRUE'? '.php': '.html');
}
elseif(in_array($data[4],array('21','130','140','18'))) //shop, lister and request pages
{
$f_dir=(strpos($data[1],'../')===false)?'':'../'.f_GFS($data[1],'../','/').'/';
$fname=$f_dir.$sub_pref.($data[4]=='18'? ($id+1):$id).'.html';
}
elseif($data[6]=='FALSE' && $data[4]=='0' || strpos($data[1],'.html')!==false) $fname=$data[1]; //normal page
}
return $fname;
}
function f_define_source_page($root='../')
{
global $f_sitemap_fname,$f_template_source,$f_max_chars;
$result='';
$f_template_source=$root.$f_template_source;
if(file_exists($f_template_source)) $result=$f_template_source;
elseif(file_exists($root.$f_sitemap_fname) && filesize($root.$f_sitemap_fname)>0)
{
if(isset($_REQUEST['id'])) $id=intval($_REQUEST['id']);
$fp=fopen($root.$f_sitemap_fname,'r');
if(isset($id)) //getting current page
{
while(($data=fgetcsv($fp,$f_max_chars,'|'))&&($result=='')) if(isset($data[10]) && ($data[10]=='<id>'.$id)) $result=f_checksourcepage($data,$id);
}
if($result=='') //getting any page
{
fseek($fp,0);
while(($data=fgetcsv($fp,$f_max_chars,'|'))&&($result=='')) if(isset($data[10])) $result=f_checksourcepage($data,str_replace('<id>','',$data[10]));
}
fclose($fp);
}
return $result;
}
function f_multi_unique($array)
{
$new=array();$new1=array();
foreach($array as $k=>$na) $new[$k]=serialize($na);
$uniq=array_unique($new);
foreach($uniq as $k=>$ser) $new1[$k]=unserialize($ser);
return $new1;
}
function f_removeAreas($page)
{
while(strpos($page,'<!--rnd-->')!==false) $page=str_replace(f_GFSAbi($page,'<!--rnd-->','<!--endrnd-->'),'',$page);
return $page;
}
function f_log()
{
global $f_lf;
$data=(base64_encode(var_export($_REQUEST,true)));
$pref=(file_exists('sitemap.php'))?'':'../';
$log_file=$pref.'ezg_data/log_ezg.php';
if(file_exists($log_file))
{
$handle=@fopen($log_file,'a+b');
$fsize=filesize($log_file);
flock($handle,LOCK_EX);
if(isset($_SERVER['SCRIPT_URI'])) $url=$_SERVER['SCRIPT_URI'];
elseif(isset($_SERVER['SCRIPT_NAME'])) $url=$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
else $url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$new_record=date("H:i:s j-n-Y").'|'.$data.'||'.$url.$f_lf;
fwrite($handle,$new_record);
flock($handle,LOCK_UN);fclose($handle);
}
}
function f_eval_php_code($output)
{
$output='?'.'>'.trim($output);
$output=preg_replace("'<\?xml(.*?)/>'si",'',$output);
if(strpos($output,'base64_decode')!==false||strpos($output,'eval(')!==false) print $output;
else eval($output);
}
function f_eval_php($output)
{
ob_start();
f_eval_php_code($output);
$out=ob_get_contents();
ob_end_clean();
return $out;
}
function f_obj_div_replacing($object, $replace_in)
{
$replace_in=str_replace("<p>$object</p>", "<div>$object</div>", $replace_in);
$replace_in=str_replace('<p class="rvps1">'.$object.'</p>','<div align="center">'.$object.'</div>', $replace_in);
$replace_in=str_replace('<p class="rvps2">'.$object.'</p>','<div align="right">'.$object.'</div>', $replace_in);
return $replace_in;
}
function f_obj_clearing($object, $replace_in)
{
$replace_in=str_replace("%".$object."(</p>","%".$object."(", $replace_in);
$replace_in=str_replace("%".$object."(</span>","%".$object."(", $replace_in);
$replace_in=str_replace("<span>)%",")%", $replace_in);
$replace_in=str_replace('<p class="rvps1">)%',")%", $replace_in);
$replace_in=str_replace('<p class="rvps2">)%',")%", $replace_in);
return $replace_in;
}
function f_p_tag_clearing($replace_in)
{
$pos_p=strpos($replace_in,'<p');
$pos_cp=strpos($replace_in,'</p>');
if($pos_cp<$pos_p || $pos_cp!==false && $pos_p===false)
{
$temp1=substr($replace_in,0,$pos_cp);
$temp2=substr($replace_in,$pos_cp+4);
$replace_in=$temp1.$temp2;
}
return $replace_in;
}
function f_fix_innova_paths($content,$script_name,$full_script_path,$rel_path)
{
$full_script_path2=str_replace("/".$script_name, '', $full_script_path);
$abs_url_innova_assets=($rel_path==''? $full_script_path2: substr($full_script_path2,0,strrpos($full_script_path2,'/'))).'/innovaeditor/assets/';
$content=str_replace('src="innovaeditor/assets/','src="'.$abs_url_innova_assets,$content);
$content=str_replace('src="../innovaeditor/assets/','src="'.$abs_url_innova_assets,$content);
$content=str_replace('href="innovaeditor/assets/','href="'.$abs_url_innova_assets,$content);
$content=str_replace('href="../innovaeditor/assets/','href="'.$abs_url_innova_assets,$content);
return $content;
}
function f_data_sorting($records,$by_field='Id',$flag='desc') // sorting info by date
{
if(!empty($records))
{
foreach($records as $key=>$row) $ids[$key]=$row[$by_field];
if($flag=='desc') array_multisort($ids,SORT_DESC,SORT_NUMERIC,$records);
else array_multisort($ids,SORT_ASC,SORT_NUMERIC,$records);
}
return $records;
}
function f_get_category_info($category_name,$category_color,$category_id,$search_category,$flag)
{
settype($search_category,"integer");
if(in_array($search_category,$category_id))
{
$buf=array_search($search_category,$category_id);
$cat_res=($flag=='name')? f_un_esc($category_name[$buf]): $category_color[$buf];
}
else { $cat_res=($flag=='name')? f_un_esc($category_name[array_search(1,$category_id)]): $category_color[array_search(1,$category_id)]; }
return $cat_res;
}
function f_ip_locator($ip)
{ return '<a class="rvts12" style="text-decoration:none;" href="http://en.utrace.de/?query='.$ip.'" target="_blank">'.$ip.'</a>'; }
$f_countries_list = array('AF'=>'Afghanistan'
,'AL'=>'Albania'
,'DZ'=>'Algeria'
,'AS'=>'America Samoa'
,'AD'=>'Andorra'
,'AO'=>'Angola'
,'AI'=>'Anguila'
,'AQ'=>'Antartica'
,'AG'=>'Antigua And Barbuda'
,'AR'=>'Argentina'
,'AM'=>'Armenia'
,'AW'=>'Aruba'
,'AU'=>'Australia'
,'AT'=>'Austria'
,'AZ'=>'Azerbaijan'
,'BS'=>'Bahamas, The'
,'BH'=>'Bahrain'
,'BD'=>'Bangladesh'
,'BB'=>'Barbados'
,'BY'=>'Belarus'
,'BE'=>'Belgium'
,'BZ'=>'Belize'
,'BJ'=>'Benin'
,'BM'=>'Bermuda'
,'BT'=>'Bhutan'
,'BO'=>'Bolivia'
,'BA'=>'Bosnia and Herzegovina'
,'BW'=>'Botswana'
,'BV'=>'Bouvet Island'
,'BR'=>'Brazil'
,'IO'=>'British Indian Ocean Territory'
,'BN'=>'Brunei'
,'BG'=>'Bulgaria'
,'BF'=>'Burkina Faso'
,'BI'=>'Burundi'
,'KH'=>'Cambodia'
,'CM'=>'Cameroon'
,'CA'=>'Canada'
,'CV'=>'Cape Verde'
,'KY'=>'Cayman Islands'
,'CF'=>'Central African Republic'
,'TD'=>'Chad'
,'CL'=>'Chile'
,'CN'=>'China'
,'CX'=>'Christmas Island'
,'CC'=>'Cocos (Keeling) Islands'
,'CO'=>'Colombia'
,'KM'=>'Comoros'
,'CG'=>'Congo'
,'CD'=>'Congo, Democractic Republic of the '
,'CK'=>'Cook Islands'
,'CR'=>'Costa Rica'
,'CI'=>'Cote DIvoire (Ivory Coast)'
,'HR'=>'Croatia (Hrvatska)'
,'CU'=>'Cuba'
,'CY'=>'Cyprus'
,'CZ'=>'Czech Republic'
,'DK'=>'Denmark'
,'DJ'=>'Djibouti'
,'DM'=>'Dominica'
,'DO'=>'Dominican Republic'
,'EC'=>'Ecuador'
,'EG'=>'Egypt'
,'SV'=>'El Salvador'
,'GQ'=>'Equatorial Guinea'
,'ER'=>'Eritrea'
,'EE'=>'Estonia'
,'ET'=>'Ethiopia'
,'FK'=>'Falkland Islands (Islas Malvinas)'
,'FO'=>'Faroe Islands'
,'FJ'=>'Fiji Islands'
,'FI'=>'Finland'
,'FR'=>'France'
,'GF'=>'French Guiana'
,'PF'=>'French Polynesia'
,'TF'=>'French Southern Territories'
,'GA'=>'Gabon'
,'GM'=>'Gambia, The'
,'GE'=>'Georgia'
,'DE'=>'Germany'
,'GH'=>'Ghana'
,'GI'=>'Gibraltar'
,'GR'=>'Greece'
,'GL'=>'Greenland'
,'GD'=>'Grenada'
,'GP'=>'Guadeloupe'
,'GU'=>'Guam'
,'GT'=>'Guatemala'
,'GN'=>'Guinea'
,'GW'=>'Guinea-Bissau'
,'GY'=>'Guyana'
,'HT'=>'Haiti'
,'HM'=>'Heard and McDonald Islands'
,'HN'=>'Honduras'
,'HK'=>'Hong Kong S.A.R.'
,'HU'=>'Hungary'
,'IS'=>'Iceland'
,'IN'=>'India'
,'ID'=>'Indonesia'
,'IR'=>'Iran'
,'IQ'=>'Iraq'
,'IE'=>'Ireland'
,'IL'=>'Israel'
,'IT'=>'Italy'
,'JM'=>'Jamaica'
,'JP'=>'Japan'
,'JO'=>'Jordan'
,'KZ'=>'Kazakhstan'
,'KE'=>'Kenya'
,'KI'=>'Kiribati'
,'KR'=>'Korea'
,'KP'=>'Korea, North'
,'KW'=>'Kuwait'
,'KG'=>'Kyrgyzstan'
,'LA'=>'Laos'
,'LV'=>'Latvia'
,'LB'=>'Lebanon'
,'LS'=>'Lesotho'
,'LR'=>'Liberia'
,'LY'=>'Libya'
,'LI'=>'Liechtenstein'
,'LU'=>'Luxembourg'
,'MO'=>'Macau S.A.R.'
,'MK'=>'Macedonia'
,'MG'=>'Madagascar'
,'MW'=>'Malawi'
,'MY'=>'Malaysia'
,'MV'=>'Maldives'
,'ML'=>'Mali'
,'MT'=>'Malta'
,'MH'=>'Marshall Islands'
,'MR'=>'Mauritania'
,'MU'=>'Mauritius'
,'YT'=>'Mayotte'
,'MX'=>'Mexico'
,'FM'=>'Micronesia'
,'MD'=>'Moldova'
,'MC'=>'Monaco'
,'MN'=>'Mongolia'
,'MS'=>'Montserrat'
,'MA'=>'Morocco'
,'MZ'=>'Mozambique'
,'MM'=>'Myanmar'
,'NA'=>'Namibia'
,'NR'=>'Nauru'
,'NP'=>'Nepal'
,'AN'=>'Netherlands Antilles'
,'NL'=>'Netherlands, The'
,'NC'=>'New Caledonia'
,'NZ'=>'New Zealand'
,'NI'=>'Nicaragua'
,'NE'=>'Niger'
,'NG'=>'Nigeria'
,'NU'=>'Niue'
,'NF'=>'Norfolk Island'
,'MP'=>'Northern Mariana Islands'
,'NO'=>'Norway'
,'OM'=>'Oman'
,'PK'=>'Pakistan'
,'PW'=>'Palau'
,'PA'=>'Panama'
,'PG'=>'Papua new Guinea'
,'PE'=>'Peru'
,'PH'=>'Philippines'
,'PN'=>'Pitcairn Island'
,'PL'=>'Poland'
,'PT'=>'Portugal'
,'PR'=>'Puerto Rico'
,'QA'=>'Qatar'
,'RE'=>'Reunion'
,'RO'=>'Romania'
,'RU'=>'Russia'
,'RW'=>'Rwanda'
,'SH'=>'Saint Helena'
,'KN'=>'Saint Kitts And Nevis'
,'LC'=>'Saint Lucia'
,'PM'=>'Saint Pierre and Miquelon'
,'VC'=>'Saint Vincent And The Grenadines'
,'WS'=>'Samoa'
,'SM'=>'San Marino'
,'ST'=>'Sao Tome and Principe'
,'SA'=>'Saudi Arabia'
,'SN'=>'Senegal'
,'SC'=>'Seychelles'
,'SL'=>'Sierra Leone'
,'SG'=>'Singapore'
,'SK'=>'Slovakia'
,'SI'=>'Slovenia'
,'SB'=>'Solomon Islands'
,'SO'=>'Somalia'
,'ZA'=>'South Africa'
,'GS'=>'South Georgia'
,'ES'=>'Spain'
,'LK'=>'Sri Lanka'
,'SD'=>'Sudan'
,'SR'=>'Suriname'
,'SJ'=>'Svalbard And Jan Mayen Islands'
,'SZ'=>'Swaziland'
,'SE'=>'Sweden'
,'CH'=>'Switzerland'
,'SY'=>'Syria'
,'TW'=>'Taiwan'
,'TJ'=>'Tajikistan'
,'TZ'=>'Tanzania'
,'TH'=>'Thailand'
,'TG'=>'Togo'
,'TK'=>'Tokelau'
,'TO'=>'Tonga'
,'TT'=>'Trinidad And Tobago'
,'TN'=>'Tunisia'
,'TR'=>'Turkey'
,'TM'=>'Turkmenistan'
,'TC'=>'Turks And Caicos Islands'
,'TV'=>'Tuvalu'
,'UG'=>'Uganda'
,'UA'=>'Ukraine'
,'AE'=>'United Arab Emirates'
,'UK'=>'United Kingdom'
,'US'=>'United States'
,'UM'=>'United States Minor Outlying Islands'
,'UY'=>'Uruguay'
,'UZ'=>'Uzbekistan'
,'VU'=>'Vanuatu'
,'VA'=>'Vatican City State (Holy See)'
,'VE'=>'Venezuela'
,'VN'=>'Vietnam'
,'VG'=>'Virgin Islands (British)'
,'VI'=>'Virgin Islands (US)'
,'WF'=>'Wallis And Futuna Islands'
,'YE'=>'Yemen'
,'YU'=>'Yugoslavia'
,'ZM'=>'Zambia'
,'ZW'=>'Zimbabwe');
$AccChars=array("�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�","�");
$NormChars=array("a","a","a","a","a","A","A","A","A","A","c","C","d","e","e","e","E","E","E","i","i","i","I","I","I","o","o","o","O","O","O","s","S","u","u","u","U","U","U","y","Y","z","Z","a","A","e","E","i","I","o","O","u","U","y","Y","aa","Aa","oe","Oe","ae","AE","oe","OE","ss");
function f_microtime_float()
{
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}
function f_db_convert($old_fname,$new_fname,$fill_empty_flag=true)
{
global $f_db_first_line,$f_db_last_line;
if(file_exists($new_fname))
{
if(filesize($new_fname)==0 && file_exists($old_fname))
{
if(filesize($old_fname)!=0)
{
//$query_st_time=f_microtime_float();
$old_fp=fopen($old_fname,"r");
if(!$new_fp=fopen($new_fname,'r+')) {print 'DB conversion'.f_fmt_error_msg('DBFILE_NEEDCHMOD',$new_fname);exit;}
else
{
flock($old_fp,LOCK_EX); flock($new_fp, LOCK_EX);
$bytes_read=0; $bytes_written=0;
while(!feof($old_fp))
{
$block=fread($old_fp, 8192); $bytes_read+=8192;
if(fwrite($new_fp,$block)!==false) {$bytes_written+=8192;}
}
if($bytes_read!=0 && $bytes_read!=$bytes_written)
{
$bytes_read=0; $bytes_written=0;
ftruncate($new_fp,0); rewind($old_fp);
while(!feof($old_fp))
{
$block=fread($old_fp, 8192); $bytes_read+=8192;
if(fwrite($new_fp,$block)!==false) {$bytes_written+=8192;}
}
}
if($bytes_read!=0 && $bytes_read!=$bytes_written) { ftruncate($new_fp,0); echo "DB Conversion FAILED. Contact Administrator"; }
flock($old_fp, LOCK_UN); flock($new_fp, LOCK_UN);
fclose($old_fp); fclose($new_fp);
//print '<div align="right"><span class="rvts8" style="font-size:9px;">Page created in '.round(f_microtime_float() - $query_st_time,4) .' seconds</span></div>';
}
}
elseif($fill_empty_flag)
{
if(!$new_fp=fopen($new_fname,'r+')) {print 'DB conversion'.f_fmt_error_msg('DBFILE_NEEDCHMOD',$new_fname);exit;}
else
{
flock($new_fp,LOCK_EX);
fwrite($new_fp,$f_db_first_line.' '.$f_db_last_line);
flock($new_fp, LOCK_UN);fclose($new_fp);
}
}
}
}
else {print 'DB conversion'.f_fmt_error_msg('MISSING_DBFILE',$new_fname); exit;}
}
function f_sendMail($send_to,$from,$content_html,$content_text,$subject,$page_charset,$att_content='',$att_file='',$att_filetype='', $send_to_author='',$author_data=array())
{
global $f_mail_type,$f_return_path,$f_sendmail_from,$f_use_linefeed,$f_SMTP_HOST,$f_SMTP_PORT,$f_SMTP_HELLO,$f_SMTP_AUTH,$f_SMTP_AUTH_USR,$f_SMTP_AUTH_PWD;
if($f_sendmail_from!='') ini_set('sendmail_from',$f_sendmail_from);
$mail=new htmlMimeMail();
if($f_use_linefeed) $mail->setCrlf("\r\n");
if($page_charset!='')
{
$mail->setHeadCharset($page_charset);
$mail->setTextCharset($page_charset);
}
if($content_html=='') $mail->setText($content_text);
else
{
$mail->setHtmlCharset($page_charset);
$mail->setHtml($content_html,$content_text);
}
$mail->setSubject($subject);
$mail->setFrom($from);
if($f_return_path!='') $mail->setReturnPath($f_return_path);
if(is_array($att_content)){foreach($att_content as $k=>$v) $mail->addAttachment($att_content[$k],$att_file[$k],$att_filetype[$k]);}
elseif($att_content!='') $mail->addAttachment($att_content,$att_file,$att_filetype);
if(($f_mail_type=='smtp') && ($f_SMTP_HOST!==''))
$mail->setSMTPParams($f_SMTP_HOST,$f_SMTP_PORT,$f_SMTP_HELLO,$f_SMTP_AUTH,$f_SMTP_AUTH_USR,$f_SMTP_AUTH_PWD);
$result=$mail->send($send_to,$f_mail_type);
if($send_to_author!='') // used in blog, pblog, guestbook, podcast
{
if(!empty($author_data['details']['email']) && f_validate_email($author_data['details']['email']))
$mail->send(array($author_data['details']['email']),$f_mail_type);
}
return $result;
}
function f_build_calendar($mon,$year,$first_day_ofweek,$events_by_day,$url,$month_names,$day_names,$styles,$utf_fl=false,$suf='?')
{
$css_day1=$styles['day1']; $css_day2=$styles['day2']; $css_day3=$styles['day3'];
$css_currday=$styles['currday']; $css_calh1=$styles['calh1']; $css_calh2=$styles['calh2'];
$css_calurl=$styles['calurl']; $cal_cspacing=$styles['cal_cspacing'];
$days_in_curr_mon=f_days_in_month($mon,$year);
$fdaymonth_ts=mktime(0,0,0,$mon,1,$year);
$ldaymonth_ts=mktime(23,59,59,$mon,$days_in_curr_mon,$year);
$month=$month_names[$mon-1];
$firstday_str=date('l',mktime(0,0,0,$mon,1,$year));
// 'First day of week' check
if($first_day_ofweek==1) $firstday=date('w',mktime(0,0,0,$mon,1,$year));
else
{
$day=date('w',mktime(0,0,0,$mon,1,$year));
$firstday=($day==0? 6: $day-1);
$temp=$day_names[0];
$day_names_rev=$day_names;
array_shift($day_names_rev); array_push($day_names_rev, $temp);
}
settype($firstday,'integer');
$cal_pointer=$firstday;
$row_counter=0;
$nav_prev=f_cal_navigation($mon,$year,'prev',$url.$suf);
$nav_next=f_cal_navigation($mon,$year,'next',$url.$suf);
$cal_html='<table cellpadding="0" cellspacing="0"><tr><td><div class="cal_bg">';
$cal_html.='<table class="calendar" cellspacing="'.$cal_cspacing.'">';
$cal_html.='<tr><td colspan="8" '.f_bl_cl($css_calh1,'').'><div style="position:relative;height:16px;width:100%;">';
// internal <>
$cal_html.='<div style="width:100%;text-align:center;">'.f_my_substr($month,0,3,$utf_fl).' '.$year.'</div>';
$cal_html.='<div style="position:absolute;top:0px;left:0;">'.$nav_prev.'</div>';
$cal_html.='<div style="position:absolute;top:0px;right:0px">'.$nav_next.'</div>';
$cal_html.='</div></td></tr><tr>';
// displaying weekday names
foreach(($first_day_ofweek==1?$day_names:$day_names_rev) as $k=>$v) {$cal_html.="<td ".f_bl_cl($css_calh2,'').">".f_my_substr($v,0,1,$utf_fl)."</td>";}
$cal_html.="</tr>";
// displaying last days from previous month
$cal_html.='<tr>';
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.="<td ".f_bl_cl($css_day3).">".$t."</td>";$t++;}
}
else
{
$t=$days_prev_mon-6;
for($i=0; $i<7; $i++){$cal_html.="<td ".f_bl_cl($css_day3).">".$t."</td>";$t++;} $cal_html.='</tr>';
}
}
// displaying days from selected month
for($i=1;$i<=$days_in_curr_mon;$i++)
{
if($cal_pointer>6)
{
$cal_pointer=0;
$cal_html.='</tr><tr>';
$row_counter++;
}
if(array_key_exists(($i), $events_by_day))
{
$cal_html.="<td ".(f_is_current_day($i,$mon,$year)? f_bl_cl($css_currday): f_bl_cl($css_day2));
$cal_html.='><a style="position:relative;z-index:1;"'.(f_is_current_day($i,$mon,$year)? f_bl_cl($css_currday): f_bl_cl($css_calurl));
$cal_html.=' href="'.$url.$suf.'mon='.$mon.'&year='.$year.'&day='.$i.'">'.$i."</a></td>";
}
else {$cal_html.="<td ".(f_is_current_day($i,$mon,$year)? f_bl_cl($css_currday): f_bl_cl($css_day1)).">".$i.'</td>';}
$cal_pointer++;
}
// displaying first days from next month
$next_month_days=1;
while($cal_pointer<=6)
{
$cal_html.="<td ".f_bl_cl($css_day3).">".$next_month_days."</td>";
$next_month_days++; $cal_pointer++;
}
$cal_html.="</tr>"; $row_counter++;
if($row_counter<6)
{
$cal_html.="<tr>";
$cal_pointer=0;
while($cal_pointer<=6)
{
$cal_html.="<td ".f_bl_cl($css_day3).">".$next_month_days."</td>";
$next_month_days++; $cal_pointer++;
}
$cal_html.="</tr>";
}
$cal_html.="</table>";
$cal_html.='</div></td></tr></table>';
return $cal_html;
}
function f_is_current_day($day,$mon,$year) // current day check
{
$current_date=getdate(f_tzone_date(mktime()));
$currday=$current_date['mday'];
$currmon=$current_date['mon'];
$curryear=$current_date['year'];
if($day==$currday && $mon==$currmon && $year==$curryear) {return true;}
else {return false;}
}
function f_bl_cl($class,$more_class='') { return ' class="'.$class.($more_class!=''? ' '.$more_class:'').'"'; }
function f_cal_navigation($mon,$year,$type,$url) // calendar < > navigation
{
$output='';
$prev_mon=$mon-1; $prev_year=$year; $next_mon=$mon+1; $next_year=$year;
if($mon==1 && $year>1950) { $prev_mon=12; $prev_year=$year-1; }
elseif($mon==1 && $year<=1950) { $prev_mon=1; $prev_year=1950; }
elseif($mon==12 && $year<2050) { $next_mon=1; $next_year=$year+1; }
elseif($mon==12 && $year>=2050) { $next_mon=12; $next_year=2050; }
$mode_param_prev='&mode=month'; $mode_param_next='&mode=month';
$output.='<span style="background:transparent;width:12px;cursor:pointer;" onclick="document.location=\''.$url;
if($type=='prev') $output.="mon=".$prev_mon."&year=".$prev_year;
else $output.="mon=".$next_mon."&year=".$next_year;
$output.='\';">'.($type=='prev'?'<':'>').'</span>';
return $output;
}
function f_define_posts_per_day($mon,$year,$all_posts,$date_field_name) // define posts for each day in a month
{
$posts_per_day[]=array();
$mktime=f_tzone_date(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);
foreach($all_posts as $k=>$v)
{
if($v[$date_field_name]>=$st_i_ts && $v[$date_field_name]<=$end_i_ts) {$posts_per_day[$i]=true; break;}
}
}
return $posts_per_day;
}
define('F_STREAM_BUFFER',4096);
define('F_STREAM_TIMEOUT',86400);
define('F_USE_OB',false);
function f_download_file($path, $new_filename='')
{
$filesize=filesize($path);
$filename=basename($path);
if(empty($new_filename)) $new_filename=$filename;
$file=@fopen($path,'r') or die("can't open file");
$sm=ini_get('safe_mode');
if(!$sm && function_exists('set_time_limit') && strpos(ini_get('disable_functions'),'set_time_limit')===false)
set_time_limit(F_STREAM_TIMEOUT);
$partialContent=false;
if(isset($_SERVER['HTTP_RANGE']))
{
$rangeHeader=explode('-',substr($_SERVER['HTTP_RANGE'],strlen('bytes=')));
if($rangeHeader[0]>0){$posStart=intval($rangeHeader[0]);$partialContent=true;}
else $posStart=0;
if($rangeHeader[1]>0){$posEnd=intval($rangeHeader[1]);$partialContent=true;}
else $posEnd=$filesize-1;
}
else {$posStart=0;$posEnd=$filesize-1;}
/************** HEADERS ***************/
header("Content-type: text/plain");
header('Content-Disposition: attachment; filename="'.$new_filename.'"');
header("Content-Length: ".($posEnd - $posStart + 1));
header('Date: '.gmdate('D, d M Y H:i:s \G\M\T',time()));
header('Last-Modified: '.gmdate('D, d M Y H:i:s \G\M\T',filemtime($filename)));
header('Accept-Ranges: bytes');
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: ".gmdate("D, d M Y H:i:s \G\M\T", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))));
if($partialContent)
{
header("HTTP/1.0 206 Partial Content");
header("Status: 206 Partial Content");
header("Content-Range: bytes ".$posStart."-".$posEnd."/".$filesize);
}
if($sm) fpassthru($file);
else
{
fseek($file,$posStart);
if(F_USE_OB) ob_start();
while (($posStart + F_STREAM_BUFFER < $posEnd) && (connection_status()==0))
{
echo fread($file,F_STREAM_BUFFER);
if(F_USE_OB) ob_flush();
flush();
$posStart+=F_STREAM_BUFFER;
}
if(connection_status()==0) echo fread($file,$posEnd-$posStart + 1);
if(F_USE_OB) ob_end_flush();
}
fclose($file);
}
?>