public function editarCategoriaAcao()
 {
     if ($_POST) {
         $idcategoria = (int) $_POST['idcategoria'];
         $categoria = $_POST['categoria'];
         $voCategoria = new Vo_Categoria();
         $voCategoria->idcategoria = $idcategoria;
         $voCategoria->categoria = $categoria;
         $categoriaModel = new Model_Categoria();
         $categoriaModel->editar($voCategoria);
         header("location:categoria-editar.php?idcategoria={$idcategoria}");
         exit;
     } else {
         $idcategoria = (int) $_GET['idcategoria'];
         $dao = new Dao_Categoria();
         $retorno = $dao->request("idcategoria = {$idcategoria}");
         if (!isset($retorno[0])) {
             echo "Registro não encontrado!";
             exit;
         }
         $categoria = $retorno[0];
     }
     $view = $this->getView();
     $view->setValor('categoria', $categoria);
     $view->mostrar('categoria-editar');
 }
Example #2
0
File: tops.php Project: 4bs4/marifa
 /**
  * Mostramos tops de usuarios.
  * @param string $categoria Categoria para filtar los tops de usuario.
  * @param int $periodo Período para filtar usuarios.
  */
 public function action_usuarios($categoria, $periodo)
 {
     // Cargamos la portada.
     $portada = View::factory('tops/usuarios');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('tops'));
     $this->template->assign('top_bar', $this->submenu());
     // Cargo las categorias.
     $model_categorias = new Model_Categoria();
     // Seteo el listado en la vista.
     $portada->assign('categorias', $model_categorias->lista());
     // Obtengo la categoria por POST.
     //TODO: hacer una mejora con jQuery.
     if (isset($_POST['categoria'])) {
         $categoria = $_POST['categoria'];
     }
     // Verifico si existe la categoria.
     $categoria = trim($categoria) == '' ? NULL : trim($categoria);
     if ($categoria !== NULL && $categoria != 'todas') {
         if (!$model_categorias->load_by_seo($categoria)) {
             Request::redirect('/tops');
         } else {
             $categoria_id = $model_categorias->id;
             $categoria = $model_categorias->seo;
         }
     } else {
         $categoria = 'todas';
         $categoria_id = NULL;
     }
     // Seteo la categoria actual.
     $portada->assign('categoria', $categoria);
     // Obtengo el período.
     $periodo = (int) $periodo;
     // Verifico por un válido.
     if ($periodo != 0 && $periodo != 1 && $periodo != 2 && $periodo != 3 && $periodo != 4) {
         Request::redirect('/tops');
     }
     $portada->assign('periodo', $periodo);
     // Cargo modelo de usuarios.
     $model_usuario = new Model_Usuario();
     $portada->assign('puntos', $model_usuario->top_puntos($categoria_id, $periodo));
     $portada->assign('seguidores', $model_usuario->top_seguidores($periodo));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $portada->parse());
 }
Example #3
0
 /**
  *
  * @return array
  */
 protected function _getTreeCategorias()
 {
     $modelCategoria = new Model_Categoria();
     return $modelCategoria->listTreeCategorias();
 }
Example #4
0
 /**
  * Post con las mismas etiquetas que el selecionado.
  * @param int $post ID del post a mostrar relacionados.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_relacionados($post, $pagina)
 {
     // Transformamos a entero.
     $post = (int) $post;
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos existencia.
     if (!$model_post->existe()) {
         Request::redirect('/buscador/q/');
     }
     // Cargamos la vista.
     $vista = View::factory('buscador/index');
     // 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);
     // Realizamos la busqueda.
     list($listado, $cantidad) = $model_post->buscar_relacionados($pagina, $cantidad_por_pagina);
     // Verifivo que la página seleccionada sea válida.
     if (count($listado) == 0 && $pagina != 1) {
         Request::redirect('/buscador/relacionados/' . $post);
     }
     // Paginación.
     $paginador = new Paginator($cantidad, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, "/buscador/relacionados/{$post}/%s/"));
     unset($paginador);
     $vista->assign('total', $cantidad);
     // Procesamos listado de post.
     foreach ($listado as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios();
         $a['categoria'] = $v->categoria()->as_array();
         $listado[$k] = $a;
     }
     $vista->assign('resultados', $listado);
     unset($listado);
     $vista->assign('q', '');
     // Vista de relacionado.
     $view_relacionado = View::factory('buscador/relacionado');
     $view_relacionado->assign('post', $model_post->as_array());
     $vista->assign('relacionado', $view_relacionado->parse());
     unset($view_relacionado);
     // Listado de categorias.
     $mc = new Model_Categoria();
     $vista->assign('categorias', $mc->lista());
     unset($mc);
     $vista->assign('categoria', 'todos');
     $vista->assign('usuario', '');
     // Menu.
     $this->template->assign('master_bar', parent::base_menu());
     $this->template->assign('top_bar', Controller_Home::submenu('buscador'));
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }
Example #5
0
File: foto.php Project: 4bs4/marifa
 /**
  * Agregamos una nueva foto.
  */
 public function action_nueva()
 {
     // Verificamos usuario conectado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes loguearte para poder agregar fotos.';
         Request::redirect('/usuario/login');
     }
     // Verifico los permisos para crear foto.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_CREAR)) {
         $_SESSION['flash_error'] = 'No tienes permisos para crear fotos.';
         Request::redirect('/foto/');
     }
     // Asignamos el título.
     $this->template->assign('title', 'Nueva foto');
     // Cargamos la vista.
     $view = View::factory('foto/nueva');
     // Cargo el listado de categorias.
     $model_categorias = new Model_Categoria();
     $categorias = $model_categorias->lista();
     $view->assign('categorias', $categorias);
     // Elementos por defecto.
     foreach (array('titulo', 'url', 'descripcion', 'comentarios', 'visitantes', 'categoria', 'error_titulo', 'error_url', 'error_descripcion', 'error_categoria') as $k) {
         $view->assign($k, '');
     }
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('fotos'));
     $this->template->assign('top_bar', $this->submenu('nuevo'));
     if (Request::method() == 'POST') {
         $error = FALSE;
         // Obtenemos los datos y seteamos valores.
         foreach (array('titulo', 'url', 'descripcion', 'categoria') as $k) {
             ${$k} = isset($_POST[$k]) ? $_POST[$k] : '';
             $view->assign($k, ${$k});
         }
         // Obtenemos los checkbox.
         $visitantes = isset($_POST['visitantes']) ? $_POST['visitantes'] == 1 : FALSE;
         $view->assign('visitantes', $visitantes);
         $comentarios = isset($_POST['comentarios']) ? $_POST['comentarios'] == 1 : FALSE;
         $view->assign('comentarios', $comentarios);
         // 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 quitando BBCODE.
         $descripcion_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $descripcion);
         // Verificamos la descripcion.
         if (!isset($descripcion_clean[20]) || isset($descripcion[600])) {
             $view->assign('error_descripcion', 'La descripción debe tener entre 20 y 600 caractéres.');
             $error = TRUE;
         }
         unset($contenido_clean);
         // Verificamos la URL.
         if (!preg_match('/^(http|https):\\/\\/([A-Z0-9][A-Z0-9_-]*(?:\\.[A-Z0-9][A-Z0-9_-]*)+):?(\\d+)?\\/?/Di', $url)) {
             // Verifico IMG.
             if (!isset($_FILES['img']) || $_FILES['img']['error'] == UPLOAD_ERR_NO_FILE) {
                 $view->assign('error_url', 'La dirección de la URL no es válida.');
                 $error = TRUE;
             }
         }
         // Verifico la categoria.
         if (!$model_categorias->existe_seo($categoria)) {
             $view->assign('error_categoria', 'La categoria seleccionada es incorrecta.');
             $error = TRUE;
         }
         // Proceso de verificación de método de carga de la imagen.
         if (!$error) {
             if (!isset($_FILES['img']) || $_FILES['img']['error'] == UPLOAD_ERR_NO_FILE) {
                 $upload = new Upload_Imagen();
                 try {
                     $rst = $upload->from_url($url);
                     if ($rst) {
                         $url = $rst;
                     } else {
                         $view->assign('error_url', 'Se produjo un error al cargar la imagen.');
                         $error = TRUE;
                     }
                 } catch (Exception $e) {
                     $view->assign('error_url', $e->getMessage());
                     $error = TRUE;
                 }
             } else {
                 // Verifico la imagen.
                 $upload = new Upload_Imagen();
                 try {
                     $rst = $upload->procesar_imagen('img');
                     if ($rst) {
                         $url = $rst;
                     } else {
                         $view->assign('error_url', 'Se produjo un error al cargar la imagen.');
                         $error = TRUE;
                     }
                 } catch (Exception $e) {
                     $view->assign('error_url', $e->getMessage());
                     $error = TRUE;
                 }
             }
         }
         // Procedemos a crear la imagen.
         if (!$error) {
             // Evitamos XSS.
             $descripcion = htmlentities($descripcion, ENT_NOQUOTES, 'UTF-8');
             // Formateamos los campos.
             $titulo = trim(preg_replace('/\\s+/', ' ', $titulo));
             // Obtengo el ID de la categoria.
             $model_categorias->load_by_seo($categoria);
             //TODO: implementar en revisión.
             // $estado = Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_REVISAR_CONTENIDO) ? Model_Foto::ESTADO_OCULTA : Model_Foto::ESTADO_ACTIVA;
             $estado = Model_Foto::ESTADO_ACTIVA;
             $model_foto = new Model_Foto();
             $foto_id = $model_foto->crear(Usuario::$usuario_id, $titulo, $descripcion, $url, $model_categorias->id, $visitantes, $comentarios, $estado);
             if ($foto_id > 0) {
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 $model_suceso->crear(Usuario::$usuario_id, 'foto_nueva', FALSE, $model_foto->id);
                 // Informo el resultado.
                 $_SESSION['flash_success'] = 'Foto creada correctamente.';
                 Request::redirect('/foto/ver/' . $model_foto->id);
             } else {
                 $view->assign('error', 'Se produjo un error cuando se creaba la foto. Reintente.');
             }
         }
     }
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }
Example #6
0
 /**
  * Editamos una categoria existente.
  * @param int $id ID de la categoria a editar.
  */
 public function action_editar_categoria($id)
 {
     // Cargamos el modelo de la categoria.
     $model_categoria = new Model_Categoria((int) $id);
     // Verifico que exista.
     if (!$model_categoria->existe()) {
         $_SESSION['flash_error'] = 'No exista la categoria que quiere editar.';
         Request::redirect('/admin/contenido/categorias');
     }
     // Cargamos la vista.
     $vista = View::factory('admin/contenido/editar_categoria');
     // Cargamos el listado de imagens para rangos disponibles.
     $imagenes_categorias = scandir(VIEW_PATH . THEME . DS . 'assets' . DS . 'img' . DS . 'categoria' . DS);
     unset($imagenes_categorias[1], $imagenes_categorias[0]);
     // Quitamos . y ..
     $vista->assign('imagenes_categorias', $imagenes_categorias);
     // Valores por defecto y errores.
     $vista->assign('nombre', $model_categoria->nombre);
     $vista->assign('error_nombre', FALSE);
     $vista->assign('imagen', $model_categoria->imagen);
     $vista->assign('error_imagen', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $nombre = isset($_POST['nombre']) ? preg_replace('/\\s+/', ' ', trim($_POST['nombre'])) : NULL;
         $imagen = isset($_POST['imagen']) ? $_POST['imagen'] : NULL;
         // Valores para cambios.
         $vista->assign('nombre', $nombre);
         $vista->assign('imagen', $imagen);
         // Verificamos el nombre.
         if (!preg_match('/^[a-z0-9\\sáéíóúñ]{3,50}$/iD', $nombre)) {
             $error = TRUE;
             $vista->assign('error_nombre', 'El nombre de la categoria deben ser entre 5 y 32 caractéres alphanuméricos.');
         }
         // Verificamos la imagen.
         if (!in_array($imagen, $imagenes_categorias)) {
             $error = TRUE;
             $vista->assign('error_imagen', 'No ha seleccionado una imagen válida.');
         }
         if (!$error) {
             // Verifico no exista campo con ese nombre.
             if ($model_categoria->existe_seo($model_categoria->make_seo($nombre), TRUE)) {
                 $error = TRUE;
                 $vista->assign('error_nombre', 'Ya existe una categoria con ese nombre seo.');
             }
         }
         if (!$error) {
             // Actualizo el imagen.
             if ($model_categoria->imagen != $imagen) {
                 $model_categoria->cambiar_imagen($imagen);
             }
             // Actualizo el nombre.
             if ($model_categoria->nombre != $nombre) {
                 $model_categoria->cambiar_nombre($nombre);
             }
             // Informamos suceso.
             $vista->assign('success', 'Información actualizada correctamente');
         }
     }
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('admin'));
     // 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('contenido_categorias'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Example #7
0
File: post.php Project: 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());
 }