Résoudre l’erreur « Class object not found » dans un plugin Jeedom
Depuis la V4.x de Jeedom, certaines structures logicielles relatives aux plugins ont changé. Cela induit que ces plugins doivent évoluer pour devenir compatibles avec les dernières versions de Jeedom.
Malheureusement certains plugins ne sont plus maintenus par leur créateur. Ils n’ont donc pas évolué pour le version 4. Dans ce cas, une erreur classique est l’affichage du message d’erreur suivant à l’ouverture de l’interface du plugin : Class ‘object’ not found.
C’est une erreur assez facile à corriger dans le code des plugins. Cela ne signifie pas que l’astuce ci-dessous fonctionne à 100% et que la compatibilité sera assurée à tous les coups, mais le simple correctif ci-dessous a fonctionné pour les plugins qui m’intéressaient (plugins ftpd, plugin FreeCrystal, plugin JPI)
Pour corriger ce problème il sera nécessaire de réaliser une petite modification dans le code de ces plugins. Voici les étapes pour réaliser cette action. Certaines étapes ne sont pas décrites en détail. Si vous ne savez pas comment faire, il est peut être plus sage de ne pas tenter la manipulation 😉 …
- Se connecter sur votre machine hébergeant jeedom
- Ouvrir un terminal en local ou via liaison ssh
- Se logger en root
su root
- Aller dans le répertoire du plugin défaillant.
Exemple pour le plugin Freecrystal :
cd /var/www/html/plugins/freeCrystal/
- Rechercher dans l’ensemble des fichiers la classe en défaut
grep -R object:: *
Cette fonction retourne une liste des fichiers à modifier
- Réaliser une copie de sauvegarde des fichiers qui seront modifiés
cp desktop/php/freeCrystal.php desktop/php/freeCrystal.php.old
- Editer le fichier à modifier
nano desktop/php/freeCrystal.php
- Avec les fonctions de l’éditeur rechercher la ligne à modifier
Touche : CTRL+W pour réaliser la recherche
Rechercherobject::
- Remplacer
object::
parjeeObject::
Ligne avant correction :foreach (object::all() as $object) {
Ligne après correction :foreach (jeeObject::all() as $object) {
- Sauver le fichier modifié
Touche CTRL+O puis ENTREE
Vous pouvez alors tenter de recharger le plugin dans l’interface de Jeedom, le problème a disparu.
A priori, ce n’est pas jeeobject mais jeeObject.
Mais merci pour la piste