YForm-Daten konvertieren
Version 1.x auf 2.x
Uploads
Hinweis Das Skript ist nur ein Beispiel, wie man die Upload-Dateien für eine 2.x Version konvertiert. Daher muss das zuvor Skript der jeweiligen Instanz angepasst werden.
Was macht das Skript
- Es holt Datensätze einer Datenbank und liest das Upload-Feld aus
- Es wird geprüft, ob die Datei physisch auf dem Server liegt
- Ist dies der Fall, wird die Datei in den Upload-Ordner für die Version 2.x kopiert und der Dateiname entsprechend angepasst.
- Wurde die Datei erfolgreich kopiert, wird im Datensatz der Dateiname angepasst.
Hinweis
$sqlLastId
wird verwendet, da es in der Zwischenzeit Uploads mit der Version 2.x geben könnte. Ist sozusagen der Breakpoint zwische Daten der 1.x und 2.x Version
$func = rex_request('func', 'string');
if ($func == 'menueplaene' || $func == 'bewerbungen') {
switch ($func) {
case 'menueplaene':
$sqlTable = 'rex_project_menuplaene';
$sqlLastId = 3983;
$sqlField = 'media';
$oldDir = 'uploads/menueplaene/';
$newDir = 'upload/rex_project_menuplaene/media/';
break;
case 'bewerbungen':
$sqlTable = 'rex_project_bewerbungen';
$sqlLastId = 3697;
$sqlField = 'bewerbung';
$oldDir = 'uploads/bewerbungen/';
$newDir = 'upload/rex_project_bewerbungen/bewerbung/';
break;
}
$sql = rex_sql::factory();
$items = $sql->getArray('SELECT * FROM ' . $sqlTable . ' WHERE id <= ' . $sqlLastId);
if (count($items)) {
foreach ($items as $item) {
$oldFieldName = $item[$sqlField];
$oldFile = rex_path::pluginData('yform','manager', $oldDir . $oldFieldName);
if (trim($oldFieldName != '') && file_exists($oldFile)) {
$parts = explode('_', $oldFieldName, 2);
$newFieldName = $parts[1];
$newFileName = $item['id'] . '_' . $parts[1];
$newFile = rex_path::pluginData('yform','manager', $newDir . $newFileName);
if (rex_file::copy($oldFile, $newFile)) {
$update = rex_sql::factory();
$update->setTable($sqlTable);
$update->setWhere('id=' . $item['id']);
$update->setValue($sqlField, $newFieldName);
$update->update();
} else {
echo rex_view::error('Datei konnte nicht kopiert werden. <br />Alt: ' . $oldFile . '<br />Neu: ' . $newFile);
}
}
}
}
}
echo '<a class="btn btn-primary" href="' . rex_getUrl('', '', ['func' => 'menueplaene']) . '">Menüpläne aktualisieren</a>';
echo '<a class="btn btn-primary" href="' . rex_getUrl('', '', ['func' => 'bewerbungen']) . '">Bewerbungen aktualisieren</a>';