Merge pull request #10078 from annando/addcontact

Improved checks when adding contacts
This commit is contained in:
Hypolite Petovan 2021-03-25 08:56:50 -04:00 committed by GitHub
commit 1ece34459f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View file

@ -229,7 +229,7 @@ function settings_post(App $a)
notice(DI::l10n()->t('Contact CSV file upload error')); notice(DI::l10n()->t('Contact CSV file upload error'));
} else { } else {
$csvArray = array_map('str_getcsv', file($_FILES['importcontact-filename']['tmp_name'])); $csvArray = array_map('str_getcsv', file($_FILES['importcontact-filename']['tmp_name']));
Logger::info('Import started', ['lines' => count($csvArray)]); Logger::notice('Import started', ['lines' => count($csvArray)]);
// import contacts // import contacts
foreach ($csvArray as $csvRow) { foreach ($csvArray as $csvRow) {
// The 1st row may, or may not contain the headers of the table // The 1st row may, or may not contain the headers of the table
@ -237,18 +237,20 @@ function settings_post(App $a)
// or the handle of the account, therefore we check for either // or the handle of the account, therefore we check for either
// "http" or "@" to be present in the string. // "http" or "@" to be present in the string.
// All other fields from the row will be ignored // All other fields from the row will be ignored
if ((strpos($csvRow[0],'@') !== false) || (strpos($csvRow[0],'http') !== false)) { if ((strpos($csvRow[0],'@') !== false) || in_array(parse_url($csvRow[0], PHP_URL_SCHEME), ['http', 'https'])) {
Worker::add(PRIORITY_LOW, 'AddContact', $_SESSION['uid'], $csvRow[0]); Worker::add(PRIORITY_LOW, 'AddContact', $_SESSION['uid'], $csvRow[0]);
} else {
Logger::notice('Invalid account', ['url' => $csvRow[0]]);
} }
} }
Logger::info('Import done'); Logger::notice('Import done');
info(DI::l10n()->t('Importing Contacts done')); info(DI::l10n()->t('Importing Contacts done'));
// delete temp file // delete temp file
unlink($_FILES['importcontact-filename']['tmp_name']); unlink($_FILES['importcontact-filename']['tmp_name']);
} }
} else { } else {
Logger::info('Import triggered, but no import file was found.'); Logger::notice('Import triggered, but no import file was found.');
} }
return; return;

View file

@ -2821,6 +2821,9 @@ class Contact
$count = 0; $count = 0;
foreach ($urls as $url) { foreach ($urls as $url) {
if (empty($url) || !is_string($url)) {
continue;
}
$contact = self::getByURL($url, false, ['id', 'updated']); $contact = self::getByURL($url, false, ['id', 'updated']);
if (empty($contact['id'])) { if (empty($contact['id'])) {
Worker::add(PRIORITY_LOW, 'AddContact', 0, $url); Worker::add(PRIORITY_LOW, 'AddContact', 0, $url);