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;
* {@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
*
* @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'] ?? (int)ini_get('default_socket_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;
}
/**
}
//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) {
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)) {
//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();
}
//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) {
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)) {
$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
//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();