<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

// Если не авторизован
if (!$USER->IsAuthorized()) {
    LocalRedirect($arParams['LOCAL_REDIRECT']);
    return;
}

// HTTP запросы
use Bitrix\Main\Application;
$request = Application::getInstance()->getContext()->getRequest();

// Пользователь
$arResult['USER'] = $this->getUserData($USER->GetID());

// Разделы
$arResult['IBLOCK_SECTIONS'] = $this->getSections();


$SECTION_PARENT_ID = $request->getPost('SECTION_PARENT_ID');
if ($SECTION_PARENT_ID) {
    $arResult['SUB_SECTIONS_LIST'] = $this->getSections(
        $SECTION_PARENT_ID
    );
}

// Свойства
$arResult['PROPERTIES'] = $this->getProperties();

// Данные об элементе в режиме редактирования
$EDIT_ELEMENT_ID = intval(
    $request->get('EDIT_ELEMENT')
);
if ($EDIT_ELEMENT_ID > 0) {
    // Основные данные элемента
    $arResult['EDIT_VALUES'] = $this->getElement($EDIT_ELEMENT_ID);

    // Проверяем, имеет ли пользователь право на редактирование
    if (!$this->canEditElement(
        $arResult['EDIT_VALUES']['CREATED_BY'],
        $arResult['USER']['ID'])
    ) {
        LocalRedirect($arParams['LOCAL_REDIRECT']);
        return;
    }
    // Ставим заголовок
    $APPLICATION->SetTitle("Редактирование объявления");
}

// Обработка сохранения элемента
if ($request->isPost() && check_bitrix_sessid()) {
    // Собираем данные из POST-запроса
    $postData = $request->getPostList()->toArray();
    $postData['EDIT_ELEMENT'] = $EDIT_ELEMENT_ID;
    // Храним введеные значения в случае ошибки
    $arResult['EDIT_VALUES'] = $postData;
    // Вызов метода для сохранения или обновления элемента
    $this->processElementSave($postData);
}


$this->includeComponentTemplate();