Aller au contenu
Support de Zwii et Yocto

EBS01

Membres
  • Compteur de contenus

    47
  • Inscription

  • Dernière visite

Tout ce qui a été posté par EBS01

  1. Bonjour, Une réponse rapide, jusqu'à présent tout mise à jour de Zwii écrasait les plugins installés. Il était donc nécessaire de les réinstaller après chaque mise à jour. A partir de la 9.1, le gestionnaire de plugins tentera de réinstaller automatiquement les plugins présents lors de la mise à jour de Zwii. Jérôme
  2. Bonjour, depuis peu de temps, @cybertaf m'a ouvert une branche de développement pour que je puisse créer un gestionnaire de plugins dans Zwii. Je vous détaille ci-dessous les points qui sont déjà développés et vous présente les écrans. Une fois connecté à la partie administration, un nouvel icône est présent pour atteindre ce gestionnaire. Cela affiche un écran listant les plugins déployés sur votre version de Zwii. Le bouton "+" permet d'afficher la liste des plugins disponibles dans le partage et qui ne sont pas déjà déployés sur votre version. Alors sur cette écran, la partie "récupération de la liste des plugins sur le partage" n'est pas codée car je ne sais pas encore comment sont stockés les plugins qui sont uploadés (je verrais ça avec l'équipe Zwii). Sur la liste l'icône (choisi un peu arbitrairement pour le moment) permettra de savoir s'il s'agit d'un plugin "officiel" ou d'un plugin non validé par l'équipe Zwii. Le bouton à droite permet de récupérer le plugin. Reste à coder sur cet écran : Récupération de la listes des plugins du partage avec toutes les informations nécessaires Ajout de la possibilité d'afficher en "survolant" une ligne de la liste la totalité des informations du plugin Ajout d'un bouton permettant d'uploader directement un plugin (sous format archive) sans passer par le partage En cliquant sur le bouton d'upload : Zwii effectue les actions suivantes (à chaque étape, si une erreur se produit, le traitement est arrêté) : Récupération de l'archive du plugin Décompression de l'archive dans le répertoire des plugins Lancement des contrôles implémentés dans le plugin Sauvegarde de la "base" (fichier json) ainsi que tous les fichiers qui seront modifiés par le plugin Installation du plugin Reste à coder sur cet écran : Télécharger le plugin depuis le répertoire partagé Pour le moment, je considère que le plugin est une archive au format ".tar.gz"; prévoir le cas uniquement ".tar" ou ".zip" Voir s'il est possible de contrôler que le code php contenu dans le plugin est correct Ce point est dorénavant traité (la syntaxe de tous les fichiers php contenus dans le plugin est contrôlée avant chaque action d'installation, de suppression ou d'activation du plugin) Une fois le plugin installé, retour à la liste des plugins déployés sur vote site Comme cela s'est bien déroulé, son statut est à "Activé". Le bouton permet de le désactiver en faisant l'étape inverse : Lancement des contrôles implémentés dans le plugin Sauvegarde de la "base" (fichier json) et des fichiers qui seront modifiés par la désinstallation du plugin Désinstallation du plugin et à la fin Le plugin est désactivé (mais toujours présent). Le bouton vert permet de le réactiver (refaire les étapes du déploiement mais sans ré-uploader l'archive, ni la décompresser). Et le bouton rouge lui, permet de supprimer physiquement le plugin de votre site. Voilà où j'en suis aujourd’hui; en plus des points que j'ai déjà cités, il reste à faire : Détection qu'un plugin doit être mis à jour et proposer la mise à jour Lors de la mise à jour générale de Zwii, réactiver un à un les plugins qui étaient présents avant la mise à jour (à l'issue, chaque plugin aura le statut "Activé" si OK, "Désactivé" s'il est opérationnel mais qu'il n'était déjà pas activé avant la mise à jour, "Erreur" si le plugin n'est plus compatible avec la nouvelle version de Zwii) Au niveau de l'archive du plugin, elle est constituée de cette façon Le répertoire "deploy" contient un fichier "deploy.php" contenant au moins les 2 fonctions suivantes : function checkBeforeDeploy(&$app, &$success, &$errorMsg) function deploy(&$app, &$success, &$errorMsg) Sans rentrer trop dans le détail, $app correspond à la classe appelante (permet ainsi d'avoir accès à tous les éléments de la base par exemple), $success (true ou false en sortie) et $errorMsg le message d'erreur à afficher si nécessaire. A l'identique, le répertoire "undeploy" contient un fichier "undeploy.php" contenant au moins les 2 fonctions suivantes : function checkBeforeUndeploy(&$app, &$success, &$errorMsg) function undeploy(&$app, &$success, &$errorMsg) A la racine le fichier "MANIFEST.json" permet de fournir toutes les informations du plugin J'espère que cela correspond à vos attentes et que je suis parti dans la bonne direction N'hésitez pas à me remonter vos remarques & idées. Jérôme PS : je fais d'autres modifications (légères) dans le code mais sans lien avec le gestionnaire de plugin.
  3. EBS01

    Gestion des plugins

    Excuses moi @PeterRabbit, je suis un peu overbooké en ce moment et je n'ai pas pris le temps de te répondre. Oui il s'agit bien d'expressions régulières. Perso, pour vérifier la bonne syntaxe des expressions régulières, j'utilise le site regular expressions 101 Jérôme
  4. EBS01

    Gestion des plugins

    Pas vraiment. De quelles subtilités parles tu ? J'utilise souvent php.net pour vérifier le comportement de telle ou telle fonction...et bien sûr Google quand je bloque sur un point.
  5. EBS01

    Gestion des plugins

    en PJ les dernières versions des 4 plugins sur lesquels j'ai travaillés. Ils sont compatibles avec la dernière version de la branche sur GitHub. common_email.zip group_adherent.zip label_css.zip unitegallery.zip
  6. EBS01

    Gestion des plugins

    Désolé pour le retard, je ne comprends pas bien ta demande; c'est par rapport à l'hébergement chez 1&1 ?
  7. EBS01

    Gestion des plugins

    Ok j'ai vu qu'on est limité à 10 téléchargements / jour; avec la fonction `file_get_contents` je ne pouvais voir cette info. --> dans la dernière version commitée sur la branche, j'ai utilisé la méthode avec `curl` (si activée sur l'hébergement) pour récupérer l'archive et en cas de quota dépassé, on a bien le message @Rémi possibilité au moins d'ajouter le format de l'archive dans le json stp ? 🙏
  8. EBS01

    Gestion des plugins

    merci Rémi pour le lien, l'archive en question fait 404 ko ça me parait une taille plus que raisonnable et qui ne devrait pas poser de problème de time-out. D'après ce que j'ai lu sur le site 1&1, leur config mini autorise des upload de 64Mo avec un temps max d'exécution du script de 60s. @PeterRabbit l'erreur apparait au bout de combien de temps ?
  9. EBS01

    Gestion des plugins

    Donc un problème chez eux (le serveur a mis trop de temps à répondre lors de l'upload de l'archive sur ton hébergement) et pas lié au plugin. La gestion des plugins a déjà fonctionné chez cet hébergeur ?
  10. EBS01

    Gestion des plugins

    @PeterRabbit , tu pourrais me donner le message de la console du navigateur quand tu as l'erreur chez 1&1 ?
  11. EBS01

    Gestion des plugins

    @Rémi , j'ai pu télécharger les archives mais depuis 2-3 minutes j'ai à nouveau des accès interdit ( failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden ); tu as modifier de nouveau les accès ? Sinon, est-ce qu'il serait possible d'avoir dans le JSON le type d'archive (zip, tar ou tar.gz) ? Après il y a d'autres infos qui pourraient être utiles mais pas primordiales comme par exemple les versions Zwii compatibles avec le plugin.
  12. EBS01

    Gestion des plugins

    Merci Père Noël...euh Rémi 😂
  13. EBS01

    Gestion des plugins

    @PeterRabbit en PJ, le plugin pour installer Unite Gallery (il fait exactement ce que tu m'as indiqué et rien de plus : modif de core.php plus ajout des fichiers dans core/vendor) Précédemment tu parlais d'une fonction pour supprimer un répertoire complet (avec ses descendants); elle existe déjà dans la version de Zwii que j'ai mis sur ce fil; exemple d'utilisation helper::rm_recursive("core/vendor/unitegallery"); dans la version livrée, il y a néanmoins un petit bug car tous les descendants sont bien supprimés mais le répertoire "père" ("core/vendor/unitegallery" dans l'exemple) ne l'ai pas. Pour corriger cela, ajouter la ligne "rmdir($object);" dans la fonction rm_recursive du core/core.php /** * Supprime un répertoire avec tous ses descendants ou un fichier * @param string $object Répertoire racine ou fichier à supprimer */ public static function rm_recursive($object) { $object = trim($object); if(strlen($object) > 1) { if (is_dir($object)) { // suppression du contenu du répertoire $it = new RecursiveDirectoryIterator($object, FilesystemIterator::SKIP_DOTS); $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach($it as $file) { if ($file->isDir()) rmdir($file->getPathname()); else unlink($file->getPathname()); } // Suppression du répertoire rmdir($object); // LIGNE A AJOUTER !!!! } else { if(file_exists($object)) unlink($object); } } } unitegallery.zip
  14. EBS01

    Gestion des plugins

    @Rémi Merci. Est-il possible d'ajouter des informations supplémentaires dans ce flux ? J'ai mis en place la liste des plugins venant du forum (avec les infos actuellement disponibles) mais il est impossible de télécharger l'archive puisqu'il faut être connecté à un compte du forum pour pouvoir le faire 😥
  15. EBS01

    Gestion des plugins

    @PeterRabbit Tu as un plugin existant pour que je puisse le refaire pour la version 9 ? C'est juste que dans le nom du répertoire contenant le plugin je mets le n° de version et que je n'ai pas les nom avec des points 😉 mais ce n'est pas le plus important . C'est pour moi ? A quel endroit ? Dans ma version, j'ai remplacé les icônes zwii par ceux de fontawesome et j'en ai peut-être oublié un...dans ce cas il n'est pas affiché.
  16. EBS01

    Gestion des plugins

    @PeterRabbit je te transmets une archives qui contient le plugin Label_css au format 9.0. Est-ce que cela te convient ? Je pense que je vais intégrer (un peu plus tard) à Zwii certaines fonctions que les scripts deploy.php et undeploy.php du plugin pourront appeler; cela évitera de réécrire à chaque fois une partir du code (je pense notamment à la boucle qui effectue les remplacements spécifiés dans le tableau $updateScript) Jérôme label_css-300.zip
  17. EBS01

    Gestion des plugins

    Bonjour, Pas eu trop de dispo ces derniers jours ; j'étudierai plus en détail ton message (et surtout les réponses à t'apporter) durant le week-end. Jérôme
  18. EBS01

    Gestion des plugins

    oui je viens de le recevoir..je vais le lire maintenant
  19. EBS01

    Gestion des plugins

    J'ai pris en compte le le problème que tu as évoqué (fonction exec non disponible sur l'hébergement); dans ce cas il ne sera pas possible de contrôler la syntaxe des scripts PHP contenu dans le plugin ajouté. Un message sera afficher pour ce risque dans la fenêtre d'ajout des plugins et également en fin de déploiement Jérôme
  20. EBS01

    Gestion des plugins

    @PeterRabbit Tu es certains de me l'avoir envoyé ? Je n'ai rien dans la BAL.
  21. EBS01

    Gestion des plugins

    @PeterRabbit, oui en MP.
  22. EBS01

    Gestion des plugins

    Tu n'as pas à être désolé ? Je regarderais ce soir ou demain dans la journée. Tu as modifié quelques choses dans les plugins ? Tu test en local ou chez un hébergeur ? Dans ton warning je constate que la fonction "exec" a été désactivé (pas le cas chez mon hébergeur). Il faut donc que je prévois cela.
  23. J'ai déjà eu des erreurs sur l'étape 0 lors de mes tests et c'était souvent car un fichier était utilisé par un autre processus.
  24. En effet, en cas d'erreur lors de la mise à jour, les messages d'erreur ne sont pas très explicites ? Tu as regardé dans la console du navigateur (touche F12 par exemple pour Firefox), il devrait y avoir un peu plus de détail sur l'erreur. Jérôme
  25. EBS01

    Gestion des plugins

    Je ne vais pas me lancer sur le sujet.... Donc oui tu as raison.
×