Pour ceux qui on un problème de refresh du token (date dans le passé par exemple), j’ai rapidement fait un bout de code à coller dans un bloc « code » d’un scénario qui s’exécute toutes les 5 minutes.
$pluginId = "tesla";
//get "refreshToken" cron from tesla plugin
$cron = cron::byClassAndFunction($pluginId, "refreshToken");
if($cron != false) {
$scenario->setLog("Current cron infos: ". $cron->getClass() . ' / ' . $cron->getFunction() . ' / ' . $cron->getSchedule());
//get expireDate config value (return a string date like "22 Mar 2024 19h55")
$tokenExpireFromConfig = config::byKey("expireDate", $pluginId);
if($tokenExpireFromConfig != "") {
//convert string date to datetime
$tokenExpireDatetime = DateTime::createFromFormat("d M Y H\hi", $tokenExpireFromConfig);
//convert timestamp to Cron (-5 minutes)
$cronStrFromDate = cron::convertDateToCron($tokenExpireDatetime->getTimestamp()-(5*60));
//if calculated cron is different than the stored cron
if($cronStrFromDate != $cron->getSchedule()) {
$scenario->setLog("Update refreshToken cron from '".$cron->getSchedule()."' to '".$cronStrFromDate."'");
$cron->setSchedule($cronStrFromDate);
$result = $cron->save();
if($result) {
$scenario->setLog("Updated cron infos: ". $cron->getClass() . ' / ' . $cron->getFunction() . ' / ' . $cron->getSchedule());
}
else {
$scenario->setLog("Error during the save operation");
}
}
else {
$scenario->setLog("Cron already ok, nothing to do");
}
}
else {
$scenario->setLog("expireDate config value not found");
}
}
else {
$scenario->setLog("Cron not found");
}