259 lines
8.2 KiB
PHP
Raw Permalink 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
/**
* Класс работы с модулем Вопрос-Ответ
*
* @package AVE.cms
* @subpackage module_FAQ
* @filesource
*/
class Faq
{
/**
* Вывод списка рубрик
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqList($tpl_dir)
{
global $AVE_DB, $AVE_Template;
$faq = array();
$sql = $AVE_DB->Query("SELECT * FROM ". PREFIX ."_module_faq");
while ($row = $sql->FetchRow()) array_push($faq, $row);
$AVE_Template->assign("faq_arr", $faq);
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_faq_list.tpl"));
}
/**
* Создание новой рубрики
*
*/
public static function faqNew()
{
global $AVE_DB;
if (isset($_POST['new_faq_title']) && trim($_POST['new_faq_title']))
{
$AVE_DB->Query("INSERT INTO " . PREFIX . "_module_faq SET id = '', faq_title = '" . mb_substr($_POST['new_faq_title'], 0, 100) . "', faq_description = '" . mb_substr($_POST['new_faq_desc'], 0, 255) . "'");
}
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
/**
* Удаление рубрики вместе с вопросами и ответами
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqDelete($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0)
{
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq WHERE id = '" . $_GET['fid'] . "'");
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "'");
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_GET['fid']);
}
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
/**
* Запись изменений в наименованиях и описаниях рубрик
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqListSave($tpl_dir)
{
global $AVE_DB, $AVE_Template;
foreach($_POST['faq_title'] as $id => $faq_title)
{
if (is_numeric($id) && $id > 0 && trim($faq_title))
{
$AVE_DB->Query("UPDATE " . PREFIX . "_module_faq SET faq_title = '" . mb_substr($faq_title, 0, 100) . "', faq_description = '" . mb_substr($_POST['faq_description'][$id], 0, 255) . "' WHERE id = '" . $id . "'");
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $id);
}
}
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
/**
* Вывод списка вопросов и ответов определённой рубрики
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqQuestionList($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (!(isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0))
{
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
$questions = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "'");
while ($row = $sql->FetchRow()) array_push($questions, $row);
$r_name = $AVE_DB->Query("SELECT * FROM ". PREFIX ."_module_faq WHERE id = '" . $_GET['fid'] . "'")->FetchRow();
$AVE_Template->assign("questions", $questions);
$AVE_Template->assign("RubricName", $r_name->faq_title);
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_faq_edit.tpl"));
}
/**
* Вывод формы редактирования вопроса и ответа на него
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqQuestionEdit($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (! (isset($_GET['fid']) && is_numeric($_GET['fid']) && $_GET['fid'] > 0))
{
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
{
$faq = $AVE_DB->Query("
SELECT *
FROM
" . PREFIX . "_module_faq_quest
WHERE
faq_id = '" . (int)$_GET['fid'] . "'
AND
id = '" . (int)$_GET['id'] . "'
")->FetchAssocArray();
if ($faq === false)
{
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
}
else
{
$faq = array(
'id' => '',
'faq_quest' => '',
'faq_answer' => '',
'faq_id' => $_GET['fid']
);
}
$oCKeditor = new CKeditor();
$oCKeditor->returnOutput = true;
$oCKeditor->config['toolbar'] = 'Verysmall';
$oCKeditor->config['height'] = 100;
$config = array();
$faq['faq_quest'] = $oCKeditor->editor('faq_quest', $faq['faq_quest'], $config);
$oCKeditor2 = new CKeditor();
$oCKeditor2->returnOutput = true;
$oCKeditor2->config['toolbar'] = 'Small';
$oCKeditor2->config['height'] = 400;
$config2 = array();
$faq['faq_answer'] = $oCKeditor2->editor('faq_answer', $faq['faq_answer'], $config2);
$AVE_Template->assign($faq);
$AVE_Template->assign("content", $AVE_Template->fetch($tpl_dir . "admin_quest_edit.tpl"));
}
/**
* Запись нового или изменённого вопроса и ответа на него
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqQuestionSave($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (!(isset($_POST['fid']) && is_numeric($_POST['fid']) && $_POST['fid'] > 0))
{
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
if (isset($_POST['id']) && is_numeric($_POST['id']) && $_POST['id'] > 0)
{
$AVE_DB->Query("UPDATE " . PREFIX . "_module_faq_quest SET faq_quest = '" . $_POST['faq_quest'] . "', faq_answer = '" . $_POST['faq_answer'] . "' WHERE id = '" . $_POST['id'] . "'");
}
else
{
if ($AVE_DB->Query("SELECT 1 FROM " . PREFIX . "_module_faq WHERE id = '" . $_POST['fid'] . "'")->GetCell())
{
$AVE_DB->Query("INSERT INTO " . PREFIX . "_module_faq_quest SET id = '', faq_id = '" . $_POST['fid'] . "', faq_quest = '" . $_POST['faq_quest'] . "', faq_answer = '" . $_POST['faq_answer'] . "'");
}
}
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_POST['fid']);
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=questlist&fid=" . $_POST['fid'] . "&cp=" . SESSION);
exit;
}
/**
* Удаление вопроса и ответа на него
*
* @param string $tpl_dir путь к директории с шаблонами модуля
*/
public static function faqQuestionDelete($tpl_dir)
{
global $AVE_DB, $AVE_Template;
if (!(isset($_GET['fid']) && isset($_GET['id'])
&& is_numeric($_GET['fid']) && is_numeric($_GET['id'])
&& $_GET['fid'] > 0 && $_GET['id'] > 0))
{
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=1&cp=" . SESSION);
exit;
}
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . $_GET['fid'] . "' AND id = '" . $_GET['id'] . "'");
$AVE_Template->clear_cache($tpl_dir . 'show_faq.tpl', $_GET['fid']);
header("Location:index.php?do=modules&action=modedit&mod=faq&moduleaction=questlist&fid=" . $_GET['fid'] . "&cp=" . SESSION);
exit;
}
/**
* Вывод модуля вопросов и ответов в публичной части
*
* @param int $id идентификатор рубрики вопросов и ответов
*/
public static function faqShow($id)
{
global $AVE_DB, $AVE_Template;
$faq = $AVE_DB->Query("SELECT faq_title, faq_description FROM " . PREFIX . "_module_faq WHERE id = '" . (int)$id . "'")->fetchArray();
$questions = array();
$sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_faq_quest WHERE faq_id = '" . (int)$id . "'");
while ($row = $sql->FetchRow()) array_push($questions, $row);
$AVE_Template->assign($faq);
$AVE_Template->assign('questions', $questions);
}
}
?>