public static function getRank($model) { $total = $model->point->total; $lowerLimit = 0; $rank = null; foreach (Rank::model()->findAll() as $rank) { if ($total >= $lowerLimit and $total < $rank->max_point) { break; } else { $lowerLimit = $rank->max_point; continue; } } return strtolower($rank->name); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return Rank the loaded model * @throws CHttpException */ public function loadModel($id) { $model = Rank::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
/** * This function has to be called when a user just gained points * The function will upgrade the user if necessary * @return 1 if upgraded otherwise 0 */ public static function userRankUpgrade($idUser, $nbPoints, $type) { $result = 0; $user = User::model()->with("score" . $type)->findByPk($idUser); $score = $type === 'Truth' ? $user->scoreTruth->score : $user->scoreDare->score; //$type = $type === 'Truth'? 0 : 1; $ranks = Rank::model()->findAllByAttributes(array('type' => $type === 'Truth' ? 0 : 1)); foreach ($ranks as $row) { if ($score - $row->points < 0 && $score - $row->points + $nbPoints >= 0) { $userRank = new Userrank(); $userRank->idUser = $idUser; $userRank->createDate = date('Y-m-d, H:i:s'); $userRank->idRank = $row->idRank; $userRank->save(); $result = 1; } } return $result; }