/** * 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; }
/** * 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; }