Handle empty strings for dates by converting them to null

This commit is contained in:
Marcus Moore 2024-07-23 13:57:28 -07:00
parent 900c19b76d
commit f4a3823d88
No known key found for this signature in database

View file

@ -67,6 +67,7 @@ class UserImporter extends ItemImporter
$this->item['vip'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'vip'))) ==1 ) ? '1' : 0; $this->item['vip'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'vip'))) ==1 ) ? '1' : 0;
$this->item['autoassign_licenses'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'autoassign_licenses'))) ==1 ) ? '1' : 0; $this->item['autoassign_licenses'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'autoassign_licenses'))) ==1 ) ? '1' : 0;
$this->handleEmptyStringsForDates();
$user_department = trim($this->findCsvMatch($row, 'department')); $user_department = trim($this->findCsvMatch($row, 'department'));
if ($this->shouldUpdateField($user_department)) { if ($this->shouldUpdateField($user_department)) {
@ -179,4 +180,22 @@ class UserImporter extends ItemImporter
{ {
$this->send_welcome = $send; $this->send_welcome = $send;
} }
/**
* Since the findCsvMatch() method will set '' for columns that are present but empty,
* we need to set those empty strings to null to avoid passing bad data to the database
* (ie ending up with 0000-00-00 instead of the intended null).
*
* @return void
*/
private function handleEmptyStringsForDates(): void
{
if ($this->item['start_date'] === '') {
$this->item['start_date'] = null;
}
if ($this->item['end_date'] === '') {
$this->item['end_date'] = null;
}
}
} }