Merge pull request #187 from larrabee/disable_email_check
Add option to disable email cheking for imported CSV
This commit is contained in:
commit
f234a64df7
6 changed files with 73 additions and 40 deletions
|
@ -982,7 +982,7 @@ module.exports.delete = (listId, cid, callback) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.createImport = (listId, type, path, size, delimiter, mapping, callback) => {
|
module.exports.createImport = (listId, type, path, size, delimiter, emailcheck, mapping, callback) => {
|
||||||
listId = Number(listId) || 0;
|
listId = Number(listId) || 0;
|
||||||
type = Number(type) || 1;
|
type = Number(type) || 1;
|
||||||
|
|
||||||
|
@ -994,8 +994,8 @@ module.exports.createImport = (listId, type, path, size, delimiter, mapping, cal
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
let query = 'INSERT INTO importer (`list`, `type`, `path`, `size`, `delimiter`, `mapping`) VALUES(?,?,?,?,?,?)';
|
let query = 'INSERT INTO importer (`list`, `type`, `path`, `size`, `delimiter`, `emailcheck`, `mapping`) VALUES(?,?,?,?,?,?,?)';
|
||||||
connection.query(query, [listId, type, path, size, delimiter, JSON.stringify(mapping)], (err, result) => {
|
connection.query(query, [listId, type, path, size, delimiter, emailcheck, JSON.stringify(mapping)], (err, result) => {
|
||||||
connection.release();
|
connection.release();
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
"schemaVersion": 23
|
"schemaVersion": 24
|
||||||
}
|
}
|
||||||
|
|
|
@ -555,7 +555,7 @@ router.post('/subscription/import', uploads.single('listimport'), passport.parse
|
||||||
return res.redirect('/lists');
|
return res.redirect('/lists');
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
subscriptions.createImport(list.id, req.body.type === 'subscribed' ? 1 : 2, req.file.path, req.file.size, delimiter, {
|
subscriptions.createImport(list.id, req.body.type === 'subscribed' ? 1 : 2, req.file.path, req.file.size, delimiter, req.body.emailcheck === 'enabled' ? 1 : 0, {
|
||||||
columns: rows[0],
|
columns: rows[0],
|
||||||
example: rows[1] || []
|
example: rows[1] || []
|
||||||
}, (err, importId) => {
|
}, (err, importId) => {
|
||||||
|
|
|
@ -140,6 +140,43 @@ function processImport(data, callback) {
|
||||||
return setImmediate(processRows);
|
return setImmediate(processRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function insertToSubscription() {
|
||||||
|
subscriptions.insert(listId, {
|
||||||
|
imported: data.id,
|
||||||
|
status: data.type,
|
||||||
|
partial: true
|
||||||
|
}, entry, (err, response) => {
|
||||||
|
if (err) {
|
||||||
|
// ignore
|
||||||
|
log.error('Import', err.stack);
|
||||||
|
} else if (response.entryId) {
|
||||||
|
//log.verbose('Import', 'Inserted %s as %s', entry.email, entryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.getConnection((err, connection) => {
|
||||||
|
if (err) {
|
||||||
|
log.error('Import', err.stack);
|
||||||
|
return setImmediate(processRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
let query;
|
||||||
|
if (response.inserted) {
|
||||||
|
// this record did not exist before, count as new
|
||||||
|
query = 'UPDATE importer SET `processed`=`processed`+1, `new`=`new`+1 WHERE `id`=? LIMIT 1';
|
||||||
|
} else {
|
||||||
|
// it's an existing record
|
||||||
|
query = 'UPDATE importer SET `processed`=`processed`+1 WHERE `id`=? LIMIT 1';
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.query(query, [data.id], () => {
|
||||||
|
connection.release();
|
||||||
|
return setImmediate(processRows);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.emailcheck === 1) {
|
||||||
tools.validateEmail(entry.email, true, err => {
|
tools.validateEmail(entry.email, true, err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
let reason = (err.message || '').toString().trim().replace(/^[a-z]Error:\s*/i, '');
|
let reason = (err.message || '').toString().trim().replace(/^[a-z]Error:\s*/i, '');
|
||||||
|
@ -165,42 +202,11 @@ function processImport(data, callback) {
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
insertToSubscription();
|
||||||
subscriptions.insert(listId, {
|
|
||||||
imported: data.id,
|
|
||||||
status: data.type,
|
|
||||||
partial: true
|
|
||||||
}, entry, (err, response) => {
|
|
||||||
if (err) {
|
|
||||||
// ignore
|
|
||||||
log.error('Import', err.stack);
|
|
||||||
} else if (response.entryId) {
|
|
||||||
//log.verbose('Import', 'Inserted %s as %s', entry.email, entryId);
|
|
||||||
}
|
|
||||||
|
|
||||||
db.getConnection((err, connection) => {
|
|
||||||
if (err) {
|
|
||||||
log.error('Import', err.stack);
|
|
||||||
return setImmediate(processRows);
|
|
||||||
}
|
|
||||||
|
|
||||||
let query;
|
|
||||||
if (response.inserted) {
|
|
||||||
// this record did not exist before, count as new
|
|
||||||
query = 'UPDATE importer SET `processed`=`processed`+1, `new`=`new`+1 WHERE `id`=? LIMIT 1';
|
|
||||||
} else {
|
|
||||||
// it's an existing record
|
|
||||||
query = 'UPDATE importer SET `processed`=`processed`+1 WHERE `id`=? LIMIT 1';
|
|
||||||
}
|
|
||||||
|
|
||||||
connection.query(query, [data.id], () => {
|
|
||||||
connection.release();
|
|
||||||
return setImmediate(processRows);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
insertToSubscription();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
parser.on('readable', () => {
|
parser.on('readable', () => {
|
||||||
|
|
11
setup/sql/upgrade-00024.sql
Normal file
11
setup/sql/upgrade-00024.sql
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# Header section
|
||||||
|
# Define incrementing schema version number
|
||||||
|
SET @schema_version = '24';
|
||||||
|
|
||||||
|
# Add field
|
||||||
|
ALTER TABLE `importer` ADD COLUMN `emailcheck` tinyint(4) unsigned DEFAULT 1 NOT NULL AFTER `delimiter`;
|
||||||
|
|
||||||
|
# Footer section
|
||||||
|
LOCK TABLES `settings` WRITE;
|
||||||
|
INSERT INTO `settings` (`key`, `value`) VALUES('db_schema_version', @schema_version) ON DUPLICATE KEY UPDATE `value`=@schema_version;
|
||||||
|
UNLOCK TABLES;
|
|
@ -43,6 +43,22 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">{{#translate}}Check imported emails{{/translate}}:</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="radio">
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="emailcheck" id="type" value="enabled" checked> {{#translate}}Enabled{{/translate}}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="radio">
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="emailcheck" id="type" value="disabled"> {{#translate}}Disabled{{/translate}}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
Loading…
Reference in a new issue