Specify enclosure and escape for solidtime export and import

This commit is contained in:
Constantin Graf
2024-10-15 13:35:37 +02:00
parent 85f4a3049c
commit 0290013d19
2 changed files with 43 additions and 0 deletions

View File

@@ -47,6 +47,9 @@ class ExportService
// Organizations // Organizations
try { try {
$writer = Writer::createFromPath($temporaryDirectory->path('organizations.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('organizations.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'name', 'name',
@@ -66,6 +69,9 @@ class ExportService
// Organization invitations // Organization invitations
$writer = Writer::createFromPath($temporaryDirectory->path('organization_invitations.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('organization_invitations.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'email', 'email',
@@ -91,6 +97,9 @@ class ExportService
// Time entries // Time entries
$writer = Writer::createFromPath($temporaryDirectory->path('time_entries.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('time_entries.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'description', 'description',
@@ -139,6 +148,9 @@ class ExportService
// Clients // Clients
$writer = Writer::createFromPath($temporaryDirectory->path('clients.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('clients.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'name', 'name',
@@ -164,6 +176,9 @@ class ExportService
// Projects // Projects
$writer = Writer::createFromPath($temporaryDirectory->path('projects.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('projects.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'name', 'name',
@@ -199,6 +214,9 @@ class ExportService
// Project members // Project members
$writer = Writer::createFromPath($temporaryDirectory->path('project_members.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('project_members.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'billable_rate', 'billable_rate',
@@ -226,6 +244,9 @@ class ExportService
// Members // Members
$writer = Writer::createFromPath($temporaryDirectory->path('members.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('members.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'user_id', 'user_id',
@@ -260,6 +281,9 @@ class ExportService
// Tasks // Tasks
$writer = Writer::createFromPath($temporaryDirectory->path('tasks.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('tasks.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'name', 'name',
@@ -287,6 +311,9 @@ class ExportService
// Tags // Tags
$writer = Writer::createFromPath($temporaryDirectory->path('tags.csv'), 'w+'); $writer = Writer::createFromPath($temporaryDirectory->path('tags.csv'), 'w+');
$writer->setDelimiter(',');
$writer->setEnclosure('"');
$writer->setEscape('');
$writer->insertOne([ $writer->insertOne([
'id', 'id',
'name', 'name',

View File

@@ -60,6 +60,8 @@ class SolidtimeImporter extends DefaultImporter
$clientsReader = Reader::createFromPath($temporaryDirectory->path('clients.csv')); $clientsReader = Reader::createFromPath($temporaryDirectory->path('clients.csv'));
$clientsReader->setHeaderOffset(0); $clientsReader->setHeaderOffset(0);
$clientsReader->setDelimiter(','); $clientsReader->setDelimiter(',');
$clientsReader->setEnclosure('"');
$clientsReader->setEscape('');
if (! file_exists($temporaryDirectory->path('members.csv'))) { if (! file_exists($temporaryDirectory->path('members.csv'))) {
throw new ImportException('File "members.csv" missing in ZIP'); throw new ImportException('File "members.csv" missing in ZIP');
@@ -67,6 +69,8 @@ class SolidtimeImporter extends DefaultImporter
$membersReader = Reader::createFromPath($temporaryDirectory->path('members.csv')); $membersReader = Reader::createFromPath($temporaryDirectory->path('members.csv'));
$membersReader->setHeaderOffset(0); $membersReader->setHeaderOffset(0);
$membersReader->setDelimiter(','); $membersReader->setDelimiter(',');
$membersReader->setEnclosure('"');
$membersReader->setEscape('');
if (! file_exists($temporaryDirectory->path('organization_invitations.csv'))) { if (! file_exists($temporaryDirectory->path('organization_invitations.csv'))) {
throw new ImportException('File "organization_invitations.csv" missing in ZIP'); throw new ImportException('File "organization_invitations.csv" missing in ZIP');
@@ -74,6 +78,8 @@ class SolidtimeImporter extends DefaultImporter
$organizationInvitationsReader = Reader::createFromPath($temporaryDirectory->path('organization_invitations.csv')); $organizationInvitationsReader = Reader::createFromPath($temporaryDirectory->path('organization_invitations.csv'));
$organizationInvitationsReader->setHeaderOffset(0); $organizationInvitationsReader->setHeaderOffset(0);
$organizationInvitationsReader->setDelimiter(','); $organizationInvitationsReader->setDelimiter(',');
$organizationInvitationsReader->setEnclosure('"');
$organizationInvitationsReader->setEscape('');
if (! file_exists($temporaryDirectory->path('project_members.csv'))) { if (! file_exists($temporaryDirectory->path('project_members.csv'))) {
throw new ImportException('File "project_members.csv" missing in ZIP'); throw new ImportException('File "project_members.csv" missing in ZIP');
@@ -81,6 +87,8 @@ class SolidtimeImporter extends DefaultImporter
$projectMembersReader = Reader::createFromPath($temporaryDirectory->path('project_members.csv')); $projectMembersReader = Reader::createFromPath($temporaryDirectory->path('project_members.csv'));
$projectMembersReader->setHeaderOffset(0); $projectMembersReader->setHeaderOffset(0);
$projectMembersReader->setDelimiter(','); $projectMembersReader->setDelimiter(',');
$projectMembersReader->setEnclosure('"');
$projectMembersReader->setEscape('');
if (! file_exists($temporaryDirectory->path('projects.csv'))) { if (! file_exists($temporaryDirectory->path('projects.csv'))) {
throw new ImportException('File "projects.csv" missing in ZIP'); throw new ImportException('File "projects.csv" missing in ZIP');
@@ -88,6 +96,8 @@ class SolidtimeImporter extends DefaultImporter
$projectsReader = Reader::createFromPath($temporaryDirectory->path('projects.csv')); $projectsReader = Reader::createFromPath($temporaryDirectory->path('projects.csv'));
$projectsReader->setHeaderOffset(0); $projectsReader->setHeaderOffset(0);
$projectsReader->setDelimiter(','); $projectsReader->setDelimiter(',');
$projectsReader->setEnclosure('"');
$projectsReader->setEscape('');
if (! file_exists($temporaryDirectory->path('tags.csv'))) { if (! file_exists($temporaryDirectory->path('tags.csv'))) {
throw new ImportException('File "tags.csv" missing in ZIP'); throw new ImportException('File "tags.csv" missing in ZIP');
@@ -95,6 +105,8 @@ class SolidtimeImporter extends DefaultImporter
$tagsReader = Reader::createFromPath($temporaryDirectory->path('tags.csv')); $tagsReader = Reader::createFromPath($temporaryDirectory->path('tags.csv'));
$tagsReader->setHeaderOffset(0); $tagsReader->setHeaderOffset(0);
$tagsReader->setDelimiter(','); $tagsReader->setDelimiter(',');
$tagsReader->setEnclosure('"');
$tagsReader->setEscape('');
if (! file_exists($temporaryDirectory->path('tasks.csv'))) { if (! file_exists($temporaryDirectory->path('tasks.csv'))) {
throw new ImportException('File "tasks.csv" missing in ZIP'); throw new ImportException('File "tasks.csv" missing in ZIP');
@@ -102,6 +114,8 @@ class SolidtimeImporter extends DefaultImporter
$tasksReader = Reader::createFromPath($temporaryDirectory->path('tasks.csv')); $tasksReader = Reader::createFromPath($temporaryDirectory->path('tasks.csv'));
$tasksReader->setHeaderOffset(0); $tasksReader->setHeaderOffset(0);
$tasksReader->setDelimiter(','); $tasksReader->setDelimiter(',');
$tasksReader->setEnclosure('"');
$tasksReader->setEscape('');
if (! file_exists($temporaryDirectory->path('time_entries.csv'))) { if (! file_exists($temporaryDirectory->path('time_entries.csv'))) {
throw new ImportException('File "time_entries.csv" missing in ZIP'); throw new ImportException('File "time_entries.csv" missing in ZIP');
@@ -109,6 +123,8 @@ class SolidtimeImporter extends DefaultImporter
$timeEntriesReader = Reader::createFromPath($temporaryDirectory->path('time_entries.csv')); $timeEntriesReader = Reader::createFromPath($temporaryDirectory->path('time_entries.csv'));
$timeEntriesReader->setHeaderOffset(0); $timeEntriesReader->setHeaderOffset(0);
$timeEntriesReader->setDelimiter(','); $timeEntriesReader->setDelimiter(',');
$timeEntriesReader->setEnclosure('"');
$timeEntriesReader->setEscape('');
foreach ($clientsReader as $client) { foreach ($clientsReader as $client) {
$this->clientImportHelper->getKey([ $this->clientImportHelper->getKey([