/** * URL * * @return string URL relativo para vincular a la página en autores */ public function url() { if ($this->en_raiz) { return sprintf('%s/%s.html', \Configuracion\CategoriasConfig::DIRECTORIO, Funciones::caracteres_para_web($this->nombre)); } elseif ($this->en_otro) { return sprintf('../%s/%s.html', \Configuracion\CategoriasConfig::DIRECTORIO, Funciones::caracteres_para_web($this->nombre)); } else { return sprintf('%s.html', Funciones::caracteres_para_web($this->nombre)); } }
/** * 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 $clase = \Configuracion\CategoriasConfig::VINCULOS_INDICE; $this->vinculos = new $clase(); $this->vinculos->imagen_tamano = $categorias_config->imagen_tamano; // Bucle por todas las categorias foreach ($this->recolector->obtener_categorias() as $nombre) { // Obtener la cantidad de publicaciones de esta categoría $this->recolector->filtrar_publicaciones_de_categoria($nombre); $cantidad = $this->recolector->obtener_cantidad_de_publicaciones(); // Obtener instancia de Categoria $categoria = $categorias_config->obtener($nombre); // Si está definido en \Configuracion\CategoriasConfig if ($categoria instanceof Categoria) { // Sí está definido $categoria->en_raiz = $this->en_raiz; $categoria->en_otro = $this->en_otro; $etiqueta = sprintf('%s (%d)', $categoria->nombre, $cantidad); $vinculo = new Vinculo($etiqueta, $categoria->url(), $categoria->icono, \Configuracion\CategoriasConfig::DIRECTORIO, $categoria->descripcion); $this->vinculos->agregar($vinculo); } elseif ($categorias_config->mostrar_no_definidos) { // No está definido $etiqueta = sprintf('%s (%d)', $nombre, $cantidad); $vinculo = new Vinculo($etiqueta, sprintf('%s.html', Funciones::caracteres_para_web($nombre)), 'unknown', \Configuracion\CategoriasConfig::DIRECTORIO); $this->vinculos->agregar($vinculo); } } // Levantar la bandera $this->he_concentrado = true; }
/** * Ordenar por tiempo de forma descendente (más nuevo a más antiguo) */ public function ordenar_por_tiempo_desc() { $temporal = array(); foreach ($this->publicaciones as $publicacion) { $clave = Funciones::caracteres_para_web(sprintf('%s-%s', $publicacion->tiempo_creado(), $publicacion->nombre)); $temporal[$clave] = $publicacion; } ksort($temporal); $this->publicaciones = $temporal; }
/** * URL * * @return string URL relativo para vincular a la página en autores */ public function url() { // Si no hay apodo, el nombre del archivo es el nombre completo if ($this->apodo != '') { $pagina = sprintf('%s.html', Funciones::caracteres_para_web($this->apodo)); } else { $pagina = sprintf('%s.html', Funciones::caracteres_para_web($this->nombre_completo)); } // Entregar URL if ($this->en_raiz) { return sprintf('%s/%s', \Configuracion\AutoresConfig::DIRECTORIO, $pagina); } elseif ($this->en_otro) { return sprintf('../%s/%s', \Configuracion\AutoresConfig::DIRECTORIO, $pagina); } else { return $pagina; } }
/** * Concentrar */ protected function concentrar() { // Si ya se ha concentrado, no se hace nada if ($this->he_concentrado) { return; } // Cargar configuración de los autores $autores_config = new \Configuracion\AutoresConfig(); // Iniciar vínculos $clase = \Configuracion\AutoresConfig::VINCULOS_INDICE; $this->vinculos = new $clase(); $this->vinculos->imagen_tamano = $autores_config->imagen_tamano; // Si se van a mostrar los autores NO definidos if ($autores_config->mostrar_no_definidos) { // Bucle por todos los autores encontrados foreach ($this->recolector->obtener_autores() as $nombre) { // Obtener la cantidad de publicaciones de este autor $this->recolector->filtrar_publicaciones_de_autor($nombre); $cantidad = $this->recolector->obtener_cantidad_de_publicaciones(); // Obtener instancia de Autor $autor = $autores_config->obtener($nombre); // Si está definido en \Configuracion\AutoresConfig if ($autor instanceof Autor) { // Sí está definido $autor->en_raiz = $this->en_raiz; $autor->en_otro = $this->en_otro; $vinculo = new Vinculo($autor->titulo_nombre_completo(), $autor->url(), $autor->icono, \Configuracion\AutoresConfig::DIRECTORIO, $this->autor_descripcion_html($autor)); $vinculo->boton_etiqueta = "Todas sus publicaciones"; $this->vinculos->agregar($vinculo); } elseif ($autores_config->mostrar_no_definidos) { // No está definido $pagina = sprintf('%s.html', Funciones::caracteres_para_web($nombre)); $vinculo = new Vinculo($nombre, $pagina, 'unknown'); $this->vinculos->agregar($vinculo); } } } else { // Sólo los autores configurados, bucle por ellos foreach ($autores_config->autores as $autor) { $autor->en_raiz = $this->en_raiz; $autor->en_otro = $this->en_otro; // Fitrar en el recolector, previendo que al no haber publicaciones la cantidad es cero try { // Recolectar filtrando primero por apodo, luego por 'titulo nombre_completo' if ($autor->apodo != '') { try { $this->recolector->filtrar_publicaciones_de_autor($autor->apodo); } catch (RecolectorExceptionVacio $e) { $this->recolector->filtrar_publicaciones_de_autor($autor->titulo_nombre_completo()); } } else { $this->recolector->filtrar_publicaciones_de_autor($autor->titulo_nombre_completo()); } // Obtener la cantidad de publicaciones de este autor $cantidad = $this->recolector->obtener_cantidad_de_publicaciones(); } catch (RecolectorExceptionVacio $e) { $cantidad = 0; } // Si tiene publicaciones if ($cantidad > 0) { $vinculo = new Vinculo($autor->titulo_nombre_completo(), $autor->url(), $autor->icono, \Configuracion\AutoresConfig::DIRECTORIO, $this->autor_descripcion_html($autor)); $vinculo->boton_etiqueta = "Todas sus publicaciones"; } else { // No tiene publicaciones, sólo se ponen los datos del autor sin enlace a su página $vinculo = new Vinculo($autor->titulo_nombre_completo(), '', $autor->icono, \Configuracion\AutoresConfig::DIRECTORIO, $this->autor_descripcion_html($autor)); } // Agregar vínculo $this->vinculos->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 ImprentaPublicaciones: No se ha definido el directorio de publicaciones."); } $lib_dir = sprintf('%s/%s', Recolector::LIB_DIR, $this->publicaciones_directorio); if (!is_dir($lib_dir)) { throw new \Exception("Falló la validación en ImprentaPublicaciones: No existe el directorio {$lib_dir}"); } // Validar título if (!is_string($this->titulo) || $this->titulo == '') { $this->titulo = $this->publicaciones_directorio; } // Validar descripción if (!is_string($this->descripcion) || $this->descripcion == '') { $this->descripcion = "Índice de páginas para {$this->titulo}"; } // Validar claves if (!is_string($this->claves) || $this->claves == '') { throw new \Exception("Falló la validación en ImprentaPublicaciones: No hay claves."); } // Validar directorio if (!is_string($this->directorio) || $this->directorio == '') { $this->directorio = Funciones::caracteres_para_web($this->publicaciones_directorio); } // Validar archivo_ruta if (!is_string($this->archivo_ruta) || $this->archivo_ruta == '') { $this->archivo_ruta = "{$this->directorio}/index.html"; } // Validar nombre_menu if (!is_string($this->nombre_menu) || $this->nombre_menu == '') { $this->nombre_menu = $this->titulo; } }