namespace Friendica\Core;
use Friendica\App;
-use Friendica\Core\Logger;
-use Friendica\Core\Protocol;
-use Friendica\Core\System;
use Friendica\Database\DBA;
+use Friendica\Database\DBStructure;
use Friendica\Model\Photo;
use Friendica\Object\Image;
use Friendica\Util\Strings;
+use Friendica\Worker\Delivery;
/**
* @brief UserImport class
* Remove columns from array $arr that aren't in table $table
*
* @param string $table Table name
- * @param array &$arr Column=>Value array from json (by ref)
+ * @param array &$arr Column=>Value array from json (by ref)
+ * @throws \Exception
*/
private static function checkCols($table, &$arr)
{
- $query = sprintf("SHOW COLUMNS IN `%s`", DBA::escape($table));
- Logger::log("uimport: $query", Logger::DEBUG);
- $r = q($query);
+ $tableColumns = DBStructure::getColumns($table);
+
$tcols = [];
+ $ttype = [];
// get a plain array of column names
- foreach ($r as $tcol) {
+ 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] = $ival ?? DBA::NULL_DATETIME;
}
}
}
* Import data into table $table
*
* @param string $table Table name
- * @param array $arr Column=>Value array from json
+ * @param array $arr Column=>Value array from json
+ * @return array|bool
+ * @throws \Exception
*/
private static function dbImportAssoc($table, $arr)
{
}
self::checkCols($table, $arr);
- $cols = implode("`,`", array_map(['Friendica\Database\DBA', 'escape'], array_keys($arr)));
- $vals = implode("','", array_map(['Friendica\Database\DBA', 'escape'], array_values($arr)));
- $query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
- Logger::log("uimport: $query", Logger::TRACE);
if (self::IMPORT_DEBUG) {
return true;
}
- return q($query);
+ return DBA::insert($table, $arr);
}
/**
* @brief Import account file exported from mod/uexport
*
- * @param App $a Friendica App Class
+ * @param App $a Friendica App Class
* @param array $file array from $_FILES
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @throws \ImagickException
*/
public static function importAccount(App $a, $file)
{
}
// send relocate messages
- Worker::add(PRIORITY_HIGH, 'Notifier', 'relocate', $newuid);
+ Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::RELOCATION, $newuid);
info(L10n::t("Done. You can now login with your username and password"));
$a->internalRedirect('login');