diff --git a/e107_handlers/e_ranks_class.php b/e107_handlers/e_ranks_class.php
index 1f962b862..4910be9f0 100644
--- a/e107_handlers/e_ranks_class.php
+++ b/e107_handlers/e_ranks_class.php
@@ -16,17 +16,20 @@ if (!defined('e107_INIT')) { exit; }
class e_ranks
{
- private $ranks;
+ public $ranks;
private $userRanks;
+ private $imageFolder;
- public function __construct($force=true)
+ public function __construct($force = false)
{
$this->ranks = array();
$this->userRanks = array();
+ $this->imageFolder = is_dir(THEME.'images/ranks') ? THEME_ABS.'images/ranks/' : e_IMAGE_ABS.'ranks/';
+
$e107 = e107::getInstance();
//Check to see if we can get it from cache
- if($force == false && ($this->ranks = $e107->ecache->retrieve_sys('nomd5_user_ranks')))
+ if($force == false && ($ranks = $e107->ecache->retrieve_sys('nomd5_user_ranks')))
{
$this->ranks = $e107->arrayStorage->ReadArray($ranks);
}
@@ -57,6 +60,111 @@ class e_ranks
}
$e107->ecache->set_sys('nomd5_user_ranks', $e107->arrayStorage->WriteArray($this->ranks, false));
}
+
+ // defaults
+ if(empty($this->ranks))
+ {
+ $this->setDefaultRankData();
+ }
+ }
+
+ protected function setDefaultRankData()
+ {
+ e107::coreLan('userclass');
+
+ $this->ranks = array('data' => array(), 'special' => array());
+ $this->ranks['data'][1] = array(
+ 'name' => '',
+ 'thresh' => 20,
+ 'image' => 'lev1.png',
+ 'lan_pfx' => '',
+ 'id' => 1,
+ );
+ $this->ranks['data'][2] = array(
+ 'name' => '',
+ 'thresh' => 100,
+ 'image' => 'lev2.png',
+ 'lan_pfx' => '',
+ 'id' => 2,
+ );
+ $this->ranks['data'][3] = array(
+ 'name' => '',
+ 'thresh' => 250,
+ 'image' => 'lev3.png',
+ 'lan_pfx' => '',
+ 'id' => 3,
+ );
+ $this->ranks['data'][4] = array(
+ 'name' => '',
+ 'thresh' => 410,
+ 'image' => 'lev4.png',
+ 'lan_pfx' => '',
+ 'id' => 4,
+ );
+ $this->ranks['data'][5] = array(
+ 'name' => '',
+ 'thresh' => 580,
+ 'image' => 'lev5.png',
+ 'lan_pfx' => '',
+ 'id' => 5,
+ );
+ $this->ranks['data'][6] = array(
+ 'name' => '',
+ 'thresh' => 760,
+ 'image' => 'lev6.png',
+ 'lan_pfx' => '',
+ 'id' => 6,
+ );
+ $this->ranks['data'][7] = array(
+ 'name' => '',
+ 'thresh' => 950,
+ 'image' => 'lev7.png',
+ 'lan_pfx' => '',
+ 'id' => 7,
+ );
+ $this->ranks['data'][8] = array(
+ 'name' => '',
+ 'thresh' => 1150,
+ 'image' => 'lev8.png',
+ 'lan_pfx' => '',
+ 'id' => 8,
+ );
+ $this->ranks['data'][9] = array(
+ 'name' => '',
+ 'thresh' => 1370,
+ 'image' => 'lev9.png',
+ 'lan_pfx' => '',
+ 'id' => 9,
+ );
+ $this->ranks['data'][10] = array(
+ 'name' => '',
+ 'thresh' => 1371,
+ 'image' => 'lev10.png',
+ 'lan_pfx' => '',
+ 'id' => 10,
+ );
+ // special
+ $this->ranks['special'][1] = array(
+ 'name' => UC_LAN_6,
+ 'thresh' => 1,
+ 'image' => 'English_main_admin.png',
+ 'lan_pfx' => '1',
+ 'id' => 11,
+ );
+ $this->ranks['special'][2] = array(
+ 'name' => UC_LAN_5,
+ 'thresh' => 2,
+ 'image' => 'English_admin.png',
+ 'lan_pfx' => '1',
+ 'id' => 12,
+ );
+ $this->ranks['special'][3] = array(
+ 'name' => UC_LAN_7,
+ 'thresh' => 3,
+ 'image' => 'English_moderator.png',
+ 'lan_pfx' => '1',
+ 'id' => 13,
+ );
}
@@ -73,10 +181,18 @@ class e_ranks
$_tmp = explode('_', $info['image'], 2);
$img = e_LANGUAGE.'_'.$_tmp[1];
}
- return e_IMAGE_ABS.'ranks/'.$img;
+ return $this->imageFolder.$img;
}
- function getRanks($userId)
+
+ private function _getName(&$info)
+ {
+ if(!isset($info['name_parsed'])) $info['name_parsed'] = e107::getParser()->toHTML($info['name'], FALSE, 'defs');
+ return $info['name_parsed'];
+ }
+
+ // TODO - custom ranks (e.g. forum moderator)
+ function getRanks($userId, $moderator = false)
{
$e107 = e107::getInstance();
if(!$userId && USER) { $userId = USERID; }
@@ -86,29 +202,34 @@ class e_ranks
}
$ret = array();
- $userData = get_user_data($userId);
+ $userData = e107::getSystemUser($userId)->getData(); //get_user_data($userId);
+
if($userData['user_admin'])
{
if($userData['user_perms'] == '0')
{
//Main Site Admin
- $data['special'] = "
";
+ $data['special'] = "
";
}
else
{
//Site Admin
- $data['special'] = "
";
+ $data['special'] = "
";
}
}
+ elseif($moderator)
+ {
+ $data['special'] = "
";
+ }
$userData['user_daysregged'] = max(1, round((time() - $userData['user_join']) / 86400));
$level = $this->_calcLevel($userData);
- $lastRank = count($this->ranks['data']) - 1;
+ $lastRank = count($this->ranks['data']);
$rank = false;
if($level <= $this->ranks['data'][0]['thresh'])
{
- $rank = 0;
+ $rank = 1;
}
elseif($level >= $this->ranks['data'][$lastRank]['thresh'])
{
@@ -127,11 +248,12 @@ class e_ranks
}
if($rank !== false)
{
- $data['name'] = '[ '.$e107->tp->toHTML($this->ranks['data'][$rank]['name'], FALSE, 'defs').' ]';
- $img_title = ($this->ranks['data'][$rank]['name'] ? "title='".$this->ranks['data'][$rank]['name']."'" : '');
+ $data['name'] = $this->_getName($this->ranks['data'][$rank]);
+ $img_title = ($this->ranks['data'][$rank]['name'] ? "alt='{$data['name']}' title='{$data['name']}'" : '');
$data['pic'] = "
";
}
$this->userRanks[$userId] = $data;
+
return $data;
}