function rewardBetaTesters()
 {
     $testers = array();
     require_once PATH_CORE . '/classes/user.class.php';
     require_once PATH_CORE . '/classes/challenges.class.php';
     $ct = new ChallengeCompletedTable($this->db);
     $cc = $ct->getRowObject();
     $challengeTable = new ChallengeTable($this->db);
     $betaTestChallenge = $challengeTable->getRowObject();
     if (!$betaTestChallenge->loadWhere("shortName='betaTest'")) {
         echo "Couldn't find betaTest challenge";
         return false;
     }
     $userTable = new UserTable($this->db);
     $user = $userTable->getRowObject();
     $backdate = "2009-02-28 00:00:00";
     foreach ($testers as $email) {
         if ($user->loadWhere("email='{$email}'")) {
             echo "User {$user->name}, {$email} found...";
             $statuscode = '';
             if (!$ct->submitAutomaticChallenge($user->userid, 'betaTest', &$statuscode, false)) {
                 echo "Challenge approval failure: {$statuscode}";
             } else {
                 echo $statuscode;
                 // TODO: take this out when done testing
                 //$this->db->log($statuscode);
                 // now backdate it!
                 if ($cc->loadWhere("userid={$user->userid} AND challengeid={$betaTestChallenge->id}")) {
                     //$cc->dateSubmitted = $backdate; // can leave this probably
                     $cc->dateAwarded = $backdate;
                     $cc->update();
                     echo "...backdated succesfully";
                 } else {
                     echo "Couldnt find CC to backdate!";
                 }
             }
         } else {
             echo "No user found with email {$email}.";
         }
         echo "<br />";
     }
 }
 function checkSubmitSiteChallenge($log)
 {
     //echo 'log action:' . $log->action . '<br>';
     if (!(array_search($log->action, array_keys(self::$siteChallengeActions)) === false)) {
         //echo 'found action in siteChallengeActions<br>';
         require_once PATH_CORE . '/classes/challenges.class.php';
         $ct = new ChallengeCompletedTable($this->db);
         if (!$ct->submitAutomaticChallenge($log->userid1, $log->action, &$statuscode, self::$siteChallengeActions[$log->action], $log->id)) {
             //echo $statuscode; // TODO: take this out when done testing
             //$this->db->log($statuscode);
         }
         //echo $statuscode; // TODO: take this out when done testing
         //$this->db->log("checkSubmitSiteChallenge $log->action: $statuscode dontLog: ".self::$siteChallengeActions[$log->action]);
         //$this->db->log(print_r(self::$siteChallengeActions, true));
         // update cached user vars for select site actions
         require_once PATH_CORE . '/classes/user.class.php';
         $ut = new UserTable($this->db);
         $uit = new UserInfoTable($this->db);
         $user = $ut->getRowObject();
         $userinfo = $uit->getRowObject();
         switch ($log->action) {
             case 'invite':
                 if ($userinfo->load($log->userid1)) {
                     $userinfo->cachedFriendsInvited++;
                     $userinfo->update();
                 }
                 break;
             case 'comment':
                 if ($user->load($log->userid1)) {
                     $user->cachedCommentsPosted++;
                     $user->update();
                 }
                 break;
             case 'postStory':
             case 'postBlog':
                 if ($user->load($log->userid1)) {
                     $user->cachedStoriesPosted++;
                     $user->update();
                 }
                 break;
             default:
                 break;
         }
     }
 }