예제 #1
0
파일: foto.php 프로젝트: 4bs4/marifa
 /**
  * Votamos una foto.
  * @param int $foto ID de la foto.
  * @param int $voto 1 para positivo, -1 para negativo.
  */
 public function action_votar($foto, $voto)
 {
     $foto = (int) $foto;
     // Obtenemos el voto.
     $voto = $voto == 1;
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder ver esta sección.';
         Request::redirect('/usuario/login');
     }
     // Verificamos los permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VOTAR)) {
         $_SESSION['flash_error'] = 'No tienes los permisos suficientes para votar fotos.';
         Request::redirect('/foto/');
     }
     // Cargamos el comentario.
     $model_foto = new Model_Foto($foto);
     // Verificamos existencia.
     if (!is_array($model_foto->as_array())) {
         $_SESSION['flash_error'] = 'La foto que deseas votar no se encuenta disponible.';
         Request::redirect('/foto/');
     }
     // Verifico el estado de la foto.
     if ($model_foto->estado !== Model_Foto::ESTADO_ACTIVA) {
         $_SESSION['flash_error'] = 'La foto que deseas votar no se encuenta disponible.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Verificamos el autor.
     if ($model_foto->usuario_id === Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'La foto que deseas votar no se encuentra disponible.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Verificamos si puede votar.
     if ($model_foto->ya_voto(Usuario::$usuario_id)) {
         $_SESSION['flash_error'] = 'La foto que deseas votar ya la has votado.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Votamos la foto.
     $model_foto->votar(Usuario::$usuario_id, $voto);
     // Creamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_foto->usuario_id) {
         $model_suceso->crear($model_foto->usuario_id, 'foto_votar', TRUE, $foto, Usuario::$usuario_id, (int) $voto);
         $model_suceso->crear(Usuario::$usuario_id, 'foto_votar', FALSE, $foto, Usuario::$usuario_id, (int) $voto);
     } else {
         $model_suceso->crear($model_foto->usuario_id, 'foto_votar', FALSE, $foto, Usuario::$usuario_id, (int) $voto);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'El voto fue guardado correctamente.';
     Request::redirect('/foto/ver/' . $model_foto->foto_id);
 }