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; } }