Example #1
0
 /**
  * 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;
         }
     }
 }