search.php: ported temptable code to lib2; added some missing drop-tables and sql-free-results; updates #238
This commit is contained in:
parent
ba70cc034f
commit
9494e067a8
@ -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)
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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`
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user