Beispiel #1
0
/**
* Shows the banner editor
*
* @param  string  $mode   Used to see if we are moderating a banner or simply editing one
* @param  string  $bid    ID of banner to edit
* @global array core config vars
* @global array core group data
* @global array core table data
* @global array core user data
* @global array banner plugin config vars
* @global array banner plugin lang vars
* @global array core lang access vars
* @return string HTML for the banner editor form
*
*/
function editbanner($mode, $bid = '')
{
    global $_CONF, $_GROUPS, $_TABLES, $_USER, $_BAN_CONF, $_PLUGINS, $LANG_BANNER_ADMIN, $LANG_ACCESS, $LANG_ADMIN, $MESSAGE;
    $retval = '';
    $banner_templates = new Template($_CONF['path'] . 'plugins/banner/templates/admin/');
    $banner_templates->set_file('editor', 'bannereditor.thtml');
    $banner_templates->set_var('xhtml', XHTML);
    $banner_templates->set_var('site_url', $_CONF['site_url']);
    $banner_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
    $banner_templates->set_var('layout_url', $_CONF['layout_url']);
    $banner_templates->set_var('lang_pagetitle', $LANG_BANNER_ADMIN[28]);
    $banner_templates->set_var('lang_banner_list', $LANG_BANNER_ADMIN[53]);
    $banner_templates->set_var('lang_new_banner', $LANG_BANNER_ADMIN[51]);
    $banner_templates->set_var('lang_validate_banner', $LANG_BANNER_ADMIN[26]);
    $banner_templates->set_var('lang_list_categories', $LANG_BANNER_ADMIN[50]);
    $banner_templates->set_var('lang_new_category', $LANG_BANNER_ADMIN[52]);
    $banner_templates->set_var('lang_admin_home', $LANG_ADMIN['admin_home']);
    $banner_templates->set_var('instructions', $LANG_BANNER_ADMIN[29]);
    $fcktoolbar_mg = '';
    if (in_array('mediagallery', $_PLUGINS)) {
        if (file_exists($_CONF['path_html'] . 'fckeditor/editor/plugins/mediagallery')) {
            $fcktoolbar_mg = '-mg';
        }
    }
    $banner_templates->set_var('mg', $fcktoolbar_mg);
    if ($mode != 'editsubmission' and !empty($bid)) {
        $result = DB_query("SELECT * FROM {$_TABLES['banner']} WHERE bid ='{$bid}'");
        if (DB_numRows($result) !== 1) {
            $msg = COM_startBlock($LANG_BANNER_ADMIN[24], '', COM_getBlockTemplate('_msg_block', 'header'));
            $msg .= $LANG_BANNER_ADMIN[25];
            $msg .= COM_endBlock(COM_getBlockTemplate('_msg_block', 'footer'));
            return $msg;
        }
        $A = DB_fetchArray($result);
        $access = SEC_hasAccess($A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']);
        if ($access == 0 or $access == 2) {
            $retval .= COM_startBlock($LANG_BANNER_ADMIN[16], '', COM_getBlockTemplate('_msg_block', 'header'));
            $retval .= $LANG_BANNER_ADMIN[17];
            $retval .= COM_endBlock(COM_getBlockTemplate('_msg_block', 'footer'));
            COM_accessLog("User {$_USER['username']} tried to illegally submit or edit banner {$bid}.");
            return $retval;
        }
    } else {
        if ($mode == 'editsubmission') {
            $result = DB_query("SELECT * FROM {$_TABLES['bannersubmission']} WHERE bid = '{$bid}'");
            $A = DB_fetchArray($result);
        } else {
            $A['bid'] = COM_makesid();
            $A['cid'] = '';
            $A['url'] = '';
            $A['description'] = '';
            $A['title'] = '';
            $A['publishstart'] = '';
            $A['publishend'] = '';
            $A['owner_id'] = $_USER['uid'];
        }
        $A['hits'] = 0;
        if (isset($_GROUPS['Banner Admin'])) {
            $A['group_id'] = $_GROUPS['Banner Admin'];
        } else {
            $A['group_id'] = SEC_getFeatureGroup('banner.edit');
        }
        SEC_setDefaultPermissions($A, $_BAN_CONF['default_permissions']);
        $access = 3;
    }
    $retval .= COM_startBlock($LANG_BANNER_ADMIN[1], '', COM_getBlockTemplate('_admin_block', 'header'));
    $banner_templates->set_var('banner_id', $A['bid']);
    if (!empty($bid) && SEC_hasRights('banner.edit')) {
        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete'] . '" name="mode"%s' . XHTML . '>';
        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
        $banner_templates->set_var('delete_option', sprintf($delbutton, $jsconfirm));
        $banner_templates->set_var('delete_option_no_confirmation', sprintf($delbutton, ''));
        if ($mode == 'editsubmission') {
            $banner_templates->set_var('submission_option', '<input type="hidden" name="type" value="submission"' . XHTML . '>');
        }
    }
    $banner_templates->set_var('lang_bannertitle', $LANG_BANNER_ADMIN[3]);
    $banner_templates->set_var('banner_title', htmlspecialchars(stripslashes($A['title'])));
    $banner_templates->set_var('lang_bannerid', $LANG_BANNER_ADMIN[2]);
    $banner_templates->set_var('lang_bannerurl', $LANG_BANNER_ADMIN[4]);
    $banner_templates->set_var('max_url_length', 255);
    $banner_templates->set_var('banner_url', $A['url']);
    $banner_templates->set_var('lang_includehttp', $LANG_BANNER_ADMIN[6]);
    $banner_templates->set_var('lang_category', $LANG_BANNER_ADMIN[5]);
    $othercategory = banner_select_box(3, $A['cid']);
    $banner_templates->set_var('category_options', $othercategory);
    $banner_templates->set_var('lang_ifotherspecify', $LANG_BANNER_ADMIN[20]);
    $banner_templates->set_var('category', $othercategory);
    $banner_templates->set_var('lang_publishstart', $LANG_BANNER_ADMIN[61]);
    $banner_templates->set_var('publishstart', $A['publishstart']);
    $banner_templates->set_var('lang_publishend', $LANG_BANNER_ADMIN[62]);
    $banner_templates->set_var('publishend', $A['publishend']);
    $banner_templates->set_var('lang_helpdatetime', $LANG_BANNER_ADMIN[63]);
    $banner_templates->set_var('lang_bannerhits', $LANG_BANNER_ADMIN[8]);
    $banner_templates->set_var('banner_hits', $A['hits']);
    $banner_templates->set_var('lang_bannerdescription', $LANG_BANNER_ADMIN[9]);
    $banner_templates->set_var('banner_description', stripslashes($A['description']));
    $banner_templates->set_var('lang_save', $LANG_ADMIN['save']);
    $banner_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
    // user access info
    $banner_templates->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
    $banner_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
    $ownername = COM_getDisplayName($A['owner_id']);
    $banner_templates->set_var('owner_username', DB_getItem($_TABLES['users'], 'username', "uid = {$A['owner_id']}"));
    $banner_templates->set_var('owner_name', $ownername);
    $banner_templates->set_var('owner', $ownername);
    $banner_templates->set_var('banner_ownerid', $A['owner_id']);
    $banner_templates->set_var('lang_group', $LANG_ACCESS['group']);
    $banner_templates->set_var('group_dropdown', SEC_getGroupDropdown($A['group_id'], $access));
    $banner_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
    $banner_templates->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
    $banner_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']));
    $banner_templates->set_var('lang_lockmsg', $LANG_ACCESS['permmsg']);
    $banner_templates->set_var('gltoken_name', CSRF_TOKEN);
    $banner_templates->set_var('gltoken', SEC_createToken());
    $banner_templates->parse('output', 'editor');
    $retval .= $banner_templates->finish($banner_templates->get_var('output'));
    $retval .= COM_endBlock(COM_getBlockTemplate('_admin_block', 'footer'));
    return $retval;
}
Beispiel #2
0
/**
* Create the banner list depending on the category given
*
* @param    array   $message    message(s) to display
* @return   string              the banner page
*
*/
function banner_list($message)
{
    global $_CONF, $_TABLES, $_BAN_CONF, $LANG_BANNER_ADMIN, $LANG_BANNER, $LANG_BANNER_STATS;
    $cid = $_BAN_CONF['root'];
    $display = '';
    if (isset($_GET['category'])) {
        $cid = strip_tags(COM_stripslashes($_GET['category']));
    } elseif (isset($_POST['category'])) {
        $cid = strip_tags(COM_stripslashes($_POST['category']));
    }
    $cat = addslashes($cid);
    $page = 0;
    if (isset($_GET['page'])) {
        $page = COM_applyFilter($_GET['page'], true);
    }
    if ($page == 0) {
        $page = 1;
    }
    if (empty($cid)) {
        if ($page > 1) {
            $page_title = sprintf($LANG_BANNER[114] . ' (%d)', $page);
        } else {
            $page_title = $LANG_BANNER[114];
        }
    } else {
        if ($cid == $_BAN_CONF['root']) {
            $category = $LANG_BANNER['root'];
        } else {
            $category = DB_getItem($_TABLES['bannercategories'], 'category', "cid = '{$cat}'");
        }
        if ($page > 1) {
            $page_title = sprintf($LANG_BANNER[114] . ': %s (%d)', $category, $page);
        } else {
            $page_title = sprintf($LANG_BANNER[114] . ': %s', $category);
        }
    }
    // Check has access to this category
    if ($cid != $_BAN_CONF['root']) {
        $result = DB_query("SELECT owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['bannercategories']} WHERE cid='{$cat}'");
        $A = DB_fetchArray($result);
        if (SEC_hasAccess($A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) < 2) {
            $display .= COM_siteHeader('menu', $page_title);
            $display .= COM_showMessage(5, 'banner');
            $display .= COM_siteFooter();
            echo $display;
            exit;
        }
    }
    $display .= COM_siteHeader('menu', $page_title);
    if (is_array($message) && !empty($message[0])) {
        $display .= COM_startBlock($message[0], '', COM_getBlockTemplate('_msg_block', 'header'));
        $display .= $message[1];
        $display .= COM_endBlock(COM_getBlockTemplate('_msg_block', 'footer'));
    } else {
        if (isset($_REQUEST['msg'])) {
            $msg = COM_applyFilter($_REQUEST['msg'], true);
            if ($msg > 0) {
                $display .= COM_showMessage($msg, 'banner');
            }
        }
    }
    $bannerlist = new Template($_CONF['path'] . 'plugins/banner/templates/');
    $bannerlist->set_file(array('bannerlist' => 'banner.thtml', 'catbanner' => 'categorybanner.thtml', 'banner' => 'bannerdetails.thtml', 'catnav' => 'categorynavigation.thtml', 'catrow' => 'categoryrow.thtml', 'catcol' => 'categorycol.thtml', 'actcol' => 'categoryactivecol.thtml', 'pagenav' => 'pagenavigation.thtml', 'catdrop' => 'categorydropdown.thtml'));
    $bannerlist->set_var('xhtml', XHTML);
    $bannerlist->set_var('blockheader', COM_startBlock($LANG_BANNER[114]));
    $bannerlist->set_var('layout_url', $_CONF['layout_url']);
    if ($_BAN_CONF['bannercols'] > 0) {
        // Create breadcrumb trail
        $bannerlist->set_var('breadcrumbs', banner_breadcrumbs($_BAN_CONF['root'], $cid));
        // Set dropdown for category jump
        $bannerlist->set_var('lang_go', $LANG_BANNER[124]);
        $bannerlist->set_var('banner_dropdown', banner_select_box(2, $cid));
        // Show categories
        $sql = "SELECT cid,pid,category,description FROM {$_TABLES['bannercategories']} WHERE pid='{$cat}'";
        $sql .= COM_getLangSQL('cid', 'AND');
        $sql .= COM_getPermSQL('AND') . " ORDER BY category";
        $result = DB_query($sql);
        $nrows = DB_numRows($result);
        if ($nrows > 0) {
            $bannerlist->set_var('lang_categories', $LANG_BANNER_ADMIN[14]);
            for ($i = 1; $i <= $nrows; $i++) {
                $C = DB_fetchArray($result);
                // Get number of child banner user can see in this category
                $ccid = addslashes($C['cid']);
                $result1 = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['banner']} WHERE cid='{$ccid}'" . COM_getPermSQL('AND'));
                $D = DB_fetchArray($result1);
                // Get number of child categories user can see in this category
                $result2 = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['bannercategories']} WHERE pid='{$ccid}'" . COM_getPermSQL('AND'));
                $E = DB_fetchArray($result2);
                // Format numbers for display
                $display_count = '';
                // don't show zeroes
                if ($E['count'] > 0) {
                    $display_count = COM_numberFormat($E['count']);
                }
                if ($E['count'] > 0 && $D['count'] > 0) {
                    $display_count .= ', ';
                }
                if ($D['count'] > 0) {
                    $display_count .= COM_numberFormat($D['count']);
                }
                // add brackets if child items exist
                if ($display_count != '') {
                    $display_count = '(' . $display_count . ')';
                }
                $bannerlist->set_var('category_name', $C['category']);
                if ($_BAN_CONF['show_category_descriptions']) {
                    $bannerlist->set_var('category_description', $C['description']);
                } else {
                    $bannerlist->set_var('category_description', '');
                }
                $bannerlist->set_var('category_link', $_CONF['site_url'] . '/banner/index.php?category=' . urlencode($C['cid']));
                $bannerlist->set_var('category_count', $display_count);
                $bannerlist->set_var('width', floor(100 / $_BAN_CONF['bannercols']));
                if (!empty($cid) && $cid == $C['cid']) {
                    $bannerlist->parse('category_col', 'actcol', true);
                } else {
                    $bannerlist->parse('category_col', 'catcol', true);
                }
                if ($i % $_BAN_CONF['bannercols'] == 0) {
                    $bannerlist->parse('category_row', 'catrow', true);
                    $bannerlist->set_var('category_col', '');
                }
            }
            if ($nrows % $_BAN_CONF['bannercols'] != 0) {
                $bannerlist->parse('category_row', 'catrow', true);
            }
            $bannerlist->parse('category_navigation', 'catnav', true);
        } else {
            $bannerlist->set_var('category_navigation', '');
        }
    } else {
        $bannerlist->set_var('category_navigation', '');
    }
    if ($_BAN_CONF['bannercols'] == 0) {
        $bannerlist->set_var('category_dropdown', '');
    } else {
        $bannerlist->parse('category_dropdown', 'catdrop', true);
    }
    $bannerlist->set_var('site_url', $_CONF['site_url']);
    $bannerlist->set_var('cid', $cid);
    $bannerlist->set_var('cid_plain', $cid);
    $bannerlist->set_var('cid_encoded', urlencode($cid));
    $bannerlist->set_var('lang_addabanner', $LANG_BANNER[116]);
    // Build SQL for banner
    $sql = 'SELECT bid,cid,url,description,title,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon';
    $from_where = " FROM {$_TABLES['banner']}";
    if ($_BAN_CONF['bannercols'] > 0) {
        if (!empty($cid)) {
            $from_where .= " WHERE cid='" . addslashes($cid) . "'";
        } else {
            $from_where .= " WHERE cid=''";
        }
        $from_where .= ' AND (publishstart IS NULL OR publishstart < NOW()) and (publishend IS NULL OR publishend > NOW())';
        $from_where .= COM_getPermSQL('AND');
    } else {
        $from_where .= COM_getPermSQL();
    }
    $order = ' ORDER BY cid ASC,title';
    $limit = '';
    if ($_BAN_CONF['bannerperpage'] > 0) {
        if ($page < 1) {
            $start = 0;
        } else {
            $start = ($page - 1) * $_BAN_CONF['bannerperpage'];
        }
        $limit = ' LIMIT ' . $start . ',' . $_BAN_CONF['bannerperpage'];
    }
    $result = DB_query($sql . $from_where . $order . $limit);
    $nrows = DB_numRows($result);
    if ($nrows == 0) {
        if ($cid == $_BAN_CONF['root'] && $page <= 1 && $_BAN_CONF['show_top10']) {
            $result = DB_query("SELECT bid,url,title,description,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['banner']} WHERE (hits > 0) AND (publishstart IS NULL OR publishstart < NOW()) and (publishend IS NULL OR publishend > NOW())" . COM_getPermSQL('AND') . " ORDER BY hits DESC LIMIT 10");
            $nrows = DB_numRows($result);
            if ($nrows > 0) {
                $bannerlist->set_var('banner_details', '');
                $bannerlist->set_var('banner_category', $LANG_BANNER_STATS['stats_headline']);
                for ($i = 0; $i < $nrows; $i++) {
                    $A = DB_fetchArray($result);
                    prepare_banner_item($A, $bannerlist);
                    $bannerlist->parse('banner_details', 'banner', true);
                }
                $bannerlist->parse('category_banner', 'catbanner', true);
            }
        }
        $bannerlist->set_var('page_navigation', '');
    } else {
        $currentcid = '';
        for ($i = 0; $i < $nrows; $i++) {
            $A = DB_fetchArray($result);
            if (strcasecmp($A['cid'], $currentcid) != 0) {
                // print the category and banner
                if ($i > 0) {
                    $bannerlist->parse('category_banner', 'catbanner', true);
                    $bannerlist->set_var('banner_details', '');
                }
                $currentcid = $A['cid'];
                $currentcategory = DB_getItem($_TABLES['bannercategories'], 'category', "cid = '" . addslashes($currentcid) . "'");
                $bannerlist->set_var('banner_category', $currentcategory);
            }
            prepare_banner_item($A, $bannerlist);
            $bannerlist->parse('banner_details', 'banner', true);
        }
        $bannerlist->parse('category_banner', 'catbanner', true);
        $result = DB_query('SELECT COUNT(*) AS count ' . $from_where);
        list($numbanner) = DB_fetchArray($result);
        $pages = 0;
        if ($_BAN_CONF['bannerperpage'] > 0) {
            $pages = (int) ($numbanner / $_BAN_CONF['bannerperpage']);
            if ($numbanner % $_BAN_CONF['bannerperpage'] > 0) {
                $pages++;
            }
        }
        if ($pages > 0) {
            if ($_BAN_CONF['bannercols'] > 0 && !empty($currentcid)) {
                $catbanner = '?category=' . urlencode($currentcid);
            } else {
                $catbanner = '';
            }
            $bannerlist->set_var('page_navigation', COM_printPageNavigation($_CONF['site_url'] . '/banner/index.php' . $catbanner, $page, $pages));
        } else {
            $bannerlist->set_var('page_navigation', '');
        }
    }
    $bannerlist->set_var('blockfooter', COM_endBlock());
    $bannerlist->parse('output', 'bannerlist');
    $display .= $bannerlist->finish($bannerlist->get_var('output'));
    return $display;
}
function banner_edit_category($cid, $pid)
{
    global $_CONF, $_TABLES, $_USER, $MESSAGE, $LANG_BANNER_ADMIN, $LANG_ADMIN, $LANG_ACCESS, $_BAN_CONF;
    $retval = '';
    $cid = addslashes($cid);
    if (!empty($pid)) {
        // have parent id, so making a new subcategory
        // get parent access rights
        $result = DB_query("SELECT group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['bannercategories']} WHERE cid='" . addslashes($pid) . "'");
        $A = DB_fetchArray($result);
        $A['owner_id'] = $_USER['uid'];
        $A['pid'] = $pid;
    } elseif (!empty($cid)) {
        // have category id, so editing a category
        $sql = "SELECT * FROM {$_TABLES['bannercategories']} WHERE cid='{$cid}'" . COM_getPermSQL('AND');
        $result = DB_query($sql);
        $A = DB_fetchArray($result);
    } else {
        // nothing, so making a new top-level category
        // get default access rights
        $A['group_id'] = DB_getItem($_TABLES['groups'], 'grp_id', "grp_name='Banner Admin'");
        SEC_setDefaultPermissions($A, $_BAN_CONF['default_permissions']);
        $A['owner_id'] = $_USER['uid'];
        $A['pid'] = $_BAN_CONF['root'];
    }
    $access = SEC_hasAccess($A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']);
    if ($access < 3) {
        return COM_showMessage(6, 'banner');
    }
    $retval .= COM_startBlock($LANG_BANNER_ADMIN[56], '', COM_getBlockTemplate('_admin_block', 'header'));
    $T = new Template($_CONF['path'] . 'plugins/banner/templates/admin');
    $T->set_file(array('page' => 'categoryeditor.thtml'));
    $T->set_var('xhtml', XHTML);
    $T->set_var('site_url', $_CONF['site_url']);
    $T->set_var('site_admin_url', $_CONF['site_admin_url']);
    $T->set_var('layout_url', $_CONF['layout_url']);
    $T->set_var('lang_pagetitle', $LANG_BANNER_ADMIN[28]);
    $T->set_var('lang_banner_list', $LANG_BANNER_ADMIN[53]);
    $T->set_var('lang_new_banner', $LANG_BANNER_ADMIN[51]);
    $T->set_var('lang_validate_banner', $LANG_BANNER_ADMIN[26]);
    $T->set_var('lang_list_categories', $LANG_BANNER_ADMIN[50]);
    $T->set_var('lang_new_category', $LANG_BANNER_ADMIN[52]);
    $T->set_var('lang_admin_home', $LANG_ADMIN['admin_home']);
    $T->set_var('instructions', $LANG_BANNER_ADMIN[29]);
    $T->set_var('lang_category', $LANG_BANNER_ADMIN[30]);
    $T->set_var('lang_cid', $LANG_BANNER_ADMIN[32]);
    $T->set_var('lang_description', $LANG_BANNER_ADMIN[31]);
    $T->set_var('lang_topic', $LANG_BANNER_ADMIN[33]);
    $T->set_var('lang_parent', $LANG_BANNER_ADMIN[34]);
    $T->set_var('lang_save', $LANG_ADMIN['save']);
    if (!empty($cid)) {
        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete'] . '" name="mode"%s' . XHTML . '>';
        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
        $T->set_var('delete_option', sprintf($delbutton, $jsconfirm));
        $T->set_var('delete_option_no_confirmation', sprintf($delbutton, ''));
    } else {
        $T->set_var('delete_option', '');
    }
    $T->set_var('lang_cancel', $LANG_ADMIN['cancel']);
    if (!empty($cid)) {
        $T->set_var('cid_value', $A['cid']);
        $T->set_var('old_cid_value', $A['cid']);
        $T->set_var('category_options', banner_select_box(3, $A['pid']));
        $T->set_var('category_value', $A['category']);
        $T->set_var('description_value', $A['description']);
    } else {
        $A['cid'] = COM_makeSid();
        $T->set_var('cid_value', $A['cid']);
        $T->set_var('old_cid_value', '');
        $T->set_var('category_options', banner_select_box(3, $A['pid']));
        $T->set_var('category_value', '');
        $T->set_var('description_value', '');
    }
    if (!isset($A['tid'])) {
        $A['tid'] = 'all';
    }
    $topics = COM_topicList('tid,topic', $A['tid'], 1, true);
    $T->set_var('topic_list', $topics);
    $alltopics = '<option value="all"';
    if ($A['tid'] == 'all') {
        $alltopics .= ' selected="selected"';
    }
    $alltopics .= '>' . $LANG_BANNER_ADMIN[35] . '</option>' . LB;
    $T->set_var('topic_selection', '<select name="tid">' . $alltopics . $topics . '</select>');
    // user access info
    $T->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
    $T->set_var('lang_owner', $LANG_ACCESS['owner']);
    $T->set_var('owner_name', COM_getDisplayName($A['owner_id']));
    $T->set_var('cat_ownerid', $A['owner_id']);
    $T->set_var('lang_group', $LANG_ACCESS['group']);
    $T->set_var('group_dropdown', SEC_getGroupDropdown($A['group_id'], $access));
    $T->set_var('lang_permissions', $LANG_ACCESS['permissions']);
    $T->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
    $T->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']));
    $T->set_var('lang_lockmsg', $LANG_ACCESS['permmsg']);
    $T->set_var('gltoken_name', CSRF_TOKEN);
    $T->set_var('gltoken', SEC_createToken());
    $T->parse('output', 'page');
    $retval .= $T->finish($T->get_var('output'));
    $retval .= COM_endBlock(COM_getBlockTemplate('_admin_block', 'footer'));
    return $retval;
}