X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/9e5129f8c715a60cf824710365e3e55b1dc82a87..cb898714d95a386fbd23c8d6f2292fc33f330a74:/Controller/MapController.php

diff --git a/Controller/MapController.php b/Controller/MapController.php
index 034cba1..8d38aa6 100644
--- a/Controller/MapController.php
+++ b/Controller/MapController.php
@@ -11,62 +11,31 @@
 
 namespace Rapsys\PackBundle\Controller;
 
-use Symfony\Component\HttpFoundation\HeaderUtils;
+use Rapsys\PackBundle\Util\MapUtil;
+use Rapsys\PackBundle\Util\SluggerUtil;
+
+use Psr\Container\ContainerInterface;
+
 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;
+use Symfony\Component\HttpFoundation\HeaderUtils;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\Routing\RequestContext;
 use Symfony\Contracts\Service\ServiceSubscriberInterface;
 
-use Rapsys\PackBundle\Util\MapUtil;
-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();