J’ai un plugin avec le code suivant qui doit être exécuté après sa mise à jour:
function defauts_update() {
log::add("defauts","info","Mise à jours de commandes pour le pugin defauts");
$cmds = cmd::byLogicalId("defaut");
foreach ($cmds as $cmd) {
if ($cmd->getEqType() == "defauts") {
log::add("defauts","info"," Mise à jour de la commande " . $cmd->getId());
$cmd->setIsVisible(false);
$cmd->save();
}
}
}
Lors des mises à jour, j’ai l’erreur
[MySQL] Error code : 22007 (1366). Incorrect integer value: '' for column `jeedom`.`cmd`.`isVisible` at row 1 : UPDATE `cmd` SET `id` = :id, `logicalId` = :logicalId, `generic_type` = :generic_type, `eqType` = :eqType, `name` = :name, `order` = :order, `type` = :type, `subType` = :subType, `eqLogic_id` = :eqLogic_id, `isHistorized` = :isHistorized, `unite` = :unite, `configuration` = :configuration, `template` = :template, `display` = :display, `value` = :value, `isVisible` = :isVisible, `alert` = :alert WHERE id = :id
J’ai effectué divers tests et je suis arrivé aux constatations suivantes:
- Pas d’erreur si la commande n’est pas visible avant l’update (pas de mise à jour nécessaire).
- Pas d’erreur si je mets
setIsVisible(true)
et que la commande est visible avant l’update. - Pas d’erreur si je mets
setIsVisible(true)
et que la commande n’est pas visible avant l’update.
Le seul cas qui ne fonctionne pas est donc celui où la commande est visible avant l’update et ne doit plus l’être après. Pas de chance, c’est justement le celui qu’il me faut.
J’utilise le core 4.1.22
J’en peux rendre la commande visible ou invisible via l’interface web de mon plugin sans problème aussi bien avant qu’après l’update.