plugin::byId : erreur

Bonjour, j’essaye d’exécuter ce bout de code dans un scénario et il plante sans aucun log. J’ai juste « erreur » qui apparait a la place de en cours. Le truc c’est que tout le monde à l’air de s’en servir sans soucis donc comprend pas :frowning:

// id du plugin
	$_plugin_Id = 'monplugin que je cherche';

	// charger le plugin 
	$_plugin = plugin::byId($_plugin_Id); <----cette ligne pante
	$scenario->setLog('plugin ('.$_plugin_Id.'):' . $_plugin); 

Bonjour,

  1. Il n’y a rien dans http.error?
  2. Pourquoi faire cela ? Juste pour ton setlog en dessous ça ne sert à rien, il suffit de passer le nom du log en string.

Bonjour,
Si le plugin n’est pas trouvé, une exception est lancée.

Essaie ce code :

try {
        $_plugin_Id = 'monplugin que je cherche';

	// charger le plugin 
	$_plugin = plugin::byId($_plugin_Id); <----cette ligne pante
	$scenario->setLog('plugin ('.$_plugin_Id.'):' . $_plugin); 
} catch (Exception $e) {
	$scenario->setLog(  var_export($e, true)); 
}

A+
Bernard

P-S : Attention , si le plugoin est trouvé , ta fonction setLog va essayer de placer dans le log un objet il vaudrait mieux faire cela:

if(is_object($_plugin ) {
 $scenario->setLog('plugin ('.$_plugin_Id.'):' . json_encode($_plugin)); 
} else {
 $scenario->setLog('plugin .$_plugin_Id . : 'absent, pas trouvé'); 
}
1 « J'aime »

La fonction que tu cites n’écrit pas dans le log du plugin mais dans le log du scénario en cours !

1 « J'aime »

Merci, j’étais au courant mais j’ai effectivement lu le code trop vite quand j’ai répondu étant sur smartphone à ce moment là

Bonjour à tous

il y a t’il un moyen de lister le byId de tous les plugins ?

Salut,

Tu as la fonction plugin::listPlugin($_activateOnly = false, $_orderByCategory = false, $_translate = true, $_nameOnly = false) qui te permet de récupérer un tableau de tous les plugins installés.

2 « J'aime »

:wave:

$plugins = plugin::listPlugin();
foreach ($plugins as $plugin) {
  $name = $plugin->getName();
  $id = $plugin->getId();
  $scenario->setLog($name . ' ' . $id);
}

Après en fonctio de ce que tu veux en faire, stocker dans un string ou array

1 « J'aime »

merci à vous 2

c’est pour faire une désactivation de tous les plugins pour ma VM de test

$plugins = plugin::listPlugin();
foreach ($plugins as $plugin) {
  $name = $plugin->getName();
  $id = $plugin->getId();
  $myPlugin = plugin::byId("$id");
  $myPlugin->setIsEnable(false);
  $scenario->setLog('Désactivation du plugin ' . $id);
}

Une dernière question, est il possible de remonter l’IP local de jeedom ?

Celles contenues dans index.php?v=d&p=administration#networktab :

$ipInterne = config::byKey('internalAddr','core') 
$ipExterne = config::byKey('externalAddr','core')
1 « J'aime »

parfait :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.