fix(legacy): ensure last played criteria works with never played files (#2840)

### Description

Closes #2798

COALESCE last played null values with date -infinity, to ensure newly
added files are found by the last played smart block criteria.
This commit is contained in:
Jonas L 2023-12-27 17:32:33 +01:00 committed by GitHub
parent d80100a216
commit 24ee3830c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 12 deletions

View File

@ -1689,31 +1689,22 @@ SQL;
// need to pull in the current time and subtract the value or figure out how to make it relative // need to pull in the current time and subtract the value or figure out how to make it relative
$relativedate = new DateTime($spCriteriaValue); $relativedate = new DateTime($spCriteriaValue);
$dt = $relativedate->format(DateTime::ISO8601); $dt = $relativedate->format(DateTime::ISO8601);
// Logging::info($spCriteriaValue); $spCriteriaValue = "COALESCE({$spCriteria}, DATE '-infinity') <= '{$dt}'";
$spCriteriaValue = "{$spCriteria} <= '{$dt}'";
} elseif ($spCriteriaModifier == 'after') { } elseif ($spCriteriaModifier == 'after') {
$relativedate = new DateTime($spCriteriaValue); $relativedate = new DateTime($spCriteriaValue);
$dt = $relativedate->format(DateTime::ISO8601); $dt = $relativedate->format(DateTime::ISO8601);
// Logging::info($spCriteriaValue); $spCriteriaValue = "COALESCE({$spCriteria}, DATE '-infinity') >= '{$dt}'";
$spCriteriaValue = "{$spCriteria} >= '{$dt}'";
} elseif ($spCriteriaModifier == 'between') { } elseif ($spCriteriaModifier == 'between') {
$fromrelativedate = new DateTime($spCriteriaValue); $fromrelativedate = new DateTime($spCriteriaValue);
$fdt = $fromrelativedate->format(DateTime::ISO8601); $fdt = $fromrelativedate->format(DateTime::ISO8601);
// Logging::info($fdt);
$torelativedate = new DateTime($spCriteriaExtra); $torelativedate = new DateTime($spCriteriaExtra);
$tdt = $torelativedate->format(DateTime::ISO8601); $tdt = $torelativedate->format(DateTime::ISO8601);
// Logging::info($tdt); $spCriteriaValue = "COALESCE({$spCriteria}, DATE '-infinity') >= '{$fdt}' AND COALESCE({$spCriteria}, DATE '-infinity') <= '{$tdt}'";
$spCriteriaValue = "{$spCriteria} >= '{$fdt}' AND {$spCriteria} <= '{$tdt}'";
} }
// logging::info('before');
// logging::info($spCriteriaModifier);
$spCriteriaModifier = self::$modifier2CriteriaMap[$spCriteriaModifier]; $spCriteriaModifier = self::$modifier2CriteriaMap[$spCriteriaModifier];
// logging::info('after');
// logging::info($spCriteriaModifier);
try { try {
if ($spCriteria == 'owner_id') { if ($spCriteria == 'owner_id') {
$spCriteria = 'subj.login'; $spCriteria = 'subj.login';