예제 #1
0
    public function main($id, $mode)
    {
        global $phpbb_admin_path;
        // Anoyingly can't use a constant due to phpBB :/
        // Set some stuff we *really* need
        $this->tpl_name = 'acp_subject_prefix';
        $this->page_title = 'ACP_SUBJECT_PREFIX';
        add_form_key('acp_subject_prefix');
        $action = request_var('action', '');
        switch ($mode) {
            case 'add':
                $pid = request_var('pid', 0);
                // Handle
                if (isset($_POST['submit'])) {
                    // Get the data
                    $colour = request_var('prefix_colour', '');
                    $forum_ids = request_var('prefix_forums_id', array(0 => 0));
                    $title = request_var('prefix_title', '', true);
                    // Create or edit
                    if ($pid > 0) {
                        sp_core::prefix_update($pid, $title, $colour, $forum_ids, $this->error);
                        $msg = 'PREFIX_SUCCESSFULLY_EDITED';
                    } else {
                        $pid = sp_core::prefix_add($title, $colour, $forum_ids, $this->error);
                        $msg = 'PREFIX_SUCCESSFULLY_ADDED';
                    }
                    // Redirect
                    meta_refresh(5, $this->u_action);
                    trigger_error(sp_phpbb::$user->lang[$msg] . adm_back_link($this->u_action));
                }
                // Editing
                if ($pid > 0) {
                    $prefixes = sp_phpbb::$cache->obtain_subject_prefixes();
                    if (!empty($prefixes[$pid])) {
                        sp_phpbb::$template->assign_vars(array('COLOUR' => $prefixes[$pid]['colour'], 'TITLE' => $prefixes[$pid]['title']));
                        // The forum select
                        $selected = array();
                        $sql = 'SELECT forum_id
							FROM ' . SUBJECT_PREFIX_FORUMS_TABLE . '
							WHERE prefix_id = ' . $pid;
                        $result = sp_phpbb::$db->sql_query($sql);
                        while ($row = sp_phpbb::$db->sql_fetchrow($result)) {
                            $selected[] = $row['forum_id'];
                        }
                        sp_phpbb::$db->sql_freeresult($result);
                        $forum_select = make_forum_select($selected, false, true, false, false);
                    }
                }
                if (!isset($forum_select)) {
                    $forum_select = make_forum_select(false, false, true, false, false);
                }
                // Display page
                sp_phpbb::$template->assign_vars(array('L_SUBJECT_PREFIX_ADD_EDIT' => sp_phpbb::$user->lang('SUBJECT_PREFIX_ADD_EDIT', $mode == 'add' ? 0 : 1), 'PREFIX_FORUMS_OPTIONS' => $forum_select, 'S_EDIT' => true, 'U_ACTION' => $this->u_action . '&pid=' . $pid, 'U_SWATCH' => append_sid($phpbb_admin_path . 'swatch.' . PHP_EXT, array('form' => 'acp_subject_prefix', 'name' => 'prefix_colour'))));
                break;
            case 'main':
                // Quick actions
                if (method_exists($this, 'qa_' . $action)) {
                    call_user_func(array($this, 'qa_' . $action));
                }
                $data = $forums = array();
                sp_phpbb::$cache->obtain_prefix_forum_tree($data, $forums);
                if (is_array($data) && is_array($forums)) {
                    ksort($data);
                    // Output the list
                    foreach ($data as $forum_id => $prefixes) {
                        // The forum block
                        sp_phpbb::$template->assign_block_vars('forumrow', array('FORUMNAME' => $forums[$forum_id], 'FORUM_ID' => $forum_id));
                        // The prefixes
                        foreach ($prefixes as $prefix) {
                            sp_phpbb::$template->assign_block_vars('forumrow.prefixrow', array('PREFIX_ID' => $prefix['prefix_id'], 'PREFIX_NAME' => $prefix['prefix_title'], 'PREFIX_COLOUR' => $prefix['prefix_colour'], 'PREFIX_FULL' => sp_core::generate_prefix_string($prefix['prefix_id']), 'U_DELETE' => sp_phpbb::$auth->acl_get('a_subject_prefix_create') ? $this->u_action . "&action=delete&pid={$prefix['prefix_id']}&fid={$forum_id}" : false, 'U_EDIT' => sp_phpbb::$auth->acl_get('a_subject_prefix_create') ? $this->u_action . "&mode=add&pid={$prefix['prefix_id']}" : false, 'U_MOVE_DOWN' => $this->u_action . '&action=move&direction=down&prefix_order=' . $prefix['prefix_order'] . '&f=' . $forum_id, 'U_MOVE_UP' => $this->u_action . '&action=move&direction=up&prefix_order=' . $prefix['prefix_order'] . '&f=' . $forum_id));
                        }
                    }
                }
                // Some common stuff
                sp_phpbb::$template->assign_vars(array('U_SUBJECT_PREFIX_AJAX_REQUEST' => append_sid(PHPBB_ROOT_PATH . 'sp_ajax.' . PHP_EXT)));
                break;
        }
    }