Tdt\Core\Formatters\KMLFormatter::printArray PHP Méthode

printArray() private static méthode

private static printArray ( $val )
    private static function printArray($val)
    {
        foreach ($val as $key => $value) {
            $array = $value;
            if (is_object($array)) {
                $array = get_object_vars($value);
            }
            $lat_long = GeoHelper::findLatLong($array);
            $coords = array();
            if (!empty($array)) {
                $coordskey = GeoHelper::keyExists("coords", $array);
                if (!$coordskey) {
                    $coordskey = GeoHelper::keyExists("coordinates", $array);
                }
                if ($lat_long) {
                    $name = self::xmlgetelement($array);
                    $extendeddata = self::getExtendedDataElement($array);
                } elseif ($coordskey) {
                    if (is_array($array[$coordskey])) {
                        if (!empty($array[$coordskey]['@text'])) {
                            $array[$coordskey] = $array[$coordskey]['@text'];
                        }
                    }
                    $coords = explode(";", $array[$coordskey]);
                    unset($array[$coordskey]);
                    $name = self::xmlgetelement($array);
                    $extendeddata = self::getExtendedDataElement($array);
                } else {
                    self::printArray($array);
                }
                if ($lat_long || count($coords) != 0) {
                    $name = htmlspecialchars($key);
                    if (!empty(self::$map_property) && !empty($array[self::$map_property])) {
                        $name = $array[self::$map_property];
                    }
                    $description = '';
                    if (!empty($key) && is_numeric($key)) {
                        $description = "<![CDATA[<a href='" . \URL::to(self::$definition['collection_uri'] . '/' . self::$definition['resource_name']) . '/' . htmlspecialchars($key) . ".map'>" . \URL::to(self::$definition['collection_uri'] . '/' . self::$definition['resource_name']) . '/' . htmlspecialchars($key) . "</a>]]>";
                    }
                    echo "<Placemark><name>" . $name . "</name><Description>" . $description . "</Description>";
                    echo $extendeddata;
                    if ($lat_long) {
                        // For data read from XML latitude and longitude will be an array of @value = 3.342...
                        $lat_val = $array[$lat_long[0]];
                        $lon_val = $array[$lat_long[1]];
                        if (!empty($lat_long[2]) && !empty($array[$lat_long[2]])) {
                            $z_val = $array[$lat_long[2]];
                            if (is_array($lat_val)) {
                                $lat_val = reset($lat);
                            }
                            if (is_array($lon_val)) {
                                $lon_val = reset($lon_val);
                            }
                            if (is_array($z_val)) {
                                $z_val = reset($z_val);
                            }
                            if ($lat_val != 0 || $lon_val != 0) {
                                echo "<Point><coordinates>" . $lon_val . "," . $lat_val . "," . $z_val . "</coordinates></Point>";
                            }
                        } else {
                            if (is_array($lat_val)) {
                                $lat_val = reset($lat);
                            }
                            if (is_array($lon_val)) {
                                $lon_val = reset($lon_val);
                            }
                            if ($lat_val != 0 || $lon_val != 0) {
                                echo "<Point><coordinates>" . $lon_val . "," . $lat_val . "</coordinates></Point>";
                            }
                        }
                    }
                    if (count($coords) > 0) {
                        if (count($coords) == 1) {
                            echo "<Polygon><outerBoundaryIs><LinearRing><coordinates>" . $coords[0] . "</coordinates></LinearRing></outerBoundaryIs></Polygon>";
                        } else {
                            echo "<MultiGeometry>";
                            foreach ($coords as $coord) {
                                echo "<LineString><coordinates>" . $coord . "</coordinates></LineString>";
                            }
                            echo "</MultiGeometry>";
                        }
                    }
                    echo "</Placemark>";
                }
            }
        }
    }