Différents points concernant le code

Bonjour,

Il y a quelques jours je me suis permis de faire un PR avec des corrections de fautes de français dans le core ainsi que des reformulations pour remplacer des textes compliqués à comprendre. Bref, j’ai fait un tour non exhaustif (et de loin !) du code. Durant ce périple, je suis tombé sur des choses pour lesquelles je me suis posé la question : « je fais un PR pour ça ou c’est voulu ? ». Je ne veux pas casser quelque chose et générer des effets de bord involontaires.

Attention, je pinaille !

1. Autorisation, droit et droits

En fonction des cas, on peut lire les messages d’exception suivants :

  1. Vous n’avez pas les droits de faire cette action
  2. Vous n’êtes pas autorisé à …
  3. Vous n’avez pas le droit …

Pour le 1. et le 3. :on ne dit pas « avoir les droits de … » mais « avoir le droit de … » ou « avoir les droits pour … ».
Pour le 2. : je n’en suis pas un fan, mais si l’utilisateur est une utilisatrice, elle aimerait peut-être lire « Vous n’êtes pas autorisée à … ». Peut-être faudrait-il utiliser la forme « autorisé(e) »

Quelle distinction est faite entre « avoir le droit de … » « avoir les droits pour … » et « être autorisé(e) » ?

2. Fonction de traduction utilisée

Dans tous les fichiers .php du répertoire desktop/php/ au début on trouve ce code :

<?php
if (!isConnect('admin')) {
	throw new Exception('{{401 - Accès non autorisé}}');
}

Sauf pour desktop/php/reboot.php et desktop/php/shutdown.php ou on a :

<?php
if (!isConnect('admin')) {
	throw new Exception(__('401 - Accès non autorisé', __FILE__));
}

Quelle est la fonction de traduction à utiliser ?

3. Jeedom ou config::byKey('product_name')

Il est rare de trouver le nom « Jeedom » écrit en dur, une référence est faite sur config::byKey('product_name') comma dans desktop/php/administration.php par exemple. Or dans desktop/php/interact.php ligne 233, on peut voir que « Jeedom » est écrit en dur :

<label class="col-xs-2 control-label">{{Autoriser Jeedom à supprimer les demandes syntaxiquement incorrectes}}</label>

4. Traductions avec un terme remplacé par une variable

Exemple desktop/php/administration.php ligne 58 :

<label class="col-xs-4 control-label">{{Nom de votre}} <?php echo $productName; ?>

Comme on le sait tous, l’ordre des mots n’est pas forcément le même dans toutes les langues et si déjà on s’est évertué à prévoir des traductions autant tenir compte de cet état de fait. Ne faudrait-il pas utiliser une syntaxe du style :

<label class="col-xs-4 control-label"><?php echo sprintf(__("Nom de votre %s", __FILE__), $productName); ?>

Et ce afin que les traductions mettre ce « %s » là où il doit être ? J’ai même vu des traductions en 2 fois (je n’ai pas d’exemple) du type (exemple faut où il manque les espaces, mais c’est pour la forme) :

<label class="col-xs-4 control-label">{{Nom de votre}} <?php echo $productName; ?> {{préféré}}

5. Version php vérifiée : < 5.5 !!

core/api/proApi.php lignes 152 à 159

version php < 5.5 ? C’est pourtant la version alpha de Jeedom qui requière php 7.4+

6. Code fonctionnel ?

Pour ce point je ne suis pas trop sûr de moi, je suis tombé sur ces bouts de code par hasard. J’ai hésité à faire une issue sur le repo github, mais j’en parle préférablement ici.
core/api/jeeApi.php lignes 908 à 924

core/api/proApi.php lignes 563 à 584

Je pense que dans ces 2 cas, il faudrait un switch/case sur $params['state'] avec l’exception dans default parce qu’avec ce code l’exception est toujours levée. D’ailleurs si personne ne s’en est plaint, c’est que cet appel API n’est pas vraiment utilisé… ou alors j’ai mal compris le code.

Voilà !

A+
Michel

1 « J'aime »

Hello,

Je vais essayé de répondre a certaines questions, car certains points ont révélés des bugs.

Je sais pas :rofl:.
sur les accès fichiers on a tendance a dire « des droits », ca vient peut-être de là.
Mon terme préféré pour uniformiser serai : Vous n’êtes pas autorisé à effectuer cette action

L’utilisation de {{ }} est plus souvent réservé pour le html/js, mais il existe des cas ou cela peut-être utilisé en php :

en revanche, je vient de tester et que ce soit en utilisant __() ou {{ }}, la trad ne semble pas passer sur un throw new Exception du début d’un fichier. (ex: log.php)

image

« Jeedom » étant une marque blanche, je suppose que c’est un oublie.

if (version_compare(phpversion(), '5.5', '<')) {
Comparer la version php a la version de Jeedom… Sans doute un erreur, je pense que ce advice est censé être dans la partie jeedom::version()

Non car a chaque appel a makeSuccess le code s’arrête :

Salut,

Merci pour ton retour.

  1. Je vais proposer quelque chose, les commentaires et remarques se feront dans le PR.

  2. Je laisse ça à un spécialiste si un spécialiste juge que ce problème vaut le coup d’être corrigé. Je fais une issue, on verra bien.

  3. Je vais faire un PR.

  4. Je vais faire une issue.

  5. Je vais faire une issue.

  6. Merci d’avoir regardé de plus près. Rien à faire pour ce point, c’est moi qui n’ai pas regardé assez loin.

A+
Michel