public function actionDelete($id)
 {
     $prx = new PreguntaXRonda();
     $rxj = new RespuestaXJugador();
     $res = new Respuesta();
     $pre = new Pregunta();
     $criteria = new CDbCriteria();
     $criteria->join = 'inner join pregunta p ON respuesta_x_jugador.pregunta_id = p.id';
     $criteria->condition = 'p.id=' . $id;
     $prx->deleteAll("pregunta_id = {$id}");
     $rxj->deleteAll($criteria);
     $res->deleteAll("pregunta_id = {$id}");
     $pre->deleteAll("id = {$id}");
     $log = new Logs();
     try {
         $log->accion = 'Elimino la pregunta id #' . $id . ' como admin';
         $log->usuario = Yii::app()->user->id;
         $log->msg = 'IP: ' . $_SERVER['REMOTE_ADDR'] . ' : ' . $_SERVER['REMOTE_PORT'];
         $log->fecha = date('Y-m-d G:i:s');
         $log->save();
     } catch (Exception $e) {
         $log->accion = 'Error log';
         $log->msg = '';
         $log->fecha = '';
         $log->save();
     }
     $this->redirect(array('index'));
 }
 public function actionResponder()
 {
     $this->verificar_sesion();
     if (!Yii::app()->request->isAjaxRequest) {
         throw new CHttpException('403', 'Forbidden access.');
     }
     if (!isset($_POST['r']) && !is_int($_POST['r'])) {
         throw new CHttpException('403', 'Forbidden access.');
     }
     $respuesta = $_POST['r'];
     $tiempo = $_POST['t'];
     $r = Respuesta::model()->findByPk($respuesta);
     //Agrego la pregunta al array para no repetirla esta ronda
     $this->_preguntas[] = $this->_preguntaid;
     Yii::app()->session['preguntas'] = $this->_preguntas;
     if ($r->es_correcta) {
         $nivel = Nivel::model()->findByPk($this->_nivel);
         $ronda = Ronda::model()->findByPk($this->_ronda);
         $puntosr = $ronda->puntos + $nivel->puntos;
         $a = array('tiempo' => $ronda->tiempo + ($nivel->tiempo - $tiempo), 'preguntas' => $this->_preguntan, 'nivel' => $this->_nivel, 'puntos' => $puntosr);
         $ronda->updateByPk($this->_ronda, $a);
         //Agregar la pregunta a pregunta_x_ronda
         $pxr = PreguntaXRonda::model()->findByAttributes(array('ronda_id' => $this->_ronda, 'pregunta_id' => $this->_preguntaid));
         $pxr->estado = 1;
         $pxr->update();
         Yii::app()->session['preguntaid'] = $this->_preguntaid = 0;
         Yii::app()->session['puntosr'] = $this->_puntosr = $puntosr;
         //Sumo puntos
         $pt = Jugador::model()->setPuntos($nivel->puntos, $this->_jugador_id);
         if ($pt) {
             Yii::app()->session['puntost'] = $this->_puntost = $pt;
         }
         if ($this->_preguntan < Yii::app()->params['preguntasxnivel'] * $this->_nivel) {
             $tmpsituacion = 3;
             //3. Respuesta correcta
         } else {
             if ($this->_nivel < 5) {
                 $tmpsituacion = 5;
                 //5. Cambio de nivel
                 $newnivel = Nivel::model()->findByPk($this->_nivel + 1);
                 Yii::app()->session['nivel'] = $this->_nivel = $this->_nivel + 1;
                 Yii::app()->session['tiempo'] = $this->_tiempo = $newnivel->tiempo;
             } else {
                 $tmpsituacion = 6;
                 //6. Ronda completada
             }
         }
         $situacion = $tmpsituacion;
     } else {
         $situacion = 4;
         //4. Respuesta mala
         $nivel = Nivel::model()->findByPk($this->_nivel);
         $ronda = Ronda::model()->findByPk($this->_ronda);
         $puntosr = $ronda->puntos;
         if ($tiempo < 0) {
             $tiempo = 0;
         }
         $a = array('tiempo' => $ronda->tiempo + ($nivel->tiempo - $tiempo), 'preguntas' => $this->_preguntan, 'nivel' => $this->_nivel, 'puntos' => $puntosr);
         $ronda->updateByPk($this->_ronda, $a);
     }
     Yii::app()->session['situacion'] = $this->_situacion = $situacion;
     header('Content-Type: application/json; charset="UTF-8"');
     echo CJSON::encode(array('s' => $situacion, 'n' => $this->_nivel, 'pn' => $this->_preguntan, 'pr' => $this->_puntosr, 'pt' => $this->_puntost, 'a' => $this->_ayudas));
     if ($this->_situacion == 6 || $this->_situacion == 4) {
         $this->limpiar_sesion();
     }
     Yii::app()->end();
 }
Exemple #3
0
 protected function pregunta_al_azar_bad($nivel)
 {
     $max = $this->count();
     $offset = rand(0, $max - 1);
     $pcriteria = new CDbCriteria();
     $pcriteria->addCondition('nivel_id', $nivel);
     $pcriteria->offset = $offset;
     $pcriteria->limit = 1;
     $pregunta = $this->findAll($pcriteria);
     $pregunta = $pregunta[0];
     //Verifico que no haya resuelto ya la pregunta
     $prCriteria = new CDbCriteria();
     $prCriteria->with = array('ronda' => array('select' => null, 'condition' => 'pregunta_id=' . $pregunta->id, 'with' => array('jugador' => array('select' => 'id', 'condition' => 'jugador.id =' . Yii::app()->user->id))));
     $pr = PreguntaXRonda::model()->findAll($prCriteria);
     if (isset($pr[0])) {
         $pregunta = $this->pregunta_al_azar($nivel);
     }
     return $pregunta;
 }