<?
/*
HPE - News Portal Engine
Copyright (C) 2000-2001 Mike Krus
This program is free software; it is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
READ LICENSE.TXT IN THE BASE DIRECTORY FOR INFORMATION
ABOUT REDISTRIBUTING THIS SOURCE CODE
*/
$HPEcats = new HPECatInfo;
class HPESiteLister
{
var $navigation;
var $done = "";
var $target = "";
var $newscount = 0;
var $jump = 0;
var $first = 0;
var $dirop = "";
var $cats;
var $exsrc = false;
var $level = 0;
var $showeditorlinks = 0;
function HPESiteLister($done)
{
global $HPEtheUser;
$this->done = $done;
if(isset($HPEtheUser) && $HPEtheUser->iseditor)
$this->showeditorlinks = true;
}
function addnewsline($id, $title, $link, $comment, $cat, $lang, $urate, $erate, $flags, $level, $showdisabled = 0)
{
global $HPEtheConfig;
global $HPEthePager;
global $HPEtheThemeMaker;
global $onpage;
global $HPEcats;
$addlink = "";
$editlink = "";
if(($flags & HPENewsDisable) && $showdisabled == 0) return;
if(isset($HPEtheUser))
{
if($HPEtheUser->restrictlang != "")
if(eregi("^$HPEtheUser->restrictlang\$",$lang))
{
$this->exsrc = true;
return;
}
if($level > $HPEtheUser->level)
return;
if($HPEtheUser->userid)
{
$addlink = $HPEtheConfig->siteroot . "user/pages/addmod/type/0/source/$id/";
if(isset($onpage))
$addlink .= "onpage/$onpage/";
if($this->done != "")
{
$addlink .= "?done=" . urlencode($this->done);
}
}
}
if($this->showeditorlinks)
{
$editlink = $HPEtheConfig->siteroot . "HPE/editor/?pg=editsite&id=$id";
if($this->done != "")
$editlink .= "&done=" . urlencode($this->done);
}
$this->result["sitelist"][] = array(
"id" => $id,
"title" => $title,
"desc" => $comment,
"urating" => $urate,
"lang" => $lang,
"catid" => $cat,
"catname" => $HPEcats->GetName($cat),
"editlink" => $editlink,
"addlink" => $addlink
);
}
function namedesc(&$row)
{
$this->addnewsline($row["siteid"], $row["sitename"], $row["siteurl"],
$row["description"], 0, $row["language"],
$row["urating"], $row["erating"], $row["flags"], $row["level"]);
}
function namecatdesc(&$row)
{
$this->addnewsline($row["siteid"], $row["sitename"], $row["siteurl"],
$row["description"], $row["categorie"], $row["language"],
$row["urating"], $row["erating"], $row["flags"], $row["level"]);
}
function nameall(&$row)
{
$this->addnewsline($row["siteid"], $row["sitename"], $row["siteurl"],
"", 0, "", 0, 0, $row["flags"], $row["level"], 1);
}
function name(&$row)
{
$this->addnewsline($row["siteid"], $row["sitename"], $row["siteurl"],
"", 0, "", 0, 0, $row["level"], $row["flags"], 0);
}
function nameerror(&$row)
{
global $HPENPErrorStrings;
$this->addnewsline($row["siteid"], $row["sitename"], $row["siteurl"],
$HPENPErrorStrings[(int) $row["ncount"]], 0, "", 0, 0, $row["level"], $row["flags"], 0);
}
function GetSiteList($cache, &$result, $fct, $order, $where = "")
{
global $HPEtheDB;
global $HPEinc;
global $HPEtheConfig;
global $HPEtheUser;
$this->result = &$result;
$this->exsrc = false;
$this->result["dberr"] = 0;
$this->result["exclsites"] = 0;
$this->result["sitelist"] = array();
$this->result["add2pages"] = array();
if(isset($HPEtheUser))
{
for($i=0; $i<$HPEtheUser->nbpages; $i++)
if($HPEtheConfig->pagehandlers[$HPEtheUser->pages[$i]["type"]]["control"]->AcceptsModule(0))
$this->result["add2pages"][] = array( "index" => $i, "title" => $HPEtheUser->pages[$i]["title"] );
}
$cachefile = "$HPEtheConfig->cachepath/$cache.spd";
$data = array();
if($cache != "" && file_exists($cachefile) && time() - filemtime($cachefile) < 900)
{
$fc = fopen($cachefile, "r");
if($fc)
{
$data = fread($fc, filesize($cachefile));
fclose($fc);
$data = unserialize($data);
}
}
else
{
$query = "SELECT * FROM $HPEtheDB->dbtnewssites $where ORDER BY $order";
if($this->jump)
$query .= " LIMIT " . $this->first . ", " . $this->jump;
$res = $HPEtheDB->query($query);
if($HPEtheDB->iserror($res))
{
$this->result["dberr"] = 1;
}
else
{
$i = 0;
$data = array();
while($row = $HPEtheDB->getrow($res))
{
$data[] = $row;
$i++;
}
if($cache != "")
{
$fc = fopen($cachefile, "w");
if($fc)
{
$sdata = serialize($data);
fwrite($fc, $sdata, strlen($sdata));
fclose($fc);
}
}
}
}
$n = count($data);
for($i=0; $i<$n; $i++)
eval($fct . "(\$data[$i]);");
if($this->exsrc)
$this->result["exclsites"] = 1;
}
function SearchSiteList(&$result, $fct, $what, $where, $count, $from)
{
global $HPEtheUser;
global $HPEtheConfig;
global $HPEtheDB;
global $HPEqname;
global $HPEqwhere;
$this->result = &$result;
$this->exsrc = false;
$this->result["dberr"] = 0;
$this->result["exclsites"] = 0;
$this->result["sitelist"] = array();
$this->result["add2pages"] = array();
if(isset($HPEtheUser))
{
for($i=0; $i<$HPEtheUser->nbpages; $i++)
{
if($HPEtheConfig->pagehandlers[$HPEtheUser->pages[$i]["type"]]["control"]->AcceptsModule(0))
$this->result["add2pages"][] = array( "index" => $i, "title" => $HPEtheUser->pages[$i]["title"] );
}
}
$this->result["result_count"] = 0;
if($what == "") return;
$q = "";
$what = preg_replace("/\\s+/", "%", $what);
if($where == "n") $q .= "sitename LIKE '%" . addslashes($what) . "%' ";
elseif($where == "d") $q .= "description LIKE '%" . addslashes($what) . "%' ";
else $q .= "sitename LIKE '%" . addslashes($what) . "%' OR description LIKE '%" . addslashes($what) . "%' ";
if($q == "") return;
$query = "FROM $HPEtheDB->dbtnewssites WHERE ($q) AND " .
"!(flags & " . HPENewsDisable . ") ";
if(isset($HPEtheUser)&& $HPEtheUser->restrictlang != "")
{
$lgs = explode("|", $HPEtheUser->restrictlang);
for($i=0; $i<count($lgs); $i++) $lgs[$i] = "language != '" . $lgs[$i] . "'";
$query .= "AND (" . implode(" AND ", $lgs) . ") ";
}
$query .= "ORDER BY sitename";
$this->result["result_count"] = $HPEtheDB->one_data("SELECT count(*) $query");
if($this->result["result_count"] == 0) return;
$query = "SELECT * $query LIMIT $count,$from";
$resq = $HPEtheDB->query($query);
if(!$HPEtheDB->iserror($resq))
{
while($row = $HPEtheDB->getrow($resq))
{
eval($fct . "(\$row);");
}
} else die($HPEtheDB->dberr);
if($this->exsrc)
$this->result["exclsites"] = 1;
}
function QuerySiteList(&$result, $fct, $query)
{
global $HPEtheUser;
global $HPEtheDB;
global $HPEqname;
global $HPEqwhere;
$this->result = &$result;
$this->exsrc = false;
$this->result["dberr"] = 0;
$this->result["exclsites"] = 0;
$this->result["sitelist"] = array();
$this->result["add2pages"] = array();
$this->result["result_count"] = 0;
$this->result["result_count"] = $HPEtheDB->one_data("SELECT count(*) FROM $query");
if($this->result["result_count"] == 0) return;
$query = "SELECT * FROM $query";
$resq = $HPEtheDB->query($query);
if(!$HPEtheDB->iserror($resq))
{
while($row = $HPEtheDB->getrow($resq))
{
eval($fct . "(\$row);");
}
} else die($HPEtheDB->dberr);
if($this->exsrc)
$this->result["exclsites"] = 1;
}
};
function HPEdisplayNewsName($typename)
{
global $HPEtheSiteLister;
$HPEtheSiteLister->displaySiteList("sitename", "\$GLOBALS[\"HPEtheSiteLister\"]->namedesc");
}
function HPEdisplayNewsBackend($typename)
{
global $HPEtheSiteLister;
$HPEtheSiteLister->displaySiteList("sitename", "namebackend");
}
function HPEdisplayNewsDate($typename)
{
global $HPEtheSiteLister;
$HPEtheSiteLister->displaySiteList("adddate DESC", "\$GLOBALS[\"HPEtheSiteLister\"]->namedesc");
}
?>