forked from yathish1618/Reputation
/
ReputationModel.class.php
62 lines (51 loc) · 1.47 KB
/
ReputationModel.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
// Made by Yathish
// This file is part of esoTalk. Please see the included license file for usage information.
if (!defined("IN_ESOTALK")) exit;
/**
* The reputation model provides functions for retrieving and managing member data, reputation points and rank.
*
* @package esoTalk
*/
class ReputationModel extends ETModel {
public function __construct()
{
parent::__construct("reputation");
}
public function getReputationMembers()
{
$result = ET::SQL()
->select("username")
->select("memberId")
->select("reputationPoints")
->from("member")
->orderBy("reputationPoints DESC")
->exec()
->allRows();
//Assign ranks to all members based on reputation points
$rank = 1;
foreach ($result as $k => $v) {
$results[$k]["rank"] = $rank;
$results[$k]["avatar"] = avatar($v, "thumb");
$results[$k]["username"] = $result[$k]["username"];
$results[$k]["memberId"] = $result[$k]["memberId"];
$results[$k]["reputationPoints"] = $result[$k]["reputationPoints"];
$rank++;
}
return $results;
}
public function getRankOfCurrentMember($memberId, $results)
{
foreach ($results as $v) {
if($v["memberId"] == $memberId) return $v["rank"];
}
}
public function getNearbyReputationMembers($limit, $offset, $results)
{
return array_slice($results, $offset, $limit);
}
public function getTopReputationMembers($limit, $results)
{
return array_slice($results, 0, $limit);
}
}