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