Добрый вечер.
Будет ли «это» работать в типовой. дин. стр. «Информационная система для Вопросы-ответы, Гостевая книга и т.п.»
В обычной тип. дин. стр «Инф. Система» — получилось, код идентичен.
А вот куда вставлять в «Информационная система для Вопросы-ответы, Гостевая книга и т.п» Сформулировал, конечно, плохо. Надеюсь поймёте.
На всякий случай, приведу код:
<?php
$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);
// Получаем информацию о текущем пользователе
if (class_exists('SiteUsers'))
{
$SiteUsers = & singleton('SiteUsers');
$site_user_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
$site_user_id = 0;
}
/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();
/* Добавление комментария */
// ShowAddComment == 1 - только авторизированные
// ShowAddComment == 2 - все
/*if (isset($_POST['add_comment'])
&& ((to_int($GLOBALS['LA']['ShowAddComment']) == 1 && $site_user_id > 0) || to_int($GLOBALS['LA']['ShowAddComment']) == 2))*/
if (isset($_POST['add_comment']))
{
$param['information_items_id'] = to_int($GLOBALS['InformationResult']['item_id']);
/* XSL шаблон для отправки уведомления администратору о добавлении комментария */
$param['admin_email_xsl'] = to_str($GLOBALS['LA']['xsl_admin_email']);
$xsl_add_comment = to_str($GLOBALS['LA']['xsl_add_comment']);
/* Режим добавления комментария:
1 - публиковать сразу,
0 - публиковать после проверки.
Если пользователь авторизирован - публикуем сразу. */
if (to_bool($GLOBALS['LA']['TypeAddComment']) || $site_user_id > 0)
{
$param['status'] = 1;
}
else
{
$param['status'] = 0;
}
// Текст комментария
$_POST['comment_text'] = nl2br(to_str($_POST['comment_text']));
// Типографируем текст, если доступен модуль типографирования
if (class_exists('typograph'))
{
$typograph = new typograph();
$_POST['comment_text'] = $typograph->ProcessTypographic($_POST['comment_text']);
}
$param['comment_mail_type'] = to_int($GLOBALS['LA']['comment_mail_type']);
// ID родительского комментария
$param['comment_parent_id'] = to_int($_POST['comment_parent_id']);
$param['comment_autor'] = htmlspecialchars(strip_tags(to_str($_POST['comment_autor'])));
$param['comment_email'] = htmlspecialchars(strip_tags(to_str($_POST['comment_email'])));
$param['comment_subject'] = htmlspecialchars(strip_tags(to_str($_POST['comment_subject'])));
$param['comment_text'] = to_str($_POST['comment_text']);
$param['comment_grade'] = to_int($_POST['comment_grade']);
ob_start();
$GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавлениеКомментария', $param);
$external_propertys['message'] = ob_get_clean();
}
/* Отображаем элемент если не было добавления комментария, или результат добавления комментария отрицательный */
/*if (!isset($_POST['add_comment']) || isset($result_add_comment) && !$result_add_comment)*/
{
/* XSL шаблон для отображения списка элементов информационной системы */
$xsl_list = to_str($GLOBALS['LA']['xsl_information_system_list']);
/* XSL шаблон для отображения элемента информационной системы */
$xsl_item = to_str($GLOBALS['LA']['xsl_information_item']);
$InformationResult = $GLOBALS['InformationResult'];
/* Массив внешних параметров, передаваемых в XML */
$external_propertys['ОтображатьСсылкуНаАрхив'] = 0;
$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы'] = 1;
/* Массив дополнительных параметров */
$property = array();
/* Число элементов на страницу */
if (isset($InformationResult['items_on_page']))
{
if ($InformationResult['items_on_page'] !== true)
{
$InformationResult['items_on_page'] = to_int($InformationResult['items_on_page']);
}
}
else
{
$InformationResult['items_on_page'] = 10;
}
/* Номер, с которого начинается показ */
if (isset($InformationResult['items_begin']))
{
$InformationResult['items_begin'] = to_int($InformationResult['items_begin']);
}
else
{
$InformationResult['items_begin'] = 0;
}
// Метод определения идентификатора информационной группы и идентификатора
// информационного элемента по значению URI
//$result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);
if ($GLOBALS['INFSYS_result'] != false)
{
/* Вывод списка */
if ($GLOBALS['INFSYS_result']['item'] == false)
{
// Капча
$Captcha = new Captcha();
$external_propertys['captcha_key'] = $Captcha->GetCaptchaID();
/* Обработка вставки информационного элемента */
if (isset($_POST['submit_question']))
{
// Проверяем правильноть указания капчи
// Для авторизированных пользователей капчу не проверяем
if ($site_user_id > 0
|| $Captcha->ValidCaptcha(to_str($_POST['captcha_key']), to_str($_POST['captcha_keystring'])))
{
if ($GLOBALS['LA_InformationSystem']->confirm_information_item(date('U'), $_SERVER['REMOTE_ADDR']) == 1)
{
$date= date('Y-m-d H:i:s');
/* Определяем группу (если задана)
Принимает в качестве параметра ID информационной системы*/
//$result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);
$group_id = to_int($GLOBALS['INFSYS_result']['group']);
// Статус вновь добавленного элемента
// 0 - не активен (необходимо вручную проверить и включить)
// 1 - активен, виден сразу после публикации
$item_status = to_int($GLOBALS['LA']['ItemStatus']);
// Текст сообщения
$text = nl2br(htmlspecialchars(strip_tags(to_str($_POST['text_item']))));
// Типографируем текст, если доступен модуль типографирования
if (class_exists('typograph'))
{
$typograph = new typograph();
$text = $typograph->ProcessTypographic($text);
}
$param = array();
$param['site_users_id'] = $site_user_id;
// Вставляем запись
$question_id = $GLOBALS['LA_InformationSystem']->InsertInformationItems(0, 0,
$InformationSystem_id, $group_id, $date, htmlspecialchars(strip_tags(to_str($_POST['subject']))), '',
$item_status, $text, '', 0, to_str($_SERVER['REMOTE_ADDR']), '', 1, '', '', '', '', $param);
$row = $GLOBALS['LA_InformationSystem']->GetInformationSystemItems($question_id);
// Вставляем в дополнительные свойства автора, его email и id
$GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['autor_property_id']), $question_id, htmlspecialchars(strip_tags(to_str($_POST['autor']))));
$GLOBALS['LA_InformationSystem']->InsertInformationPropertysItems(0, 0, to_int($GLOBALS['LA']['email_property_id']), $question_id, htmlspecialchars(strip_tags(to_str($_POST['email']))));
// Если пользователь зерегистрирован, получаем информацию
if (class_exists('SiteUsers') && !empty($site_user_id))
{
$row_site_user = $SiteUsers->GetSiteUser($site_user_id);
if(!empty($row_site_user['site_users_name']) && !empty($row_site_user['site_users_surname']))
{
$site_user_name = $row_site_user['site_users_name'].' '.$row_site_user['site_users_surname'];
}
else
{
$site_user_name = $row_site_user['site_users_login'];
}
$site_user_email = $row_site_user['site_users_email'];
}
else
{
$site_user_name = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
$site_user_email = htmlspecialchars(strip_tags(to_str($_POST['email'])));
}
ob_start();
if ($item_status == 0)
{
?>
<p>Благодарим Вас!
<br />Ваша запись принята. После проверки Администратором она станет доступной!
</p>
<?php
}
else
{
?>
<p>Благодарим Вас!
<br />Ваша запись принята и опубликована!
</p>
<?php
}
$external_propertys['message'] = ob_get_clean();
// Отправка письма администратору
$message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:\n";
$message .= "Автор: ".$site_user_name."\n";
$message .= "E-mail: ".$site_user_email."\n";
$message .= "Тема: ".htmlspecialchars(strip_tags(to_str($_POST['subject'])))."\n";
$message .= "Информационная система: ".$row['information_systems_name']."\n";
$message .= "Информационный элемент: ".$row['information_items_name']."\n";
$message .= "Редактировать: http://".to_str($_SERVER['HTTP_HOST'])."/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=edit_group_item&check_1_{$question_id}=1&information_system_id={$InformationSystem_id}\n";
$DateClass = new DateClass();
$message .= "Дата: ".$DateClass->datetime_format($date)."\n";
$message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
$message .= "Вопрос: ".htmlspecialchars(strip_tags(to_str($_POST['text_item'])));
$subject = 'Добавление вопроса';
$kernel = & singleton('kernel');
$kernel->SendMailWithFile(EMAIL_TO, EMAIL_TO, $subject, $message, array(), 'text/plain');
}
else // нельзя добавлить объявление - прошло мало времени
{
$external_propertys['error'] = 'Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления вопроса!';
}
}
// Ошибка добавления записи
else
{
$external_propertys['error'] = 'Вы неверно ввели число подтверждения отправки формы!';
$external_propertys['fio'] = htmlspecialchars(strip_tags(to_str($_POST['autor'])));
$external_propertys['email'] = htmlspecialchars(strip_tags(to_str($_POST['email'])));
$external_propertys['subject'] = htmlspecialchars(strip_tags(to_str($_POST['subject'])));
$external_propertys['text_item'] = htmlspecialchars(strip_tags(to_str($_POST['text_item'])));
}
}
/* Отображаем информационную систему */
$GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $GLOBALS['INFSYS_result']['group'], $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);
}
else
{
/* Определяем идентификатор информационного элемента */
$item_id = $GLOBALS['LA_InformationSystem']->GetIdInformationItem($GLOBALS['INFSYS_result']['item'], $GLOBALS['INFSYS_result']['group'], $InformationSystem_id);
/* Выводим элемент информационной системы */
$GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys);
}
}
}
?>