/** * Load all user badges and set them to group index. * Every user can have only one badge for a group. * * <code> * $options = array( * "user_id" => 1, * "group_id" => 2 * ); * * $userBadges = new Gamification\User\Badges(\JFactory::getDbo()) * $userBadges->load($options); * </code> * * @param array $options */ public function load($options = array()) { $userId = ArrayHelper::getValue($options, "user_id"); $groupId = ArrayHelper::getValue($options, "group_id"); // Create a new query object. $query = $this->db->getQuery(true); $query->select("a.id, a.badge_id, a.user_id, a.group_id, " . "b.title, b.description, b.points, b.image, b.published, b.points_id, b.group_id")->from($this->db->quoteName("#__gfy_userbadges", "a"))->innerJoin($this->db->quoteName("#__gfy_badges", "b") . ' ON a.badge_id = b.id')->where("a.user_id = " . (int) $userId); if (!empty($groupId)) { $query->where("a.group_id = " . (int) $groupId); } $this->db->setQuery($query); $results = (array) $this->db->loadAssocList(); if (!empty($results)) { $this->userId = $userId; if (!empty($groupId)) { $this->groupId = $groupId; } foreach ($results as $result) { $badge = new Badge(\JFactory::getDbo()); $badge->bind($result); $this->items[$result["group_id"]][$result["badge_id"]] = $badge; } } }