Пример #1
0
function search_output()
{
    global $db, $opt;
    global $distance_unit, $startat, $count, $sql, $sqlLimit;
    $encoding = 'UTF-8';
    $xmlLine = "\t<cache>\n\t\t<name><![CDATA[{cachename}]]></name>\n\t\t<owner id=\"{ownerid}\"><![CDATA[{owner}]]></owner>\n\t\t<id>{cacheid}</id>\n\t\t<waypoint>{waypoint}</waypoint>\n\t\t<hidden>{time}</hidden>\n\t\t<status id=\"{statusid}\">{status}</status>\n\t\t<lon value=\"{lonvalue}\">{lon}</lon>\n\t\t<lat value=\"{latvalue}\">{lat}</lat>\n\t\t<distance unit=\"" . $distance_unit . "\">{distance}</distance>\n\t\t<type id=\"{typeid}\">{type}</type>\n\t\t<difficulty>{difficulty}</difficulty>\n\t\t<terrain>{terrain}</terrain>\n\t\t<size id=\"{sizeid}\">{container}</size>\n\t\t<country id=\"{countryid}\">{country}</country>\n\t\t<link><![CDATA[" . $opt['page']['default_absolute_url'] . "viewcache.php?wp={waypoint}]]></link>\n\t\t<desc><![CDATA[{shortdesc}]]></desc>\n\t\t<hints><![CDATA[{hints}]]></hints>\n\t</cache>\n";
    // create temporary table
    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');
    $rCount = sql_fetch_array($rsCount);
    mysql_free_result($rsCount);
    // start output
    if (!$db['debug']) {
        header("Content-type: application/xml; charset=" . $encoding);
        //header("Content-Disposition: attachment; filename=" . $sFilebasename . ".txt");
        echo "<?xml version=\"1.0\" encoding=\"" . $encoding . "\"?>\n";
        echo "<result>\n";
        echo "\t<docinfo>\n";
        echo "\t\t<results>" . $rCount['count'] . "</results>\n";
        echo "\t\t<startat>" . $startat . "</startat>\n";
        echo "\t\t<perpage>" . $count . "</perpage>\n";
        echo "\t\t<total>" . $resultcount . "</total>\n";
        echo "\t</docinfo>\n";
    }
    $rs = sql_slave("SELECT &searchtmp.`cache_id` `cacheid`,\n                    &searchtmp.`longitude` `longitude`,\n                    &searchtmp.`latitude` `latitude`,\n                    `caches`.`wp_oc` `waypoint`,\n                    `caches`.`date_hidden` `date_hidden`,\n                    `caches`.`name` `name`,\n                    `caches`.`country` `countrycode`,\n                    `caches`.`terrain` `terrain`,\n                    `caches`.`difficulty` `difficulty`,\n                    `caches`.`desc_languages` `desc_languages`,\n                    `cache_size`.`name` `size`,\n                    `cache_size`.`id` `size_id`,\n                    `cache_type`.`name` `type`,\n                    `cache_type`.`id` `type_id`,\n                    `cache_status`.`name` `status`,\n                    `cache_status`.`id` `status_id`,\n                    `user`.`username` `username`,\n                    `user`.`user_id` `user_id`,\n                    `cache_desc`.`desc` `desc`,\n                    `cache_desc`.`short_desc` `short_desc`,\n                    `cache_desc`.`hint` `hint`,\n                    `cache_desc`.`desc_html` `html`,\n                    &searchtmp.`distance` `distance`,\n                    `sys_trans_text`.`text` `country`\n         FROM &searchtmp\n         INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`\n         INNER JOIN `user` ON &searchtmp.`user_id`=`user`.`user_id`\n         INNER JOIN `cache_desc`\n             ON `caches`.`cache_id`=`cache_desc`.`cache_id` \n             AND `caches`.`default_desclang`=`cache_desc`.`language`\n         INNER JOIN `cache_type` ON `caches`.`type`=`cache_type`.`id`\n         INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id`\n         INNER JOIN `cache_size` ON `caches`.`size`=`cache_size`.`id`\n         LEFT JOIN `countries` ON `countries`.`short`=`caches`.`country`\n         LEFT JOIN `sys_trans_text` ON `sys_trans_text`.`trans_id`=`countries`.`trans_id`\n         AND `sys_trans_text`.`lang`='&1'", $opt['template']['locale']);
    while ($r = sql_fetch_array($rs)) {
        if (strlen($r['desc_languages']) > 2) {
            $r = get_locale_desc($r);
        }
        $thisline = $xmlLine;
        $lat = sprintf('%01.5f', $r['latitude']);
        $thisline = str_replace('{lat}', help_latToDegreeStr($lat), $thisline);
        $thisline = str_replace('{latvalue}', $lat, $thisline);
        $lon = sprintf('%01.5f', $r['longitude']);
        $thisline = str_replace('{lon}', help_lonToDegreeStr($lon), $thisline);
        $thisline = str_replace('{lonvalue}', $lon, $thisline);
        $time = date('d.m.Y', strtotime($r['date_hidden']));
        $thisline = str_replace('{time}', $time, $thisline);
        $thisline = str_replace('{waypoint}', $r['waypoint'], $thisline);
        $thisline = str_replace('{cacheid}', $r['cacheid'], $thisline);
        $thisline = str_replace('{cachename}', filterevilchars($r['name']), $thisline);
        $thisline = str_replace('{country}', text_xmlentities($r['country']), $thisline);
        $thisline = str_replace('{countryid}', $r['country'], $thisline);
        if ($r['hint'] == '') {
            $thisline = str_replace('{hints}', '', $thisline);
        } else {
            $thisline = str_replace('{hints}', str_rot13_gc(decodeEntities(filterevilchars(strip_tags($r['hint'])))), $thisline);
        }
        $thisline = str_replace('{shortdesc}', filterevilchars($r['short_desc']), $thisline);
        if ($r['html'] == 0) {
            $thisline = str_replace('{htmlwarn}', '', $thisline);
            $thisline = str_replace('{desc}', filterevilchars(strip_tags($r['desc'])), $thisline);
        } else {
            $thisline = str_replace('{htmlwarn}', ' (Text converted from HTML)', $thisline);
            $thisline = str_replace('{desc}', html2txt(filterevilchars($r['desc'])), $thisline);
        }
        $thisline = str_replace('{type}', $r['type'], $thisline);
        $thisline = str_replace('{typeid}', $r['type_id'], $thisline);
        $thisline = str_replace('{container}', $r['size'], $thisline);
        $thisline = str_replace('{sizeid}', $r['size_id'], $thisline);
        $thisline = str_replace('{status}', $r['status'], $thisline);
        $thisline = str_replace('{statusid}', $r['status_id'], $thisline);
        $difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
        $thisline = str_replace('{difficulty}', $difficulty, $thisline);
        $terrain = sprintf('%01.1f', $r['terrain'] / 2);
        $thisline = str_replace('{terrain}', $terrain, $thisline);
        $thisline = str_replace('{owner}', filterevilchars($r['username']), $thisline);
        $thisline = str_replace('{ownerid}', filterevilchars($r['user_id']), $thisline);
        $thisline = str_replace('{distance}', text_xmlentities(sprintf("%01.1f", $r['distance'])), $thisline);
        $thisline = lf2crlf($thisline);
        if (!$db['debug']) {
            echo $thisline;
        }
    }
    mysql_free_result($rs);
    sql_drop_temp_table_slave('searchtmp');
    if (!$db['debug']) {
        echo "</result>\n";
    }
}
Пример #2
0
function search_output()
{
    global $opt, $translate, $txt_record;
    global $converted_from_html;
    global $phpzip, $bUseZip;
    $txtLine = $txt_record;
    $txtLogs = "<===================>\n{username} / {date} / {type}\n\n{text}\n";
    $rs = sql_slave("SELECT SQL_BUFFER_RESULT\n            &searchtmp.`cache_id` `cacheid`,\n            &searchtmp.`longitude` `longitude`,\n            &searchtmp.`latitude` `latitude`,\n            `caches`.`wp_oc` `waypoint`,\n            `caches`.`date_hidden` `date_hidden`,\n            `caches`.`name` `name`,\n            `caches`.`terrain` `terrain`,\n            `caches`.`difficulty` `difficulty`,\n            `caches`.`desc_languages` `desc_languages`,\n            `caches`.`needs_maintenance`,\n            `caches`.`listing_outdated`,\n            IFNULL(`stt_country`.`text`,`countries`.`en`) AS `country`,\n            IFNULL(`stt_size`.`text`,`cache_size`.`name`) `size`,\n            IFNULL(`stt_type`.`text`,`cache_type`.`en`) `type`,\n            IFNULL(`stt_status`.`text`,`cache_status`.`name`) `status`,\n            `user`.`username` `username`,\n            `cache_desc`.`desc` `desc`,\n            `cache_desc`.`short_desc` `short_desc`,\n            `cache_desc`.`language` `desc_language`,\n            `cache_desc`.`hint` `hint`,\n            `cache_desc`.`desc_html` `html`,\n            `user`.`user_id`,\n            `user`.`username`,\n            `user`.`data_license`\n         FROM\n            &searchtmp\n            INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`\n            INNER JOIN `cache_desc`\n                ON `cache_desc`.`cache_id`=`caches`.`cache_id`\n                AND `caches`.`default_desclang`=`cache_desc`.`language`\n             INNER JOIN `cache_type` ON `cache_type`.`id`=`caches`.`type`\n             INNER JOIN `cache_size` ON `cache_size`.`id`=`caches`.`size`\n             INNER JOIN `cache_status` ON `cache_status`.`id`=`caches`.`status`\n             INNER JOIN `user` ON `user`.`user_id`=`caches`.`user_id`\n             LEFT JOIN `countries` ON `countries`.`short`=`caches`.`country`\n             LEFT JOIN `sys_trans_text` `stt_type` ON `stt_type`.`trans_id`=`cache_type`.`trans_id` AND `stt_type`.`lang`='&1'\n             LEFT JOIN `sys_trans_text` `stt_size` ON `stt_size`.`trans_id`=`cache_size`.`trans_id` AND `stt_size`.`lang`='&1'\n             LEFT JOIN `sys_trans_text` `stt_status` ON `stt_status`.`trans_id`=`cache_status`.`trans_id` AND `stt_status`.`lang`='&1'\n             LEFT JOIN `sys_trans_text` `stt_country` ON `stt_country`.`trans_id`=`countries`.`trans_id` AND `stt_country`.`lang`='&1'", $opt['template']['locale']);
    while ($r = sql_fetch_array($rs)) {
        if (strlen($r['desc_languages']) > 2) {
            $r = get_locale_desc($r);
        }
        $thisline = $txtLine;
        $lat = sprintf('%01.5f', $r['latitude']);
        $thisline = mb_ereg_replace('{lat}', help_latToDegreeStr($lat), $thisline);
        $lon = sprintf('%01.5f', $r['longitude']);
        $thisline = mb_ereg_replace('{lon}', help_lonToDegreeStr($lon), $thisline);
        $time = date('d.m.Y', strtotime($r['date_hidden']));
        $thisline = mb_ereg_replace('{time}', $time, $thisline);
        $thisline = mb_ereg_replace('{waypoint}', $r['waypoint'], $thisline);
        $thisline = mb_ereg_replace('{cacheid}', $r['cacheid'], $thisline);
        $thisline = mb_ereg_replace('{cachename}', $r['name'], $thisline);
        $thisline = mb_ereg_replace('{country}', $r['country'], $thisline);
        if ($r['hint'] == '') {
            $thisline = mb_ereg_replace('{hints}', '', $thisline);
        } else {
            $thisline = mb_ereg_replace('{hints}', str_rot13_gc(decodeEntities(strip_tags($r['hint']))), $thisline);
        }
        $thisline = mb_ereg_replace('{shortdesc}', $r['short_desc'], $thisline);
        $license = getLicenseDisclaimer($r['user_id'], $r['username'], $r['data_license'], $r['cacheid'], $opt['template']['locale'], true, false, true);
        if ($license != "") {
            $license = "\r\n\r\n{$license}";
        }
        if ($r['html'] == 0) {
            $thisline = mb_ereg_replace('{htmlwarn}', '', $thisline);
            $thisline = mb_ereg_replace('{desc}', decodeEntities(strip_tags($r['desc'])) . $license, $thisline);
        } else {
            $thisline = mb_ereg_replace('{htmlwarn}', " ({$converted_from_html})", $thisline);
            $thisline = mb_ereg_replace('{desc}', html2txt($r['desc']) . $license, $thisline);
        }
        $thisline = mb_ereg_replace('{type}', $r['type'], $thisline);
        $thisline = mb_ereg_replace('{container}', $r['size'], $thisline);
        $thisline = mb_ereg_replace('{status}', $r['status'], $thisline);
        $difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
        $thisline = mb_ereg_replace('{difficulty}', $difficulty, $thisline);
        $terrain = sprintf('%01.1f', $r['terrain'] / 2);
        $thisline = mb_ereg_replace('{terrain}', $terrain, $thisline);
        $thisline = mb_ereg_replace('{siteurl}', $opt['page']['default_absolute_url'], $thisline);
        $thisline = mb_ereg_replace('{owner}', $r['username'], $thisline);
        $flags = array();
        if ($r['needs_maintenance'] > 0 || $r['listing_outdated']) {
            if ($r['needs_maintenance'] > 0) {
                $flags[] = 'geocache needs maintenance';
            }
            if ($r['listing_outdated'] > 0) {
                $flags[] = 'description is outdated';
            }
        } else {
            $flags[] = 'ok';
        }
        foreach ($flags as &$flag) {
            $flag = $translate->t($flag, '', basename(__FILE__), __LINE__);
        }
        $thisline = mb_ereg_replace('{condition}', implode(', ', $flags), $thisline);
        // logs ermitteln
        $logentries = '';
        $rsLogs = sql_slave("SELECT\n                `cache_logs`.`id`,\n                `cache_logs`.`text_html`,\n                IFNULL(`stt`.`text`, `log_types`.`en`) `type`,\n                `cache_logs`.`date`,\n                `cache_logs`.`text`,\n                `user`.`username`\n             FROM `cache_logs`\n             JOIN `user` ON `cache_logs`.`user_id`=`user`.`user_id`\n             JOIN `log_types` ON `cache_logs`.`type`=`log_types`.`id`\n             LEFT JOIN `sys_trans_text` `stt` ON `stt`.`trans_id`=`log_types`.`trans_id` AND `stt`.`lang`='&2'\n             WHERE `cache_logs`.`cache_id`=&1\n             ORDER BY\n                `cache_logs`.`order_date` DESC,\n                `cache_logs`.`date_created` DESC,\n                `cache_logs`.`id` DESC\n             LIMIT 20", $r['cacheid'], $opt['template']['locale']);
        while ($rLog = sql_fetch_array($rsLogs)) {
            $thislog = $txtLogs;
            $thislog = mb_ereg_replace('{id}', $rLog['id'], $thislog);
            $dateformat = "d.m.Y H:i";
            if (substr($rLog['date'], 11) == "00:00:00") {
                $dateformat = "d.m.Y";
            }
            $thislog = mb_ereg_replace('{date}', date($dateformat, strtotime($rLog['date'])), $thislog);
            $thislog = mb_ereg_replace('{username}', $rLog['username'], $thislog);
            $logtype = $rLog['type'];
            $thislog = mb_ereg_replace('{type}', $logtype, $thislog);
            if ($rLog['text_html'] == 0) {
                $thislog = mb_ereg_replace('{text}', decodeEntities(strip_tags($rLog['text'])), $thislog);
            } else {
                $thislog = mb_ereg_replace('{text}', html2txt($rLog['text']), $thislog);
            }
            $logentries .= $thislog . "\n";
        }
        $thisline = mb_ereg_replace('{logs}', $logentries, $thisline);
        $thisline = lf2crlf($thisline);
        if (!$bUseZip) {
            echo $thisline;
        } else {
            $phpzip->add_data($r['waypoint'] . '.txt', $thisline);
        }
    }
    mysql_free_result($rs);
}
Пример #3
0
function search_output()
{
    global $opt;
    global $converted_from_html;
    global $phpzip, $bUseZip;
    $txtLine = "Name: {cachename} von {owner}\nKoordinaten: {lon} {lat}\nStatus: {status}\n\nVersteckt am: {time}\nWegpunkt: {waypoint}\nLand: {country}\nCacheart: {type}\nBehälter: {container}\nD/T: {difficulty}/{terrain}\nOnline: " . $opt['page']['absolute_url'] . "viewcache.php?wp={waypoint}\n\nKurzbeschreibung: {shortdesc}\n\nBeschreibung{htmlwarn}:\n<===================>\n{desc}\n<===================>\n\nZusätzliche Hinweise:\n<===================>\n{hints}\n<===================>\nA|B|C|D|E|F|G|H|I|J|K|L|M\nN|O|P|Q|R|S|T|U|V|W|X|Y|Z\n\nLogeinträge:\n{logs}\n";
    $txtLogs = "<===================>\n{username} / {date} / {type}\n\n{text}\n";
    $rs = sql_slave('
		SELECT SQL_BUFFER_RESULT
			&searchtmp.`cache_id` `cacheid`,
			&searchtmp.`longitude` `longitude`,
			&searchtmp.`latitude` `latitude`,
			`caches`.`wp_oc` `waypoint`,
			`caches`.`date_hidden` `date_hidden`,
			`caches`.`name` `name`,
			`caches`.`terrain` `terrain`,
			`caches`.`difficulty` `difficulty`,
			`caches`.`desc_languages` `desc_languages`,
			`sys_trans_text`.`text` AS `country`,
			`cache_size`.`de` `size`,
			`cache_type`.`de` `type`,
			`cache_status`.`de` `status`,
			`user`.`username` `username`,
			`cache_desc`.`desc` `desc`,
			`cache_desc`.`short_desc` `short_desc`,
			`cache_desc`.`hint` `hint`,
			`cache_desc`.`desc_html` `html`,
			`user`.`user_id`,
			`user`.`username`,
			`user`.`data_license`
		FROM
			&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`
 			INNER JOIN `cache_size` ON `cache_size`.`id`=`caches`.`size`
 			INNER JOIN `cache_status` ON `cache_status`.`id`=`caches`.`status`
 			INNER JOIN `user` ON `user`.`user_id`=`caches`.`user_id`
 			 LEFT JOIN `countries` ON `countries`.`short`=`caches`.`country`
 			 LEFT JOIN `sys_trans_text` ON `sys_trans_text`.`trans_id`=`countries`.`trans_id`
 			       AND `sys_trans_text`.`lang`=\'&1\'', $opt['template']['locale']);
    while ($r = sql_fetch_array($rs)) {
        $thisline = $txtLine;
        $lat = sprintf('%01.5f', $r['latitude']);
        $thisline = mb_ereg_replace('{lat}', help_latToDegreeStr($lat), $thisline);
        $lon = sprintf('%01.5f', $r['longitude']);
        $thisline = mb_ereg_replace('{lon}', help_lonToDegreeStr($lon), $thisline);
        $time = date('d.m.Y', strtotime($r['date_hidden']));
        $thisline = mb_ereg_replace('{time}', $time, $thisline);
        $thisline = mb_ereg_replace('{waypoint}', $r['waypoint'], $thisline);
        $thisline = mb_ereg_replace('{cacheid}', $r['cacheid'], $thisline);
        $thisline = mb_ereg_replace('{cachename}', $r['name'], $thisline);
        $thisline = mb_ereg_replace('{country}', $r['country'], $thisline);
        if ($r['hint'] == '') {
            $thisline = mb_ereg_replace('{hints}', '', $thisline);
        } else {
            $thisline = mb_ereg_replace('{hints}', str_rot13_gc(decodeEntities(strip_tags($r['hint']))), $thisline);
        }
        $thisline = mb_ereg_replace('{shortdesc}', $r['short_desc'], $thisline);
        $license = getLicenseDisclaimer($r['user_id'], $r['username'], $r['data_license'], $r['cacheid'], $opt['template']['locale'], true, false, true);
        if ($license != "") {
            $license = "\r\n\r\n{$license}";
        }
        if ($r['html'] == 0) {
            $thisline = mb_ereg_replace('{htmlwarn}', '', $thisline);
            $thisline = mb_ereg_replace('{desc}', decodeEntities(strip_tags($r['desc'])) . $license, $thisline);
        } else {
            $thisline = mb_ereg_replace('{htmlwarn}', " ({$converted_from_html})", $thisline);
            $thisline = mb_ereg_replace('{desc}', html2txt($r['desc']) . $license, $thisline);
        }
        $thisline = mb_ereg_replace('{type}', $r['type'], $thisline);
        $thisline = mb_ereg_replace('{container}', $r['size'], $thisline);
        $thisline = mb_ereg_replace('{status}', $r['status'], $thisline);
        $difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
        $thisline = mb_ereg_replace('{difficulty}', $difficulty, $thisline);
        $terrain = sprintf('%01.1f', $r['terrain'] / 2);
        $thisline = mb_ereg_replace('{terrain}', $terrain, $thisline);
        $thisline = mb_ereg_replace('{owner}', $r['username'], $thisline);
        // logs ermitteln
        $logentries = '';
        $rsLogs = sql_slave("SELECT `cache_logs`.`id`, `cache_logs`.`text_html`, `log_types`.`de` `type`, `cache_logs`.`date`, `cache_logs`.`text`, `user`.`username` FROM `cache_logs`, `user`, `log_types` WHERE `cache_logs`.`user_id`=`user`.`user_id` AND `cache_logs`.`type`=`log_types`.`id` AND `cache_logs`.`cache_id`=&1 ORDER BY `cache_logs`.`date` DESC LIMIT 20", $r['cacheid']);
        while ($rLog = sql_fetch_array($rsLogs)) {
            $thislog = $txtLogs;
            $thislog = mb_ereg_replace('{id}', $rLog['id'], $thislog);
            if (substr($rLog['date'], 11) == "00:00:00") {
                $dateformat = "d.m.Y";
            } else {
                $dateformat = "d.m.Y H:i";
            }
            $thislog = mb_ereg_replace('{date}', date($dateformat, strtotime($rLog['date'])), $thislog);
            $thislog = mb_ereg_replace('{username}', $rLog['username'], $thislog);
            $logtype = $rLog['type'];
            $thislog = mb_ereg_replace('{type}', $logtype, $thislog);
            if ($rLog['text_html'] == 0) {
                $thislog = mb_ereg_replace('{text}', decodeEntities(strip_tags($rLog['text'])), $thislog);
            } else {
                $thislog = mb_ereg_replace('{text}', html2txt($rLog['text']), $thislog);
            }
            $logentries .= $thislog . "\n";
        }
        $thisline = mb_ereg_replace('{logs}', $logentries, $thisline);
        $thisline = lf2crlf($thisline);
        if (!$bUseZip) {
            echo $thisline;
        } else {
            $phpzip->add_data($r['waypoint'] . '.txt', $thisline);
        }
    }
    mysql_free_result($rs);
}