classes
functions
inc
l10n
public
assets
csv.php
index.php
index3.php
index6.php
upload.php
zipit.php
scripts
tests
.git.template
.gitattributes
.gitignore
.gitmodules
.htaccess
composer.json
favicon.ico
phpstan.neon
81 lines
2.4 KiB
PHP
81 lines
2.4 KiB
PHP
<?PHP
|
|
/**
|
|
* Generates a CSV template based on the field list provided for CSVXML.
|
|
*
|
|
* @author Joshua Ramon Enslin <joshua@museum-digital.de>
|
|
*/
|
|
declare(strict_types = 1);
|
|
require_once __DIR__ . "/../functions/functions.php";
|
|
|
|
if (session_status() != PHP_SESSION_ACTIVE) {
|
|
session_start();
|
|
}
|
|
|
|
// This array contains all available languages
|
|
$allowed_langs = ['ar', 'de', 'en', 'hu', 'id', 'it', 'pl','pt'];
|
|
|
|
// Some languages are in translation. They will only be available for logged in users.
|
|
|
|
if (isset($_GET['navlang'])) {
|
|
$_SESSION['lang'] = $_GET['navlang'];
|
|
if (!in_array($_SESSION['lang'], $allowed_langs)) $_SESSION['lang'] = 'de';
|
|
}
|
|
else if (!isset($_SESSION['lang'])) {
|
|
$_SESSION['lang'] = MD_STD::lang_getfrombrowser($allowed_langs, 'en', "", false);
|
|
}
|
|
$lang = $_SESSION['lang'];
|
|
|
|
if (!empty($_POST) and !empty($_POST['selectedFields'])) {
|
|
$selectionActive = true;
|
|
$selectedFields = explode(",", trim($_POST['selectedFields'], ","));
|
|
}
|
|
else {
|
|
$selectionActive = false;
|
|
$selectedFields = [];
|
|
}
|
|
|
|
$fieldsGetter = new CsvxmlAvailableFields($lang);
|
|
$availableFields = $fieldsGetter->getFields();
|
|
|
|
$line1 = $line2 = $line3 = $line4 = [];
|
|
|
|
foreach ($availableFields as $headline => $fields) {
|
|
|
|
$i = 0;
|
|
$tLine1 = $tLine2 = $tLine3 = $tLine4 = [];
|
|
$tLine1[] = $headline;
|
|
|
|
foreach($fields as $fieldName => $field) {
|
|
|
|
if ($selectionActive === true and !in_array($fieldName, $selectedFields)) {
|
|
continue;
|
|
}
|
|
|
|
if ($i !== 0) $tLine1[] = "";
|
|
$tLine2[] = $fieldName;
|
|
$tLine3[] = $field['name_human_readable'];
|
|
# $tLine4[] = $field['remark'];
|
|
if (!empty($field['allowedValues'])) $tLine4[] = end($field['allowedValues']);
|
|
else $tLine4[] = $field['name_human_readable'];
|
|
|
|
$i++;
|
|
}
|
|
|
|
if (empty($tLine2) or count($tLine2) === 0) continue;
|
|
|
|
for ($i = 1; $i <= 4; $i++) {
|
|
${"line$i"} = array_merge(${"line$i"}, ${"tLine$i"});
|
|
}
|
|
|
|
}
|
|
|
|
header('Content-Type: text/csv; charset=utf-8');
|
|
if ($selectionActive === true)
|
|
header("Content-Disposition: attachment; filename=csvxml_museum-digital_template-{$lang}_selection.csv");
|
|
else
|
|
header("Content-Disposition: attachment; filename=csvxml_museum-digital_template-{$lang}.csv");
|
|
|
|
for ($i = 2; $i <= 4; $i++) {
|
|
echo mb_convert_encoding('"' . implode("\";\"", ${"line$i"}) . '"' . PHP_EOL, 'utf-16', 'utf-8');;
|
|
}
|