Example #1
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
     }
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
 /**
  * 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;
     }
 }