Exemple #1
0
function makeIndex($data, $field)
{
    include 'fieldList.php';
    $index = '';
    if (in_array($field, $normalFields)) {
        $collect = collectIDs($data, $field);
    } elseif ($field == 'persName') {
        $collect = collectIDsPersons($data);
    } elseif ($field == 'placeName') {
        $collect = collectIDsPlaces($data);
    } elseif (in_array($field, $personFields)) {
        $collect = collectIDsSubObjects($data, 'persons', $field);
    } elseif (in_array($field, $placeFields)) {
        $collect = collectIDsSubObjects($data, 'places', $field);
    } elseif (in_array($field, $manifestationFields)) {
        $collect = collectIDsAssocArrayValues($data, 'manifestation', $field);
    } elseif (in_array($field, $workFields)) {
        $collect = collectIDsAssocArrayValues($data, 'work', $field);
    } elseif (in_array($field, $originalItemFields)) {
        $collect = collectIDsAssocArrayValues($data, 'originalItem', $field);
    } elseif (in_array($field, $arrayFields)) {
        $collect = collectIDsArrayValues($data, $field);
    }
    if (isset($collect)) {
        $collect = sortCollect($collect);
        $index = makeEntries($collect, $field);
    } elseif ($field == 'catSubjectFormat') {
        $collect1 = collectIDs($data, 'histSubject');
        $index1 = makeEntries($collect1);
        unset($collect1);
        $collect2 = collectIDs($data, 'format');
        $index2 = makeEntries($collect2);
        unset($collect2);
        $index = mergeIndices($index1, $index2);
    }
    foreach ($index as $entry) {
        $entry->label = postprocessFields($field, $entry->label);
    }
    return $index;
}
function makeGeoDataSheet($data, $folderName, $format)
{
    $ending = strtolower($format);
    // Anlegen eines gemeinsamen Index für Orte und Jahre, so dass beide Kategorien abgerufen werden können.
    $index1 = makeIndex($data, 'placeName');
    $index2 = makeIndex($data, 'year');
    $commonIndex = mergeIndices($index1, $index2);
    $rowArray = array();
    $placeName = '';
    // Durchgehen des Index und Abspeichern von standardisierten Datensätzen der Klasse geoDataRow im Array $rowArray
    foreach ($commonIndex as $entry) {
        // Die im Index mit Level 1 auftretenden Ortseinträge dienen nur zum Speichern von Ortsname und Geodaten
        if ($entry->level == 1) {
            // Der Test dient dem Ausschließen von Einträgen ohne Ortsnamen oder Geodaten
            $test = testEntry($entry);
            $placeName = $entry->label;
            $latitude = cleanCoordinate($entry->geoData['lat']);
            $longitude = cleanCoordinate($entry->geoData['long']);
        }
        //Für jeden Indexeintrag Level 2 (Jahre) werden so viele Einträge gespeichert, wie Datensätze unter content verzeichnet sind.
        if ($entry->level == 2 and $test == 1) {
            foreach ($entry->content as $occurrence) {
                $row = new geoDataRow();
                $row->label = $placeName;
                $row->lat = cleanCoordinate($entry->geoData['lat']);
                $row->long = cleanCoordinate($entry->geoData['long']);
                $row->timeStamp = $entry->label;
                $row->lat = $latitude;
                $row->long = $longitude;
                if ($entry->authority['system'] == 'getty') {
                    $row->getty = $entry->authority['id'];
                } elseif ($entry->authority['system'] == 'geoNames') {
                    $row->geoNames = $entry->authority['id'];
                }
                $rowArray[] = $row;
            }
        }
    }
    // Jetzt werden die Objekte der Klasse geoDataRow in Einträge übersetzt, abhängig vom gewählten Format
    if ($ending == 'csv') {
        // Kopfdaten für CSV-Dateien
        $content = '"Name","Address","Description","Longitude","Latitude","TimeStamp","TimeSpan:begin","TimeSpan:end","GettyID",""
';
        foreach ($rowArray as $row) {
            $content .= makePlaceEntryCSV($row);
        }
    } elseif ($ending == 'kml') {
        // Kopfdaten für KML-Dateien
        $content = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
	<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
		<Folder>';
        foreach ($rowArray as $row) {
            $content .= makePlaceEntryKML($row);
        }
        // Fußdaten für KML-Dateien
        $content .= '
		</Folder>
	</kml>';
    }
    // Abspeichern der im String $content zwischengespeicherten Daten in einer Datei im Projektordner
    $fileName = $folderName . '/printingPlaces.' . $ending;
    $datei = fopen($fileName, "w");
    fwrite($datei, $content, 30000000);
    fclose($datei);
}