コード例 #1
0
<?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) {
コード例 #2
0
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);
            }
        }
    }
}