diff --git a/mod/uexport.php b/mod/uexport.php index c91309e74c..2580a4ac6e 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -2,20 +2,26 @@ /** * @file mod/uexport.php */ + use Friendica\App; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\Database\DBStructure; function uexport_init(App $a) { + global $dbStructure; + if (!local_user()) { exit(); } require_once("mod/settings.php"); settings_init($a); + + $dbStructure = DBStructure::definition($a->getBasePath()); } function uexport_content(App $a) { @@ -55,13 +61,25 @@ function uexport_content(App $a) { } function _uexport_multirow($query) { + global $dbStructure; + + preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match); + $table = $match[1]; + $result = []; $r = q($query); if (DBA::isResult($r)) { foreach ($r as $rr) { $p = []; foreach ($rr as $k => $v) { - $p[$k] = $v; + switch ($dbStructure[$table]['fields'][$k]['type']) { + case 'datetime': + $p[$k] = !empty($v) ? $v : DBA::NULL_DATETIME; + break; + default: + $p[$k] = $v; + break; + } } $result[] = $p; } @@ -70,12 +88,25 @@ function _uexport_multirow($query) { } function _uexport_row($query) { + global $dbStructure; + + preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match); + $table = $match[1]; + $result = []; $r = q($query); if (DBA::isResult($r)) { + foreach ($r as $rr) { foreach ($rr as $k => $v) { - $result[$k] = $v; + switch ($dbStructure[$table]['fields'][$k]['type']) { + case 'datetime': + $result[$k] = !empty($v) ? $v : DBA::NULL_DATETIME; + break; + default: + $result[$k] = $v; + break; + } } } } diff --git a/src/Core/UserImport.php b/src/Core/UserImport.php index 0a4223fecd..8d02fb420e 100644 --- a/src/Core/UserImport.php +++ b/src/Core/UserImport.php @@ -39,14 +39,21 @@ class UserImport $tableColumns = DBStructure::getColumns($table); $tcols = []; + $ttype = []; // get a plain array of column names foreach ($tableColumns as $tcol) { $tcols[] = $tcol['Field']; + $ttype[$tcol['Field']] = $tcol['Type']; } // remove inexistent columns foreach ($arr as $icol => $ival) { if (!in_array($icol, $tcols)) { unset($arr[$icol]); + continue; + } + + if ($ttype[$icol] === 'datetime') { + $arr[$icol] = !empty($ival) ? $ival : DBA::NULL_DATETIME; } } }