/** * Modify a specific board... * * What it doews * - screen for editing and repositioning a board. * - called by ?action=admin;area=manageboards;sa=board * - also used to show the confirm deletion of category screen (sub-template confirm_board_delete). * - requires manage_boards permission. * * @uses the modify_board sub-template of the ManageBoards template. * @uses ManagePermissions language */ public function action_board() { global $txt, $context, $cat_tree, $boards, $boardList, $modSettings; loadTemplate('ManageBoards'); require_once SUBSDIR . '/Boards.subs.php'; getBoardTree(); // For editing the profile we'll need this. loadLanguage('ManagePermissions'); require_once SUBSDIR . '/ManagePermissions.subs.php'; loadPermissionProfiles(); // id_board must be a number.... $_REQUEST['boardid'] = isset($_REQUEST['boardid']) ? (int) $_REQUEST['boardid'] : 0; if (!isset($boards[$_REQUEST['boardid']])) { $_REQUEST['boardid'] = 0; $_REQUEST['sa'] = 'newboard'; } if ($_REQUEST['sa'] == 'newboard') { // Category doesn't exist, man... sorry. if (empty($_REQUEST['cat'])) { redirectexit('action=admin;area=manageboards'); } // Some things that need to be setup for a new board. $curBoard = array('member_groups' => array(0, -1), 'deny_groups' => array(), 'category' => (int) $_REQUEST['cat']); $context['board_order'] = array(); $context['board'] = array('is_new' => true, 'id' => 0, 'name' => $txt['mboards_new_board_name'], 'description' => '', 'count_posts' => 1, 'posts' => 0, 'topics' => 0, 'theme' => 0, 'profile' => 1, 'override_theme' => 0, 'redirect' => '', 'category' => (int) $_REQUEST['cat'], 'no_children' => true); } else { // Just some easy shortcuts. $curBoard =& $boards[$_REQUEST['boardid']]; $context['board'] = $boards[$_REQUEST['boardid']]; $context['board']['name'] = htmlspecialchars(strtr($context['board']['name'], array('&' => '&')), ENT_COMPAT, 'UTF-8'); $context['board']['description'] = htmlspecialchars($context['board']['description'], ENT_COMPAT, 'UTF-8'); $context['board']['no_children'] = empty($boards[$_REQUEST['boardid']]['tree']['children']); $context['board']['is_recycle'] = !empty($modSettings['recycle_enable']) && !empty($modSettings['recycle_board']) && $modSettings['recycle_board'] == $context['board']['id']; } // As we may have come from the permissions screen keep track of where we should go on save. $context['redirect_location'] = isset($_GET['rid']) && $_GET['rid'] == 'permissions' ? 'permissions' : 'boards'; // We might need this to hide links to certain areas. $context['can_manage_permissions'] = allowedTo('manage_permissions'); // Default membergroups. $context['groups'] = array(-1 => array('id' => '-1', 'name' => $txt['parent_guests_only'], 'allow' => in_array('-1', $curBoard['member_groups']), 'deny' => in_array('-1', $curBoard['deny_groups']), 'is_post_group' => false), 0 => array('id' => '0', 'name' => $txt['parent_members_only'], 'allow' => in_array('0', $curBoard['member_groups']), 'deny' => in_array('0', $curBoard['deny_groups']), 'is_post_group' => false)); $context['groups'] += getOtherGroups($curBoard); // Category doesn't exist, man... sorry. if (!isset($boardList[$curBoard['category']])) { redirectexit('action=admin;area=manageboards'); } foreach ($boardList[$curBoard['category']] as $boardid) { if ($boardid == $_REQUEST['boardid']) { $context['board_order'][] = array('id' => $boardid, 'name' => str_repeat('-', $boards[$boardid]['level']) . ' (' . $txt['mboards_current_position'] . ')', 'children' => $boards[$boardid]['tree']['children'], 'no_children' => empty($boards[$boardid]['tree']['children']), 'is_child' => false, 'selected' => true); } else { $context['board_order'][] = array('id' => $boardid, 'name' => str_repeat('-', $boards[$boardid]['level']) . ' ' . $boards[$boardid]['name'], 'is_child' => empty($_REQUEST['boardid']) ? false : isChildOf($boardid, $_REQUEST['boardid']), 'selected' => false); } } // Are there any places to move sub-boards to in the case where we are confirming a delete? if (!empty($_REQUEST['boardid'])) { $context['can_move_children'] = false; $context['children'] = $boards[$_REQUEST['boardid']]['tree']['children']; foreach ($context['board_order'] as $board) { if ($board['is_child'] == false && $board['selected'] == false) { $context['can_move_children'] = true; } } } // Get other available categories. $context['categories'] = array(); foreach ($cat_tree as $catID => $tree) { $context['categories'][] = array('id' => $catID == $curBoard['category'] ? 0 : $catID, 'name' => $tree['node']['name'], 'selected' => $catID == $curBoard['category']); } $context['board']['moderators'] = getBoardModerators($_REQUEST['boardid']); $context['board']['moderator_list'] = empty($context['board']['moderators']) ? '' : '"' . implode('", "', $context['board']['moderators']) . '"'; if (!empty($context['board']['moderators'])) { list($context['board']['last_moderator_id']) = array_slice(array_keys($context['board']['moderators']), -1); } $context['themes'] = getAllThemes(); if (!isset($_REQUEST['delete'])) { $context['sub_template'] = 'modify_board'; $context['page_title'] = $txt['boardsEdit']; loadJavascriptFile('suggest.js', array('defer' => true)); } else { $context['sub_template'] = 'confirm_board_delete'; $context['page_title'] = $txt['mboards_delete_board']; } // Create a special token. createToken('admin-be-' . $_REQUEST['boardid']); call_integration_hook('integrate_edit_board'); }
break; case 'getLayerColDesc': require_once('metadata_layer.php'); getLayerColDesc($responseDoc, $rootNode, $requestDoc->getElementsByTagName('params')->item(0)); break; case 'saveLayerColDesc': require_once('metadata_layer.php'); saveLayerColDesc($responseDoc, $rootNode, $requestDoc->getElementsByTagName('params')->item(0)); break; case 'getColumnsForLayerOfType': require_once('metadata_layer.php'); getColumnsForLayerOfType($responseDoc, $rootNode, $requestDoc->getElementsByTagName('params')->item(0)); break; case 'getAllThemes': require_once('metadata_themes.php'); getAllThemes($responseDoc, $rootNode); break; case 'getThemesOfType': require_once('metadata_themes.php'); getThemesOfType($responseDoc, $rootNode, $requestDoc->getElementsByTagName('params')->item(0)); break; case 'getThemesChildNodes': if($requestDoc->getElementsByTagName('params')->length == 0) { setError($responseDoc, $rootNode, "Required parameters not set."); } else { require_once('metadata_themes.php'); getThemesChildNodes($responseDoc, $rootNode, $requestDoc->getElementsByTagName('params')->item(0)); } break; case 'getCategoricalLayersList': require_once('metadata_themelayermapping.php');