<?php // Dependency: JSON Schema validator, // https://github.com/justinrainbow/json-schema require_once 'vendor/autoload.php'; // Read and process the schema only once to globals $supported_components = array(); // set in load_poi_schema() as side effect $poi_schema = load_poi_schema(); $intl_properties = find_intl_properties($poi_schema->properties); function get_supported_components() { global $supported_components; return $supported_components; } function validate_poi_data($poi_data) { global $poi_schema; $result = false; //= $poi_schema = load_poi_schema(); $intl_props = find_intl_properties($poi_schema->properties); $temp = json_encode($poi_data); $poi_data = json_decode($temp); // Validate $validator = new JsonSchema\Validator(); $validator->check($poi_data, $poi_schema); if ($validator->isValid()) { $result = true; } else { echo "JSON does not validate. Violations:\n"; foreach ($validator->getErrors() as $error) {
function filter_poi_intl_properties(&$pois_data, $langs) { $pois =& $pois_data['pois']; $schema = load_poi_schema(); $intl_properties = find_intl_properties($schema->properties); // var_dump($intl_properties); foreach ($pois as &$poi) { foreach ($poi as &$poi_data_comp) { if (isset($poi_data_comp['last_update'])) { unset($poi_data_comp['last_update']); } } foreach ($intl_properties as $intl_prop) { $prop_values = get_arr_ref_by_path($poi, $intl_prop); foreach ($prop_values as &$prop_val) { $prop_val = filter_intl_string_by_langs($prop_val, $langs); } } } }