DragonByte Tech
Well-known member
The cron job
This can be fixed extremely easily:
XF\Job\User
's rebuildById
function does not allow for add-ons to add their own custom rebuild features, without overwriting the whole method.This can be fixed extremely easily:
PHP:
protected function rebuildById($id)
{
/** @var \XF\Entity\User $user */
$user = $this->app->em()->find('XF:User', $id, ['Profile']);
if (!$user)
{
return;
}
$db = $this->app->db();
$db->beginTransaction();
$this->updateColumns($user);
$user->save(true, false);
$this->performRebuildTasks($user);
$db->commit();
}
protected function updateColumns(\XF\Entity\User $user)
{
$user->alerts_unviewed = $this->app->finder('XF:UserAlert')
->where('alerted_user_id', $user->user_id)
->where('view_date', 0)
->total();
$user->alerts_unread = $this->app->finder('XF:UserAlert')
->where('alerted_user_id', $user->user_id)
->where('read_date', 0)
->total();
$user->conversations_unread = $this->app->finder('XF:ConversationUser')
->with('Master', true)
->with('Recipient', true)
->where('owner_user_id', $user->user_id)
->where('is_unread', 1)
->total();
}
protected function performRebuildTasks(\XF\Entity\User $user)
{
$user->rebuildUserGroupRelations(false);
$user->rebuildPermissionCombination();
$user->rebuildDisplayStyleGroup();
$user->rebuildWarningPoints();
$user->Profile->rebuildUserFieldValuesCache();
}
Upvote
6