/** * Verificamos los permisos. */ public function __construct() { // Solo usuarios conectados. if (!Usuario::is_login()) { Request::redirect('/usuario/login', TRUE); } parent::__construct(); }
/** * Constructor de la clase. * Verificamos este logueado para ver sus sucesos. */ public function __construct() { if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder acceder a tus notificaciones.'; Request::redirect('/usuario/login'); } parent::__construct(); }
/** * Constructor de la clase. * Verificamos los permisos para acceder a la sección. */ public function __construct() { // Verifico que esté logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder acceder a tus favoritos.'; Request::redirect('/usuario/login'); } parent::__construct(); }
/** * Constructor de la clase. */ public function __construct() { // Verificamos permisos. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para editar tu cuenta.'; Request::redirect('/usuario/login'); } // Llamamos al constructor padre. parent::__construct(); }
/** * Constructor de la clase. * Verficiamos los permisos. */ public function __construct() { // Verifico estar logueado. if (!Usuario::is_login()) { Request::redirect('/usuario/login'); } // Verifico los permisos. if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_SITIO_CONFIGURAR)) { $_SESSION['flash_error'] = 'No tienes permisos para acceder a esa sección.'; Request::redirect('/'); } parent::__construct(); }
/** * Constructor de la clase. Verificamos permisos. */ public function __construct() { // Verifico esté logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder acceder a esta sección.'; Request::redirect('/usuario/login', TRUE); } // Verifico si tiene algun permiso. if (!self::permisos_acceso()) { $_SESSION['flash_error'] = 'No tienes permisos para acceder a esa sección.'; Request::redirect('/'); } parent::__construct(); }
/** * Constructor de la clase. * Verificamos permisos para acceder a la sección. */ public function __construct() { // Verifico estar logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder acceder a esta sección.'; Request::redirect('/usuario/login'); } // Verifico los permisos. if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_ADMINISTRAR)) { $_SESSION['flash_error'] = 'No tienes permisos para acceder a esa sección.'; Request::redirect('/'); } parent::__construct(); }
/** * Submenu de la portada. * @param string $selected Elemento seleccionado. */ public static function submenu($selected = NULL) { $data = array(); // Listado de elemento OFFLINE. $data['inicio'] = array('link' => '/', 'caption' => 'Inicio', 'active' => FALSE); $data['buscador'] = array('link' => '/buscador', 'caption' => 'Buscador', 'active' => FALSE); // Listado de elementos ONLINE. if (Usuario::is_login()) { $data['nuevo'] = array('link' => '/post/nuevo', 'caption' => 'Agregar Post', 'active' => FALSE); } // Seleccionamos elemento. if ($selected !== NULL && isset($data[$selected])) { $data[$selected]['active'] = TRUE; } else { $data['inicio']['active'] = TRUE; } return $data; }
/** * Tratamos de activa una cuenta de usuario. * @param string $token Token para utilizar en validación. */ public function action_restaurar($token) { // Verificamos si el usuario está conectado. if (Usuario::is_login()) { // Lo enviamos a la portada. Request::redirect('/'); } // Verifico formato del token. if (!preg_match('/^[a-zA-Z0-9]{32}$/D', $token)) { $_SESSION['flash_error'] = 'La clave de restauración no es correcta.'; Request::redirect('/usuario/recuperar/'); } // Verifico existencia del token. $model_recuperacion = new Model_Usuario_Recuperacion(); if (!$model_recuperacion->es_valido($token, Model_Usuario_Recuperacion::TIPO_RECUPERACION)) { $_SESSION['flash_error'] = 'La clave de restauración ha caducado.'; Request::redirect('/usuario/recuperar/'); } // Cargo el token. $model_recuperacion->load_by_hash($token); // Cargo la vista. $view = View::factory('/usuario/restaurar/'); // Seteo valores por defecto. $view->assign('error_password', FALSE); $view->assign('error_cpassword', FALSE); if (Request::method() === 'POST') { // Obtengo lo datos. $password = isset($_POST['password']) ? trim($_POST['password']) : ''; $cpassword = isset($_POST['cpassword']) ? trim($_POST['cpassword']) : ''; $error = FALSE; // Verificamos contraseña. if (!preg_match('/^[a-zA-Z0-9\\-_@\\*\\+\\/#$%]{6,20}$/D', $password)) { $view_usuario->assign('error_password', TRUE); $error = TRUE; } else { // Verificamos que concuerden. if ($password != $cpassword) { $view_usuario->assign('error_cpassword', TRUE); $error = TRUE; } } if (!$error) { // Cargo el usuario. $model_usuario = $model_recuperacion->usuario(); // Actualizo la contraseña. $model_usuario->actualizar_contrasena($password); // Borro el token. $model_recuperacion->borrar(); // Notifico y envio al login. $_SESSION['flash_success'] = 'La contraseña se ha restaurado correctamente.'; Request::redirect('/usuario/login/'); } } // Agregamos el la vista a la plantilla. $this->template->assign('contenido', $view->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); }
/** * Menu principal. * @param string $selected Clave seleccionada. * @return array */ protected function base_menu($selected = NULL) { $data = array(); // Listado de elementos ONLINE. if (Usuario::is_login()) { $data['inicio'] = array('link' => '/perfil/', 'caption' => 'Inicio', 'icon' => 'home', 'active' => FALSE); } // Listado de elemento OFFLINE. $data['posts'] = array('link' => '/', 'caption' => 'Posts', 'icon' => 'book', 'active' => FALSE); $data['fotos'] = array('link' => '/foto/', 'caption' => 'Fotos', 'icon' => 'picture', 'active' => FALSE); $data['tops'] = array('link' => '/tops/', 'caption' => 'TOPs', 'icon' => 'signal', 'active' => FALSE); // Listado elemento por permisos. if (Controller_Moderar_Home::permisos_acceso()) { $data['moderar'] = array('link' => '/moderar/', 'caption' => 'Moderación', 'icon' => 'eye-open', 'active' => FALSE); } if (Controller_Admin_Home::permisos_acceso()) { $data['admin'] = array('link' => '/admin/', 'caption' => 'Administración', 'icon' => 'certificate', 'active' => FALSE); } // Seleccionamos elemento. if ($selected !== NULL && isset($data[$selected])) { $data[$selected]['active'] = TRUE; } else { $data['posts']['active'] = TRUE; } return $data; }
/** * Restauramos una foto proveniente de la papelera. * @param int $foto ID de la foto a restaurar. */ public function action_restaurar_foto($foto) { if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder restaurar fotos.'; Request::redirect('/usuario/login'); } $foto = (int) $foto; // Cargamos la foto. $model_foto = new Model_Foto($foto); // Verificamos exista. if (!is_array($model_foto->as_array())) { $_SESSION['flash_error'] = 'La foto que intentas restaurar no se encuentra disponible.'; Request::redirect('/foto/'); } // Verifico el usuario y sus permisos. if (Usuario::$usuario_id !== $model_foto->usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_PAPELERA)) { $_SESSION['flash_error'] = 'La foto que intentas restaurar no se encuentra disponible.'; Request::redirect('/foto/ver/' . $foto); } // Verifico el estado de la foto. if ($model_foto->estado !== Model_Foto::ESTADO_PAPELERA) { $_SESSION['flash_error'] = 'La foto que intentas restaurar no se encuentra disponible.'; Request::redirect('/foto/ver/' . $foto); } // Actualizo el estado. $model_foto->actualizar_estado(Model_Foto::ESTADO_ACTIVA); // Enviamos el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id != $model_foto->usuario_id) { $model_suceso->crear($model_foto->usuario_id, 'foto_restaurar', TRUE, $foto, Usuario::$usuario_id); $model_suceso->crear(Usuario::$usuario_id, 'foto_restaurar', FALSE, $foto, Usuario::$usuario_id); } else { $model_suceso->crear($model_foto->usuario_id, 'foto_restaurar', FALSE, $foto, Usuario::$usuario_id); } // Informamos el resultado. $_SESSION['flash_success'] = 'La foto se ha restaurado correctamente.'; Request::redirect('/foto/ver/' . $foto); }
/** * Creamos un nuevo post. */ public function action_nuevo() { // Verificamos usuario logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder crear posts.'; Request::redirect('/usuario/login'); } // Verifico los permisos. if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_CREAR)) { $_SESSION['flash_error'] = 'No tienes permisos para poder crear posts.'; Request::redirect('/'); } // Asignamos el título. $this->template->assign('title', 'Nuevo post'); // Cargamos la vista. $view = View::factory('post/nuevo'); // Seteo permisos especiales. $view->assign('permisos_especiales', Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_FIJAR_PROMOVER)); // Elementos por defecto. foreach (array('titulo', 'contenido', 'categoria', 'privado', 'patrocinado', 'sticky', 'comentar', 'tags', 'error_titulo', 'error_contenido', 'error_categoria', 'error_tags') as $k) { $view->assign($k, ''); } // Listado de categorias. $model_categoria = new Model_Categoria(); $view->assign('categorias', $model_categoria->lista()); // Menu. $this->template->assign('master_bar', parent::base_menu('posts')); $this->template->assign('top_bar', Controller_Home::submenu('nuevo')); // Asignamos la vista. $this->template->assign('contenido', $view->parse()); if (Request::method() == 'POST') { $error = FALSE; // Obtenemos los datos y seteamos valores. foreach (array('titulo', 'contenido', 'categoria', 'tags') as $k) { ${$k} = isset($_POST[$k]) ? $_POST[$k] : ''; $view->assign($k, ${$k}); } // Obtenemos los checkbox. foreach (array('privado', 'patrocinado', 'sticky', 'comentar') as $k) { ${$k} = isset($_POST[$k]) ? $_POST[$k] == 1 : FALSE; $view->assign($k, ${$k}); } // Verificamos el titulo. if (!preg_match('/^[a-zA-Z0-9áéíóú\\-,\\.:\\s]{6,60}$/D', $titulo)) { $view->assign('error_titulo', 'El formato del título no es correcto.'); $error = TRUE; } // Verificamos el contenido. $contenido_clean = preg_replace('/\\[.*\\]/', '', $contenido); if (!isset($contenido_clean[20]) || isset($contenido[5000])) { $view->assign('error_contenido', 'El contenido debe tener entre 20 y 5000 caractéres.'); $error = TRUE; } unset($contenido_clean); // Verificamos la categoria. $model_categoria = new Model_Categoria(); if (!$model_categoria->existe_seo($categoria)) { $view->assign('error_categoria', 'La categoría seleccionada es incorrecta.'); $error = TRUE; } else { $model_categoria->load_by_seo($categoria); $categoria_id = $model_categoria->id; } unset($model_categoria); // Quito espacios adicionales a las etiquetas. $tags = preg_replace('/\\s+/', ' ', trim($tags)); // Verificamos las etiquetas. if (!preg_match('/^[a-zA-Z0-9áéíóúñÑÁÉÍÓÚ, ]{0,}$/D', $tags)) { $view->assign('error_tags', 'Las etiquetas ingresadas con son alphanuméricas.'); $error = TRUE; } if (!$error) { // Obtengo el listado de etiquetas. $tags = explode(',', $tags); foreach ($tags as $k => $v) { $tags[$k] = trim($v); if ($tags[$k] == '') { unset($tags[$k]); } } // Verifico la cantidad. if (count($tags) < 3) { $view->assign('error_tags', 'Debes insertar un mínimo de 3 etiquetas.'); $error = TRUE; } } // Procedemos a crear el post. if (!$error) { // Evitamos XSS. $contenido = htmlentities($contenido, ENT_NOQUOTES, 'UTF-8'); // Formateamos los campos. $titulo = trim(preg_replace('/\\s+/', ' ', $titulo)); // Verifico si es borrador. $borrador = isset($_POST['submit']) ? $_POST['submit'] == 'borrador' : FALSE; // Obtengo el estado a aplicar. if ($borrador) { $estado = Model_Post::ESTADO_BORRADOR; } else { if (Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_REVISAR_CONTENIDO)) { $estado = Model_Post::ESTADO_PENDIENTE; } else { $estado = Model_Post::ESTADO_ACTIVO; } } unset($borrador); // Verifico parámetros especiales. if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_FIJAR_PROMOVER)) { $patrocinado = FALSE; $sticky = FALSE; } $model_post = new Model_Post(); $post_id = $model_post->crear(Usuario::$usuario_id, $titulo, $contenido, $categoria_id, $privado, $patrocinado, $sticky, $comentar, $estado); if ($post_id > 0) { // Cargo el post. $model_post = new Model_Post($post_id); // Agrego las etiquetas. $model_post->agregar_etiqueta($tags); // Agrego el suceso. $model_suceso = new Model_Suceso(); $model_suceso->crear(Usuario::$usuario_id, 'post_nuevo', FALSE, $post_id); // Informo y voy a post. $_SESSION['flash_success'] = 'El post fue creado correctamente.'; Request::redirect('/post/index/' . $post_id); } else { $view->assign('error', 'Se produjo un error cuando se creaba el post. Reintente.'); } } } // Menu. $this->template->assign('master_bar', parent::base_menu('posts')); $this->template->assign('top_bar', Controller_Home::submenu('nuevo')); // Asignamos la vista. $this->template->assign('contenido', $view->parse()); }