<?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;
	}
}

?>