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