$tpl->menuitem = MNU_MYPROFILE_PUBLIC;
    }
}
// user data and basic statistics
$rs = sql("SELECT `user`.`username`, \n\t\t\t\t\t\t\t\t\t\t`user`.`last_login`, \n\t\t\t\t\t\t\t\t\t\t`user`.`accept_mailing`, \n\t\t\t\t\t\t\t\t\t\t`user`.`pmr_flag`, \n\t\t\t\t\t\t\t\t\t\t`user`.`date_created`, \n\t\t\t\t\t\t\t\t\t\t`user`.`password`, \n\t\t\t\t\t\t\t\t\t\t`user`.`email`, \n\t\t\t\t\t\t\t\t\t\t`user`.`is_active_flag`, \n\t\t\t\t\t\t\t\t\t\t`user`.`latitude`, \n\t\t\t\t\t\t\t\t\t\t`user`.`longitude`,\n\t\t\t\t\t\t\t\t\t\t`user`.`data_license`, \n\t\t\t\t\t\t\t\t\t\tIFNULL(`sys_trans_text`.`text`,`countries`.`name`) AS `country`,\n\t\t\t\t\t\t\t\t\t\t`stat_user`.`hidden`, \n\t\t\t\t\t\t\t\t\t\t`stat_user`.`found`, \n\t\t\t\t\t\t\t\t\t\t`stat_user`.`notfound`, \n\t\t\t\t\t\t\t\t\t\t`stat_user`.`note`, \n\t\t\t\t\t\t\t\t\t\t`stat_user`.`maintenance`,\n\t\t\t\t\t\t\t\t\t\t`user`.`uuid` \n\t\t\t\t\t\t\t FROM `user` \n\t\t\t\t\tLEFT JOIN `stat_user` ON `user`.`user_id`=`stat_user`.`user_id` \n\t\t\t\t\tLEFT JOIN `countries` ON `user`.`country`=`countries`.`short`\n\t\t\t\t\tLEFT JOIN `sys_trans_text` ON `sys_trans_text`.`lang`='&2' AND `sys_trans_text`.`trans_id`=`countries`.`trans_id`\n\t\t\t\t\t\t\tWHERE `user`.`user_id`='&1'", $userid, $opt['template']['locale']);
$record = sql_fetch_array($rs);
sql_free_result($rs);
if ($record === false) {
    $tpl->error(ERROR_USER_NOT_EXISTS);
}
$active = sql_value("SELECT COUNT(*) FROM `caches` WHERE `user_id`='&1' AND `status`=1", 0, $userid);
$rs = sql("SELECT IFNULL(`tt`.`text`, `p`.`name`) AS `name`, `u`.`option_value`, `u`.`option_id` AS `option_id`\n\t\t           FROM `profile_options` AS `p`\n\t\t      LEFT JOIN `user_options` AS `u` ON `p`.`id`=`u`.`option_id`\n\t\t      LEFT JOIN `sys_trans` AS `st` ON `st`.`id`=`p`.`trans_id` AND `st`.`text`=`p`.`name`\n\t\t      LEFT JOIN `sys_trans_text` AS `tt` ON `st`.`id`=`tt`.`trans_id` AND `tt`.`lang` = '&2'\n\t\t          WHERE `u`.`option_visible`=1\n\t\t            AND `p`.`internal_use`=0\n\t\t            AND `u`.`user_id`='&1'\n\t\t       ORDER BY `p`.`option_order`", $userid, $opt['template']['locale']);
$tpl->assign_rs('useroptions', $rs);
sql_free_result($rs);
$user_desc = sql_value("SELECT `description` FROM `user` WHERE `user_id`='&1'", "", $userid);
$user_desc = use_current_protocol_in_html($user_desc);
$tpl->assign('description', $user_desc);
$useropt = new useroptions($userid);
$show_statistics = $useropt->getOptValue(USR_OPT_SHOWSTATS);
$show_oconly81 = $useropt->getOptValue(USR_OPT_OCONLY81);
if ($show_oconly81) {
    $tpl->assign('oco81_helplink', helppagelink('oconly81'));
}
if ($show_statistics) {
    // detail statistics
    $rs = sql("SELECT COUNT(*) AS `anzahl`, `t`.`id`, IFNULL(`tt`.`text`, `t`.`name`) AS `cachetype`\n\t\t\t           FROM `caches` AS `c`\n\t\t\t      LEFT JOIN `cache_type` AS `t` ON `t`.`id`=`c`.`type`\n\t\t\t      LEFT JOIN `sys_trans` AS `st` ON `st`.`id`=`t`.`trans_id` AND `t`.`name`=`st`.`text`\n\t\t\t      LEFT JOIN `sys_trans_text` AS `tt` ON `st`.`id`=`tt`.`trans_id` AND `tt`.`lang`='&2'\n\t\t\t      LEFT JOIN `cache_status` ON `cache_status`.`id`=`c`.`status`\n\t\t\t          WHERE `c`.`user_id`='&1' AND `allow_user_view`='1'\n\t\t\t       GROUP BY `t`.`id`\n\t\t\t       ORDER BY `anzahl` DESC, `t`.`ordinal` ASC", $userid, $opt['template']['locale']);
    $tpl->assign_rs('userstatshidden', $rs);
    sql_free_result($rs);
    $rs = sql("SELECT COUNT(*) AS `anzahl`, `t`.`id`, IFNULL(`tt`.`text`, `t`.`name`) AS `cachetype`\n\t\t\t           FROM `cache_logs` AS `l`\n\t\t\t      LEFT JOIN `caches` AS `c` ON `l`.`cache_id`=`c`.`cache_id`\n\t\t\t      LEFT JOIN `cache_type` AS `t` ON `t`.`id`=`c`.`type`\n\t\t\t      LEFT JOIN `sys_trans` AS `st` ON `st`.`id`=`t`.`trans_id` AND `t`.`name`=`st`.`text`\n\t\t\t      LEFT JOIN `sys_trans_text` AS `tt` ON `st`.`id`=`tt`.`trans_id` AND `tt`.`lang`='&2'\n\t\t\t          WHERE `l`.`user_id`='&1' AND (`l`.`type`=1 OR `l`.`type`=7)\n\t\t\t       GROUP BY `t`.`id`\n\t\t\t       ORDER BY `anzahl` DESC, `t`.`ordinal` ASC", $userid, $opt['template']['locale']);
    $tpl->assign_rs('userstatsfound', $rs);
    sql_free_result($rs);
        $digits = 1;
    }
} else {
    if ($rCache['waylength'] < 50) {
        if (round($rCache['waylength'], 1) != round($rCache['waylength'], 0)) {
            $digits = 1;
        } else {
            $digits = 0;
        }
    } else {
        $digits = 0;
    }
}
$rCache['waylength'] = sprintf('%.' . $digits . 'f', $rCache['waylength']);
// replace links
$rCache['desc'] = use_current_protocol_in_html($rCache['desc']);
$rCache['adminlog'] = !$rCache['log_allowed'] && $login->admin & ADMIN_USER;
$rs = sql("\n\t\tSELECT `short` `code`, `native_name`, `stt`.`text` AS `name`\n\t\tFROM `languages`\n\t\tJOIN `cache_desc` ON `cache_desc`.`language`=`languages`.`short`\n\t\tLEFT JOIN `sys_trans_text` `stt` ON `stt`.`trans_id`=`languages`.`trans_id` AND `stt`.`lang`='&2'\n\t\tWHERE `cache_desc`.`cache_id`='&1'", $cacheid, $opt['template']['locale']);
$desclanguages = sql_fetch_assoc_table($rs);
if (count($desclanguages) == 1 && $desclanguages[0]['code'] == $opt['template']['locale']) {
    $rCache['desclanguages'] = array();
} else {
    $rCache['desclanguages'] = $desclanguages;
}
$rCache['sizeName'] = labels::getLabelValue('cache_size', $rCache['size']);
$rCache['statusName'] = labels::getLabelValue('cache_status', $rCache['status']);
$rCache['typeName'] = labels::getLabelValue('cache_type', $rCache['type']);
$rCache['userhasfound'] = false;
if ($login->userid != 0) {
    $rCache['userhasfound'] = sql_value("SELECT COUNT(*) FROM `cache_logs` WHERE `cache_id`='&1' AND `user_id`='&2' AND `type` IN (1,7)", 0, $cacheid, $login->userid) > 0;
}
 static function getLogsArray($cacheid, $start, $count, $deleted = false)
 {
     global $login;
     // negative or abornally high numbers like 1.0E+15 can crash the LIMIT selection
     if ($count <= 0 || $count > 10000) {
         return array();
     }
     //prepare the logs
     if ($deleted && ($login->admin && ADMIN_USER) > 0) {
         // admins may view owner-deleted logs
         $table = 'cache_logs_archived';
         $delfields = 'IFNULL(`u2`.`username`,"") AS `deleted_by_name`, `deletion_date`, "1" AS `deleted`';
         $addjoin = 'LEFT JOIN `user` `u2` ON `u2`.`user_id`=`cache_logs`.`deleted_by`';
     } else {
         $table = 'cache_logs';
         $delfields = '"" AS `deleted_by_name`, NULL AS `deletion_date`, "0" AS `deleted`';
         $addjoin = '';
     }
     $rsLogs = sql("\n\t\t\tSELECT `cache_logs`.`user_id` AS `userid`,\n\t\t\t\t`cache_logs`.`id` AS `id`,\n\t\t\t\t`cache_logs`.`uuid` AS `uuid`,\n\t\t\t\t`cache_logs`.`date` AS `date`,\n\t\t\t\tsubstr(`cache_logs`.`date`,12) AS `time`,  /* 00:00:01 = 00:00 logged, 00:00:00 = no time */\n\t\t\t\t`cache_logs`.`type` AS `type`,\n\t\t\t\t`cache_logs`.`oc_team_comment` AS `oc_team_comment`,\n\t\t\t\t`cache_logs`.`text` AS `text`,\n\t\t\t\t`cache_logs`.`text_html` AS `texthtml`,\n\t\t\t\t`cache_logs`.`picture`,\n\t\t\t\t" . $delfields . ",\n\t\t\t\t`user`.`username` AS `username`,\n\t\t\t\tIF(ISNULL(`cache_rating`.`cache_id`), 0, `cache_logs`.`type` IN (1,7)) AS `recommended`\n\t\t\tFROM {$table} AS `cache_logs`\n\t\t\tINNER JOIN `user` ON `user`.`user_id` = `cache_logs`.`user_id`\n\t\t\tLEFT JOIN `cache_rating` ON `cache_logs`.`cache_id`=`cache_rating`.`cache_id` AND `cache_logs`.`user_id`=`cache_rating`.`user_id` AND `cache_logs`.`date`=`cache_rating`.`rating_date`\n\t\t\t" . $addjoin . "\n\t\t\tWHERE `cache_logs`.`cache_id`='&1'\n\t\t\tORDER BY `cache_logs`.`date` DESC, `cache_logs`.`date_created` DESC\n\t\t\tLIMIT &2, &3", $cacheid, $start + 0, $count + 0);
     $logs = array();
     while ($rLog = sql_fetch_assoc($rsLogs)) {
         $pictures = array();
         $rsPictures = sql("SELECT `url`, `title`, `uuid`, `id`, `spoiler` FROM `pictures` WHERE `object_id`='&1' AND `object_type`=1", $rLog['id']);
         while ($rPicture = sql_fetch_assoc($rsPictures)) {
             $pictures[] = $rPicture;
         }
         sql_free_result($rsPictures);
         $rLog['pictures'] = $pictures;
         $rLog['text'] = use_current_protocol_in_html($rLog['text']);
         $logs[] = $rLog;
     }
     sql_free_result($rsLogs);
     return $logs;
 }
Example #4
0
    public static function getLogsArray($cacheid, $start, $count, $deleted = false, $protect_old_coords = false)
    {
        global $login, $translate;
        // negative or abornally high numbers like 1.0E+15 can crash the LIMIT statement
        if ($count <= 0 || $count > 10000) {
            return array();
        }
        $rsCoords = sql("SELECT `date_created` `date`, `latitude`, `longitude`\n\t\t\t FROM `cache_coordinates`\n\t\t\t WHERE `cache_id`='&1'\n\t\t\t ORDER BY `date_created` DESC", $cacheid);
        $coords = sql_fetch_assoc_table($rsCoords);
        if ($coords) {
            $coords[] = ['date' => '0000-00-00', 'latitude' => $coords[count($coords) - 1]['latitude'], 'longitude' => $coords[count($coords) - 1]['longitude']];
            $current_coord = new coordinate($coords[0]['latitude'], $coords[0]['longitude']);
        }
        if ($deleted && ($login->admin && ADMIN_USER) > 0) {
            // admins may view owner-deleted logs
            $table = 'cache_logs_archived';
            $delfields = 'IFNULL(`u2`.`username`,"") AS `deleted_by_name`, `deletion_date`, "1" AS `deleted`';
            $addjoin = 'LEFT JOIN `user` `u2` ON `u2`.`user_id`=`cache_logs`.`deleted_by`';
        } else {
            $table = 'cache_logs';
            $delfields = '"" AS `deleted_by_name`, NULL AS `deletion_date`, "0" AS `deleted`';
            $addjoin = '';
        }
        $rsLogs = sql('SELECT `cache_logs`.`user_id` AS `userid`,
				    `cache_logs`.`id` AS `id`,
				    `cache_logs`.`uuid` AS `uuid`,
				    `cache_logs`.`date` AS `date`,
				    `cache_logs`.`order_date` AS `order_date`,
				    `cache_logs`.`entry_last_modified`,
				    DATEDIFF(`cache_logs`.`entry_last_modified`, `cache_logs`.`date_created`) >= 1 AS `late_modified`,
				    substr(`cache_logs`.`date`,12) AS `time`,  /* 00:00:01 = 00:00 logged, 00:00:00 = no time */
				    `cache_logs`.`type` AS `type`,
				    `cache_logs`.`oc_team_comment` AS `oc_team_comment`,
				    `cache_logs`.`needs_maintenance` AS `needs_maintenance`,
				    `cache_logs`.`listing_outdated` AS `listing_outdated`,
				    `cache_logs`.`text` AS `text`,
				    `cache_logs`.`text_html` AS `texthtml`,
				    `cache_logs`.`picture`,
				    ' . $delfields . ",\n\t\t\t\t    `user`.`username` AS `username`,\n\t\t\t\t    IF(ISNULL(`cache_rating`.`cache_id`), 0, `cache_logs`.`type` IN (1,7)) AS `recommended`\n\t\t\t FROM {$table} AS `cache_logs`\n\t\t\t INNER JOIN `user` \n\t\t\t     ON `user`.`user_id` = `cache_logs`.`user_id`\n\t\t\t LEFT JOIN `cache_rating` \n\t\t\t     ON `cache_logs`.`cache_id`=`cache_rating`.`cache_id` \n\t\t\t     AND `cache_logs`.`user_id`=`cache_rating`.`user_id` \n\t\t\t     AND `cache_logs`.`date`=`cache_rating`.`rating_date`\n\t\t\t " . $addjoin . "\n\t\t\t WHERE `cache_logs`.`cache_id`='&1'\n\t\t\t ORDER BY `cache_logs`.`order_date` DESC, `cache_logs`.`date_created` DESC, `id` DESC\n\t\t\t LIMIT &2, &3", $cacheid, $start + 0, $count + 0);
        $logs = array();
        $coordpos = 0;
        $coord_changes = false;
        while ($rLog = sql_fetch_assoc($rsLogs)) {
            $pictures = array();
            $rsPictures = sql("SELECT `url`, `title`, `uuid`, `id`, `spoiler`\n\t\t\t\t FROM `pictures`\n\t\t\t\t WHERE `object_id`='&1' \n\t\t\t\t AND `object_type`=1\n\t\t\t\t ORDER BY `seq`", $rLog['id']);
            while ($rPicture = sql_fetch_assoc($rsPictures)) {
                if (trim($rPicture['title']) == '') {
                    $rPicture['title'] = $translate->t('Picture', '', '', 0) . ' ' . (count($pictures) + 1);
                }
                $pictures[] = $rPicture;
            }
            sql_free_result($rsPictures);
            $rLog['pictures'] = $pictures;
            $rLog['text'] = use_current_protocol_in_html($rLog['text']);
            $newcoord = false;
            while ($coordpos < count($coords) && $coords[$coordpos]['date'] > $rLog['order_date']) {
                if (!$newcoord) {
                    $newcoord = $coords[$coordpos];
                }
                ++$coordpos;
            }
            if ($newcoord) {
                $distance = geomath::calcDistance($newcoord['latitude'], $newcoord['longitude'], $coords[$coordpos]['latitude'], $coords[$coordpos]['longitude']);
                if (abs($distance) > 0.005) {
                    $new = new coordinate($newcoord['latitude'], $newcoord['longitude']);
                    $rLog['newcoord'] = $new->getDecimalMinutes($protect_old_coords && $new != $current_coord);
                    if ($protect_old_coords) {
                        $rLog['movedbykm'] = false;
                    } elseif ($distance <= 1) {
                        $rLog['movedbym'] = floor($distance * 1000);
                    } elseif ($distance < 10) {
                        $rLog['movedbykm'] = sprintf('%1.1f', $distance);
                    } else {
                        $rLog['movedbykm'] = round($distance);
                    }
                    $coord_changes = true;
                }
            }
            $logs[] = $rLog;
        }
        sql_free_result($rsLogs);
        if ($coord_changes) {
            $original = count($coords) - 1;
            $lastlogdate = $logs[count($logs) - 1]['order_date'];
            while ($original > 0 && $coords[$original - 1]['date'] < $lastlogdate) {
                --$original;
            }
            $coord = new coordinate($coords[$original]['latitude'], $coords[$original]['longitude']);
            $logs[] = ['newcoord' => $coord->getDecimalMinutes($protect_old_coords), 'movedby' => false];
        }
        return $logs;
    }
 private function getLists($condition, $prio = 0, $startat = 0, $maxitems = PHP_INT_MAX)
 {
     global $login;
     $login->verify();
     $rs = sql("\n\t\t\tSELECT `cache_lists`.`id`, `cache_lists`.`user_id`, `user`.`username`, \n\t\t\t       `cache_lists`.`name`, `cache_lists`.`is_public` `visibility`, `cache_lists`.`password`, \n\t\t\t\t\t\t `cache_lists`.`description`, `cache_lists`.`desc_htmledit`,\n\t\t\t       `cache_lists`.`user_id`='&1' `own_list`,\n\t\t\t       `stat_cache_lists`.`entries`, `stat_cache_lists`.`watchers`,\n\t\t\t       `w`.`user_id` IS NOT NULL `watched_by_me`,\n\t\t\t       `b`.`user_id` IS NOT NULL `bookmarked`,\n\t\t\t       {$prio} `prio`\n\t\t\tFROM `cache_lists`\n\t\t\tLEFT JOIN `stat_cache_lists` ON `stat_cache_lists`.`cache_list_id`=`cache_lists`.`id`\n\t\t\tLEFT JOIN `user` ON `user`.`user_id`=`cache_lists`.`user_id`\n\t\t\tLEFT JOIN `cache_list_watches` `w` ON `w`.`cache_list_id`=`cache_lists`.`id` AND `w`.`user_id`='&1'\n\t\t\tLEFT JOIN `cache_list_bookmarks` `b` ON `b`.`cache_list_id`=`cache_lists`.`id` AND `b`.`user_id`='&1'\n\t\t\tWHERE {$condition}\n\t\t\tORDER BY `prio`,`cache_lists`.`name`\n\t\t\tLIMIT &2,&3", $login->userid, $startat, $maxitems);
     $lists = sql_fetch_assoc_table($rs);
     foreach ($lists as &$list) {
         $list['description_for_display'] = use_current_protocol_in_html($list['description']);
     }
     return $lists;
 }
Example #6
0
 private static function getLists($condition, $prio = 0, $startat = 0, $maxitems = PHP_INT_MAX, $strip_nagchars = false)
 {
     global $login;
     $login->verify();
     $namefield = $strip_nagchars ? 'STRIP_LEADING_NONALNUM(`cache_lists`.`name`)' : '`cache_lists`.`name`';
     $rs = sql("SELECT `cache_lists`.`id`, `cache_lists`.`user_id`, `user`.`username`,\n                    {$namefield} `name`,\n                    `cache_lists`.`is_public` `visibility`, `cache_lists`.`password`,\n                    `cache_lists`.`description`, `cache_lists`.`desc_htmledit`,\n                    `cache_lists`.`user_id`='&1' `own_list`,\n                    `stat_cache_lists`.`entries`, `stat_cache_lists`.`watchers`,\n                    `w`.`user_id` IS NOT NULL `watched_by_me`,\n                    `b`.`user_id` IS NOT NULL `bookmarked`,\n                    {$prio} `prio`\n             FROM `cache_lists`\n             LEFT JOIN `stat_cache_lists` ON `stat_cache_lists`.`cache_list_id`=`cache_lists`.`id`\n             LEFT JOIN `user` ON `user`.`user_id`=`cache_lists`.`user_id`\n             LEFT JOIN `cache_list_watches` `w` ON `w`.`cache_list_id`=`cache_lists`.`id` AND `w`.`user_id`='&1'\n             LEFT JOIN `cache_list_bookmarks` `b` ON `b`.`cache_list_id`=`cache_lists`.`id` AND `b`.`user_id`='&1'\n             WHERE {$condition}\n             ORDER BY `prio`, {$namefield}\n             LIMIT &2,&3", $login->userid, $startat, $maxitems);
     $lists = sql_fetch_assoc_table($rs);
     foreach ($lists as &$list) {
         $list['description_for_display'] = use_current_protocol_in_html($list['description']);
     }
     return $lists;
 }