[DATABASE] Disable 'NULL' strings evaluation as SQL NULLs
Use $object->sqlValue('NULL') (identical to DataObject_Cast'ing) instead and fix related issues like (email|sms)settings considering these NULLs as a false positive for the E-Mail address still being set when it's been removed. There could also be security implications to the now-disabled approach of considering 'NULL' strings as SQL NULLs.
This commit is contained in:
@@ -62,6 +62,7 @@ function main()
|
||||
|
||||
fixupNoticeConversation();
|
||||
initConversation();
|
||||
fixupUserBadNulls();
|
||||
fixupGroupURI();
|
||||
if ($iterate_files) {
|
||||
printfnq("Running file iterations:\n");
|
||||
@@ -121,6 +122,26 @@ function updateSchemaPlugins()
|
||||
printfnq("DONE.\n");
|
||||
}
|
||||
|
||||
function fixupUserBadNulls(): void
|
||||
{
|
||||
printfnq("Ensuring all users have no empty strings for NULLs...");
|
||||
|
||||
foreach (['email', 'incomingemail', 'sms', 'smsemail'] as $col) {
|
||||
$user = new User();
|
||||
$user->whereAdd("{$col} = ''");
|
||||
|
||||
if ($user->find()) {
|
||||
while ($user->fetch()) {
|
||||
$sql = "UPDATE {$user->escapedTableName()} SET {$col} = NULL "
|
||||
. "WHERE id = {$user->id}";
|
||||
$user->query($sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printfnq("DONE.\n");
|
||||
}
|
||||
|
||||
function fixupNoticeConversation()
|
||||
{
|
||||
printfnq("Ensuring all notices have a conversation ID...");
|
||||
|
Reference in New Issue
Block a user