/** * Definir título e identificador si no se tiene * * @param string Título */ public function definir_titulo($titulo) { $this->titulo = $titulo; if ($this->identificador == NULL) { $this->identificador = \Base\Funciones::caracteres_para_clase($this->titulo); } }
/** * Constructor * * @param string Texto único que identica al padre * @param string Texto que va a aparecer en la lengüeta * @param mixed Instancia con el contenido, debe implementar SalidaWeb */ public function __construct($padre_identificador, $etiqueta, $contenido) { $this->padre_identificador = $padre_identificador; $this->etiqueta = $etiqueta; $this->identificador = $this->padre_identificador . \Base\Funciones::caracteres_para_clase($this->etiqueta); $this->contenido = $contenido; }
/** * Constructor * * @param string Texto único que identifica al padre * @param string Texto que va a aparecer en la barra * @param mixed Instancia con el contenido, debe implementar SalidaWeb * @param boolean Boleano, verdadero para que inicialmente esté abierto */ public function __construct($padre_identificador, $titulo, $contenido, $esta_abierto = FALSE) { $this->padre_identificador = $padre_identificador; $this->titulo = $titulo; $this->identificador = $this->padre_identificador . \Base\Funciones::caracteres_para_clase($this->titulo); $this->contenido = $contenido; $this->esta_abierto = $esta_abierto; }
/** * Concentrar */ protected function concentrar() { // Si ya se ha concentrado, no se hace nada if ($this->he_concentrado) { return; } // Cargar configuración de las categorías $categorias_config = new \Configuracion\CategoriasConfig(); // Iniciar vínculos $this->vinculos = new $this->categorias_vinculos(); // Bucle por todas las categorias foreach ($this->recolector->obtener_categorias() as $nombre) { // Obtener instancia de Categoria $categoria = $categorias_config->obtener($nombre); // Si está definido en \Configuracion\CategoriasConfig if ($categoria instanceof \Base\Categoria) { $url = sprintf('categoria-%s.html', \Base\Funciones::caracteres_para_web($categoria->nombre)); $vinculo = new \Base\Vinculo($categoria->nombre, $url, $categoria->icono, $this->directorio); $vinculo->en_raiz = false; $vinculo->en_otro = false; $this->vinculos->agregar($vinculo); } elseif ($categorias_config->mostrar_no_definidos) { $url = sprintf('categoria-%s.html', \Base\Funciones::caracteres_para_web($nombre)); $vinculo = new \Base\Vinculo($nombre, $url, 'unknown', $this->directorio); $vinculo->en_raiz = false; $vinculo->en_otro = false; $this->vinculos->agregar($vinculo); } } // Iniciar vínculos últimas publicaciones $this->vinculos_ultimas = new $this->ultimas_vinculos(); // Ordenar publicaciones por tiempo, de la más nueva a la más antigua $this->recolector->ordenar_por_tiempo_desc(); // Bucle por las publicaciones, tiene la cantidad límite foreach ($this->recolector->obtener_publicaciones($this->ultimas_cantidad) as $publicacion) { $vinculo = new \Base\Vinculo(); $vinculo->en_raiz = false; $vinculo->en_otro = false; $vinculo->definir_con_publicacion($publicacion); $this->vinculos_ultimas->agregar($vinculo); } // Levantar la bandera $this->he_concentrado = true; }
/** * Validar */ protected function validar() { // Validar publicaciones_directorio if (!is_string($this->publicaciones_directorio) || $this->publicaciones_directorio == '') { throw new \Exception("Falló la validación en ImprentaCSV: No se ha definido el directorio de publicaciones."); } $lib_dir = sprintf('%s/%s', \Base\Recolector::LIB_DIR, $this->publicaciones_directorio); if (!is_dir($lib_dir)) { throw new \Exception("Falló la validación en ImprentaCSV: No existe el directorio {$lib_dir}"); } // Validar directorio if (!is_string($this->directorio) || $this->directorio == '') { $this->directorio = \Base\Funciones::caracteres_para_web($this->publicaciones_directorio); } // Validar archivo_ruta if (!is_string($this->archivo_ruta) || $this->archivo_ruta == '') { $this->archivo_ruta = "{$this->directorio}/{$this->directorio}.csv"; } }
/** * Imprimir categorias * * Crea archivos para cada categoria como categoria-nombre.html */ protected function imprimir_categorias() { // Cargar configuración de las categorías $categorias_config = new \Configuracion\CategoriasConfig(); // Iniciar la Plantilla $plantilla = new Plantilla(); $plantilla->navegacion = new Navegacion(); $plantilla->mapa_inferior = new MapaInferior(); $plantilla->directorio = $this->directorio; $plantilla->navegacion->opcion_activa = $this->nombre_menu; // Bucle por todas las categorias foreach ($this->recolector->obtener_categorias() as $categoria_texto) { // Obtener instancia de Categoria $categoria = $categorias_config->obtener($categoria_texto); // Si está definido en \Configuracion\CategoriasConfig if ($categoria === false) { $categoria = new Categoria($categoria_texto); $categoria->descripcion = "Categoría {$categoria_texto} en {$this->titulo}"; } // Definir ruta del archivo a crear $ruta = sprintf('%s/categoria-%s.html', $plantilla->directorio, \Base\Funciones::caracteres_para_web($categoria->nombre)); // Filtrar por esta categoría $this->recolector->filtrar_publicaciones_de_categoria($categoria_texto); // Iniciar página $pagina = new $this->indices_paginas($this->recolector); $pagina->titulo = "{$this->titulo} en {$categoria->nombre}"; $pagina->descripcion = $categoria->descripcion; $pagina->en_raiz = false; $pagina->en_otro = false; // Pasar a la plantilla los valores que cambian en cada página $plantilla->titulo = $categoria->nombre; $plantilla->descripcion = $categoria->descripcion; $plantilla->claves = "{$this->claves}, {$categoria->nombre}"; $plantilla->archivo_ruta = $ruta; // Pasar a la plantilla el HTML y Javascript $plantilla->contenido = $pagina->html(); $plantilla->javascript = $pagina->javascript(); // Crear archivo $this->crear_archivo($plantilla->archivo_ruta, $plantilla->html()); $this->contador++; } }
/** * Categorías */ protected function categorias() { // Cargar configuración de las categorías $categorias_config = new CategoriasConfig(); // Iniciar concentrador $concentrador = new \Base\VinculosCompactos(); // Inicializar el recolector $recolector = new \Base\RecolectorCategorias(); $recolector->agregar_publicaciones_de_imprentas($this->imprentas); // Bucle por todas las categorias foreach ($recolector->obtener_categorias() as $nombre) { // Obtener instancia de Categoria $categoria = $categorias_config->obtener($nombre); // Si está definido en \Configuracion\CategoriasConfig if ($categoria instanceof \Base\Categoria) { // Sí está definido $categoria->en_raiz = true; $categoria->en_otro = false; $vinculo = new \Base\Vinculo($categoria->nombre, $categoria->url(), $categoria->icono, '', $categoria->descripcion); $vinculo->en_raiz = true; $vinculo->en_otro = false; $concentrador->agregar($vinculo); } elseif ($categorias_config->mostrar_no_definidos) { // No está definido $vinculo = new \Base\Vinculo($nombre, sprintf('%s.html', \Base\Funciones::caracteres_para_web($nombre)), 'unknown', \Base\ImprentaCategorias::CATEGORIAS_DIR); $vinculo->en_raiz = true; $vinculo->en_otro = false; $concentrador->agregar($vinculo); } } // Poner $this->contenido[] = ' <section id="categorias">'; $this->contenido[] = ' <h2>Categorías</h2>'; $this->contenido[] = sprintf(' <p>Explore por medio de las categorías que clasifican las %s publicaciones en este sitio web.</p>', number_format($recolector->obtener_cantidad_de_publicaciones(), 0, ".", ",")); $this->contenido[] = $concentrador->html(); $this->contenido[] = ' </section>'; }