diff options
Diffstat (limited to 'modules/googlemap/admin_places.php')
| -rw-r--r-- | modules/googlemap/admin_places.php | 659 |
1 files changed, 659 insertions, 0 deletions
diff --git a/modules/googlemap/admin_places.php b/modules/googlemap/admin_places.php new file mode 100644 index 0000000000..aba9ca42f3 --- /dev/null +++ b/modules/googlemap/admin_places.php @@ -0,0 +1,659 @@ +<?php +/** + * Online UI for editing config.php site configuration variables + * + * webtrees: Web based Family History software + * Copyright (C) 2010 webtrees development team. + * + * Derived from PhpGedView + * Copyright (C) 2002 to 2009 PGV Development Team. All rights reserved. + * + * Modifications Copyright (c) 2010 Greg Roach + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * This Page Is Valid XHTML 1.0 Transitional! > 17 September 2005 + * + * @package webtrees + * @subpackage GoogleMap + * @see config.php + * $Id$ + */ + +if (!defined('WT_WEBTREES')) { + header('HTTP/1.0 403 Forbidden'); + exit; +} + +require WT_ROOT.'modules/googlemap/defaultconfig.php'; + +global $iso3166; +$action=safe_REQUEST($_REQUEST, 'action'); +if (isset($_REQUEST['parent'])) $parent=$_REQUEST['parent']; +if (isset($_REQUEST['display'])) $display=$_REQUEST['display']; +if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode']; +if (isset($_REQUEST['deleteRecord'])) $deleteRecord=$_REQUEST['deleteRecord']; + +if (!isset($parent)) $parent=0; +if (!isset($display)) $display=""; + +// Take a place id and find its place in the hierarchy +// Input: place ID +// Output: ordered array of id=>name values, starting with the Top Level +// e.g. array(0=>"Top Level", 16=>"England", 19=>"London", 217=>"Westminster"); +// NB This function exists in both places.php and places_edit.php +function place_id_to_hierarchy($id) { + $statement= + WT_DB::prepare("SELECT pl_parent_id, pl_place FROM `##placelocation` WHERE pl_id=?"); + $arr=array(); + while ($id!=0) { + $row=$statement->execute(array($id))->fetchOneRow(); + $arr=array($id=>$row->pl_place)+$arr; + $id=$row->pl_parent_id; + } + return $arr; +} + +// NB This function exists in both places.php and places_edit.php +function getHighestIndex() { + return (int)WT_DB::prepare("SELECT MAX(pl_id) FROM `##placelocation`")->fetchOne(); +} + +function getHighestLevel() { + return (int)WT_DB::prepare("SELECT MAX(pl_level) FROM `##placelocation`")->fetchOne(); +} + +/** + * Find all of the places in the hierarchy + */ +function get_place_list_loc($parent_id, $display='') { + if ($display=="inactive") { + $rows= + WT_DB::prepare("SELECT pl_id, pl_place, pl_lati, pl_long, pl_zoom, pl_icon FROM `##placelocation` WHERE pl_parent_id=? ORDER BY pl_place") + ->execute(array($parent_id)) + ->fetchAll(); + } else { + $rows= + WT_DB::prepare( + "SELECT DISTINCT pl_id, pl_place, pl_lati, pl_long, pl_zoom, pl_icon". + " FROM `##placelocation`". + " INNER JOIN `##places` ON `##placelocation`.pl_place=`##places`.p_place AND `##placelocation`.pl_level=`##places`.p_level". + " WHERE pl_parent_id=? ORDER BY pl_place" + ) + ->execute(array($parent_id)) + ->fetchAll(); + } + + $placelist=array(); + foreach ($rows as $row) { + $placelist[]=array("place_id"=>$row->pl_id, "place"=>$row->pl_place, "lati"=>$row->pl_lati, "long"=>$row->pl_long, "zoom"=>$row->pl_zoom, "icon"=>$row->pl_icon); + } + uasort($placelist, "placesort"); + return $placelist; +} + +function outputLevel($parent_id) { + $tmp = place_id_to_hierarchy($parent_id); + $maxLevel = getHighestLevel(); + if ($maxLevel>8) $maxLevel = 8; + $prefix = implode(';', $tmp); + if ($prefix!='') + $prefix.=';'; + $suffix=str_repeat(';', $maxLevel-count($tmp)); + $level=count($tmp); + + $rows= + WT_DB::prepare("SELECT pl_id, pl_place, pl_long, pl_lati, pl_zoom, pl_icon FROM `##placelocation` WHERE pl_parent_id=? ORDER BY pl_place") + ->execute(array($parent_id)) + ->fetchAll(); + + foreach ($rows as $row) { + echo "{$level};{$prefix}{$row->pl_place}{$suffix};{$row->pl_long};{$row->pl_lati};{$row->pl_zoom};{$row->pl_icon}\r\n"; + if ($level < $maxLevel) + outputLevel($row->pl_id); + } +} + +/** + * recursively find all of the csv files on the server + * + * @param string $path + */ +function findFiles($path) { + global $placefiles; + if (file_exists($path)) { + $dir = dir($path); + while (false !== ($entry = $dir->read())) { + if ($entry!="." && $entry!=".." && $entry!=".svn") { + if (is_dir($path."/".$entry)) { + findFiles($path."/".$entry); + } elseif (strstr($entry, ".csv")!==false) { + $placefiles[] = preg_replace("~modules/googlemap/extra~", "", $path)."/".$entry; + } + } + } + $dir->close(); + } +} + +if (!WT_USER_IS_ADMIN) { + echo "<span class=\"subheaders\">".i18n::translate('Edit geographic place locations')."</span><br /><br />"; + echo "<table class=\"facts_table\">\n"; + echo "<tr><td colspan=\"2\" class=\"facts_value\">", i18n::translate('Page only for Administrators'); + echo "</td></tr></table>\n"; + echo "<br /><br /><br />\n"; + print_footer(); + exit; +} + +global $GOOGLEMAP_MAX_ZOOM; + +if ($action=="ExportFile" && WT_USER_IS_ADMIN) { + $tmp = place_id_to_hierarchy($parent); + $maxLevel = getHighestLevel(); + if ($maxLevel>8) $maxLevel=8; + $tmp[0] = "places"; + $outputFileName=preg_replace('/[:;\/\\\(\)\{\}\[\] $]/', '_', implode('-', $tmp)).'.csv'; + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename="'.$outputFileName.'"'); + echo "\"".i18n::translate('Level')."\";\"".i18n::translate('Country')."\";"; + if ($maxLevel>0) echo '"', i18n::translate('State'), '";'; + if ($maxLevel>1) echo '"', i18n::translate('County'), '";'; + if ($maxLevel>2) echo '"', i18n::translate('City'), '";'; + if ($maxLevel>3) echo '"', i18n::translate('Place'), '";'; + if ($maxLevel>4) echo '"', i18n::translate('Place'), '";'; + if ($maxLevel>5) echo '"', i18n::translate('Place'), '";'; + if ($maxLevel>6) echo '"', i18n::translate('Place'), '";'; + if ($maxLevel>7) echo '"', i18n::translate('Place'), '";'; + echo '"', i18n::translate('Longitude'), '";"', i18n::translate('Latitude'), '";'; + echo '"', i18n::translate('Zoom factor'), '";"', i18n::translate('Icon'), WT_EOL; + outputLevel($parent); + exit; +} + +print_header(i18n::translate('Edit geographic place locations')); + +if ($action=="ImportGedcom") { + $placelist=array(); + $j=0; + if ($mode=="all") { + $statement= + WT_DB::prepare("SELECT i_gedcom FROM `##individuals` UNION ALL SELECT f_gedcom FROM `##families`") + ->execute(); + } else { + $statement= + WT_DB::prepare("SELECT i_gedcom FROM `##individuals` WHERE i_file=? UNION ALL SELECT f_gedcom FROM `##families` WHERE f_file=?") + ->execute(array(WT_GED_ID, WT_GED_ID)); + } + while ($gedrec=$statement->fetchColumn()) { + $i = 1; + $placerec = get_sub_record(2, "2 PLAC", $gedrec, $i); + while (!empty($placerec)) { + if (preg_match("/2 PLAC (.+)/", $placerec, $match)) { + $placelist[$j] = array(); + $placelist[$j]["place"] = trim($match[1]); + if (preg_match("/4 LATI (.*)/", $placerec, $match)) { + $placelist[$j]["lati"] = trim($match[1]); + if (($placelist[$j]["lati"][0] != "N") && ($placelist[$j]["lati"][0] != "S")) { + if ($placelist[$j]["lati"] < 0) { + $placelist[$j]["lati"][0] = "S"; + } else { + $placelist[$j]["lati"] = "N".$placelist[$j]["lati"]; + } + } + } + else $placelist[$j]["lati"] = "0"; + if (preg_match("/4 LONG (.*)/", $placerec, $match)) { + $placelist[$j]["long"] = trim($match[1]); + if (($placelist[$j]["long"][0] != "E") && ($placelist[$j]["long"][0] != "W")) { + if ($placelist[$j]["long"] < 0) { + $placelist[$j]["long"][0] = "W"; + } else { + $placelist[$j]["long"] = "E".$placelist[$j]["long"]; + } + } + } + else $placelist[$j]["long"] = "0"; + $j = $j + 1; + } + $i = $i + 1; + $placerec = get_sub_record(2, "2 PLAC", $gedrec, $i); + } + } + asort($placelist); + + $prevPlace = ""; + $prevLati = ""; + $prevLong = ""; + $placelistUniq = array(); + $j = 0; + foreach ($placelist as $k=>$place) { + if ($place["place"] != $prevPlace) { + $placelistUniq[$j] = array(); + $placelistUniq[$j]["place"] = $place["place"]; + $placelistUniq[$j]["lati"] = $place["lati"]; + $placelistUniq[$j]["long"] = $place["long"]; + $j = $j + 1; + } else if (($place["place"] == $prevPlace) && (($place["lati"] != $prevLati) || ($place["long"] != $prevLong))) { + if (($placelistUniq[$j-1]["lati"] == 0) || ($placelistUniq[$j-1]["long"] == 0)) { + $placelistUniq[$j-1]["lati"] = $place["lati"]; + $placelistUniq[$j-1]["long"] = $place["long"]; + } else if (($place["lati"] != "0") || ($place["long"] != "0")) { + echo "Verscil: vorige waarde = $prevPlace, $prevLati, $prevLong, huidige = ", $place["place"], ", ", $place["lati"], ", ", $place["long"], "<br />"; + } + } + $prevPlace = $place["place"]; + $prevLati = $place["lati"]; + $prevLong = $place["long"]; + } + + $highestIndex = getHighestIndex(); + + $default_zoom_level=array(4, 7, 10, 12); + foreach ($placelistUniq as $k=>$place) { + $parent=preg_split('/ *, */', $place["place"]); + $parent=array_reverse($parent); + $parent_id=0; + for ($i=0; $i<count($parent); $i++) { + if (!isset($default_zoom_level[$i])) + $default_zoom_level[$i]=$default_zoom_level[$i-1]; + $escparent=$parent[$i]; + if ($escparent == "") { + $escparent = "Unknown"; + } + $row= + WT_DB::prepare("SELECT pl_id, pl_long, pl_lati, pl_zoom FROM `##placelocation` WHERE pl_level=? AND pl_parent_id=? AND pl_place LIKE ?") + ->execute(array($i, $parent_id, $escparent)) + ->fetchOneRow(); + if ($i < count($parent)-1) { + // Create higher-level places, if necessary + if (empty($row)) { + $highestIndex++; + WT_DB::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_zoom) VALUES (?, ?, ?, ?, ?)") + ->execute(array($highestIndex, $parent_id, $i, $escparent, $default_zoom_level[$i])); + echo htmlspecialchars($escparent), '<br />'; + $parent_id=$highestIndex; + } else { + $parent_id=$row->pl_id; + } + } else { + // Create lowest-level place, if necessary + if (empty($row->pl_id)) { + $highestIndex++; + WT_DB::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_long, pl_lati, pl_zoom) VALUES (?, ?, ?, ?, ?, ?, ?)") + ->execute(array($highestIndex, $parent_id, $i, $escparent, $place["long"], $place["lati"], $default_zoom_level[$i])); + echo htmlspecialchars($escparent), '<br />'; + } else { + if (empty($row->pl_long) && empty($row->pl_lati) && $place['lati']!="0" && $place['long']!="0") { + WT_DB::prepare("UPDATE `##placelocation` SET pl_lati=?, pl_long=? WHERE pl_id=?") + ->execute(array($place["lati"], $place["long"], $row->pl_id)); + echo htmlspecialchars($escparent), '<br />'; + } + } + } + } + } + $parent=0; +} + +if ($action=="ImportFile") { + $placefiles = array(); + findFiles("modules/googlemap/extra"); + sort($placefiles); +?> +<form method="post" enctype="multipart/form-data" id="importfile" name="importfile" action="module.php?mod=googlemap&mod_action=places"> + <input type="hidden" name="action" value="ImportFile2" /> + <table class="facts_table"> + <tr> + <td class="descriptionbox"><?php echo i18n::translate('File containing places (CSV)'), help_link('PLIF_FILENAME','googlemap'); ?></td> + <td class="optionbox"><input type="file" name="placesfile" size="50"></td> + </tr> + <?php if (count($placefiles)>0) { ?> + <tr> + <td class="descriptionbox"><?php echo i18n::translate('Server file containing places (CSV)'), help_link('PLIF_LOCALFILE','googlemap'); ?></td> + <td class="optionbox"> + <select name="localfile"> + <option></option> + <?php foreach ($placefiles as $p=>$placefile) { ?> + <option value="<?php echo htmlspecialchars($placefile); ?>"><?php + if (substr($placefile, 0, 1)=="/") echo substr($placefile, 1); + else echo $placefile; ?></option> + <?php } ?> + </select> + </td> + </tr> + <?php } ?> + <tr> + <td class="descriptionbox"><?php echo i18n::translate('Clear all place-locations before import?'), help_link('PLIF_CLEAN','googlemap'); ?></td> + <td class="optionbox"><input type="checkbox" name="cleardatabase"></td> + </tr> + <tr> + <td class="descriptionbox"><?php echo i18n::translate('Update existing places only?'), help_link('PLIF_UPDATE','googlemap'); ?></td> + <td class="optionbox"><input type="checkbox" name="updateonly"></td> + </tr> + <tr> + <td class="descriptionbox"><?php echo i18n::translate('Overwrite location-data with data from file?'), help_link('PLIF_OVERWRITE','googlemap'); ?></td> + <td class="optionbox"><input type="checkbox" name="overwritedata"></td> + </tr> + </table> + <input id="savebutton" type="submit" value="<?php echo i18n::translate('Continue Adding'); ?>" /><br /> +</form> +<?php + print_footer(); + exit; +} + +if ($action=="ImportFile2") { + $country_names=array(); + foreach ($iso3166 as $key=>$value) { + $country_names[$key]=i18n::translate($key); + } + if (isset($_POST["cleardatabase"])) { + WT_DB::exec("DELETE FROM `##placelocation` WHERE 1=1"); + } + if (!empty($_FILES["placesfile"]["tmp_name"])) { + $lines = file($_FILES["placesfile"]["tmp_name"]); + } elseif (!empty($_REQUEST['localfile'])) { + $lines = file("modules/googlemap/extra".$_REQUEST['localfile']); + } + // Strip BYTE-ORDER-MARK, if present + if (!empty($lines[0]) && substr($lines[0], 0, 3)==WT_UTF8_BOM) $lines[0]=substr($lines[0], 3); + asort($lines); + $highestIndex = getHighestIndex(); + $placelist = array(); + $j = 0; + $maxLevel = 0; + foreach ($lines as $p => $placerec) { + $fieldrec = explode(';', $placerec); + if ($fieldrec[0] > $maxLevel) $maxLevel = $fieldrec[0]; + } + $fields = count($fieldrec); + foreach ($lines as $p => $placerec) { + $fieldrec = explode(';', $placerec); + if (is_numeric($fieldrec[0]) && $fieldrec[0]<=$maxLevel) { + $placelist[$j] = array(); + $placelist[$j]["place"] = ""; + for ($ii=$fields-4; $ii>1; $ii--) { + if ($fieldrec[0] > $ii-2) $placelist[$j]["place"] .= $fieldrec[$ii].","; + } + foreach ($country_names as $countrycode => $countryname) { + if ($countrycode == strtoupper($fieldrec[1])) { + $fieldrec[1] = $countryname; + break; + } + } + $placelist[$j]["place"] .= $fieldrec[1]; + $placelist[$j]["long"] = $fieldrec[$fields-4]; + $placelist[$j]["lati"] = $fieldrec[$fields-3]; + $placelist[$j]["zoom"] = $fieldrec[$fields-2]; + $placelist[$j]["icon"] = trim($fieldrec[$fields-1]); + $j = $j + 1; + } + } + + $prevPlace = ""; + $prevLati = ""; + $prevLong = ""; + $placelistUniq = array(); + $j = 0; + foreach ($placelist as $k=>$place) { + if ($place["place"] != $prevPlace) { + $placelistUniq[$j] = array(); + $placelistUniq[$j]["place"] = $place["place"]; + $placelistUniq[$j]["lati"] = $place["lati"]; + $placelistUniq[$j]["long"] = $place["long"]; + $placelistUniq[$j]["zoom"] = $place["zoom"]; + $placelistUniq[$j]["icon"] = $place["icon"]; + $j = $j + 1; + } else if (($place["place"] == $prevPlace) && (($place["lati"] != $prevLati) || ($place["long"] != $prevLong))) { + if (($placelistUniq[$j-1]["lati"] == 0) || ($placelistUniq[$j-1]["long"] == 0)) { + $placelistUniq[$j-1]["lati"] = $place["lati"]; + $placelistUniq[$j-1]["long"] = $place["long"]; + $placelistUniq[$j-1]["zoom"] = $place["zoom"]; + $placelistUniq[$j-1]["icon"] = $place["icon"]; + } else if (($place["lati"] != "0") || ($place["long"] != "0")) { + echo "Differenc: last value = $prevPlace, $prevLati, $prevLong, current = ", $place["place"], ", ", $place["lati"], ", ", $place["long"], "<br />"; + } + } + $prevPlace = $place["place"]; + $prevLati = $place["lati"]; + $prevLong = $place["long"]; + } + + $default_zoom_level = array(); + $default_zoom_level[0] = 4; + $default_zoom_level[1] = 7; + $default_zoom_level[2] = 10; + $default_zoom_level[3] = 12; + foreach ($placelistUniq as $k=>$place) { + $parent = explode(',', $place["place"]); + $parent = array_reverse($parent); + $parent_id=0; + for ($i=0; $i<count($parent); $i++) { + $escparent=$parent[$i]; + if ($escparent == "") { + $escparent = "Unknown"; + } + $row= + WT_DB::prepare("SELECT pl_id, pl_long, pl_lati, pl_zoom, pl_icon FROM `##placelocation` WHERE pl_level=? AND pl_parent_id=? AND pl_place LIKE ? ORDER BY pl_place") + ->execute(array($i, $parent_id, $escparent)) + ->fetchOneRow(); + if (empty($row)) { // this name does not yet exist: create entry + if (!isset($_POST["updateonly"])) { + $highestIndex = $highestIndex + 1; + if (($i+1) == count($parent)) { + $zoomlevel = $place["zoom"]; + } elseif (isset($default_zoom_level[$i])) { + $zoomlevel = $default_zoom_level[$i]; + } else { + $zoomlevel = $GOOGLEMAP_MAX_ZOOM; + } + if (($place["lati"] == "0") || ($place["long"] == "0") || (($i+1) < count($parent))) { + WT_DB::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_zoom, pl_icon) VALUES (?, ?, ?, ?, ?, ?)") + ->execute(array($highestIndex, $parent_id, $i, $escparent, $zoomlevel, $place["icon"])); + } else { + //delete leading zero + $pl_lati = str_replace(array('N', 'S', ','), array('', '-', '.') , $place["lati"]); + $pl_long = str_replace(array('E', 'W', ','), array('', '-', '.') , $place["long"]); + if ($pl_lati >= 0) { + $place["lati"] = "N".abs($pl_lati); + } elseif ($pl_lati < 0) { + $place["lati"] = "S".abs($pl_lati); + } + if ($pl_long >= 0) { + $place["long"] = "E".abs($pl_long); + } elseif ($pl_long < 0) { + $place["long"] = "W".abs($pl_long); + } + WT_DB::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_long, pl_lati, pl_zoom, pl_icon) VALUES (?, ?, ?, ?, ?, ?, ?, ?)") + ->execute(array($highestIndex, $parent_id, $i, $escparent, $place["long"], $place["lati"], $zoomlevel, $place["icon"])); + } + $parent_id = $highestIndex; + } + } else { + $parent_id = $row->pl_id; + if ((isset($_POST["overwritedata"])) && ($i+1 == count($parent))) { + WT_DB::prepare("UPDATE `##placelocation` SET pl_lati=?, pl_long=?, pl_zoom=?, pl_icon=? WHERE pl_id=?") + ->execute(array($place["lati"], $place["long"], $place["zoom"], $place["icon"], $parent_id)); + } else { + if ((($row->pl_long == "0") || ($row->pl_long == null)) && (($row->pl_lati == "0") || ($row->pl_lati == null))) { + WT_DB::prepare("UPDATE `##placelocation` SET pl_lati=?, pl_long=? WHERE pl_id=?") + ->execute(array($place["lati"], $place["long"], $parent_id)); + } + if (empty($row->pl_icon) && !empty($place['icon'])) { + WT_DB::prepare("UPDATE `##placelocation` SET pl_icon=? WHERE pl_id=?") + ->execute(array($place["icon"], $parent_id)); + } + } + } + } + } + $parent=0; +} + +if ($action=="DeleteRecord") { + $exists= + WT_DB::prepare("SELECT 1 FROM `##placelocation` WHERE pl_parent_id=?") + ->execute(array($deleteRecord)) + ->fetchOne(); + + if (!$exists) { + WT_DB::prepare("DELETE FROM `##placelocation` WHERE pl_id=?") + ->execute(array($deleteRecord)); + } else { + echo "<table class=\"facts_table\"><tr><td class=\"optionbox\">".i18n::translate('Location not removed: this location contains sub-locations')."</td></tr></table>"; + } +} + +?> +<script language="JavaScript" type="text/javascript"> +<!-- +function showchanges() { + window.location = '<?php echo basename($_SERVER["REQUEST_URI"]); ?>&show_changes=yes'; +} + +function edit_place_location(placeid) { + window.open('module.php?mod=googlemap&mod_action=places_edit&action=update&placeid='+placeid+"&"+sessionname+"="+sessionid, '_blank', 'top=50, left=50, width=700, height=550, resizable=1, scrollbars=1'); + return false; +} + +function add_place_location(placeid) { + window.open('module.php?mod=googlemap&mod_action=places_edit&action=add&placeid='+placeid+"&"+sessionname+"="+sessionid, '_blank', 'top=50, left=50, width=700, height=550, resizable=1, scrollbars=1'); + return false; +} + +function delete_place(placeid) { + var answer=confirm("<?php echo i18n::translate('Remove this location?'); ?>"); + if (answer == true) { + window.location = "<?php echo $_SERVER["REQUEST_URI"]; ?>&action=DeleteRecord&deleteRecord=" + placeid; + } +} + +//--> +</script> +<?php + +echo "<span class=\"subheaders\">".i18n::translate('Edit geographic place locations').": </span>"; +$where_am_i=place_id_to_hierarchy($parent); +foreach (array_reverse($where_am_i, true) as $id=>$place) { + if ($id==$parent) { + if ($place != "Unknown") { + echo PrintReady($place); + } else { + echo i18n::translate('unknown'); + } + } else { + echo "<a href=\"module.php?mod=googlemap&mod_action=admin_places&parent={$id}&display={$display}\">"; + if ($place != "Unknown") { + echo PrintReady($place), "</a>"; + } else { + echo i18n::translate('unknown'), "</a>"; + } + } + echo " - "; +} +echo "<a href=\"module.php?mod=googlemap&mod_action=admin_places&parent=0&display=$display\">".i18n::translate('Top Level')."</a>"; +echo "<br /><br /><form name=\"active\" method=\"post\" action=\"module.php?mod=googlemap&mod_action=admin_places&parent=$parent&display=$display\">"; +echo "\n<table><tr><td class=\"optionbox\">", i18n::translate('Click here to show inactive places'), ": <input type=\"checkbox\" name=\"display\" value=\"inactive\""; +if ($display == 'inactive') echo " checked=\"checked\""; +echo ">\n<input type=\"submit\" value=\"", i18n::translate('View'), "\" >"; +echo help_link('PLE_ACTIVE','googlemap'); +echo "</td></tr></table>"; +echo "</form>"; + +$placelist=get_place_list_loc($parent, $display); + +echo "<table class=\"facts_table\"><tr>"; +echo "<th class=\"descriptionbox\">", translate_fact('PLAC'), "</th>"; +echo "<th class=\"descriptionbox\">", translate_fact('LATI'), "</th>"; +echo "<th class=\"descriptionbox\">", translate_fact('LONG'), "</th>"; +echo "<th class=\"descriptionbox\">".i18n::translate('Zoom factor')."</th>"; +echo "<th class=\"descriptionbox\">".i18n::translate('Icon')."</th>"; +echo "<th class=\"descriptionbox\" colspan=\"2\">"; +echo i18n::translate('Edit geographic location'), help_link('PL_EDIT_LOCATION','googlemap'), "</th></tr>"; +if (count($placelist) == 0) + echo "<tr><td colspan=\"7\" class=\"facts_value\">", i18n::translate('No places found'), "</td></tr>"; +foreach ($placelist as $place) { + echo "<tr><td class=\"optionbox\"><a href=\"module.php?mod=googlemap&mod_action=admin_places&parent={$place['place_id']}&display={$display}\">"; + if ($place["place"] != "Unknown") + echo PrintReady($place["place"]), "</a></td>"; + else + echo i18n::translate('unknown'), "</a></td>"; + echo "<td class=\"optionbox\">{$place['lati']}</td>"; + echo "<td class=\"optionbox\">{$place['long']}</td>"; + echo "<td class=\"optionbox\">{$place['zoom']}</td>"; + echo "<td class=\"optionbox\">"; + if (($place["icon"] == NULL) || ($place["icon"] == "")) { + if (($place['lati'] == NULL) || ($place['long'] == NULL) || (($place['lati'] == "0") && ($place['long'] == "0"))) { + echo " "; + echo "<img src=\"http://labs.google.com/ridefinder/images/mm_20_yellow.png\">"; + } + else { + echo " "; + echo "<img src=\"http://labs.google.com/ridefinder/images/mm_20_red.png\">"; + } + } else { + echo "<img src=\"", $place["icon"], " \"width=\"25\" height=\"15\">"; + } + echo "</td>"; + echo "<td class=\"optionbox\"><a href=\"javascript:;\" onclick=\"edit_place_location({$place['place_id']});return false;\">", i18n::translate('Edit'), "</a></td>"; + $noRows= + WT_DB::prepare("SELECT COUNT(pl_id) FROM `##placelocation` WHERE pl_parent_id=?") + ->execute(array($place["place_id"])) + ->fetchOne(); + if ($noRows==0) { ?> + <td class="optionbox"><a href="javascript:;" onclick="delete_place(<?php echo $place["place_id"], ");return false;\">"; ?><img src="images/remove.gif" border="0" alt="<?php echo i18n::translate('Remove'); ?>" /></a></td> +<?php } else { ?> + <td class="optionbox"><img src="images/remove-dis.png" border="0" alt="" /> </td> +<?php } ?> + </tr> + <?php +} +?> +</table> +<?php +?> + <table class="facts_table"> + <tr> + <td class="optionbox" colspan="2"><a href="javascript:;" onclick="add_place_location(<?php echo $parent; ?>);return false;"><?php echo i18n::translate('Add place'); ?></a><?php echo help_link('PL_ADD_LOCATION','googlemap'); ?></td> + </tr> + <tr> + <td class="optionbox"><a href="module.php?mod=googlemap&mod_action=admin_places&action=ImportGedcom&mode=curr"><?php echo i18n::translate('Import from current GEDCOM'); ?></a><?php echo help_link('PL_IMPORT_GEDCOM','googlemap'); ?></td> + <td class="optionbox"><a href="module.php?mod=googlemap&mod_action=admin_places&action=ImportGedcom&mode=all"><?php echo i18n::translate('Import from all GEDCOMs'); ?></a><?php echo help_link('PL_IMPORT_ALL_GEDCOM','googlemap'); ?></td> + </tr> + <tr> + <td class="optionbox" colspan="2"><a href="module.php?mod=googlemap&mod_action=admin_places&action=ImportFile&mode=add"><?php echo i18n::translate('Import from file'); ?></a><?php echo help_link('PL_IMPORT_FILE','googlemap'); ?></td> + </tr> + <tr> + <td class="optionbox"> +<?php + if (count($where_am_i)<=4) { + echo "<a href=\"module.php?mod=googlemap&mod_action=admin_places&action=ExportFile&parent={$parent}\">"; + echo i18n::translate('Export current view to file'), "</a>"; + echo help_link('PL_EXPORT_FILE','googlemap'); + } else { + echo " "; + } + echo "</td><td class=\"optionbox\">"; + echo "<a href=\"module.php?mod=googlemap&mod_action=admin_places&action=ExportFile&parent=0\">"; + echo i18n::translate('Export all locations to file'), "</a>"; + echo help_link('PL_EXPORT_ALL_FILE','googlemap'); + echo "</td></tr></table><br />"; +if (empty($SEARCH_SPIDER)) + print_footer(); +else { + echo i18n::translate('Search Engine Spider Detected'), ": ", $SEARCH_SPIDER; + echo "\n</div>\n\t</body>\n</html>"; +} |
