X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/9e5129f8c715a60cf824710365e3e55b1dc82a87..f06acce2c1058d581657163417952723ff6d71cd:/Controller/MapController.php?ds=inline diff --git a/Controller/MapController.php b/Controller/MapController.php index 034cba1..255c47b 100644 --- a/Controller/MapController.php +++ b/Controller/MapController.php @@ -11,9 +11,10 @@ namespace Rapsys\PackBundle\Controller; +use Psr\Container\ContainerInterface; + use Symfony\Component\HttpFoundation\HeaderUtils; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Filesystem\Exception\IOExceptionInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\BinaryFileResponse; @@ -30,43 +31,11 @@ use Rapsys\PackBundle\Util\SluggerUtil; * {@inheritdoc} */ class MapController extends AbstractController implements ServiceSubscriberInterface { - /** - * The cache path - */ - protected string $cache; - - /** - * The ContainerInterface instance - * - * @var ContainerInterface - */ - protected $container; - /** * The stream context instance */ protected mixed $ctx; - /** - * The MapUtil instance - */ - protected MapUtil $map; - - /** - * The public path - */ - protected string $public; - - /** - * The SluggerUtil instance - */ - protected SluggerUtil $slugger; - - /** - * The tile server url - */ - protected string $url; - /** * Creates a new osm controller * @@ -74,40 +43,22 @@ class MapController extends AbstractController implements ServiceSubscriberInter * @param MapUtil $map The MapUtil instance * @param SluggerUtil $slugger The SluggerUtil instance * @param string $cache The cache path - * @param string $public The public path + * @param string $path The public path + * @param string $prefix The prefix * @param string $url The tile server url */ - function __construct(ContainerInterface $container, MapUtil $map, SluggerUtil $slugger, string $cache = '../var/cache/map', string $public = './bundles/rapsyspack/map', string $url = MapUtil::osm) { - //Set cache - $this->cache = $cache; - - //Set container - $this->container = $container; - + function __construct(protected ContainerInterface $container, protected MapUtil $map, protected SluggerUtil $slugger, protected string $cache = '../var/cache', protected string $path = './bundles/rapsyspack', protected string $prefix = 'map', protected string $url = MapUtil::osm) { //Set ctx $this->ctx = stream_context_create( [ 'http' => [ #'header' => ['Referer: https://www.openstreetmap.org/'], - 'max_redirects' => 5, - 'timeout' => (int)ini_get('default_socket_timeout'), - #'user_agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36', - 'user_agent' => (string)ini_get('user_agent')?:'rapsys_pack/2.0.0', + 'max_redirects' => $_ENV['RAPSYSPACK_REDIRECT'] ?? 20, + 'timeout' => $_ENV['RAPSYSPACK_TIMEOUT'] ?? (($timeout = ini_get('default_socket_timeout')) !== false && $timeout !== "" ? (float)$timeout : 60), + 'user_agent' => $_ENV['RAPSYSPACK_AGENT'] ?? (($agent = ini_get('user_agent')) !== false && $agent !== "" ? (string)$agent : RapsysPackBundle::getAlias().'/'.RapsysPackBundle::getVersion()) ] ] ); - - //Set map - $this->map = $map; - - //Set public - $this->public = $public; - - //Set slugger - $this->slugger = $slugger; - - //Set url - $this->url = $url; } /** @@ -131,7 +82,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter } //Set map - $map = $this->public.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$width.'x'.$height.'.jpeg'; + $map = $this->path.'/'.$this->prefix.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$width.'x'.$height.'.jpeg'; //Without multi up to date file if (!is_file($map) || !($mtime = stat($map)['mtime']) || $mtime < $updated) { @@ -175,7 +126,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter for($x = $startX; $x <= $endX; $x++) { for($y = $startY; $y <= $endY; $y++) { //Set cache path - $cache = $this->cache.'/'.$zoom.'/'.$x.'/'.$y.'.png'; + $cache = $this->cache.'/'.$this->prefix.'/'.$zoom.'/'.$x.'/'.$y.'.png'; //Without cache image if (!is_file($cache)) { @@ -293,6 +244,9 @@ class MapController extends AbstractController implements ServiceSubscriberInter //Set last modified $response->setLastModified(\DateTime::createFromFormat('U', strval($mtime))); + //Disable robot index + $response->headers->set('X-Robots-Tag', 'noindex'); + //Set as public $response->setPublic(); @@ -325,7 +279,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter } //Set multi - $map = $this->public.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$coordinate.'/'.$width.'x'.$height.'.jpeg'; + $map = $this->path.'/'.$this->prefix.'/'.$zoom.'/'.$latitude.'/'.$longitude.'/'.$coordinate.'/'.$width.'x'.$height.'.jpeg'; //Without multi up to date file if (!is_file($map) || !($mtime = stat($map)['mtime']) || $mtime < $updated) { @@ -369,7 +323,7 @@ class MapController extends AbstractController implements ServiceSubscriberInter for($x = $startX; $x <= $endX; $x++) { for($y = $startY; $y <= $endY; $y++) { //Set cache path - $cache = $this->cache.'/'.$zoom.'/'.$x.'/'.$y.'.png'; + $cache = $this->cache.'/'.$this->prefix.'/'.$zoom.'/'.$x.'/'.$y.'.png'; //Without cache image if (!is_file($cache)) { @@ -440,36 +394,36 @@ class MapController extends AbstractController implements ServiceSubscriberInter $destY = intval(floor($height / 2 - MapUtil::tz * ($centerY - $this->map->latitudeToY(floatval($coordinate['latitude']), $zoom)))); //Set fill color - $draw->setFillColor($this->map->fill); + $draw->setFillColor($this->map->getFill()); //Set font size - $draw->setFontSize($this->map->fontSize); + $draw->setFontSize($this->map->getFontSize()); //Set stroke color - $draw->setStrokeColor($this->map->stroke); + $draw->setStrokeColor($this->map->getStroke()); //Set circle radius - $radius = $this->map->radius; + $radius = $this->map->getRadius(); //Set stroke width - $stroke = $this->map->strokeWidth; + $stroke = $this->map->getStrokeWidth(); //With matching position if ($coordinate['latitude'] === $latitude && $coordinate['longitude'] == $longitude) { //Set fill color - $draw->setFillColor($this->map->highFill); + $draw->setFillColor($this->map->getHighFill()); //Set font size - $draw->setFontSize($this->map->highFontSize); + $draw->setFontSize($this->map->getHighFontSize()); //Set stroke color - $draw->setStrokeColor($this->map->highStroke); + $draw->setStrokeColor($this->map->getHighStroke()); //Set circle radius - $radius = $this->map->highRadius; + $radius = $this->map->getHighRadius(); //Set stroke width - $stroke = $this->map->highStrokeWidth; + $stroke = $this->map->getHighStrokeWidth(); } //Set stroke width @@ -538,6 +492,9 @@ class MapController extends AbstractController implements ServiceSubscriberInter //Set last modified $response->setLastModified(\DateTime::createFromFormat('U', strval($mtime))); + //Disable robot index + $response->headers->set('X-Robots-Tag', 'noindex'); + //Set as public $response->setPublic();