[Expression] ! pour les connaisseurs!

Oui il y a un explode de l’expression par la virgule pour séparer les arguments dans setTags

Oui j’ai vue, je pense qu’on peux améliorer çà aussi, genre vérifier qu’il y a la fonction en question devant la parenthèse. Mais step by step

Ne pas modifier les chaines de caractères. Pas de remplacement et/ou pas d’explode…

Si c’était aussi simple. Tu fait comment pour récupérer variable(mavariableinexistante,0) ? Ce n’est pas là par hasard !

je ne sais pas pourquoi tu dis ça mais voici la page santé à tout hasard

Tu est bien en php 7.3
Faudrait essayer symfony v5 sur un php5

Juste pour tester:

Ne pas faire çà sur une prod !!

Modifs:

utils.inc.php
function evaluate()
commenter la ligne du ireplace

$string = $_string;
//$string = str_ireplace(array(' et ', ' and ', ' ou ', ' or ', ' xor '), array(' && ', ' && ', ' || ', ' || ', ' ^ '), $_string);

=> donc plus de replace, seuls les && || sont supportés (php pur)

scenarioExpression.class.php:
function setTags()
Dans if (is_array($matches)) {

else {
    $arguments = explode(',', $match[2]);
else {
    if ($match[2][0] == $match[2][strlen($match[2]) - 1] && ($match[2][0] == '"' || $match[2][0] == "'")) {
        $arguments = array($match[2]);
    } else {
        $arguments = explode(',', $match[2]);
    }

=> çà règle le strlen('to,to')

La question étant, çà pète quoi de faire çà ??

Faudrait plein de tests et pouvoir les balancer à la volée (dans un scenario avec plein de if, ou dans un bloc code)

C’est parti

image

N’ayant pas autre chose que && || ça va tester le reste

C’est pas sans effet


A voir si c’est pas une reliquat pendant la durée de la modif

Ouais c’est mort.

On aura essayé au moins lol.

Non non…
J’ai purgé les logs et pour l’instant ça semble ok.

Comme ça tourne pendant l’édition du code, ça génère des merdouilles temporairement et avec du délai

Ça ne devrait pas faire 5 ? :thinking:

C’est exactement ce qu’il aurait fallu depuis le début. Mais il doit sûrement y avoir une possibilité de parser les scénarios à la recherche de espace et espace
Idem pour tout ce qui est dans le str_replace.
Et signaler aux gens pour vérification.

C’est le cybermonday … Avec les quotes ça fait bien 7… Il y a les quotes automatiques encore chez moi

En php, ça fait 5.
Dans la version non modifiée, strlen('toto') donne 4.
C’est où/quoi les quotes auto ?

tout en bas de Réglages => Système => configuration => Equipement

1 « J'aime »

Çela brainstorm dur :+1:

Pour le point évoqué sur ce que cela pourrait casser en passant en syntaxe strict, une phase intermédiaire (version stable actuelle) qui remonte a l’utilisateur les scénarios qui ne respecte pas les futures évolutions et un renvoi vers les règles a utiliser ne permettrait il pas de gérer la transition.
Le risque c’est que plein d’utilisateurs ne vont pas traiter, il faudrait que la version intégrant le strict check la présence de ET OU …
C’est un beau casse tête.
Courage

C’est bien les quotes auto qui jouent, si je les désactive et que je conserve les modifs

image

So far, so good pour l’instant

On retrouve l’esprit jeedom, des gens doués qui participent partagent et au final c’est le produit qui sortira grandi.

Continuez. Perso j’ai pas les compétences. Mais c’est encourageant.

2 « J'aime »

Content d’avoir un autre avis identique au mien ! Ça me semble aller de père avec les changements évoqués ici :wink: