Beispiel #1
0
 /**
  * Definir con publicacion
  *
  * @param mixed Instancia de Publicacion
  */
 public function definir_con_publicacion(Publicacion $p)
 {
     // Imponer estas propiedades en la publicación
     $p->en_raiz = $this->en_raiz;
     $p->en_otro = $this->en_otro;
     // Validar publicación
     $p->validar();
     // Definir parámetros desde la publicación
     $this->nombre = $p->nombre;
     $this->directorio = $p->directorio;
     $this->descripcion = $p->descripcion;
     $this->autor = $p->autor;
     $this->fecha = $p->fecha_con_formato_humano();
     $this->imagen_id = $p->imagen_id;
     $this->imprenta_titulo = $p->imprenta_titulo;
     // La imagen puede ser la imagen_previa o el icono
     if ($p->imagen != '' && $p->imagen_previa != '') {
         $this->imagen = $p->imagen;
         $this->imagen_previa = $p->imagen_previa;
     } elseif ($p->imagen_previa != '') {
         $this->imagen = $p->imagen_previa;
         $this->imagen_previa = $p->imagen_previa;
     } elseif ($p->imagen != '') {
         $this->imagen = $p->imagen;
         $this->imagen_previa = $p->imagen;
     } elseif ($p->icono != '') {
         $this->imagen = $p->icono;
         $this->imagen_previa = '';
     } else {
         $this->imagen = '';
         $this->imagen_previa = '';
     }
     // Definir el vínculo
     if ($p->archivo != '') {
         $this->vinculo = "{$p->archivo}.html";
         // Es una página
     } elseif ($p->url != '') {
         $this->vinculo = $p->url;
         // Apunta a otra dirección en internet
     } else {
         $this->vinculo = '';
     }
 }
 /**
  * Validar
  *
  * Puede causar excepción si falta una propiedad obligatoria. También busca definir las opcionales.
  */
 public function validar()
 {
     // Si ya fue validado, no se hace nada
     if ($this->validado) {
         return;
     }
     // Validar nombre
     if (!is_string($this->nombre) || $this->nombre == '') {
         throw new \Exception("Error en PublicacionSchemaBlogPosting, validar: La propiedad nombre no está definida.");
     }
     // Validar archivo
     if (!is_string($this->archivo) || $this->archivo == '') {
         throw new \Exception("Error en PublicacionSchemaBlogPosting, validar: La propiedad archivo no está definida.");
     }
     // Validar directorio
     if (!is_string($this->directorio) || $this->directorio == '') {
         throw new \Exception("Error en PublicacionSchemaBlogPosting, validar: La propiedad directorio no está definida.");
     }
     // Validar descripcion
     if (!is_string($this->descripcion) || $this->descripcion == '') {
         throw new \Exception("Error en PublicacionSchemaBlogPosting, validar: La propiedad descripcion no está definida.");
     }
     // Validar autor
     if (!(is_string($this->autor) && $this->autor != '') && !(is_array($this->autor) && count($this->autor) > 0)) {
         throw new \Exception("Error en PublicacionSchemaBlogPosting, validar: La propiedad autor no está definida.");
     }
     // Si no está definida imagen
     if ($this->imagen == '') {
         // Si existe una imagen jpg
         if (file_exists("{$this->directorio}/{$this->archivo}/imagen.jpg")) {
             $this->imagen = "{$this->archivo}/imagen.jpg";
         }
         // Si existe una imagen png
         if (file_exists("{$this->directorio}/{$this->archivo}/imagen.png")) {
             $this->imagen = "{$this->archivo}/imagen.png";
         }
     }
     // Si no está definida imagen previa
     if ($this->imagen_previa == '') {
         // Si existe una imagen previa jpg
         if (file_exists("{$this->directorio}/{$this->archivo}/imagen-previa.jpg")) {
             $this->imagen_previa = "{$this->archivo}/imagen-previa.jpg";
         }
         // Si existe una imagen previapng
         if (file_exists("{$this->directorio}/{$this->archivo}/imagen-previa.png")) {
             $this->imagen_previa = "{$this->archivo}/imagen-previa.png";
         }
     }
     // El contenido es estructurado en un esquema
     $schema = new SchemaBlogPosting();
     $schema->name = $this->nombre;
     $schema->description = $this->descripcion;
     $schema->datePublished = $this->fecha;
     $schema->image = $this->imagen;
     $schema->image_show = $this->poner_imagen_en_contenido;
     $schema->author = $this->autor;
     // El contenido es una instancia de SchemaBlogPosting
     $this->contenido = $schema;
     // Ejecutar método en el padre
     parent::validar();
 }