function smarty_function_sortheader($args, &$smarty) { global $cms; static $baseurl = ""; static $prefix = ""; static $sort = ""; static $sortvar = "sort"; static $order = ""; static $ordervar = "order"; static $anchor = ""; static $active_class = "active"; static $th_class = ""; static $th_attrib = ""; $orig = $args; $args += array('reset' => 0, 'baseurl' => $baseurl, 'anchor' => $anchor, 'sort' => $sort, 'sortvar' => $sortvar, 'prefix' => $prefix, 'order' => $order, 'ordervar' => $ordervar, 'th_class' => $th_class, 'th_attrib' => $th_attrib, 'label' => '', 'title' => null, 'active' => false); if ($args['reset']) { if (!empty($args['sortvar'])) { $sortvar = $args['sortvar']; } if (!empty($args['ordervar'])) { $ordervar = $args['ordervar']; } $sort = $args['sort']; $order = $args['order']; $prefix = $args['prefix']; $anchor = $args['anchor']; $baseurl = $args['baseurl']; return ''; } $altorder = $args['order'] == 'desc' ? 'asc' : 'desc'; $neworder = $args['sort'] == $sort ? $altorder : $args['order']; $label = $args['label']; $image = ""; // mark this header as active if specified or if the order has changed if (($args['active'] or $neworder == $altorder) and $orig['sort']) { $args['th_class'] = trim($args['th_class'] . " " . $active_class); // $image = sprintf(" <img src='%s' />", catfile($cms->theme->url(), sprintf("img/sort_arrow_%s.gif", $args['order']))); } $url = array(); $url['_base'] = $args['baseurl'] ? $args['baseurl'] : null; $url['_anchor'] = $args['anchor']; if ($order and $neworder) { $url[$args['prefix'] . $args['ordervar']] = $neworder; } if ($sort and $args['sort']) { $url[$args['prefix'] . $args['sortvar']] = $args['sort']; } // if ($url['sort'] or $url['order']) { return sprintf("<th%s%s><p><a href='%s'><span class='%s'>%s%s</span></a></p></th>", $args['th_class'] ? " class='" . $args['th_class'] . "'" : "", $args['th_attrib'] ? " " . $args['th_attrib'] : "", ps_url_wrapper($url), $args['order'], $label, $image); /* } else { return sprintf("<th%s%s><p><span class='%s'>%s%s</span></p></th>", $args['th_class'] ? " class='" . $args['th_class'] . "'" : "", $args['th_attrib'] ? " " . $args['th_attrib'] : "", $args['order'], $label, $image ); } */ }
if (!in_array($order, array('asc', 'desc'))) { $order = 'asc'; } $sort = 'eventname'; $_order = array('start' => $start, 'limit' => $limit, 'order' => $order, 'sort' => $sort); $where = ''; if ($filter) { $f = $ps->db->escape($filter, false); $where = "WHERE (gametype LIKE '%{$f}' OR modtype LIKE '%{$f}%' OR eventname LIKE '%{$f}%') "; } $list = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_config_plrbonuses} {$where}" . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_config_plrbonuses, '*', $where ? substr($where, 6) : null); // remove 'WHERE' from str $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit, 'filter' => $filter)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Bonuses', ps_url_wrapper(array('_base' => 'bonuses.php'))); // massage the bonus list a bit so we don't have to do it in the smarty template $bonuses = array(); foreach ($list as $b) { foreach (array('enactor', 'enactor_team', 'victim', 'victim_team') as $e) { if ($b[$e]) { $b[$e . '_color'] = $b[$e] > 0 ? '#00cc00' : '#cc0000'; } else { $b[$e . '_color'] = '#000000'; } } $bonuses[] = $b; } // assign variables to the theme $cms->theme->assign(array('bonuses' => $bonuses, 'pager' => $pager)); // display the output
$message = $cms->message('success', array( 'message_title' => $cms->trans("Update Successfull"), 'message' => $cms->trans("Log Source has been updated")) )); */ } } else { // fill in defaults if (!$test) { if ($id) { $form->input($clantag); } } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Clan Tags', ps_url_wrapper('clantags.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'clantag' => $clantag, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/clantags.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', ''); function val_regex($var, $value, &$form)
* PsychoStats is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PsychoStats is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PsychoStats. If not, see <http://www.gnu.org/licenses/>. * * Version: $Id: manage.php 389 2008-04-18 15:04:10Z lifo $ */ define("PSYCHOSTATS_PAGE", true); define("PSYCHOSTATS_ADMIN_PAGE", true); include "../includes/common.php"; include "./common.php"; // for now, redirect to the logsources gotopage('logsources.php'); $cms->crumb('Manage', ps_url_wrapper($_SERVER['REQUEST_URI'])); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'))); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); //$cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
// weapons // re-arrange the weapons list so the uniqueid of each weapon is a key. // weapon uniqueid's should never have any weird characters so this should be safe. $ary = array(); foreach ($player['weapons'] as $w) { $ary[$w['uniqueid']] = $w; } print_xml($ary); } $rolepager = ""; if ($ps->use_roles) { $rolepager = pagination(array('baseurl' => ps_url_wrapper(array('id' => $id, 'rlimit' => $rlimit, 'rsort' => $rsort, 'rorder' => $rorder)), 'total' => $player['totalroles'], 'start' => $rstart, 'startvar' => 'rstart', 'perpage' => $rlimit, 'urltail' => 'roles', 'separator' => ' ', 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"), 'pergroup' => 5)); } $victimpager = pagination(array('baseurl' => ps_url_wrapper(array('id' => $id, 'vlimit' => $vlimit, 'vsort' => $vsort, 'vorder' => $vorder)), 'total' => $player['totalvictims'], 'start' => $vstart, 'startvar' => 'vstart', 'perpage' => $vlimit, 'urltail' => 'victims', 'separator' => ' ', 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"), 'pergroup' => 5)); $mappager = pagination(array('baseurl' => ps_url_wrapper(array('id' => $id, 'mlimit' => $mlimit, 'msort' => $msort, 'morder' => $morder)), 'total' => $player['totalmaps'], 'start' => $mstart, 'startvar' => 'mstart', 'perpage' => $mlimit, 'urltail' => 'maps', 'separator' => ' ', 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); $sessionpager = pagination(array('baseurl' => ps_url_wrapper(array('id' => $id, 'slimit' => $slimit, 'ssort' => $ssort, 'sorder' => $sorder)), 'total' => $player['totalsessions'], 'start' => $sstart, 'startvar' => 'sstart', 'perpage' => $slimit, 'urltail' => 'sessions', 'separator' => ' ', 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // build a dynamic table that plugins can use to add custom columns of data $wtable = $cms->new_table($player['weapons']); $wtable->if_no_data($cms->trans("No Weapons Found")); $wtable->attr('class', 'ps-table ps-weapon-table'); $wtable->sort_baseurl(array('id' => $id, '_anchor' => 'weapons')); $wtable->start_and_sort($wstart, $wsort, $worder, 'w'); $wtable->columns(array('uniqueid' => array('label' => $cms->trans("Weapon"), 'callback' => 'ps_table_weapon_link'), 'kills' => array('label' => $cms->trans("Kills"), 'modifier' => 'commify'), 'deaths' => array('label' => $cms->trans("Deaths"), 'modifier' => 'commify'), 'headshotkills' => array('label' => $cms->trans("HS"), 'modifier' => 'commify', 'tooltip' => $cms->trans("Headshot Kills")), 'headshotkillspct' => array('label' => $cms->trans("HS%"), 'modifier' => '%s%%', 'tooltip' => $cms->trans("Headshot Kills Percentage")), 'accuracy' => array('label' => $cms->trans("Acc"), 'modifier' => '%s%%', 'tooltip' => $cms->trans("Accuracy")), 'shotsperkill' => array('label' => $cms->trans("S:K"), 'tooltip' => $cms->trans("Shots Per Kill")), 'damage' => array('label' => $cms->trans("Dmg"), 'callback' => 'dmg', 'tooltip' => $cms->trans("Damage")))); $wtable->column_attr('uniqueid', 'class', 'first'); $ps->player_weapons_table_mod($wtable); $cms->filter('player_weapon_table_object', $wtable); // build player session table $stable = $cms->new_table($player['sessions']); $stable->if_no_data($cms->trans("No Sessions Found")); $stable->attr('class', 'ps-table ps-session-table'); $stable->sort_baseurl(array('id' => $id, '_anchor' => 'sessions'));
} if (!in_array($sort, array('name', 'skill', 'username', 'allowrank'))) { $sort = 'name'; } $_order = array('start' => $start, 'limit' => $limit, 'order' => $order, 'sort' => $sort, 'filter' => $filter, 'allowall' => (bool) $all); // delete selected players if (is_array($del) and count($del)) { $total_deleted = 0; foreach ($del as $id) { if (is_numeric($id)) { if ($ps->delete_player($id)) { $total_deleted++; } } } $message = $cms->message('success', array('message_title' => $cms->trans("Players Deleted!"), 'message' => $cms->trans("%d players were deleted successfully", $total_deleted))); } $players = $ps->get_basic_player_list($_order); $total = $ps->get_total_players($_order); $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit, 'filter' => $filter, 'all' => $all ? 1 : 0)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Players', ps_url_wrapper(array('_base' => $PHP_SELF))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'players' => $players, 'pager' => $pager)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/players.js'); $cms->theme->add_js('js/message.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
$f = $ps->db->escape($filter, false); $where = "WHERE (gametype LIKE '%{$f}' OR modtype LIKE '%{$f}%' OR eventname LIKE '%{$f}%') "; } $list = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_config_events} {$where}" . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_config_events, '*', $where ? substr($where, 6) : null); $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit, 'filter' => $filter)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // massage the array a bit so we don't have to do the logic in the theme template $events = array(); $first = $list ? $list[0]['id'] : array(); $last = $list ? $list[count($list) - 1]['id'] : array(); foreach ($list as $ev) { if ($ev['id'] == $first) { $ev['down'] = 1; } elseif ($ev['id'] == $last) { $ev['up'] = 1; } else { $ev['down'] = 1; $ev['up'] = 1; } $events[] = $ev; } $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Events', ps_url_wrapper(array('_base' => 'events.php'))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'events' => $events, 'pager' => $pager)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/events.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
// fill in defaults if (!$test) { if ($id) { $form->input($log); if (empty($log['password'])) { $form->input['blank'] = 1; } } else { // new logsources should default to being enabled $form->input['enabled'] = 1; $form->input['defaultmap'] = 'unknown'; } } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Log Sources', ps_url_wrapper('logsources.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('protocols' => $protocols, 'errors' => $form->errors(), 'log' => $log, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->theme->add_js('js/logsources.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', ''); function val_type($var, $value, &$form)
// ignore dot and hidden files if (!preg_match("/{$match}/", $file)) { continue; } // ignore files not matching the search_ext $full = catfile($dir, $file); $icons[] = array('filename' => $file, 'fullfile' => $full, 'size' => @filesize($full), 'is_writable' => is_writable($full) || is_writable(dirname($full)), 'basename' => basename($file), 'path' => $dir); } closedir($dh); } } if (!is_writable($dir)) { $msg_not_writable = $cms->message('not_writable', array('message_title' => $cms->trans("Permissions Error!"), 'message' => $cms->trans("The icons directory is not writable.") . ' ' . $cms->trans("You can not upload any new icons until the permissions are corrected."))); } $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Icon Avatars', ps_url_wrapper(array('_base' => 'icons.php'))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'icons' => $icons, 'message' => $message, 'icons_url' => $ps->conf['theme']['icons_url'], 'form' => $form ? $form->values() : array(), 'errors' => $form ? $form->errors() : array())); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_css('css/icons.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/icons.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', ''); function validate_img($file) { global $form, $cms, $ps; $c = $ps->conf['theme']['icons']; $ext = $ps->conf['theme']['images']['search_ext'];
// auto-redirect to the exact player matched in the search // if a single player was found. if ($search and $results['abs_total'] == 1 and is_numeric($results['results'])) { gotopage(ps_url_wrapper(array('_amp' => '&', '_base' => 'player.php', 'id' => $results['results']))); } // fetch stats, etc... $players = $ps->get_player_list(array('results' => $results, 'sort' => $sort, 'order' => $order, 'start' => $start, 'limit' => $limit, 'joinclaninfo' => false)); $baseurl = array('sort' => $sort, 'order' => $order, 'limit' => $limit); if ($search) { $baseurl['search'] = $search; } else { if ($q != '') { $baseurl['q'] = $q; } } $pager = pagination(array('baseurl' => ps_url_wrapper($baseurl), 'total' => $total['ranked'], 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // build a dynamic table that plugins can use to add custom columns of data $table = $cms->new_table($players); $table->if_no_data($cms->trans("No Players Found")); $table->attr('class', 'ps-table ps-player-table'); $table->sort_baseurl($search ? array('search' => $search) : array('q' => $q)); $table->start_and_sort($start, $sort, $order); $table->columns(array('rank' => array('label' => $cms->trans("Rank"), 'callback' => 'dash_if_empty'), 'prevrank' => array('nolabel' => true, 'callback' => 'rankchange'), 'name' => array('label' => $cms->trans("Player"), 'callback' => 'ps_table_plr_link'), 'kills' => array('label' => $cms->trans("Kills"), 'modifier' => 'commify'), 'deaths' => array('label' => $cms->trans("Deaths"), 'modifier' => 'commify'), 'killsperdeath' => array('label' => $cms->trans("K:D"), 'tooltip' => $cms->trans("Kills Per Death")), 'headshotkills' => array('label' => $cms->trans("HS"), 'modifier' => 'commify', 'tooltip' => $cms->trans("Headshot Kills")), 'headshotkillspct' => array('label' => $cms->trans("HS%"), 'modifier' => '%s%%', 'tooltip' => $cms->trans("Headshot Kills Percentage")), 'onlinetime' => array('label' => $cms->trans("Online"), 'modifier' => 'compacttime'), 'activity' => array('label' => $cms->trans("Activity"), 'modifier' => 'activity_bar'), 'skill' => array('label' => $cms->trans("Skill"), 'callback' => 'plr_skill'))); $table->column_attr('name', 'class', 'left'); $table->column_attr('skill', 'class', 'right'); //$table->column_attr('rank', 'class', 'left'); $table->header_attr('rank', 'colspan', '2'); $ps->index_table_mod($table); $cms->filter('players_table_object', $table); // assign variables to the theme $cms->theme->assign(array('q' => $q, 'search' => $search, 'results' => $results, 'search_blurb' => $cms->trans('Search criteria "<em>%s</em>" matched %d ranked players out of %d total', ps_escape_html($q), $total['ranked'], $total['absolute']), 'players' => $players, 'players_table' => $table->render(), 'total' => $total, 'pager' => $pager, 'language_list' => $cms->theme->get_language_list(), 'theme_list' => $cms->theme->get_theme_list(), 'language' => $cms->theme->language));
function pagination($args = array()) { $args += array('baseurl' => '', 'total' => 0, 'perpage' => 100, 'start' => 0, 'startvar' => 'start', 'pergroup' => 3, 'force_prev_next' => false, 'urltail' => '', 'prefix' => '', 'next' => 'Next', 'prev' => 'Previous', 'separator' => ', ', 'middle_separator' => ' ... '); $total = ceil($args['total'] / $args['perpage']); // calculate total pages needed for dataset $current = floor($args['start'] / $args['perpage']) + 1; // what page we're currently on if ($total <= 1) { return ""; } // There's no pages to output, so we output nothing if ($args['pergroup'] < 3) { $args['pergroup'] = 3; } // pergroup can not be lower than 3 if ($args['pergroup'] % 2 == 0) { $args['pergroup']++; } // pergroup is EVEN, so we add 1 to make it ODD $maxlinks = $args['pergroup'] * 3 + 1; $halfrange = floor($args['pergroup'] / 2); $minrange = $current - $halfrange; // gives us our current min/max ranges based on $current page $maxrange = $current + $halfrange; $output = ""; if ($total > $maxlinks) { // create first group of links ... $list = array(); for ($i = 1; $i <= $args['pergroup']; $i++) { if ($i == $current) { $list[] = "<span class='pager-current'>{$i}</span>"; } else { $list[] = sprintf("<a href='%s' class='pager-goto'>%d</a>", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => ($i - 1) * $args['perpage'], '_anchor' => $args['urltail'])), $i); } } $output .= implode($args['separator'], $list); // create middle group of links ... if ($maxrange > $args['pergroup']) { $output .= $minrange > $args['pergroup'] + 1 ? $args['middle_separator'] : $args['separator']; $min = $minrange > $args['pergroup'] + 1 ? $minrange : $args['pergroup'] + 1; $max = $maxrange < $total - $args['pergroup'] ? $maxrange : $total - $args['pergroup']; $list = array(); for ($i = $min; $i <= $max; $i++) { if ($i == $current) { $list[] = "<span class='pager-current'>{$i}</span>"; } else { $list[] = sprintf("<a href='%s' class='pager-goto'>%d</a>", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => ($i - 1) * $args['perpage'], '_anchor' => $args['urltail'])), $i); } } $output .= implode($args['separator'], $list); $output .= $maxrange < $total - $args['pergroup'] ? $args['middle_separator'] : $args['separator']; } else { $output .= $args['middle_separator']; } // create last group of links ... $list = array(); for ($i = $total - $args['pergroup'] + 1; $i <= $total; $i++) { if ($i == $current) { $list[] = "<span class='pager-current'>{$i}</span>"; } else { $list[] = sprintf("<a href='%s' class='pager-goto'>%d</a>", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => ($i - 1) * $args['perpage'], '_anchor' => $args['urltail'])), $i); } } $output .= implode($args['separator'], $list); } else { $list = array(); for ($i = 1; $i <= $total; $i++) { if ($i == $current) { $list[] = "<span class='pager-current'>{$i}</span>"; } else { $list[] = sprintf("<a href='%s' class='pager-goto'>%d</a>", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => ($i - 1) * $args['perpage'], '_anchor' => $args['urltail'])), $i); } } $output .= implode($args['separator'], $list); } // create 'Prev/Next' links if ($args['force_prev_next'] and $total or $current > 1) { if ($current > 1) { $output = sprintf("<a href='%s' class='pager-prev'>%s</a> ", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => ($current - 2) * $args['perpage'], '_anchor' => $args['urltail'])), $args['prev']) . $output; } else { $output = "<span class='pager-prev'>" . $args['prev'] . "</span> " . $output; } } if ($args['force_prev_next'] and $total or $current < $total) { if ($current < $total) { $output .= sprintf(" <a href='%s' class='pager-next'>%s</a> ", ps_url_wrapper(array('_base' => $args['baseurl'], $args['startvar'] => $current * $args['perpage'], '_anchor' => $args['urltail'])), $args['next']); } else { $output .= " <span class='pager-next'>" . $args['next'] . "</span>"; } } if ($args['prefix'] != '' and !empty($output)) { $output = $args['prefix'] . $output; } return "<span class='pager'>{$output}</span>"; }
exit; } } $list = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_config_servers} " . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_config_servers); $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // massage the array a bit so we don't have to do the logic in the theme template $servers = array(); $first = $list ? $list[0]['id'] : array(); $last = $list ? $list[count($list) - 1]['id'] : array(); foreach ($list as $log) { if ($log['id'] == $first) { $log['down'] = 1; } elseif ($log['id'] == $last) { $log['up'] = 1; } else { $log['down'] = 1; $log['up'] = 1; } $servers[] = $log; } $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Servers', ps_url_wrapper(array('_base' => 'servers.php'))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'servers' => $servers, 'pager' => $pager)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/servers.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
unset($submit); } $list = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_config_clantags} " . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_config_clantags); $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // massage the tags array a bit so we don't have to do the logic in the theme template $tags = array(); $first = $list ? $list[0]['id'] : array(); $last = $list ? $list[count($list) - 1]['id'] : array(); foreach ($list as $tag) { if ($tag['id'] == $first) { $tag['down'] = 1; } elseif ($tag['id'] == $last) { $tag['up'] = 1; } else { $tag['down'] = 1; $tag['up'] = 1; } $tags[] = $tag; } $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Clan Tags', ps_url_wrapper(array('_base' => 'clantags.php'))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'clantags' => $tags, 'pager' => $pager)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
$res = 'failure'; $msg = $cms->trans("Error writting to database: %s", $ps->db->errstr); } } } if ($msg) { $message = $cms->message($res, array('message_title' => $title, 'message' => $msg)); } } // load the themes $list = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_config_themes} " . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_config_themes); $themes = array(); foreach ($list as $t) { if ($t['parent']) { $themes[$t['parent']]['children'][] = $t; } else { $themes[$t['name']] = $t; $themes[$t['name']]['children'] = array(); } } $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); $cms->crumb("Themes", ps_url_wrapper()); // assign variables to the theme $cms->theme->assign(array('url' => $url, 'allow' => $allow, 'newtheme' => $newtheme->theme_xml(), 'theme_dirs' => $newtheme->theme_dirs(), 'themes' => $themes, 'total_themes' => $total, 'submit' => $submit, 'confirm' => $confirm, 'page' => basename(__FILE__, '.php'))); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/themes.js'); $cms->theme->add_js('js/message.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
$input['weaponid'] = $ps->db->next_id($ps->t_weapon, 'weaponid'); $ok = $ps->db->insert($ps->t_weapon, $input); } if (!$ok) { $form->error('fatal', "Error updating database: " . $ps->db->errstr); } else { previouspage(ps_url_wrapper('weapons.php')); } } } else { // fill in defaults if ($id) { $form->input($weapon); } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Weapons', ps_url_wrapper('weapons.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'weapon' => $weapon, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/weapons.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
function header_sort() { $row = new PsychoRow($this->type); // $row->attr($this->header_attr); // wrong foreach ($this->columns as $key => $cell) { if (is_array($cell) and $cell['nolabel']) { continue; } $hdr_attr = $this->header_attr[$key]; $label = is_array($cell) ? $cell['label'] : $cell; if ($cell['tooltip']) { $label = sprintf("<acronym title='%s'>%s</acronym>", $cell['tooltip'], $label); } if ($key and !$cell['nosort']) { $url = array_merge($this->sort_baseurl, array($this->prefix . 'sort' => $key, $this->prefix . 'order' => $this->order())); if ($key == $this->sort()) { // alternate the order $url[$this->prefix . 'order'] = $this->order() != 'asc' ? 'asc' : 'desc'; $hdr_attr['class'] = trim($hdr_attr['class'] . ' ' . $this->sort_active_class); } $str = sprintf($this->header_sort_format, $label, ps_url_wrapper($url), $this->order()); } else { $str = sprintf($this->header_format, $label); } $row->th($str, $hdr_attr); // $row->th($str); } return $row->render(); }
include "../includes/common.php"; include "./common.php"; $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Weapons', ps_url_wrapper('weapons.php')); $validfields = array('ref', 'start', 'limit', 'order', 'sort'); $cms->theme->assign_request_vars($validfields, true); if (!is_numeric($start) or $start < 0) { $start = 0; } if (!is_numeric($limit) or $limit < 0) { $limit = 50; } if (!in_array($order, array('asc', 'desc'))) { $order = 'asc'; } if (!in_array($sort, array('uniqueid', 'name', 'class'))) { $sort = 'uniqueid'; } $_order = array('start' => $start, 'limit' => $limit, 'order' => $order, 'sort' => $sort); $weapons = $ps->db->fetch_rows(1, "SELECT * FROM {$ps->t_weapon} " . $ps->getsortorder($_order)); $total = $ps->db->count($ps->t_weapon); $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'pager' => $pager, 'weapons' => $weapons)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
$logs = $ps->db->fetch_rows(1, $cmd); // download the visible logs as text? if ($view == 'text') { $csv = ''; $keys = array('timestamp', 'severity', 'username', 'msg'); foreach ($logs as $l) { $csv .= date($ps->conf['theme']['format']['datetime'], $l['timestamp']) . "\t"; $csv .= $l['severity'] . "\t"; $csv .= sprintf("%s\t", $l['username'] != '' ? $l['username'] : '******'); $csv .= $l['msg']; $csv .= chr(13) . chr(10); } while (@ob_end_clean()) { } header("Pragma: no-cache"); header("Content-Type: text/plain"); header("Content-Length: " . strlen($csv)); header("Content-Disposition: attachment; filename=\"errlog.txt\""); print $csv; exit; } $pager = pagination(array('baseurl' => ps_url_wrapper(array('sort' => $sort, 'order' => $order, 'limit' => $limit, 'filter' => $filter)), 'total' => $total, 'start' => $start, 'perpage' => $limit, 'pergroup' => 5, 'separator' => ' ', 'force_prev_next' => true, 'next' => $cms->trans("Next"), 'prev' => $cms->trans("Previous"))); $cms->crumb('Manage', ps_url_wrapper(array('_base' => 'manage.php'))); $cms->crumb('Error Logs', ps_url_wrapper(array('_base' => $PHP_SELF))); // assign variables to the theme $cms->theme->assign(array('page' => basename(__FILE__, '.php'), 'logs' => $logs, 'total' => $total, 'pager' => $pager)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
function prev_str($prev) { global $cms, $v, $p; $str = ""; if ($prev['month']) { $str .= sprintf("<a href='%s' class='prev'>%s</a>", ps_url_wrapper(array('v' => 'month', 'd' => $prev['month'], 'p' => $p)), date("M", ymd2time($prev['month']))); } if ($prev['week']) { $str .= sprintf("<a href='%s' class='prev'>%s</a>", ps_url_wrapper(array('v' => 'week', 'd' => $prev['week'], 'p' => $p)), $cms->trans("Week") . date(" W; M d", ymd2time($prev['week']))); } if ($prev['day']) { list($y1, $m1, $d1) = explode('-', date("Y-m-d")); list($y2, $m2, $d2) = explode('-', $prev['day']); if ("{$y2}{$m2}" == "{$y1}{$m1}" and $d2 + 0 == $d1 - 1) { $str .= sprintf("<a href='%s' class='prev'>%s</a>", ps_url_wrapper(array('v' => 'day', 'd' => $prev['day'], 'p' => $p)), $cms->trans("Yesterday")); } else { $str .= sprintf("<a href='%s' class='prev'>%s</a>", ps_url_wrapper(array('v' => 'day', 'd' => $prev['day'], 'p' => $p)), date("M d", ymd2time($prev['day']))); } } return "<div class='prev'>{$str}</div>"; }
* * Version: $Id: common.php 539 2008-08-15 19:24:26Z lifo $ */ if (!defined("PSYCHOSTATS_ADMIN_PAGE")) { die("Unauthorized access to " . basename(__FILE__)); } // ADMIN pages need to setup the theme a little differently than the others $opts = array('theme_default' => 'acp', 'theme_opt' => 'admin_theme', 'force_theme' => true, 'in_db' => false, 'template_dir' => dirname(__FILE__) . '/themes', 'theme_url' => 'themes', 'compile_id' => 'admin'); $opts = array_merge($ps->conf['theme'], $opts); // At all costs the admin page should never break due to file permissions. If // the compile directory is not writable we fallback to not saving compiled // themes to disk which is slower. But shouldn't be a big problem since only a // single person is usually accessing the admin page. if ($opts['fetch_compile'] and !is_writable($opts['compile_dir'])) { $opts['fetch_compile'] = false; } $cms->init_theme('acp', $opts); $ps->theme_setup($cms->theme); $cms->crumb('Stats', dirname(dirname(SAFE_PHP_SELF)) . '/'); $cms->crumb('Admin', 'index.php'); $file = basename(PHP_SELF, '.php'); if (!$cms->user->admin_logged_in()) { if (!defined("PSYCHOSTATS_LOGIN_PAGE")) { gotopage(ps_url_wrapper(array('_base' => dirname($_SERVER['SCRIPT_NAME']) . '/login.php', '_ref' => $_SERVER['REQUEST_URI']))); } } // Set flag if the install directory (go script) is still readable by the // webserver. Admins need to remove the install directory after installation. if (is_readable(catfile(dirname(dirname(__FILE__)), 'install', 'go.php'))) { $cms->theme->assign(array('install_dir_insecure' => true, 'install_dir' => catfile(dirname(dirname(__FILE__)), 'install'))); }
/** Called from the dynamic table class when creating a table that has a role <a> link. @param: $role contains stats for the current role. But mainly the $id is only needed. */ function ps_table_role_link($name, $role) { global $ps; $url = ps_url_wrapper(array('_base' => 'role.php', 'id' => $role['roleid'])); $img = $ps->roleimg($role); return "<a class='role' href='{$url}'>{$img}</a>"; }
function js_sources($theme = null) { if (!is_array($this->js_sources)) { return ''; } if (empty($theme)) { $theme = $this->theme(); } $out = ''; $list = array(); $script = $this->styles->val('theme.script'); if ($script and (!is_array($script) or !$script[0])) { $script = array($script); } // collect the various scripts defined in styles.xml if ($script) { foreach ($script as $s) { $js = array(); if (is_array($s)) { // ignore block if there's no src if ($s['@attributes']['src']) { $js['src'] = $s['@attributes']['src']; } elseif ($s['@attributes']['@content']) { $js['script'] = $s['@attributes']['@content']; } } elseif ($s) { // block is stright script, no src $js['script'] = $s; } if ($js) { $list[] = $js; } } } $list = array_merge($list, $this->js_sources); // output any external or embedded scripts $files = array(); foreach ($list as $js) { if (substr($js['src'], 0, 4) == 'http') { // ignore fully qualified sources and output them as // their own <script> tag, regardless. $out .= sprintf("<script src='%s' type='text/javascript'></script>\n", $js['src']); } elseif ($js['script']) { // embedded JS $out .= "<script type='text/javascript'>" . $js['script'] . "</script>\n"; } else { // javascript file $res = $this->template_found($js['src'], false, false); if ($res and $res['resource_name']) { $files[] = $res['resource_name']; } } } // combine and output all local scripts into a single request if ($files) { if ($this->js_compress) { // combine all sources into a single request if ($files) { $src = implode(',', $files); $out .= sprintf("<script src='%s' type='text/javascript'></script>\n", ps_url_wrapper(array('_base' => 'script.php', 'src' => $src))); } } else { foreach ($files as $f) { $out .= sprintf("<script src='%s' type='text/javascript'></script>\n", $this->theme_url . '/' . $f); } } } return $out; }
print $ps->db->lastcmd; } if (!$ok) { $form->error('fatal', "Error updating database: " . $ps->db->errstr); } else { previouspage(ps_url_wrapper('overlays.php')); } } } else { // fill in defaults if ($id) { $form->input($overlay); } else { // default game:mod to currently configured values $form->input(array('gametype' => $ps->conf['main']['gametype'], 'modtype' => $ps->conf['main']['modtype'])); } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Overlays', ps_url_wrapper('overlays.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'overlay' => $overlay, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
previouspage(ps_url_wrapper('awards.php')); } } } else { // fill in defaults if ($id) { $form->input($award); } else { // new awards should default to being enabled $form->input['enabled'] = 1; $form->input['limit'] = 10; $form->input['order'] = 'desc'; $form->input['format'] = '%s'; $form->input['type'] = 'player'; } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Awards', ps_url_wrapper('awards.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'award' => $award, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); $cms->theme->add_js('js/forms.js'); $cms->theme->add_js('js/awards.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
} if ($ok) { previouspage(ps_url_wrapper(array('_amp' => '&', '_base' => 'conf.php', 'ct' => $input['conftype'], 's' => $input['section']))); } } } else { if ($id) { foreach ($conf as $key => $v) { $form->input[$key] = $v; } } else { $form->input['conftype'] = $ct; $form->input['section'] = strtolower($s) == 'general' ? '' : $s; } } $cms->crumb("Config", ps_url_wrapper(array('_base' => 'conf.php', 'ct' => $ct))); $cms->crumb("Edit Option"); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('input_types' => $input_types, 'errors' => $form->errors(), 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); //$cms->theme->add_css('css/2column.css'); $cms->theme->add_css('css/forms.css'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', ''); // validate: input type function val_type($var, $value, &$form) {
// commit changes and stop transaction previouspage(ps_url_wrapper('aliases.php')); } /* $message = $cms->message('success', array( 'message_title' => $cms->trans("Update Successfull"), 'message' => $cms->trans("Aliases have been updated")) )); */ } } else { // fill in defaults if ($id) { $form->input($alias); } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Player Aliases', ps_url_wrapper('aliases.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'alias' => $alias, 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
'message_title' => $cms->trans("Update Successfull"), 'message' => $cms->trans("Log Source has been updated")) )); */ } } else { // fill in defaults if (!$test) { if ($id) { $form->input($server); } else { // new servers should default to being enabled $form->input['enabled'] = 1; } } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Servers', ps_url_wrapper('servers.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'server' => $server, 'querytypes' => pq_query_types(), 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');
$config_layout['general'] = $list[$ct]; // any remaining keys are options w/o a section } else { unset($config_layout['general']); } unset($list); //print "<pre>"; print_r($config_layout); print "</pre>"; // make sure the section is valid if (empty($s)) { $s = 'general'; } if (!is_array($config_layout[$s])) { $s = $sections[$ct][0]; // default to first section found } $cms->crumb("Config", ps_url_wrapper(array('_base' => $PHP_SELF, 'ct' => $ct))); $cms->crumb($ct); $form = $cms->new_form(); $form->default_modifier('trim'); // setup form fields. each field is actually the ID of the variable so I don't have to worry about // naming conflicts between sections (eg: maxdays and errlogs.maxdays) foreach ($config_layout as $sec => $list) { if (!is_array($list)) { continue; } foreach ($list as $o) { $form->field($o['id'], $o['verifycodes']); } } $section_errors = array(); // NOW we can process the form if it was submitted
function smarty_function_url($args, &$smarty) { return ps_url_wrapper($args); }
} if (!$ok) { $form->error('fatal', "Error updating database: " . $ps->db->errstr); } else { previouspage('users.php'); } } } else { // fill in defaults if ($id) { $form->input($u->to_form_input()); } else { $form->set('accesslevel', $u->acl_user()); $form->set('confirmed', 1); } } $cms->crumb('Manage', ps_url_wrapper('manage.php')); $cms->crumb('Users', ps_url_wrapper('users.php')); $cms->crumb('Edit'); // save a new form key in the users session cookie // this will also be put into a 'hidden' field in the form if ($ps->conf['main']['security']['csrf_protection']) { $cms->session->key($form->key()); } $cms->theme->assign(array('errors' => $form->errors(), 'u' => $u->to_form_input(), 'accesslevels' => $u->accesslevels(), 'form' => $form->values(), 'form_key' => $ps->conf['main']['security']['csrf_protection'] ? $cms->session->key() : '')); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/forms.css'); //$cms->theme->add_js('js/jquery.interface.js'); $cms->theme->add_js('js/forms.js'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer', '');