|
$dir=substr(__FILE__, 0, strrpos(__FILE__, "/")+1);
// load config
include_once($dir."config.inc.php");
include_once($dir."FCKeditor/fckeditor.php") ;
$dat=$dir."data.dat";
$templatefile=$dir."templates.inc.php";
$log=$dir."log.dat.php";
$pathtowysiwyg=$pathtoscript."wysiwyg/";
setlocale(LC_TIME, $datelang);
$me= $_SERVER['PHP_SELF'];
$empty=false;
$now=time();
$version="1.6.3";
if (!isset($_GET['hash']) || $_GET['hash']=="") {
srand($now);
for ($i=0; $i<16 ; $i++) $secret.=chr(rand(60, 127));
$secret=md5($secret);
$hash=md5($_SERVER['HTTP_USER_AGENT'].$now.$secret);
}else $hash= $_GET['hash'];
$getvars="?hash=$hash";
if (isset($_REQUEST['do'])) $do=$_REQUEST['do'];
if (isset($_REQUEST['id'])) $id=$_REQUEST['id'];
if (isset($_REQUEST['action'])) $action=$_REQUEST['action'];
if (isset($_REQUEST['title'])) $title=$_REQUEST['title'];
if (isset($_REQUEST['name'])) $name=$_REQUEST['name'];
if (isset($_REQUEST['pwd'])) $pwd=$_REQUEST['pwd'];
if (isset($_REQUEST['email'])) $email=$_REQUEST['email'];
if (isset($_REQUEST['www'])) $www=$_REQUEST['www'];
if (isset($_REQUEST['story'])) $story=$_REQUEST['story'];
if (isset($_REQUEST['teaser'])) $teaser=$_REQUEST['teaser'];
if (isset($_REQUEST['time'])) $time=$_REQUEST['time'];
if (isset($_REQUEST['date'])) $date=$_REQUEST['date'];
// ************************** functions ***********************
// ************************************************************
function getkey($index, $stuff){
foreach ($stuff->data as $key => $item){
if ($item['id']==$index){
$ret=$key;
break;
}
}
return $ret;
}
function validemail($addr){
return eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$", $addr);
}
function jsRedirect($url){
echo "";
}
function clearoldadmins() {
global $log, $now, $adminexpire;
include($log);
if (count($admins)>0){
$i=0;
$fp=fopen($log, "w");
fputs($fp, "\n");
foreach ($admins as $line){
if ($now-$line['time']<$adminexpire)
fputs($fp, "\$admins[$i]['time']=".$line[time]."; \$admins[$i]['hash']='".$line['hash']."';\n");
$i++;
}
fputs($fp, "?>");
fclose($fp);
}
}
function saveposts($stuff){
global $dat;
$fp=fopen($dat, "w");
foreach ($stuff as $item){
$line=$item['id']."|".$item['time']."|".$item['mode']."|".$item['title']."|".$item['story']."|".$item['teaser']."\n";
fputs($fp, $line);
}
fclose($fp);
}
function isloggedin() {
global $log, $now, $adminexpire;
include($log);
$logged=false;
if (count($admins)>0){
foreach ($admins as $line){
if ($line['hash']==md5($_GET['hash'])) $logged=true;
}
}
return $logged;
}
function showmenu() {
global $txtsign, $txtview, $txtadmin, $me, $getvars;
echo " ";
}
function emailencoder ($str){
for ($i=0; $i< strlen($str); $i++){
$n=rand(0,10);
if ($n>5) $foo.="".ord($str[$i]).";";
else $foo.="".sprintf("%X", ord($str[$i])).";";
}
return $foo;
}
function getTemplate($tpl, $html){
$match="/<\!\-\-$tpl\-\->(.*?)<\!\-\-$tpl\-\->/s";
preg_match($match, $html, $tmp);
return $tmp[1];
}
if (!function_exists('str_ireplace'))
{
function str_ireplace ($search, $replace, $subject, $count = null)
{
if (is_string($search) && is_array($replace)) {
trigger_error('Array to string conversion', E_USER_NOTICE);
$replace = (string) $replace;
}
if (!is_array($search)) {
$search = array ($search);
}
if (!is_array($replace))
{
$replace_string = $replace;
$replace = array ();
for ($i = 0, $c = count($search); $i < $c; $i++)
{
$replace[$i] = $replace_string;
}
}
$length_replace = count($replace);
$length_search = count($search);
if ($length_replace < $length_search)
{
for ($i = $length_replace; $i < $length_search; $i++)
{
$replace[$i] = '';
}
}
$was_array = false;
if (!is_array($subject)) {
$was_array = true;
$subject = array ($subject);
}
$count = 0;
foreach ($subject as $subject_key => $subject_value)
{
foreach ($search as $search_key => $search_value)
{
$segments = explode(strtolower($search_value), strtolower($subject_value));
$count += count($segments) - 1;
$pos = 0;
foreach ($segments as $segment_key => $segment_value)
{
$segments[$segment_key] = substr($subject_value, $pos, strlen($segment_value));
$pos += strlen($segment_value) + strlen($search_value);
}
$subject_value = implode($replace[$search_key], $segments);
}
$result[$subject_key] = $subject_value;
}
if ($was_array === true) {
return $result[0];
}
return $result;
}
}
function paging(
$pages,
$pagevar="page",
$ppv=10,
$first ="««« ",
$firsts ="««« ",
$prev ="«« ",
$prevs ="«« ",
$num ="{page}",
$nums ="{page}",
$sep =" | ",
$more ="[...]",
$next =" »»",
$nexts =" »»",
$last =" »»»",
$lasts =" »»»"){
// get URI parameters
$getvars=$_SERVER['PHP_SELF']."?";
foreach ($_GET as $key => $val){
if ($key!=$pagevar){
if (isset($val) && $val!=""){
$getvars.="$key=$val&";
}else{
$getvars.="$key&";
}
}
}
$page=(is_numeric($_GET[$pagevar])) ? $_GET[$pagevar] : 1;
$page=($page>$pages) ? $pages : $page;
$prevpage=($page>1) ? $page-1 : 1;
$nextpage=($page < $pages) ? $page+1 : $pages;
$paging="";
if ($pages>1){
// first
$paging.=($page>1) ? str_replace("{url}", "$getvars$pagevar=1", $first) : $firsts;
// prev
$paging.=($page>1) ? str_replace("{url}", "$getvars$pagevar=$prevpage", $prev) : $prevs;
// pages
$ppvrange=ceil($page/$ppv);
$start=($ppvrange-1)*$ppv;
$end=($ppvrange-1)*$ppv+$ppv;
$end=($end>$pages) ? $pages : $end;
$paging.=($start>1) ? str_replace("{url}", "$getvars$pagevar=".($start-1), $more).$sep : "";
for ($i=1; $i<=$pages; $i++){
if ($i>$start && $i<= $end){
$paging.=($page==$i) ? str_replace("{page}", $i, $nums).(($i<$end) ? $sep : "") : str_replace(array("{url}", "{page}"), array("$getvars$pagevar=$i", $i), $num).(($i<$end) ? $sep : "");
}
}
$paging.=($end<$pages) ? $sep.str_replace("{url}", "$getvars$pagevar=".($end+1), $more) : "" ;
// next
$paging.=($page<$pages) ? str_replace("{url}", "$getvars$pagevar=$nextpage", $next) : $nexts;
// last
$paging.=($page<$pages) ? str_replace("{url}", "$getvars$pagevar=$pages", $last) : $lasts;
}
return $paging;
}
?>
// ************************** MAIN ****************************
// ************************************************************
// init
$foo=file($dat);
$stuff= new mdasort;
$stuff->sortkeys = array(array('time','DESC'));
if (count($foo)==0){
$empty=true;
$nextindex=1;
}else{
$i=0;
foreach ($foo as $line){
$line=explode("|", rtrim($line));
if ($line[2]=="static" || ($line[2]=="dynamic" && $line[1]<$now) || isloggedin() ){
$stuff->data[$i] = array("id" => $line[0], "time" => $line[1], "mode" => $line[2], "title" => $line[3], "story" => $line[4], "teaser" => $line[5]);
$i++;
}
}
if ($i>0){
$stuff->sortkeys = array(array('id','DESC'));
$stuff->msort();
$foo=current($stuff->data);
$nextindex=$foo['id']+1;
$stuff->sortkeys = array(array('time','DESC'));
$stuff->msort();
$numposts=count($stuff->data);
}else{
$numposts=0;
$empty=true;
}
}
// RSS stuff
if ($rssEnable){
$info = pathinfo($_SERVER['PHP_SELF']);
$info['dirname'] = ($info['dirname'] == "/") ? $info['dirname'] : $info['dirname']."/";
$url = $info['dirname'].$pathtoscript."rss.php?mndo=rss";
echo "";
}
echo "\n\n\n\n";
echo "";
clearoldadmins();
// admin stuff
if ($do=="admin") {
if ($action=="login"){
if ($name==$adminname && $pwd==$adminpwd){
include($log);
$fp=fopen($log, "w");
fputs($fp, "\n");
$i=0;
if (count($admins)>0){
foreach ($admins as $line){
fputs($fp, "\$admins[$i]['time']=".$line[time]."; \$admins[$i]['hash']='".$line['hash']."';\n");
$i++;
}
}
fputs($fp, "\$admins[$i]['time']=".$now."; \$admins[$i]['hash']='".md5($hash)."';\n?>");
fclose($fp);
jsRedirect($me.$getvars);
}
}
if ($action=="delete" && isloggedin()){
$todel=getkey($id, $stuff);
unset($stuff->data[$todel]);
$stuff->msort();
saveposts($stuff->data);
$do="view";
}else{
?>
}
}
if (isloggedin()){
showmenu();
if ($do=="add"){
if ($action=="save"){
$error=false;
$saveit=false;
if ($title=="") $error.=" » $txtbadtitle";
//if ($story=="") $error.=" » $txtbadstory";
if ($teaser=="") $error.=" » $txtbadteaser";
if ($date=="") $error.=" » $txtbaddate";
if ($error===false){
$date = explode(".", $date);
$daytime = explode(".", $_REQUEST['daytime']);
$daytime[0] = (is_numeric($daytime[0]) && $daytime[0] >= 0 && $daytime[0] < 24) ? $daytime[0] : 23;
$daytime[1] = (is_numeric($daytime[1]) && $daytime[1] >= 0 && $daytime[1] < 60) ? $daytime[1] : 59;
$time = mktime($daytime[0], $daytime[1], 0, $date[1], $date[0], $date[2]);
$story = ($_REQUEST['hasstory'] == 1) ? $_REQUEST['story'] : "";
if ($id=="new"){
$index=$numposts;
$id=$nextindex;
$saveit=true;
}else if (is_numeric($id)){
$index=getkey($id, $stuff);
$saveit=true;
}
if ($saveit){
$stuff->data[$index]['id']=$id;
$stuff->data[$index]['time']=$time;
$stuff->data[$index]['mode']=$_REQUEST['mode'];
$stuff->data[$index]['title']=str_replace(array("|"), array(" "), $title);
if ($wysiwyg===true){
$stuff->data[$index]['teaser']=stripslashes(str_replace(array("\r", "\n", "|"), array(" ", " ", " "), $teaser));
$stuff->data[$index]['story']=stripslashes(str_replace(array("\r", "\n", "|"), array(" ", " ", " "), $story));
}else{
$stuff->data[$index]['teaser']=str_replace(array("\r", "\n", "|"), array(" ", " ", " "), $teaser);
$stuff->data[$index]['story']=str_replace(array("\r", "\n", "|"), array(" ", " ", " "), $story);
}
saveposts($stuff->data);
$stuff->msort();
$empty=false;
}
$do="view";
}else echo "$txterrors$error
$txtclickback ";
}else{
if ($action=="edit"){
$post=$stuff->data[getkey($id, $stuff)];
$title= htmlentities(stripslashes($post['title']), ENT_QUOTES);
if ($wysiwyg===true){
$teaser = ($post['teaser']);
$story = ($post['story']);
}else{
$teaser=stripslashes(str_replace(" ", "\n", htmlentities($post['teaser'], ENT_QUOTES)));
$story=stripslashes(str_replace(" ", "\n", htmlentities($post['story'], ENT_QUOTES)));
}
$time=$post['time'];
$mode = $post['mode'];
$hasstory = (trim($story) != "") ? true : false;
}else{
$title="";
$story="";
$time="notset";
$id="new";
$mode = "dynamic";
$hasstory = true;
}
?>
}
}
}
// display posts
if ($do=="view" || !isset($do)){
if (!$empty){
$templates = implode("", file($templatefile));
$tpl_teaser = getTemplate("TEASER", $templates);
$tpl_story = getTemplate("STORY", $templates);
// show full story of specific news
if (is_numeric($_GET['mnid'])){
$item = $stuff->data[getkey($_GET['mnid'], $stuff)];
$item['title'] = stripslashes($item['title']);
$item['teaser'] = stripslashes($item['teaser']);
$item['story'] = stripslashes($item['story']);
if ($wrap!==false) $item['story']=wordwrap($item['story'], $wrap, " ", 1);
$match=array("{title}", "{time}", "{teaser}", "{story}", "{edit}", "{delete}", "{urltoallnews}");
if (isloggedin()){
$replace=array( $item['title'],
strftime($dateformat, $item['time']),
$item['teaser'],
$item['story'],
"$txtedit",
"$txtdelete",
"$me$getvars&page=".$_GET['page']);
}else $replace=array($item['title'], strftime($dateformat, $item['time']), $item['teaser'], $item['story'], "", "", "$me$getvars&page=".$_GET['page']);
$tmp = str_replace($match, $replace, $tpl_story);
ob_start();
eval("?>".$tmp."");
$tmpparsed = ob_get_contents();
ob_end_clean();
$html .= $tmpparsed;
echo stripslashes($html);
// show all news
}else{
$i=1;
$from=(is_numeric($_GET['page'])) ? (($_GET['page']-1)*$ppp)+1 : 1;
foreach($stuff->data as $item){
if ($item['id']!=0 && $i>=$from && $i< ($from+$ppp) ){
$item['title'] = stripslashes($item['title']);
$item['teaser'] = stripslashes($item['teaser']);
$item['story'] = stripslashes($item['story']);
$hasstory = (trim($item['story']) != "") ? true : false;
if ($wrap!==false) $item['story']=wordwrap($item['story'], $wrap, " ", 1);
$match=array("{title}", "{time}", "{teaser}", "{story}", "{edit}", "{delete}", "{urltofullstory}");
if (isloggedin()){
$replace=array( $item['title'],
strftime($dateformat, $item['time']),
$item['teaser'],
$item['story'],
"$txtedit",
"$txtdelete",
($hasstory === true) ? "$me$getvars&mnid=".$item['id']."&page=".$_GET['page'] : ""
);
}else{
$replace = array($item['title'],
strftime($dateformat,
$item['time']),
$item['teaser'],
$item['story'],
"",
"",
($hasstory === true) ? "$me$getvars&mnid=".$item['id']."&page=".$_GET['page'] : ""
);
}
$tmp = str_replace($match, $replace, $tpl_teaser);
ob_start();
eval("?>".$tmp."");
$tmpparsed = ob_get_contents();
ob_end_clean();
$html .= $tmpparsed;
}
$i++;
}
echo stripslashes($html);
$numpages=(fmod($numposts,$ppp)>0) ? floor($numposts/$ppp)+1 : ($numposts/$ppp);
echo " ";
echo paging($numpages);
echo "
";
}
}
}
// closing table tags
// Please don't remove the 'powered by...' link
echo " | ";
echo " | ";
echo "\n\n\n\n";
?>
|
|