45 lines
1.2 KiB
PHP
45 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Franzz\Spot;
|
|
use Franzz\Objects\PhpObject;
|
|
use Franzz\Objects\Db;
|
|
use \Settings;
|
|
|
|
class Map extends PhpObject {
|
|
|
|
const MAP_TABLE = 'maps';
|
|
const MAPPING_TABLE = 'mappings';
|
|
|
|
private Db $oDb;
|
|
|
|
private $asMaps;
|
|
|
|
public function __construct(Db &$oDb) {
|
|
parent::__construct(__CLASS__);
|
|
$this->oDb = &$oDb;
|
|
$this->setMaps();
|
|
}
|
|
|
|
private function setMaps() {
|
|
$asMaps = $this->oDb->selectRows(array('from'=>self::MAP_TABLE));
|
|
foreach($asMaps as $asMap) $this->asMaps[$asMap['codename']] = $asMap;
|
|
}
|
|
|
|
public function getProjectMaps($iProjectId) {
|
|
$asMappings = $this->oDb->getArrayQuery("SELECT id_map FROM mappings WHERE id_project = ".$iProjectId." OR id_project IS NULL", true);
|
|
return array_filter($this->asMaps, function($asMap) use($asMappings) {return in_array($asMap['id_map'], $asMappings);});
|
|
}
|
|
|
|
public function getMapUrl($sCodeName, $asParams) {
|
|
$asParams['token'] = $this->asMaps[$sCodeName]['token'];
|
|
return self::populateParams($this->asMaps[$sCodeName]['pattern'], $asParams);
|
|
}
|
|
|
|
private static function populateParams($sUrl, $asParams) {
|
|
foreach($asParams as $sParam=>$sValue) {
|
|
$sUrl = str_replace('{'.$sParam.'}', $sValue, $sUrl);
|
|
}
|
|
|
|
return $sUrl;
|
|
}
|
|
} |