$rows = wuUniversalReadRows((string) $source, (string) $ext, $columns); // Vrije tekst normaliseren vóór wuFeedProcessRows() de records opslaat. // Voorkomt zichtbare teksten zoals \\r\\n in woningomschrijvingen. $rows = wuNormalizeImportedRows($rows, $mapping); $feedId = null; $previousCount = 0; if ($feedUrl !== '') { $feedNaam = trim((string) ($_POST['feed_naam'] ?? '')); $feedId = wuFeedSaveConfig($mysqli, $import_user_id, $feedUrl, (string) $ext, $mapping, $feedNaam); $stmtPrev = $mysqli->prepare('SELECT laatste_aantal FROM woning_feeds WHERE id=? AND gebruiker_id=? LIMIT 1'); if ($stmtPrev) { $stmtPrev->bind_param('ii', $feedId, $import_user_id); $stmtPrev->execute(); $stmtPrev->bind_result($prev); if ($stmtPrev->fetch()) { $previousCount = (int) $prev; } $stmtPrev->close(); } } $stats = wuFeedProcessRows( $mysqli, $import_user_id, $import_land_id, $rows, $mapping, $feedId, $previousCount ); // Internationale velden die de bestaande woningen-tabel nog niet kent // blijven bewaard in woning_feed_extra, zonder oude feeds te breken. wuUniversalSaveExtras($mysqli, $import_user_id, $feedId ? (int) $feedId : null, $rows, $mapping); if ($feedId) { wuFeedUpdateStatus($mysqli, $feedId, $stats); } } catch (Throwable $fout) { $stats = [ 'gevonden' => 0, 'toegevoegd' => 0, 'bijgewerkt' => 0, 'verwijderd' => 0, 'overgeslagen' => 1, 'fouten' => [$fout->getMessage()], ]; } if (isset($_SESSION['import_source'])) { $importBron = (string) $_SESSION['import_source']; $importReal = is_file($importBron) ? realpath($importBron) : false; $tempReal = realpath(sys_get_temp_dir()); if ($importReal !== false && $tempReal !== false && str_starts_with($importReal, $tempReal . DIRECTORY_SEPARATOR) && preg_match('/^wu-(?:feed|import)-/', basename($importReal))) { @unlink($importReal); } } unset( $_SESSION['import_source'], $_SESSION['import_ext'], $_SESSION['import_feed_url'], $_SESSION['import_auto_mapping'] ); $tpl = laad_import_tpl('Import / synchronisatie voltooid'); $tpl->newBlock('ImportResultaat'); $tpl->assign('imported', (int) ($stats['toegevoegd'] + $stats['bijgewerkt'])); $tpl->assign('skipped', (int) $stats['overgeslagen']); $tpl->assign('added', (int) $stats['toegevoegd']); $tpl->assign('updated', (int) $stats['bijgewerkt']); $tpl->assign('removed', (int) $stats['verwijderd']); $tpl->assign('found', (int) $stats['gevonden']); if (!empty($stats['fouten'])) { $tpl->newBlock('ImportFouten'); foreach (array_slice($stats['fouten'], 0, 100) as $i => $reden) { $tpl->newBlock('ImportFoutRegel'); $tpl->assign('rij', (int) ($i + 1)); $tpl->assign('id', '—'); $tpl->assign('reden', htmlspecialchars((string) $reden, ENT_QUOTES, 'UTF-8')); } } $tpl->printToScreen(); exit; } /* |-------------------------------------------------------------------------- | Startpagina |-------------------------------------------------------------------------- */ $tpl = laad_import_tpl('Aanbod importeren'); $tpl->newBlock('StartPagina'); $tpl->assign('security_csrf', htmlspecialchars($wuImportCsrf, ENT_QUOTES, 'UTF-8')); $tpl->assign('wu_import_version', '5'); $tpl->printToScreen(); exit;