get("mb_user_id") * TODO: this function is also in mod_wfs_result!! Maybe merge someday. */ function isValidVarName ($varname) { if (preg_match("/[\$]{1}_[a-z]+\[\"[a-z_]+\"\]/i", $varname) !== 0) { return true; } return false; } /** * If access to the WFS conf is restricted, modify the filter. * TODO: this function is also in mod_wfs_result!! Maybe merge someday. */ function checkAccessConstraint($filter, $wfs_conf_id) { /* wfs_conf_element */ $sql = "SELECT f.featuretype_name AS name FROM " . "wfs_featuretype AS f, wfs_conf AS c " . "WHERE c.wfs_conf_id = $1 AND " . "c.fkey_featuretype_id = f.featuretype_id"; $v = array($wfs_conf_id); $t = array('i'); $res = db_prep_query($sql,$v,$t); $row = db_fetch_array($res); if ($row) { $ns = substr($row["name"], 0, strpos($row["name"], ":")) . ":"; } else { $ns = ""; } unset($sql); unset($v); unset($t); unset($res); $sql = "SELECT * FROM wfs_conf_element "; $sql .= "JOIN wfs_element ON wfs_conf_element.f_id = wfs_element.element_id "; $sql .= "WHERE wfs_conf_element.fkey_wfs_conf_id = $1 "; $sql .= "ORDER BY wfs_conf_element.f_respos"; $v = array($wfs_conf_id); $t = array('i'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ if (!empty($row["f_auth_varname"])) { $auth_varname = $row["f_auth_varname"]; $element_name = $row["element_name"]; } } $e = new mb_exception($auth_varname . " " . $element_name); if (!empty($auth_varname)) { if (isValidVarName($auth_varname)) { $user = eval("return " . $auth_varname . ";"); $pattern = "(]*>)(.*)()"; $replacement = "\\1\\2" . $ns . $element_name . "" . $user . "\\3"; $filter = preg_replace($pattern, $replacement, $filter); } } return $filter; } $filter = checkAccessConstraint($filter, $db_wfs_conf_id); $sql = "SELECT fkey_wfs_id FROM wfs_conf WHERE wfs_conf_id = $1"; $v = array($db_wfs_conf_id); $t = array('i'); $res = db_prep_query($sql, $v, $t); $row = db_fetch_array($res); $wfsId = $row["fkey_wfs_id"]; $myWfsFactory = new UniversalWfsFactory(); $myWfs = $myWfsFactory->createFromDb($wfsId); $data = $myWfs->getFeature($typename, $filter,$destSrs); if ($data === null) die('{}'); $myWfsConf = WfsConfiguration::createFromDb($db_wfs_conf_id); if (is_null($myWfsConf)) { die("{}"); } $gmlFactory = new UniversalGmlFactory(); $myGml = $gmlFactory->createFromXml($data, $myWfsConf); $geoJson = $myGml->toGeoJSON(); header('Content-type: text/html'); echo $geoJson; ?>