<?
/*
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
*/
require_once "$HPEinc/newssource.inc";
class HPEModule
{
var $name = "";
var $desc = "";
var $flag = 0;
function HPEModule()
{
}
};
class HPENewsModule extends HPEModule
{
var $id = 0;
var $sid = 0;
var $parser = 0;
function HPENewsModule()
{
$this->HPEModule();
$this->name = "NewsBox";
$this->desc = "News Items in a Box";
$this->flags = HPEModuleEditable;
}
function UnSerializeFromXML(&$XMLtree, $path, &$data)
{
$data["source"] = $XMLtree->getAttribute($path, "source");
$data["maxitems"] = $XMLtree->getAttribute($path, "maxitems");
}
function SerializeToXML(&$coldata)
{
return "\t\t\t\t<MODULE type=\"" . $coldata["type"] . "\" " .
"source=\"" . $coldata["source"] . "\" " .
"maxitems=\"" . $coldata["maxitems"] . "\" />\n";
}
function LoadData(&$data, $source, $maxitems)
{
global $HPEtheUser;
global $HPEtheConfig;
global $page;
$comment = "";
$description = "";
$extlink = "";
HPELoadSingleNews($data, $source);
if(count($data) == 0 || $data["flags"] & HPENewsDisable)
{
$data = array(
"id" => $source,
"title" => "Non Available",
"description" => "",
"link" => $HPEtheConfig->siteroot,
"body" => "This channel does not exist on this site",
"items" => array(),
"itemcount" => 0,
"infolink" => ""
);
}
else
{
$data["id"] = $source;
$data["infolink"] = $HPEtheConfig->siteroot . "sources/info/$source/";
if($data["itemcount"] == 0)
{
$data["body"] = "This site is not available at this time, please try again later";
}
else
{
if($maxitems)
array_splice($data["items"], $maxitems);
reset ($data["items"]);
while (list($key, $value) = each ($data["items"]))
$data["items"][$key]["link"] = $HPEtheConfig->siteroot . "click/" . $value["id"] . "/";
}
}
}
function show(&$data, $modid)
{
return $this->showChannel((int) $data["source"], (int) $data["maxitems"], $modid);
}
function showChannel($source, $maxitems = 0, $modid = -1)
{
global $HPEtheUser;
global $HPEtheConfig;
global $page;
global $HPEtheThemeMaker;
$data = array( );
$this->LoadData($data, $source, $maxitems);
$editable = $modid >= 0 && isset($page) && $page >= 0 ? true : false;
$comment = "";
$editlink = "";
$closelink = "";
$configlink = "";
if($editable)
{
$closelink = $HPEtheConfig->siteroot . "user/pages/delmod/onpage/$page/id/$modid/" .
"?done=" . urlencode("$HPEtheConfig->siteroot?page=$page");
$editlink = $HPEtheConfig->siteroot . "sources/info/$source/onpage/$page/module/$modid/?done=" .
urlencode($HPEtheConfig->siteroot . "?page=$page");
}
if($HPEtheUser->iseditor)
{
$configlink = $HPEtheConfig->siteroot . "HPE/editor/?pg=editsite&id=" . $source;
if($page >= 0) $configlink .= "&done=" . $HPEtheConfig->siteroot . "%3Fpage%3D$page";
else $configlink .= "&done=" . $HPEtheConfig->siteroot . "sources/info/$source/";
}
if(isset($data["body"]))
$tpl = "modulebox";
else $tpl = ($data["branding"] == "" ? "modulelist" : "module." . $data["branding"]);
return $HPEtheThemeMaker->TPLModule($data, $comment, $closelink, $editlink, $configlink, $tpl);
}
function GetName(&$data)
{
global $HPEtheDB;
$name = $HPEtheDB->one_data("SELECT sitename FROM $HPEtheDB->dbtnewssites WHERE siteid=" . $data["source"]);
return $name ? $name : "Unknown Source";
}
function command($cmd, &$module)
{
if($module["type"] != 0) return -1;
global $HPEtheDB;
if($cmd == "GETNAME")
{
$query = "SELECT sitename FROM $HPEtheDB->dbtnewssites WHERE siteid=" .
$module["params"][0] . ";";
$module["name"] = $HPEtheDB->one_data($query);
return $module["name"];
}
return -1;
}
function Create($params)
{
return array( "type" => 0, "source" => $params[0], "maxitems" => $params[1] );
}
};
class HPENewsLogModule extends HPEModule
{
function HPENewsLogModule()
{
$this->HPEModule();
$this->name = "NewsNav";
$this->desc = "Navigate News Items by Category";
$this->flags = HPEModuleEditable;
}
function show(&$data, $modid)
{
global $HPEinc;
include "$HPEinc/plugins/mod.newslog.show.inc";
return $content;
}
function command($cmd, &$module)
{
if($module["type"] != 1) return -1;
global $HPEtheDB;
if($cmd == "GETNAME")
{
$newscats = new HPECatInfo();
return $newscats->catsbyid[$module["params"][0]]["name"];
}
return -1;
}
function UnSerializeFromXML(&$XMLtree, $path, &$data)
{
$data["cat"] = $XMLtree->getAttribute($path, "cat");
$data["maxitems"] = $XMLtree->getAttribute($path, "maxitems");
$data["excludes"] = $XMLtree->getAttribute($path, "excludes");
}
function SerializeToXML(&$coldata)
{
return "\t\t\t\t<MODULE type=\"" . $coldata["type"] . "\" " .
"cat=\"" . $coldata["cat"] . "\" " .
"excludes=\"" . $coldata["excludes"] . "\" " .
"maxitems=\"" . $coldata["maxitems"] . "\" />\n";
}
function Create($params)
{
return array( "type" => 1, "cat" => $params[0], "excludes" => "", "maxitems" => $params[1] );
}
function GetName(&$data)
{
$newscats = new HPECatInfo();
return $newscats->GetName($data["cat"]);
}
};
class HPENewSourcesModule extends HPEModule
{
function HPENewSourcesModule()
{
$this->HPEModule();
$this->name = "Recent Channels";
$this->desc = "The Ten Latest Channels on this Site";
$this->flags = 0;
}
function UnSerializeFromXML(&$XMLtree, $path, &$data)
{
}
function SerializeToXML(&$coldata)
{
return "\t\t\t\t<MODULE type=\"" . $coldata["type"] . "\" />\n";
}
function show($data, $modid)
{
global $HPEinc;
include "$HPEinc/plugins/mod.newchannels.show.inc";
return $content;
}
function GetName(&$data)
{
return "Latest Channels";
}
function Create($params)
{
return array( "type" => 2 );
}
};
class HPEPopularSourcesModule extends HPEModule
{
function HPEPopularSourcesModule()
{
$this->HPEModule();
$this->name = "Popular Channels";
$this->desc = "The Ten Most Popular Channels on this Site";
}
function UnSerializeFromXML(&$XMLtree, $path, &$data)
{
$data["delay"] = $XMLtree->getAttribute($path, "delay");
if(empty($data["delay"]) || $data["delay"] < 1)
$data["delay"] = 1;
}
function SerializeToXML(&$coldata)
{
return "\t\t\t\t<MODULE type=\"" . $coldata["type"] . "\" delay=\"" . $coldata["delay"] . "\" />\n";
}
function LoadData(&$data, $delay)
{
global $HPEinc;
global $HPEtheConfig;
global $HPEtheDB;
$cachefile = $HPEtheConfig->cachepath . "/" . "NewsItems/Popular.$delay.spd";
$data = "";
if(file_exists($cachefile) && (time() - filemtime($cachefile)) < 1800)
{
$cf = fopen($cachefile, "r");
if($cf)
{
$cdata = fread($cf, filesize($cachefile));
fclose($cf);
$data = unserialize($cdata);
}
}
if($data == "")
{
$data = array( );
$today = date("ymd");
$week = date("ymd", time() - 3600 * 24 * 7);
$month = date("ym");
if($delay == 30)
{
$query = "SELECT s.siteid, s.sitename, s.siteurl, s.description, sum(c.total) AS z FROM " .
"$HPEtheDB->dbtnewsclicks AS c, $HPEtheDB->dbtnewssites AS s WHERE c.siteid = s.siteid " .
"AND c.date LIKE '$month%' AND !(s.flags & " . HPENewsDisable . ") GROUP BY c.siteid ORDER BY z DESC LIMIT 10;";
}
elseif($delay == 7)
{
$query = "SELECT s.siteid, s.sitename, s.siteurl, s.description, sum(c.total) AS z FROM " .
"$HPEtheDB->dbtnewsclicks AS c, $HPEtheDB->dbtnewssites AS s WHERE c.siteid = s.siteid " .
"AND c.date > '$week' AND !(s.flags & " . HPENewsDisable . ") GROUP BY c.siteid ORDER BY z DESC LIMIT 10;";
}
elseif($delay > 30)
{
$query = "SELECT s.siteid, s.sitename, s.siteurl, s.description, sum(c.total) AS z FROM " .
"$HPEtheDB->dbtnewsclicks AS c, $HPEtheDB->dbtnewssites AS s WHERE c.siteid = s.siteid " .
"AND !(s.flags & " . HPENewsDisable . ") GROUP BY c.siteid ORDER BY z DESC LIMIT 10;";
}
else
{
$query = "SELECT s.siteid, s.sitename, s.siteurl, s.description, sum(c.total) AS z FROM " .
"$HPEtheDB->dbtnewsclicks AS c, $HPEtheDB->dbtnewssites AS s WHERE c.siteid = s.siteid " .
"AND c.date='$today' AND !(s.flags & " . HPENewsDisable . ") GROUP BY c.siteid ORDER BY z DESC LIMIT 10;";
}
$result = $HPEtheDB->query($query);
if(!$HPEtheDB->iserror($result) && $HPEtheDB->getrowcount($result))
{
while($row = $HPEtheDB->getrow($result))
{
$data[] = array (
"id" => $row["siteid"],
"title" => $row["sitename"],
"desc" => $row["description"],
"total" => $row["z"]
);
}
$cf = fopen($cachefile, "w");
if($cf)
{
$sdata = serialize($data);
fwrite($cf, $sdata, strlen($sdata));
fclose($cf);
}
}
}
}
function show($data, $modid)
{
global $HPEtheThemeMaker;
global $HPEtheConfig;
global $page;
global $HPEtheUser;
if($modid >= 0 && isset($page) && $page >= 0 && $HPEtheUser->userid)
$closelink = $HPEtheConfig->siteroot . "user/pages/delmod/onpage/$page/id/$modid/" .
"?done=" . urlencode("$HPEtheConfig->siteroot?page=$page");
else $closelink = "";
$this->LoadData($sources, $data["delay"]);
$data = array(
"delay" => $data["delay"],
"closelink" => $closelink,
"sources" => &$sources
);
return $HPEtheThemeMaker->TPLRun("module.popularchannels", $data);
}
function GetName(&$data)
{
return "Popular Channels";
}
function Create($params)
{
return array( "type" => 3 );
}
};
?>