<?
/*
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
*/
$HPEVersion = "1.0";
if(!isset($HPEconfigname))
$HPEconfigname = $HTTP_HOST;
if(ereg("(.*):[0-9]+$", $HPEconfigname, $res))
$HPEconfigname = $res[1];
/////////////////////////////////////////////////////////////////////////////////////////
define("HPEPageEditable", 1);
define("HPEPageExternEdit", 2);
define("HPEPageHidden", 4);
define("HPEPageHasDefValues", 8);
define("HPEPageMailable", 16);
define("HPEModuleEditable", 1);
define("HPEUserFlagTarget", 3);
define("HPEUserFlagAddDesc", 8);
define("HPEUserFlagMailFormat", 16);
define("HPEUserFlagTargetSame", 0);
define("HPEUserFlagTargetExt", 2);
define("HPEUserFlagTargetFrame", 1);
define("HPEUserGrpAdmin", 1);
define("HPEUserGrpPublisherBlogger", 2);
define("HPEUserGrpWebmaster", 4);
define("HPEUserGrpPublisherWebBlogger", 8);
define("HPEUserGrpEditor", 16);
define("HPEUserLevelNoAds", 3);
define("HPEUserLevelArchives", 3);
define("HPENewsDontSellExport", 1);
define("HPENewsDisable", 2);
define("HPENewsHideOrigine", 4);
define("HPENewsNoDB", 8);
define("HPENewsNoExpire", 16);
/////////////////////////////////////////////////////////////////////////////////////////
define("HPENPidle", 0);
define("HPENPnoconnect", -1);
define("HPENPnofile", -2);
define("HPENPbadheader", -3);
define("HPENPnodata", -4);
define("HPENPparseerror", -5);
define("HPENPnodbinfo", -6);
define("HPENPfromcache", -7);
define("HPENPnoparser", -8);
define("HPENPnosave", -9);
define("HPENPhttperror", -10);
define("HPENPoutdated", -11);
define("HPENPnocache", -14);
define("HPENPemptycache", -13);
define("HPENPnolocalfile", -15);
define("HPENPnoitems", -16);
define("HPENPpartialupdate",-17);
define("HPENPPHPCodeError", -18);
$HPENPErrorStrings[HPENPidle] = "Nothing new";
$HPENPErrorStrings[HPENPnoconnect] = "Failed to connect";
$HPENPErrorStrings[HPENPnofile] = "No source file";
$HPENPErrorStrings[HPENPbadheader] = "Bad HTTP Header";
$HPENPErrorStrings[HPENPnodata] = "Empty news data";
$HPENPErrorStrings[HPENPparseerror] = "News parse error";
$HPENPErrorStrings[HPENPnodbinfo] = "Not in the database";
$HPENPErrorStrings[HPENPfromcache] = "Got news from cache";
$HPENPErrorStrings[HPENPnoparser] = "No parser for this type of news";
$HPENPErrorStrings[HPENPnosave] = "Can't create cache file";
$HPENPErrorStrings[HPENPhttperror] = "HTTP Error";
$HPENPErrorStrings[HPENPoutdated] = "Outdated source";
$HPENPErrorStrings[HPENPnocache] = "No cache file";
$HPENPErrorStrings[HPENPemptycache] = "Nothing in the cache";
$HPENPErrorStrings[HPENPnolocalfile] = "Failed to open local file";
$HPENPErrorStrings[HPENPnoitems] = "Failed get any items";
$HPENPErrorStrings[HPENPpartialupdate] = "Partial Update";
$HPENPErrorStrings[HPENPPHPCodeError] = "PHP Code did not return a result";
/////////////////////////////////////////////////////////////////////////////////////////
function escquotes($str)
{
$str = preg_replace("|(')|", "\\'", $str);
return ereg_replace("^'", "\\'", $str);
}
function unescquotes($str)
{
return str_replace("\\'", "'", $str);
}
function HPEXMLString($str)
{
return htmlspecialchars($str);
}
class HPEBaseConfig
{
var $adminpwd = "";
var $adminuser = "admin";
var $adminemail = "admin@email.com";
var $adminurl = "http://sourceforge.net/projects/HPE/";
var $adminname = "Da Webmaster";
var $dbconfurl = ""; // format dbtype://user:passwd@dbhost/dbname
var $dburl = "";
var $dbuprefix = "";
var $dbnprefix = "";
var $siteroot = "/";
var $siteurl = "http://some.url.com/";
var $sitename = "HPE - Headline Portal Engine";
var $shutdown = 0;
var $shutdownmsg = "The most probable reason is that the database server has failed";
var $storenewsindb = 0;
var $indexnews = 0;
var $decaydays = 7;
var $bgupdate = 0;
var $noupdate = 0;
var $redirexports = 1;
var $cachepath = "HPE/cache";
var $rcachepath = "%HPEinc%/cache";
var $localpath = "HPE/local";
var $rlocalpath = "%HPEinc%/local";
var $timeout = 20;
var $timedout = false;
var $deflang = "en";
var $langcodes; // languages for site
var $srclangcodes; // languages for sources
var $langnames; // all languages names
var $hasemail = 1;
var $errorall = 0;
var $phpinclude = "";
var $rphpinclude = "";
var $popupwidth = 500;
var $popupheight = 600;
var $pagehandlers;
var $modhandlers;
var $userservices;
var $themes;
var $deftheme = 0;
var $adminmodules;
var $newsparsers;
var $statcmds;
var $phpnuke = "news/";
var $uriarray;
var $uri = "";
function HPEBaseConfig()
{
$this->statcmds = array();
$this->pagehandlers = array (
"newsbox" => array( "class" => "HPEPageBoxes" ),
"newslog" => array( "class" => "HPEPageNewsLog" ),
"newscat" => array( "class" => "HPEPageNewsNavigator" ),
"newsrandomsrc" => array( "class" => "HPEPageRandSources" ),
"newsrecentsrc" => array( "class" => "HPEPageRecentSources" ),
"teaser" => array( "class" => "HPEPageTeaser" ),
);
$this->modhandlers = array (
0 => array( "class" => "HPENewsModule" ),
1 => array( "class" => "HPENewsLogModule" ),
2 => array( "class" => "HPENewSourcesModule" ),
3 => array( "class" => "HPEPopularSourcesModule" )
// 4 => array( "class" => "HPECustomNewsModule" )
);
$this->userservices = array (
);
$this->langnames = array( "fr" => "Français",
"en" => "English",
"de" => "Deutsch",
"es" => "Espanol",
"it" => "Italian",
"cz" => "Czech",
"nl" => "Nederlands",
"dk" => "Dansk",
"se" => "Swedish",
"ee" => "Estonian",
"pt" => "Portugal",
"no" => "Norsk",
"il" => "Israel",
"ru" => "Russian",
"jp" => "Japanese" );
// $this->langcodes = array( "fr", "en", "de", "es", "it", "cz", "nl", "dk", "no" );
$this->langcodes = array( "en", "fr", "de" );
$this->srclangcodes = array( "fr", "en", "de", "es", "it", "cz", "nl", "dk", "no", "ee", "pt", "jp", "il", "ru" );
$this->themes = array( array( "name" => "HPE Default", "rpath" => "%HPEinc%/0" ) );
$this->adminmodules = array ();
$this->newsparsers = array (
array( "id" => 0, "name" => "XML PHP", "fct" => "HPEXMLPHPParse", "flags" => 0 ),
array( "id" => 9, "name" => "XML Builtin", "fct" => "HPEXMLBIParse", "flags" => 0 ),
array( "id" => 3, "name" => "ScriptingNews2", "fct" => "HPEScriptingNews2Parse", "flags" => 0 ),
array( "id" => 11, "name" => "OPML", "fct" => "HPEOPMLParse", "flags" => 0 ),
array( "id" => 5, "name" => "HTML Regex", "fct" => "HPEHTMLRegexParse", "flags" => 0 ),
array( "id" => 7, "name" => "HTML Parser", "fct" => "HPEHTMLParse", "flags" => 0 ),
array( "id" => 8, "name" => "RSSify Parser", "fct" => "HPERssifyParse", "flags" => 0 ),
array( "id" => 6, "name" => "External", "fct" => "HPEExternalParse", "flags" => 0 ),
array( "id" => 10, "name" => "PHP Code", "fct" => "HPEPHPCodeParse", "flags" => 0 ),
array( "id" => 1, "name" => "Line News", "fct" => "HPELINEParse", "flags" => 0 ),
array( "id" => 2, "name" => "Block News", "fct" => "HPEBLOCKParse", "flags" => 0 )
);
}
function init()
{
global $HPEinc;
$this->localpath = ereg_replace("^%HPEinc%", $HPEinc, $this->rlocalpath);
$macros = array(
"%HPEinc%" => $HPEinc,
"%HPElocal%" => $this->localpath
);
$this->phpinclude = strtr($this->rphpinclude, $macros);
$this->cachepath = strtr($this->rcachepath, $macros);
for($i=0; $i<count($this->themes); $i++)
{
$this->themes[$i]["path"] = strtr( $this->themes[$i]["rpath"] , $macros );
$this->themes[$i]["url"] = ereg_replace("^%HPEinc%", $this->siteroot ."HPE",
$this->themes[$i]["rpath"]);
}
for($i=0; $i<count($this->newsparsers); $i++)
{
if(!isset($this->newsparsers[$i]["flags"]))
$this->newsparsers[$i]["flags"] = 0;
}
for($i=0; $i<count($this->adminmodules); $i++)
$this->adminmodules[$i]["path"] = strtr($this->adminmodules[$i]["rpath"], $macros);
}
function initHandlers()
{
reset($this->pagehandlers);
while (list ($key, $val) = each ($this->pagehandlers))
$this->pagehandlers[$key]["control"] = new $this->pagehandlers[$key]["class"];
reset($this->pagehandlers);
reset($this->modhandlers);
while (list ($key, $val) = each ($this->modhandlers))
$this->modhandlers[$key]["control"] = new $this->modhandlers[$key]["class"];
reset($this->modhandlers);
reset($this->userservices);
while (list ($key, $val) = each ($this->userservices))
$this->userservices[$key]["control"] = new $this->userservices[$key]["class"];
reset($this->userservices);
}
function chkTimeOut()
{
if(HPEWINCOMPAT && $this->timeout && !HPEWINCOMPAT) {
$dat = getrusage();
if($dat["ru_utime.tv_sec"] >= $this->timeout)
$this->timedout = true;
}
return $this->timedout;
}
function genRandKey($len = 10)
{
mt_srand((double) microtime() * 1000000);
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXY0123456789";
$tag = "";
for($i=0; $i<$len; $i++) $tag .= $chars[mt_rand() % 35];
return $tag;
}
function makeUrlGetReq($ignore = "")
{
$req = "";
global $HTTP_GET_VARS;
if(isset($HTTP_GET_VARS)) {
reset($HTTP_GET_VARS);
while(list ($key, $val) = each ($HTTP_GET_VARS)) {
if($ignore != "") if(ereg("^$ignore\$", $key)) continue;
if($req != "") $req .= "&";
$req .= "$key=" . urlencode($val);
}
}
global $HTTP_POST_VARS;
if(isset($HTTP_POST_VARS)) {
reset($HTTP_POST_VARS);
while(list ($key, $val) = each ($HTTP_POST_VARS)) {
if($ignore != "") if(ereg("^$ignore\$", $key)) continue;
if($req != "") $req .= "&";
$req .= "$key=" . @urlencode($val);
}
}
return $req;
}
function makeHiddenFormFields($ignore = "")
{
$req = "";
global $HTTP_GET_VARS;
if(isset($HTTP_GET_VARS)) {
reset($HTTP_GET_VARS);
while(list ($key, $val) = each ($HTTP_GET_VARS)) {
if($ignore != "") if(ereg("^$ignore\$", $key)) continue;
$req .= "<input type=hidden name=\"$key\" value=\"$val\">";
}
}
global $HTTP_POST_VARS;
if(isset($HTTP_POST_VARS)) {
reset($HTTP_POST_VARS);
while(list ($key, $val) = each ($HTTP_POST_VARS)) {
if($ignore != "") if(ereg("^$ignore\$", $key)) continue;
$req .= "<input type=hidden name=\"$key\" value=\"$val\">";
}
}
return $req;
}
function makeURLToPage()
{
$url = $GLOBALS["PHP_SELF"];
$url .= "?" . $this->makeUrlGetReq("USERLANG");
if(strchr($url, "?")) $url .= "&"; else $url .= "?";
return $url;
}
function AnalyseURI($base)
{
global $PATH_INFO;
global $PHP_SELF;
$this->uri = $PHP_SELF;
$uriarray = explode("/", $PATH_INFO);
$this->uriarray = array();
for($i=0; $i<count($uriarray); $i++) {
if($uriarray[$i] == "") continue;
$this->uriarray[] = $uriarray[$i];
}
}
};
if(file_exists("$HPEinc/admin/config.$HPEconfigname.php"))
{
include "$HPEinc/admin/config.$HPEconfigname.php";
$HPEtheConfig = new HPEConfig();
}
else $HPEtheConfig = new HPEBaseConfig();
function HPEErrorHandler($errno, $message, $filename, $line, $variables)
{
$types = array(E_ERROR => "error", E_WARNING => "warning", E_PARSE => "parse error", E_NOTICE => "notice", E_CORE_ERROR => "core error", E_CORE_WARNING => "core warning", E_COMPILE_ERROR => "compile error", E_COMPILE_WARNING => "compile warning", E_USER_ERROR => "user error", E_USER_WARNING => "user warning", E_USER_NOTICE => "user notice");
$entry = $types[$errno] .": $message in $filename on line $line.";
if ($errno != E_NOTICE && error_reporting())
{
HPEWatchdog("error", $types[$errno] .": $message in $filename on line $line.");
print "$entry\n";
}
}
function HPEWatchdog($type, $message)
{
global $HPEtheDB;
$query = "INSERT INTO $HPEtheDB->dbtwatchdog (type, message, location, hostname, timestamp) VALUES (". $HPEtheDB->escapeString($type) .", ". $HPEtheDB->escapeString($message) .", ". $HPEtheDB->escapeString(getenv("REQUEST_URI")) .", ". $HPEtheDB->escapeString(getenv("REMOTE_ADDR")) .", ". time() .")";
$HPEtheDB->query($query);
}
if($HPEtheConfig->errorall)
error_reporting(E_ALL);
define("HPEWINCOMPAT", ( strtoupper(substr(PHP_OS,0,3)) == 'WIN' ? 1 : 0 ) );
require_once "$HPEinc/database.inc";
$HPEtheDB = new HPEDBAccess();
set_error_handler("HPEErrorHandler");
$HPEtheConfig->init();
require_once "$HPEinc/pages.inc";
require_once "$HPEinc/modules.inc";
require_once "$HPEinc/services.inc";
if($HPEtheConfig->phpinclude != "" && file_exists($HPEtheConfig->phpinclude))
include_once $HPEtheConfig->phpinclude;
$HPEtheConfig->initHandlers();
if(!isset($HPENOSHUTDOWN))
{
if($HPEtheConfig->dbconfurl == "")
die("<H1 align=center>You need to <A HREF=HPE/admin/>configure</A> the site</H1>\n");
if($HPEtheConfig->shutdown)
{
include_once "$HPEinc/xmltree.inc";
include_once "$HPEinc/thememaker.inc";
$data = array(
"message" => $HPEtheConfig->shutdownmsg
);
echo $HPEtheThemeMaker->TPLRun("shutdown", $data);
die("");
}
}
?>