/** * Parse any get params that might be hidden in the URL */ function parse_params() { // --[ mod_rewrite code ]-- if (!isset($_GET[ROSTER_PAGE])) { $uri = request_uri(); $page = substr($uri, strlen(ROSTER_PATH)); list($page) = explode('.', $page); // Build the Roster page var $pages = array(); foreach (explode('/', $page) as $get) { if (strpos($get, '=') === false) { $pages[] = $get; } else { parse_str($get, $get); if (!get_magic_quotes_gpc()) { $get = escape_array($get); } $_GET = array_overlay($get, $_GET); } } // Needed in case someone specified www.example.com/roster/index.php. // That format is the only one that works in IIS if ($pages == array('index')) { $pages = array(); } $_GET[ROSTER_PAGE] = implode('-', $pages); } }
/** * Adds locale strings to global $wordings array * * @param string $localefile | Full path to locale file * @param string $locale | Locale to add to (IE: enUS) */ function add_locale_file($localefile, $locale) { if (file_exists($localefile)) { include $localefile; } else { $enUSfile = str_replace($locale . '.php', 'enUS.php', $localefile); if (file_exists($enUSfile)) { include $enUSfile; } else { // Do nothing for now. Nothing wrong with an addon not having any of its own localization //die_quietly('Could not include locale file [' . $localefile . ']','Locale Inclusion Error',__FILE__,__LINE__); } } if (isset($lang)) { if (isset($this->wordings[$locale])) { $this->wordings[$locale] = array_overlay($lang, $this->wordings[$locale]); } else { $this->wordings[$locale] = $lang; } unset($lang); } }
function array_overlay($a1, $a2) { foreach ($a1 as $k => $v) { if (!array_key_exists($k, $a2)) { continue; } if (is_array($v) && is_array($a2[$k])) { $a1[$k] = array_overlay($v, $a2[$k]); } else { $a1[$k] = $a2[$k]; } } return $a1; }
if (!file_exists($local_file)) { // Get the $directories and fill the array $directories if ($subdirectories) { GrabAllLocalDirectories('.'); } // Get the $files / versioning info for each $directories and fill the array $files foreach ($directories as $directory => $filecount) { // Grab all local $files and store the information into the array $files GrabLocalVersions($directory); } file_writer($local_file, json_encode($files), $mode = 'wb'); } else { $files = json_decode(file_get_contents($local_file), true); } // now we build our full file array $files = array_overlay($remote, $files); foreach ($files as $directory => $filedata) { $directories[$directory] = count($filedata); } /** * Grab all directories and subdirectories for directory $dir and shove them into the global array $directories * * @param string $dir */ function GrabAllLocalDirectories($dir) { global $directories; if ($handle = @opendir($dir)) { while ($filename = readdir($handle)) { $directory = $dir . '/' . $filename; if (is_dir($directory) && CheckDirectory($filename)) {
/** * A better array_merge() * Merges multi-dimensional arrays * * @param array $skel * @param array $arr * @return array */ function array_overlay($skel, &$arr) { foreach ($skel as $key => $val) { if (!isset($arr[$key])) { $arr[$key] = $val; } elseif (is_array($val)) { $arr[$key] = array_overlay($val, $arr[$key]); } else { // UnComment if you want to know if you are overwritting a variable //trigger_error('Key already set: ' . $key . '->' . $arr[$key] . '<br /> New value tried: ' . $skel[$key]); } } return $arr; }