mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.7 KiB
141 lines
4.7 KiB
<?php |
|
|
|
/** |
|
* AVE.cms |
|
* |
|
* @package AVE.cms |
|
* @version 3.x |
|
* @filesource |
|
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
|
* |
|
* @license GPL v.2 |
|
*/ |
|
|
|
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__)))); |
|
|
|
require(BASE_DIR . '/inc/init.php'); |
|
|
|
if (!(isset($_GET['id']) && is_numeric($_GET['id']))) exit; |
|
|
|
// Выполняем запрос к БД и выгребаем все параметры для данного канала |
|
$rss_settings = $AVE_DB->Query(" |
|
SELECT |
|
rss.*, |
|
rubric_title |
|
FROM |
|
" . PREFIX . "_module_rss AS rss |
|
LEFT JOIN |
|
" . PREFIX . "_rubrics AS rub |
|
ON rub.Id = rss.rss_rubric_id |
|
WHERE |
|
rss.id = '" . $_GET['id'] . "' |
|
")->FetchRow(); |
|
|
|
if ($rss_settings !== false) |
|
{ |
|
$rss_settings->rss_site_name = htmlspecialchars($rss_settings->rss_site_name, ENT_QUOTES); |
|
$rss_settings->rss_site_description = htmlspecialchars($rss_settings->rss_site_description, ENT_QUOTES); |
|
|
|
$doctime = get_settings('use_doctime') |
|
? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : ''; |
|
|
|
// Получаем ID, URL и Дату публикации для документов, которые соответсвуют нашей рубрики |
|
// Количество выборки ограничиваем значением установленным для канала |
|
$sql_doc = $AVE_DB->Query(" |
|
SELECT |
|
Id, |
|
document_title, |
|
document_alias, |
|
document_published |
|
FROM " . PREFIX . "_documents |
|
WHERE Id != 1 |
|
AND Id != '" . PAGE_NOT_FOUND_ID . "' |
|
AND rubric_id = '" . $rss_settings->rss_rubric_id . "' |
|
AND document_status = '1' |
|
AND document_deleted != '1' |
|
" . $doctime . " |
|
ORDER BY document_published DESC, Id DESC |
|
LIMIT " . $rss_settings->rss_item_on_page |
|
); |
|
|
|
// Формируем массивы, которые будут хранить инфу |
|
$rss_item = array(); |
|
$rss_items = array(); |
|
|
|
// Выполянем обработку полученных из БД данных |
|
while ($row_doc = $sql_doc->FetchRow()) |
|
{ |
|
$sql_fields = $AVE_DB->Query(" |
|
SELECT |
|
rubric_field_id, |
|
field_value |
|
FROM " . PREFIX . "_document_fields |
|
WHERE document_id = '" . $row_doc->Id . "' |
|
AND (rubric_field_id = '" . $rss_settings->rss_title_id . "' |
|
OR rubric_field_id = '" . $rss_settings->rss_description_id . "') |
|
"); |
|
while ($row_fields = $sql_fields->FetchRow()) |
|
{ |
|
if ($row_fields->rubric_field_id == $rss_settings->rss_title_id) |
|
{ |
|
$rss_item['Title'] = $row_fields->field_value; |
|
} |
|
|
|
if ($row_fields->rubric_field_id == $rss_settings->rss_description_id) |
|
{ |
|
if ($rss_settings->rss_description_lenght == 0) |
|
{ |
|
$teaser = explode('<a name="more"></a>', $row_fields->field_value); |
|
$rss_item['description'] = $teaser[0]; |
|
} |
|
else |
|
{ |
|
if (mb_strlen($row_fields->field_value) > $rss_settings->rss_description_lenght) |
|
{ |
|
$rss_item['description'] = mb_substr($row_fields->field_value, 0, $rss_settings->rss_description_lenght) . '…'; |
|
} |
|
else |
|
{ |
|
$rss_item['description'] = $row_fields->field_value; |
|
} |
|
} |
|
$rss_item['description'] = parse_hide($rss_item['description']); |
|
} |
|
} |
|
|
|
$link_doc = !empty($row_doc->document_alias) ? $row_doc->document_alias : prepare_url($row_doc->document_title); |
|
$link = rewrite_link('index.php?id=' . $row_doc->Id . '&doc=' . $link_doc); |
|
$rss_item['link'] = $rss_settings->rss_site_url . mb_substr($link, mb_strlen(ABS_PATH)); |
|
|
|
$rss_item['pubDate'] = $row_doc->document_published ? date('r', $row_doc->document_published) : date('r', time()); |
|
|
|
array_push($rss_items, $rss_item); |
|
} |
|
} |
|
|
|
// Ну а тут собственно шлем заголовок, что у нас документ XML и в путь... выводим данные |
|
header("Content-Type: application/xml"); |
|
header("Cache-Control: no-cache"); |
|
header("Pragma: no-cache"); |
|
echo '<?xml version="1.0" encoding="utf8"?>'; |
|
?> |
|
|
|
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> |
|
<channel> |
|
<title><?php echo $rss_settings->rss_site_name; ?></title> |
|
<link><?php echo $rss_settings->rss_site_url; ?></link> |
|
<language>ru-ru</language> |
|
<description><?php echo $rss_settings->rss_site_description; ?></description> |
|
<category><![CDATA[<?php echo $rss_settings->rubric_title; ?>]]></category> |
|
<generator>AVE.cms</generator> |
|
<?php foreach($rss_items as $rss_item):?> |
|
<item> |
|
<title><![CDATA[<?php echo $rss_item['Title']; ?>]]></title> |
|
<guid isPermaLink="true"><?php echo $rss_item['link']; ?></guid> |
|
<link><?php echo $rss_item['link']; ?></link> |
|
<description><![CDATA[<?php echo $rss_item['description']; ?>]]></description> |
|
<pubDate><?php echo $rss_item['pubDate']; ?></pubDate> |
|
</item> |
|
<?php endforeach; ?> |
|
</channel> |
|
</rss>
|
|
|