// Обрабатывает и добавляет сообщение
public function SavePost($ObjectId, $Edit = false){
$errors = array();
if($Edit){
if(!isset($_GET['post_id'])){
$errors[] = 'post_id не инициализирована в GET.';
} else{
$post_id = SafeEnv($_GET['post_id'], 11, int);
System::database()->Select($this->PostsTable, "`id`='$post_id'");
$post = System::database()->FetchRow();
}
} else{
if(!$this->AlloyComments){
$errors[] = 'Обсуждение закрыто';
return;
}
if($this->DisableComments){
$errors[] = 'Система комментариев отключена. Вы не сможете добавить комментарий.';
}
}
$post_message = '';
$post_parent_id = 0;
if(System::user()->Auth){ // Авторизованный пользователь, добавляет комментарий
if(!isset($_POST['post_message']) || !isset($_POST['parent_id'])){
$errors[] = 'Данные не инициализированы.';
}
$user_id = System::user()->Get('u_id');
$user_name = System::user()->Get('u_name');
$user_email = System::user()->Get('u_email');
$user_hideemail = System::user()->Get('u_hideemail');
$user_homepage = System::user()->Get('u_homepage');
if($Edit && !System::user()->isAdmin() && $post['user_id'] != System::user()->Get('u_id')){
$errors[] = 'У вас недостаточно прав для редактирования этого сообщения.';
}
} else{ // Гость, добавляет или редактирует комментарий
if($Edit && ($post['user_id'] != '0' || $post['user_ip'] != getip())){
$errors[] = 'У вас недостаточно прав для редактирования этого сообщения.';
} else{
if($this->GuestPost || $Edit){ // Разрешено комментировать гостям?
if(!$Edit){
if((!isset($_POST['user_name'])
|| !isset($_POST['user_email'])
|| !isset($_POST['user_homepage'])
|| !isset($_POST['post_message'])
|| !isset($_POST['parent_id']))
){
$errors[] = 'Данные не инициализированы.';
} else{
$user_id = 0;
$user_name = SafeEnv($_POST['user_name'], 255, str, true);
CheckNikname($user_name, $er, true);
System::user()->Def('u_name', $user_name);
$user_email = SafeEnv($_POST['user_email'], 255, str, true);
if($user_email != ''){
if(!CheckEmail($user_email)){
$errors[] = 'Формат E-mail не правильный. Он должен быть вида: <b>domain@host.ru</b> .';
}
}
System::user()->Def('u_email', $user_email);
if(isset($_POST['hideemail'])){
$user_hideemail = '1';
} else{
$user_hideemail = '0';
}
System::user()->Def('u_hideemail', $user_hideemail);
$user_homepage = Url(SafeEnv($_POST['user_homepage'], 250, str, true));
System::user()->Def('u_homepage', $user_homepage);
}
} else{
if(!isset($_POST['post_message']) || !isset($_POST['parent_id'])){
$errors[] = 'Данные не инициализированы.';
}
$user_id = SafeDB($post['user_id'], 11, int);
$user_name = SafeDB($post['user_name'], 255, str);
$user_email = SafeDB($post['user_email'], 255, str);
$user_hideemail = SafeDB($post['user_hideemail'], 1, int);
$user_homepage = SafeDB($post['user_homepage'], 255, str);
}
} else{
$errors[] = 'Чтобы оставлять сообщения, вам необходимо зарегистрироваться.';
}
}
}
if($user_name == ''){
$errors[] = 'Вы не ввели имя.';
}
if($user_email == ''){
$errors[] = 'Вы не указали ваш E-mail.';
}
$post_message = SafeEnv($_POST['post_message'], $this->PostMaxLength, str);
if(strlen($post_message) == 0){
$errors[] = 'Вы не ввели текст сообщения.';
}