/** function get_header * Generate the HTML header portion of the page * * @param array [optional] meta variables * @option string 'title' the page title * @option string 'head_data' any HTML to be inserted in the head tag * @option array 'menu_data' the data for the counts in the menu * @option array 'game_data' the game data for my game list under the menu * @option bool 'show_menu' show the menu * @option string 'file_name' becomes the body id with _page appended * @return string HTML header for page */ function get_header($meta = null) { if (!defined('GAME_NAME')) { define('GAME_NAME', 'Game'); } $title = !empty($meta['title']) ? GAME_NAME . ' :: ' . $meta['title'] : GAME_NAME; $show_menu = isset($meta['show_menu']) ? (bool) $meta['show_menu'] : true; $show_nav_links = isset($meta['show_nav_links']) ? (bool) $meta['show_nav_links'] : true; $menu_data = isset($meta['menu_data']) ? $meta['menu_data'] : false; $head_data = isset($meta['head_data']) ? $meta['head_data'] : ''; $file_name = isset($meta['file_name']) ? $meta['file_name'] : basename($_SERVER['SCRIPT_NAME']); $file_name = substr($file_name, 0, strrpos($file_name, '.')); // make sure we have these $GLOBALS['_&_DEBUG_QUERY'] = !empty($GLOBALS['_&_DEBUG_QUERY']) ? $GLOBALS['_&_DEBUG_QUERY'] : ''; $GLOBALS['_?_DEBUG_QUERY'] = !empty($GLOBALS['_?_DEBUG_QUERY']) ? $GLOBALS['_?_DEBUG_QUERY'] : (defined('DEBUG') && DEBUG ? '?' : ''); $flash = ''; if (class_exists('Flash')) { $flash = Flash::retrieve(); } if ($show_menu) { if (!$menu_data) { $menu_data = array('my_turn' => 0, 'my_games' => 0, 'games' => 0, 'in_vites' => 0, 'out_vites' => 0, 'open_vites' => 0, 'new_msgs' => 0, 'msgs' => 0); list($menu_data['games'], ) = Game::get_count(); list($menu_data['setups'], $menu_data['my_setups']) = Setup::get_count($_SESSION['player_id']); list($menu_data['my_games'], $menu_data['my_turn']) = Game::get_my_count($_SESSION['player_id']); list($menu_data['in_vites'], $menu_data['out_vites'], $menu_data['open_vites']) = Game::get_invite_count($_SESSION['player_id']); $messages = Message::get_count($_SESSION['player_id']); $menu_data['msgs'] = (int) @$messages[0]; $menu_data['new_msgs'] = (int) @$messages[1]; $allow_blink = 'index.php' == basename($_SERVER['PHP_SELF']); } // highlight the important menu values foreach ($menu_data as $key => $value) { switch ($key) { case 'my_turn': case 'new_msgs': case 'in_vites': if (0 < $value) { $menu_data[$key] = '<span class="notice">' . $value . '</span>'; } break; default: // do nothing break; } } $game_data = isset($meta['game_data']) ? $meta['game_data'] : Game::get_list($_SESSION['player_id'], false); } // if we are admin logged in as someone else, let us know $admin_css = $admin_div = ''; if (isset($_SESSION['admin_id']) && isset($_SESSION['player_id']) && $_SESSION['player_id'] != $_SESSION['admin_id']) { $admin_css = ' <style type="text/css"> html { border: 5px solid red; } #admin_username { background: red; color: black; position: fixed; top: 0; left: 50%; z-index: 99999; width: 200px; margin-left: -100px; text-align: center; font-weight: bold; font-size: larger; padding: 3px; } </style>'; $admin_div = '<div id="admin_username">' . $GLOBALS['Player']->username . ' [ ' . $GLOBALS['Player']->id . ' ]</div>'; } $query_strings = 'var debug_query_ = "' . $GLOBALS['_&_DEBUG_QUERY'] . '"; var debug_query = "' . $GLOBALS['_?_DEBUG_QUERY'] . '";'; $debug_string = defined('DEBUG') && DEBUG ? 'var debug = true;' : 'var debug = false;'; $nav_links = ''; if ($show_nav_links && class_exists('Settings') && Settings::test()) { $nav_links = Settings::read('nav_links'); } $GAME_NAME = GAME_NAME; $html = <<<EOF <!DOCTYPE html> <html lang="en-us"> <head> \t<title>{$title}</title> \t<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> \t<script type="text/javascript"> \t\t{$debug_string} \t\t{$query_strings} \t</script> \t<script type="text/javascript" src="scripts/json.js"></script> \t<script type="text/javascript" src="scripts/jquery-1.8.0.min.js"></script> \t<script type="text/javascript" src="scripts/jquery.tablesorter.js"></script> \t<!-- fancybox --> \t<link rel="stylesheet" type="text/css" media="screen" href="scripts/jquery.fancybox/jquery.fancybox-1.3.4.css" /> \t<script type="text/javascript" src="scripts/jquery.fancybox/jquery.fancybox-1.3.4.pack.js"></script> \t<script type="text/javascript"> \t\t\$(document).ready( function( ) { \t\t\t// set fancybox defaults \t\t\t\$.fn.fancybox.defaults['overlayColor'] = '#000'; \t\t\t\$('a.help').fancybox({ \t\t\t\tautoDimensions : false, \t\t\t\twidth: 500, \t\t\t\tpadding : 10, \t\t\t\thideOnContentClick : false \t\t\t}); \t\t}); \t</script> \t<!-- hide the fancybox titles --> \t<style type="text/css"> \t\t#fancy_title { display: none !important; } \t</style> \t<link rel="stylesheet" type="text/css" media="screen" href="css/layout.css" /> \t{$head_data} \t{$flash} \t<link rel="stylesheet" type="text/css" media="screen" href="css/c_{$GLOBALS['_DEFAULT_COLOR']}.css" /> \t{$admin_css} </head> <body id="{$file_name}_page"> \t{$admin_div} \t<header> \t\t<h1><a href="index.php">{$GAME_NAME}</a></h1> \t\t<nav class="site">{$nav_links}</nav> \t</header> EOF; if ($show_menu) { $html .= ' <aside id="nav">'; if ($menu_data) { $html .= ' <nav id="menu" class="box"> <ul> <li' . get_active('index') . '><a href="index.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(Your Turn | Your Games | Total Games)"' . ($allow_blink && $menu_data['my_turn'] ? ' class="blink"' : '') . '>Games <span class="sep">(</span> ' . $menu_data['my_turn'] . ' <span class="sep">|</span> ' . $menu_data['my_games'] . ' <span class="sep">|</span> ' . $menu_data['games'] . ' <span class="sep">)</span></a></li> <li' . get_active('invite') . '><a href="invite.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(Received | Open | Sent)"' . ($allow_blink && $menu_data['in_vites'] ? ' class="blink"' : '') . '>Invitations <span class="sep">(</span> ' . $menu_data['in_vites'] . ' <span class="sep">|</span> ' . $menu_data['open_vites'] . ' <span class="sep">|</span> ' . $menu_data['out_vites'] . ' <span class="sep">)</span></a></li> <li' . get_active('messages', 'read', 'send') . '><a href="messages.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(New Messages | Total Messages)"' . ($allow_blink && $menu_data['new_msgs'] ? ' class="blink"' : '') . '>Messages <span class="sep">(</span> ' . $menu_data['new_msgs'] . ' <span class="sep">|</span> ' . $menu_data['msgs'] . ' <span class="sep">)</span></a></li> <li' . get_active('setups') . '><a href="setups.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(Yours | Total)">Setups <span class="sep">(</span> ' . $menu_data['my_setups'] . ' <span class="sep">|</span> ' . $menu_data['setups'] . ' <span class="sep">)</span></a></li> <li' . get_active('stats') . '><a href="stats.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Statistics</a></li> <li' . get_active('prefs') . '><a href="prefs.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Preferences</a></li> <li' . get_active('profile') . '><a href="profile.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Profile</a></li> '; if (true == $GLOBALS['Player']->is_admin) { $html .= '<li' . get_active('admin') . '><a href="admin.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Admin</a></li>'; } $html .= ' <li><a href="login.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Logout</a></li> </ul> </nav><!-- #menu -->'; } if ($game_data) { $html .= ' <div id="mygames_title">My Games</div> <nav id="mygames" class="box"> <ul>'; foreach ($game_data as $game) { $class = $game['my_turn'] ? 'playing' : (in_array($game['state'], array('Finished', 'Draw')) ? 'finished' : 'waiting'); $html .= ' <li class="' . $class . '"><a href="game.php?id=' . $game['game_id'] . $GLOBALS['_&_DEBUG_QUERY'] . '">' . htmlentities($game['opponent'], ENT_QUOTES, 'ISO-8859-1', false) . '</a></li>'; } $html .= ' </ul> </nav><!-- #mygames -->'; } $html .= ' </aside><!-- #nav -->'; } return $html; }
/** function get_header * Generate the HTML header portion of the page * * @param array [optional] meta variables * @option string 'title' the page title * @option string 'head_data' any HTML to be inserted in the head tag * @option array 'menu_data' the data for the counts in the menu * @option array 'game_data' the game data for my game list under the menu * @option bool 'show_menu' show the menu * @option string 'file_name' becomes the body id with _page appended * @return string HTML header for page */ function get_header($meta = null) { if (!defined('GAME_NAME')) { define('GAME_NAME', 'Game'); } $title = !empty($meta['title']) ? GAME_NAME . ' :: ' . $meta['title'] : GAME_NAME; $show_menu = isset($meta['show_menu']) ? (bool) $meta['show_menu'] : true; $show_nav_links = isset($meta['show_nav_links']) ? (bool) $meta['show_nav_links'] : true; $menu_data = isset($meta['menu_data']) ? $meta['menu_data'] : false; $head_data = isset($meta['head_data']) ? $meta['head_data'] : ''; $file_name = isset($meta['file_name']) ? $meta['file_name'] : basename($_SERVER['SCRIPT_NAME']); $file_name = substr($file_name, 0, strrpos($file_name, '.')); // make sure we have these $GLOBALS['_&_DEBUG_QUERY'] = isset($GLOBALS['_&_DEBUG_QUERY']) ? $GLOBALS['_&_DEBUG_QUERY'] : ''; $GLOBALS['_?_DEBUG_QUERY'] = isset($GLOBALS['_?_DEBUG_QUERY']) ? $GLOBALS['_?_DEBUG_QUERY'] : ''; $flash = ''; if (class_exists('Flash')) { $flash = Flash::retrieve(); } if ($show_menu) { if (!$menu_data) { $menu_data = array('my_turn' => 0, 'my_games' => 0, 'games' => 0, 'new_msgs' => 0, 'msgs' => 0, 'in_vites' => 0, 'out_vites' => 0); $list = Game::get_list($_SESSION['player_id']); $invites = Game::get_invites($_SESSION['player_id']); if (is_array($list)) { foreach ($list as $game) { ++$menu_data['games']; if ($game['in_game'] && !in_array($game['state'], array('Finished', 'Draw'))) { ++$menu_data['my_games']; } if ($game['my_turn'] && 'Placing' != $game['state']) { ++$menu_data['my_turn']; } } } if (is_array($invites)) { foreach ($invites as $game) { if ($game['invite']) { ++$menu_data['in_vites']; } else { ++$menu_data['out_vites']; } } } $messages = Message::get_count($_SESSION['player_id']); $menu_data['msgs'] = (int) @$messages[0]; $menu_data['new_msgs'] = (int) @$messages[1]; $allow_blink = 'index.php' == basename($_SERVER['PHP_SELF']); } // highlight the important menu values foreach ($menu_data as $key => $value) { switch ($key) { case 'my_turn': case 'new_msgs': case 'in_vites': if (0 < $value) { $menu_data[$key] = '<span class="notice">' . $value . '</span>'; } break; default: // do nothing break; } } $game_data = isset($meta['game_data']) ? $meta['game_data'] : Game::get_list($_SESSION['player_id'], false); } // if we are admin logged in as someone else, let us know $admin_css = $admin_div = ''; if (isset($_SESSION['admin_id']) && isset($_SESSION['player_id']) && $_SESSION['player_id'] != $_SESSION['admin_id']) { $admin_css = ' <style type="text/css"> html { border: 5px solid red; } #admin_username { background: red; color: black; position: fixed; top: 0; left: 50%; width: 200px; margin-left: -100px; text-align: center; font-weight: bold; font-size: larger; padding: 3px; } </style>'; $admin_div = '<div id="admin_username">' . $GLOBALS['Player']->username . ' [ ' . $GLOBALS['Player']->id . ' ]</div>'; } $query_strings = 'var debug_query_ = "' . $GLOBALS['_&_DEBUG_QUERY'] . '"; var debug_query = "' . $GLOBALS['_?_DEBUG_QUERY'] . '";'; $debug_string = defined('DEBUG') && DEBUG ? 'var debug = true;' : 'var debug = false;'; $nav_links = ''; if ($show_nav_links && class_exists('Settings') && Settings::test()) { $nav_links = Settings::read('nav_links'); } $GAME_NAME = GAME_NAME; $html = <<<EOF <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" \t"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> \t<title>{$title}</title> \t<meta http-equiv="Content-Language" content="en-us" /> \t<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> \t<meta http-equiv="Content-Style-Type" content="text/css" /> \t<script type="text/javascript">//<![CDATA[ \t\t{$debug_string} \t\t{$query_strings} \t/*]]>*/</script> \t<link rel="stylesheet" type="text/css" media="screen" href="css/reset.css" /> \t<link rel="stylesheet" type="text/css" media="screen" href="css/layout.css" /> \t<link rel="stylesheet" type="text/css" media="screen" href="css/datatable.css" /> \t<link rel="stylesheet" type="text/css" media="screen" href="css/forms.css" /> \t<link rel="stylesheet" type="text/css" media="screen" href="css/c_{$GLOBALS['_DEFAULT_COLOR']}.css" /> \t<script type="text/javascript" src="scripts/json.js"></script> \t<script type="text/javascript" src="scripts/jquery-1.4.2.min.js"></script> \t<script type="text/javascript" src="scripts/jquery.tablesorter.js"></script> \t<!-- fancybox --> \t<link rel="stylesheet" type="text/css" media="screen" href="scripts/jquery.fancybox/jquery.fancybox-1.3.1.css" /> \t<script type="text/javascript" src="scripts/jquery.fancybox/jquery.fancybox-1.3.1.pack.js"></script> \t<script type="text/javascript">//<![CDATA[ \t\t\$(document).ready( function( ) { \t\t\t\$('a.help').fancybox({ \t\t\t\tautoDimensions : false, \t\t\t\twidth: 500, \t\t\t\theight: 400, \t\t\t\tpadding : 10, \t\t\t\toverlayOpacity : 0.7, \t\t\t\thideOnContentClick : false \t\t\t}); \t\t}); \t/*]]>*/</script> \t<!-- hide the fancybox titles --> \t<style type="text/css">/*<![CDATA[*/ \t\t#fancy_title { display: none !important; } \t/*]]>*/</style> \t{$head_data} \t{$flash} \t{$admin_css} </head> <body id="{$file_name}_page"> \t{$admin_div} \t<div id="links">{$nav_links}</div> \t<h1><a href="index.php">{$GAME_NAME}</a></h1> \t<div id="wrapper"> EOF; if ($show_menu) { $html .= ' <div id="menuholder">'; if ($menu_data) { $html .= ' <div id="menu"> <ul> <li' . get_active('index') . '><a href="index.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(Your Turn | Your Games | Total Games)"' . ($allow_blink && $menu_data['my_turn'] ? ' class="blink"' : '') . '>Games (' . $menu_data['my_turn'] . '|' . $menu_data['my_games'] . '|' . $menu_data['games'] . ')</a></li> <li' . get_active('invite') . '><a href="invite.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(Invites Recieved | Invites Sent)"' . ($allow_blink && $menu_data['in_vites'] ? ' class="blink"' : '') . '>Invitations (' . $menu_data['in_vites'] . '|' . $menu_data['out_vites'] . ')</a></li> <li' . get_active('messages') . '><a href="messages.php' . $GLOBALS['_?_DEBUG_QUERY'] . '" title="(New Messages | Total Messages)"' . ($allow_blink && $menu_data['new_msgs'] ? ' class="blink"' : '') . '>Messages (' . $menu_data['new_msgs'] . '|' . $menu_data['msgs'] . ')</a></li> <li' . get_active('stats') . '><a href="stats.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Statistics</a></li> <li' . get_active('prefs') . '><a href="prefs.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Preferences</a></li> <li' . get_active('profile') . '><a href="profile.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Profile</a></li> '; if (true == $GLOBALS['Player']->is_admin) { $html .= '<li' . get_active('admin') . '><a href="admin.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Admin</a></li>'; } $html .= ' <li><a href="login.php' . $GLOBALS['_?_DEBUG_QUERY'] . '">Logout</a></li> </ul> </div>'; } if ($game_data) { $html .= ' <div id="mygames_title"><strong>My Games</strong></div> <div id="mygames"> <ul>'; foreach ($game_data as $game) { $class = $game['my_turn'] ? 'playing' : 'waiting'; $html .= ' <li class="' . $class . '"><a href="game.php?id=' . $game['game_id'] . $GLOBALS['_&_DEBUG_QUERY'] . '">' . htmlentities($game['opponent'], ENT_QUOTES, 'ISO-8859-1', false) . '</a></li>'; } $html .= ' </ul> </div>'; } $html .= ' </div>'; } return $html; }