/** * 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(); }