Esempio n. 1
0
function landkreisFromLocid($locid)
{
    if (!is_numeric($locid)) {
        return '';
    }
    return XDb::xMultiVariableQueryValue("SELECT `rb`.`text_val` `regierungsbezirk`\n        FROM `geodb_textdata` `ct`, `geodb_textdata` `rb`, `geodb_hierarchies` `hr`\n        WHERE `ct`.`loc_id`=`hr`.`loc_id`\n            AND `hr`.`id_lvl5`=`rb`.`loc_id`\n            AND `ct`.`text_type`=500100000\n            AND `rb`.`text_type`=500100000\n            AND `ct`.`loc_id`= :1\n            AND `hr`.`id_lvl5`!=0", 0, $locid);
}
Esempio n. 2
0
function isGeokretInCache($cacheid)
{
    $res = XDb::xSql("SELECT wp_oc, wp_gc, wp_nc, wp_ge, wp_tc\n        FROM caches WHERE cache_id = ? LIMIT 1", $cacheid);
    $cache_record = XDb::xFetchArray($res);
    // get cache waypoint
    $cache_wp = '';
    if ($cache_record['wp_oc'] != '') {
        $cache_wp = $cache_record['wp_oc'];
    } else {
        if ($cache_record['wp_gc'] != '') {
            $cache_wp = $cache_record['wp_gc'];
        } else {
            if ($cache_record['wp_nc'] != '') {
                $cache_wp = $cache_record['wp_nc'];
            } else {
                if ($cache_record['wp_ge'] != '') {
                    $cache_wp = $cache_record['wp_ge'];
                } else {
                    if ($cache_record['wp_tc'] != '') {
                        $cache_wp = $cache_record['wp_tc'];
                    }
                }
            }
        }
    }
    $gkNum = XDb::xMultiVariableQueryValue("SELECT COUNT(*) FROM gk_item\n        WHERE id IN (\n            SELECT id FROM gk_item_waypoint\n            WHERE wp = :1\n            )\n            AND stateid<>1 AND stateid<>4\n            AND stateid <>5 AND typeid<>2", 0, $cache_wp);
    if ($gkNum == 0) {
        return 0;
    } else {
        return 1;
    }
}
Esempio n. 3
0
function get_cache_size_from_database()
{
    $cache_size = array();
    $resp = XDb::xSql("SELECT * FROM cache_size ORDER BY id ASC");
    while ($row = XDb::xFetchArray($resp)) {
        $cache_size[] = $row;
    }
    return $cache_size;
}
 function run()
 {
     $sql = "delete from CACHE_ACCESS_LOGS where date_sub(now(), INTERVAL 5 DAY) > event_date";
     set_time_limit(360);
     $s = XDb::xSql($sql);
     $total_deleted = XDb::xNumRows($s);
     set_time_limit(60);
     unset($db);
     echo "total_deleted={$total_deleted}\n";
 }
function online_user()
{
    // add check users id who want to by username hidden
    $rs = XDb::xSql("SELECT `user_id` FROM `sys_sessions`\n        WHERE user_id!=1 AND `sys_sessions`.last_login >(NOW()-INTERVAL 10 MINUTE)\n        GROUP BY `user_id`");
    $online_users = array();
    while ($r = XDb::xFetchArray($rs)) {
        $online_users[] = $r['user_id'];
    }
    return $online_users;
}
Esempio n. 6
0
function find_news($start, $end)
{
    global $tpl;
    global $lang;
    global $znalezione;
    $wp = XDb::xEscape($_GET['wp']);
    $query = "select id,type,user_id,date,text,deleted from cache_logs where cache_id = (select cache_id from caches where wp_oc = '" . $wp . "') order by date desc limit " . $start . "," . $end;
    $wynik = XDb::xSql($query);
    $query = "select name,cache_id from caches where cache_id = (select cache_id from caches where wp_oc = '" . $wp . "');";
    $wynik2 = XDb::xSql($query);
    $caches = XDb::xFetchArray($wynik2);
    $tpl->assign("name", $caches['name']);
    // detailed cache access logging
    global $enable_cache_access_logs;
    if (@$enable_cache_access_logs) {
        $dbc = OcDb::instance();
        $cache_id = $caches['cache_id'];
        $user_id = @$_SESSION['user_id'] > 0 ? $_SESSION['user_id'] : null;
        $access_log = @$_SESSION['CACHE_ACCESS_LOG_VL_' . $user_id];
        if ($access_log === null) {
            $_SESSION['CACHE_ACCESS_LOG_VL_' . $user_id] = array();
            $access_log = $_SESSION['CACHE_ACCESS_LOG_VL_' . $user_id];
        }
        if (@$access_log[$cache_id] !== true) {
            $dbc->multiVariableQuery('INSERT INTO CACHE_ACCESS_LOGS
                        (event_date, cache_id, user_id, source, event, ip_addr, user_agent, forwarded_for)
                     VALUES
                        (NOW(), :1, :2, \'M\', \'view_logs\', :3, :4, :5)', $cache_id, $user_id, $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_X_FORWARDED_FOR']);
            $access_log[$cache_id] = true;
            $_SESSION['CACHE_ACCESS_LOG_VL_' . $user_id] = $access_log;
        }
    }
    $znalezione = array();
    while ($logs = XDb::xFetchArray($wynik)) {
        if ($logs['deleted'] == 0) {
            $query = "select username from user where user_id = '" . $logs['user_id'] . "';";
            $wynik3 = XDb::xSql($query);
            $user = XDb::xFetchArray($wynik3);
            $logs2['id'] = $logs['id'];
            $logs2['user_id'] = $logs['user_id'];
            $logs2['newtype'] = $logs['type'];
            $logs2['newdate'] = date('j.m.Y', strtotime($logs['date']));
            $logs2['username'] = $user[0];
            $logs2['newtext'] = html2log($logs['text']);
            $znalezione[] = $logs2;
        }
    }
    $tpl->assign("wp_oc", $wp);
    $tpl->assign("logs", $znalezione);
}
Esempio n. 7
0
function find_news($start, $end)
{
    global $tpl;
    $query = "SELECT id,date_posted,content FROM `news` order by id desc limit " . $start . "," . $end;
    $wynik = XDb::xSql($query);
    $ile = XDb::xNumRows($wynik);
    $znalezione = array();
    while ($odp2 = XDb::xFetchArray($wynik)) {
        $odp['date_posted'] = $odp2['date_posted'];
        //$odp['content']=strip_tags($odp2['content'],'<b></b><p></p><a></a><br><br/>');
        $odp['content'] = html2desc($odp2['content']);
        $znalezione[] = $odp;
    }
    $tpl->assign('news', $znalezione);
    return $ile;
}
Esempio n. 8
0
 function find_news($start, $end)
 {
     global $lang;
     global $ile;
     global $url;
     global $znalezione;
     $query = "select cache_id from cache_watches where user_id=" . $_SESSION['user_id'] . " limit " . $start . "," . $end;
     $wynik = XDb::xSql($query);
     $ile2 = XDb::xNumRows($wynik);
     if ($ile2 > 0) {
         $znalezione = array();
         while ($rek = XDb::xFetchArray($wynik)) {
             $query = "select status,cache_id,name, score, latitude, longitude, wp_oc, user_id, type from caches where cache_id=" . $rek['cache_id'] . " order by name";
             $wynik2 = XDb::xSql($query);
             while ($rekord = XDb::xFetchArray($wynik2)) {
                 if (isset($_SESSION['user_id'])) {
                     $query2 = "select 1 from cache_logs where user_id = '" . $_SESSION['user_id'] . "' and type = '1' and deleted='0' and cache_id ='" . $rekord['cache_id'] . "';";
                     $wynik2 = XDb::xSql($query2);
                     $if_found = XDb::xFetchArray($wynik2);
                     if ($if_found[0] != '1') {
                         $query2 = "select 2 from cache_logs where user_id = '" . $_SESSION['user_id'] . "' and type = '2' and deleted='0' and cache_id ='" . $rekord['cache_id'] . "';";
                         $wynik2 = XDb::xSql($query2);
                         $if_found = XDb::xFetchArray($wynik2);
                     }
                     $if_found = $if_found[0];
                 }
                 $query = "select username from user where user_id = " . $rekord['user_id'] . ";";
                 $wynik2 = XDb::xSql($query);
                 $wiersz = XDb::xFetchArray($wynik2);
                 $query = "select " . $lang . " from cache_type where id = " . $rekord['type'] . ";";
                 $wynik2 = XDb::xSql($query);
                 $wiersz2 = XDb::xFetchArray($wynik2);
                 $rekord['if_found'] = $if_found;
                 $rekord['username'] = $wiersz['username'];
                 $rekord['N'] = cords($rekord['latitude']);
                 $rekord['E'] = cords($rekord['longitude']);
                 $rekord['typetext'] = $wiersz2[0];
                 $znalezione[] = $rekord;
             }
         }
     }
 }
Esempio n. 9
0
function genStatPieUrl()
{
    $startDate = mktime(0, 0, 0, 1, 1, 2006);
    global $lang;
    if (checkField('cache_type', $lang)) {
        $lang_db = XDb::xEscape($lang);
    } else {
        $lang_db = "en";
    }
    // Get data
    $rsTypes = XDb::xSql("SELECT COUNT(`caches`.`type`) `count`, `cache_type`.`{$lang_db}` AS `type`, `cache_type`.`color`\n        FROM `caches` INNER JOIN `cache_type` ON (`caches`.`type`=`cache_type`.`id`)\n        WHERE `status`=1\n        GROUP BY `caches`.`type`\n        ORDER BY `count` DESC");
    $yData = array();
    $xData = array();
    $colors = array();
    $url = "http://chart.apis.google.com/chart?chs=550x200&chd=t:";
    $sum = 0;
    while ($rTypes = XDb::xFetchArray($rsTypes)) {
        $yData[] = ' (' . $rTypes['count'] . ') ' . $rTypes['type'];
        $xData[] = $rTypes['count'];
        $colors[] = substr($rTypes['color'], 1);
        $sum += $rTypes['count'];
    }
    XDb::xFreeResults($rsTypes);
    foreach ($xData as $count) {
        $url .= normTo100($count, $sum) . ",";
    }
    $url = substr($url, 0, -1);
    $url .= "&cht=p3&chl=";
    foreach ($yData as $label) {
        $url .= urlencode($label) . "|";
    }
    $url = substr($url, 0, -1);
    $url .= "&chco=";
    foreach ($colors as $color) {
        $url .= urlencode($color) . ",";
    }
    return $url = substr($url, 0, -1);
}
Esempio n. 10
0
/**
 * Reads user map settings from the DB
 * @param int $user_id - user identifier
 */
function getDBFilter($user_id)
{
    global $MIN_SCORE, $MAX_SCORE, $powerTrailModuleSwitchOn;
    // defined in settings.inc/php
    $filter = array("h_u" => 1, "h_t" => 1, "h_m" => 1, "h_v" => 1, "h_w" => 1, "h_e" => 1, "h_q" => 1, "h_o" => 1, "h_owncache" => 1, "h_ignored" => 0, "h_own" => 1, "h_found" => 1, "h_noattempt" => 1, "h_nogeokret" => 1, "h_avail" => 0, "h_temp_unavail" => 1, "map_type" => 1, "h_arch" => 0, "be_ftf" => 0, "powertrail_only" => 0, "min_score" => $MIN_SCORE, "max_score" => $MAX_SCORE, "h_noscore" => 1);
    // default filter
    $query = XDb::xSql("SELECT * FROM map_settings WHERE `user_id`= ? LIMIT 1", $user_id);
    while ($row = XDb::xFetchArray($query)) {
        $filter["h_u"] = $row['unknown'];
        $filter["h_t"] = $row['traditional'];
        $filter["h_m"] = $row['multicache'];
        $filter["h_v"] = $row['virtual'];
        $filter["h_w"] = $row['webcam'];
        $filter["h_e"] = $row['event'];
        $filter["h_q"] = $row['quiz'];
        $filter["h_o"] = $row['mobile'];
        $filter["h_owncache"] = $row['owncache'];
        $filter["h_ignored"] = $row['ignored'];
        $filter["h_own"] = $row['own'];
        $filter["h_found"] = $row['found'];
        $filter["h_noattempt"] = $row['notyetfound'];
        $filter["h_nogeokret"] = $row['geokret'];
        $filter["h_avail"] = $row['active'];
        $filter["h_temp_unavail"] = $row['notactive'];
        $filter["map_type"] = $row['maptype'];
        $filter["h_arch"] = $row['archived'];
        $filter["be_ftf"] = $row['be_ftf'];
        if ($powerTrailModuleSwitchOn) {
            $filter["powertrail_only"] = $row['powertrail_only'];
        }
        $filter["min_score"] = $row['min_score'];
        $filter["max_score"] = $row['max_score'];
        $filter["h_noscore"] = $row['noscore'];
    }
    return $filter;
}
Esempio n. 11
0
function event_notify_new_cache($cache_id)
{
    global $rootpath;
    //prepare the templates and include all neccessary
    require_once $rootpath . 'lib/search.inc.php';
    $rs = XDb::xSql('SELECT `caches`.`latitude`, `caches`.`longitude`
        FROM `caches`
        WHERE `caches`.`cache_id`= ? ', $cache_id);
    $r = XDb::xFetchArray($rs);
    $latFrom = $r['latitude'];
    $lonFrom = $r['longitude'];
    XDb::xFreeResults($rs);
    $distanceMultiplier = 1;
    // TODO: Seeking pre-select `user`. `latitude` like with max_lon / min_lon / max_lat / min_lat
    XDb::xSql('INSERT INTO `notify_waiting` (`id`, `cache_id`, `user_id`, `type`)
        SELECT NULL, ' . XDb::xEscape($cache_id) . ', `user`.`user_id`, ' . NOTIFY_NEW_CACHES . '
        FROM `user`
        WHERE NOT ISNULL(`user`.`latitude`)
          AND NOT ISNULL(`user`.`longitude`)
          AND `user`.`notify_radius` > 0
          AND (acos(cos((90- ? ) * 3.14159 / 180) * cos((90-`user`.`latitude`) * 3.14159 / 180) +
              sin((90-?) * 3.14159 / 180) * sin((90-`user`.`latitude`) * 3.14159 / 180) * cos(( ? -`user`.`longitude`) *
              3.14159 / 180)) * 6370 * ?) <= `user`.`notify_radius`', $latFrom, $latFrom, $lonFrom, $distanceMultiplier);
}
Esempio n. 12
0
        ) AS `t`', 0);
    $rsfCR = XDb::xSql("SELECT COUNT(*) `count`, `cache_location`.`adm3` region, `cache_location`.`code3` code_region\n        FROM `cache_location`\n            INNER JOIN cache_logs ON cache_location.cache_id=cache_logs.cache_id\n        WHERE `cache_location`.`code1`='PL'\n            AND (cache_logs.type='1' OR cache_logs.type='2')\n            AND cache_logs.deleted='0'\n        GROUP BY `cache_location`.`code3`\n        ORDER BY count DESC");
    echo '<table width="97%"><tr><td align="center"><center><b> ' . tr('Stats_t7_01') . '</b> <br /><br /> ' . tr('Stats_t7_02') . ':<b> ';
    echo $fCt["count"];
    echo ' </b><br />' . tr('Stats_t7_03') . ':<b> ';
    echo $r['users'];
    echo '</b><br /><br />(' . tr('Stats_t7_04') . ')</center></td></tr></table><br><table border="1" bgcolor="white" width="97%">' . "\n";
    echo '
    <tr class="bgcolor2">
        <td width="20%">
            <center><b>' . tr('Stats_t7_05') . '</b></center>
        </td>
        <td align="right">
            &nbsp;&nbsp;<b>' . tr('Stats_t7_06') . '</b>&nbsp;&nbsp;
        </td>
    </tr><tr><td height="2"></td></tr>';
    while ($line = XDb::xFetchArray($rsfCR)) {
        echo '<tr class="bgcolor2">
                <td align="right">
                    &nbsp;&nbsp;<b>' . $line["count"] . '</b>&nbsp;&nbsp;
                </td>
                <td align="right">
                    &nbsp;&nbsp;<b><a class=links href=articles.php?page=s10&region=' . $line['code_region'] . '>' . $line['region'] . '</a></b>&nbsp;&nbsp;
                </td>';
    }
    echo '</table>' . "\n";
    XDb::xFreeResults($rsfCR);
    $result = ob_get_clean();
    apc_store($cache_key, $result, 86400);
}
print $result;
Esempio n. 13
0
if (!isset($rootpath)) {
    $rootpath = './';
}
//include template handling
require_once $rootpath . 'lib/common.inc.php';
setlocale(LC_TIME, 'pl_PL.UTF-8');
echo '<table width="97%"><tr><td align="center"><center><b>' . tr('Stats_t5_01') . '</b><br /><br />' . tr('Stats_t5_02') . ': (z% - <b><font color="green">X</font>/<font color="blue">Y</font></b>) X- ' . tr('Stats_t5_03') . ', Y - ' . tr('Stats_t5_04') . ', <br /> z - ' . tr('Stats_t5_05') . ' % ' . tr('Stats_t5_06') . ' (X/Y)*100<br /><br /></center></td></tr> </table>';
echo '<table border="1" bgcolor="white" width="97%" style="font-size:11px; line-height:1.6em;">' . "\n";
$linie = XDb::xSql("SELECT count(*) count, user.username username, user.user_id user_id\n    FROM caches, cache_rating, user\n    WHERE `cache_rating`.`cache_id`=caches.cache_id\n        AND caches.user_id=user.user_id\n        AND caches.type <> 6\n    GROUP BY `user`.`user_id`\n    ORDER BY `count` DESC, `user`.`username` ASC");
echo '<tr><td class="bgcolor2" align="right"><b>' . tr('Stats_t5_07') . '</b>&nbsp;&nbsp;</td><td class="bgcolor2" align="center"><img src="images/rating-star.png" border="0" alt="Recommendations" />&nbsp;<b>' . tr('Stats_t5_08') . '</b>&nbsp;&nbsp;</td><td class="bgcolor2" align="center"><b>' . tr('Stats_t5_09') . '</b>&nbsp;&nbsp;</td></tr><tr><td>';
$l2 = "";
$licznik = 0;
while ($linia = XDb::xFetchArray($linie)) {
    $l1 = $linia['count'];
    $x = XDb::xMultiVariableQueryValue("SELECT COUNT(*) FROM caches\n        WHERE `caches`.`topratings` >= 1\n            AND caches.type <> 6\n            AND caches.user_id= :1 ", 0, $linia['user_id']);
    $y = XDb::xMultiVariableQueryValue("SELECT COUNT(*) FROM caches\n        WHERE user_id= :1\n            AND status <> 4 AND status <> 5\n            AND status <> 6 AND type <> 6", 0, $linia['user_id']);
    if ($y != 0) {
        $xy = sprintf("%.u", $x / $y * 100);
    } else {
        $xy = 0;
    }
    if ($l2 != $l1) {
        $licznik++;
        echo "</td></tr><tr><td class=\"bgcolor2\" align=\"right\">&nbsp;&nbsp;<b>{$licznik}</b>&nbsp;&nbsp;</td><td class=\"bgcolor2\" align=\"right\">&nbsp;&nbsp;<b>{$l1}</b>&nbsp;&nbsp;</td>";
        echo "<td class=\"bgcolor2\"><a class=\"links\" href=\"viewprofile.php?userid=" . $linia['user_id'] . "\">" . htmlspecialchars($linia['username']) . " (<font color=\"firebrick\">{$xy}% - </font><font color=\"green\">{$x}</font>/<font color=\"blue\">{$y}</font>)</a>";
        $l2 = $l1;
    } else {
        echo ", <a class=\"links\" href=\"viewprofile.php?userid=" . $linia['user_id'] . "\">" . htmlspecialchars($linia['username']) . " (<font color=\"firebrick\">{$xy}% - </font><font color=\"green\">{$x}</font>/<font color=\"blue\">{$y}</font>)</a>";
    }
}
echo '</td></tr></table>' . "\n";
Esempio n. 14
0
     }
 }
 if ($total_pages >= $startat + $PAGES_LISTED) {
     $pages .= '<a href="my_logs.php?userid=' . $user_id . '&amp;start=' . ($i - 1) * $LOGS_PER_PAGE . '">{last_img}</a> ';
 } else {
     $pages .= '{last_img_inactive}';
 }
 $rs = XDb::xSql("SELECT `cache_logs`.`id`\n            FROM `cache_logs`, `caches`\n            WHERE `cache_logs`.`cache_id`=`caches`.`cache_id`\n                AND `cache_logs`.`deleted`=0\n                AND `caches`.`status` != 4\n                AND `caches`.`status` != 5\n                AND `caches`.`status` != 6\n                AND `cache_logs`.`user_id`= ?\n            ORDER BY  `cache_logs`.`date_created` DESC\n            LIMIT " . intval($start) . ", " . intval($LOGS_PER_PAGE), $user_id);
 $log_ids = array();
 while ($record = XDb::xFetchArray($rs)) {
     $log_ids[] = $record['id'];
 }
 XDb::xFreeResults($rs);
 $rs = XDb::xSql("SELECT cache_logs.id, cache_logs.cache_id AS cache_id, cache_logs.type AS log_type, cache_logs.date AS log_date,\n                    cache_logs.text AS log_text, `cache_logs`.`encrypt` AS `encrypt`, caches.user_id AS cache_owner,\n                    caches.name AS cache_name, user.username AS user_name, cache_logs.user_id AS luser_id,\n                    caches.wp_oc AS wp_name, caches.type AS cache_type, cache_type.icon_small AS cache_icon_small,\n                    log_types.icon_small AS icon_small,\n                    IF(ISNULL(`cache_rating`.`cache_id`), 0, 1) AS `recommended`,COUNT(gk_item.id) AS geokret_in\n            FROM ((cache_logs INNER JOIN caches ON (caches.cache_id = cache_logs.cache_id)))\n                INNER JOIN user ON (cache_logs.user_id = user.user_id)\n                INNER JOIN log_types ON (cache_logs.type = log_types.id)\n                INNER JOIN cache_type ON (caches.type = cache_type.id)\n                LEFT JOIN `cache_rating` ON `cache_logs`.`cache_id`=`cache_rating`.`cache_id`\n                    AND `cache_logs`.`user_id`=`cache_rating`.`user_id`\n                LEFT JOIN gk_item_waypoint ON gk_item_waypoint.wp = caches.wp_oc\n                LEFT JOIN gk_item ON gk_item.id = gk_item_waypoint.id\n                    AND gk_item.stateid<>1 AND gk_item.stateid<>4 AND gk_item.typeid<>2 AND gk_item.stateid !=5\n            WHERE cache_logs.deleted=0 AND cache_logs.id IN ( " . implode(',', $log_ids) . " ) AND `cache_logs`.`user_id`= ?\n            GROUP BY cache_logs.id ORDER BY cache_logs.date_created DESC", $user_id);
 $file_content = '';
 while ($log_record = XDb::xFetchArray($rs)) {
     if (!($log_record['log_type'] == 12 && !$usr['admin'])) {
         //ten warunek ukryje logi typu "komentarz COG" przed zwykłymi userami, natomiast adminom wyświetli wszystkie logi
         $file_content .= '<tr>';
         $file_content .= '<td style="width: 70px;">' . htmlspecialchars(date($dateFormat, strtotime($log_record['log_date'])), ENT_COMPAT, 'UTF-8') . '</td>';
         if ($log_record['geokret_in'] != '0') {
             $file_content .= '<td width="26">&nbsp;<img src="images/gk.png" border="0" alt="" title="GeoKret" /></td>';
         } else {
             $file_content .= '<td width="26">&nbsp;</td>';
         }
         //$rating_picture
         if ($log_record['recommended'] == 1 && $log_record['log_type'] == 1) {
             $file_content .= '<td width="22"><img src="images/rating-star.png" border="0" alt=""/></td>';
         } else {
             $file_content .= '<td width="22">&nbsp;</td>';
         }
Esempio n. 15
0
        }
        if (isset($_GET['h_avail'])) {
            $columns[] = 'active = ' . ($_GET['h_avail'] == 'true' ? 1 : 0);
        }
        if (isset($_GET['h_temp_unavail'])) {
            $columns[] = 'notactive = ' . ($_GET['h_temp_unavail'] == 'true' ? 1 : 0);
        }
        if (isset($_GET['h_arch'])) {
            $columns[] = 'archived = ' . ($_GET['h_arch'] == 'true' ? 0 : 1);
        }
        if (isset($_GET['be_ftf'])) {
            $columns[] = 'be_ftf = ' . ($_GET['be_ftf'] == 'true' ? 1 : 0);
        }
        global $powerTrailModuleSwitchOn;
        if (isset($_GET['powertrail_only']) && $powerTrailModuleSwitchOn === true) {
            //powertrail_only param update only if powertrails are enabled
            $columns[] = 'powertrail_only = ' . ($_GET['powertrail_only'] == 'true' ? 1 : 0);
        }
        if (isset($_GET['min_score']) && is_numeric($_GET['min_score'])) {
            $columns[] = 'min_score = ' . intval($_GET['min_score']);
        }
        if (isset($_GET['max_score']) && is_numeric($_GET['max_score'])) {
            $columns[] = 'max_score = ' . intval($_GET['max_score']);
        }
        if (isset($_GET['h_noscore'])) {
            $columns[] = 'noscore = ' . ($_GET['h_noscore'] == 'true' ? 1 : 0);
        }
        $q = 'REPLACE map_settings SET ' . implode(',', $columns);
        XDb::xQuery($q);
    }
}
Esempio n. 16
0
 while ($ry2 = XDb::xFetchArray($rscaches)) {
     $y2[] = $ry2['count'];
     $x2[] = $ry2['username'];
 }
 while ($ry3 = XDb::xFetchArray($rsreportsM)) {
     $y3[] = $ry3['count'];
     $x3[] = $ry3['month'];
 }
 while ($ry4 = XDb::xFetchArray($rscachesM)) {
     $y4[] = $ry4['count'];
     $x4[] = $ry4['month'];
 }
 XDb::xFreeResults($rsreportsM);
 XDb::xFreeResults($rsreports);
 XDb::xFreeResults($rscaches);
 XDb::xFreeResults($rscachesM);
 // Create the graph. These two calls are always required
 $graph = new Graph(740, 200, 'auto');
 $graph->SetScale('textint', 0, max($y) + max($y) * 0.2, 0, 0);
 // Add a drop shadow
 $graph->SetShadow();
 // Adjust the margin a bit to make more room for titles
 $graph->SetMargin(50, 30, 30, 40);
 // Create a bar pot
 $bplot = new BarPlot($y);
 // Adjust fill color
 $bplot->SetFillColor('steelblue2');
 $graph->Add($bplot);
 // Setup the titles
 $descibe = iconv('UTF-8', 'ASCII//TRANSLIT', tr("octeam_stat_problems"));
 $graph->title->Set($descibe);
Esempio n. 17
0
require_once './lib/common.inc.php';
//Preprocessing
if ($error == false) {
    //user logged in?
    if ($usr == false) {
        $target = urlencode(tpl_get_current_page());
        tpl_redirect('login.php?target=' . $target);
    } else {
        $tplname = 'searchuser';
        $options['username'] = isset($_REQUEST['username']) ? $_REQUEST['username'] : '';
        if (!isset($options['username'])) {
            $options['username'] = '';
        }
        if ($options['username'] != '') {
            $query = "SELECT user_id, username, date_created FROM user WHERE username LIKE :username ORDER BY username ASC";
            $params = array("username" => array("value" => '%' . XDb::xEscape($options['username']) . '%', "data_type" => "string"));
            $dbc = OcDb::instance();
            $s = $dbc->paramQuery($query, $params);
            $bgcolor1 = '#eeeeee';
            $bgcolor2 = '#ffffff';
            $line = '<tr bgcolor={bgcolor}><td><a href=viewprofile.php?userid={user_id}>{username}</a></td><td>&nbsp;</td><td nowrap style="text-align:center;">{date_created}</td><td nowrap style="text-align:center;"></td></tr>';
            $lines = "";
            $ilosc = $dbc->rowCount($s);
            if ($ilosc != 0) {
                if ($ilosc == 1) {
                    $record = $dbc->dbResultFetch($s);
                    tpl_redirect("viewprofile.php?userid=" . $record['user_id']);
                } else {
                    $i = 0;
                    while ($record = $dbc->dbResultFetch($s)) {
                        $tmp_line = $line;
Esempio n. 18
0
            }
            $rekord['user_id'] = $wiersz['user_id'];
            $rekord['name'] = $wiersz['name'];
            $rekord['status'] = $wiersz['status'];
            $rekord['score'] = score2ratingnum($wiersz['score']);
            $rekord['latitude'] = $wiersz['latitude'];
            $rekord['longitude'] = $wiersz['longitude'];
            $rekord['wp_oc'] = $wartosc;
            $rekord['N'] = cords($rekord['latitude']);
            $rekord['E'] = cords($rekord['longitude']);
            $rekord['distance'] = $dist;
            $rekord['kier'] = $kier;
            $rekord['if_found'] = $if_found;
            $query = "select username from user where user_id = '" . $rekord['user_id'] . "';";
            $wynik = XDb::xSql($query);
            $wiersz = XDb::xFetchArray($wynik);
            $rekord['username'] = $wiersz['username'];
            $znalezione[] = $rekord;
            $lista[] = $rekord['wp_oc'];
            $i++;
        }
        $url = $_SERVER['REQUEST_URI'];
        $tpl->assign('lista', $lista);
        stronicowanie($_GET['page'], 'viewcache', $znalezione, $i, $url);
        exit;
    } else {
        $tpl->assign('error', 1);
    }
} elseif (isset($_POST['city']) && isset($_POST['radius'])) {
    if (!empty($_POST['city']) && !empty($_POST['radius']) && preg_match("/^\\d+\$/", $_POST['radius']) && $_POST['radius'] >= 1 && $_POST['radius'] <= 25) {
        $city = makeUrl($_POST['city']);
Esempio n. 19
0
            myText.value = myText.value.substr(0, start) + parSmiley + selText + myText.value.substr(end);
            /* Cursorposition hinter Smiley setzen */
            myText.selectionStart = start + parSmiley.length;
            myText.selectionEnd = start + parSmiley.length;
        }
        /* fuer die anderen Browser */
        else
        {
            alert(navigator.appName + ': Setting smilies is not supported');
        }
    }

    function _chkFound() {

<?php 
$founds = XDb::xMultiVariableQueryValue("SELECT count(cache_id)\n    FROM cache_logs\n    WHERE `deleted`=0\n        AND cache_id = :1\n        AND user_id = :2\n        AND type='1'", 0, $_REQUEST['cacheid'], $usr['userid']);
?>


        if (document.logform.logtype.value == "1" || (<?php 
echo $founds;
?>
 > 0 && document.logform.logtype.value == "3") || document.logform.logtype.value == "7") {
            document.logform.r.disabled = false;
            //document.logform.rating.disabled = false;
        }
        else
        {
            document.logform.r.disabled = false;
            //document.logform.rating.disabled = true;
        }
Esempio n. 20
0
if (!isset($rootpath)) {
    $rootpath = './';
}
//include template handling
require_once $rootpath . 'lib/common.inc.php';
setlocale(LC_TIME, 'pl_PL.UTF-8');
echo '<center><table width="97%" border="0"><tr><td align="center"><center><b>{{Stats_s3a_01}}<br/><b>';
echo '<br /><br />({{Stats_s3a_02}})</center></td></tr></table><br><table border="1" bgcolor="white" width="30%">' . "\n";
echo '
<tr class="bgcolor2">
    <td align="right">
        <b>{{Stats_s3a_03}}:</b>&nbsp;&nbsp;
    </td>
</tr><tr><td height="2"></td></tr>';
$rs = XDb::xSql("SELECT `code`, `name` FROM `nuts_codes`\n                WHERE (" . $config['provinceNutsCondition'] . ") ORDER BY `name` ASC");
while ($record = XDb::xFetchArray($rs)) {
    echo '<tr class="bgcolor2">
            <td align="right">
                <b><a class=links href=articles.php?page=s11&region=' . $record[code] . '>' . $record[name] . '</a></b>&nbsp;&nbsp;
            </td>';
}
echo '</table>' . "\n";
XDb::xFreeResults($rs);
?>
        </td></tr>
</table>

<script type="text/javascript">
    TimeTrack("END", "S11a");
</script>
Esempio n. 21
0
<?php

use Utils\Database\XDb;
//prepare the templates and include all neccessary
require_once './lib/common.inc.php';
//Preprocessing
if ($error == false) {
    $cache_id = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid'] : '';
    $target = isset($_REQUEST['target']) ? $_REQUEST['target'] : 'myignores.php';
    if ($usr !== false) {
        //add to caches
        $rs = XDb::xQuery('SELECT ignorer_count FROM caches WHERE cache_id=\'' . XDb::xEscape($cache_id) . '\'');
        if ($record = Xdb::xFetchArray($rs)) {
            XDb::xSql('UPDATE caches SET ignorer_count=\'' . ($record['ignorer_count'] + 1) . '\'
                       WHERE cache_id=\'' . XDb::xEscape($cache_id) . '\'');
            //add watch
            XDb::xSql('INSERT INTO `cache_ignore` (`cache_id`, `user_id`)
                       VALUES (\'' . XDb::xEscape($cache_id) . '\', \'' . XDb::xEscape($usr['userid']) . '\')');
            //add to user
            $rs = XDb::xSql('SELECT cache_ignores FROM user WHERE user_id=\'' . XDb::xEscape($usr['userid']) . '\'');
            $record = XDb::xFetchArray($rs);
            XDb::xSql('UPDATE user SET cache_ignores=\'' . ($record['cache_ignores'] + 1) . '\' WHERE user_id=\'' . XDb::xEscape($usr['userid']) . '\'');
            tpl_redirect($target);
        }
    }
}
tpl_BuildTemplate();
Esempio n. 22
0
         }
     }
     XDb::xFreeResults($rsCachesFindMonth1);
     for ($i = 1; $i < 13; $i++) {
         $month = $i;
         $rsCachesFindMonth2 = XDb::xSql("SELECT COUNT(*) `count`, YEAR(`date`) `year`, MONTH(`date`) `month` FROM `cache_logs`\n                WHERE type=2 AND cache_logs.deleted='0' AND cache_id=? AND YEAR(`date`)=? AND MONTH(`date`)=?\n                GROUP BY MONTH(`date`) , YEAR(`date`)\n                ORDER BY YEAR(`date`) ASC, MONTH(`date`) ASC", $cache_id, $year, $month);
         if ($rsCachesFindMonth2 !== false) {
             $rfm = XDb::xFetchArray($rsCachesFindMonth2);
             $y2[] = $rfm['count'];
             $x2[] = $rfm['month'];
         } else {
             $y2[] = $i;
             $x2[] = 0;
         }
     }
     XDb::xFreeResults($rsCachesFindMonth2);
 }
 setlocale(LC_ALL, 'pl_PL.utf8');
 $dateLocale = new DateLocale();
 // Create the graph. These two calls are always required
 $graph = new Graph(400, 200);
 $graph->SetScale("textlin");
 $graph->SetShadow();
 $graph->img->SetMargin(50, 30, 30, 55);
 // Create the bar plots
 $b1plot = new BarPlot($y1);
 $b1plot->SetFillColor("chartreuse3");
 $b2plot = new BarPlot($y2);
 $b2plot->SetFillColor("chocolate2");
 // Set the legends for the plots
 $fn = tr('found');
Esempio n. 23
0
  tpl_set_var('gk_hoch', (int) $gk[1]);

  $qthlocator = help_latlongToQTH($lat_float, $lon_float);

  tpl_set_var('qthlocator', $qthlocator); */
$utm = ll2utm($lat_float, $lon_float);
tpl_set_var('utm2_zone', $utm[0]);
tpl_set_var('utm2_letter', $utm[1]);
tpl_set_var('utm2_NS', $utm[2]);
tpl_set_var('utm2_north', (int) $utm[3]);
tpl_set_var('utm2_EW', $utm[4]);
tpl_set_var('utm2_east', (int) $utm[5]);
tpl_set_var('nocacheid_start', '<!--');
tpl_set_var('nocacheid_end', '-->');
tpl_set_var('owner', '');
tpl_set_var('cachename', '');
tpl_set_var('wp', '');
// wp gesetzt?
$wp = isset($_REQUEST['wp']) ? $_REQUEST['wp'] : '';
if ($wp != '') {
    $rs = XDb::xSql("SELECT `caches`.`name`, `user`.`username`\n         FROM `caches` INNER JOIN `user` ON (`user`.`user_id`=`caches`.`user_id`)\n         WHERE `caches`.`wp_oc`= ? ", $wp);
    if ($r = XDb::xFetchArray($rs)) {
        tpl_set_var('nocacheid_start', '');
        tpl_set_var('nocacheid_end', '');
        tpl_set_var('owner', htmlspecialchars($r['username'], ENT_COMPAT, 'UTF-8'));
        tpl_set_var('cachename', htmlspecialchars($r['name'], ENT_COMPAT, 'UTF-8'));
        tpl_set_var('wp', htmlspecialchars($wp, ENT_COMPAT, 'UTF-8'));
    }
}
//make the template and send it out
tpl_BuildTemplate();
Esempio n. 24
0
 function find_news($start, $end)
 {
     global $lang;
     global $ile;
     global $url;
     global $tpl;
     global $znalezione;
     if (isset($_GET['nazwa'])) {
         $nazwa = XDb::xEscape($_GET['nazwa']);
         $query = "select votes,cache_id,name, status, score, latitude, longitude, wp_oc, user_id, type from caches where name like '%" . $nazwa . "%' and caches.status in ('1','2','3') order by name limit " . $start . "," . $end;
         $czykilka = 1;
         $url = "./find.php?nazwa=" . $nazwa;
     }
     if (isset($_GET['wp'])) {
         $wp = XDb::xEscape($_GET['wp']);
         $query = "select votes,cache_id,name, status, score, latitude, longitude, wp_oc, user_id, type from caches where wp_oc = '" . $wp . "' and caches.status in ('1','2','3') order by name limit " . $start . "," . $end;
         $czykilka = 0;
         $url = "./find.php?wp=" . $wp;
     }
     if (isset($_GET['owner'])) {
         $owner = XDb::xEscape($_GET['owner']);
         $query = "select votes,cache_id,name, status, score, latitude, longitude, wp_oc, user_id, type from caches where user_id = (select user_id from user where username ='******') and caches.status in ('1','2','3') order by name limit " . $start . "," . $end;
         $czykilka = 1;
         $url = "./find.php?owner=" . $owner;
     }
     if (isset($_GET['finder'])) {
         $finder = XDb::xEscape($_GET['finder']);
         $query = "select caches.votes,caches.cache_id,name, status, score, latitude, longitude, wp_oc, caches.user_id, caches.type from caches inner join cache_logs on caches.cache_id=cache_logs.cache_id where cache_logs.user_id = (select user.user_id from user where username ='******') and cache_logs.type = '1' and cache_logs.deleted=0 and caches.status in ('1','2','3') order by cache_logs.id desc limit " . $start . "," . $end;
         $czykilka = 1;
         $url = "./find.php?finder=" . $finder;
     }
     $wynik = XDb::xSql($query);
     $ilewyn = XDb::xNumRows($wynik);
     if ($czykilka == 0) {
         if ($ilewyn > 0) {
             global $address;
             $wiersz = XDb::xFetchArray($wynik);
             $adres = "./" . $address . ".php?wp=" . $wiersz['wp_oc'];
             header('Location: ' . $adres);
             exit;
         } else {
             $tpl->assign("error", "1");
         }
     }
     if ($czykilka == 1) {
         $znalezione = array();
         while ($rekord = XDb::xFetchArray($wynik)) {
             if (isset($_SESSION['user_id'])) {
                 $query2 = "select 1 from cache_logs where user_id = '" . $_SESSION['user_id'] . "' and type = '1' and deleted='0' and cache_id ='" . $rekord['cache_id'] . "';";
                 $wynik2 = XDb::xSql($query2);
                 $if_found = XDb::xFetchArray($wynik2);
                 if ($if_found[0] != '1') {
                     $query2 = "select 2 from cache_logs where user_id = '" . $_SESSION['user_id'] . "' and type = '2' and deleted='0' and cache_id ='" . $rekord['cache_id'] . "';";
                     $wynik2 = XDb::xSql($query2);
                     $if_found = XDb::xFetchArray($wynik2);
                 }
                 $if_found = $if_found[0];
             }
             $query = "select username from user where user_id = " . $rekord['user_id'] . ";";
             $wynik2 = XDb::xSql($query);
             $wiersz = XDb::xFetchArray($wynik2);
             $query = "select " . $lang . " from cache_type where id = " . $rekord['type'] . ";";
             $wynik2 = XDb::xSql($query);
             $wiersz2 = XDb::xFetchArray($wynik2);
             if ($rekord['votes'] > 3) {
                 $rekord['score'] = score2ratingnum($rekord['score']);
             } else {
                 $rekord['score'] = 5;
             }
             $rekord['username'] = $wiersz['username'];
             $rekord['if_found'] = $if_found;
             $rekord['N'] = cords($rekord['latitude']);
             $rekord['E'] = cords($rekord['longitude']);
             $rekord['typetext'] = $wiersz2[0];
             $znalezione[] = $rekord;
         }
     }
 }
Esempio n. 25
0
function viewcache_getfullsizedpicturestable($cacheid, $viewtext = true, $spoiler_only = false, $picturescount)
{
    global $thumb_max_width;
    global $thumb_max_height;
    $nCol = 0;
    if ($spoiler_only) {
        $spoiler_only = 'spoiler=1 AND';
    } else {
        $spoiler_only = "";
    }
    $rs = XDb::xSql('SELECT uuid, title, url, spoiler
        FROM pictures
        WHERE ' . $spoiler_only . ' object_id = ?
            AND object_type=2 AND display=1
        ORDER BY date_created', $cacheid);
    while ($r = XDb::xFetchArray($rs)) {
        $retval .= '<div style="display: block; float: left; margin: 3px;">';
        if ($viewtext) {
            $retval .= '<div style=""><p>' . $r['title'] . '</p></div>';
        }
        $retval .= '<img style="max-width: 600px;" src="' . $r['url'] . '" alt="' . $r['title'] . '" title="' . $r['title'] . '" />';
        $retval .= '</div>';
    }
    XDb::xFreeResults($rs);
    return $retval;
}
Esempio n. 26
0
            $content .= '<p><img src="graphs/BarGraphustat.php?userid=' . $user_id . '&amp;t=cfy"  border="0" alt="" width="500" height="200" /></p>';
        }
        // Parameter
        $jpeg_qualitaet = 80;
        $fontfile = "./lib/fonts/arial.ttf";
        $tplpath = 'images/PLmapa.gif';
        $im = ImageCreateFromGIF($tplpath);
        $clrWhite = ImageColorAllocate($im, 255, 255, 255);
        $clrBorder = ImageColorAllocate($im, 70, 70, 70);
        $clrBlack = ImageColorAllocate($im, 0, 0, 0);
        $clrRed = ImageColorAllocate($im, 255, 0, 0);
        $clrBlue = ImageColorAllocate($im, 0, 0, 255);
        $fontsize = 18;
        $wojewodztwa = array('PL11' => array(110, 138), 'PL12' => array(155, 108), 'PL21' => array(135, 208), 'PL22' => array(103, 188), 'PL31' => array(200, 150), 'PL32' => array(180, 200), 'PL33' => array(146, 170), 'PL34' => array(195, 75), 'PL41' => array(65, 115), 'PL42' => array(26, 55), 'PL43' => array(19, 100), 'PL51' => array(35, 149), 'PL52' => array(78, 169), 'PL61' => array(90, 85), 'PL62' => array(145, 50), 'PL63' => array(85, 43));
        $wyniki = XDb::xSql("SELECT cache_location.code3 wojewodztwo, COUNT(*) ilosc FROM cache_logs, cache_location\n            WHERE cache_logs.user_id= ? AND cache_logs.type='1'\n                AND cache_logs.deleted='0'\n                AND cache_location.code3 IN ('PL11','PL12','PL21','PL22','PL31','PL32','PL33','PL34','PL41','PL42','PL43','PL51','PL52','PL61','PL62','PL63')\n                AND cache_logs.cache_id=cache_location.cache_id\n            GROUP BY cache_location.code3", $user_id);
        while ($wynik = XDb::xFetchArray($wyniki)) {
            $text = $wynik['ilosc'];
            if ($text != "0") {
                ImageTTFText($im, 14, 0, $wojewodztwa[$wynik['wojewodztwo']][0], $wojewodztwa[$wynik['wojewodztwo']][1], $clrBlack, $fontfile, $text);
            }
        }
        // write output
        Imagejpeg($im, $dynbasepath . 'images/statpics/mapstat' . $user_id . '.jpg', $jpeg_qualitaet);
        ImageDestroy($im);
        // generate number for refresh image
        $rand = rand();
        $content .= '<p style="margin-left: 125px;"><img src=/images/statpics/mapstat' . $user_id . '.jpg?rand=' . $rand . ' border="0" alt="" width="250" height="235" /></p>';
        tpl_set_var('content', $content);
    }
}
tpl_BuildTemplate();
Esempio n. 27
0
function getUsername($userid)
{
    return XDb::xMultiVariableQueryValue("SELECT username FROM user WHERE user_id= :1 ", null, $userid);
}
Esempio n. 28
0
                 //crypt the log ROT13, but keep HTML-Tags and Entities
                 $data_text = str_rot13_html($data_text);
             } else {
                 $logtext .= "<br/>";
             }
             $logtext .= $data_text;
             $tmp_log = mb_ereg_replace('{logtext}', $logtext, $tmp_log);
             $content .= "\n" . $tmp_log;
         }
         XDb::xFreeResults($rs_logs);
         $content .= '</ul></div><br />';
     }
 }
 //  ----------------- begin  owner section  ----------------------------------
 if ($user_id == $usr['userid'] || $usr['admin']) {
     $rscheck = XDb::xMultiVariableQueryValue("SELECT count(*) FROM caches\n                WHERE (status = 4 OR status = 5 OR status = 6) AND `user_id`= :1", 0, $user_id);
     if ($rscheck != 0) {
         $content .= '<br /><div class="content-title-noshade box-blue">';
     }
     //get not published caches DATE_FORMAT(`caches`.`date_activate`,'%d-%m-%Y'),
     $geocachesNotPublished = $user->getGeocachesNotPublished();
     if ($geocachesNotPublished->count() > 0) {
         $content .= '<p><span class="content-title-noshade txt-blue08">' . tr('not_yet_published') . ':</span></p><br /><div><ul style="margin: -0.9em 0px 0.9em 0px; padding: 0px 0px 0px 10px; list-style-type: none; line-height: 1.2em; font-size: 115%;">';
         foreach ($geocachesNotPublished as $geocache) {
             $content .= "\n" . buildGeocacheHtml($geocache, $cache_notpublished_line);
         }
         $content .= '</ul></div>';
     }
     $waitAproveGeocaches = $user->getGeocachesWaitAproove();
     if ($waitAproveGeocaches->count() > 0) {
         $content .= '<br /><p><span class="content-title-noshade txt-blue08">' . tr('caches_waiting_approve') . ':</span></p><br /><div><ul style="margin: -0.9em 0px 0.9em 0px; padding: 0px 0px 0px 10px; list-style-type: none; line-height: 1.2em; font-size: 115%;">';
Esempio n. 29
0
                    $thisline = mb_ereg_replace('{log_picture_onclick}', "alert('" . $spoiler_disable_msg . "'); return false;", $thisline);
                    $thisline = mb_ereg_replace('{link}', 'index.php', $thisline);
                    $thisline = mb_ereg_replace('{longdesc}', 'index.php', $thisline);
                } else {
                    $thisline = mb_ereg_replace('{log_picture_onclick}', "enlarge(this)", $thisline);
                    $thisline = mb_ereg_replace('{link}', $pic_record['url'], $thisline);
                    $thisline = mb_ereg_replace('{longdesc}', str_replace("uploads", "uploads", $pic_record['url']), $thisline);
                }
                $thisline = mb_ereg_replace('{imgsrc}', 'thumbs.php?uuid=' . urlencode($pic_record['uuid']), $thisline);
                if ($pic_record['title'] == "") {
                    $title = "link";
                } else {
                    $title = htmlspecialchars($pic_record['title'], ENT_COMPAT, 'UTF-8');
                }
                $thisline = mb_ereg_replace('{title}', "<a class=links href=viewlogs.php?logid=" . $pic_record['object_id'] . ">" . $title . "</a>", $thisline);
                $logpicturelines .= $thisline;
            } while ($pic_record = XDb::xFetchArray($rspictures));
        }
        XDb::xFreeResults($rspictures);
        $tmplog = $logpicturelines;
        $logs = "{$tmplog}\n";
        tpl_set_var('logpictures', $logs);
    } else {
        //display search page
        // redirection
        tpl_redirect('viewcache.php?cacheid=' . urlencode($cache_id));
        exit;
    }
}
//make the template and send it out
tpl_BuildTemplate();
Esempio n. 30
-1
function getPictures($cacheid, $picturescount)
{
    global $thumb_max_width;
    global $thumb_max_height;
    $rs = XDb::xSql('SELECT uuid, title, url, spoiler FROM pictures
            WHERE object_id= ? AND object_type=2 AND display=1
            ORDER BY date_created', $cacheid);
    if (!isset($retval)) {
        $retval = '';
    }
    while ($r = XDb::xFetchArray($rs)) {
        $retval .= '&lt;img src="' . $r['url'] . '"&gt;&lt;br&gt;' . cleanup_text($r['title']) . '&lt;br&gt;';
    }
    XDb::xFreeResults($rs);
    return $retval;
}