<?php
$Informationsystem_Controller_Show = Core_Page::instance()->object;
$xslName = $Informationsystem_Controller_Show->item
? Core_Array::get(Core_Page::instance()->libParams, 'informationsystemItemXsl')
: Core_Array::get(Core_Page::instance()->libParams, 'informationsystemXsl');
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('ОтображатьСсылкуНаАрхив')->value(0)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('ОтображатьСсылкиНаСледующиеСтраницы')->value(1)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('ТекущаяГруппа')->value($Informationsystem_Controller_Show->group)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_comments')->value(
intval(Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_add_comments')->value(
intval(Core_Array::get(Core_Page::instance()->libParams, 'showAddComment', 2))
)
);
$Informationsystem_Controller_Show
->tags(TRUE)
->comments(TRUE);
if ($Informationsystem_Controller_Show->item == 0)
{
//$Informationsystem_Controller_Show->itemsForbiddenTags(array('text'));
// Обработка вставки информационного элемента
if (Core_Array::getPost('submit_question'))
{
$Informationsystem_Controller_Show->cache(FALSE);
$siteuser_id = 0;
if (Core::moduleIsActive('siteuser'))
{
$oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
if ($oSiteuser)
{
$siteuser_id = $oSiteuser->id;
}
}
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item');
$oInformationsystem_Item->informationsystem_group_id = $Informationsystem_Controller_Show->group;
$oInformationsystem_Item->active = Core_Page::instance()->libParams['addedItemActive'];
$subject = nl2br(strip_tags(Core_Array::getPost('subject')));
$text = strip_tags(Core_Array::getPost('text'));
$oInformationsystem_Item->name = strlen($subject) > 0 ? $subject : '<Без темы>';
$oInformationsystem_Item->text = nl2br($text);
$oInformationsystem_Item->siteuser_id = $siteuser_id;
$author = strip_tags(Core_Array::getPost('author'));
$email = strip_tags(Core_Array::getPost('email'));
$oInformationsystem = $Informationsystem_Controller_Show->getEntity();
$oInformationsystemItems = $oInformationsystem->Informationsystem_Items;
$oInformationsystemItems->queryBuilder()
->where('ip', '=', Core_Array::get($_SERVER, 'REMOTE_ADDR'))
->orderBy('id', 'DESC')
->limit(1);
$aLastInformationsystemItem = $oInformationsystemItems->findAll();
if (!isset($aLastInformationsystemItem[0]) || time() < Core_Date::sql2timestamp($oInformationsystem_Item->datetime) + ADD_COMMENT_DELAY)
{
if ($siteuser_id > 0 || Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha')))
{
$oInformationsystem->add($oInformationsystem_Item);
// Вставляем в дополнительные свойства автора
$oProperty = Core_Entity::factory('Property')->find(Core_Page::instance()->libParams['authorPropertyId']);
if (!is_null($oProperty->id) && $author)
{
$oValue = $oProperty->createNewValue($oInformationsystem_Item->id);
$oValue->value = $author;
$oValue->save();
}
// Вставляем в дополнительные свойства email
$oProperty = Core_Entity::factory('Property')->find(Core_Page::instance()->libParams['emailPropertyId']);
if (!is_null($oProperty->id) && $email)
{
$oValue = $oProperty->createNewValue($oInformationsystem_Item->id);
$oValue->value = $email;
$oValue->save();
}
// Если пользователь зерегистрирован, получаем информацию
if ($siteuser_id)
{
$author = $oSiteuser->name && $oSiteuser->surname
? $oSiteuser->name . ' ' . $oSiteuser->surname
: $oSiteuser->login;
$email = $oSiteuser->email;
}
ob_start();
if ($oInformationsystem_Item->active == 0)
{
?>
<p>Благодарим Вас, <?php echo $author?>!
<br />Ваша запись принята. После проверки администратором она станет доступной!
</p>
<?php
}
else
{
?>
<p>Благодарим Вас, <?php echo $author?>!
<br />Ваша запись принята и опубликована!
</p>
<?php
}
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('message')->value(ob_get_clean())
);
// Отправка письма администратору
$message = "Доброе время суток, уважаемый Администратор!\n\nНа сайт, поддерживаемый системой управления сайтом HostCMS, была добавлена запись:\n";
$message .= "Автор: " . $author . "\n";
$message .= "E-mail: " . $email . "\n";
$message .= "Тема: {$oInformationsystem_Item->name}\n";
$message .= "Информационная система: ".$oInformationsystem->name."\n";
$message .= "Дата: " . Core_Date::sql2datetime($oInformationsystem_Item->datetime) . "\n";
$message .= "IP-адрес: " . $oInformationsystem_Item->ip . "\n";
$message .= "Вопрос: " . $oInformationsystem_Item->text;
$oCore_Mail_Driver = Core_Mail::instance()
->to(EMAIL_TO)
->from(Core_Valid::email($email)
? $email
: EMAIL_TO
)
->subject('Добавление информационного элемента')
->message($message)
->contentType('text/plain')
->send();
}
else
{
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('error')->value('Введен неверный код подтверждения!')
)
->addEntity(
Core::factory('Core_Xml_Entity')->name('adding_item')
->addEntity(
Core::factory('Core_Xml_Entity')->name('author')->value($author)
)->addEntity(
Core::factory('Core_Xml_Entity')->name('email')->value($email)
)->addEntity(
Core::factory('Core_Xml_Entity')->name('subject')->value($subject)
)->addEntity(
Core::factory('Core_Xml_Entity')->name('text')->value($text)
)
);
}
}
else
{
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('error')->value('Запись не может быть добавлена, т.к. прошло мало времени с момента Вашего последнего добавления вопроса!')
);
}
}
}
else
{
if (Core_Array::getPost('add_comment') && Core_Array::get(Core_Page::instance()->libParams, 'showAddComment') != 0)
{
$Informationsystem_Controller_Show->cache(FALSE);
$oLastComment = Core_Entity::factory('Comment')->getLastCommentByIp(
Core_Array::get($_SERVER, 'REMOTE_ADDR')
);
$oXmlCommentTag = Core::factory('Core_Xml_Entity')
->name('document');
$siteuser_id = 0;
if (Core::moduleIsActive('siteuser'))
{
$oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
if ($oSiteuser)
{
$siteuser_id = $oSiteuser->id;
}
}
$oComment = Core_Entity::factory('Comment');
$allowable_tags = '<b><strong><i><em><br><p><u><strike><ul><ol><li>';
$oComment->parent_id = intval(Core_Array::getPost('parent_id', 0));
$oComment->active = Core_Array::get(Core_Page::instance()->libParams, 'addedCommentActive', 1) == 1 ? 1 : 0;
$oComment->author = Core_Str::stripTags(Core_Array::getPost('author'));
$oComment->email = Core_Str::stripTags(Core_Array::getPost('email'));
$oComment->grade = intval(Core_Array::getPost('grade', 0));
$oComment->subject = Core_Str::stripTags(Core_Array::getPost('subject'));
$oComment->text = nl2br(Core_Str::stripTags(Core_Array::getPost('text'), $allowable_tags));
$oComment->siteuser_id = $siteuser_id;
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', $Informationsystem_Controller_Show->item);
$oXmlCommentTag
->addEntity($oComment)
->addEntity($oInformationsystem_Item);
if (is_null($oLastComment) || time() > Core_Date::sql2timestamp($oLastComment->datetime) + ADD_COMMENT_DELAY)
{
$oInformationsystem = $Informationsystem_Controller_Show->getEntity();
if ($oInformationsystem->use_captcha == 0 || $siteuser_id > 0 || Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha')))
{
$oComment->save();
$oInformationsystem_Item->add($oComment);
$oXmlCommentTag->addEntity($oInformationsystem);
// Отправка письма администратору
$sText = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'addCommentAdminMailXsl')))
->process();
$oCore_Mail_Driver = Core_Mail::instance()
->to(EMAIL_TO)
->from(Core_Valid::email($oComment->email)
? $oComment->email
: EMAIL_TO
)
->subject(Core::_('Informationsystem.comment_mail_subject'))
->message(trim($sText))
->contentType(Core_Array::get(Core_Page::instance()->libParams, 'commentMailNoticeType', 0) == 0
? 'text/plain'
: 'text/html'
)
->send();
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_captcha')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Informationsystem_Controller_Show->addEntity($oComment);
}
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_time')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Informationsystem_Controller_Show->addEntity($oComment);
}
// Результат добавления комментария
$xsl_result = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(Core_Entity::factory('Xsl')->getByName(
Core_Array::get(Core_Page::instance()->libParams, 'addCommentNoticeXsl'))
)
->process();
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('message')->value($xsl_result)
);
}
}
// В корне выводим из всех групп
/*if ($Informationsystem_Controller_Show->group == 0)
{
$Informationsystem_Controller_Show->group(FALSE);
}*/
$Informationsystem_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName($xslName)
)
->itemsProperties(TRUE)
->show();