module-newsarchive/class.newsarchive.php

253 lines
6.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* AVE.cms - Модуль Архив новостей
*
* @filesource
*/
/**
* Класс работы с архивом новостей
*
* @package AVE.cms
* @subpackage module_Newsarchive
* @author Arcanum
* @since 2.0
*/
class Newsarchive
{
/**
* Метод, отвечающий за вывод списка всех архивов в Панели управления
*
* @param string $tpl_dir - путь к папке с шаблонами
*/
function newsarchiveList($tpl_dir, $adm_tpl_dir)
{
global $AVE_DB, $AVE_Template;
$archives = array();
$ids = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_newsarchive");
while ($row = $sql->FetchRow())
{
array_push($archives, $row);
}
$cnt = count($archives);
for ($i=0; $i< $cnt; $i++)
{
$ids[] = explode(',', $archives[$i]->newsarchive_rubrics);
}
$sql = $AVE_DB->Query("
SELECT
Id,
rubric_title
FROM " . PREFIX . "_rubrics
");
while ($row = $sql->FetchRow())
{
for ($i=0; $i< $cnt; $i++)
{
if (in_array($row->Id, $ids[$i]))
{
@$archives[$i]->rubric_title = strstr($archives[$i]->rubric_title . ', ' . $row->rubric_title, ' ');
}
}
}
$AVE_Template->assign('archives', $archives);
$AVE_Template->assign('content', $AVE_Template->fetch($adm_tpl_dir . 'admin_archive_list.tpl'));
}
/**
* Метод, отвечающий за схранение изменений в списке всех архивов в Панели управления
*
*/
function newsarchiveListSave()
{
global $AVE_DB;
foreach ((array)$_POST['newsarchive_name'] as $id => $newsarchive_name)
{
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_newsarchive
SET newsarchive_name = '" . $newsarchive_name . "'
WHERE id = '" . (int)$id . "'
");
}
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION);
exit;
}
/**
* Метод, отвечающий за вывод списка месяцев в публичной части сайта (Основная функция вывода)
*
* @param string $tpl_dir - путь к папке с шаблонами
* @param int $id - идентификатор архива новостей
*/
function newsarchiveShow($tpl_dir, $id)
{
global $AVE_DB, $AVE_Template;
$months = array('','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
$mid = array('','01','02','03','04','05','06','07','08','09','10','11','12');
$dd = array();
$doctime = get_settings('use_doctime')
? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : '';
$row = $AVE_DB->Query("
SELECT
newsarchive_rubrics,
newsarchive_show_empty
FROM " . PREFIX . "_module_newsarchive
WHERE id = '" . $id . "'
")->FetchRow();
$query = $AVE_DB->Query("
SELECT
MONTH(FROM_UNIXTIME(document_published)) AS `month`,
YEAR(FROM_UNIXTIME(document_published)) AS `year`,
COUNT(*) AS nums
FROM " . PREFIX . "_documents
WHERE rubric_id IN (" . $row->newsarchive_rubrics . ")
AND Id != '1'
AND Id != '" . PAGE_NOT_FOUND_ID . "'
AND document_deleted = '0'
AND document_status = '1'
AND document_published > UNIX_TIMESTAMP(DATE_FORMAT((CURDATE() - INTERVAL 15 YEAR),'%Y-%m-01'))
" . $doctime . "
GROUP BY `year`,`month`
ORDER BY `year` DESC,`month` DESC
");
while ($res = $query->FetchRow())
{
$res->mid = $mid[$res->month];
$res->month = $months[$res->month];
array_push($dd, $res);
}
$AVE_Template->assign('archiveid', $id);
$AVE_Template->assign('newsarchive_show_empty', $row->newsarchive_show_empty);
$AVE_Template->assign('months', $dd);
if (file_exists($tpl_dir . 'public_archive-'. $id .'.tpl')) {
$AVE_Template->display($tpl_dir . 'public_archive-'. $id .'.tpl');
} else {
$AVE_Template->display($tpl_dir . 'public_archive.tpl');
}
}
/**
* Метод, отвечающий за добавление нового архива в Панели управления
*
*/
function newsarchiveNew()
{
global $AVE_DB;
$AVE_DB->Query("
INSERT
INTO " . PREFIX . "_module_newsarchive
SET
id = '',
newsarchive_name = '" . $_POST['newsarchive_name_new'] . "',
newsarchive_rubrics = '',
newsarchive_show_days = '1',
newsarchive_show_empty = ''
");
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=edit&cp=' . SESSION . '&id=' . $AVE_DB->InsertId());
exit;
}
/**
* Метод, отвечающий за вывод данных для редактирования выбранного архива
*
* @param string $tpl_dir - путь к папке с шаблонами
*/
function newsarchiveEdit($tpl_dir, $adm_tpl_dir)
{
global $AVE_DB, $AVE_Template;
$id = intval($_GET['id']);
$archives = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_newsarchive
WHERE id = '" . $id . "'
")->FetchRow();
$ids = @explode(',', $archives->newsarchive_rubrics);
$sql = $AVE_DB->Query("
SELECT
Id,
rubric_title
FROM " . PREFIX . "_rubrics
");
$newsarchive_rubrics = array();
while ($row = $sql->FetchRow())
{
if (in_array($row->Id, $ids))
{
$row->sel = 1;
array_push($newsarchive_rubrics, $row);
}
else
{
$row->sel = 0;
array_push($newsarchive_rubrics, $row);
}
}
$AVE_Template->assign('archives', $archives);
$AVE_Template->assign('newsarchive_rubrics', $newsarchive_rubrics);
$AVE_Template->assign('content', $AVE_Template->fetch($adm_tpl_dir . 'admin_archive_edit.tpl'));
}
/**
* Метод, отвечающий за сохранение изменений для редактируемого архива
*
*/
function newsarchiveSave()
{
global $AVE_DB;
$AVE_DB->Query("
UPDATE " . PREFIX . "_module_newsarchive
SET
newsarchive_name = '" . $_POST['newsarchive_name'] . "',
newsarchive_rubrics = '" . implode(',', (array)$_POST['newsarchive_rubrics']) . "',
newsarchive_show_days = '" . $_POST['newsarchive_show_days'] . "',
newsarchive_show_empty = '" . $_POST['newsarchive_show_empty'] . "'
WHERE
id = '" . intval($_POST['id']) . "'
");
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION);
exit;
}
/**
* Метод, отвечающий за удаление выбранного архива из Панели управления
*
*/
function newsarchiveDelete()
{
global $AVE_DB;
$AVE_DB->Query("
DELETE
FROM " . PREFIX . "_module_newsarchive
WHERE id = '" . intval($_GET['id']) . "'
");
header('Location:index.php?do=modules&action=modedit&mod=newsarchive&moduleaction=1&cp=' . SESSION);
exit;
}
}
?>