Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.96 KB | None | 0 0
  1. <?php
  2. include('lib/php/loadAll.php');
  3. error_log(print_r($_POST,true));
  4. if(isset($_POST['form_mobile'])){
  5. switch($_POST['form_mobile']){
  6. case 'login':
  7. include('APIapir.php');
  8. $APIclientPassword=$_POST['pass'];
  9. $APIclientUsername=$_POST['user'];
  10. $respuesta=array();
  11.  
  12. $action='oauth/token';
  13. $parameters=array();
  14. $parameters['grant_type']='password';
  15. $parameters['username']=$APIclientUsername;
  16. $parameters['password']=$APIclientPassword;
  17. $res= askToApir($action, $parameters);
  18. $datos= json_decode($res);
  19.  
  20. if(isset($datos->access_token)) {
  21. $_usuario = Doctrine_Query::create()->from('User')->where('isActive = 1')->andwhere('user=?',$APIclientUsername)->andwhere('password=?',md5($APIclientPassword))->execute()->getFirst();
  22.  
  23. if(!isset($_usuario->id) || $_usuario->id == ''){
  24. unset($_usuario);
  25. $_usuario= new User();
  26. $_usuario->token=date('dmyHis');
  27. $_usuario->user=$APIclientUsername;
  28. $_usuario->name=$APIclientUsername;
  29. $_usuario->trySave();
  30. }
  31.  
  32. $_usuario->lastLogin=date('Y-m-d H:i:s');
  33. $_usuario->trySave();
  34.  
  35. $usuario=array();
  36. $usuario['id']=$_usuario->id;
  37. $usuario['token']=$_usuario->token;
  38. $usuario['user']=$_usuario->user;
  39. $usuario['name']=$_usuario->name;
  40. $usuario['lastname']=$_usuario->lastname;
  41. $usuario['type']=$_usuario->type;
  42. $usuario['birthdate']=$_usuario->birthdate;
  43. $usuario['facebook']=$_usuario->facebook;
  44. $usuario['twitter']=$_usuario->twitter;
  45. $usuario['googlePlus']=$_usuario->googlePlus;
  46. $usuario['linkedin']=$_usuario->linkedin;
  47.  
  48. $respuesta['type']='ok';
  49. $respuesta['data']=$usuario;
  50. }
  51. else {
  52. $respuesta['type']='error';
  53. if(isset($datos->error_description)){
  54. if($datos->error_description == "Bad credentials") {
  55. $respuesta['msg']='El usuario y/o la contraseña no son correctos';
  56. }
  57. else {
  58. $respuesta['msg']='El usuario no está activo';
  59. }
  60. }
  61. else {
  62. error_log(print_r($datos,true));
  63. $respuesta['msg']='Error al entrar inténtelo más tarde';
  64. }
  65. }
  66. echo json_encode($respuesta);
  67. break;
  68. case 'loginOld':
  69. $pass=$_POST['pass'];
  70. $user=$_POST['user'];
  71. $_usuario = Doctrine_Query::create()->from('User')->where('isActive = 1')->andwhere('user=?',$user)->andwhere('password=?',md5($pass))->execute()->getFirst();
  72.  
  73. $respuesta=array();
  74. if(isset($_usuario->id) && $_usuario->id != ''){
  75. $_usuario->lastLogin=date('Y-m-d H:i:s');
  76. $_usuario->trySave();
  77.  
  78. $usuario=array();
  79. $usuario['id']=$_usuario->id;
  80. $usuario['token']=$_usuario->token;
  81. $usuario['user']=$_usuario->user;
  82. $usuario['name']=$_usuario->name;
  83. $usuario['lastname']=$_usuario->lastname;
  84. $usuario['type']=$_usuario->type;
  85. $usuario['birthdate']=$_usuario->birthdate;
  86. $usuario['facebook']=$_usuario->facebook;
  87. $usuario['twitter']=$_usuario->twitter;
  88. $usuario['googlePlus']=$_usuario->googlePlus;
  89. $usuario['linkedin']=$_usuario->linkedin;
  90.  
  91. $respuesta['type']='ok';
  92. $respuesta['data']=$usuario;
  93. }else{
  94.  
  95. $respuesta['type']='error';
  96. $respuesta['msg']='El usuario y/o la contraseña no son correctos';
  97. }
  98. echo json_encode($respuesta);
  99. break;
  100. case 'get-practicas':
  101. error_reporting(E_ALL);
  102. ini_set('display_errors', 'on');
  103. $q = Doctrine_Manager::getInstance()->getCurrentConnection();
  104. $result = $q->execute("SET wait_timeout=28800");
  105.  
  106. $listado = Doctrine_Query::create()->from('Examen')->where('isActive = 1')->andWhere('isOfficial=0')->orderBy('year')->execute();
  107.  
  108. //var_dump($listado->toArray());
  109. //die();
  110.  
  111. $respuesta=array();
  112. $examenes=array();
  113.  
  114. if($listado) {
  115. foreach($listado as $lista) {
  116.  
  117. $examen=array();
  118.  
  119. $resultado = Doctrine_Query::create()->from('Respuestas')->where('examen = ?',$lista->id)->limit(25)->execute()->getFirst();
  120.  
  121. //echo $lista->id."<br>";
  122. //echo $resultado."<br>";
  123. //echo $resultado->estado;
  124.  
  125. if($resultado) {
  126. $txtres='';
  127. switch($resultado->estado){
  128. case 1:$txtres='No finalizado';break;
  129. case 2:$txtres='Aprobado';break;
  130. case 3:$txtres='Suspendido';break;
  131. }
  132.  
  133. $examen['resultado']=$txtres;
  134. }
  135. else {
  136. $examen['resultado']='No realizado';
  137. }
  138.  
  139. $examen['resultado'] = 'No finalizado';
  140.  
  141. $examen['id']=$lista->id;
  142. $examen['token']=$lista->token;
  143. $examen['title']=$lista->title;
  144. $examen['created']=$lista->created;
  145. $examen['isOfficial']=$lista->isOfficial;
  146. $examen['year']=$lista->year;
  147.  
  148. $examenes[]=$examen;
  149. }
  150.  
  151. $respuesta['type']='ok';
  152. $respuesta['data']=$examenes;
  153. echo json_encode($respuesta);
  154. }
  155. else {
  156. echo json_encode(array('type' => 'error', 'data' => array('msg' => 'Hubo un error al obtener las prácticas. Inténtalo más tarde')));
  157. }
  158.  
  159. break;
  160. case 'get-examenes':
  161. $listado = Doctrine_Query::create()->from('Examen')->where('isActive = 1')->andWhere('isOfficial=1')->orderBy('year')->execute();
  162.  
  163. $respuesta=array();
  164. $examenes=array();
  165. foreach($listado as $lista)
  166. {
  167. $examen=array();
  168. $resultado = Doctrine_Query::create()->from('Respuestas')->where('examen = ?',$lista->id)->execute()->getFirst();
  169.  
  170. if($resultado){
  171. $txtres='';
  172. switch($resultado->estado){
  173. case 1:$txtres='No finalizado';break;
  174. case 2:$txtres='Aprobado';break;
  175. case 3:$txtres='Suspendido';break;
  176. }
  177. $examen['resultado']=$txtres;
  178. }else{
  179. $examen['resultado']='No realizado';
  180. }
  181.  
  182. $examen['id']=$lista->id;
  183. $examen['token']=$lista->token;
  184. $examen['title']=$lista->title;
  185. $examen['created']=$lista->created;
  186. $examen['isOfficial']=$lista->isOfficial;
  187. $examen['year']=$lista->year;
  188. $examenes[]=$examen;
  189. }
  190. $respuesta['type']='ok';
  191. $respuesta['data']=$examenes;
  192. echo json_encode($respuesta);
  193. break;
  194. case 'get-examen':
  195. $examen=$_POST['examen'];
  196. $usuarioPost=$_POST['user'];
  197.  
  198. $_usuario = Doctrine_Query::create()->from('User')->where('id=?',$usuarioPost)->orWhere('token=?',$usuarioPost)->execute()->getFirst();
  199. if($_usuario){
  200. $usuario=$_usuario->id;
  201. }else{
  202. $_usuario= new User();
  203. $_usuario->token=$usuarioPost;
  204. $_usuario->user='Anonimo';
  205. $_usuario->name='Anonimo';
  206. $_usuario->isActive=0;
  207. $_usuario->trySave();
  208.  
  209. $usuario=$_usuario->id;
  210. }
  211.  
  212. $listado = Doctrine_Query::create()->from('Preguntas')->where('examen = ?',$examen)->orderBy('orden')->execute();
  213. $respondidas= Doctrine_Query::create()->from('Respuestas')->where('examen = ?',$examen)->andWhere('user=?',$usuario)->execute();
  214.  
  215. $respuestas=array();
  216. foreach($respondidas as $respondida){
  217. $respuestas[$respondida->pregunta]=$respondida->respuesta;
  218. }
  219.  
  220. $respuesta=array();
  221. $preguntas=array();
  222.  
  223. foreach($listado as $lista)
  224. {
  225. $pregunta=array();
  226. $pregunta['id']=$lista->id;
  227. $pregunta['token']=$lista->token;
  228. $pregunta['examen']=$lista->examen;
  229. $pregunta['orden']=$lista->orden;
  230. $pregunta['pregunta']=$lista->pregunta;
  231. $pregunta['respuesta1']=$lista->respuesta1;
  232. $pregunta['respuesta2']=$lista->respuesta2;
  233. $pregunta['respuesta3']=$lista->respuesta3;
  234. $pregunta['respuesta4']=$lista->respuesta4;
  235. $pregunta['comentario']=$lista->comentario;
  236. $pregunta['created']=$lista->created;
  237. $pregunta['asignatura']=$lista->asignatura;
  238. $pregunta['tema']=$lista->tema;
  239. if(isset($respuestas[$lista->orden])){
  240. $pregunta['respondida']=$respuestas[$lista->orden];
  241. }else{
  242. $pregunta['respondida']=0;
  243. }
  244. $preguntas[]=$pregunta;
  245.  
  246. }
  247.  
  248. $respuesta['type']='ok';
  249. $respuesta['data']=$preguntas;
  250. echo json_encode($respuesta);
  251. break;
  252. case 'get-ranking':
  253.  
  254. /*
  255. SELECT user, COUNT( user )
  256. FROM respuestas, preguntas
  257. WHERE respuestas.pregunta = preguntas.id
  258. AND respuestas.respuesta = preguntas.correcta
  259. GROUP BY user
  260. order by COUNT( user ) DESC
  261. */
  262. $listado = Doctrine_Query::create()->select('re.user, COUNT( re.user ) as acertadas')->from('Respuestas re, Preguntas pr')->where('re.pregunta = pr.id')->andWhere('re.respuesta = pr.correcta')->groupBy('re.user')->orderBy('COUNT( user ) DESC')->limit(25)->execute();
  263.  
  264. $respuesta=array();
  265. $ranking=array();
  266. foreach($listado as $lista)
  267. {
  268. $usuario=array();
  269. $resultado = Doctrine_Query::create()->from('User')->where('id = ?',$lista->user)->execute()->getFirst();
  270. $usuario['id']=$resultado->id;
  271. $usuario['name']=$resultado->name;
  272. $usuario['acertadas']=$lista->acertadas;
  273. $ranking[]=$usuario;
  274. }
  275. $respuesta['type']='ok';
  276. $respuesta['data']=$ranking;
  277. echo json_encode($respuesta);
  278. break;
  279. case 'get-estadisticas':
  280. $usuarioPost=$_POST['user'];
  281.  
  282. $_usuario = Doctrine_Query::create()->from('User')->where('id=?',$usuarioPost)->orWhere('token=?',$usuarioPost)->execute()->getFirst();
  283. if($_usuario){
  284. $usuario=$_usuario->id;
  285. }else{
  286. $_usuario= new User();
  287. $_usuario->token=$usuarioPost;
  288. $_usuario->user='Anonimo';
  289. $_usuario->name='Anonimo';
  290. $_usuario->isActive=0;
  291. $_usuario->trySave();
  292.  
  293. $usuario=$_usuario->id;
  294. }
  295.  
  296. $listado = Doctrine_Query::create()->from('Examen')->where('isActive = 1')->execute();
  297.  
  298. $countExamenes=array(0,0,0,0);
  299. $countPracticas=array(0,0,0,0);
  300.  
  301. $respuesta=array();
  302. $estadisticas=array();
  303. foreach($listado as $lista)
  304. {
  305. $hecho = Doctrine_Query::create()->from('Respuestas')->where('user=?',$usuario)->andWhere('examen =?', $lista->id)->execute()->getFirst();
  306. if($lista->isOfficial==1){
  307. $countExamenes[0]++;
  308. $countExamenes[$hecho->estado]++;
  309. }else{
  310. $countPracticas[0]++;
  311. $countPracticas[$hecho->estado]++;
  312. }
  313. }
  314. $estadisticas['examenes']=$countExamenes;
  315. $estadisticas['practicas']=$countPracticas;
  316.  
  317. $respuesta['type']='ok';
  318. $respuesta['data']=$estadisticas;
  319. echo json_encode($respuesta);
  320. break;
  321. case 'get-retos-disponibles':
  322. $usuario=$_POST['user'];
  323. $listado = Doctrine_Query::create()->from('User')->where('id <> ?',$usuario)->orderBy('rand()')->execute();
  324.  
  325. $aleatorios=array();
  326. foreach($listado as $lista){
  327. $retado = Doctrine_Query::create()->from('Retos')->where('(user=? and retado=?) or (user=? and retado=?)',array($usuario,$lista->id,$lista->id,$usuario))->andWhere('estado < 4')->orderBy('created DESC')->limit(1)->execute()->getFirst(); //mira si no hay un reto activo con esa persona
  328.  
  329. if(!$retado){
  330. $temp=array();
  331. $temp['id']=$lista->id;
  332. $temp['name']=$lista->name;
  333. $aleatorios[]=$temp;
  334. }
  335. if(count($aleatorios)>9){
  336. break;
  337. }
  338. }
  339. $respuesta['type']='ok';
  340. $respuesta['data']=$aleatorios;
  341. echo json_encode($respuesta);
  342. break;
  343. case 'get-retos':
  344. $usuario=$_POST['user'];
  345. $listado = Doctrine_Query::create()->from('Retos')->where('user = ?',$usuario)->orWhere('retado = ?',$usuario)->orderBy('id DESC')->execute();
  346.  
  347. $retos=array();
  348. foreach($listado as $lista){
  349. if($lista->user==$usuario){$contrario=$lista->retado;}
  350. else{$contrario=$lista->user;}
  351. $retado = Doctrine_Query::create()->from('User')->where('id = ?',$contrario)->execute()->getFirst();
  352.  
  353. switch($lista->estado){
  354. case 1: $estado='activo'; break;
  355. case 2:
  356. if($lista->user==$usuario){
  357. $estado='finalizado';
  358. }else{
  359. $estado='activo';
  360. }
  361. break;
  362. case 3:
  363. if($lista->user==$usuario){
  364. $estado='activo';
  365. }else{
  366. $estado='finalizado';
  367. }
  368. break;
  369. case 4: $estado='empatado'; break;
  370. case 5:
  371. if($lista->user==$usuario){
  372. $estado='ganado';
  373. }else{
  374. $estado='perdido';
  375. }
  376. break;
  377. case 6:
  378. if($lista->user==$usuario){
  379. $estado='perdido';
  380. }else{
  381. $estado='ganado';
  382. }
  383. break;
  384. }
  385.  
  386. $temp=array();
  387. $tempRetado=array();
  388.  
  389. $tempRetado['name']=$retado->name;
  390. $tempRetado['id']=$retado->id;
  391.  
  392. $temp['contrario']=$tempRetado;
  393. $temp['estado']=$estado;
  394. $temp['id']=$lista->id;
  395. $temp['examen']=$lista->examen;
  396.  
  397. $retos[]=$temp;
  398. }
  399. $respuesta['type']='ok';
  400. $respuesta['data']=$retos;
  401. echo json_encode($respuesta);
  402. break;
  403. case 'new-reto':
  404. //lo hago en get-examen-reto
  405. break;
  406. case 'get-examen-reto':
  407. $usuario=$_POST['user'];
  408. $retado=$_POST['retado'];
  409. $reto = Doctrine_Query::create()->from('Retos')->where('(user=? and retado=?) or (user=? and retado=?)',array($usuario,$retado,$retado,$usuario))->andWhere('estado<4')->orderBy('created DESC')->limit(1)->execute()->getFirst();
  410.  
  411. if($reto){ //si ya tengo un reto activo con ese usuario
  412. $listado = Doctrine_Query::create()->from('PreguntasRetos')->where('examen=?',$reto->id)->execute();
  413.  
  414. $respondidas= Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$reto->id)->andWhere('user=?',$usuario)->execute();
  415. $respuestas=array();
  416. foreach($respondidas as $respondida){
  417. $respuestas[$respondida->pregunta]=$respondida->respuesta;
  418. }
  419.  
  420. $respuesta=array();
  421.  
  422. foreach($listado as $pregunta){
  423. $preguntaReto=array();
  424. $preguntaReto['id']=$pregunta->id;
  425. $preguntaReto['token']=$pregunta->token;
  426. $preguntaReto['examen']=$pregunta->examen;
  427. $preguntaReto['orden']=$pregunta->orden;
  428. $preguntaReto['pregunta']=$pregunta->pregunta;
  429. $preguntaReto['respuesta1']=$pregunta->respuesta1;
  430. $preguntaReto['respuesta2']=$pregunta->respuesta2;
  431. $preguntaReto['respuesta3']=$pregunta->respuesta3;
  432. $preguntaReto['respuesta4']=$pregunta->respuesta4;
  433. $preguntaReto['comentario']=$pregunta->comentario;
  434. $preguntaReto['created']=$pregunta->created;
  435. $preguntaReto['asignatura']=$pregunta->asignatura;
  436. $preguntaReto['tema']=$pregunta->tema;
  437. if(isset($respuestas[$pregunta->orden])){
  438. $preguntaReto['respondida']=$respuestas[$pregunta->orden];
  439. }else{
  440. $preguntaReto['respondida']=0;
  441. }
  442. $preguntas[]=$preguntaReto;
  443. }
  444. }else{
  445. $preguntas=array();
  446.  
  447. $listado = Doctrine_Query::create()->from('Preguntas')->orderBy('rand()')->limit(20)->execute();
  448. $token=date('dmyHis');
  449.  
  450. $nuevoReto=new Retos();
  451. $nuevoReto->token=$token;
  452. $nuevoReto->created=date('Y-m-d H:i:s');
  453. $nuevoReto->isActive=1;
  454. $nuevoReto->deleted=0;
  455. $nuevoReto->examen=0;
  456. $nuevoReto->user=$usuario;
  457. $nuevoReto->retado=$retado;
  458. $nuevoReto->estado=1;
  459. $nuevoReto->trySave();
  460.  
  461. $contador=1;
  462. foreach($listado as $pregunta){
  463. $new=new PreguntasRetos();
  464. $new->token=$token;
  465. $new->examen=$nuevoReto->id;
  466. $new->orden=$contador;
  467. $new->pregunta=$pregunta->pregunta;
  468. $new->respuesta1=$pregunta->respuesta1;
  469. $new->respuesta2=$pregunta->respuesta2;
  470. $new->respuesta3=$pregunta->respuesta3;
  471. $new->respuesta4=$pregunta->respuesta4;
  472. $new->correcta=$pregunta->correcta;
  473. $new->comentario=$pregunta->comentario;
  474. $new->created=$pregunta->created;
  475. $new->asignatura=$pregunta->asignatura;
  476. $new->tema=$pregunta->tema;
  477. $new->trySave();
  478.  
  479. $preguntaReto=array();
  480. $preguntaReto['id']=$new->id;
  481. $preguntaReto['token']=$new->token;
  482. $preguntaReto['examen']=$new->examen;
  483. $preguntaReto['orden']=$new->orden;
  484. $preguntaReto['pregunta']=$new->pregunta;
  485. $preguntaReto['respuesta1']=$new->respuesta1;
  486. $preguntaReto['respuesta2']=$new->respuesta2;
  487. $preguntaReto['respuesta3']=$new->respuesta3;
  488. $preguntaReto['respuesta4']=$new->respuesta4;
  489. $preguntaReto['comentario']=$new->comentario;
  490. $preguntaReto['created']=$new->created;
  491. $preguntaReto['asignatura']=$new->asignatura;
  492. $preguntaReto['tema']=$new->tema;
  493. if(isset($respuestas[$new->orden])){
  494. $preguntaReto['respondida']=$respuestas[$new->orden];
  495. }else{
  496. $preguntaReto['respondida']=0;
  497. }
  498. $preguntas[]=$preguntaReto;
  499.  
  500. $contador++;
  501. }
  502. }
  503. $respuesta['type']='ok';
  504. $respuesta['data']=$preguntas;
  505. echo json_encode($respuesta);
  506. break;
  507. case 'set-respuestas':
  508. $examen=$_POST['examen'];
  509. $preguntas=$_POST['pregunta'];
  510. $respuesta=array();
  511. $bien=0;
  512. $mal=0;
  513. $noContestadas=0;
  514.  
  515. $usuarioPost=$_POST['user'];
  516. $_usuario = Doctrine_Query::create()->from('User')->where('id=?',$usuarioPost)->orWhere('token=?',$usuarioPost)->execute()->getFirst();
  517. if($_usuario){
  518. $usuario=$_usuario->id;
  519. }else{
  520. $_usuario= new User();
  521. $_usuario->token=$usuarioPost;
  522. $_usuario->user='Anonimo';
  523. $_usuario->name='Anonimo';
  524. $_usuario->isActive=0;
  525. $_usuario->trySave();
  526.  
  527. $usuario=$_usuario->id;
  528. }
  529. if(isset($_POST['pregunta'])){
  530. foreach($preguntas as $pregunta => $contestado){
  531. $existe= Doctrine_Query::create()->from('Respuestas')->where('examen = ?',$examen)->andWhere('pregunta=?',$pregunta)->andWhere('user=?',$usuario)->execute()->getFirst();
  532. $real = Doctrine_Query::create()->from('Preguntas')->where('examen = ?',$examen)->andWhere('orden=?',$pregunta)->execute()->getFirst();
  533. if($real->correcta==$contestado)$bien++;
  534. else $mal++;
  535. if($existe){
  536. $_respuesta=$existe;
  537. }else{
  538. $_respuesta= new Respuestas();
  539. $_respuesta->token=date('dmyHis');
  540. $_respuesta->created=date('Y-m-d H:i:s');
  541. $_respuesta->user=$usuario;
  542. $_respuesta->pregunta=$pregunta;
  543. $_respuesta->examen=$examen;
  544. }
  545.  
  546. $_respuesta->respuesta=$contestado;
  547. $_respuesta->estado=1;
  548. $_respuesta->trySave();
  549. }
  550. }
  551. $total = count(Doctrine_Query::create()->from('Preguntas')->where('examen = ?',$examen)->execute());
  552. if($bien+$mal < $total)$noContestadas=$total - ($bien + $mal);
  553. if($noContestadas==0){
  554. if($bien>$mal){
  555. $resultado=2;
  556. }else{
  557. $resultado=3;
  558. }
  559. Doctrine_Query::create()->update('Respuestas')->set('estado', $resultado)->where('examen = ?',$examen)->andWhere('user=?',$usuario)->execute();
  560. }
  561.  
  562. $resultados=array();
  563. $resultados['bien']=$bien;
  564. $resultados['mal']=$mal;
  565. $resultados['noContestadas']=$noContestadas;
  566.  
  567. $respuesta['type']='ok';
  568. $respuesta['data']=$resultados;
  569. echo json_encode($respuesta);
  570. break;
  571. case 'set-respuestas-reto':
  572. $usuario=$_POST['user'];
  573. $contrario=$_POST['retado'];
  574. $examen=$_POST['reto'];
  575. if(isset($_POST['pregunta'])){
  576. $preguntas=$_POST['pregunta'];
  577. }else{
  578. $preguntas=array();
  579. }
  580.  
  581. $respuesta=array();
  582. $bien=0;
  583. $mal=0;
  584. $noContestadas=0;
  585.  
  586. foreach($preguntas as $pregunta => $contestado){
  587. $existe= Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$examen)->andWhere('pregunta=?',$pregunta)->andWhere('user=?',$usuario)->execute()->getFirst();
  588. $real = Doctrine_Query::create()->from('PreguntasRetos')->where('examen = ?',$examen)->andWhere('orden=?',$pregunta)->execute()->getFirst();
  589.  
  590. if($existe){
  591. $_respuesta=$existe;
  592. }else{
  593. $_respuesta= new RespuestasRetos();
  594. $_respuesta->token=date('dmyHis');
  595. $_respuesta->created=date('Y-m-d H:i:s');
  596. $_respuesta->user=$usuario;
  597. $_respuesta->pregunta=$pregunta;
  598. $_respuesta->examen=$examen;
  599. $_respuesta->reto=$examen;
  600. }
  601. if($real->correcta==$contestado){
  602. $_respuesta->acertada=1;
  603. $_respuesta->estado=2;
  604. }else{
  605. $_respuesta->estado=3;
  606. $_respuesta->acertada=0;
  607. }
  608. $_respuesta->respuesta=$contestado;
  609. $_respuesta->Save();
  610. }
  611.  
  612. $total = count(Doctrine_Query::create()->from('PreguntasRetos')->where('examen = ?',$examen)->execute()); //siempre son 20, pero por si cambia en un futuro
  613. $totalContestadas = count(Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$examen)->andWhere('user=?',$usuario)->execute());
  614. $totalAcertadas = count(Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$examen)->andWhere('user=?',$usuario)->andWhere('acertada=1')->execute());
  615.  
  616. $reto = Doctrine_Query::create()->from('Retos')->where('id = ?',$examen)->execute()->getFirst();
  617. $estadoOriginal=$reto->estado;
  618. if($total<=$totalContestadas){ //si las ha contestado todas
  619. if($estadoOriginal<4){ //no si estaba acabado ya antes
  620. if($usuario==$reto->user){ //si es el usuario
  621. if($estadoOriginal==1){ //si nadie lo habia acabado
  622. $reto->estado=2;
  623. }elseif($estadoOriginal==3){ //si ya lo habia finalizado el retado
  624. $acertadasContrario = count(Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$examen)->andWhere('user=?',$contrario)->andWhere('acertada=1')->execute());
  625. if($totalAcertadas==$acertadasContrario){ //si han empatado
  626. $reto->estado=4;
  627. }elseif($totalAcertadas>$acertadasContrario){ //si user ha acertado mas que retado
  628. $reto->estado=5;
  629. }else{ //si retado ha acertado mas que user
  630. $reto->estado=6;
  631. }
  632. }
  633. }else{ //si es el retado
  634. if($estadoOriginal==1){ //si nadie lo habia acabado
  635. $reto->estado=3;
  636. }elseif($estadoOriginal==2){ //si ya lo habia finalizado el user
  637. $acertadasContrario = count(Doctrine_Query::create()->from('RespuestasRetos')->where('examen = ?',$examen)->andWhere('user=?',$contrario)->andWhere('acertada=1')->execute());
  638. if($totalAcertadas==$acertadasContrario){ //si han empatado
  639. $reto->estado=4;
  640. }elseif($totalAcertadas>$acertadasContrario){ //si retado ha acertado mas que user
  641. $reto->estado=6;
  642. }else{ //si user ha acertado mas que retado
  643. $reto->estado=5;
  644. }
  645. }
  646. }
  647. }
  648. }
  649.  
  650. $reto->Save();
  651.  
  652. $resultados=array();
  653. $resultados['bien']=$totalAcertadas;
  654. $resultados['mal']=$totalContestadas-$totalAcertadas;
  655. $resultados['noContestadas']=$total-$totalContestadas;
  656.  
  657. $respuesta['type']='ok';
  658. $respuesta['data']=$resultados;
  659. echo json_encode($respuesta);
  660. break;
  661. case 'registro':
  662. $email=$_POST['email'];
  663. $pass=$_POST['pass'];
  664. $name=$_POST['name'];
  665.  
  666. $_usuario = new User();
  667. $_usuario->token=date('dmyHis');
  668. $_usuario->is_active = 1;
  669. $_usuario->fecha_registro=date('Y-m-d H:i:s');
  670. $_usuario->name=mb_convert_case($name, MB_CASE_UPPER, "UTF-8");
  671. $_usuario->password=md5($pass);
  672. $_usuario->email=mb_convert_case($email, MB_CASE_UPPER, "UTF-8");
  673. $_usuario->tipo=1;
  674. $_usuario->trySave();
  675.  
  676. $usuario=array();
  677. $usuario['id']=$_usuario->id;
  678. $usuario['token']=$_usuario->token;
  679. $usuario['fecha_registro']=$_usuario->fecha_registro;
  680. $usuario['name']=$_usuario->name;
  681. $usuario['apellidos']=$_usuario->apellidos;
  682. $usuario['dni']=$_usuario->dni;
  683. $usuario['domicilio']=$_usuario->domicilio;
  684. $usuario['tlf_fijo']=$_usuario->tlf_fijo;
  685. $usuario['tlf_movil']=$_usuario->tlf_movil;
  686. $usuario['provincia']=$_usuario->provincia;
  687. $usuario['municipios']=$_usuario->municipios;
  688. $usuario['tipo']=$_usuario->tipo;
  689. $usuario['estado']=$_usuario->estado;
  690. $usuario['cantidad']=$_usuario->cantidad;
  691. $usuario['email']=$_usuario->email;
  692.  
  693. echo json_encode($usuario);
  694.  
  695. $mail_de="Equipo de APIR <no-reply@apir.com>";
  696. $mail_para=$email;
  697.  
  698. $asunto_mail = 'Alta en APIR';
  699. $body_mail ='Se ha dado de alta correctamente, agradecemos y le damos la bienvenida a APIR</br></br>';
  700. $body_mail .='';
  701.  
  702. $cabeceras_mail = 'MIME-Version: 1.0' . "\r\n";
  703. $cabeceras_mail .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
  704. $cabeceras_mail .= 'From: ' . $mail_de . "\r\n";
  705. $msg=mail($mail_para, $asunto_mail, $body_mail, $cabeceras_mail);
  706. break;
  707. case 'contacto':
  708. $ref=$_POST['user'];
  709. $_usuario_ref = Doctrine_Core::getTable('User')->find($ref);
  710.  
  711. $mail_para="soporte4@xerintel.es";
  712.  
  713.  
  714. $mail_de="Equipo de APIR <no-reply@apir.com>";
  715.  
  716. $asunto_mail = 'Solicitud de contacto desde app';
  717.  
  718. $body_mail ='Hola, '.$_usuario_ref->name.' ha enviado una solicitud de contacto desde app.</br></br>';
  719. $body_mail .='Fecha de registro: '.date('d-m-Y H:i:s', strtotime ($_usuario->fecha_registro)).'.</br>';
  720. $body_mail .='Nombre: '.$_usuario->name.'.</br>';
  721. $body_mail .='Apellidos: '.$_usuario->apellidos.'.</br>';
  722. $body_mail .='DNI: '.$_usuario->dni.'.</br>';
  723. $body_mail .='Domicilio: '.$_usuario->domicilio.'.</br>';
  724. $body_mail .='Telefono fijo: '.$_usuario->tlf_fijo.'.</br>';
  725. $body_mail .='Telefono movil: '.$_usuario->tlf_movil.'.</br>';
  726. $body_mail .='Email: '.$_usuario->email.'.</br>';
  727. $body_mail .='Tipo: '.$txtEmail.'.</br>';
  728. $body_mail .='Id unico: '.$_usuario->token.'.</br></br>';
  729. $body_mail .='El mensaje enviado es:</br>';
  730. $body_mail .=$_POST['msg'];
  731.  
  732. $cabeceras_mail = 'MIME-Version: 1.0' . "\r\n";
  733.  
  734. $cabeceras_mail .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
  735. $cabeceras_mail .= 'From: ' . $mail_de . "\r\n";
  736. mail($mail_para, $asunto_mail, $body_mail, $cabeceras_mail);
  737. echo "1";
  738. break;
  739. case 'get_datos_app':
  740. $categorias = Doctrine_Query::create()->from('Categorias')->orderBy('position')->execute();
  741. $intereses = Doctrine_Query::create()->from('Intereses')->orderBy('position')->execute();
  742.  
  743. $respuesta=array();
  744. $categs=array();
  745. $inter=array();
  746. foreach($categorias as $categoria){
  747. $temp=array();
  748. $temp['id']=$categoria->id;
  749. $temp['nombre']=$categoria->nombre;
  750. $categs[]=$temp;
  751. }
  752.  
  753. foreach($intereses as $interes){
  754. $temp=array();
  755. $temp['id']=$interes->id;
  756. $temp['nombre']=$interes->nombre;
  757. $inter[]=$temp;
  758. }
  759. $respuesta['tipos']=$categs;
  760. $respuesta['intereses']=$inter;
  761.  
  762. echo json_encode($respuesta);
  763. break;
  764. }
  765. }
  766. else{
  767. echo 'No tiene permitido el acceso';
  768. }
  769. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement