public function makeAll(&$demoDataHelper) { assert('$demoDataHelper instanceof DemoDataHelper'); assert('$demoDataHelper->isSetRange("User")'); foreach (User::getAll() as $user) { $gameScore = GameScore::resolveToGetByTypeAndPerson('LoginUser', $user); $gameScore->value = 10; $saved = $gameScore->save(); assert('$saved'); $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, $user); $gamePoint->value = mt_rand(100, 300); $saved = $gamePoint->save(); assert('$saved'); $gameScore = GameScore::resolveToGetByTypeAndPerson('CreateAccount', $user); $gameScore->value = 10; $saved = $gameScore->save(); assert('$saved'); $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_NEW_BUSINESS, $user); $gamePoint->value = 100; $saved = $gamePoint->save(); assert('$saved'); //Badges $gameBadge = new GameBadge(); $gameBadge->type = 'LoginUser'; $gameBadge->grade = 2; $gameBadge->person = $user; $saved = $gameBadge->save(); assert('$saved'); $gameBadge = new GameBadge(); $gameBadge->type = 'CreateAccount'; $gameBadge->grade = 3; $gameBadge->person = $user; $saved = $gameBadge->save(); assert('$saved'); //Levels $gameLevel = GameLevel::resolveByTypeAndPerson(GameLevel::TYPE_GENERAL, $user); $gameLevel->value = 1; $saved = $gameLevel->save(); assert('$saved'); $gameLevel = GameLevel::resolveByTypeAndPerson(GameLevel::TYPE_NEW_BUSINESS, $user); $gameLevel->value = 1; $saved = $gameLevel->save(); assert('$saved'); } }
/** * Called at the end of the page request. Processes any new badges or badge grade changes for the current user. */ public function resolveNewBadges() { if (!$this->enabled) { return; } $userBadgesByType = GameBadge::getAllByPersonIndexedByType(Yii::app()->user->userModel); $userPointsByType = GamePoint::getAllByPersonIndexedByType(Yii::app()->user->userModel); $userScoresByType = GameScore::getAllByPersonIndexedByType(Yii::app()->user->userModel); $badgeRulesClassNames = GameBadgeRules::getBadgeRulesData(); foreach ($badgeRulesClassNames as $badgeRulesClassName) { $newBadge = false; $gradeChange = false; $badgeGrade = $badgeRulesClassName::badgeGradeUserShouldHaveByPointsAndScores($userPointsByType, $userScoresByType); if ($badgeGrade > 0) { if (isset($userBadgesByType[$badgeRulesClassName::getType()])) { $gameBadge = $userBadgesByType[$badgeRulesClassName::getType()]; if ($badgeGrade > $gameBadge->grade) { $gameBadge->grade = $badgeGrade; $saved = $gameBadge->save(); if (!$saved) { throw new NotSupportedException(); } $gradeChange = true; } } else { $gameBadge = new GameBadge(); $gameBadge->type = $badgeRulesClassName::getType(); $gameBadge->person = Yii::app()->user->userModel; $gameBadge->grade = 1; $saved = $gameBadge->save(); if (!$saved) { throw new NotSupportedException(); } $newBadge = true; } if ($gradeChange || $newBadge) { if ($gradeChange) { $gradeChangeOrNewBadge = 'GradeChange'; } else { $gradeChangeOrNewBadge = 'NewBadge'; } GameBadge::processBonusPoints($gameBadge, Yii::app()->user->userModel, $gradeChangeOrNewBadge); if ($this->modalNotificationsEnabled) { $gameNotification = new GameNotification(); $gameNotification->user = Yii::app()->user->userModel; if ($newBadge) { $gameNotification->setNewBadgeByType($gameBadge->type); } elseif ($gradeChange) { $gameNotification->setBadgeGradeChangeByTypeAndNewGrade($gameBadge->type, $gameBadge->grade); } $saved = $gameNotification->save(); if (!$saved) { throw new FailedToSaveModelException(); } } } } } }
public function actionGameDashboard($id) { $user = User::getById(intval($id)); UserAccessUtil::resolveAccessingASystemUser($user); $title = Zurmo::t('ZurmoModule', 'Dashboard'); $badgeData = GameBadge::getAllByPersonIndexedByType($user); $generalLevelData = GameLevelUtil::getStatisticsDataForAGivenLevelType($user, GameLevel::TYPE_GENERAL); $rankingData = GamePointUtil::getUserRankingData($user); $statisticsData = GameLevelUtil::getUserStatisticsData($user); $collectionData = GameCollection::resolvePersonAndAvailableTypes($user, GameCollection::getAvailableTypes()); $dashboardView = new UserGameDashboardView($this, $user, $generalLevelData, $badgeData, $rankingData, $statisticsData, $collectionData); $view = new AjaxPageView($dashboardView); echo $view->render(); }
/** * @depends testGetAllByPersonIndexedByType */ public function testProcessBonusPoints() { Yii::app()->user->userModel = User::getByUsername('steven'); $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, Yii::app()->user->userModel); $this->assertEquals(GamePoint::TYPE_USER_ADOPTION, $gamePoint->type); $this->assertEquals(0, $gamePoint->value); //Testing a badge that does not give bonus points. $gameBadge = new GameBadge(); $gameBadge->person = Yii::app()->user->userModel; $gameBadge->type = 'CreateLead'; $gameBadge->grade = 1; $this->assertTrue($gameBadge->save()); GameBadge::processBonusPoints($gameBadge, Yii::app()->user->userModel, 'NewBadge'); //Test that bonus points were actually received. $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, Yii::app()->user->userModel); $this->assertEquals(GamePoint::TYPE_USER_ADOPTION, $gamePoint->type); $this->assertEquals(50, $gamePoint->value); }
public function actionDetails($id) { $user = User::getById(intval($id)); UserAccessUtil::resolveAccessingASystemUser($user); $title = Zurmo::t('UsersModule', 'Profile'); $breadcrumbLinks = array(strval($user) => array('default/details', 'id' => $id), $title); AuditEvent::logAuditEvent('ZurmoModule', ZurmoModule::AUDIT_EVENT_ITEM_VIEWED, array(strval($user), 'UsersModule'), $user); $params = array('controllerId' => $this->getId(), 'relationModuleId' => $this->getModule()->getId(), 'relationModel' => $user, 'rankingData' => GamePointUtil::getUserRankingData($user), 'statisticsData' => GameLevelUtil::getUserStatisticsData($user), 'badgeData' => GameBadge::getAllByPersonIndexedByType($user)); $detailsAndRelationsView = new UserDetailsAndRelationsView($this->getId(), $this->getModule()->getId(), $params); $view = new UsersPageView($this->resolveZurmoDefaultOrAdminView($detailsAndRelationsView, $breadcrumbLinks, 'UserBreadCrumbView')); echo $view->render(); }