コード例 #1
0
 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");
 }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
 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");
 }
コード例 #4
0
 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;
 }
コード例 #5
0
<?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;
コード例 #6
0
 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);
 }
コード例 #7
0
 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;
 }
コード例 #8
0
 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;
 }