Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/UserTitleLadder.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

class
UserTitleLadder extends Repository
{
   
/**
     * @return Finder
     */
   
public function findLadder()
    {
        return
$this->finder('XF:UserTitleLadder')->order('minimum_level');
    }

    public function
recreateLadder(array $records)
    {
       
$db = $this->db();

       
$filtered = [];
        foreach (
$records AS $record)
        {
            if (isset(
$record['minimum_level']) && !empty($record['title']))
            {
               
$filtered[$record['minimum_level']] = $record['title'];
            }
        }

       
$db->beginTransaction();
       
$db->delete('xf_user_title_ladder', null); // don't use emptyTable as it may not work in a transaction

       
foreach ($filtered AS $level => $title)
        {
           
$ladder = $this->em->create('XF:UserTitleLadder');
           
$ladder->minimum_level = $level;
           
$ladder->title = $title;
           
$ladder->save();
        }

       
$this->rebuildLadderCache();

       
$db->commit();
    }

    public function
getLadderCacheData()
    {
        return
$this->db()->fetchPairs("
            SELECT minimum_level, title
            FROM xf_user_title_ladder
            ORDER BY minimum_level DESC
        "
);
    }

    public function
rebuildLadderCache()
    {
       
$cache = $this->getLadderCacheData();
        \
XF::registry()->set('userTitleLadder', $cache);

        return
$cache;
    }
}