global $portlist; $list = array(); foreach ($portlist as $ifn => $ifinfo) { if (is_jumbo_capable($ifn)) { $list[$ifn] = $ifn . ' (' . $ifinfo['mac'] . ')'; } } return $list; } include "head.inc"; if ($input_errors) { print_input_errors($input_errors); } $form = new Form(new Form_Button('Submit', gettext("Save"))); $section = new Form_Section('QinQ Configuration'); $section->addInput(new Form_Select('if', 'Parent interface', $pconfig['if'], build_parent_list()))->setHelp('Only QinQ capable interfaces will be shown.'); $section->addInput(new Form_Input('tag', 'First level tag', 'number', $pconfig['tag'], ['max' => '4094', 'min' => '1']))->setHelp('This is the first level VLAN tag. On top of this are stacked the member VLANs defined below.'); $section->addInput(new Form_Checkbox('autogroup', 'Option(s)', 'Adds interface to QinQ interface groups', $pconfig['autogroup']))->setHelp('Allows rules to be written more easily'); $section->addInput(new Form_Input('descr', 'Description', 'text', $pconfig['descr']))->setHelp('You may enter a description here for your reference (not parsed).'); $section->addInput(new Form_StaticText('Member(s)', 'You can specify ranges in the inputs below. Enter a range (2-3) or individual numbers.' . '<br />' . 'Click "Duplicate" as many times as needed to add new inputs')); if (isset($id) && $a_qinqs[$id]) { $section->addInput(new Form_Input('id', null, 'hidden', $id)); } $counter = 0; $members = $pconfig['members']; // List each of the member tags from the space-separated list if ($members != "") { $item = explode(" ", $members); } else { $item = array(''); }
function build_parent_list() { $parentlist = array(); $portlist = get_possible_listen_ips(); foreach ($portlist as $ifn => $ifinfo) { $parentlist[$ifn] = $ifinfo; } return $parentlist; } $pgtitle = array(gettext("Interfaces"), gettext("GRE"), gettext("Edit")); $shortcut_section = "interfaces"; include "head.inc"; require_once 'classes/Form.class.php'; $form = new Form(); $section = new Form_Section('GRE Configuration'); $section->addInput(new Form_Select('if', 'Parent Interface', $pconfig['if'], build_parent_list()))->setHelp('This interface serves as the local address to be used for the GRE tunnel.'); $section->addInput(new Form_IpAddress('remote-addr', 'GRE Remote Address', $pconfig['remote-addr']))->setHelp('Peer address where encapsulated GRE packets will be sent.'); $section->addInput(new Form_IpAddress('tunnel-local-addr', 'GRE tunnel local address', $pconfig['tunnel-local-addr']))->setHelp('Local GRE tunnel endpoint.'); $section->addInput(new Form_IpAddress('tunnel-remote-addr', 'GRE tunnel remote address', $pconfig['tunnel-remote-addr']))->setHelp('Remote GRE address endpoint.'); $section->addInput(new Form_Select('tunnel-remote-net', 'GRE tunnel remote subnet', $pconfig['tunnel-remote-net'], array_combine(range(128, 1, -1), range(128, 1, -1))))->setHelp('The subnet is used for determining the network that is tunnelled'); $section->addInput(new Form_Checkbox('link0', 'Route Caching', 'Specify if route caching can be enabled. (Be careful with these settings on dynamic networks.)', $pconfig['link0'])); $section->addInput(new Form_Checkbox('link1', 'ECN friendly behavior', 'ECN friendly behavior violates RFC2893. This should be used in mutual agreement with the peer. ', $pconfig['link1'])); $section->addInput(new Form_Checkbox('link2', 'WCCP Version', 'Check this box for WCCP encapsulation version 2, or leave unchecked for version 1.', $pconfig['link2'])); $section->addInput(new Form_Input('descr', 'Description', 'text', $pconfig['descr']))->setHelp('You may enter a description here for your reference (not parsed).'); $section->addInput(new Form_Input('greif', null, 'hidden', $pconfig['greif'])); if (isset($id) && $a_gres[$id]) { $section->addInput(new Form_Input('id', null, 'hidden', $id)); } $form->add($section); print $form; include "foot.inc";
$portlist = get_possible_listen_ips(); $count = 0; foreach ($portlist as $ifn => $ifinfo) { if (preg_match($g['wireless_regex'], $ifn)) { $parentlist[$ifn] = htmlspecialchars($ifn . '(' . $ifinfo['mac'] . ')'); $count++; } } if ($count > 0) { return $parentlist; } else { return array('0' => gettext('None available')); } } $pgtitle = array(gettext("Interfaces"), gettext("Wireless"), gettext("Edit")); include "head.inc"; if ($input_errors) { print_input_errors($input_errors); } $form = new Form(); $section = new Form_Section('Wireless Interface Configuration'); $section->addInput(new Form_Select('if', 'Parent Interface', $pconfig['if'], build_parent_list())); $section->addInput(new Form_Select('mode', 'Mode', $pconfig['mode'], array('bss' => gettext('Infrastructure (BSS)'), 'adhoc' => gettext('Ad-hoc (IBSS)'), 'hostap' => gettext('Access Point')))); $section->addInput(new Form_Input('descr', 'Description', 'text', $pconfig['descr']))->setHelp('You may enter a description here for your reference (not parsed).'); $section->addInput(new Form_Input('cloneif', null, 'hidden', $pconfig['cloneif'])); if (isset($id) && $a_clones[$id]) { $section->addInput(new Form_Input('id', null, 'hidden', $id)); } $form->add($section); print $form; include "foot.inc";
function makeprintablenav($pid = "0", $depth = "--") { global $db, $pforumcache, $fid, $forum, $lang; if (!is_array($pforumcache)) { $parlist = build_parent_list($fid, "fid", "OR", $forum['parentlist']); $query = $db->simple_select("forums", "name, fid, pid", "{$parlist}", array('order_by' => 'pid, disporder')); while ($forumnav = $db->fetch_array($query)) { $pforumcache[$forumnav['pid']][$forumnav['fid']] = $forumnav; } unset($forumnav); } if (is_array($pforumcache[$pid])) { foreach ($pforumcache[$pid] as $key => $forumnav) { $forums .= "+" . $depth . " {$lang->forum} {$forumnav['name']} (<i>" . $mybb->settings['bburl'] . "/" . get_forum_link($forumnav['fid']) . "</i>)<br />\n"; if ($pforumcache[$forumnav['fid']]) { $newdepth = $depth . "-"; $forums .= makeprintablenav($forumnav['fid'], $newdepth); } } } return $forums; }
} // Show subforums. $query = $db->simple_select("forums", "COUNT(fid) AS subforums", "pid='{$id}' AND status='1'"); $subforumcount = $db->fetch_field($query, "subforums"); if ($subforumcount > 0) { echo "<div class=\"forumlist\">\n"; echo "<h3>{$lang->subforums}</h3>\n"; echo "<ol>\n"; $forums = build_archive_forumbits($forum['fid']); echo $forums; echo "</ol>\n</div>\n"; } archive_multipage($threadcount, $perpage, $page, "{$base_url}forum-{$id}"); // Get the announcements if the forum is not a category. if ($forum['type'] == 'f') { $sql = build_parent_list($forum['fid'], "fid", "OR", $forum['parentlist']); $time = TIME_NOW; $query = $db->simple_select("announcements", "*", "startdate < '{$time}' AND (enddate > '{$time}' OR enddate=0) AND ({$sql} OR fid='-1')"); if ($db->num_rows($query) > 0) { echo "<div class=\"announcementlist\">\n"; echo "<h3>{$lang->forumbit_announcements}</h3>"; echo "<ol>\n"; while ($announcement = $db->fetch_array($query)) { $announcement['subject'] = $parser->parse_badwords($announcement['subject']); echo "<li><a href=\"{$base_url}announcement-{$announcement['aid']}.html\">" . htmlspecialchars_uni($announcement['subject']) . "</a></li>"; } echo "</ol>\n</div>\n"; } } // Get the stickies if the forum is not a category. if ($forum['type'] == 'f') {
$permission_data = $db->fetch_array($query); if (!$fid) { $fid = $permission_data['fid']; } if (!$gid) { $gid = $permission_data['gid']; } if (!$pid) { $pid = $permission_data['pid']; } $query = $db->simple_select("usergroups", "*", "gid='{$gid}'"); $usergroup = $db->fetch_array($query); $query = $db->simple_select("forums", "*", "fid='{$fid}'"); $forum = $db->fetch_array($query); $sperms = $permission_data; $sql = build_parent_list($fid); $query = $db->simple_select("forumpermissions", "*", "{$sql} AND gid='{$gid}'"); $customperms = $db->fetch_array($query); if ($permission_data['pid']) { $permission_data['usecustom'] = 1; echo $form->generate_hidden_field("pid", $pid); } else { echo $form->generate_hidden_field("fid", $fid); echo $form->generate_hidden_field("gid", $gid); if (!$customperms['pid']) { $permission_data = usergroup_permissions($gid); } else { $permission_data = forum_permissions($fid, 0, $gid); } } }
function get_announcement_list($foruminfo, $fid) { // Gather forum stats global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $time, $mybbgroups, $cache; $has_announcements = $has_modtools = false; $forum_stats = $cache->read("forumsdisplay"); $parser = new postParser(); if (is_array($forum_stats)) { if (!empty($forum_stats[-1]['modtools']) || !empty($forum_stats[$fid]['modtools'])) { // Mod tools are specific to forums, not parents $has_modtools = true; } if (!empty($forum_stats[-1]['announcements']) || !empty($forum_stats[$fid]['announcements'])) { // Global or forum-specific announcements $has_announcements = true; } } $parentlist = $foruminfo['parentlist']; $parentlistexploded = explode(",", $parentlist); foreach ($parentlistexploded as $mfid) { if (!empty($forum_stats[$mfid]['announcements'])) { $has_announcements = true; } } $announcementlist = $topic_list = array(); if ($has_announcements == true) { $limit = ''; $announcements = ''; if ($mybb->settings['announcementlimit']) { $limit = "LIMIT 0, " . $mybb->settings['announcementlimit']; } $sql = build_parent_list($fid, "fid", "OR", $parentlist); $time = TIME_NOW; $query = $db->query("\n\t\t\tSELECT a.*, u.username\n\t\t\tFROM " . TABLE_PREFIX . "announcements a\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=a.uid)\n\t\t\tWHERE a.startdate<='{$time}' AND (a.enddate>='{$time}' OR a.enddate='0') AND ({$sql} OR fid='-1')\n\t\t\tORDER BY a.startdate DESC {$limit}\n\t\t"); // See if this announcement has been read in our announcement array $cookie = array(); if (isset($mybb->cookies['mybb']['announcements'])) { $cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements'])); } $announcementlist = ''; $bgcolor = alt_trow(true); // Reset the trow colors while ($announcement = $db->fetch_array($query)) { if ($announcement['startdate'] > $mybb->user['lastvisit'] && !$cookie[$announcement['aid']]) { $new_class = ' class="subject_new"'; $folder = "newfolder"; } else { $new_class = ' class="subject_old"'; $folder = "folder"; } // Mmm, eat those announcement cookies if they're older than our last visit if (isset($cookie[$announcement['aid']]) && $cookie[$announcement['aid']] < $mybb->user['lastvisit']) { unset($cookie[$announcement['aid']]); } $announcement['announcementlink'] = get_announcement_link($announcement['aid']); $announcement['subject'] = $parser->parse_badwords($announcement['subject']); $announcement['subject'] = htmlspecialchars_uni($announcement['subject']); $postdate = my_date('relative', $announcement['startdate']); $announcement['profilelink'] = build_profile_link($announcement['username'], $announcement['uid']); $announcementlist[] = $announcement; } if (empty($cookie)) { // Clean up cookie crumbs my_setcookie('mybb[announcements]', 0, TIME_NOW - 60 * 60 * 24 * 365); } else { if (!empty($cookie)) { my_setcookie("mybb[announcements]", addslashes(serialize($cookie)), -1); } } foreach ($announcementlist as $announce) { $user_info = get_user($announce['uid']); $icon_url = absolute_url($user_info['avatar']); $xmlrpc_topic = new xmlrpcval(array('forum_id' => new xmlrpcval($fid, 'string'), 'topic_id' => new xmlrpcval('ann_' . $announce['aid'], 'string'), 'topic_title' => new xmlrpcval(basic_clean($announce['subject']), 'base64'), 'topic_author_id' => new xmlrpcval($announce['uid'], 'string'), 'topic_author_name' => new xmlrpcval(basic_clean($announce['username']), 'base64'), 'icon_url' => new xmlrpcval(absolute_url($icon_url), 'string'), 'reply_number' => new xmlrpcval(0, 'int'), 'view_number' => new xmlrpcval(0, 'int'), 'short_content' => new xmlrpcval(process_short_content($announce['message'], $parser), 'base64')), 'struct'); $topic_list[] = $xmlrpc_topic; } } $response = new xmlrpcval(array('total_topic_num' => new xmlrpcval(count($announcementlist), 'int'), 'forum_id' => new xmlrpcval($fid), 'forum_name' => new xmlrpcval(basic_clean($foruminfo['name']), 'base64'), 'can_post' => new xmlrpcval(false, 'boolean'), 'can_upload' => new xmlrpcval(false, 'boolean'), 'topics' => new xmlrpcval($topic_list, 'array')), 'struct'); return new xmlrpcresp($response); }
$ratingadd = ''; $lpbackground = "trow1"; $colspan = "6"; } if ($ismod) { ++$colspan; } // Get Announcements $announcementlist = ''; if ($has_announcements == true) { $limit = ''; $announcements = ''; if ($mybb->settings['announcementlimit']) { $limit = "LIMIT 0, " . $mybb->settings['announcementlimit']; } $sql = build_parent_list($fid, "fid", "OR", $parentlist); $time = TIME_NOW; $query = $db->query("\n\t\tSELECT a.*, u.username\n\t\tFROM " . TABLE_PREFIX . "announcements a\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=a.uid)\n\t\tWHERE a.startdate<='{$time}' AND (a.enddate>='{$time}' OR a.enddate='0') AND ({$sql} OR fid='-1')\n\t\tORDER BY a.startdate DESC {$limit}\n\t"); // See if this announcement has been read in our announcement array $cookie = array(); if (isset($mybb->cookies['mybb']['announcements'])) { $cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements'])); } $announcementlist = ''; $bgcolor = alt_trow(true); // Reset the trow colors while ($announcement = $db->fetch_array($query)) { if ($announcement['startdate'] > $mybb->user['lastvisit'] && !$cookie[$announcement['aid']]) { $new_class = ' class="subject_new"'; $folder = "newfolder"; } else {
function xthreads_breadcrumb_hack_printthread() { global $pforumcache; //if(!is_array($pforumcache)) { // need to override because we want the 'xthreads_hidebreadcrumb' field global $forum, $db, $fid; $parlist = build_parent_list($fid, 'fid', 'OR', $forum['parentlist']); $query = $db->simple_select('forums', 'name, fid, pid, xthreads_hidebreadcrumb', $parlist, array('order_by' => 'pid, disporder')); while ($forumnav = $db->fetch_array($query)) { $pforumcache[$forumnav['pid']][$forumnav['fid']] = $forumnav; } unset($forumnav, $forum, $fid); // unsetting the global references //} if (!is_array($pforumcache[0])) { return; } // do the same as xthreads_breadcrumb_hack() but in reverse foreach ($pforumcache[0] as &$pforum) { // will only ever loop once if ($pforum['pid']) { continue; } // paranoia // firstly, skip any hidden top-level parents $prevforum =& $pforum; while ($prevforum && $prevforum['xthreads_hidebreadcrumb'] && !empty($pforumcache[$prevforum['fid']])) { $prevforum =& xthreads_get_array_first($pforumcache[$prevforum['fid']]); } if ($prevforum) { if ($prevforum['pid']) { $prevforum['pid'] = 0; $pforum = $prevforum; } $forum = null; if ($pforumcache[$prevforum['fid']]) { $forum =& xthreads_get_array_first($pforumcache[$prevforum['fid']]); } while ($forum) { if (!$forum['xthreads_hidebreadcrumb']) { // rewrite parent fid (won't actually change if there's no hidden breadcrumbs in-between) $forum['pid'] = $prevforum['fid']; $pforumcache[$forum['pid']] = array($forum['fid'] => $forum); $prevforum =& $forum; } if (!$pforumcache[$forum['fid']]) { // we always display the active breadcrumb, so set this if hidden if ($forum['xthreads_hidebreadcrumb']) { $forum['pid'] = $prevforum['fid']; $pforumcache[$forum['pid']] = array($forum['fid'] => $forum); } break; } $forum =& xthreads_get_array_first($pforumcache[$forum['fid']]); } } } }
/** * Return the permissions for a moderator in a specific forum * * @param fid The forum ID * @param uid The user ID to fetch permissions for (0 assumes current logged in user) * @param string The parent list for the forum (if blank, will be fetched) * @return array Array of moderator permissions for the specific forum */ function get_moderator_permissions($fid, $uid = "0", $parentslist = "") { global $mybb, $db; static $modpermscache; if ($uid < 1) { $uid = $mybb->user['uid']; } if ($uid == 0) { return false; } if (!isset($modpermscache[$fid][$uid])) { if (!$parentslist) { $parentslist = get_parent_list($fid); } $sql = build_parent_list($fid, "fid", "OR", $parentslist); $query = $db->simple_select("moderators", "*", "uid='{$uid}' AND {$sql}"); $perms = $db->fetch_array($query); if (!$perms) { return false; } $modpermscache[$fid][$uid] = $perms; } else { $perms = $modpermscache[$fid][$uid]; } return $perms; }