public function obtener_pregunta($ronda_id, $pregunta_id = 0) { $rxp = new RondaXPregunta(); $rxpn = $rxp::tableName(); $c = new CDbCriteria(); $c->join = 'JOIN ' . $rxpn . ' ON ' . $rxpn . '.pregunta_id = t.id'; $c->addCondition($rxpn . '.ronda_id = :ronda_id'); $params[':ronda_id'] = $ronda_id; if ($pregunta_id) { $c->addCondition($rxpn . '.pregunta_id = :pregunta_id'); $params[':pregunta_id'] = $pregunta_id; } else { $max = $rxp->count('ronda_id=' . $ronda_id); $c->offset = rand(0, $max - 1); } $c->limit = 1; $c->params = $params; $pregunta = $this->findAll($c); if (isset($pregunta[0])) { $pregunta = $pregunta[0]; } if ($this->verificar_respuestas($ronda_id, $pregunta)) { $pregunta = $this->obtener_pregunta($ronda_id); } return $pregunta; }
protected function verificar_sesion() { //1. Verifico la sesión para inicializar el juego if (!isset(Yii::app()->session['ronda']) || Yii::app()->session['ronda'] == 0) { if ($this->_usuario_id == 0) { //2. Obtengo el id del usuario $usuario = Usuario::model()->find('cruge_user_id = ' . Yii::app()->user->id); Yii::app()->session['usuario_id'] = $this->_usuario_id = $usuario->id; } //Verificar cual es la ronda vigente $rondaactual = Ronda::model()->getRondaActual(); if (!$rondaactual) { Yii::app()->user->setFlash('error', 'no-trivias'); $this->_error(); } Yii::app()->session['ronda'] = $this->_ronda = $rondaactual->id; Yii::app()->session['preguntaid'] = $this->_preguntaid = 0; Yii::app()->session['situacion'] = $this->_situacion = 1; //1. inicio } else { $this->_ronda = Yii::app()->session['ronda']; $this->_usuario_id = Yii::app()->session['usuario_id']; $this->_preguntaid = Yii::app()->session['preguntaid']; $this->_situacion = Yii::app()->session['situacion']; } $rxr = RondaXRespuesta::model()->count('usuario_id = :usuario_id && ronda_id = :ronda_id', array(':usuario_id' => $this->_usuario_id, ':ronda_id' => $this->_ronda)); $rxp = RondaXPregunta::model()->count('ronda_id = :ronda_id', array(':ronda_id' => $this->_ronda)); if ($rxr >= $rxp) { Yii::app()->user->setFlash('error', 'ya-participo'); $this->_error(); } }