if (isset($_GET['refresh']) && $USER->hasPerm('admin')) {
    $smarty->clear_cache($template, $cacheid);
}
$smarty->assign_by_ref('references_real', $CONF['references']);
if (!$smarty->is_cached($template, $cacheid)) {
    $db = NewADOConnection($GLOBALS['DSN']);
    if (!$db) {
        die('Database connection failed');
    }
    #$db->debug = true;
    $mosaic = new GeographMapMosaic();
    $mosaic->setScale(40);
    $mosaic->setMosaicFactor(2);
    $mostarray = array();
    foreach ($CONF['references'] as $ri => $rname) {
        $letterlength = $CONF['gridpreflen'][$ri];
        $most = $db->GetAll("select \n\t\tgrid_reference,x,y,\n\t\tconcat(substring(grid_reference,1," . ($letterlength + 1) . "),substring(grid_reference," . ($letterlength + 3) . ",1)) as tenk_square,\n\t\tsum(has_geographs) as geograph_count,\n\t\tsum(percent_land >0) as land_count\n\t\tfrom gridsquare \n\t\twhere reference_index = {$ri} \n\t\tgroup by tenk_square \n\t\thaving geograph_count = 0 and land_count > 0\n\t\torder by tenk_square");
        $i = 1;
        $lastgeographs = -1;
        foreach ($most as $id => $entry) {
            $most[$id]['x'] = intval(($most[$id]['x'] - $CONF['origins'][$ri][0]) / 10) * 10 + $CONF['origins'][$ri][0];
            $most[$id]['y'] = intval(($most[$id]['y'] - $CONF['origins'][$ri][1]) / 10) * 10 + $CONF['origins'][$ri][1];
            //get a token to show a suroudding geograph map
            $mosaic->setOrigin($most[$id]['x'], $most[$id]['y']);
            $most[$id]['map_token'] = $mosaic->getToken();
        }
        $mostarray += array($ri => $most);
    }
    $smarty->assign_by_ref("most", $mostarray);
}
$smarty->display($template, $cacheid);
 /**
  * get a url that will zoom us out one level from this gridsquare
  * @access public
  */
 function getGridSquareToken($gridsquare)
 {
     if (is_numeric($gridsquare)) {
         $id = $gridsquare;
         $gridsquare = new GridSquare();
         $gridsquare->loadFromId($id);
     }
     $out = new GeographMapMosaic();
     //start with same params
     $out->setScale(40);
     $out->setMosaicFactor(2);
     $out->setCentre($gridsquare->x, $gridsquare->y, true);
     //true to align to 10x10 map
     return $out->getToken();
 }
    $ri = $second['reference_index'];
    $letterlength = $CONF['gridpreflen'][$ri];
    $smarty->assign('ofe', $letterlength + 1);
    $smarty->assign('ofn', $letterlength + 3);
    //assign all the other useful stuff
    $gr = $map->getGridRef(-1, -1);
    $smarty->assign('gridref', $gr);
    if ($map->pixels_per_km == 4) {
        $starte = substr($gr, $letterlength, 2);
        $starte = intval($starte) - 50;
        if ($starte < 0) {
            $starte += 100;
        }
        $startn = substr($gr, $letterlength + 2, 2);
        $startn = intval($startn) + 50;
        if ($startn > 100) {
            $startn -= 100;
        }
        $smarty->assign('starte', $starte);
        $smarty->assign('startn', $startn - 1);
    } else {
        $mosaic = new GeographMapMosaic();
        $mosaic->setToken($_GET['t'], true);
        $smarty->assign('mosaic_token', $mosaic->getToken());
        $smarty->assign('token_north', $map->getPanToken(0, 1));
        $smarty->assign('token_south', $map->getPanToken(0, -1));
        $smarty->assign('token_west', $map->getPanToken(-1, 0));
        $smarty->assign('token_east', $map->getPanToken(1, 0));
    }
}
$smarty->display($template, $cacheid);
    foreach ($CONF['references'] as $ri => $rname) {
        $letterlength = $CONF['gridpreflen'][$ri];
        $prev_fetch_mode = $ADODB_FETCH_MODE;
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        $most = $db->GetAll("select \n\t\tgrid_reference,x,y,\n\t\tconcat(substring(grid_reference,1," . ($letterlength + 1) . "),substring(grid_reference," . ($letterlength + 3) . ",1)) as tenk_square,\n\t\tsum(has_geographs) as geograph_count,\n\t\tsum(percent_land >0) as land_count,\n\t\t(sum(has_geographs) * 100 / sum(percent_land >0)) as percentage\n\t\tfrom gridsquare \n\t\twhere reference_index = {$ri} \n\t\tgroup by tenk_square \n\t\thaving geograph_count > 0 and percentage >=100\n\t\torder by percentage desc,tenk_square");
        $ADODB_FETCH_MODE = $prev_fetch_mode;
        $lastgeographs = -1;
        foreach ($most as $id => $entry) {
            $most[$id]['x'] = intval(($most[$id]['x'] - $CONF['origins'][$ri][0]) / 10) * 10 + $CONF['origins'][$ri][0];
            $most[$id]['y'] = intval(($most[$id]['y'] - $CONF['origins'][$ri][1]) / 10) * 10 + $CONF['origins'][$ri][1];
            //get a token to show a suroudding geograph map
            $mosaic->setOrigin($most[$id]['x'], $most[$id]['y']);
            $most[$id]['map_token'] = $mosaic->getToken();
            //get a token to show a suroudding geograph map
            $largemosaic->setOrigin($most[$id]['x'], $most[$id]['y']);
            $most[$id]['largemap_token'] = $largemosaic->getToken();
            //actully we don't need the full loading of a square
            //$ok = $censquare->loadFromPosition($most[$id]['x'],$most[$id]['y']);
            $censquare->x = $most[$id]['x'];
            $censquare->y = $most[$id]['y'];
            $crit = substr($most[$id]['tenk_square'], 0, $letterlength + 1) . '_' . substr($most[$id]['tenk_square'], $letterlength + 1, 1) . '_';
            list($most[$id]['date'], $most[$id]['dateraw']) = $db->getRow("SELECT DATE_FORMAT(MAX(submitted),'%D %b %Y'),MAX(submitted)\n\t\t\tFROM gridimage_search\n\t\t\tWHERE grid_reference LIKE '{$crit}' AND moderation_status = 'geograph' AND ftf = 1");
            $db->Execute(sprintf("INSERT IGNORE INTO hectad_complete SET\n\t\t\t\thectad_ref = %s,\n\t\t\t\tcompleted = %s,\n\t\t\t\tlandcount = %d,\n\t\t\t\treference_index = %d,\n\t\t\t\tlargemap_token = %s", $db->Quote($most[$id]['tenk_square']), $db->Quote($most[$id]['dateraw']), intval($most[$id]['land_count']), intval($ri), $db->Quote($most[$id]['largemap_token'])));
        }
        uasort($most, "cmp");
        $mostarray += array($ri => $most);
    }
    $smarty->assign_by_ref("most", $mostarray);
    $db->Execute("ALTER TABLE `hectad_complete` ORDER BY `completed` DESC");
}
$smarty->display($template, $cacheid);
Exemple #5
0
require_once 'geograph/mapmosaic.class.php';
init_session();
$mosaic = new GeographMapMosaic();
$mosaic->pixels_per_km = 40;
if (isset($_GET['random'])) {
    $db = NewADOConnection($GLOBALS['DSN']);
    $count = $db->cacheGetOne(86400, "SELECT COUNT(*) FROM gridsquare WHERE reference_index=1 AND percent_land = 100");
    $offset = rand(0, $count);
    $str = $db->getOne("SELECT AsText(point_xy) FROM gridsquare WHERE reference_index=1 AND percent_land = 100 AND gridsquare_id > {$offset}");
    //limit 1 is added automaticallu
    preg_match('/\\((\\d+) (\\d+)\\)/', $str, $m);
    if ($str && $m[1]) {
        $mapw = $mosaic->image_w / $mosaic->pixels_per_km / 2;
        $mosaic->setOrigin($m[1] - $mapw, $m[2] - $mapw);
    }
    $token = $mosaic->getToken();
    $cacheid = 'mapper|' . $token;
} elseif (isset($_GET['t'])) {
    $mosaic->setToken($_GET['t']);
    $token = $mosaic->getToken();
    $cacheid = 'mapper|' . $token;
} elseif (isset($_GET['lat'])) {
    require_once 'geograph/conversions.class.php';
    $conv = new Conversions();
    list($x, $y) = $conv->national_to_internal($_GET['lon'], $_GET['lat'], 1);
    if (isset($_GET['zoom'])) {
        switch ($_GET['zoom']) {
            case 0:
                $mosaic->pixels_per_km = 4;
                break;
            case 1: