Jimmy Monin 58ffd500e6 Upgrade LBCAlerte to version 3.3
Add upgrade script
2016-11-26 19:25:53 +01:00

99 lines
2.7 KiB
PHP

<?php
if (!isset($_GET["url"])) {
return;
}
$disableLayout = true;
use \FeedWriter\RSS2;
try {
$parser = \AdService\ParserFactory::factory($_GET["url"]);
} catch (\AdService\Exception $e) {
echo "Cette adresse ne semble pas valide.";
exit;
}
if (false !== strpos($_GET["url"], "leboncoin.fr")) {
$_GET["url"] = rtrim(preg_replace("#(o|sp)=[0-9]*&?#", "", $_GET["url"]), "?&");
}
// nettoyage cache
$files = array_diff(scandir(DOCUMENT_ROOT."/var/feeds"), array(".", ".."));
foreach ($files AS $file) {
$file = DOCUMENT_ROOT."/var/feeds/".$file;
$mtime = filemtime($file);
if (($mtime + 20 * 60) < time()) {
unlink($file);
}
}
header("Content-Type: application/rss+xml", true);
$logger = Logger::getLogger("main");
$id = sha1($_SERVER["REQUEST_URI"]);
$cache_filename = DOCUMENT_ROOT."/var/feeds/".$id.".xml";
if ("development" != APPLICATION_ENV && is_file($cache_filename)) {
readfile($cache_filename);
return;
}
$params = $_GET;
if (isset($params["cities"])) {
$params["cities"] = array_map("trim", explode("\n", mb_strtolower($params["cities"])));
}
$content = $client->request($_GET["url"]);
$filter = new \AdService\Filter($params);
$siteConfig = \AdService\SiteConfigFactory::factory($_GET["url"]);
$baseurl = $config->get("general", "baseurl", "");
$ads = $parser->process(
$content,
$filter,
parse_url($_GET["url"], PHP_URL_SCHEME)
);
$title = $siteConfig->getOption("site_name");
$urlParams = parse_url($_GET["url"]);
if (!empty($urlParams["query"])) {
parse_str($urlParams["query"], $aQuery);
if (!empty($aQuery["q"])) {
$title .= " - ".$aQuery["q"];
}
}
$feeds = new RSS2;
$feeds->setTitle($siteConfig->getOption("site_name"));
$feeds->setLink($siteConfig->getOption("site_url"));
$feeds->setSelfLink(
!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"?"https":"http".
"://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]
);
$feeds->setDescription("Flux RSS de la recherche : ".$_GET["url"]);
$feeds->setChannelElement("language", "fr-FR");
// The date when this feed was lastly updated. The publication date is also set.
$feeds->setDate(date(DATE_RSS, time()));
$feeds->setChannelElement("pubDate", date(\DATE_RSS, strtotime("2013-04-06")));
$feeds->addGenerator();
if (count($ads)) {
foreach ($ads AS $ad) {
$item = $feeds->createNewItem();
$item->setTitle($ad->getTitle());
$item->setLink($ad->getLink());
$item->setDescription(require DOCUMENT_ROOT."/app/rss/views/rss-ad.phtml");
if ($ad->getDate()) {
$item->setDate($ad->getDate());
}
$item->setId(md5($ad->getId()));
$feeds->addItem($item);
}
}
$content = $feeds->generateFeed();
file_put_contents($cache_filename, $content);
echo $content;