Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Cron/UserGroupPromotion.php
<?php

namespace XF\Cron;

/**
 * Cron entry for executing user group promotions.
 */
class UserGroupPromotion
{
   
/**
     * Runs the cron-based check for new promotions that users should be awarded.
     */
   
public static function runPromotions()
    {
       
/** @var \XF\Repository\UserGroupPromotion $promotionRepo */
       
$promotionRepo = \XF::repository('XF:UserGroupPromotion');

       
$promotions = $promotionRepo->getActiveUserGroupPromotions();
        if (!
$promotions)
        {
            return;
        }

       
/** @var \XF\Finder\User $userFinder */
       
$userFinder = \XF::app()->finder('XF:User');
       
$userFinder->where('last_activity', '>', time() - 2 * 3600)
            ->
with(['Profile', 'Option'])
            ->
order('user_id');

       
$users = $userFinder->fetch();

       
$userGroupPromotionLogs = $promotionRepo->getUserGroupPromotionLogsForUsers($users->keys());

        foreach (
$users AS $user)
        {
           
$promotionRepo->updatePromotionsForUser(
               
$user,
               
$userGroupPromotionLogs[$user->user_id] ?? [],
               
$promotions
           
);
        }
    }
}