Bonjour,
Afin d’avoir 2 décimales en retour de la fonction lastBetween
J’ai dupliqué la fonction d’origine lastBetween en MylastBetween en modifiant le retour de fonction
return round($historyStatistique[‹ last ›], 1); par return round($historyStatistique[‹ last ›], 2);
cela donne le code suivant :
public static function MylastBetween($_cmd_id, $_startDate, $_endDate) {
$cmd = cmd::byId(trim(str_replace(’#’, ‹ ›, $_cmd_id)));
if (!is_object($cmd) || $cmd->getIsHistorized() == 0) {
return ‹ ›;
}
$_startDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_startDate)));
$_endDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_endDate)));
$historyStatistique = $cmd->getStatistique($_startDate, $_endDate);
if(!$historyStatistique[‹ last ›]){
return ‹ ›;
}
return round($historyStatistique[‹ last ›], 2);
}
Cette fonction fonctionne correctement dans le fichier
core / class / scenarioExpression.class.php
mais la même dans le fichier user.function.class.php donne une erreur 500 a l’exécution !
les lignes provocant l’erreur sont :
$_startDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_startDate)));
$_endDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_endDate)));
je viens de faire l’essai erreur idem
Mais ma fonction marche correctement dans le fichier :
core / class / scenarioExpression.class.php
mais je dois à chaque nouvelle version de jeedom la recréer
ça marche
Merci beaucoup.
Ce qui est curieux c’est que ce code (copié/collé)
$_startDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_startDate)));
$_endDate = date(‹ Y-m-d H:i:s ›, strtotime(self::setTags($_endDate)));
issue de la fonction d’origine jeedom lastBetween fonctionne dans le fichier
core / class / scenarioExpression.class.php
et qu’il ne fonctionne pas dans le fichier user.function.class.php !
Va savoir ?
Bonne Journée et encore merci
C’est lié en fait à SetTags qui est une fonction définie dans core / class / scenarioExpression.class.php
Si vous enlever ce code, cela fonctionne.
Par exemple, cette ligne : $_startDate = date(‘Y-m-d H:i:s’, strtotime(self::setTags($_startDate)));
doit devenir: $_startDate = date(‘Y-m-d H:i:s’, strtotime($_startDate));
Pour avoir toujours le bénéfice de la commande setTags (la commande setTags permet d’utiliser n’importe quel type de paramètre (une commande info, un chaîne de caractère …))