Skip to content

Commit

Permalink
use the query builder and cast the values
Browse files Browse the repository at this point in the history
Signed-off-by: Joas Schilling <coding@schilljs.com>
  • Loading branch information
nickvergessen committed Oct 23, 2018
1 parent 14675a8 commit 37b2585
Showing 1 changed file with 26 additions and 26 deletions.
52 changes: 26 additions & 26 deletions lib/MailQueueHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -261,36 +261,36 @@ protected function getAffectedUsers($limit, $latestSend, $forceSending, $restric
* @return array [data of the first max. 200 entries, total number of entries]
*/
protected function getItemsForUser($affectedUser, $maxTime, $maxNumItems = self::ENTRY_LIMIT) {
$query = $this->connection->prepare(
'SELECT * '
. ' FROM `*PREFIX*activity_mq` '
. ' WHERE `amq_timestamp` <= ? '
. ' AND `amq_affecteduser` = ? '
. ' ORDER BY `amq_timestamp` ASC',
$maxNumItems
);
$query->execute([(int) $maxTime, $affectedUser]);
$query = $this->connection->getQueryBuilder();
$query->select('*')
->from('activity_mq')
->where($query->expr()->lte('amq_timestamp', $query->createNamedParameter($maxTime)))
->andWhere($query->expr()->eq('amq_affecteduser', $query->createNamedParameter($affectedUser)))
->orderBy('amq_timestamp', 'ASC')
->setMaxResults($maxNumItems);
$result = $query->execute();

$activities = array();
while ($row = $query->fetch()) {
$activities = [];
while ($row = $result->fetch()) {
$activities[] = $row;
}
$result->closeCursor();

if (isset($activities[$maxNumItems - 1])) {
// Reached the limit, run a query to get the actual count.
$query = $this->connection->prepare(
'SELECT COUNT(*) AS `actual_count`'
. ' FROM `*PREFIX*activity_mq` '
. ' WHERE `amq_timestamp` <= ? '
. ' AND `amq_affecteduser` = ?'
);
$query->execute([(int) $maxTime, $affectedUser]);
$query = $this->connection->getQueryBuilder();
$query->selectAlias($query->func()->count('*'), 'actual_count')
->from('activity_mq')
->where($query->expr()->lte('amq_timestamp', $query->createNamedParameter($maxTime)))
->andWhere($query->expr()->eq('amq_affecteduser', $query->createNamedParameter($affectedUser)));
$result = $query->execute();
$row = $result->fetch();
$result->closeCursor();

$row = $query->fetch();
return [$activities, $row['actual_count'] - $maxNumItems];
} else {
return [$activities, 0];
}

return [$activities, 0];
}

/**
Expand Down Expand Up @@ -355,17 +355,17 @@ protected function sendEmailToUser($userName, $email, $lang, $timezone, $maxTime
foreach ($mailData as $activity) {
$event = $this->activityManager->generateEvent();
try {
$event->setApp($activity['amq_appid'])
->setType($activity['amq_type'])
$event->setApp((string) $activity['amq_appid'])
->setType((string) $activity['amq_type'])
->setTimestamp((int) $activity['amq_timestamp'])
->setSubject($activity['amq_subject'], json_decode($activity['amq_subjectparams'], true))
->setObject($activity['object_type'], (int) $activity['object_id']);
->setSubject((string) $activity['amq_subject'], (array) json_decode($activity['amq_subjectparams'], true))
->setObject((string) $activity['object_type'], (int) $activity['object_id']);
} catch (\InvalidArgumentException $e) {
continue;
}

$relativeDateTime = $this->dateFormatter->formatDateTimeRelativeDay(
$activity['amq_timestamp'],
(int) $activity['amq_timestamp'],
'long', 'short',
new \DateTimeZone($timezone), $l
);
Expand Down

0 comments on commit 37b2585

Please sign in to comment.