From a667b0370d52c1a6c4682b1a4b69070492263d95 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sat, 12 Aug 2023 21:34:38 +0200 Subject: [PATCH] =?UTF-8?q?Remplace=20l'api=20opengraph=20par=20un=20s?= =?UTF-8?q?=C3=A9lecteur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 3 +- core/class/layout.class.php | 32 +++++++++-- core/include/update.inc.php | 3 ++ core/module/config/config.php | 54 +++++++++++++++---- core/module/config/view/social/social.php | 50 ++++++++++------- core/module/install/ressource/defaultdata.php | 8 +-- core/module/install/ressource/i18n/en_EN.json | 10 ++-- core/module/install/ressource/i18n/es.json | 10 ++-- core/module/install/ressource/i18n/fr_FR.json | 10 ++-- 9 files changed, 128 insertions(+), 52 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 3ba6600b..505de8e4 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,7 +6,8 @@ - Améliore la gestion de la base de données et la génération du fichier de journalisation, stockage des données JSON, forçage au format objet. - Erreurs fictives pendant la mise à jour en ligne, améliorations du dialogue AJAX entre PHP et JQUERY avec un affichage précis des erreurs. - L'ajout d'une langue de contenu initialise les données de la langue. -- Format d'image avif si supporté par la version installée de php;. +- Format d'image avif si supporté par la version installée de php. +- Remplacement du service ScreenShot API par un sélecteur manuel ; affiche les paramètres d'images recommandées et ceux de l'image sélectionnée. # Corrections - Correction de bugs mineurs dans la sauvegarde et la suppression des modules installés. - Problèmes de mise à jour depuis les versions 11. diff --git a/core/class/layout.class.php b/core/class/layout.class.php index 1611e6ef..7df8a56f 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -824,11 +824,33 @@ class layout extends common */ public function showMetaImage() { - $items = ''; - $items .= ''; - $items .= ''; - $items .= ''; - echo $items; + $imagePath = self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']); + if ( + $this->getData(['config', 'seo', 'openGraphImage']) + && file_exists($imagePath) + ) { + $typeMime = exif_imagetype($imagePath); + switch ($typeMime) { + case IMAGETYPE_JPEG: + $typeMime = 'image/jpeg'; + break; + case IMAGETYPE_PNG: + $typeMime = 'image/png'; + break; + default: + // Type incorrect + return; + } + $imageSize = getimagesize($imagePath); + $wide = $imageSize[0]; + $height = $imageSize[1]; + //Sortie + $items = ''; + $items .= ''; + $items .= ''; + $items .= ''; + echo $items; + } } /** diff --git a/core/include/update.inc.php b/core/include/update.inc.php index ba972c9f..31608b9f 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -1061,6 +1061,9 @@ if ($this->getData(['core', 'dataVersion']) < 13000) { } $_SESSION['ZWII_CONTENT'] = $currentlanguage; + // Supprime la clé OpenOgraph + $this->deleteData(['config', 'seo', 'keyApi']); + // Mise à jour $this->setData(['core', 'dataVersion', 13000]); } \ No newline at end of file diff --git a/core/module/config/config.php b/core/module/config/config.php index 87f86110..dffc4c1d 100644 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -204,6 +204,8 @@ class config extends common public static $onlineVersion = ''; public static $updateButtonText = 'Réinstaller'; + public static $imageOpenGraph = []; + /** * Génére les fichiers pour les crawlers * Sitemap compressé et non compressé @@ -299,8 +301,6 @@ class config extends common } } - - // Traitement des données reçues valides. if (!empty($token) && $data !== false) { $data = json_decode($data, true); @@ -365,12 +365,7 @@ class config extends common 'state' => false ]); } - // Lire le contenu de l'archive dans le tableau files - /* - for ($i = 0; $i < $zip->numFiles; $i++) { - $stat = $zip->statIndex($i); - $files[] = (basename($stat['name'])); - }*/ + // Extraction de l'archive dans un dossier temporaire $tmpDir = uniqid(8); $success = $zip->extractTo(self::TEMP_DIR . $tmpDir); @@ -488,7 +483,7 @@ class config extends common ], 'seo' => [ 'robots' => $this->getInput('seoRobots', helper::FILTER_BOOLEAN), - 'keyApi' => $this->getInput('seoKeyApi', helper::FILTER_STRING_SHORT), + 'openGraphImage' => $this->getInput('seoOpenGraphImage', helper::FILTER_STRING_SHORT), ], 'connect' => [ 'attempt' => $this->getInput('connectAttempt', helper::FILTER_INT), @@ -598,6 +593,47 @@ class config extends common self::$updateDelay[$key] = $key === 86400 ? $value . ' ' . helper::translate('jour') : $value . ' ' . helper::translate('jours'); } + // Paramètres de l'image OpenGraph + $imagePath = self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']); + + // Par défaut + self::$imageOpenGraph['type'] = ''; + self::$imageOpenGraph['size'] = ''; + self::$imageOpenGraph['wide'] = ''; + self::$imageOpenGraph['height'] = ''; + self::$imageOpenGraph['ratio'] = 0; + if ( + $this->getData(['config', 'seo', 'openGraphImage']) + && file_exists($imagePath) + ) { + // Infos sur l'image Open Graph + $typeMime = exif_imagetype($imagePath); + switch ($typeMime) { + case IMAGETYPE_JPEG: + $typeMime = 'jpeg'; + break; + case IMAGETYPE_PNG: + $typeMime = 'png'; + break; + } + self::$imageOpenGraph['type'] = $typeMime; + $imageSize = getimagesize($imagePath); + self::$imageOpenGraph['wide'] = $imageSize[0]; + self::$imageOpenGraph['height'] = $imageSize[1]; + self::$imageOpenGraph['ratio'] = self::$imageOpenGraph['wide'] / self::$imageOpenGraph['height']; + + self::$imageOpenGraph['size'] = filesize($imagePath); + $tailleEnOctets = filesize($imagePath); + + if ($tailleEnOctets >= 1024 * 1024) { + // Si la taille est supérieure ou égale à 1 Mo, afficher en mégaoctets + self::$imageOpenGraph['size'] = round($tailleEnOctets / (1024 * 1024), 2) . ' Mo'; + } else { + // Sinon, afficher en kilooctets + self::$imageOpenGraph['size'] = round($tailleEnOctets / 1024, 2) . ' Ko'; + } + } + // Valeurs en sortie $this->addOutput([ 'title' => helper::translate('Configuration'), diff --git a/core/module/config/view/social/social.php b/core/module/config/view/social/social.php index e67063fd..28595a55 100644 --- a/core/module/config/view/social/social.php +++ b/core/module/config/view/social/social.php @@ -11,33 +11,47 @@ -->
-
+
- 'Clé de l\'API ScreenShotApi', - 'value' => $this->getData(['config', 'seo', 'keyApi']), - 'help' => 'Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération' + $this->getData(['user', $this->getUser('id'), 'language']), + 'label' => 'Image Open Graph', + 'value' => $this->getData(['config', 'seo', 'openGraphImage']), + 'type' => 1, + 'help' => sprintf('%s : JPG - PNG
', helper::translate('Format')) . + sprintf('%s : 1200 x 630 pixels
', helper::translate('Dimensions minimales')) . + sprintf('%s : 1.91:1
', helper::translate('Ratio')) . + sprintf('%s : %s, %s
', helper::translate('Taille maximale du fichier'), helper::translate('5 Mo pour les images JPEG'), helper::translate('1 Mo pour les images PNG')) ]); ?>
-
- helper::baseUrl() . 'config/configMetaImage', - 'value' => 'Générer une capture Open Graph' - ]); ?> +
+ +

+ +

+

+ +

+

+ +

+

+ +

+
-
- -
-
- -
-
+
+ getData(['config', 'seo', 'openGraphImage']) && + file_exists(self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage'])) + ): ?> +
diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index fd8fc5a3..20b2c1da 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -29,7 +29,7 @@ class init extends common ], 'seo' => [ 'robots' => true, - 'keyApi' => 'XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX' + 'openGraphImage' => 'screenshot.jpg' ], 'connect' => [ 'timeout' => 600, @@ -286,15 +286,15 @@ class init extends common 'language' => [ "fr_FR" => [ "version" => 13000, - "date" => 1691352286 + "date" => 1691858227 ], "es" => [ "version" => 13000, - "date" => 1691352286 + "date" => 1691858227 ], "en_EN" => [ "version" => 13000, - "date" => 1691352286 + "date" => 1691858227 ] ], 'profil' => [ diff --git a/core/module/install/ressource/i18n/en_EN.json b/core/module/install/ressource/i18n/en_EN.json index 89ffc6e3..0709768f 100644 --- a/core/module/install/ressource/i18n/en_EN.json +++ b/core/module/install/ressource/i18n/en_EN.json @@ -136,8 +136,6 @@ "Chiffres": "Numbers", "Cible": "Target", "Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Click on an area to access its customization options.", - "Clé de l'API ScreenShotApi": "API key ScreenShotApi", - "Clé de l'API ScreenShotApi": "API key ScreenShotApi", "Commentaire": "Comment", "Complète": "Complete", "Compte administrateur": "Administrator account", @@ -180,7 +178,6 @@ "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence.": "Visible color in the absence of an image.
The horizontal cursor regulates the level of transparency.", "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Visible color in the absence of an image.
The horizontal cursor regulates the level of transparency. The color of the text is automatic.", "Couleurs": "Colors", - "Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Create a free account, copy the key, then validate the form before clicking the generation button", "Dans le site": "Into the site", "Dans quelle langue utiliserez-vous Zwii ?": "In which language will you use Zwii?", "Date": "Date", @@ -322,7 +319,6 @@ "L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "The archive was deposited in the file manager. Archives below version 9 are not accepted.", "L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "The identifier is defined when creating the account, it cannot be changed.", "La carte du site a été mise à jour": "The site card has been updated", - "La clé de l'API ne peut pas être vide": "The key to the API cannot be empty", "La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "Backup copy of htaccess file has not been restored!", "La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "The description of a page participates in its referencing, each page must have a different description.", "La page %s est ouverte par l'utilisateur %s": "Page %s opened by user %s", @@ -675,5 +671,9 @@ "Édition du profil %s": "Edit Profile %s", "Éléments": "Items", "Étendu sur la page": "Spread across the page", - "Étiquettes des pages spéciales": "Special pages labels" + "Étiquettes des pages spéciales": "Special pages labels", + "Dimensions minimales": "Minimum dimensions", + "Taille maximale du fichier": "Maximum file size", + "5 Mo pour les images JPEG": "5 MB for JPEG images", + "1 Mo pour les images PNG": "1 MB for PNG images" } \ No newline at end of file diff --git a/core/module/install/ressource/i18n/es.json b/core/module/install/ressource/i18n/es.json index a005df5a..308f7b59 100644 --- a/core/module/install/ressource/i18n/es.json +++ b/core/module/install/ressource/i18n/es.json @@ -136,8 +136,6 @@ "Chiffres": "Cifras", "Cible": "Objetivo", "Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Haga clic en un área para acceder a sus opciones de personalización.", - "Clé de l'API ScreenShotApi": "Clave API ScreenShotApi": "Clave API ScreenShotApi", "Commentaire": "Comentario", "Complète": "sin truncar", "Compte administrateur": "Cuenta de administrador", @@ -180,7 +178,6 @@ "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence.": "Color visible en ausencia de una imagen.
El control deslizante horizontal ajusta el nivel de transparencia.", "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Color visible en ausencia de una imagen.
El control deslizante horizontal ajusta el nivel de transparencia. El color del texto es automático.", "Couleurs": "Colores", - "Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Cree una cuenta gratuita, copie la clave, luego valide el formulario antes de hacer clic en el botón generar", "Dans le site": "En el sitio", "Dans quelle langue utiliserez-vous Zwii ?": "¿En qué idioma usará Zwii?", "Date": "fecha", @@ -322,7 +319,6 @@ "L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "El archivo ha sido depositado en el administrador de archivos. No se aceptan archivos inferiores a la versión 9.", "L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "El identificador se define al crear la cuenta, no se puede modificar.", "La carte du site a été mise à jour": "El mapa del sitio ha sido actualizado.", - "La clé de l'API ne peut pas être vide": "La clave API no puede estar vacía", "La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "¡La copia de seguridad del archivo htaccess no ha sido restaurada!", "La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "La descripción de una página participa en su referenciación, cada página debe tener una descripción diferente.", "La page %s est ouverte par l'utilisateur %s": "La página %s ha sido abierta por el usuario %s", @@ -675,5 +671,9 @@ "Édition du profil %s": "Edición del perfil %s", "Éléments": "Elementos", "Étendu sur la page": "Extendido en la página", - "Étiquettes des pages spéciales": "Etiquetas de páginas especiales" + "Étiquettes des pages spéciales": "Etiquetas de páginas especiales", + "Dimensions minimales": "Dimensiones mínimas", + "Taille maximale du fichier": "Tamaño máximo de archivo", + "5 Mo pour les images JPEG": "5 MB para imágenes JPEG", + "1 Mo pour les images PNG": "1 MB para imágenes PNG" } \ No newline at end of file diff --git a/core/module/install/ressource/i18n/fr_FR.json b/core/module/install/ressource/i18n/fr_FR.json index 36f0147e..42c568ad 100644 --- a/core/module/install/ressource/i18n/fr_FR.json +++ b/core/module/install/ressource/i18n/fr_FR.json @@ -136,8 +136,6 @@ "Chiffres": "", "Cible": "", "Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "", - "Clé de l'API ScreenShotApi": "", - "Clé de l'API ScreenShotApi": "", "Commentaire": "", "Complète": "", "Compte administrateur": "", @@ -180,7 +178,6 @@ "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence.": "", "Couleur visible en l'absence d'une image.
Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "", "Couleurs": "", - "Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "", "Dans le site": "", "Dans quelle langue utiliserez-vous Zwii ?": "", "Date": "", @@ -322,7 +319,6 @@ "L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "", "L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "", "La carte du site a été mise à jour": "", - "La clé de l'API ne peut pas être vide": "", "La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "", "La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "", "La page %s est ouverte par l'utilisateur %s": "", @@ -675,5 +671,9 @@ "Édition du profil %s": "", "Éléments": "", "Étendu sur la page": "", - "Étiquettes des pages spéciales": "" + "Étiquettes des pages spéciales": "", + "Dimensions minimales": "", + "Taille maximale du fichier": "", + "5 Mo pour les images JPEG": "", + "1 Mo pour les images PNG": "" } \ No newline at end of file