[framework SC] Bug sur variable par defaut?

Ce bug est présent sur mon jeedom v4 principal (ex v3) mais pas sur mon slave qui est en v4 natif

@flopp26
Dans la table dataStore, avez-vous des lignes bizarres.
Sur la page http://jeedom/index.php?v=d&p=database tapez SELECT * from dataStore

Le code de la fonction variable dans core/class/scenarioExpression.class.php:

	public static function variable($_name, $_default = '') {
		$_name = trim(trim(trim($_name), '"'));
		$dataStore = dataStore::byTypeLinkIdKey('scenario', -1, trim($_name));
		if (is_object($dataStore)) {
			$value = $dataStore->getValue($_default);
			return $value;
		}
		return $_default;
	}

Il vous reste à mettre des messages à différents endroits dans la fonction pour voir les valeurs.

log::add('scenario','error', "Name: $_name Defaut: $_default");

Le code de byTypeLinkIdKey est dans core/class/dataStore.class.php
Il n’y a rien dans le code qui ne prend la valeur par defaut qu’à partir du 2ème caractère.

j’ai fais un SELECT CONCAT(‹ DEBUG ›,value,‹ DEBUG ›) from dataStore pour être sur qu’il n’y a pas d’espace dans la db et c’est tout bon.

Pour l’équivalent de la fonction sur un tag c’est bon ça fonctionne correctement.

Le testeur d’expression utilise cette fonction aussi ? car comme elle est dans scenarioExpression ?
je vais regarder un peu

Sinon la fonction qui appelle variable() est execute() dans le même fichier.

@jpty , @Jeandhom , @dJuL

Le retour de $_default est modifié par le framework sc que j’utilise

/**
		 * Framework SC
		 */
		$_default = ($_default) ? substr($_default, 1) : ''; //fix bug space added
		if ($_scenario && class_exists('sc', false) && $_scenario->getFramework_sc()) {
			return $_scenario->getFramework_sc()->getVar($_name, $_default);
		}
		/**
		 * Fin Framework sc
		 */

Merci pour ton aide au debug @jpty
@dJuL est ce que c’est un comportement normal ? car j’utlise ton framework pour certains morceaux

Mes excuses, j’avais oublié l’utilisation de cette surcouche.

Vous ne nous aviez pas dit que vous utilisiez le framework SC
@Jeandhom vous l’utilisez aussi ?

Oui, je confirme l’utilisation du framework SC de @dJuL.

Oui j’avais complétement oublié, j’avais désactivé tous mes plugins non officiels, mais j’ai zappé le framework, :innocent:

Du coup il faut changer les tags des 2 discussions puisque le core de Jeedom n’y est pour rien. :thinking:

l’autre discussion je peux rien changé, j’avais ouvert un ticket
je ne trouve pas de tag pour le framework…

$_default = ltrim($_default); doit faire mieux pour corriger un espace en trop au début.

Merci jpty, j’avais mis un trim tout court car je veux pas d’espace ni à droite ni à gauche, mais cette modif disparaîtra à la prochaine maj de Jeedom (je relance l’installation de sc). J’aimerais connaître l’avis du dev du framework. En tout cas merci, j’ai pu finir mes scénarios en suspens :wink:

Il attend un heureux évènement, nous allons attendre tranquillement son retour.
Peut être décocher la case solution pour que le sujet ne se ferme pas.

Je vais regardé,
A l’époque cela corrigeait un bug que j’avais constaté dans le core de Jeedom, mais vrai que c’est vieux, ça doit dater de la version 2 de Jeedom.
Depuis il a peut être et surement été corrigé, c’est vrai que j’utilise pas la valeur par défaut dans mes scénarios donc je n’ai jamais rechecké…
Je vais regardé ça, et le virer si ce n’est plus nécessaire.

Curieux je n’arrive pas à reproduire le pb sans avoir rien modifié dans le core… (Framework installé)

image

Je vais investigué un peu plus…

edit:

si je vire la ligne du framework, j’ai bien encore le bug (espace indésirable ajouté) :

image

edit2:

Ok j’ai compris, ça viens de l’espace après la virgule, pas de soucis avec
variable(plop,10)
mais soucis avec
variable(plop, 10)
et comme j’ai l’habitude de toujours mettre un espace après une virgule, cela explique pourquoi je retirais systématiquement le 1er caractère…
Je vais corriger ça.

Ok c’est corrigé :

2 « J'aime »

Merci pour la correction. :slightly_smiling_face:

@dJuL merci pour la correction, du coup tu a viré la ligne ou remplacé par un ltrim, trim, perso un ltrim ca me va, j’ai aussi cette habitue de mettre un espace après une virgule…

Et si j’ai bien compris, toutes mes félicitations, ou à venir :wink:

J’ai viré la ligne pour garder le fonctionnement normal de Jeedom.
Le « pb » du left trim c’est qu’il n’est plus possible d’avoir une valeur qui commence par un ou plusieurs espaces (même si le cas de figure doit être rare je te l’accorde).
C’est pour cela qu’avant que je supprimais le 1er caractère sans faire de trim.
J’ai faillis modifier la ligne pour quelle supprime l’espace que si il n’y en a qu’un seul de présent au début de la valeur suivit d’au moins un autre caractère, puis je me suis raviser en me disant que c’était lourd pour pas grand chose et que autant rester comme est Jeedom par défaut…

Merci, encore à venir, mais imminent : nuit passer à l’hôpital, travail en cours mais très très lent…

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