function getGames($db, $max_game, $max_player, $mode, $fid = false, $facebook = false)
{
    $modes = array('joinable' => 0, 'started' => 1, 'ended' => 2, 'all' => -1, 'friends' => -2, 'friends_all' => -3);
    $m = $modes[$mode];
    if ($m == -2) {
        $friends = filterFriends($db, getFriends($db, $fid, $facebook));
        $sql = "SELECT games.gid,games.state,games.numplayers " . "FROM games,plays " . "WHERE plays.gameid=games.gid AND games.state=0 AND games.numplayers<=?";
        $s = sizeof($friends);
        if (is_array($friends)) {
            if ($s == 0) {
                return array();
            }
            if ($s == 1) {
                $sql_mid = " AND plays.playerid=?";
            } else {
                $s--;
                $sql_mid = " AND (";
                for ($i = 0; $i < $s; $i++) {
                    $sql_mid .= "plays.playerid=? OR ";
                }
                $sql_mid .= 'plays.playerid=?)';
                $sql .= $sql_mid;
            }
        } else {
            return array();
        }
        $sql .= "ORDER BY gid DESC LIMIT ?";
        $ids = array($max_player);
        foreach ($friends as $friend) {
            $ids[] = $friend['fid'];
        }
        $ids[] = $max_game;
        $query = $db->query($sql, $ids);
        return $query;
    } else {
        if ($m != -1) {
            $sql = "SELECT `gid`,`state`,`numplayers` FROM `games` WHERE `state`=? AND `numplayers`<= ? ORDER BY gid DESC LIMIT ?";
            $query = $db->query($sql, array($m, $max_game, $max_player));
        } else {
            $sql = "SELECT `gid`,`state`,`numplayers` FROM `games` ORDER BY gid DESC LIMIT ?";
            $query = $db->query($sql, array($max_game));
        }
    }
    return $query;
}
예제 #2
0
 public function ajax_friends()
 {
     $friends = filterFriends($this->db, getFriends($this->db, $this->fid, $this->facebook));
     $this->load->view('/player/friends', array('friends' => $friends));
 }