PHP datei ändern

[code]<?

define(‘IN_MYBB’, 1);
require_once ‘./global.php’;

if($mybb->settings[‘enablememberlist’] == “no”)
{
error($lang->memberlist_disabled);
}

if($mybb->usergroup[‘canviewmemberlist’] == “no”)
{
error_no_permission();
}

// search for location (returns XML)
if(isset($_GET[‘q’]))
{
$sql = ‘SELECT hi.loc_id as “loc_id”, level, name.text_val as “name”, land.text_val as “land"
FROM '.$settings[‘membermap_geodbprefix’].'hierarchies hi, '.$settings[‘membermap_geodbprefix’].'textdata name, ‘.$settings[‘membermap_geodbprefix’].‘textdata land
WHERE name.loc_id = hi.loc_id and name.text_type = 500100000 and name.is_default_name = 1 and
name.text_val LIKE "%’.addslashes(utf8_encode($_GET[“q”])).’%” and
land.loc_id = hi.id_lvl2 and land.text_type = 500100000 and land.is_default_name = 1 and
level >= 6 and
hi.date_type_until = 300500000 and
name.date_type_until = 300500000 and
land.date_type_until = 300500000
ORDER BY land, name’;

    $r1 = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<results>';
    while($e = $db->fetch_array($r1))
    {
            $xml .= '<result>'.
                    '<id>'.$e['loc_id'].'</id>'.
                    '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name>';

            $trace = array($e['land']);
            for($n = 3; $n < 6; $n++)
            {
                    if($n == 4)
                    {
                            continue;
                    }
                    $sql2 = 'SELECT text_val
                            FROM '.$settings['membermap_geodbprefix'].'hierarchies hi, '.$settings['membermap_geodbprefix'].'textdata td
                            WHERE hi.loc_id = '.$e['loc_id'].' and td.loc_id = hi.id_lvl'.$n.' and text_type = 500100000 and is_default_name = 1
                            ORDER BY hi.valid_until';
                    $tv = $db->query($sql2);
                    $val = '-';
                    if($db->num_rows($tv) > 0)
                    {
                            $e2 = $db->fetch_array($tv);
                            $val = $e2['text_val'];
                    }
                    if($n != 5 or $val != '-')
                    {
                            $trace[] = $val;
                    }
            }
            if($e['level'] > 6)
            {
                    $trace[] = $e['name'];
            }
            for($i = 0; $i < count($trace); $i++)
            {
                    $xml .= '<trace'.$i.'>'.htmlspecialchars($trace[$i], ENT_COMPAT, 'UTF-8').'</trace'.$i.'>';
            }
            $xml .= '</result>';
    }
    $xml .= '</results>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘qu’]))
{
$sql = ‘SELECT m.loc_id, m.uid, u.username, name.text_val as “name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN ‘.$settings[‘membermap_geodbprefix’].‘textdata name ON m.loc_id = name.loc_id
WHERE name.text_type = 500100000 and name.is_default_name = 1 and
u.username LIKE "%’.addslashes(utf8_encode($_GET[“qu”])).’%” and name.date_type_until = 300500000
ORDER BY u.username, name’;
$r = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<results>';

    while($e = $db->fetch_array($r))
    {
            $xml .= '<result><uid>'.$e['uid'].'</uid>'.
                    '<locid>'.$e['loc_id'].'</locid>'.
                    '<username>'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</username>'.
                    '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name></result>';
    }
    $xml .= '</results>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
// show location details
elseif(isset($_GET[‘loc_id’]))
{
$loc_id = intval($_GET[“loc_id”]);
$sql = 'SELECT name.loc_id, name.text_val as “name”, iso.text_val as “iso”, land.text_val as “land”, level, lon, lat
FROM '.$settings[‘membermap_geodbprefix’].'hierarchies hi, '.$settings[‘membermap_geodbprefix’].'textdata name, '.$settings[‘membermap_geodbprefix’].'textdata iso, '.$settings[‘membermap_geodbprefix’].'textdata land, '.$settings[‘membermap_geodbprefix’].‘coordinates co
WHERE hi.loc_id = ‘.$loc_id.’ and name.loc_id = hi.loc_id and name.text_type = 500100000 and name.is_default_name = 1 and
iso.loc_id = hi.id_lvl2 and iso.text_type = 500100001 and
land.loc_id = hi.id_lvl2 and land.text_type = 500100000 and land.is_default_name = 1 and
co.loc_id = hi.loc_id
ORDER BY hi.valid_until DESC’;

    $res = $db->query($sql);
    $loc = $db->fetch_array($res);

    $lvl_name = array(3 => 'bland', 'regbezirk', 'lkreis');

    $map = new map($settings['membermap_mappath']);
    $range = explode(',', $settings['membermap_range']);
    $map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));
    #$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<result>'.
            '<name>'.htmlspecialchars($loc['name'], ENT_COMPAT, 'UTF-8').'</name>'.
            '<land>'.htmlspecialchars($loc['land'], ENT_COMPAT, 'UTF-8').'</land>'.
            '<x>'.round($map->scale($loc['lon'], 'x')).'</x>'.
            '<y>'.round($map->scale($loc['lat'], 'y')).'</y>';

    for($n = 3; $n < 6; $n++)
    {
            $sql2 = 'SELECT text_val
                    FROM '.$settings['membermap_geodbprefix'].'hierarchies hi, '.$settings['membermap_geodbprefix'].'textdata td
                    WHERE hi.loc_id = '.$loc_id.' and td.loc_id = hi.id_lvl'.$n.' and text_type = 500100000 and is_default_name = 1
                    ORDER BY hi.valid_until DESC';
            $tv = $db->query($sql2);
            if($db->num_rows($tv) > 0)
            {
                    $e = $db->fetch_array($tv);
                    $xml .= '<'.$lvl_name[$n].'>'.htmlspecialchars($e["text_val"], ENT_COMPAT, 'UTF-8').'</'.$lvl_name[$n].'>';
            }
    }

$sql2 = ‘SELECT text_val
FROM ‘.$settings[‘membermap_geodbprefix’].‘textdata
WHERE loc_id = ‘.$loc_id.’ and text_type = 500700000 and is_default_name = 1
ORDER BY valid_until DESC’;
$tv = $db->query($sql2);
if($db->num_rows($tv) > 0)
{
$e = $db->fetch_array($tv);
$xml .= ‘’.htmlspecialchars($e[“text_val”], ENT_COMPAT, ‘UTF-8’).’’;
}

    $sql2 = 'SELECT text_val
            FROM '.$settings['membermap_geodbprefix'].'textdata
            WHERE loc_id = '.$loc_id.' and text_type = 500300000
            ORDER BY valid_until DESC';
    $res = $db->query($sql2);
    if($db->num_rows($res) > 0)
    {
            $plz = array();
            while($e = $db->fetch_array($res))
            {
                    $plz[] = $e["text_val"];
            }
            $xml .= '<plz>'.implode(',', $plz).'</plz>';
    }
    $xml .= '</result>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘mapinfo’]))
{
#$db->query(‘SET NAMES “utf8”’);
$loc_id = intval($_GET[‘mapinfo’]);
$sql = 'SELECT u.uid, u.username, name.text_val AS "name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN '.$settings[‘membermap_geodbprefix’].‘textdata name ON name.loc_id = m.loc_id
WHERE m.loc_id = ‘.$loc_id.’ and name.text_type = 500100000 and name.is_default_name = 1’;
$r = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<result>';
    if($db->num_rows($r) > 0)
    {
            $e = $db->fetch_array($r);
            $xml .= '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name>'.
                    '<user uid="'.$e['uid'].'">'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</user>';

            while($e = $db->fetch_array($r))
            {
                    $xml .= '<user uid="'.$e['uid'].'">'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</user>';
            }
    }
    $xml .= '</result>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘setloc’]))
{
if($mybb->user[‘uid’] == 0)
error_no_permission();
$loc_id = intval($_GET[‘setloc’]);
$r = $db->query('SELECT * FROM '.TABLE_PREFIX.‘membermap WHERE uid = ‘.$mybb->user[‘uid’]);
if($db->num_rows($r) > 0)
$db->query(‘UPDATE ‘.TABLE_PREFIX.‘membermap SET loc_id = ‘.$loc_id.’ WHERE uid = ‘.$mybb->user[‘uid’]);
else
$db->query(‘INSERT INTO ‘.TABLE_PREFIX.‘membermap(uid, loc_id) VALUES("’.$mybb->user[‘uid’].’", "’.$loc_id.’")’);
header(‘Location: membermap.php’);
}
elseif(isset($_GET[‘showmap’]))
{
$map = new map($settings[‘membermap_mappath’]);
$range = explode(’,’, $settings[‘membermap_range’]);
$map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));
#$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
$sql = ‘SELECT co.loc_id, co.lon, co.lat, COUNT(m.loc_id) AS "num"
FROM ‘.TABLE_PREFIX.‘membermap AS m
JOIN ‘.$settings[‘membermap_geodbprefix’].‘coordinates co ON m.loc_id = co.loc_id
GROUP BY m.loc_id’;
$r = $db->query($sql);
$pointcolor = explode(’,’, $settings[‘membermap_pointcolor’]);
$col = $map->color((int)trim($pointcolor[0]), (int)trim($pointcolor[1]), (int)trim($pointcolor[2]));
if($settings[‘membermap_drawpointborder’] == ‘yes’)
{
$pointcolor2 = explode(’,’, $settings[‘membermap_pointcolor2’]);
$col2 = $map->color((int)trim($pointcolor2[0]), (int)trim($pointcolor2[1]), (int)trim($pointcolor2[2]));
}
$sizelimit = explode(’,’, $settings[‘membermap_sizelimit’]);
while($e = $db->fetch_array($r))
{
if($e[‘num’] > (int)trim($sizelimit[1]))
$size = 8;
elseif($e[‘num’] > (int)trim($sizelimit[0]))
$size = 6;
else
$size = 4;
if($settings[‘membermap_drawpointborder’] == ‘yes’)
$map->drawdot($e[‘lon’], $e[‘lat’], $size + 2, $col2);
$map->drawdot($e[‘lon’], $e[‘lat’], $size, $col);
}
header(‘Content-Type: image/png’);
print $map->dump();
}
// print website
else
{
$lang->load(“membermap”);
$templatelist = “map”;
add_breadcrumb($lang->member_map, “map.php”);
$membermapisuser = ($mybb->user[‘uid’] > 0) ? ‘true’ : ‘false’;
$membemap_lang = “var membermap_lang = Array();\n”.
“membermap_lang[“not_supported”] = “”.addslashes($lang->not_supported).”";\n".
“membermap_lang[“loading”] = “”.addslashes($lang->loading).”";\n".
“membermap_lang[“min3chars”] = “”.addslashes($lang->min3chars).”";\n".
“membermap_lang[“locs_found”] = “”.addslashes($lang->locs_found).”";\n".
“membermap_lang[“users_found”] = “”.addslashes($lang->users_found).”";\n".
“membermap_lang[“country”] = “”.addslashes($lang->country).”";\n".
“membermap_lang[“land”] = “”.addslashes($lang->land).”";\n".
“membermap_lang[“district”] = “”.addslashes($lang->district).”";\n".
“membermap_lang[“county”] = “”.addslashes($lang->county).”";\n".
“membermap_lang[“commune”] = “”.addslashes($lang->commune).”";\n".
“membermap_lang[“zipcode”] = “”.addslashes($lang->zipcode).”";\n".
“membermap_lang[“mark_as_residence”] = “”.addslashes($lang->mark_as_residence).”";\n".
“membermap_lang[“users_from”] = “”.addslashes($lang->users_from).”";\n";

    $map = new map($settings['membermap_mappath']);
    $range = explode(',', $settings['membermap_range']);
    $map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));

#$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
$sql = 'SELECT m.loc_id, co.lon, co.lat, u.username, name.text_val AS “name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN '.$settings[‘membermap_geodbprefix’].‘coordinates co ON co.loc_id = m.loc_id
JOIN ‘.$settings[‘membermap_geodbprefix’].‘textdata name ON name.loc_id = m.loc_id
WHERE name.text_type = 500100000 and name.is_default_name = 1
ORDER BY m.loc_id’;
$r = $db->query($sql);
$locations = array();
while($e = $db->fetch_array($r))
{
if(!isset($locations[$e[‘loc_id’]]))
{
$locations[$e[‘loc_id’]] = array(
‘users’ => ‘’,
‘name’ => addslashes($e[‘name’]),
‘x’ => round($map->scale($e[‘lon’], ‘x’)),
‘y’ => round($map->scale($e[‘lat’], ‘y’)),
‘num’ => 1
);
}
$locations[$e[‘loc_id’]][‘users’] .= addslashes($e[‘username’]).’, ‘;
$locations[$e[‘loc_id’]][‘num’]++;
}
$ids = array_keys($locations);
$membermapareas = ‘’;
$sizelimit = explode(’,’, $settings[‘membermap_sizelimit’]);
for($i = 0; $i < count($locations); $i++)
{
if($locations[$ids[$i]][‘num’] > (int)trim($sizelimit[1]))
$size = 8;
elseif($locations[$ids[$i]][‘num’] > (int)trim($sizelimit[0]))
$size = 6;
else
$size = 4;
$membermapareas .= ‘’.”\n";
}

    eval("\$map = \"".$templates->get("map")."\";");
    output_page($map);

}

/**

  • the map class provides the basic operations for creating maps

    • image-handling
    • color-handling
    • file-handling
    • clipping
    • scaling
    • coordinate convertion
    • long/lat to x/y
  • http://jan.kneschke.de/projects/
    */
    class map {
    var $img;
    var $size_x;
    var $size_y;

     var $min;
     var $max;
    
     var $scale;
    
     /**
     * prepares the image generation and inits the internal variables
     *
     * @param $size_x width of the generated image
     * @param $size_y height of the generated image
     */
    
     function map ($size_x, $size_y = -1) {
             if (is_file($size_x)) {
                     $this->img = imagecreatefrompng($size_x);
    
                     $this->size_x = imagesx($this->img);
                     $this->size_y = imagesy($this->img);
             } else {
                     $this->size_x = $size_x;
                     $this->size_y = $size_y;
    
                     if (!isset($this->size_x) ||
                             $this->size_x < 0 ||
                             $this->size_x > 2048) {
                             $this->size_x = 640;
                     }
    
                     if (!isset($this->size_y) ||
                             $this->size_y < 0 ||
                             $this->size_y > 2048) {
                             $this->size_y = 480;
                     }
    
                     $this->img = imagecreate($this->size_x, $this->size_y);
             }
    
             $this->min = array('x' => 9, 'y' => 55);
             $this->max = array('x' => 11, 'y' => 54);
     }
    
     /**
     * set the range of the map which has to be generated
     *
     * @param $x1 lower longitude
     * @param $x2 higher longitude
     * @param $y1 lower latitude
     * @param $y2 higher latitude
     *
     */
    
     function set_range($x1, $x2, $y1, $y2) {
             $this->min = array('x' => $x1, 'y' => $y1);
             $this->max = array('x' => $x2, 'y' => $y2);
     }
    
     /**
     * scale a point from polar-coordinates to image-coordinates
     *
     * @param $p point (array('x' => 0, 'y' => 1);
     * @param $d direction ('x' or 'y')
     */
    
     function scale($p, $d) {
             if ($d == 'y') {
                     $r = ($p - $this->max[$d]) * ($this->size_y / ($this->min[$d] - $this->max[$d]));
             } else {
                     $r = ($p - $this->min[$d]) * ($this->size_x / ($this->max[$d] - $this->min[$d]));
             }
                     return $r;
     }
    
     function drawdot($x, $y, $size, $col)
     {
             imagefilledellipse($this->img, $this->scale($x, 'x'), $this->scale($y, 'y'), $size, $size, $col);
     }
    
     /**
     * Write the generated map the the harddisk
     *
     * @param $fn string filename
     */
    
     function dump($fn = null) {
             if($fn === null)
                     return imagepng($this->img);
             else
                     return imagepng($this->img, $fn);
     }
    
     /**
     * allocate the colors for the image
     *
     * @param $r red
     * @param $g green
     * @param $b blue
     */
     function color($r, $g, $b) {
             return imagecolorallocate($this->img, $r, $g, $b);
     }
    

}

?>[/code]

Da möchte ich folgendes hinzufügen ich weiß nur nicht wo?

if($mybb->user['uid'] == 1) { error_no_permission(); }

Wäre jemand so freundlich und hilft mir?

Direkt hinter den 2 anderen IFs

Da gibts soviele ifs kannst du es mir mal bitte einzeichnen?

er meint wohl die ersten 2

Das klappt alles nicht kanns mir mal bitte einer auzug mit einsatz posten

[code]<?

define(‘IN_MYBB’, 1);
require_once ‘./global.php’;

if($mybb->settings[‘enablememberlist’] == “no”)
{
error($lang->memberlist_disabled);
}

if(($mybb->usergroup[‘canviewmemberlist’] == “no”) || ($mybb->user[‘uid’] == 1))
//da die ausgabe die selbe ist, habe ich das in die vorhanden if-schleife eingetragen
{
error_no_permission();
}

// search for location (returns XML)
if(isset($_GET[‘q’]))
{
$sql = ‘SELECT hi.loc_id as “loc_id”, level, name.text_val as “name”, land.text_val as “land"
FROM '.$settings[‘membermap_geodbprefix’].'hierarchies hi, '.$settings[‘membermap_geodbprefix’].'textdata name, ‘.$settings[‘membermap_geodbprefix’].‘textdata land
WHERE name.loc_id = hi.loc_id and name.text_type = 500100000 and name.is_default_name = 1 and
name.text_val LIKE "%’.addslashes(utf8_encode($_GET[“q”])).’%” and
land.loc_id = hi.id_lvl2 and land.text_type = 500100000 and land.is_default_name = 1 and
level >= 6 and
hi.date_type_until = 300500000 and
name.date_type_until = 300500000 and
land.date_type_until = 300500000
ORDER BY land, name’;

    $r1 = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<results>';
    while($e = $db->fetch_array($r1))
    {
            $xml .= '<result>'.
                    '<id>'.$e['loc_id'].'</id>'.
                    '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name>';

            $trace = array($e['land']);
            for($n = 3; $n < 6; $n++)
            {
                    if($n == 4)
                    {
                            continue;
                    }
                    $sql2 = 'SELECT text_val
                            FROM '.$settings['membermap_geodbprefix'].'hierarchies hi, '.$settings['membermap_geodbprefix'].'textdata td
                            WHERE hi.loc_id = '.$e['loc_id'].' and td.loc_id = hi.id_lvl'.$n.' and text_type = 500100000 and is_default_name = 1
                            ORDER BY hi.valid_until';
                    $tv = $db->query($sql2);
                    $val = '-';
                    if($db->num_rows($tv) > 0)
                    {
                            $e2 = $db->fetch_array($tv);
                            $val = $e2['text_val'];
                    }
                    if($n != 5 or $val != '-')
                    {
                            $trace[] = $val;
                    }
            }
            if($e['level'] > 6)
            {
                    $trace[] = $e['name'];
            }
            for($i = 0; $i < count($trace); $i++)
            {
                    $xml .= '<trace'.$i.'>'.htmlspecialchars($trace[$i], ENT_COMPAT, 'UTF-8').'</trace'.$i.'>';
            }
            $xml .= '</result>';
    }
    $xml .= '</results>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘qu’]))
{
$sql = ‘SELECT m.loc_id, m.uid, u.username, name.text_val as “name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN ‘.$settings[‘membermap_geodbprefix’].‘textdata name ON m.loc_id = name.loc_id
WHERE name.text_type = 500100000 and name.is_default_name = 1 and
u.username LIKE "%’.addslashes(utf8_encode($_GET[“qu”])).’%” and name.date_type_until = 300500000
ORDER BY u.username, name’;
$r = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<results>';

    while($e = $db->fetch_array($r))
    {
            $xml .= '<result><uid>'.$e['uid'].'</uid>'.
                    '<locid>'.$e['loc_id'].'</locid>'.
                    '<username>'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</username>'.
                    '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name></result>';
    }
    $xml .= '</results>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
// show location details
elseif(isset($_GET[‘loc_id’]))
{
$loc_id = intval($_GET[“loc_id”]);
$sql = 'SELECT name.loc_id, name.text_val as “name”, iso.text_val as “iso”, land.text_val as “land”, level, lon, lat
FROM '.$settings[‘membermap_geodbprefix’].'hierarchies hi, '.$settings[‘membermap_geodbprefix’].'textdata name, '.$settings[‘membermap_geodbprefix’].'textdata iso, '.$settings[‘membermap_geodbprefix’].'textdata land, '.$settings[‘membermap_geodbprefix’].‘coordinates co
WHERE hi.loc_id = ‘.$loc_id.’ and name.loc_id = hi.loc_id and name.text_type = 500100000 and name.is_default_name = 1 and
iso.loc_id = hi.id_lvl2 and iso.text_type = 500100001 and
land.loc_id = hi.id_lvl2 and land.text_type = 500100000 and land.is_default_name = 1 and
co.loc_id = hi.loc_id
ORDER BY hi.valid_until DESC’;

    $res = $db->query($sql);
    $loc = $db->fetch_array($res);

    $lvl_name = array(3 => 'bland', 'regbezirk', 'lkreis');

    $map = new map($settings['membermap_mappath']);
    $range = explode(',', $settings['membermap_range']);
    $map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));
    #$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<result>'.
            '<name>'.htmlspecialchars($loc['name'], ENT_COMPAT, 'UTF-8').'</name>'.
            '<land>'.htmlspecialchars($loc['land'], ENT_COMPAT, 'UTF-8').'</land>'.
            '<x>'.round($map->scale($loc['lon'], 'x')).'</x>'.
            '<y>'.round($map->scale($loc['lat'], 'y')).'</y>';

    for($n = 3; $n < 6; $n++)
    {
            $sql2 = 'SELECT text_val
                    FROM '.$settings['membermap_geodbprefix'].'hierarchies hi, '.$settings['membermap_geodbprefix'].'textdata td
                    WHERE hi.loc_id = '.$loc_id.' and td.loc_id = hi.id_lvl'.$n.' and text_type = 500100000 and is_default_name = 1
                    ORDER BY hi.valid_until DESC';
            $tv = $db->query($sql2);
            if($db->num_rows($tv) > 0)
            {
                    $e = $db->fetch_array($tv);
                    $xml .= '<'.$lvl_name[$n].'>'.htmlspecialchars($e["text_val"], ENT_COMPAT, 'UTF-8').'</'.$lvl_name[$n].'>';
            }
    }

$sql2 = ‘SELECT text_val
FROM ‘.$settings[‘membermap_geodbprefix’].‘textdata
WHERE loc_id = ‘.$loc_id.’ and text_type = 500700000 and is_default_name = 1
ORDER BY valid_until DESC’;
$tv = $db->query($sql2);
if($db->num_rows($tv) > 0)
{
$e = $db->fetch_array($tv);
$xml .= ‘’.htmlspecialchars($e[“text_val”], ENT_COMPAT, ‘UTF-8’).’’;
}

    $sql2 = 'SELECT text_val
            FROM '.$settings['membermap_geodbprefix'].'textdata
            WHERE loc_id = '.$loc_id.' and text_type = 500300000
            ORDER BY valid_until DESC';
    $res = $db->query($sql2);
    if($db->num_rows($res) > 0)
    {
            $plz = array();
            while($e = $db->fetch_array($res))
            {
                    $plz[] = $e["text_val"];
            }
            $xml .= '<plz>'.implode(',', $plz).'</plz>';
    }
    $xml .= '</result>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘mapinfo’]))
{
#$db->query(‘SET NAMES “utf8”’);
$loc_id = intval($_GET[‘mapinfo’]);
$sql = 'SELECT u.uid, u.username, name.text_val AS "name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN '.$settings[‘membermap_geodbprefix’].‘textdata name ON name.loc_id = m.loc_id
WHERE m.loc_id = ‘.$loc_id.’ and name.text_type = 500100000 and name.is_default_name = 1’;
$r = $db->query($sql);

    $xml = '<?xml version="1.0" encoding="utf-8"?'.'>'.
            '<result>';
    if($db->num_rows($r) > 0)
    {
            $e = $db->fetch_array($r);
            $xml .= '<name>'.htmlspecialchars($e['name'], ENT_COMPAT, 'UTF-8').'</name>'.
                    '<user uid="'.$e['uid'].'">'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</user>';

            while($e = $db->fetch_array($r))
            {
                    $xml .= '<user uid="'.$e['uid'].'">'.htmlspecialchars($e['username'], ENT_COMPAT, 'UTF-8').'</user>';
            }
    }
    $xml .= '</result>';
    header('Content-Type: text/xml; charset=utf-8');
    print $xml;

}
elseif(isset($_GET[‘setloc’]))
{
if($mybb->user[‘uid’] == 0)
error_no_permission();
$loc_id = intval($_GET[‘setloc’]);
$r = $db->query('SELECT * FROM '.TABLE_PREFIX.‘membermap WHERE uid = ‘.$mybb->user[‘uid’]);
if($db->num_rows($r) > 0)
$db->query(‘UPDATE ‘.TABLE_PREFIX.‘membermap SET loc_id = ‘.$loc_id.’ WHERE uid = ‘.$mybb->user[‘uid’]);
else
$db->query(‘INSERT INTO ‘.TABLE_PREFIX.‘membermap(uid, loc_id) VALUES("’.$mybb->user[‘uid’].’", "’.$loc_id.’")’);
header(‘Location: membermap.php’);
}
elseif(isset($_GET[‘showmap’]))
{
$map = new map($settings[‘membermap_mappath’]);
$range = explode(’,’, $settings[‘membermap_range’]);
$map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));
#$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
$sql = ‘SELECT co.loc_id, co.lon, co.lat, COUNT(m.loc_id) AS "num"
FROM ‘.TABLE_PREFIX.‘membermap AS m
JOIN ‘.$settings[‘membermap_geodbprefix’].‘coordinates co ON m.loc_id = co.loc_id
GROUP BY m.loc_id’;
$r = $db->query($sql);
$pointcolor = explode(’,’, $settings[‘membermap_pointcolor’]);
$col = $map->color((int)trim($pointcolor[0]), (int)trim($pointcolor[1]), (int)trim($pointcolor[2]));
if($settings[‘membermap_drawpointborder’] == ‘yes’)
{
$pointcolor2 = explode(’,’, $settings[‘membermap_pointcolor2’]);
$col2 = $map->color((int)trim($pointcolor2[0]), (int)trim($pointcolor2[1]), (int)trim($pointcolor2[2]));
}
$sizelimit = explode(’,’, $settings[‘membermap_sizelimit’]);
while($e = $db->fetch_array($r))
{
if($e[‘num’] > (int)trim($sizelimit[1]))
$size = 8;
elseif($e[‘num’] > (int)trim($sizelimit[0]))
$size = 6;
else
$size = 4;
if($settings[‘membermap_drawpointborder’] == ‘yes’)
$map->drawdot($e[‘lon’], $e[‘lat’], $size + 2, $col2);
$map->drawdot($e[‘lon’], $e[‘lat’], $size, $col);
}
header(‘Content-Type: image/png’);
print $map->dump();
}
// print website
else
{
$lang->load(“membermap”);
$templatelist = “map”;
add_breadcrumb($lang->member_map, “map.php”);
$membermapisuser = ($mybb->user[‘uid’] > 0) ? ‘true’ : ‘false’;
$membemap_lang = “var membermap_lang = Array();\n”.
“membermap_lang[“not_supported”] = “”.addslashes($lang->not_supported).”";\n".
“membermap_lang[“loading”] = “”.addslashes($lang->loading).”";\n".
“membermap_lang[“min3chars”] = “”.addslashes($lang->min3chars).”";\n".
“membermap_lang[“locs_found”] = “”.addslashes($lang->locs_found).”";\n".
“membermap_lang[“users_found”] = “”.addslashes($lang->users_found).”";\n".
“membermap_lang[“country”] = “”.addslashes($lang->country).”";\n".
“membermap_lang[“land”] = “”.addslashes($lang->land).”";\n".
“membermap_lang[“district”] = “”.addslashes($lang->district).”";\n".
“membermap_lang[“county”] = “”.addslashes($lang->county).”";\n".
“membermap_lang[“commune”] = “”.addslashes($lang->commune).”";\n".
“membermap_lang[“zipcode”] = “”.addslashes($lang->zipcode).”";\n".
“membermap_lang[“mark_as_residence”] = “”.addslashes($lang->mark_as_residence).”";\n".
“membermap_lang[“users_from”] = “”.addslashes($lang->users_from).”";\n";

    $map = new map($settings['membermap_mappath']);
    $range = explode(',', $settings['membermap_range']);
    $map->set_range((float)trim($range[0]), (float)trim($range[1]), (float)trim($range[2]), (float)trim($range[3]));

#$map->set_range(5.85, 17.1685, 45.8229, 55.0675);
$sql = 'SELECT m.loc_id, co.lon, co.lat, u.username, name.text_val AS “name"
FROM '.TABLE_PREFIX.'membermap m
JOIN '.TABLE_PREFIX.'users u ON m.uid = u.uid
JOIN '.$settings[‘membermap_geodbprefix’].‘coordinates co ON co.loc_id = m.loc_id
JOIN ‘.$settings[‘membermap_geodbprefix’].‘textdata name ON name.loc_id = m.loc_id
WHERE name.text_type = 500100000 and name.is_default_name = 1
ORDER BY m.loc_id’;
$r = $db->query($sql);
$locations = array();
while($e = $db->fetch_array($r))
{
if(!isset($locations[$e[‘loc_id’]]))
{
$locations[$e[‘loc_id’]] = array(
‘users’ => ‘’,
‘name’ => addslashes($e[‘name’]),
‘x’ => round($map->scale($e[‘lon’], ‘x’)),
‘y’ => round($map->scale($e[‘lat’], ‘y’)),
‘num’ => 1
);
}
$locations[$e[‘loc_id’]][‘users’] .= addslashes($e[‘username’]).’, ‘;
$locations[$e[‘loc_id’]][‘num’]++;
}
$ids = array_keys($locations);
$membermapareas = ‘’;
$sizelimit = explode(’,’, $settings[‘membermap_sizelimit’]);
for($i = 0; $i < count($locations); $i++)
{
if($locations[$ids[$i]][‘num’] > (int)trim($sizelimit[1]))
$size = 8;
elseif($locations[$ids[$i]][‘num’] > (int)trim($sizelimit[0]))
$size = 6;
else
$size = 4;
$membermapareas .= ‘’.”\n";
}

    eval("\$map = \"".$templates->get("map")."\";");
    output_page($map);

}

/**

  • the map class provides the basic operations for creating maps

    • image-handling
    • color-handling
    • file-handling
    • clipping
    • scaling
    • coordinate convertion
    • long/lat to x/y
  • http://jan.kneschke.de/projects/
    */
    class map {
    var $img;
    var $size_x;
    var $size_y;

      var $min;
      var $max;
    
      var $scale;
    
      /**
      * prepares the image generation and inits the internal variables
      *
      * @param $size_x width of the generated image
      * @param $size_y height of the generated image
      */
    
      function map ($size_x, $size_y = -1) {
              if (is_file($size_x)) {
                      $this->img = imagecreatefrompng($size_x);
    
                      $this->size_x = imagesx($this->img);
                      $this->size_y = imagesy($this->img);
              } else {
                      $this->size_x = $size_x;
                      $this->size_y = $size_y;
    
                      if (!isset($this->size_x) ||
                              $this->size_x < 0 ||
                              $this->size_x > 2048) {
                              $this->size_x = 640;
                      }
    
                      if (!isset($this->size_y) ||
                              $this->size_y < 0 ||
                              $this->size_y > 2048) {
                              $this->size_y = 480;
                      }
    
                      $this->img = imagecreate($this->size_x, $this->size_y);
              }
    
              $this->min = array('x' => 9, 'y' => 55);
              $this->max = array('x' => 11, 'y' => 54);
      }
    
      /**
      * set the range of the map which has to be generated
      *
      * @param $x1 lower longitude
      * @param $x2 higher longitude
      * @param $y1 lower latitude
      * @param $y2 higher latitude
      *
      */
    
      function set_range($x1, $x2, $y1, $y2) {
              $this->min = array('x' => $x1, 'y' => $y1);
              $this->max = array('x' => $x2, 'y' => $y2);
      }
    
      /**
      * scale a point from polar-coordinates to image-coordinates
      *
      * @param $p point (array('x' => 0, 'y' => 1);
      * @param $d direction ('x' or 'y')
      */
    
      function scale($p, $d) {
              if ($d == 'y') {
                      $r = ($p - $this->max[$d]) * ($this->size_y / ($this->min[$d] - $this->max[$d]));
              } else {
                      $r = ($p - $this->min[$d]) * ($this->size_x / ($this->max[$d] - $this->min[$d]));
              }
                      return $r;
      }
    
      function drawdot($x, $y, $size, $col)
      {
              imagefilledellipse($this->img, $this->scale($x, 'x'), $this->scale($y, 'y'), $size, $size, $col);
      }
    
      /**
      * Write the generated map the the harddisk
      *
      * @param $fn string filename
      */
    
      function dump($fn = null) {
              if($fn === null)
                      return imagepng($this->img);
              else
                      return imagepng($this->img, $fn);
      }
    
      /**
      * allocate the colors for the image
      *
      * @param $r red
      * @param $g green
      * @param $b blue
      */
      function color($r, $g, $b) {
              return imagecolorallocate($this->img, $r, $g, $b);
      }
    

}

?>[/code]