/** * protected функция производит редактирование данных в таблице БД - включая данные сервисных полей * Производит запись в таблицу подписки, если необходимо * * @param array $arrBindFields - массив полей обязательных для заполнения * @param array $arrNoBindFields - массив полей не обязательных для заполнения * @param array $arrServiceFields - массив сервисных полей * @param array $arrFieldsXmlData - массив полей данные которых храняться в XML-формате * * @return bool */ protected function editAnnounceService(&$arrBindFields, &$arrNoBindFields, &$arrServiceFields, &$arrFieldsXmlData = false) { $typeAnnounce = $this->retTableName(); $arrServiceFields['unikey'] = strings::getUnikey($arrBindFields); if (is_array($arrFieldsXmlData)) { $this->formXmlData($arrFieldsXmlData); $arrServiceFields['xml_data'] =& $this->arrServiceFields['xml_data']; } if (!empty($arrBindFields['image']) && !$this->imageProcessing($typeAnnounce, $arrBindFields['image'])) { return false; } elseif (!empty($arrNoBindFields['image']) && !$this->imageProcessing($typeAnnounce, $arrNoBindFields['image'])) { return false; } return !$this->setAnnounceSubj($arrBindFields, $arrNoBindFields, $arrServiceFields) || !$this->editEntry() ? false : true; }
} // END Блок валидации данных переданных из формы // очищаем предупреждение о платности услуги if (isset($arrWarnings['payment'])) { unset($arrWarnings['payment']); } // проверяем есть ли ошибки if (!empty($arrWarnings)) { // инициируем необходимые данные для отображения формы анкеты (исправление ошибок) $smarty->assignByRef('arrBindFields', $_POST['arrBindFields']); $smarty->assignByRef('arrNoBindFields', $_POST['arrNoBindFields']); $smarty->assignByRef('arrFieldsXmlData', $_POST['arrFieldsXmlData']); } else { // иначе, ошибок нет, обрабатываем полученные данные // проверяем, существует ли объявление с таким же уникальным ключом (дубль) if (!empty($arrActPage['add']) && $resume->issetAnnounce(strings::getUnikey($_POST['arrBindFields']))) { // отключаем отображение формы анкеты $arrActPage['add'] = false; // сообщаем пользователю об ошибке (дублирующее объявление) $arrErrors[] = ERROR_ANNOUNCE_ISSET; } elseif (CONF_ANNOUNCE_PREVIEW && !isset($_POST['save'])) { // отключаем отображение формы анкеты $arrActPage[$currAction] = false; // инициируем необходимые данные для отображения формы предпросмотра $arrActPage['preview'] = true; // инициируем "Наименование страницы" отображаемое в заголовке формы $arrNamePage[] = array('name' => FORM_PREVIEW_ANNOUNCE_HEAD, 'link' => false); $return_data = array('arrBindFields' => &$_POST['arrBindFields'], 'arrNoBindFields' => &$_POST['arrNoBindFields'], 'arrFieldsXmlData' => &$_POST['arrFieldsXmlData']); // парсим возвращаемые данные - формирование массива для заполнения скрытых полей формы предпросмотра tools::arrayMultyParser($return_data, $hidden_fields); // обрабатываем html-код полученный из формы