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; }