function nc_trash_recovery_sub($trash_ids) { $nc_core = nc_Core::get_object(); $db = $nc_core->db; if (!is_array($trash_ids)) { $trash_ids = array($trash_ids); } $trash_ids = array_map('intval', $trash_ids); $sub_name = $nc_core->input->fetch_get_post('sub_name'); $sub_catalogue = $nc_core->input->fetch_get_post('sub_catalogue'); $sub_checked = $nc_core->input->fetch_get_post('sub_checked'); $sub_keyword = $nc_core->input->fetch_get_post('sub_keyword'); $sub_parent = $nc_core->input->fetch_get_post('sub_parent'); $trash_data = $nc_core->db->get_results("\n SELECT `t`.`Sub_Class_ID`, `t`.`Class_ID` , `t`.`Subdivision_ID`, t.`XML_Filename`,\n `sub`.`Subdivision_Name`, `cc`.`Sub_Class_Name`\n FROM `Trash_Data` as `t`\n LEFT JOIN `Sub_Class` as `cc` ON `t`.`Sub_Class_ID` = `cc`.`Sub_Class_ID`\n LEFT JOIN `Subdivision` as `sub` ON `sub`.`Subdivision_ID` = `t`.`Subdivision_ID`\n WHERE t.Trash_ID IN (" . join(',', $trash_ids) . ")\n AND `sub`.`Subdivision_ID` IS NULL\n GROUP BY `t`.`Subdivision_ID`", ARRAY_A); $t = nc_trash_load_sub_cc($trash_data); $subdivisions = $t['subs']; $sub_classes = $t['ccs']; $cc_sub = $t['cc_sub']; if (!empty($sub_name)) { foreach ($sub_name as $id => $name) { $db->query("INSERT INTO `Subdivision` SET `Subdivision_ID` = '" . intval($id) . "',\n `Catalogue_ID` = '" . intval($sub_catalogue[$id]) . "',\n `Subdivision_Name` = '" . $db->escape($name) . "',\n `Checked` = '" . intval($sub_checked[$id]) . "',\n `Parent_Sub_ID` = '" . intval($sub_parent[$id]) . "',\n `EnglishName` = '" . $sub_keyword[$id] . "' "); // обновим Hidden_URL $hidden_url = GetHiddenURL($sub_parent[$id]); UpdateHiddenURL($hidden_url ? $hidden_url : "/", $sub_parent[$id], $sub_catalogue[$id]); $ccs = $cc_sub[$id]; foreach ($ccs as $cc_id) { $db->query("INSERT INTO `Sub_Class` SET `Sub_Class_ID` = '" . intval($cc_id) . "',\n `Catalogue_ID` = '" . intval($sub_catalogue[$id]) . "',\n `Subdivision_ID` = '" . intval($id) . "',\n `Class_ID` = '" . intval($sub_classes[$cc_id]['class_id']) . "',\n `Sub_Class_Name` = '" . $db->escape($sub_classes[$cc_id]['name']) . "',\n `Checked` = '" . intval($sub_checked[$id]) . "',\n `EnglishName` = '" . $sub_keyword[$id] . "' "); } } } return count($sub_name); }
if ($errorMessage !== false) { $errorStart = strpos($buffer, "<div class='nc_print_status_text'>"); $errorEnd = strpos($buffer, "</div>", $errorStart); $error = substr($buffer, $errorStart, $errorEnd - $errorStart); $isNaked = 1; nc_print_status($error, 'error'); } else { echo 'OK'; // перезагрузить страницу, так как изменение почти всех настроек // раздела (вкл/выкл, приоритет, название, ключевое слово, макет // дизайна и егонастройки) приводят к обширным и сложно предсказуемым // изменениям различных частей страницы (title, стили, содержимое // меню, заголовки и т.п.) echo "\nReloadPage=1"; if ($oldHiddenURL != GetHiddenURL($SubdivisionID)) { echo "\nNewHiddenURL=" . GetHiddenURL($SubdivisionID); } } exit; } BeginHtml($Title8, $Title1 . $Delimeter . $sh->Link . $Delimeter . $Title8, "http://" . $DOC_DOMAIN . "/management/sites/sections/settings/"); $UI_CONFIG = new ui_config_subdivision_settings($SubdivisionID, $view); try { if (nc_subdivision_save($view)) { $UI_CONFIG = new ui_config_subdivision_settings($SubdivisionID, $view); nc_print_status(CONTROL_CONTENT_SUBDIVISION_SUCCESS_EDIT, 'ok'); } } catch (Exception $e) { nc_print_status($e->getMessage(), 'error'); } nc_subdivision_show_edit_form($SubdivisionID, $view);
function nc_subdivision_add() { $nc_core = nc_Core::get_object(); $db = $nc_core->db; $CatalogueID = intval($nc_core->input->fetch_get_post('CatalogueID')); $ParentSubID = intval($nc_core->input->fetch_get_post('ParentSubID')); $Template_ID = intval($nc_core->input->fetch_get_post('Template_ID')); $input = $nc_core->input->fetch_get_post(); // проверка названия раздела $Subdivision_Name = trim($nc_core->input->fetch_get_post('Subdivision_Name')); if (!$Subdivision_Name) { throw new Exception(CONTROL_CONTENT_SUBDIVISION_INDEX_ERROR_THREE_NAME); } // проверка ключевого слова $EnglishName = trim($nc_core->input->fetch_get_post('EnglishName')); if (empty($EnglishName)) { $EnglishName = nc_transliterate($Subdivision_Name, true); } // проверка на валидность $EnglishName = nc_check_english_name(0, $EnglishName, 1); if (!$nc_core->subdivision->validate_english_name($EnglishName)) { throw new Exception(CONTROL_CONTENT_SUBDIVISION_SUBCLASS_ERROR_KEYWORD_INVALID); } // проверка уникальности ключевого слова if (!IsAllowedSubdivisionEnglishName($EnglishName, $ParentSubID, 0, $CatalogueID)) { throw new Exception(CONTROL_CONTENT_SUBDIVISION_INDEX_ERROR_THREE_KEYWORD); } // визуальные настройки $TemplateSettings = ""; if ($_POST['is_parent_template'] == 'true') { $Template_ID = 0; } if ($Template_ID) { $settings = $nc_core->db->get_var("SELECT `CustomSettings` FROM `Template` WHERE `Template_ID` = '" . $Template_ID . "'"); if ($settings) { require_once $nc_core->ADMIN_FOLDER . "array_to_form.inc.php"; $a2f = new nc_a2f($settings, 'TemplateSettings'); if (!$a2f->validate($_POST['TemplateSettings'])) { throw new Exception($a2f->get_validation_errors()); } if (isset($_POST['TemplateSettings']) && !empty($_POST['TemplateSettings'])) { $a2f->save($_POST['TemplateSettings']); $TemplateSettings = $a2f->get_values_as_string(); } } } // execute core action $nc_core->event->execute("addSubdivisionPrep", $CatalogueID, 0); // добавление раздела $db->query("\n INSERT INTO `Subdivision`\n SET `Created` = NOW(),\n `Subdivision_Name` = '" . $db->escape($Subdivision_Name) . "',\n `EnglishName` = '" . $db->escape($EnglishName) . "',\n `Parent_Sub_ID` = '" . $ParentSubID . "',\n `Catalogue_ID` = '" . $CatalogueID . "',\n `Checked` = '" . intval($input['Checked']) . "',\n `Priority` = '" . intval($input['Priority']) . "',\n `Favorite` = '" . intval($input['Favorite']) . "',\n `UseMultiSubClass` = 1,\n `Template_ID` = '" . $Template_ID . "',\n `TemplateSettings` = '" . $db->escape($TemplateSettings) . "',\n `UseEditDesignTemplate` = '" . intval($input['UseEditDesignTemplate']) . "',\n `DisplayType` = '" . $db->escape($nc_core->input->fetch_get_post('DisplayType')) . "'"); if ($db->is_error) { throw new nc_Exception_DB_Error($db->last_query, $db->last_error); } $SubdivisionID = $db->insert_id; // обновим Hidden_URL $hidden_url = GetHiddenURL($ParentSubID); UpdateHiddenURL($hidden_url ? $hidden_url : "/", $ParentSubID, $CatalogueID); $nc_core->event->execute("addSubdivision", $CatalogueID, $SubdivisionID); // добавление компонента в разделе $Class_ID = intval($input['Class_ID']); $Class_Template_ID = intval($input['Class_Template_ID']); if ($Class_ID) { // визуальные настройки $CustomSettings = ""; $settings_array = $db->get_var("SELECT `CustomSettingsTemplate` FROM `Class`\n WHERE `Class_ID` = '" . ($Class_Template_ID ? $Class_Template_ID : $Class_ID) . "'"); if ($settings_array) { require_once $nc_core->ADMIN_FOLDER . "array_to_form.inc.php"; $a2f = new nc_a2f($settings_array, 'CustomSettings'); if (!$a2f->validate($_POST['CustomSettings'])) { $error = $a2f->get_validation_errors(); } else { $a2f->save($_POST['CustomSettings']); $CustomSettings = $a2f->get_values_as_string(); } } $nc_core->event->execute("addSubClassPrep", $CatalogueID, $SubdivisionID, 0); $db->query("INSERT INTO `Sub_Class`\n (`Subdivision_ID`, `Catalogue_ID`, `Class_ID`, `Sub_Class_Name`, `Checked`, `EnglishName`, `Created`, `CustomSettings`, `Class_Template_ID`)\n VALUES\n ('" . $SubdivisionID . "', '" . $CatalogueID . "', '" . $Class_ID . "', '" . $Subdivision_Name . "', 1, '" . $EnglishName . "', '" . date("Y-m-d H:i:s") . "', '" . addcslashes($CustomSettings, "'") . "', '" . $Class_Template_ID . "')"); if ($SubClassID = $db->insert_id) { $nc_core->event->execute("addSubClass", $CatalogueID, $SubdivisionID, $SubClassID); } } return $SubdivisionID; }