コード例 #1
0
 public function actionChallenge()
 {
     if (isset($_GET['idTruth']) || isset($_GET['idDare'])) {
         $idType = isset($_GET['idDare']) ? 'idDare' : 'idTruth';
         $modelTruthOrDare = isset($_GET['idDare']) ? new Dare() : new Truth();
         $modelTruthOrDare->{$idType} = $_GET[$idType];
         $challenges = Challenge::model()->with('truth', 'dare', 'userTo', "userTo.scoreTruth", "userTo.scoreDare")->findAllByAttributes(array($idType => $_GET[$idType], 'status' => 1));
         $this->render('challenge', array('modelTruthOrDare' => $modelTruthOrDare, 'challenges' => $challenges, 'idType' => $idType));
     }
 }
コード例 #2
0
ファイル: ChallengeDareList.php プロジェクト: rikohz/Project1
 public function run()
 {
     //We check the level of the user before to allow him to see the content
     if (isset($this->model->idCategory) && isset($this->filterLevel) && $this->model->idCategory != '') {
         $levelCategory = Category::model()->findByPk($this->model->idCategory);
         if ($levelCategory->level > $this->filterLevel) {
             Yii::app()->user->setFlash('forbiddenLevel', 'Sorry, to have access to this category you need to register a coin which belongs to this category.');
         }
     }
     //We get the generated criterias
     $criteria = $this->model->getCriteria();
     //We set up the number of Challenge we want to display if necessary
     if (isset($this->model->limit)) {
         $criteria->limit = $this->model->limit;
     }
     //We choose the order of display
     $criteria->order = isset($this->model->order) && $this->model->order !== '' ? $this->model->order . " DESC " : " t.voteUp - t.voteDown DESC ";
     //Page manager
     $count = Challenge::model()->count($criteria);
     //Use the $this->limit in Pagination otherwise $pages->pageSize to $criteria overriding the $criteria->limit
     $pages = new CPagination(isset($this->model->limit) ? $this->model->limit : $count);
     $pages->pageSize = isset($this->model->limit) ? $this->model->limit : $this->itemsPerPage;
     $pages->applyLimit($criteria);
     //Get the datas
     $datas = Challenge::model()->findAll($criteria);
     //Manage favourites
     $modelUserList = new UserList();
     $userLists = CHtml::listData(array(), 'idUserList', 'name');
     if (!Yii::app()->user->isGuest) {
         $userLists = UserList::model()->findAllByAttributes(array('idUser' => Yii::app()->user->getId()));
         $userLists = CHtml::listData($userLists, 'idUserList', 'name');
     }
     //Manage send Challenges
     $friends = CHtml::listData(array(), 'idUser', 'username');
     if (!Yii::app()->user->isGuest) {
         $friends = CHtml::listData(Friend::getFriends(Yii::app()->user->getId()), 'idUser', 'username');
     }
     $this->render('challengeDareList', array('datas' => $datas, 'pages' => $pages, 'userLists' => $userLists, 'friends' => $friends));
 }
コード例 #3
0
ファイル: Challenge.php プロジェクト: rikohz/Project1
 /**
  * Return CActiveRecord with Challenges 
  * @return CActiveRecord
  */
 public static function getChallenges($idUser, $idCategory = null, $idGender = null, $idType = null, $idStatus = null, $minDateChallenge = null, $idPrivateStatus = null, $idUserFrom = null)
 {
     $criteria = new CDbCriteria();
     //Get users the current user added as Friends
     $criteria->condition = "t.idUserTo=:idUser AND t.status <> 2";
     $criteria->params = array(':idUser' => $idUser);
     if ($idCategory !== '' && $idCategory !== null) {
         $criteria->addCondition("categoryTruth.idCategory = :idCategory OR categoryDare.idCategory = :idCategory");
         $criteria->params[':idCategory'] = $idCategory;
     }
     if ($idGender !== '' && $idGender !== null) {
         $criteria->addCondition("userFrom.gender = :gender");
         $criteria->params[':gender'] = $idGender;
     }
     if ($idType !== '' && $idType !== null) {
         $criteria->addCondition("t.id{$idType} IS NOT NULL");
     }
     if ($idStatus !== '' && $idStatus !== null) {
         $criteria->addCondition("t.status = :idStatus");
         $criteria->params[':idStatus'] = $idStatus;
     }
     if ($minDateChallenge !== '' && $minDateChallenge !== null) {
         $criteria->addCondition("IFNULL(t.finishDate,t.createDate) >= :minDateChallenge");
         $criteria->params[':minDateChallenge'] = $minDateChallenge;
     }
     if ($idPrivateStatus !== '' && $idPrivateStatus !== null) {
         $criteria->addCondition("t.private = :idPrivateStatus");
         $criteria->params[':idPrivateStatus'] = $idPrivateStatus;
     }
     if ($idUserFrom !== '' && $idUserFrom !== null) {
         $criteria->addCondition("t.idUserFrom = :idUserFrom");
         $criteria->params[':idUserFrom'] = $idUserFrom;
     }
     $challenges = Challenge::model()->with('truth', 'dare', 'truth.category', 'dare.category', 'userFrom', 'levelUserFrom')->findAll($criteria);
     return $challenges;
 }
コード例 #4
0
ファイル: UserController.php プロジェクト: rikohz/Project1
 public function actionDeleteChallenge()
 {
     if (isset($_POST['idChallenge'])) {
         $challenge = Challenge::model()->findByPk($_POST['idChallenge']);
         if ($challenge->idUserTo == Yii::app()->user->getId()) {
             //We change the status to decline
             $challenge->status = 2;
             $challenge->save();
             //We delete the associated votes
             $votingDetails = VotingDetail::model()->deleteAllByAttributes(array('idChallenge' => $_POST['idChallenge']));
             echo "SUCCESS";
         }
     }
 }
コード例 #5
0
ファイル: User.php プロジェクト: rikohz/Project1
 /**
  * Returns the Truth score of the User $idUser related to the vote of the Challenges he/she successfuly realized
  * @return array()
  */
 public function getScoreVoteChallenges($type)
 {
     //Prepare Query
     $criteria = new CDbCriteria();
     $criteria->group = " t.idUserTo ";
     $criteria->select = " SUM(CASE WHEN t.finishDate >= :minDateSubmitWeek THEN t.voteUp - t.voteDown END) AS scoreWeek, ";
     $criteria->select .= " SUM(CASE WHEN t.finishDate >= :minDateSubmitMonth THEN t.voteUp - t.voteDown END) AS scoreMonth, ";
     $criteria->select .= " SUM(CASE WHEN t.finishDate >= :minDateSubmitYear THEN t.voteUp - t.voteDown END) AS scoreYear, ";
     $criteria->select .= " SUM(t.voteUp - t.voteDown) AS score ";
     $criteria->addCondition(' t.status = 1 ');
     $criteria->addCondition(' t.idUserTo = :idUser ');
     if ($type !== null) {
         $criteria->addCondition(" t.id{$type} IS NOT NULL ");
     }
     //Bind Parameters
     $criteria->params = array(':idUser' => $this->idUser);
     $criteria->params[':minDateSubmitWeek'] = MyFunctions::getFirstDayWeek();
     $criteria->params[':minDateSubmitMonth'] = MyFunctions::getFirstDayMonth();
     $criteria->params[':minDateSubmitYear'] = MyFunctions::getFirstDayYear();
     //Execute Query
     $result = Challenge::model()->find($criteria);
     //Fetch results
     $scoreTotal = $result['score'] === null ? 0 : $result->score;
     $scoreWeek = $result['scoreWeek'] === null ? 0 : $result->scoreWeek;
     $scoreMonth = $result['scoreMonth'] === null ? 0 : $result->scoreMonth;
     $scoreYear = $result['scoreYear'] === null ? 0 : $result->scoreYear;
     return array('total' => $scoreTotal, 'week' => $scoreWeek, 'month' => $scoreMonth, 'year' => $scoreYear);
 }
コード例 #6
0
ファイル: UserWallWidget.php プロジェクト: rikohz/Project1
 public function run()
 {
     $wallOwner = User::model()->with('scoreTruth', 'scoreDare')->findByPk($this->idWallOwner);
     //To display notifications from friends
     if ($this->withFriendsInformations === 1) {
         $friends = $wallOwner->getIdFriends();
         $friends[] = $this->idWallOwner;
     }
     //Add message to the Wall
     $model = new UserWall();
     if (isset($_POST['Userwall'])) {
         $model->attributes = $_POST['Userwall'];
         $model->idUserFrom = $this->idCurrentUser;
         $model->idUserTo = $this->idWallOwner;
         $model->createDate = date('Y-m-d, H:i:s');
         $model->save();
         $model->content = '';
     }
     //Initialiation of the array
     $wall = array();
     $i = 0;
     //Get Wall Messages and add them to the Wall array()
     if ($this->withWallMessages == 1) {
         $criteria = new CDbCriteria();
         $criteria->addCondition('t.idUserTo = :idUser');
         $criteria->params = array(':idUser' => $this->idWallOwner);
         $criteria->order = 'createDate DESC';
         $wallComments = UserWall::model()->with('userFrom', 'userFrom.scoreTruth', 'userFrom.scoreDare')->findAll($criteria);
         foreach ($wallComments as $row) {
             $wall[$i]['type'] = "WallMessage";
             $wall[$i]['id'] = $row->idUserWall;
             $wall[$i]['content'] = $row->content;
             $wall[$i]['createDate'] = $row->createDate;
             $wall[$i]['userPicture'] = $row->userFrom->profilePicture . '_mini' . $row->userFrom->profilePictureExtension;
             $wall[$i]['category'] = null;
             $wall[$i]['vote'] = null;
             $wall[$i]['nbFavourite'] = null;
             $wall[$i]['nbComment'] = null;
             $wall[$i]['idDisplayUser'] = $row->userFrom->idUser;
             $wall[$i]['displayUsername'] = $row->userFrom->username;
             $wall[$i]['pictureChallengeDareMini'] = null;
             $wall[$i]['pictureChallengeDare'] = null;
             $wall[$i]['challengeTruthOrCommentDare'] = null;
             $wall[$i]['rankTruth'] = MyFunctions::getTruthRankName($row->userFrom->scoreTruth->score);
             $wall[$i]['rankDare'] = MyFunctions::getDareRankName($row->userFrom->scoreDare->score);
             $i++;
         }
     }
     //Get Challenges Notifications and add them to the Wall array()
     $criteria = new CDbCriteria();
     $criteria->addCondition('t.status = 1 AND (t.private = 0 OR (t.idUserFrom = :idCurrentUser OR t.idUserTo = :idCurrentUser))');
     $criteria->params = array(':idCurrentUser' => $this->idCurrentUser);
     if ($this->withFriendsInformations === 1) {
         $criteria->addInCondition('t.idUserTo', $friends);
     } else {
         $criteria->addCondition('t.idUserTo = :idUser');
         $criteria->params[':idUser'] = $this->idWallOwner;
     }
     if (isset($this->filterLevel)) {
         $criteria->addCondition("(categoryTruth.level IS NOT NULL AND categoryTruth.level <= {$this->filterLevel}) OR (categoryDare.level IS NOT NULL AND categoryDare.level <= {$this->filterLevel})");
     }
     $challenges = Challenge::model()->with('userTo', 'truth', 'dare', 'truth.category', 'dare.category', 'userTo.scoreTruth', 'userTo.scoreDare')->findAll($criteria);
     foreach ($challenges as $row) {
         $wall[$i]['type'] = $row->idTruth === null ? "ChallengeDare" : "ChallengeTruth";
         $wall[$i]['id'] = $row->idChallenge;
         $wall[$i]['content'] = isset($row->truth) ? $row->answer : $row->dare->dare;
         $wall[$i]['createDate'] = $row->createDate;
         $wall[$i]['userPicture'] = $row->userTo->profilePicture . '_mini' . $row->userTo->profilePictureExtension;
         $wall[$i]['category'] = isset($row->truth) ? $row->truth->category->category : $row->dare->category->category;
         $wall[$i]['vote'] = $row->voteUp - $row->voteDown;
         $wall[$i]['nbFavourite'] = 0;
         $wall[$i]['nbComment'] = 0;
         $wall[$i]['idDisplayUser'] = $row->userTo->idUser;
         $wall[$i]['displayUsername'] = $row->userTo->username;
         $wall[$i]['pictureChallengeDareMini'] = $row->pictureName . "_mini" . $row->pictureExtension;
         $wall[$i]['pictureChallengeDare'] = $row->pictureName . "_original" . $row->pictureExtension;
         $wall[$i]['challengeTruthOrCommentDare'] = isset($row->truth) ? $row->truth->truth : $row->answer;
         $wall[$i]['rankTruth'] = MyFunctions::getTruthRankName($row->userTo->scoreTruth->score);
         $wall[$i]['rankDare'] = MyFunctions::getDareRankName($row->userTo->scoreDare->score);
         $i++;
     }
     //Get Truths and add them to the Wall array()
     $truth = new Truth();
     if (isset($this->filterLevel)) {
         $truth->levelMax = $this->filterLevel;
     }
     $criteria = $truth->getCriteria();
     if ($this->withFriendsInformations === 1) {
         $criteria->addInCondition('t.idUser', $friends);
     } else {
         $criteria->addCondition('t.idUser = :idUser');
         $criteria->params[':idUser'] = $this->idWallOwner;
     }
     $truths = Truth::model()->notAnonymous()->findAll($criteria);
     foreach ($truths as $row) {
         $wall[$i]['type'] = "Truth";
         $wall[$i]['id'] = $row->idTruth;
         $wall[$i]['content'] = $row->truth;
         $wall[$i]['createDate'] = $row->dateSubmit;
         $wall[$i]['userPicture'] = $row->user->profilePicture . '_mini' . $row->user->profilePictureExtension;
         $wall[$i]['category'] = $row->category->category;
         $wall[$i]['vote'] = $row->voteUp - $row->voteDown;
         $wall[$i]['nbFavourite'] = $row->nbFavourite;
         $wall[$i]['nbComment'] = $row->nbComment;
         $wall[$i]['idDisplayUser'] = $row->user->idUser;
         $wall[$i]['displayUsername'] = $row->user->username;
         $wall[$i]['pictureChallengeDareMini'] = null;
         $wall[$i]['pictureChallengeDare'] = null;
         $wall[$i]['challengeTruthOrCommentDare'] = null;
         $wall[$i]['rankTruth'] = MyFunctions::getTruthRankName($row->user->scoreTruth->score);
         $wall[$i]['rankDare'] = MyFunctions::getDareRankName($row->user->scoreDare->score);
         $i++;
     }
     //Get Dares and add them to the Wall array()
     $dare = new Dare();
     if (isset($this->filterLevel)) {
         $dare->levelMax = $this->filterLevel;
     }
     $criteria = $dare->getCriteria();
     if ($this->withFriendsInformations === 1) {
         $criteria->addInCondition('t.idUser', $friends);
     } else {
         $criteria->addCondition('t.idUser = :idUser');
         $criteria->params[':idUser'] = $this->idWallOwner;
     }
     $dares = Dare::model()->notAnonymous()->findAll($criteria);
     foreach ($dares as $row) {
         $wall[$i]['type'] = "Dare";
         $wall[$i]['id'] = $row->idDare;
         $wall[$i]['content'] = $row->dare;
         $wall[$i]['createDate'] = $row->dateSubmit;
         $wall[$i]['userPicture'] = $row->user->profilePicture . '_mini' . $row->user->profilePictureExtension;
         $wall[$i]['category'] = $row->category->category;
         $wall[$i]['vote'] = $row->voteUp - $row->voteDown;
         $wall[$i]['nbFavourite'] = $row->nbFavourite;
         $wall[$i]['nbComment'] = $row->nbComment;
         $wall[$i]['idDisplayUser'] = $row->user->idUser;
         $wall[$i]['displayUsername'] = $row->user->username;
         $wall[$i]['pictureChallengeDareMini'] = null;
         $wall[$i]['pictureChallengeDare'] = null;
         $wall[$i]['challengeTruthOrCommentDare'] = null;
         $wall[$i]['rankTruth'] = MyFunctions::getTruthRankName($row->user->scoreTruth->score);
         $wall[$i]['rankDare'] = MyFunctions::getDareRankName($row->user->scoreDare->score);
         $i++;
     }
     //Get Ranks Upgrades of the user
     $criteria = new CDbCriteria();
     if ($this->withFriendsInformations === 1) {
         $criteria->addInCondition('t.idUser', $friends);
     } else {
         $criteria->addCondition('t.idUser = :idUser');
         $criteria->params = array(':idUser' => $this->idWallOwner);
     }
     $userUpgrades = Userrank::model()->with('rank')->findAll($criteria);
     foreach ($userUpgrades as $row) {
         $wall[$i]['type'] = "RankUpgrade";
         $wall[$i]['id'] = null;
         $wall[$i]['content'] = "I just got upgraded to <b>" . $row->rank->name . "</b>!";
         $wall[$i]['createDate'] = $row->createDate;
         $wall[$i]['userPicture'] = $row->user->profilePicture . '_mini' . $row->user->profilePictureExtension;
         $wall[$i]['category'] = null;
         $wall[$i]['vote'] = null;
         $wall[$i]['nbFavourite'] = null;
         $wall[$i]['nbComment'] = null;
         $wall[$i]['idDisplayUser'] = $row->user->idUser;
         $wall[$i]['displayUsername'] = $row->user->username;
         $wall[$i]['pictureChallengeDareMini'] = null;
         $wall[$i]['pictureChallengeDare'] = null;
         $wall[$i]['challengeTruth'] = null;
         $wall[$i]['rankTruth'] = MyFunctions::getTruthRankName($row->user->scoreTruth->score);
         $wall[$i]['rankDare'] = MyFunctions::getDareRankName($row->user->scoreDare->score);
         $i++;
     }
     //Manage favourites
     $modelUserList = new UserList();
     $userLists = CHtml::listData(array(), 'idUserList', 'name');
     if (!Yii::app()->user->isGuest) {
         $userLists = UserList::model()->findAllByAttributes(array('idUser' => $this->idCurrentUser));
         $userLists = CHtml::listData($userLists, 'idUserList', 'name');
     }
     //Manage send Challenges
     $friends = CHtml::listData(array(), 'idUser', 'username');
     if (!Yii::app()->user->isGuest) {
         $friends = CHtml::listData(Friend::getFriends(Yii::app()->user->getId()), 'idUser', 'username');
     }
     //Order the Wall array() by createDate DESC
     $wall = MyFunctions::arraySort($wall, 'createDate', 'DESC');
     $this->render('userWallWidget', array('model' => $model, 'wall' => $wall, 'userLists' => $userLists, 'friends' => $friends));
 }
コード例 #7
0
ファイル: SiteController.php プロジェクト: rikohz/Project1
 public function actionVoteChallenge()
 {
     if (isset($_POST['idChallenge']) && isset($_POST['vote'])) {
         if (!VotingDetail::model()->exists("idUser = :idUser AND idChallenge = :idChallenge", array(':idUser' => Yii::app()->user->getId(), ":idChallenge" => $_POST["idChallenge"]))) {
             $model = Challenge::model()->findByPk($_POST["idChallenge"]);
             $vote = $model->addVote(Yii::app()->user->getId(), $_POST['vote']);
             echo $vote > 0 ? "+{$vote}" : $vote;
         } else {
             echo "Already Voted!";
         }
         return;
     }
     return "ERROR";
 }