protected static function get_fields() { return self::select_fields() . ", " . AchievementCategory::select_fields(); }
protected static function get_fields() { return implode(', ', array(self::select_fields(), User::select_fields(), Achievement::select_fields(), AchievementCategory::select_fields())); }
public function award() { if ($this->post) { $achievement = $this->load_achievement($this->PostData('achievement_id')); $user_temp = $this->PostData('users'); if (!is_array($user_temp)) { $user_temp = explode(',', $user_temp); } $error_on = array(); $success = 0; foreach ($user_temp as $name_temp) { $user_id = mysql_real_escape_string($name_temp); $user = User::find_by_id($user_id); if ($user) { if ($achievement->award($user, $this->PostData("category_id"))) { $success++; } else { $error_on[] = $name; } } else { $error_on[] = $name; } } if (count($user_temp) == 1) { if ($success == 1) { Site::InstantFlash("notice", "{$user->nickname} has been awarded {$achievement->name}"); } else { Site::InstantFlash("error", "Unable to award achievement"); } } else { if ($success == 0) { Site::InstantFlash("error", "Unable to award achievements to any of the users listed"); } elseif (count($error_on) > 0) { Site::InstantFlash("error", "Awarded achievement to {$success} user" . ($success != 1 ? "s" : "") . ", failed to award to " . implode(", ", $error_on)); } else { Site::InstantFlash("notice", "Awarded achievements to all users listed."); } } } $filters = array(); $pageQuery = ''; if ($this->GetData('query')) { $pageQuery = $this->GetData('query'); $query = mysql_real_escape_string($this->GetData('query')); $filters[] = "users.nickname LIKE '%{$query}%'"; } $filter = implode('AND', $filters); $achievement_id = null; if ($this->GetData('achievement_id')) { $achievement_id = $this->GetData('achievement_id'); } $page = 1; if ($this->GetData('page')) { $page = $this->GetData('page'); } $users = User::paginate($filter, 'users.nickname ASC', $page, 50); $achievements = Achievement::find_all("", "achievements.created_at ASC"); $achlist = array(); foreach ($achievements as $ach) { $achlist[$ach->id] = "{$ach->id}. {$ach->name}"; } // Yay - Magic Numbers! $category_id = 11; $categories = array(); $all_categories = array(); $all_categories = AchievementCategory::find_all(); foreach ($all_categories as $category) { $event = Event::find("achievement_category_id={$category->id}"); if (!$event || $event->check_user(Site::CurrentUser()) && $event->display_achievements) { $categories[$category->id] = $category->category_name; if ($category->default_category) { $category_id = $category->id; } } } if ($this->GetData('category_id')) { $category_id = $this->GetData('category_id'); } $this->assign("achievements", $achlist); $this->assign("categories", $categories); $this->assign("category_id", $category_id); $this->assign("achievement_id", $achievement_id); $this->assign("users", $users); $this->assign('pagequery', $pageQuery); $this->title = "Award Achievement"; $this->render("achievement/award.tpl"); }
protected static function load_category($id = null) { if (!$id) { $id = $_GET['id']; } $category = AchievementCategory::find_by_id($id); if ($category) { return $category; } else { throw new Error404(); } }