public function index() { $page = 1; if ($this->GetData('page')) { $page = $this->GetData('page'); } $achievements = UserAchievement::paginate("", "user_achievements.created_at DESC", $page, 25); $this->assign("achievements", $achievements); $this->title = "Achievements"; $this->render("userachievement/index.tpl"); }
protected function load_user_achievement($id = null) { if (!$id) { $id = $this->GetData('id'); } $user_achievement = UserAchievement::find_by_id($id); if ($user_achievement) { return $user_achievement; } else { throw new Error404(); } }
public function achievements($nickname = null) { $user = $this->load_user($nickname); $page = 1; if ($this->GetData('page')) { $page = $this->GetData('page'); } $id = mysql_real_escape_string($user->id); $achievements = UserAchievement::paginate("users.id = '{$id}'", "", $page, 20); $this->assign("user", $user); $this->assign("page", $achievements); $this->title = "{$user->nickname} :: Achievements"; $this->render("user/achievements.tpl"); }
public function achievements($category = null, $reload = false) { if ($reload or !$this->achievements_cache) { $id = mysql_real_escape_string($this->id); $this->achievements_cache = UserAchievement::find_all("user_achievements.user_id = '{$id}'", "user_achievements.category_id ASC"); } $results = array(); if ($category) { $id = $category; if (is_a($category, "AchievementCategory")) { $id = $category->id; } foreach ($this->achievements_cache as $achievement) { if ($achievement->category->id == $id) { $results[] = $achievement; } } } else { $results = $this->achievements_cache; } return $results; }
<?php require "init.php"; $script = Script::find_by_code('loyalty_achievements'); $script->start(); ob_start(); $time = date("H:i:s"); echo "[{$time}] Achievement Loyalty Points\r\n\r\n"; $page = UserAchievement::paginate("user_achievements.processed = 0", "user_achievements.created_at ASC", 1, 50); $count = count($page->collection); echo " Processing {$count} / {$page->total} achievements\r\n"; foreach ($page->collection as $obj) { mysql_query('BEGIN'); $loyalty = true; if ($obj->achievement->points_value > 0) { $loyalty = $obj->user->award_loyalty($obj->achievement->points_value, "Achievement: {$obj->achievement->name}"); $script->addlog("Awarded {$obj->achievement->points_value}pts to [{$obj->user}] {$obj->user->nickname} for [{$obj->achievement}] {$obj->achievement->name}"); } $obj->processed = true; $ua = $obj->save(); if ($loyalty && $ua) { mysql_query('COMMIT'); } else { echo "Error processing [{$obj}]\r\n"; print_r($obj); mysql_query('ROLLBACK'); $script->addlog("Error processing [{$obj}]", 'Critical'); print_r($obj->errors); print_r($obj->errors[0]); if (count($obj->errors) > 0 && $obj->errors[0] == 'User has already been awarded that achievement') { $obj->processed = true;
public function intranet_update() { self::Restrict("intranet"); $event = Event::find_by_permalink($_GET['permalink']); if (!$event) { Site::Flash("error", "Unable to find event"); Error404(); } $event_id = mysql_real_escape_string($event->id); $id = null; // Achievements $result = array(); if (isset($_REQUEST['achievements'])) { $achievements = unserialize($_REQUEST['achievements']); foreach ($achievements as $achieve) { if ($achieve['id']) { $id = mysql_real_escape_string($achieve['id']); $achievement = Achievement::find("achievements.event_id = '{$event_id}' AND achievements.intranet_id = '{$id}'"); } if (!$achievement) { $achievement = new Achievement(); $achievement->event_id = $event->id; $achievement->intranet_id = $id; } $achievement->name = $achieve['name']; $achievement->description = $achieve['description']; $achievement->image = $achieve['image']; $success = false; if ($achievement->save()) { $success = true; } $result[] = array('id' => $id, 'result' => $success, 'achievement' => $achievement); } } $this->assign("result", $result); // User achievements UserAchievement::MarkNotUpdated($event_id); $result = array(); if (isset($_REQUEST['user_achievements'])) { $user_achievements = unserialize($_REQUEST['user_achievements']); foreach ($user_achievements as $achieve) { $id = mysql_real_escape_string($achieve['achievement_id']); $user_id = mysql_real_escape_string($achieve['user_id']); $achievement = Achievement::find("achievements.intranet_id = '{$id}' AND achievements.event_id = '{$event_id}'"); if (!$achievement) { $success = false; } else { $achievement_id = mysql_real_escape_string($achievement->id); $user_achievement = UserAchievement::find("achievements.id = '{$achievement_id}' and users.id = '{$user_id}'"); $success = false; if (!$user_achievement) { $user_achievement = new UserAchievement(); $user_achievement->user_id = $user_id; $user_achievement->achievement_id = $achievement_id; } $user_achievement->updated = true; if ($user_achievement->save()) { $success = true; } } $result[] = array('id' => $achieve['id'], 'result' => $success, 'user_achievement' => $user_achievement); } } UserAchievement::DestroyNotUpdated(); $this->assign("user_result", $result); header('Content-Type: text/xml'); $this->render("achievement/intranet_update.tpl", true); }
public function user_achievements($reload = false) { if ($reload or !$this->user_achievements_cache) { $id = mysql_real_escape_string($this->achievement_category->category_id); $this->user_achievements_cache = UserAchievement::find_all("achievements.category_id = '{$this->achievement_category_id}'"); } return $this->user_achievements_cache; }
public function award($user, $category_id) { $user_achievement = new UserAchievement(); $user_achievement->user_id = $user->id; $user_achievement->achievement_id = $this->id; $user_achievement->category_id = $category_id; $valid = $user_achievement->save(); return $valid; }