<?php
/*
=====================================================
 Модуль создал: REZER (http://rezer.net)
=====================================================
 Файл: edit.post.php
=====================================================
 Данный код защищен авторскими правами
=====================================================
 Назначение: редактирование объявления
=====================================================
*/

if( !defined( "DATALIFEENGINE" ) ) die( "Hacking attempt!" );

//--------------------------------------------------=-=-=-=-=
//	Проверка на залогиненность
//--------------------------------------------------=-=-=-=-=

if( $is_logged )
	{
		//--------------------------------------------------=-=-=-=-=
		//	Провеяем идентификатор объявления
		//--------------------------------------------------=-=-=-=-=
		
		$id = intval( $_REQUEST['id'] );
		if( $id )
			{
				$result = $db->query( "SELECT * FROM ".PREFIX."_board_post WHERE id='{$id}'" );
				if( $db->num_rows( $result ) > 0 )
					{
						$row = $db->get_row( $result );
						$id = $row['id'];
						$date = strtotime( $row['date'] );
						$end_date = strtotime( $row['end_date'] );
						$title = htmlspecialchars( stripslashes( $row['title'] ) );
						$alt_name = htmlspecialchars( stripslashes( $row['alt_name'] ) );
						$price = intval( $row['price'] );
						$currency = intval( $row['currency'] );
						$board_type = intval( $row['board_type'] );
						$country = intval( $row['country'] );
						$city = intval( $row['city'] );
						$category = intval( $row['category'] );
						$approve = intval( $row['approve'] );
						$fio = htmlspecialchars( stripslashes( $row['fio'] ) );
						$phone = htmlspecialchars( stripslashes( $row['phone'] ) );
						$email = htmlspecialchars( stripslashes( $row['email'] ) );
						$http = htmlspecialchars( stripslashes( $row['http'] ) );
						$allow_comm = intval( $row['allow_comm'] );
						$comm_num = intval( $row['comm_num'] );
						$text = $row['text'];
						
						require_once( ENGINE_DIR."/classes/parse.class.php" );
						$parse = new ParseFilter( array(), array(), 1, 1 );
						
						//--------------------------------------------------=-=-=-=-=
						//	Проверяем, разрешено ли редактировать данное объявление
						//--------------------------------------------------=-=-=-=-=
						
						if( $Board->AllowEditPost( $row['author_id'], $row['approve'] ) )
							{
						
								$Board->RequestCat = $category;
								
								//--------------------------------------------------=-=-=-=-=
								//	Настройка метатитлов
								//--------------------------------------------------=-=-=-=-=
								
								$SpeedBarCat = $Board->SpeedBarCat( $Board->RequestCat );
								
								for( $i = count( $SpeedBarCat ); $i > 0; $i-- ) $module['title'][] = $SpeedBarCat[ ( $i - 1 ) ]['title'];
								for( $i = count( $SpeedBarCat ); $i > 0; $i-- ) $module['speedbar'][] = "<a href=\"".$SpeedBarCat[ ( $i - 1 ) ]['link']."\">".$SpeedBarCat[ ( $i - 1 ) ]['title']."</a>";
								
								$module['title'][] = "Редактирование объявления";
								$module['speedbar'][] = "Редактирование объявления";
								
								//--------------------------------------------------=-=-=-=-=
								//	Смотрим, какую папку с шаблонами нам грузить
								//--------------------------------------------------=-=-=-=-=
								
								$RowCat = $Board->DB['category'][ $Board->RequestCat ];
								$Folder = $RowCat['template'] != "" ? totranslit( $RowCat['template'] ) : "default";
								
								//--------------------------------------------------=-=-=-=-=
								//	Генерация формы
								//--------------------------------------------------=-=-=-=-=
								
								$AllowEditForm = true;
								
								if( $Board->Config['add_post_end_date'] != "" )
									{
										$MaxDays = array();
										$MaxDaysEx = explode( ",", $Board->Config['add_post_end_date'] );
										foreach( $MaxDaysEx as $key => $value )
											{
												$value = intval( $value );
												if( $value > 0 )
													{
														$MaxDays[ $value ] = $value;
													}
											}
										
										unset( $MaxDaysEx );
									}
										else
									{
										$MaxDays = array( 1 => 1, 3 => 3, 7 => 7 );
									}
								
								//--------------------------------------------------=-=-=-=-=
								//	Сохранение редактирования
								//--------------------------------------------------=-=-=-=-=
								
								if( isset( $_POST['submit_true'] ) )
									{
										$EditError = "";
										$board_type = intval( $_POST['board_type'] );
										$currency = intval( $_POST['currency'] );
										$country = intval( $_POST['country'] );
										$city = intval( $_POST['city'] );
										$price = preg_replace( "/[^(0-9)\s]/i", "", $_POST['price'] );
										
										$title = $db->safesql( htmlspecialchars( stripslashes( $_POST['title'] ) ) );
										
										if( $Board->Config['add_post_bbcode'] == "yes" )
											{
												$text = $db->safesql( $parse->BB_Parse( $parse->process( strip_tags( $_POST['text'] ) ), false ) );
											}
												else
											{
												$text = htmlspecialchars( stripslashes( $_POST['text'] ) );
												$text = str_replace( "\r", "", $text );
												$text = str_replace( "\n", "<br />", $text );
												$text = $db->safesql( $text );
											}
										
										$fio = $db->safesql( htmlspecialchars( stripslashes( $_POST['fio'] ) ) );
										$phone = preg_replace( "/[^(0-9))(-\s]/i", "", $_REQUEST['phone'] ) ? $db->safesql( $_REQUEST['phone'] ) : "";
										$email = $db->safesql( htmlspecialchars( stripslashes( $_POST['email'] ) ) );
										$http = $db->safesql( htmlspecialchars( stripslashes( $_POST['http'] ) ) );
										
										if( !$fio && $Board->Config['add_post_fio'] == "yes" ) $EditError .= "<li>Введите ваше имя.</li>";
										if( !$title ) $EditError .= "<li>Введите название объявления.</li>";
										
										if( $Board->Config['add_post_email'] == "yes" && empty( $email ) ) $EditError .= "<li>Email адрес введён не верно.</li>";
										if( !preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])'.'(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i', $email ) && !empty( $email ) ) $EditError .= "<li>Email адрес введён не верно.</li>";
										if( !preg_match( "/^http:\/\/([-.a-z0-9]*)\.([a-z]{2,4})(\/?)*$/", $http ) ) $http = "";
										if( !$text ) $EditError .= "<li>Введите текст объявления.</li>";
										if( !$currency && $Board->Config['add_post_price'] == "yes" ) $EditError .= "<li>Выберите валюту стоимости.</li>";
										if( !$price && $Board->Config['add_post_price'] == "yes" ) $EditError .= "<li>Введите стоимость.</li>";
										if( !$country && $Board->Config['region_on'] == "on" ) $EditError .= "<li>Выберите вашу страну.</li>";
										if( empty( $phone ) && $Board->Config['add_post_phone'] == "yes" ) $EditError .= "<li>Укажите телефон.</li>";
										if( $Board->Config['add_post_http'] != "yes" ) $http = "";
										
																				
										if( $Board->notTypeForCat( $category ) !== true )
											{
												if( !$board_type )
													$EditError .= "<li>Выберите тип объявления.</li>";
												else
													if( $Board->AllowTypeInCats( $board_type, $category ) !== true ) $EditError .= "<li>Неверный тип для выбранной вами категории.</li>";
											}
										
										if( $Board->Field !== false && empty( $EditError ) )
											{
												$xfields = $db->safesql( $Board->Field->SaveField( "edit", $row['xfields'], $category ) );
												if( $Board->Field->ErrorSave ) $EditError .= $Board->Field->ErrorSave;
											}
										
										if( empty( $EditError ) )
											{
												if( $BoardAjax === true )
													{
														
														die( "<script language=\"language\" type=\"text/javascript\">document.forms.BoardPost.submit();</script>" );
													}
												
												$LinkPost = $Board->ReturnLinkPost( $id, $alt_name, $category );
												$db->query( "UPDATE ".PREFIX."_board_post SET `title`='{$title}', `board_type`='{$board_type}', `price`='{$price}', `currency`='{$currency}', `country`='{$country}', `city`='{$city}', `text`='{$text}', `fio`='{$fio}', `phone`='{$phone}', `email`='{$email}', `http`='{$http}', `xfields`='{$xfields}' WHERE id='{$id}'" );
												
												$AllowEditForm = false;
												$tpl->Load_Template( "board/{$Folder}/info.tpl" );
												$tpl->set( "{title}", "Информация" );
												$tpl->set( "{error}", "Спасибо, ваше объявление успешно отредактировано, <a href=\"{$LinkPost}\">посмотреть его.</a>" );
												$tpl->compile( "board_content" );
												$tpl->clear();
											}
												else
											{
												if( $BoardAjax === true ) die( "<div class=\"BoardAddError\"><ol>{$EditError}</ol></div>" );
												$tpl->Load_Template( "board/{$Folder}/info.tpl" );
												$tpl->set( "{title}", "Ошибка" );
												$tpl->set( "{error}", "<ol>{$EditError}</ol>" );
												$tpl->compile( "board_content" );
												$tpl->clear();
											}
									}
								
								//--------------------------------------------------=-=-=-=-=
								//	Вывод формы редактирования
								//--------------------------------------------------=-=-=-=-=
								
								if( $AllowEditForm === true )
									{
										$Board->LoadListCity( $country );
										$SelectBoardType = $Board->ReturnSelectBoardType( $board_type, $category );
										$SelectCurrency = $Board->ReturnSelectCurrency( $currency );
										$SelectCountry = $Board->ReturnSelectCountry( $country );
										$SelectCity = $Board->ReturnSelectCity( $country, $city );
										
										if( $Board->Config['add_post_bbcode'] == "yes" )
											{
												$text = $parse->decodeBBCodes( $text, false );
												include_once( ENGINE_DIR."/modules/board/editor/bb_news.php" );
											}
												else
											{
												$text = str_replace( "<br />", "\n", stripslashes( $text ) );
											}
										
										$tpl->Load_Template( "board/{$Folder}/edit.tpl" );
										$tpl->set( "{bbcode}", $bb_code );
										$tpl->set( "{board_type}", "<select name=\"board_type\">{$SelectBoardType}</select>" );
										$tpl->set( "{currency}", "<select name=\"currency\">{$SelectCurrency}</select>" );
										$tpl->set( "{country}", "<select name=\"country\" id=\"SelectListCountryAdd\" onchange=\"SelectCountry( 'Add', 'Выберите' );\"><option value=\"\">- Выберите -</option>{$SelectCountry}</select>" );
										$tpl->set( "{city}", "<span id=\"FormSelectCityAdd\"><select name=\"city\" id=\"SelectCityAdd\"><option value=\"\">- Выберите страну -</option>{$SelectCity}</select> <span id=\"FormSelectCityStatusAdd\"></span></span>" );
										
										$tpl->set_block( "'\\[price\\](.*?)\\[/price\\]'si", ( $Board->Config['add_post_price'] == "not" ? "" : "\\1" ) );
										$tpl->set_block( "'\\[fio\\](.*?)\\[/fio\\]'si", ( $Board->Config['add_post_fio'] == "not" ? "" : "\\1" ) );
										$tpl->set_block( "'\\[phone\\](.*?)\\[/phone\\]'si", ( $Board->Config['add_post_phone'] == "not" ? "" : "\\1" ) );
										$tpl->set_block( "'\\[email\\](.*?)\\[/email\\]'si", ( $Board->Config['add_post_email'] == "not" ? "" : "\\1" ) );
										$tpl->set_block( "'\\[http\\](.*?)\\[/http\\]'si", ( $Board->Config['add_post_http'] == "no" ? "" : "\\1" ) );
										
										$tpl->set( "{price}", $price );
												
										$tpl->set( "{fio}", $fio );
										$tpl->set( "{phone}", $phone );
										$tpl->set( "{email}", $email );
										$tpl->set( "{http}", $http );
												
										$tpl->set( "{title}", $title );
										$tpl->set( "{text}", $text );
										
										$tpl->copy_template = "<form name=\"BoardPost\" method=\"post\" enctype=\"multipart/form-data\" action=\"\" onsubmit=\"BoardformSubmit( 'BoardPost', 'edit-post.php', 'statusBoardSubmit', '', 'statusBoardSubmit' ); return false;\">{$tpl->copy_template}<input type=\"hidden\" name=\"id\" value=\"{$id}\" /></form>";
										if( $Board->Field !== false )
											{
												$tpl->set( "{xfields}", $Board->Field->ShowForm( "edit", @file_get_contents( TEMPLATE_DIR."/board/{$Folder}/xfields.tpl" ), $row['xfields'], $category ) );
											}
										
										$tpl->set( "{Photos}", $Board->BoardNewsImages( $row, file_get_contents( TEMPLATE_DIR."/board/main/add_photos/photo.list.tpl" ), file_get_contents( TEMPLATE_DIR."/board/main/add_photos/photo.tpl" ) ) );
										
										$tpl->compile( "board_content" );
										$tpl->clear();
									}
								
								// Разрешаем вывод формы поиска
								$BoardLoadMainTpl = true;
								$BoardAllowSearch = false;
							}
							
//--------------------------------------------------=-=-=-=-=
//	В случае ошибки, выводим информацию
//--------------------------------------------------=-=-=-=-=

								else
							{
								$module['title'][] = "Редактирование объявления";
								$module['speedbar'][] = "Редактирование объявления";
								
								$tpl->Load_Template( "info.tpl" );
								$tpl->set( "{title}", "Ошибка" );
								$tpl->set( "{error}", "Вы не можете редактировать данное объявление." );
								$tpl->compile( "board" );
								$tpl->clear();
							}
					}
						else
					{
						$module['title'][] = "Редактирование объявления";
						$module['speedbar'][] = "Редактирование объявления";
						
						$tpl->Load_Template( "info.tpl" );
						$tpl->set( "{title}", "Ошибка" );
						$tpl->set( "{error}", "Указанное объявление не найдено, возможно оно было удалено ранее." );
						$tpl->compile( "board" );
						$tpl->clear();
					}
			}		
				else
			{
				$module['title'][] = "Редактирование объявления";
				$module['speedbar'][] = "Редактирование объявления";
				
				$tpl->Load_Template( "info.tpl" );
				$tpl->set( "{title}", "Ошибка" );
				$tpl->set( "{error}", "Вы не указали уникальный идентификационный номер объявления." );
				$tpl->compile( "board" );
				$tpl->clear();
			}
	}
		else
	{
		$module['title'][] = "Редактирование объявления";
		$module['speedbar'][] = "Редактирование объявления";
				
		$tpl->Load_Template( "info.tpl" );
		$tpl->set( "{title}", "Ошибка" );
		$tpl->set( "{error}", "Вы не авторизированы." );
		$tpl->compile( "board" );
		$tpl->clear();
	}

?>