Файл: adultscript-2.0.3-pro/files/modules/photo/components/rss.php
Строк: 149
<?php
defined('_VALID') or die('Restricted Acess!');
class VComponent_photo_rss extends VModule_photo
{
public function __construct()
{
parent::__construct();
}
public function render()
{
$cfg = VF::cfg('core.config');
$pcfg = VF::cfg('module.photo');
$args = $this->get_query(TRUE, 2);
$slug = $args['slug'];
$order = $args['order'];
$timeline = $args['timeline'];
if ($slug != '') {
$categories = $this->get_photo_categories();
foreach ($categories as $category) {
if ($slug == $category['slug']) {
$cat_id = $category['cat_id'];
$name = $category['name'];
break;
}
}
if (!isset($cat_id)) {
VModule::load('404', true);
}
$sql = 'SELECT a.album_id, a.title, a.slug, a.rating, a.rated_by, a.description,
a.total_photos, a.total_views, a.add_date, u.username,
GROUP_CONCAT(DISTINCT c.slug) AS cslug,
GROUP_CONCAT(DISTINCT c.name) AS name,
GROUP_CONCAT(DISTINCT t.name) AS tags
FROM #__photo_category AS pc
LEFT JOIN #__photo_albums AS a ON (a.album_id = pc.album_id AND a.type = 'public' AND a.status = '1')
LEFT JOIN #__photo_categories AS c ON (c.cat_id = pc.cat_id)
LEFT JOIN #__photo_tags AS t ON (t.album_id = a.album_id)
LEFT JOIN #__user AS u ON (u.user_id = a.user_id)
WHERE pc.cat_id = '.$cat_id;
$sql_delim = ' AND';
} else {
$sql = 'SELECT a.album_id, a.title, a.slug, a.rating, a.rated_by, a.description,
a.total_photos, a.total_views, a.add_date, u.username,
GROUP_CONCAT(DISTINCT c.slug) AS cslug,
GROUP_CONCAT(DISTINCT c.name) AS name,
GROUP_CONCAT(DISTINCT t.name) AS tags
FROM #__photo_albums AS a
LEFT JOIN #__photo_category AS pc ON (pc.album_id = a.album_id)
LEFT JOIN #__photo_categories AS c ON (c.cat_id = pc.cat_id)
LEFT JOIN #__photo_tags AS t ON (t.album_id = a.album_id)
LEFT JOIN #__user AS u ON (u.user_id = a.user_id)';
$sql_delim = ' WHERE';
}
switch ($timeline) {
case 'today':
$sql .= $sql_delim." DATE_FORMAT(a.add_date, '%y-%m-%d') = DATE_FORMAT(NOW(), '%y-%m-%d')";
break;
case 'yesterday':
$sql .= $sql_delim." DATE_FORMAT(a.add_date, '%y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL -1 DAY)";
break;
case 'week':
break;
case 'month':
$sql .= $sql_delim." DATE_FORMAT(a.add_date, '%y-%m') = DATE_FORMAT(NOW(), '%y-%m')";
break;
case 'year':
$sql .= $sql_delim." DATE_FORMAT(a.add_date, '%y') = DATE_FORMAT(NOW(), '%y')";
break;
}
$sql .= ' GROUP BY a.album_id';
switch ($order) {
case 'recent':
$sql .= ' ORDER BY a.album_id DESC';
break;
case 'popular':
$sql .= ' ORDER BY a.total_views DESC';
break;
case 'rated':
$sql .= ' ORDER BY a.rating DESC';
break;
case 'discussed':
$sql .= ' ORDER BY a.total_comments';
break;
case 'photos':
$sql .= ' ORDER BY a.total_photos';
break;
case 'favorited':
$sql .= ' ORDER BY a.total_favorites';
break;
}
$sql .= ' LIMIT '.$pcfg['rss_per_page'];
$db = VF::factory('database');
$cache = VF::factory('cache');
if (!$albums = $cache->get($sql, 3600)) {
$albums = $db->get_rows($sql);
if ($db->affected_rows()) {
$cache->store($sql, $albums, 3600);
}
}
header('Content-Type: text/xml');
ob_start();
print "<?xml version="1.0" encoding="utf-8" ?>n";
print "<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">n";
print "<channel>n";
print "<title>".htmlspecialchars($cfg['site_name'])."</title>n";
print "<link>".BASE_URL."/</link>n";
print "<description>".htmlspecialchars($cfg['meta_desc'])."</description>n";
print "<copyright>Copyright (c) 2010 by ".htmlspecialchars($cfg['site_name'])." - All rights reserved.</copyright>n";
print "<pubDate>".date('r')."</pubDate>n";
print "<lastBuildDate>".date('r')."</lastBuildDate>n";
print "<language>en-us</language>n";
print "<image>n";
print "<url>".BASE_URL."/templates/".$cfg['template']."/images/logo.png</url>n";
print "<title>".htmlspecialchars($cfg['site_name'])."</title>n";
print "<link>".BASE_URL."/</link>n";
print "</image>n";
foreach ($albums as $album) {
$link = BASE_URL.'/photo/'.$album['album_id'].'/'.$album['slug'].'/';
$tags = explode(',', $album['tags']);
$count = count($tags)-1;
$tag_string = '';
foreach ($tags as $index => $tag) {
$tag = trim($tag);
$tag_string .= "<a href="".BASE_URL."/photo/tag/".str_replace(' ', '-', $tag)."/">".$tag."</a> ";
if ($index !== $count) {
$tag_string .= ', ';
}
}
$categories = explode(',', $album['name']);
$slugs = explode(',', $album['cslug']);
$count = count($categories)-1;
$cat_string = '';
foreach ($categories as $index => $name) {
$cat_string .= "<a href="".BASE_URL."/photo/".$slugs[$index]."">".htmlspecialchars($name)."</a>";
if ($index !== $count) {
$cat_string .= ', ';
}
}
print "<item>n";
print " <title>".htmlspecialchars($album['title'], ENT_QUOTES, 'UTF-8')."</title>n";
print " <link>".$link."</link>n";
print " <guid>".$link."</guid>n";
print " <description>n";
print " <![CDATA[";
print "<img src="".MEDIA_URL."/photos/covers/".$album['album_id'].".jpg" align="left" border="0" width="".$pcfg['cover_width']."" height="".$pcfg['cover_height']."" vspace="4" hspace="4" />
<br />
Description: ".htmlspecialchars($album['description'], ENT_QUOTES, 'UTF-8')."<br />
Category: ".$cat_string."<br />
Tags: ".$tag_string."<br />
Date: ".$album['add_date']."<br /></p>";
print " ]]>n";
print " </description>n";
print " <pubDate>".date('r', strtotime($album['add_date']))."</pubDate>n";
print "</item>n";
}
print "</channel>n";
print "</rss>";
ob_end_flush();
}
}