![]() ![]() |
weathermap |
Subversion Repositories: |
Compare with Previous - Blame - Download
<?phpfunction show_editor_startpage(){global $mapdir, $WEATHERMAP_VERSION;$matches=0;print '<html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" media="screen" href="editor.css" /> <script src="editor.js" type="text/javascript"></script><title>PHP Weathermap Editor ' . $WEATHERMAP_VERSION. '</title></head><body>';print '<div id="nojs" class="alert"><b>WARNING</b> - ';print 'Sorry, it\'s partly laziness on my part, but you really need JavaScript enabled and DOM support in your browser to use this editor. It\'s a visual tool, so accessibility is already an issue, if it is, and from a security viewpoint, you\'re already running my ';print 'code on your <i>server</i> so either you trust it all having read it, or you\'re already screwed.<P>';print 'If it\'s a major issue for you, please feel free to complain. It\'s mainly laziness as I said, and there could be a fallback (not so smooth) mode for non-javascript browsers if it was seen to be worthwhile (I would take a bit of convincing, because I don\'t see a benefit, personally).</div>';print '<div id="withjs">';print '<div id="dlgStart" class="dlgProperties" ><div class="dlgTitlebar">Welcome</div><div class="dlgBody">';print 'Welcome to the PHP Weathermap '.$WEATHERMAP_VERSION.' editor.<p>';print '<div style="border: 3px dashed red; background: #055; padding: 5px; font-size: 97%;"><b>NOTE:</b> This editor is not finished! There are many features of ';print 'Weathermap that you will be missing out on if you choose to use the editor only.';print 'These include: curves, node offsets, font definitions, colour changing, per-node/per-link settings and image uploading. You CAN use the editor without damaging these features if you added them by hand, however.</div><p>';print 'Do you want to:<p>';print 'Create A New Map:<br>';print '<form method="GET">';print 'Named: <input type="text" name="mapname" size="20">';print '<input name="action" type="hidden" value="newmap">';print '<input type="submit" value="Create">';print '</form>';print 'OR<br />';print 'Open An Existing Map (looking in ' . $mapdir . '):<ul class="filelist">';$titles = array();if (is_dir($mapdir)){$n=0;$dh=opendir($mapdir);if ($dh){while ($file=readdir($dh)){$realfile=$mapdir . DIRECTORY_SEPARATOR . $file;// if(is_file($realfile) && ( preg_match('/\.conf$/',$file) ))if (is_file($realfile) ){$title='(no title)';$fd=fopen($realfile, "r");while (!feof($fd)){$buffer=fgets($fd, 4096);if (preg_match("/^\s*TITLE\s+(.*)/i", $buffer, $matches)) { $title=$matches[1]; }}fclose ($fd);$titles[$file] = $title;# print "<li><a href=\"?mapname=$file\">$file</a> - <span class=\"comment\">$title</span></li>\n";$n++;}}closedir ($dh);}else { print "<LI>Can't Open mapdir to read</LI>"; }ksort($titles);foreach ($titles as $file=>$title){$title = $titles[$file];print "<li><a href=\"?mapname=$file\">$file</a> - <span class=\"comment\">$title</span></li>\n";}if ($n == 0) { print "<LI>No files</LI>"; }}else { print "<LI>NO DIRECTORY named $mapdir</LI>"; }print "</UL>";print "</div>"; // dlgbodyprint '<div class="dlgHelp" id="start_help">PHP Weathermap ' . $WEATHERMAP_VERSION. ' Copyright © 2005-2007 Howard Jones - howie@thingy.com<br />The current version should always be <a href="http://www.network-weathermap.com/">available here</a>, along with other related software. PHP Weathermap is licensed under the GNU Public License, version 2. See COPYING for details. This distribution also includes the Overlib library by Erik Bosrup.</div>';print "</div>"; // dlgStartprint "</div>"; // withjsprint "</body></html>";}function snap($coord, $gridsnap = 0){if ($gridsnap == 0) { return ($coord); }else { return ($coord - ($coord % $gridsnap)); }}// Following function is based on code taken from here:// http://uk2.php.net/manual/en/security.globals.php//// It extracts a set of named variables into the global namespace,// validating them as they go. Returns True or False depending on if// validation fails. If it does fail, then nothing is added to the// global namespace.//function extract_with_validation($array, $paramarray, $prefix = "", $debug = FALSE){$all_present=TRUE;$candidates=array();if ($debug)print '<pre>';if ($debug)print_r ($paramarray);if ($debug)print_r ($array);foreach ($paramarray as $var){$varname=$var[0];$vartype=$var[1];$varreqd=$var[2];if ($varreqd == 'req' && !array_key_exists($varname, $array)) { $all_present=FALSE; }if (array_key_exists($varname, $array)){$varvalue=$array[$varname];if ($debug)print "Checking $varname...";$waspresent=$all_present;switch ($vartype){case 'int':if (!preg_match('/^\-*\d+$/', $varvalue)) { $all_present=FALSE; }break;case 'float':if (!preg_match('/^\d+\.\d+$/', $varvalue)) { $all_present=FALSE; }break;case 'yesno':if (!preg_match('/^(y|n|yes|no)$/i', $varvalue)) { $all_present=FALSE; }break;case 'sqldate':if (!preg_match('/^\d\d\d\d\-\d\d\-\d\d$/i', $varvalue)) { $all_present=FALSE; }break;case 'any':// we don't care at allbreak;case 'ip':if (!preg_match('/^((\d|[1-9]\d|2[0-4]\d|25[0-5]|1\d\d)(?:\.(\d|[1-9]\d|2[0-4]\d|25[0-5]|1\d\d)){3})$/',$varvalue)) { $all_present=FALSE; }break;case 'alpha':if (!preg_match('/^[A-Za-z]+$/', $varvalue)) { $all_present=FALSE; }break;case 'alphanum':if (!preg_match('/^[A-Za-z0-9]+$/', $varvalue)) { $all_present=FALSE; }break;case 'bandwidth':if (!preg_match('/^\d+\.?\d*[KMGT]*$/i', $varvalue)) { $all_present=FALSE; }break;default:// an unknown type counts as an error, really$all_present=FALSE;break;}if ($debug && $waspresent != $all_present) { print "Failed on $varname."; }if ($all_present){$candidates["{$prefix}{$varname}"]=$varvalue;$candidates["{$prefix}{$varname}_slashes"]=addslashes($varvalue);$candidates["{$prefix}{$varname}_url"]=urlencode($varvalue);$candidates["{$prefix}{$varname}_html"]=htmlspecialchars($varvalue);$candidates["{$prefix}{$varname}_url_html"]=htmlspecialchars(urlencode($varvalue));}}else{if ($debug)print "Skipping $varname\n";}}if ($debug)print_r ($candidates);if ($all_present){foreach ($candidates as $key => $value) { $GLOBALS[$key]=$value; }}if ($debug)print '</pre>';return ($all_present);}function get_imagelist($imagedir){$imagelist = array();if (is_dir($imagedir)){$n=0;$dh=opendir($imagedir);if ($dh){while ($file=readdir($dh)){$realfile=$imagedir . DIRECTORY_SEPARATOR . $file;$uri = $imagedir . "/" . $file;if(is_file($realfile) && ( preg_match('/\.(gif|jpg|png)$/i',$file) )){$imagelist[] = $uri;$n++;}}closedir ($dh);}}return ($imagelist);}// vim:ts=4:sw=4:?>