search.php: ported temptable code to lib2; added some missing drop-tables and sql-free-results; updates #238

This commit is contained in:
following 2013-07-19 03:06:21 +02:00
parent ba70cc034f
commit 9494e067a8
10 changed files with 159 additions and 108 deletions

View File

@ -247,7 +247,8 @@
$arg = '';
// find next non-alphanumeric char
while (preg_match('/^[a-zA-Z0-9]{1}/', $nextchar) == 1)
// (added '_' - it is used in temptable names - following 2013/07/18)
while (preg_match('/^[a-zA-Z0-9_]{1}/', $nextchar) == 1)
{
$arg .= $nextchar;
@ -671,6 +672,19 @@
unset($db['temptables'][$table]);
}
function sql_rename_temp_table($table, $newname)
{
global $db, $opt;
if ($opt['db']['pconnect'] == true)
sqlf("UPDATE &db.`sys_temptables` SET `name`='&3' WHERE `threadid`='&1' AND `name`='&2'", mysql_thread_id($db['dblink']), $table, $newname);
sqlf('ALTER TABLE &tmpdb.`&1` RENAME &tmpdb.`&2`', $table, $newname);
unset($db['temptables'][$table]);
$db['temptables'][$newname] = $newname;
}
function sql_drop_temp_table_slave($table)
{
global $db, $opt;
@ -684,6 +698,21 @@
unset($db['temptables_slave'][$table]);
}
function sql_rename_temp_table_slave($table, $newname)
{
global $db, $opt;
if ($opt['db']['pconnect'] == true)
sqlf("UPDATE &db.`sys_temptables` SET `name`='&3' WHERE `threadid`='&1' AND `name`='&2'", mysql_thread_id($db['dblink']), $table, $newname);
sqlf_slave('ALTER TABLE &tmpdb.`&1` RENAME &tmpdb.`&2`', $table, $newname);
unset($db['temptables'][$table]);
unset($db['temptables_slave'][$table]);
$db['temptables'][$newname] = $newname;
$db['temptables_slave'][$newname] = $newname;
}
//database handling
function sql_connect($username=null, $password=null, $raiseError=true)
{

View File

@ -165,7 +165,7 @@ function search_output()
$childwphandler = new ChildWp_Handler();
$children='';
$rs = sql('SELECT `searchtmp`.`cache_id` `cacheid` FROM `searchtmp`');
$rs = sql('SELECT &searchtmp.`cache_id` `cacheid` FROM &searchtmp');
while ($r = sql_fetch_array($rs) && $children == '')
{
if (count($childwphandler->getChildWps($r['cacheid'])))
@ -179,19 +179,19 @@ function search_output()
$user_id = $login->userid;
$rs = sql_slave("SELECT SQL_BUFFER_RESULT `searchtmp`.`cache_id` `cacheid`, `searchtmp`.`longitude` `longitude`, `searchtmp`.`latitude` `latitude`,
$rs = sql_slave("SELECT SQL_BUFFER_RESULT &searchtmp.`cache_id` `cacheid`, &searchtmp.`longitude` `longitude`, &searchtmp.`latitude` `latitude`,
`cache_location`.`adm2` `state`, `caches`.`wp_oc` `waypoint`, `caches`.`date_hidden` `date_hidden`, `caches`.`name` `name`,
`caches`.`country` `country`, `countries`.`name` AS `country_name`, `caches`.`terrain` `terrain`, `caches`.`difficulty` `difficulty`, `caches`.`desc_languages` `desc_languages`,
`caches`.`size` `size`, `caches`.`type` `type`, `caches`.`status` `status`, `user`.`username` `username`, `caches`.`user_id` `userid`, `user`.`data_license`,
`cache_desc`.`desc` `desc`, `cache_desc`.`short_desc` `short_desc`, `cache_desc`.`hint` `hint`,
IFNULL(`stat_cache_logs`.`found`, 0) AS `found`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
FROM &searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `countries` ON `caches`.`country`=`countries`.`short`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
INNER JOIN `user` ON &searchtmp.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id`AND `caches`.`default_desclang`=`cache_desc`.`language`
LEFT JOIN `cache_location` ON `searchtmp`.`cache_id`=`cache_location`.`cache_id`
LEFT JOIN `stat_cache_logs` ON `searchtmp`.`cache_id`=`stat_cache_logs`.`cache_id` AND `stat_cache_logs`.`user_id`='&1'", $user_id);
LEFT JOIN `cache_location` ON &searchtmp.`cache_id`=`cache_location`.`cache_id`
LEFT JOIN `stat_cache_logs` ON &searchtmp.`cache_id`=`stat_cache_logs`.`cache_id` AND `stat_cache_logs`.`user_id`='&1'", $user_id);
while ($r = sql_fetch_array($rs))
{

View File

@ -50,7 +50,7 @@ function search_output()
MIN(`latitude`) `minlat`,
MAX(`latitude`) `maxlat`
FROM
`searchtmp`');
&searchtmp');
$rMinMax = sql_fetch_array($rsMinMax);
mysql_free_result($rsMinMax);
@ -75,10 +75,10 @@ function search_output()
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`searchtmp`.`type`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
&searchtmp.`type`,
`caches`.`date_hidden`,
`caches`.`name`,
`caches`.`status`,
@ -88,16 +88,16 @@ function search_output()
`caches`.`difficulty`,
`user`.`username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`');
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`type`=`cache_type`.`id` AND
&searchtmp.`size`=`cache_size`.`id` AND
&searchtmp.`user_id`=`user`.`user_id`');
while ($r = sql_fetch_array($rs))
{

View File

@ -47,20 +47,20 @@ function search_output()
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`,
`caches`.`status`,
`caches`.`wp_oc` `waypoint`,
`user`.`username` `username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`user_id`=`user`.`user_id`');
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`user_id`=`user`.`user_id`');
while ($r = sql_fetch_array($rs))
{

View File

@ -20,15 +20,17 @@
else
{
// ensure that query is performed without errors before reserving the result_id
sql_slave("CREATE TEMPORARY TABLE `tmpmapresult` (`cache_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`cache_id`)) ENGINE=MEMORY");
sql_slave("INSERT INTO `tmpmapresult` (`cache_id`) " . $sqlFilter);
sql_temp_table_slave('tmpmapresult');
sql_slave("CREATE TEMPORARY TABLE &tmpmapresult (`cache_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`cache_id`)) ENGINE=MEMORY");
sql_slave("INSERT INTO &tmpmapresult (`cache_id`) " . $sqlFilter);
sql("INSERT INTO `map2_result` (`slave_id`, `sqlchecksum`, `sqlquery`, `date_created`, `date_lastqueried`) VALUES ('&1', '&2', '&3', NOW(), NOW())", $db['slave_id'], $sqlchecksum, $cachesFilter."\n".$sqlFilter);
$resultId = sql_insert_id();
sql_slave("INSERT IGNORE INTO `map2_data` (`result_id`, `cache_id`) SELECT '&1', `cache_id` FROM `tmpmapresult`", $resultId);
sql_slave("DROP TEMPORARY TABLE `tmpmapresult`");
sql_slave("INSERT IGNORE INTO `map2_data` (`result_id`, `cache_id`) SELECT '&1', `cache_id` FROM &tmpmapresult", $resultId);
sql_drop_temp_table_slave('tmpmapresult');
}
sql_free_result($rsMapCache);
if ($map2_bounds)
{

View File

@ -32,9 +32,9 @@ function search_output()
$sql = '
SELECT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`,
`caches`.`wp_oc`,
`caches`.`terrain`,
@ -43,16 +43,16 @@ function search_output()
`cache_size`.`de` `sizedesc`,
`user`.`username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`';
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`type`=`cache_type`.`id` AND
&searchtmp.`size`=`cache_size`.`id` AND
&searchtmp.`user_id`=`user`.`user_id`';
$rs = sql_slave($sql, $sqldebug);

View File

@ -32,15 +32,15 @@ function search_output()
$nr = 1;
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`
FROM
`searchtmp`,
&searchtmp,
`caches`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id`');
&searchtmp.`cache_id`=`caches`.`cache_id`');
while ($r = sql_fetch_array($rs))
{

View File

@ -57,9 +57,9 @@ Logeinträge:
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude` `longitude`,
&searchtmp.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
@ -79,8 +79,8 @@ Logeinträge:
`user`.`username`,
`user`.`data_license`
FROM
`searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
&searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `cache_desc` ON `cache_desc`.`cache_id`=`caches`.`cache_id`
AND `caches`.`default_desclang`=`cache_desc`.`language`
INNER JOIN `cache_type` ON `cache_type`.`id`=`caches`.`type`

View File

@ -46,12 +46,13 @@ function search_output()
";
// create temporary table
sql_slave('CREATE TEMPORARY TABLE `searchtmp`
sql_temp_table_slave('searchtmp');
sql_slave('CREATE TEMPORARY TABLE &searchtmp
SELECT SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS ' . $sql . $sqlLimit);
$resultcount = sql_value_slave('SELECT FOUND_ROWS()', 0);
$rsCount = sql_slave('SELECT COUNT(*) `count` FROM `searchtmp`');
$rsCount = sql_slave('SELECT COUNT(*) `count` FROM &searchtmp');
$rCount = sql_fetch_array($rsCount);
mysql_free_result($rsCount);
@ -72,9 +73,9 @@ function search_output()
echo " </docinfo>\n";
}
$rs = sql_slave("SELECT `searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
$rs = sql_slave("SELECT &searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude` `longitude`,
&searchtmp.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
@ -94,11 +95,11 @@ function search_output()
`cache_desc`.`short_desc` `short_desc`,
`cache_desc`.`hint` `hint`,
`cache_desc`.`desc_html` `html`,
`searchtmp`.`distance` `distance`,
&searchtmp.`distance` `distance`,
`sys_trans_text`.`text` `country`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
FROM &searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `user` ON &searchtmp.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id` AND `caches`.`default_desclang`=`cache_desc`.`language`
INNER JOIN `cache_type` ON `caches`.`type`=`cache_type`.`id`
INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id`
@ -169,7 +170,7 @@ function search_output()
echo $thisline;
}
mysql_free_result($rs);
sql_slave('DROP TABLE `searchtmp`');
sql_drop_temp_table_slave('searchtmp');
if (!$db['debug'])
echo "</result>\n";

View File

@ -460,6 +460,7 @@
// and filtering options
//===============================================================
sql_drop_temp_table_slave('result_caches');
$cachesFilter = '';
if (!isset($options['output'])) $options['output']='';
@ -522,6 +523,7 @@
$rs = sql($sql);
if (sql_num_rows($rs) == 0)
{
sql_free_result($rs);
$options['error_plz'] = true;
outputSearchForm($options);
exit;
@ -534,6 +536,7 @@
}
else
{
sql_free_result($rs);
// ok, viele locations ... alle auflisten ...
outputLocidSelectionForm($sql, $options);
exit;
@ -565,9 +568,9 @@
$lon_rad = $lon * 3.14159 / 180;
$lat_rad = $lat * 3.14159 / 180;
sql_slave("DROP TEMPORARY TABLE IF EXISTS `result_caches`");
sql_temp_table_slave('result_caches');
$cachesFilter =
'CREATE TEMPORARY TABLE result_caches ENGINE=MEMORY
'CREATE TEMPORARY TABLE &result_caches ENGINE=MEMORY
SELECT
(' . geomath::getSqlDistanceFormula($lon, $lat, $distance, $multiplier[$distance_unit]) . ') `distance`,
`caches`.`cache_id` `cache_id`
@ -578,11 +581,11 @@
AND `latitude` < ' . ($lat + $max_lat_diff) . '
HAVING `distance` < ' . ($distance+0);
sql_slave($cachesFilter);
sql_slave('ALTER TABLE result_caches ADD PRIMARY KEY ( `cache_id` )');
sql_slave('ALTER TABLE &result_caches ADD PRIMARY KEY ( `cache_id` )');
$sql_select[] = '`result_caches`.`cache_id`';
$sql_from = '`result_caches`';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=`result_caches`.`cache_id`';
$sql_select[] = '&result_caches.`cache_id`';
$sql_from = '&result_caches';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=&result_caches.`cache_id`';
}
else
{
@ -621,9 +624,10 @@
}
// temporäre tabelle erstellen und dann einträge entfernen, die nicht mindestens so oft vorkommen wie worte gegeben wurden
sql_slave('DROP TABLE IF EXISTS `tmpuniids`');
sql_slave('CREATE TEMPORARY TABLE `tmpuniids` (`uni_id` int(11) NOT NULL, `cnt` int(11) NOT NULL, `olduni` int(11) NOT NULL, `simplehash` int(11) NOT NULL) ENGINE=MEMORY SELECT `gns_search`.`uni_id` `uni_id`, 0 `cnt`, 0 `olduni`, `simplehash` FROM `gns_search` WHERE ' . $sqlhashes);
sql_slave('ALTER TABLE `tmpuniids` ADD INDEX (`uni_id`)');
sql_drop_temp_table_slave('tmpuniids');
sql_temp_table_slave('tmpuniids');
sql_slave('CREATE TEMPORARY TABLE &tmpuniids (`uni_id` int(11) NOT NULL, `cnt` int(11) NOT NULL, `olduni` int(11) NOT NULL, `simplehash` int(11) NOT NULL) ENGINE=MEMORY SELECT `gns_search`.`uni_id` `uni_id`, 0 `cnt`, 0 `olduni`, `simplehash` FROM `gns_search` WHERE ' . $sqlhashes);
sql_slave('ALTER TABLE &tmpuniids ADD INDEX (`uni_id`)');
// BUGFIX: dieser Code sollte nur ausgeführt werden, wenn mehr als ein Suchbegriff eingegeben wurde
// damit alle Einträge gefiltert, die nicht alle Suchbegriffe enthalten
@ -631,25 +635,28 @@
// Notwendig, wenn nach Baden gesucht wird => Baden-Baden war doppelt in der Liste
// if ($wordscount > 1)
// {
sql_slave('CREATE TEMPORARY TABLE `tmpuniids2` (`uni_id` int(11) NOT NULL, `cnt` int(11) NOT NULL, `olduni` int(11) NOT NULL) ENGINE=MEMORY SELECT `uni_id`, COUNT(*) `cnt`, 0 olduni FROM `tmpuniids` GROUP BY `uni_id` HAVING `cnt` >= ' . $wordscount);
sql_slave('ALTER TABLE `tmpuniids2` ADD INDEX (`uni_id`)');
sql_slave('DROP TABLE `tmpuniids`');
sql_slave('ALTER TABLE `tmpuniids2` RENAME `tmpuniids`');
sql_temp_table_slave('tmpuniids2');
sql_slave('CREATE TEMPORARY TABLE &tmpuniids2 (`uni_id` int(11) NOT NULL, `cnt` int(11) NOT NULL, `olduni` int(11) NOT NULL) ENGINE=MEMORY SELECT `uni_id`, COUNT(*) `cnt`, 0 olduni FROM &tmpuniids GROUP BY `uni_id` HAVING `cnt` >= ' . $wordscount);
sql_slave('ALTER TABLE &tmpuniids2 ADD INDEX (`uni_id`)');
sql_drop_temp_table_slave('tmpuniids');
sql_rename_temp_table_slave('tmpuniids2', 'tmpuniids');
// }
// add: SELECT g2.uni FROM `tmpuniids` JOIN gns_locations g1 ON tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!='N' AND g2.nt='N'
// remove: SELECT g1.uni FROM `tmpuniids` JOIN gns_locations g1 ON tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!='N' AND g2.nt='N'
// add: SELECT g2.uni FROM &tmpuniids JOIN gns_locations g1 ON &tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!='N' AND g2.nt='N'
// remove: SELECT g1.uni FROM &tmpuniids JOIN gns_locations g1 ON &tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!='N' AND g2.nt='N'
// und jetzt noch alle englischen bezeichnungen durch deutsche ersetzen (wo möglich) ...
sql_slave('CREATE TEMPORARY TABLE `tmpuniidsAdd` (`uni` int(11) NOT NULL, `olduni` int(11) NOT NULL, PRIMARY KEY (`uni`)) ENGINE=MEMORY SELECT g2.uni uni, g1.uni olduni FROM `tmpuniids` JOIN gns_locations g1 ON tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!=\'N\' AND g2.nt=\'N\' GROUP BY uni');
sql_slave('CREATE TEMPORARY TABLE `tmpuniidsRemove` (`uni` int(11) NOT NULL, PRIMARY KEY (`uni`)) ENGINE=MEMORY SELECT DISTINCT g1.uni uni FROM `tmpuniids` JOIN gns_locations g1 ON tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!=\'N\' AND g2.nt=\'N\'');
sql_slave('DELETE FROM tmpuniids WHERE uni_id IN (SELECT uni FROM tmpuniidsRemove)');
sql_slave('DELETE FROM tmpuniidsAdd WHERE uni IN (SELECT uni_id FROM tmpuniids)');
sql_slave('INSERT INTO tmpuniids (uni_id, olduni) SELECT uni, olduni FROM tmpuniidsAdd');
sql_slave('DROP TABLE tmpuniidsAdd');
sql_slave('DROP TABLE tmpuniidsRemove');
sql_temp_table_slave('tmpuniidsAdd');
sql_slave('CREATE TEMPORARY TABLE &tmpuniidsAdd (`uni` int(11) NOT NULL, `olduni` int(11) NOT NULL, PRIMARY KEY (`uni`)) ENGINE=MEMORY SELECT g2.uni uni, g1.uni olduni FROM &tmpuniids JOIN gns_locations g1 ON &tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!=\'N\' AND g2.nt=\'N\' GROUP BY uni');
sql_temp_table_slave('tmpuniidsRemove');
sql_slave('CREATE TEMPORARY TABLE &tmpuniidsRemove (`uni` int(11) NOT NULL, PRIMARY KEY (`uni`)) ENGINE=MEMORY SELECT DISTINCT g1.uni uni FROM &tmpuniids JOIN gns_locations g1 ON &tmpuniids.uni_id=g1.uni JOIN gns_locations g2 ON g1.ufi=g2.ufi WHERE g1.nt!=\'N\' AND g2.nt=\'N\'');
sql_slave('DELETE FROM &tmpuniids WHERE uni_id IN (SELECT uni FROM &tmpuniidsRemove)');
sql_slave('DELETE FROM &tmpuniidsAdd WHERE uni IN (SELECT uni_id FROM &tmpuniids)');
sql_slave('INSERT INTO &tmpuniids (uni_id, olduni) SELECT uni, olduni FROM &tmpuniidsAdd');
sql_drop_temp_table_slave('tmpuniidsAdd');
sql_drop_temp_table_slave('tmpuniidsRemove');
$rs = sql_slave('SELECT `uni_id` FROM tmpuniids');
$rs = sql_slave('SELECT `uni_id` FROM &tmpuniids');
if (sql_num_rows($rs) == 0)
{
sql_free_result($rs);
@ -671,13 +678,13 @@
if (mb_strtolower($rCmp['full_name']) != mb_strtolower($ort))
{
outputUniidSelectionForm('SELECT `uni_id`, `olduni` FROM `tmpuniids`', $options);
outputUniidSelectionForm('SELECT `uni_id`, `olduni` FROM `&tmpuniids`', $options);
}
}
else
{
sql_free_result($rs);
outputUniidSelectionForm('SELECT `uni_id`, `olduni` FROM `tmpuniids`', $options);
outputUniidSelectionForm('SELECT `uni_id`, `olduni` FROM `&tmpuniids`', $options);
exit;
}
}
@ -708,9 +715,9 @@
//TODO: check!!!
$max_lon_diff = $distance * 180 / (abs(sin((90 - $lat) * 3.14159 / 180 )) * 6378 * $multiplier[$distance_unit] * 3.14159);
sql_slave("DROP TEMPORARY TABLE IF EXISTS `result_caches`");
sql_temp_table_slave('result_caches');
$cachesFilter =
'CREATE TEMPORARY TABLE result_caches ENGINE=MEMORY
'CREATE TEMPORARY TABLE &result_caches ENGINE=MEMORY
SELECT
(' . geomath::getSqlDistanceFormula($lon, $lat, $distance, $multiplier[$distance_unit]) . ') `distance`,
`caches`.`cache_id` `cache_id`
@ -721,11 +728,11 @@
AND `latitude` < ' . ($lat + $max_lat_diff) . '
HAVING `distance` < ' . ($distance+0);
sql_slave($cachesFilter);
sql_slave('ALTER TABLE result_caches ADD PRIMARY KEY ( `cache_id` )');
sql_slave('ALTER TABLE &result_caches ADD PRIMARY KEY ( `cache_id` )');
$sql_select[] = '`result_caches`.`cache_id`';
$sql_from = '`result_caches`';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=`result_caches`.`cache_id`';
$sql_select[] = '&result_caches.`cache_id`';
$sql_from = '&result_caches';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=&result_caches.`cache_id`';
}
else
{
@ -828,9 +835,9 @@
$lon_rad = $lon * 3.14159 / 180;
$lat_rad = $lat * 3.14159 / 180;
sql_slave("DROP TEMPORARY TABLE IF EXISTS `result_caches`");
sql_temp_table_slave('result_caches');
$cachesFilter =
'CREATE TEMPORARY TABLE result_caches ENGINE=MEMORY
'CREATE TEMPORARY TABLE &result_caches ENGINE=MEMORY
SELECT
(' . geomath::getSqlDistanceFormula($lon, $lat, $distance, $multiplier[$distance_unit]) . ') `distance`,
`caches`.`cache_id` `cache_id`
@ -841,11 +848,11 @@
AND `latitude` < ' . ($lat + $max_lat_diff) . '
HAVING `distance` < ' . ($distance+0);
sql_slave($cachesFilter);
sql_slave('ALTER TABLE result_caches ADD PRIMARY KEY ( `cache_id` )');
sql_slave('ALTER TABLE &result_caches ADD PRIMARY KEY ( `cache_id` )');
$sql_select[] = '`result_caches`.`cache_id`';
$sql_from = '`result_caches`';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=`result_caches`.`cache_id`';
$sql_select[] = '&result_caches.`cache_id`';
$sql_from = '&result_caches';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=&result_caches.`cache_id`';
}
elseif ($options['searchtype'] == 'bycacheid')
{
@ -911,7 +918,9 @@
' INNER JOIN ' . implode(' INNER JOIN ', $sql_innerjoin) .
' WHERE ' . implode(' AND ', $sql_where);
sql_slave('CREATE TEMPORARY TABLE `tmpFTCaches` (`cache_id` int (11) PRIMARY KEY) ' . $sqlFilter);
sql_drop_temp_table_slave('tmpFTCaches');
sql_temp_table_slave('tmpFTCaches');
sql_slave('CREATE TEMPORARY TABLE &tmpFTCaches (`cache_id` int (11) PRIMARY KEY) ' . $sqlFilter);
$sql_select = array();
$sql_from = '';
@ -920,8 +929,8 @@
$sql_where = array();
$sql_select[] = '`caches`.`cache_id` `cache_id`';
$sql_from = '`tmpFTCaches`';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=`tmpFTCaches`.`cache_id`';
$sql_from = '&tmpFTCaches';
$sql_innerjoin[] = '`caches` ON `caches`.`cache_id`=&tmpFTCaches.`cache_id`';
}
elseif ($options['searchtype'] == 'bynofilter')
{
@ -1233,15 +1242,19 @@
// X8a. run query and output for file downloads (GPX, KML, OVL ...)
//===================================================================
sql_slave('CREATE TEMPORARY TABLE `searchtmp` SELECT ' . $sql . $sqlLimit);
sql_drop_temp_table_slave('searchtmp');
// for the case something went wrong and it was not propery cleaned up
$count = sql_value_slave('SELECT COUNT(*) FROM `searchtmp`',0);
sql_temp_table_slave('searchtmp');
sql_slave('CREATE TEMPORARY TABLE &searchtmp SELECT ' . $sql . $sqlLimit);
$count = sql_value_slave('SELECT COUNT(*) FROM &searchtmp',0);
if ($count == 1)
{
$sFilebasename = sql_value_slave('
SELECT `caches`.`wp_oc`
FROM `searchtmp`, `caches`
WHERE `searchtmp`.`cache_id`=`caches`.`cache_id` LIMIT 1',
FROM &searchtmp, `caches`
WHERE &searchtmp.`cache_id`=`caches`.`cache_id` LIMIT 1',
'?'
);
}
@ -1293,7 +1306,7 @@
$content = '';
search_output();
sql_slave('DROP TABLE `searchtmp`');
sql_drop_temp_table_slave('searchtmp');
// output zip file
if ($bUseZip && !$db['debug'])
@ -1863,14 +1876,15 @@ function outputUniidSelectionForm($uniSql, $options)
$urlparamString = prepareLocSelectionForm($options);
sql_slave('CREATE TEMPORARY TABLE `uniids` ENGINE=MEMORY ' . $uniSql);
sql_slave('ALTER TABLE `uniids` ADD PRIMARY KEY (`uni_id`)');
sql_temp_table_slave('uniids');
sql_slave('CREATE TEMPORARY TABLE &uniids ENGINE=MEMORY ' . $uniSql);
sql_slave('ALTER TABLE &uniids ADD PRIMARY KEY (`uni_id`)');
// locidsite
$locidsite = isset($_REQUEST['locidsite']) ? $_REQUEST['locidsite'] : 0;
if (!is_numeric($locidsite)) $locidsite = 0;
$count = sql_value_slave('SELECT COUNT(*) FROM `uniids`',0);
$count = sql_value_slave('SELECT COUNT(*) FROM &uniids',0);
$tpl->assign('resultscount', $count);
// create page browser
@ -1878,7 +1892,7 @@ function outputUniidSelectionForm($uniSql, $options)
$pager->make_from_offset($locidsite, ceil($count/20), 1);
// create locations list
$rs = sql_slave('SELECT `gns_locations`.`rc` `rc`, `gns_locations`.`cc1` `cc1`, `gns_locations`.`admtxt1` `admtxt1`, `gns_locations`.`admtxt2` `admtxt2`, `gns_locations`.`admtxt3` `admtxt3`, `gns_locations`.`admtxt4` `admtxt4`, `gns_locations`.`uni` `uni_id`, `gns_locations`.`lon` `lon`, `gns_locations`.`lat` `lat`, `gns_locations`.`full_name` `full_name`, `uniids`.`olduni` `olduni` FROM `gns_locations`, `uniids` WHERE `uniids`.`uni_id`=`gns_locations`.`uni` ORDER BY `gns_locations`.`full_name` ASC LIMIT ' . ($locidsite * 20) . ', 20');
$rs = sql_slave('SELECT `gns_locations`.`rc` `rc`, `gns_locations`.`cc1` `cc1`, `gns_locations`.`admtxt1` `admtxt1`, `gns_locations`.`admtxt2` `admtxt2`, `gns_locations`.`admtxt3` `admtxt3`, `gns_locations`.`admtxt4` `admtxt4`, `gns_locations`.`uni` `uni_id`, `gns_locations`.`lon` `lon`, `gns_locations`.`lat` `lat`, `gns_locations`.`full_name` `full_name`, &uniids.`olduni` `olduni` FROM `gns_locations`, &uniids WHERE &uniids.`uni_id`=`gns_locations`.`uni` ORDER BY `gns_locations`.`full_name` ASC LIMIT ' . ($locidsite * 20) . ', 20');
$nr = $locidsite * 20 + 1;
$locations = '';
@ -1939,6 +1953,7 @@ function outputUniidSelectionForm($uniSql, $options)
$locations .= $thislocation . "\n";
}
sql_free_result($rs);
sql_drop_temp_table_slave('uniids');
$tpl->assign('locations', $locations);
@ -1956,10 +1971,11 @@ function outputLocidSelectionForm($locSql, $options)
$urlparamString = prepareLocSelectionForm($options) . '&locid={locid}';
sql_slave('CREATE TEMPORARY TABLE `locids` ENGINE=MEMORY ' . $locSql);
sql_slave('ALTER TABLE `locids` ADD PRIMARY KEY (`loc_id`)');
sql_temp_table_slave('locids');
sql_slave('CREATE TEMPORARY TABLE &locids ENGINE=MEMORY ' . $locSql);
sql_slave('ALTER TABLE &locids ADD PRIMARY KEY (`loc_id`)');
$rs = sql_slave('SELECT `geodb_textdata`.`loc_id` `loc_id`, `geodb_textdata`.`text_val` `text_val` FROM `geodb_textdata`, `locids` WHERE `locids`.`loc_id`=`geodb_textdata`.`loc_id` AND `geodb_textdata`.`text_type`=500100000 ORDER BY `text_val`');
$rs = sql_slave('SELECT `geodb_textdata`.`loc_id` `loc_id`, `geodb_textdata`.`text_val` `text_val` FROM `geodb_textdata`, &locids WHERE &locids.`loc_id`=`geodb_textdata`.`loc_id` AND `geodb_textdata`.`text_type`=500100000 ORDER BY `text_val`');
$nr = 1;
$locations = '';
@ -2009,6 +2025,9 @@ function outputLocidSelectionForm($locSql, $options)
$tpl->assign('resultscount', sql_num_rows($rs));
$tpl->assign('pages', '');
sql_free_result($rs);
sql_drop_temp_table_slave('locids');
$tpl->display();
exit;
}