if ($grid_ok) {
    //geotag the page
    require_once 'geograph/conversions.class.php';
    $conv = new Conversions();
    list($lat, $long) = $conv->gridsquare_to_wgs84($square);
    $smarty->assign('lat', $lat);
    $smarty->assign('long', $long);
    $smarty->assign_by_ref('square', $square);
    //lets add an rastermap too
    $rastermap = new RasterMap($square, false, $square->natspecified, true);
    $rastermap->addLatLong($lat, $long);
    $smarty->assign_by_ref('gridref', $gridref);
    if (!empty($photographer_gridref)) {
        $psquare = new GridSquare();
        $pgrid_given = true;
        $pgrid_ok = $psquare->setByFullGridRef($photographer_gridref, true, false, true);
        if (!empty($psquare->nateastings)) {
            $rastermap->addViewpoint($psquare->reference_index, $psquare->nateastings, $psquare->natnorthings, $psquare->natgrlen);
            $smarty->assign_by_ref('photographer_gridref', $photographer_gridref);
        }
    }
    if (isset($view_direction) && strlen($view_direction) && $view_direction != -1) {
        $rastermap->addViewDirection(intval($view_direction));
        $smarty->assign_by_ref('view_direction', $view_direction);
    }
    $smarty->assign_by_ref('rastermap', $rastermap);
    $gaz = new Gazetteer();
    $places = $gaz->findListByNational($square->reference_index, $square->nateastings, $square->natnorthings, $square->reference_index == 1 ? 2000 : 5000);
    $smarty->assign_by_ref('places', $places);
}
$smarty->display($template, $cacheid);
         $smarty->assign('errormsg', $square->errormsg);
     }
 }
 if (!empty($_REQUEST['step'])) {
     $step = intval($_REQUEST['step']);
 }
 if (empty($_REQUEST['grid_reference']) && $step == 2) {
     $step = 1;
 }
 if ($step == 2) {
     require_once 'geograph/rastermap.class.php';
     $rastermap = new RasterMap($square, true);
     if (isset($_POST['photographer_gridref'])) {
         $square2 = new GridSquare();
         $ok = $square2->setByFullGridRef($_POST['photographer_gridref'], false, false, true);
         $rastermap->addViewpoint($square2->reference_index, $square2->nateastings, $square2->natnorthings, $square2->natgrlen, $_POST['view_direction']);
     } elseif (isset($_POST['view_direction']) && strlen($_POST['view_direction']) && $_POST['view_direction'] != -1) {
         $rastermap->addViewDirection($_POST['view_direction']);
     }
     $smarty->assign_by_ref('rastermap', $rastermap);
     $smarty->assign_by_ref('square', $square);
     $smarty->assign('reference_index', $square->reference_index);
     require_once 'geograph/conversions.class.php';
     $conv = new Conversions();
     list($lat, $long) = $conv->gridsquare_to_wgs84($square);
     $smarty->assign('lat', $lat);
     $smarty->assign('long', $long);
     $rastermap->addLatLong($lat, $long);
     $dirs = array(-1 => '');
     $jump = 360 / 16;
     $jump2 = 360 / 32;
         $_SESSION['editpage_options'][] = 'simple';
     }
 }
 if (isset($_GET['form'])) {
     $smarty->assign('showfull', 0);
 } elseif (!isset($_SESSION['editpage_options']) || !in_array('simple', $_SESSION['editpage_options'])) {
     $smarty->assign('showfull', 1);
     if ($CONF['forums']) {
         //let's find posts in the gridref discussion forum
         $image->grid_square->assignDiscussionToSmarty($smarty);
     }
 }
 require_once 'geograph/rastermap.class.php';
 $rastermap = new RasterMap($image->grid_square, true);
 if (!empty($image->viewpoint_northings)) {
     $rastermap->addViewpoint($image->viewpoint_refindex, $image->viewpoint_eastings, $image->viewpoint_northings, $image->viewpoint_grlen, $image->view_direction);
 } elseif (isset($image->view_direction) && strlen($image->view_direction) && $image->view_direction != -1) {
     $rastermap->addViewDirection($image->view_direction);
 }
 require_once 'geograph/conversions.class.php';
 $conv = new Conversions();
 list($lat, $long) = $conv->gridsquare_to_wgs84($image->grid_square);
 $smarty->assign('lat', $lat);
 $smarty->assign('long', $long);
 $rastermap->addLatLong($lat, $long);
 $smarty->assign_by_ref('rastermap', $rastermap);
 //build a list of view directions
 $dirs = array(-1 => '');
 $jump = 360 / 16;
 $jump2 = 360 / 32;
 for ($q = 0; $q < 360; $q += $jump) {
 function assignToSmarty($smarty)
 {
     global $CONF;
     $taken = $this->getFormattedTakenDate();
     //get the grid references
     $this->getSubjectGridref(true);
     $this->getPhotographerGridref(true);
     //remove grid reference from title
     $this->bigtitle = trim(preg_replace("/^{$this->grid_reference}/", '', $this->title));
     $this->bigtitle = preg_replace('/(?<![\\.])\\.$/', '', $this->bigtitle);
     $rid = $this->grid_square->reference_index;
     $gridrefpref = $CONF['gridrefname'][$rid];
     $smarty->assign('page_title', $this->bigtitle . ":: {$gridrefpref}{$this->grid_reference}");
     $smarty->assign('image_taken', $taken);
     $smarty->assign('ismoderator', $ismoderator);
     $smarty->assign_by_ref('image', $this);
     //get a token to show a suroudding geograph map
     $mosaic = new GeographMapMosaic();
     $smarty->assign('map_token', $mosaic->getGridSquareToken($this->grid_square));
     //find a possible place within 25km
     $place = $this->grid_square->findNearestPlace(75000);
     $smarty->assign_by_ref('place', $place);
     if (empty($this->comment)) {
         $smarty->assign('meta_description', "{$this->grid_reference} :: {$this->bigtitle}, " . strip_tags(smarty_function_place(array('place' => $place))));
     } else {
         $smarty->assign('meta_description', $this->comment);
     }
     if (!empty($CONF['forums'])) {
         //let's find posts in the gridref discussion forum
         $this->grid_square->assignDiscussionToSmarty($smarty);
     }
     //count the number of photos in this square
     $smarty->assign('square_count', $this->grid_square->imagecount);
     //lets add an overview map too
     $overview = new GeographMapMosaic('largeoverview');
     $overview->setCentre($this->grid_square->x, $this->grid_square->y);
     //does call setAlignedOrigin
     $overview->assignToSmarty($smarty, 'overview');
     $smarty->assign('marker', $overview->getSquarePoint($this->grid_square));
     require_once 'geograph/conversions.class.php';
     $conv = new Conversions();
     list($lat, $long) = $conv->gridsquare_to_wgs84($this->grid_square);
     $smarty->assign('lat', $lat);
     $smarty->assign('long', $long);
     list($latdm, $longdm) = $conv->wgs84_to_friendly($lat, $long);
     $smarty->assign('latdm', $latdm);
     $smarty->assign('longdm', $longdm);
     //lets add an rastermap too
     $rastermap = new RasterMap($this->grid_square, false);
     $rastermap->addLatLong($lat, $long);
     if (!empty($this->viewpoint_northings)) {
         $rastermap->addViewpoint($this->viewpoint_refindex, $this->viewpoint_eastings, $this->viewpoint_northings, $this->viewpoint_grlen, $this->view_direction);
     } elseif (isset($this->view_direction) && strlen($this->view_direction) && $this->view_direction != -1) {
         $rastermap->addViewDirection($this->view_direction);
     }
     $smarty->assign_by_ref('rastermap', $rastermap);
     $smarty->assign('x', $this->grid_square->x);
     $smarty->assign('y', $this->grid_square->y);
     if ($this->view_direction > -1) {
         $smarty->assign('view_direction', $this->view_direction % 90 == 0 ? strtoupper(heading_string($this->view_direction)) : ucwords(heading_string($this->view_direction)));
     }
     $level = $this->grid_square->imagecount > 1 ? 6 : 5;
     $smarty->assign('sitemap', getSitemapFilepath($level, $this->grid_square));
 }