Files
contao-leaflet-maps/src/Netzmacht/Contao/Leaflet/Frontend/RequestUrl.php

128 lines
2.5 KiB
PHP
Raw Normal View History

2015-01-07 09:38:05 +01:00
<?php
/**
* @package dev
* @author David Molineus <david.molineus@netzmacht.de>
* @copyright 2015 netzmacht creative David Molineus
* @license LGPL 3.0
* @filesource
*
*/
2015-01-10 15:33:46 +01:00
namespace Netzmacht\Contao\Leaflet\Frontend;
2015-01-07 09:38:05 +01:00
/**
* Class RequestUrl creates the request url.
*
* @package Netzmacht\Contao\Leaflet\Request
*/
class RequestUrl implements \JsonSerializable
2015-01-07 09:38:05 +01:00
{
/**
* The for param is the identifier to the responsible frontend module or content element.
*
* @var string
*/
private static $for;
/**
* The leaflet hash.
*
* @var string
*/
private $hash;
/**
* The request url as url path.
*
* @var string
*/
private $url;
2015-01-07 09:38:05 +01:00
/**
* Create the request url.
2015-01-07 09:38:05 +01:00
*
* It combines the params and creates an hash for it.
*
2015-01-12 19:03:29 +01:00
* @param int $dataId The data object id.
2015-01-07 09:38:05 +01:00
* @param string|null $type Object type. If empty it assumes a layer.
* @param string|null $format Data format. If empty it assumes geojson.
*
* @return RequestUrl
*/
public static function create($dataId, $type = null, $format = null)
{
$params = array(
'for' => static::$for,
'type' => $type != 'layer' ? $type : null,
'id' => $dataId,
'format' => $format != 'geojson' ? $format: null
);
$hash = base64_encode(implode(',', $params));
$url = \Config::get('websitePath') . '/' . \Frontend::addToUrl('leaflet=' . $hash, false);
return new static($url, $hash);
}
/**
* Set the for param.
*
* @param $for
*/
public static function setFor($for)
{
static::$for = $for;
}
/**
* Construct.
*
* @param string $url The request url.
* @param string $hash The leaflet hash.
*/
public function __construct($url, $hash)
{
$this->url = $url;
$this->hash = $hash;
}
/**
* Get the leaflet url hash.
*
* @return string
*/
public function getHash()
{
return $this->hash;
}
/**
* Get the whole url.
*
* @return string
*/
public function getUrl()
{
return ;
}
/**
* Convert to string will always return the whole url.
*
* @return string
*/
public function __toString()
{
return $this->getUrl();
}
/**
* {@inheritdoc}
*/
function jsonSerialize()
{
return $this->getUrl();
}
2015-01-07 09:38:05 +01:00
}