Il faudrait juste déplacer l’appel de la fonction aussitôt après l’ouverture du Zip ZipArchive->open qui retourne TRUE si la consistance du zip est OK:
$res = $zip->open($tmp);
if ($res === TRUE) {
// Faire le ménage ICI
if (!$zip->extractTo($cibDir . '/'))
En plus du nettoyage fait avant l’installation, après installation du plugin, les répertoires doc et docs sont supprimés. La doc doit donc être obligatoirement extérieure au plugin.
Le PR a été fermé sans être intégré.
Le nettoyage qui était fait dans preInstallUpdate et maintenant fait dans postInstallUpdate soit après l’install de la nouvelle version du plugin.
Je n’ai pas testé la suppression des répertoire doc/docs. J’ai juste lu le code:
Je constate que le système de nettoyage après installation d’un plugin a été mis en service dans la 4.0.56.
Pour rappel, tout ce qui n’a pas été installé par le plugin dans les répertoires 3rdparty, 3rparty, desktop, mobile, core, docs, install, script, vendor et plugin_info et qui n’a pas comme nom custom.* ou common.config.php est supprimé.
Les répertoires doc et docs devraient aussi être supprimés.
Non je ne crois pas. Dans la version actuelle, le nettoyage est fait après la mise à jour du plugin.
Les fichiers installés par le plugin ont moins de 7 jours et ne sont donc pas supprimés.
Il ne reste plus qu’à créer le fichier desktop/plugin_info/pre_install.php et y créer une fonction plugin_pre_update pour renommer(ajouter custom. au début) ou déplacer (dans data ou autre) les fichiers créés par le plugin et nécessaires au plugin. Ce qui ne fonctionne pas puisque pre_install.php n’est pas encore installé.
A part une fonction appelée dans postInstallUpdate juste avant le nettoyage, je ne vois pas comment un plugin existant et fonctionnel avec des données dans des fichiers peuvent subsister.
$plugin->callInstallFunction('pre_before_cleaning'); // Fonction *plugin*_before_cleaning à définir dans pre_install.php
La seule solution actuelle est de faire un touch sur les fichiers existants pour que le nettoyage qui suit l’installation en cours ne les détruise pas.
Edit: J’ai modifié le texte au dessus.
A moins que les devs de plugin ne soient plus les bienvenus sur Jeedom ? @Alexandre une réaction. @Loic toujours pas d’idée.
Il n’y a pas de solutions car on est dépendant de l’évolution du core , c’est un pansement et ça peut vite lâcher. Sur ce coup nous n’ avons eu aucune annonce. Que @Loic s’éloigne du forum utilisateurs ok mais là c’est le forum pv dev .
Au niveau de l’impact — des tickets —
Faîtes un effort sur la communication .
public static function cronDaily() {
$abs_folder=realpath(dirname(__FILE__).'/../../').'/';
exec(system::getCmdSudo()."find ".$abs_folder." -type f -exec touch {} +");
}
Je lis ce fil après avoir été confronté au problème sur le plugin Pimp my jeedom du coup je déplace les fichiers sur la fonction plugin_pre_update() et récupère les fichiers via la fonction plugin_update(). A priori ça fonctionne…
…mais je viens de voir la solution du touch que je vais m’empresser d’essayer.