예제 #1
0
 /**
  * Portada del sitio.
  * @param int $pagina Número de página para lo últimos posts.
  */
 public function action_index($pagina)
 {
     // Cargamos la portada.
     $view = View::factory('notificaciones/index');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('inicio'));
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Cargamos notificaciones.
     $sucesos = Suceso_Barra::obtener_listado_completo(Usuario::$usuario_id, $pagina, $cantidad_por_pagina);
     // Verifivo validez de la pagina.
     if (count($sucesos) == 0 && $pagina != 1) {
         Request::redirect('/notificaciones/');
     }
     // Paginación.
     $paginador = new Paginator(Suceso_Barra::cantidad_completa(Usuario::$usuario_id), $cantidad_por_pagina);
     $view->assign('paginacion', $paginador->get_view($pagina, '/notificaciones/index/%d'));
     unset($paginador);
     // Proceso el listado de sucesos.
     $eventos = array();
     foreach ($sucesos as $v) {
         // Obtengo información del suceso.
         $s_data = Suceso_Perfil::procesar($v);
         // Verifico su existencia.
         if ($s_data === NULL) {
             continue;
         }
         // Obtenemos el tipo de suceso.
         $tipo = $v->tipo;
         // Cargamos la vista.
         $suceso_vista = View::factory('/suceso/notificaciones/' . $tipo);
         // Asigno los datos del usuario actual.
         $suceso_vista->assign('actual', Usuario::usuario()->as_array());
         // Asigno información del suceso.
         $suceso_vista->assign('suceso', $s_data);
         // Datos del suceso.
         $suceso_vista->assign('fecha', $v->fecha);
         $suceso_vista->assign('visto', $v->visto);
         // Agregamos el evento.
         $eventos[] = $suceso_vista->parse();
     }
     $view->assign('sucesos', $eventos);
     unset($sucesos);
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $view->parse());
 }
예제 #2
0
파일: cuenta.php 프로젝트: 4bs4/marifa
 /**
  * Seleccionamos un nick a utilizar de nuestra lista.
  * @param string $nick Nick que vamos a utilizar.
  */
 public function action_utilizar_nick($nick)
 {
     // Verifico el formato.
     if (!preg_match('/^[a-zA-Z0-9]{4,20}$/D', $nick)) {
         $_SESSION['flash_error'] = 'El nick que desea liberar no es correcto.';
         Request::redirect('/cuenta/nick');
     }
     // Verifico si es del usuario.
     if (!in_array($nick, Usuario::usuario()->nicks())) {
         $_SESSION['flash_error'] = 'El nick que desea liberar no es correcto.';
         Request::redirect('/cuenta/nick');
     }
     // Elimino el nick y lo asigno nuevamente.
     Usuario::usuario()->eliminar_nick($nick);
     Usuario::usuario()->cambiar_nick($nick);
     // Envio el suceso.
     $model_suceso = new Model_Suceso();
     //TODO: Implementar campos alphanumericos.
     $model_suceso->crear(Usuario::$usuario_id, 'usuario_cambio_nick', Usuario::$usuario_id);
     // Informo el resultado.
     $_SESSION['flash_success'] = 'El nick se ha actualizado correctamente.';
     Request::redirect('/cuenta/nick');
 }
예제 #3
0
파일: favoritos.php 프로젝트: 4bs4/marifa
 /**
  * Portada de los favoritos.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_fotos($pagina)
 {
     // Cargamos la portada.
     $vista = View::factory('favoritos/fotos');
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Cargamos el listado de favoritos.
     $favoritos = Usuario::usuario()->listado_fotos_favoritos($pagina, $cantidad_por_pagina);
     // Verifivo que la página seleccionada sea válida.
     if (count($favoritos) == 0 && $pagina != 1) {
         Request::redirect('/favoritos/fotos/');
     }
     // Paginación.
     $paginador = new Paginator(Usuario::usuario()->cantidad_favoritos_fotos(), $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, '/favoritos/fotos/%d'));
     unset($paginador);
     // Obtengo información de los favoritos.
     foreach ($favoritos as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['categoria'] = $v->categoria()->as_array();
         $favoritos[$k] = $a;
     }
     // Seteo parámetros a la vista.
     $vista->assign('favoritos', $favoritos);
     unset($favoritos);
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('inicio'));
     $this->template->assign('top_bar', self::submenu('fotos'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $vista->parse());
 }
예제 #4
0
파일: perfil.php 프로젝트: 4bs4/marifa
 /**
  * Desbloqueamos el acceso a mi perfil del usuario.
  * @param string $usuario Usuario a desbloquear.
  */
 public function action_desbloquear($usuario)
 {
     // Cargamos el usuario.
     $this->cargar_usuario($usuario);
     // Verifico estar logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes estar logueado para poder desbloquear usuarios.';
         Request::redirect('/usuario/login');
     }
     // Verificamos no sea uno mismo.
     if (Usuario::$usuario_id == $this->usuario->id) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres desbloquear no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $usuario->nick);
     }
     // Verifico el estado.
     if ($this->usuario->estado !== Model_Usuario::ESTADO_ACTIVA) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres desbloquear no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Verifico esté bloqueado.
     if (!Usuario::usuario()->esta_bloqueado($this->usuario->id)) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres desbloquear no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Desbloqueo al usuario.
     Usuario::usuario()->desbloquear($this->usuario->id);
     // Envio el suceso.
     $model_suceso = new Model_Suceso();
     if ($this->usuario->id != Usuario::$usuario_id) {
         $model_suceso->crear($this->usuario->id, 'usuario_bloqueo', TRUE, Usuario::$usuario_id, $this->usuario->id, 1);
         $model_suceso->crear(Usuario::$usuario_id, 'usuario_bloqueo', FALSE, Usuario::$usuario_id, $this->usuario->id, 1);
     } else {
         $model_suceso->crear($this->usuario->id, 'usuario_bloqueo', FALSE, Usuario::$usuario_id, $this->usuario->id, 1);
     }
     // Informo resultado.
     $_SESSION['flash_success'] = 'El usuario se ha desbloqueado correctamente.';
     Request::redirect('/perfil/index/' . $this->usuario->nick);
 }
예제 #5
0
파일: controller.php 프로젝트: 4bs4/marifa
 /**
  * Generamos el menu de usuario a colocar en la cabecera.
  * @return RainTPL
  */
 protected function make_user_header()
 {
     // Cargamos la vista.
     $vista = View::factory('header/login');
     // Cargamos el usuario y sus datos.
     $vista->assign('usuario', Usuario::usuario()->as_array());
     // Sucesos.
     $lst = Suceso_Barra::obtener_listado(Usuario::$usuario_id, 1, 20);
     $eventos = array();
     foreach ($lst as $v) {
         // Obtengo información del suceso.
         $s_data = Suceso_Barra::procesar($v);
         // Verifico su existencia.
         if ($s_data === NULL) {
             continue;
         }
         // Obtenemos el tipo de suceso.
         $tipo = $v->as_object()->tipo;
         // Cargamos la vista.
         $suceso_vista = View::factory('suceso/barra/' . $tipo);
         // Asigno los datos del usuario actual.
         $suceso_vista->assign('actual', Usuario::usuario()->as_array());
         // Asigno información del suceso.
         $suceso_vista->assign('suceso', $s_data);
         // Datos del suceso.
         $suceso_vista->assign('fecha', $v->fecha);
         // Agregamos el evento.
         $eventos[] = $suceso_vista->parse();
     }
     $vista->assign('sucesos', $eventos);
     unset($lst, $eventos);
     // Listado de mensajes.
     $model_mensajes = new Model_Mensaje();
     $vista->assign('mensajes_nuevos', $model_mensajes->total_recibidos(Usuario::$usuario_id, Model_Mensaje::ESTADO_NUEVO));
     $msg_rst = $model_mensajes->recibidos(Usuario::$usuario_id, 1, 5);
     $msg_event = array();
     foreach ($msg_rst as $v) {
         // Datos del post.
         $aux = $v->as_array();
         $aux['emisor'] = $v->emisor()->as_array();
         switch ($aux['estado']) {
             case 0:
                 $aux['estado_string'] = 'nuevo';
                 break;
             case 1:
                 $aux['estado_string'] = 'leido';
                 break;
             case 2:
                 $aux['estado_string'] = 'respondido';
                 break;
             case 3:
                 $aux['estado_string'] = 'reenviado';
                 break;
         }
         $msg_event[] = $aux;
     }
     $vista->assign('mensajes', $msg_event);
     unset($msg_event, $msg_rst);
     return $vista;
 }
예제 #6
0
파일: post.php 프로젝트: 4bs4/marifa
 /**
  * Damos puntos a un post.
  * @param int $post ID del post al cual darle puntos.
  * @param int $cantidad Cantidad de puntos. Número entre 1 y 10.
  */
 public function action_puntuar($post, $cantidad)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder puntuar posts.';
         Request::redirect('/usuario/login');
     }
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_PUNTUAR)) {
         $_SESSION['flash_error'] = 'No tienes permisos para puntuar posts.';
         Request::redirect('/');
     }
     // Convertimos el post a ID.
     $post = (int) $post;
     // Validamos la cantidad.
     $cantidad = (int) $cantidad;
     if ($cantidad < 1 || $cantidad > 10) {
         $_SESSION['flash_error'] = 'La petición que has realizado es inválida.';
         Request::redirect('/');
     }
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos exista.
     if (!is_array($model_post->as_array())) {
         $_SESSION['flash_error'] = 'El post que desea puntuar no se encuentra disponible.';
         Request::redirect('/');
     }
     // Verifico el estado del post.
     if ($model_post->estado !== Model_Post::ESTADO_ACTIVO) {
         $_SESSION['flash_error'] = 'El post que desea puntuar no se encuentra disponible.';
         Request::redirect('/post/index/' . $post);
     }
     // Verifico el autor.
     if ($model_post->usuario_id === Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El post que desea puntuar no se encuentra disponible.';
         Request::redirect('/post/index/' . $post);
     }
     // Verificamos si ya dio puntos.
     if ($model_post->dio_puntos(Usuario::$usuario_id)) {
         $_SESSION['flash_error'] = 'El post que desea puntuar ya ha sido puntuado por usted.';
         Request::redirect('/post/index/' . $post);
     }
     // Verificamos la cantidad de puntos.
     if (Usuario::usuario()->puntos_disponibles < $cantidad) {
         $_SESSION['flash_error'] = 'El post que desea puntuar ya ha sido puntuado por usted.';
         Request::redirect('/post/index/' . $post);
     }
     // Damos los puntos.
     $model_post->dar_puntos(Usuario::$usuario_id, $cantidad);
     // Enviamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_post->usuario_id) {
         $model_suceso->crear($model_post->usuario_id, 'post_puntuar', TRUE, $post, Usuario::$usuario_id, $cantidad);
         $model_suceso->crear(Usuario::$usuario_id, 'post_puntuar', FALSE, $post, Usuario::$usuario_id, $cantidad);
     } else {
         $model_suceso->crear($model_post->usuario_id, 'post_puntuar', FALSE, $post, Usuario::$usuario_id, $cantidad);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Has puntuado el post de manera correcta.';
     Request::redirect('/post/index/' . $post);
 }
예제 #7
0
파일: usuario.php 프로젝트: 4bs4/marifa
 /**
  * Cambiamos el rango de un usuario.
  * @param int $usuario ID del usuario al que se le cambia el rango.
  * @param int $rango ID del rango a setear.
  */
 public function action_cambiar_rango($usuario, $rango)
 {
     $usuario = (int) $usuario;
     // Verificamos no sea actual.
     if ($usuario == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($usuario);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Verifico su orden.
     if ($model_usuario->rango()->es_superior(Usuario::usuario()->rango)) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     $rango = (int) $rango;
     // Verifico el rango.
     $model_rango = new Model_Usuario_Rango($rango);
     if ($model_rango->existe()) {
         // Verifico el nivel.
         if ($rango == Usuario::usuario()->rango || $model_rango->es_superior(Usuario::usuario()->rango)) {
             $_SESSION['flash_error'] = 'Rango que deseas asignar no se encuentra disponible.';
             Request::redirect('/admin/usuario/');
         }
         // Actualizo el rango.
         $model_usuario->actualizar_campo('rango', $rango);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $model_usuario->id) {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', TRUE, $model_usuario->id, $rango, Usuario::$usuario_id);
             $model_suceso->crear(Usuario::$usuario_id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         } else {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         }
         // Informo el resultado.
         $_SESSION['flash_success'] = 'El rango fue cambiado correctamente correctamente.';
         Request::redirect('/admin/usuario');
     }
     // Cargo la vista.
     $vista = View::factory('admin/usuario/cambiar_rango');
     // Seteo la información.
     $vista->assign('usuario', $model_usuario->as_array());
     // Cargamos los rangos.
     $lst = $model_rango->listado(Usuario::usuario()->rango()->orden);
     foreach ($lst as $k => $v) {
         $lst[$k] = $v->as_array();
     }
     $vista->assign('rangos', $lst);
     // Cargamos plantilla administracion.
     $admin_template = View::factory('admin/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Admin_Home::submenu('usuario'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
예제 #8
0
파일: mensaje.php 프로젝트: 4bs4/marifa
 /**
  * Submenu del usuario.
  * @param string $activo Elemento activo.
  * @return array
  */
 protected function submenu($activo)
 {
     return array('index' => array('link' => '/mensaje/', 'caption' => 'Bandeja entrada', 'active' => $activo == 'index', 'cantidad' => Usuario::usuario()->cantidad_mensajes_nuevos(), 'tipo' => 'success'), 'enviados' => array('link' => '/mensaje/enviados', 'caption' => 'Bandeja salida', 'active' => $activo == 'enviados'), 'nuevo' => array('link' => '/mensaje/nuevo', 'caption' => 'Enviar', 'active' => $activo == 'nuevo'));
 }