示例#1
0
文件: mensaje.php 项目: 4bs4/marifa
 /**
  * Verificamos los permisos.
  */
 public function __construct()
 {
     // Solo usuarios conectados.
     if (!Usuario::is_login()) {
         Request::redirect('/usuario/login', TRUE);
     }
     parent::__construct();
 }
示例#2
0
 /**
  * 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();
 }
示例#3
0
文件: favoritos.php 项目: 4bs4/marifa
 /**
  * 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();
 }
示例#4
0
文件: cuenta.php 项目: 4bs4/marifa
 /**
  * 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();
 }
示例#5
0
 /**
  * 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();
 }
示例#6
0
文件: home.php 项目: 4bs4/marifa
 /**
  * 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();
 }
示例#7
0
文件: usuario.php 项目: 4bs4/marifa
 /**
  * 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();
 }
示例#8
0
文件: home.php 项目: 4bs4/marifa
 /**
  * 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;
 }
示例#9
0
文件: usuario.php 项目: 4bs4/marifa
 /**
  * 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());
 }
示例#10
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);
 }
示例#11
0
 /**
  * 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;
 }
示例#12
0
文件: foto.php 项目: 4bs4/marifa
 /**
  * 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);
 }
示例#13
0
文件: post.php 项目: 4bs4/marifa
 /**
  * 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());
 }