<?
/*
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
*/
function themeparser($themeorg, $ODBY = "upd", $SRTHEMES = "0", $NUMTHEMES = "6")
{
global $HPEinc;
global $HPEtheConfig;
$hostname = $themeorg . ".themes.org";
$port = 80;
$uri = "/themes.rdf.phtml?odby=$ODBY&sc=desc&srtheme=$SRTHEMES&numthemes=$NUMTHEMES&moderated=off";
$header_passed = 0;
$cache = "$HPEtheConfig->cachepath/cache.to." . $themeorg . $ODBY . $SRTHEMES . $NUMTHEMES . ".lst";
$ctime = @fileMtime($cache);
$ntime = Time();
$dtime = $ntime - $ctime;
$themecount = 0;
$linelength = 1024;
if($dtime > $ntime || $dtime > 3600 || fileSize($cache) < 20) {
$cfile = @fopen($cache, "w");
if(!$cfile) {
echo ("Could not create cache file " . $cache . "\n");
return 0;
}
$fpread = fsockopen("$hostname", $port, &$errno, &$errstr);
if(!$fpread) {
echo "Error connecting to " . $hostname . ": " . $errstr . "<br>\n";
} else {
fputs($fpread, "GET " . $uri . " HTTP/1.0\n");
fputs($fpread, "User-Agent: PHP TOParser/0.1 mkrus@free.fr\n");
fputs($fpread, "Host: " . $hostname . ":80\n");
fputs($fpread, "Accept: */*\r\n\r\n");
$str = fgets($fpread, $linelength);
if(strstr($str, "404") != "") {
echo "Document <A HREF=\"http://" . $hostname . $uri. "\">http://" . $hostname . $uri . "</A> not found\n";
fclose($cfile);
return 0;
}
$filedate = Date("H:i m/d/y");
fputs($cfile, "$filedate\n");
while (!feof($fpread)) {
if ($header_passed == 1) {
$str = trim(fgets($fpread, $linelength));
if($str == "") { continue; }
if(strstr($str, "<channel>") != "") {
$keepon = 1;
while(1) {
$locstr = trim(fgets($fpread, $linelength));
if($locstr == "") { continue; }
if(strstr($locstr, "<title>") != "") {
$channeltitle = strtok($locstr, "<>");
$channeltitle = strtok("<>");
$channeltitle = strtok("<>");
} elseif(strstr($locstr, "<link>") != "") {
$channelurl = strtok($locstr, "<>");
$channelurl = strtok("<>");
$channelurl = strtok("<>");
} elseif(strstr($locstr, "</channel>") != "") {
break;
}
}
continue;
}
if(strstr($str, "<item>") != "") {
$invers = "";
if(isset($vertab)) unset($vertab);
while(1) {
$str = trim(fgets($fpread, $linelength));
if($invers != "") {
if(strstr($str, "</ver") != "") {
$invers = "";
} elseif(strstr($str, "<link>") != "") {
$tmp = strtok($str, "<>");
$tmp = strtok("<>");
$vertab[] = $invers;
$vertab[] = strtok("<>");
} elseif(strstr($str, "</item>") != "") {
break;
}
} else {
if(strstr($str, "<name>") != "") {
$name = strtok($str, "<>");
$name = strtok("<>");
$name = strtok("<>");
} elseif(strstr($str, "<updated>") != "") {
$update = strtok($str, "<>");
$update = strtok("<>");
$update = strtok("<>");
$update = Date("m/d/y", $update);
} elseif(strstr($str, "<id>") != "") {
$tid = strtok($str, "<>");
$tid = strtok("<>");
$tid = strtok("<>");
} elseif(strstr($str, "<link>") != "") {
$link = strtok($str, "<>");
$link = strtok("<>");
$link = strtok("<>");
} elseif(strstr($str, "<shot>") != "") {
$shot = strtok($str, "<>");
$shot = strtok("<>");
$shot = strtok("<>");
} elseif(strstr($str, "<thumb>") != "") {
$thumb = strtok($str, "<>");
$thumb = strtok("<>");
$thumb = strtok("<>");
} elseif(strstr($str, "<vers>") != "") {
$vers = strtok($str, "<>");
$vers = strtok("<>");
$vers = strtok("<>");
} elseif(strstr($str, "<ver ") != "") {
$toto = strtok($str, " ");
$toto = strtok(" ");
$invers = strtok($toto, "<>");
} elseif(strstr($str, "</item>") != "") {
break;
}
}
}
fputs($cfile, "$name\n$link\n$tid\n");
fputs($cfile, "$thumb\n$shot\n$update\n");
if(isset($vertab)) {
$i=0;
while($i < count($vertab)) {
$verkey = $vertab[$i];
$verlink = $vertab[$i + 1];
fputs($cfile, "$verkey\n$verlink\n");
$i+=2;
}
}
fputs($cfile, "%%\n");
$themecount++;
}
} else {
$str = ltrim(Chop(fgets($fpread, $linelength)));
if ($str == "") {
$header_passed = 1;
}
}
}
fclose($fpread);
}
fclose($cfile);
}
return $cache;
}
?>