[non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Concernant la deuxième j'ai testé la variable $params qui est vide. Mais je ne sais pas si c'est ça qu'il faut tester
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Code : Tout sélectionner
private function _getUserParams() {
return msSQL::sql2tabKey("SELECT dt.name,od.value
FROM data_types AS dt left join objets_data AS od
ON od.typeID=dt.id AND od.toID='".$this->_userID."' AND od.outdated='' AND od.deleted=''
WHERE dt.groupe='user'", 'name', 'value');
}
Code : Tout sélectionner
private function _getUserParams() {
return msSQL::sql2tabKey("SELECT dt.name,od.value
FROM data_types AS dt left join objets_data AS od
ON od.typeID=dt.id AND od.toID='".$this->_userID."' AND od.outdated='' AND od.deleted=''
WHERE dt.groupe='admin'", 'name', 'value');
}
Sinon concernant cette ligne présente dans tous les crons
Code : Tout sélectionner
$homepath=getcwd().'/';
qui est hasardeuse quand on l'exécute en cli. Est ce que ça vaut le coup que je pousse une modif
Code : Tout sélectionner
$homepath=getenv("MEDSHAKEEHRPATH").'/';
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Arf... a vu de nez il me semble que le problème vient du fait que la fonctionnalité n'ai pas suivis les évolutions de Medshake (mais je peut pas testé j'utilise pas clicRdv donc j'en sait trop rien...).
Peut être incompatibilité avec des évolutions de l'API click to call ou les paramètres de configuration qui sont pas bien chargés. Un peut plus bas dans la méthode msClicRDV:syncEvents()
y a un curl qui est effectué (ligne 329), faudrait voire ce qui est retourné.
Tu demandait comment tu peut voire le contenus de variables avec php perso j'utilise Xdebug qui fait plein de truc y compris dumper le contenus de variable avec la fonction var_dump($la_variable)
. Pour l'activer installe le paquet php-xdebug
et redémare apache. Evite de le faire sur la prod pour des raison de sécurité. Si tu peut aussi avoir un dump de contenus de variable sans utiliser Xdebug en faisait :
Code : Tout sélectionner
echo '<pre>';
print_r($ta_variable);
echo '</pre>';
mais c'est moins détaillé.
Attention selon le moment ou tu fait ton dump le résultat peut sortir avant que la page soit rendus (et être masqué par la barre de menus de Medshake qu'il faut alors maqué pour voire la variable ou alors afficher directement le source html). Tu peut aussi stocker le contenus de la variable dont tu veux obtenir le contenus dans une globale la dumper à la fin du script public_html/index.php
. Attention on peut pas déboguer les script ajax avec cette technique (d'ailleur on les fait planter car le contenus json renvoyé n'est plus correcte). Dans ce cas j'ouvre directement la requette via le débogeur Firefox en allant dans dans l’onglet Réseau et en faisant un clique doit Ouvrir dans un nouvel onblet sur la ligne de la requette. Ou en peut encore dumper le contenus sérialisé d'une variable dans une fichier avec un truc du genre :
Code : Tout sélectionner
file_put_contents('/tmp/mon_dump', serialize($ma_variable));
Pour le script cron j'ai déjà rencontré le php pour rappelsSMS-allMySMS.php
et poussé un corectif mais comme je suis un peut con j'ai pas pensé à corriger les autre script...
En gros j'ai fait ça :
Code : Tout sélectionner
if (!empty($homepath=getenv("MEDSHAKEEHRPATH"))) $homepath=getenv("MEDSHAKEEHRPATH");
else $homepath=preg_replace("#cron$#", '', __DIR__);
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Super merci, je vais tenter d'installer ça. Bon après la fonctionnalité a quand même globalement bien suivit l'évolution, vu que la synchro dans les paramètres utilisateurs marche nickel. J'espère que je vais trouver avec l'outil de débug.
Pour le fix j'avais regardé les fichiers aux dessus et en dessous mais pas les deux derniers, donc je n'avais pas vu. (Comme la cli cet été d'ailleurs que j'ai trouvé récemment, merci pour la fonction )
Je prépare les autres fichiers du coup comme ça ça sera fait.
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Bonjour à tous, j'ai enfin eu le temps de tester tout ça.
Concernant php-debug, je ne suis pas trop sûr de son utilisation. En rajoutant diverses lignes dans le php.ini et le var dump dans le msClicrdv.php en faisant suite aux variables rien n’apparaît. Quand je le place à la fin du fichier index.php j'obtiens deux valeurs null (j'ai testé la variable params (304) et la variable res (ligne 329)) mais j'imagine que ce n'est pas la bonne méthode pour dumper une variable sur une ligne spécifique. J'ai pu le tester dans une vm connectée à l'ide codium (vu que l’essentiel des tutos que je trouve l'utilisent comme ça), et là l'exécution pas à pas bloquait au niveau de la fonction private function _getUserParams() quand le dt.groupe était égal à user et ne bloquait plus quand c'était remplacé par admin sans pour autant mieux synchroniser le calendrier. Mais je me suis rendu compte aussi que je pouvais tester si les requêtes partaient en appuyant sur le bouton de synchro. Bilan, le bouton marche, des requêtes partent : https://msehr.local/agenda/3/ajax/getEvents/?start=... en GET https://msehr.local/agenda/3/ajax/synchronizeEvents/ et https://msehr.local/ajax/getPatientsOfTheDay/ en POST. Le json du synchronizeEvents renvoie : "l'opération n'a pas pu être effectuée" qui correspond à ce code :
Code : Tout sélectionner
$clicrdv=new msClicRDV();
$clicrdv->setUserID($match['params']['userID']);
$ret=$clicrdv->syncEvents();
if ($ret===false) {
die(json_encode(array("status"=>"l'opération n'a pas pu être effectuée")));
} elseif ($ret!==true) {
die(json_encode(array("status"=>$ret)));
}
ret qui dans le msClicrdv est utilisée dans les fonctions getRelatedPatients getLocalPatients
Code : Tout sélectionner
$ret[0]=msSQL::sql2tabKey("SELECT od.toID, od.value
FROM objets_data AS od left join data_types AS dt
ON od.typeID=dt.id AND od.outdated='' AND od.deleted=''
WHERE dt.name='clicRdvPatientId'", 'toID', 'value');
clicRdvPatientId n'existe plus dans la bdd actuelle, en 2018 c'était foutue ainsi :
Code : Tout sélectionner
(513, 'admin', 'clicRdvPatientId', 'ID patient', 'ID patient', 'ID patient', '', '', 'text', '', 'base', 26, 1, '2018-01-01 00:00:00', 3600, 1),
Je ne sais pas si c'est à dessein ou pas, je vais essayer de tester ça, je vous tiens au courant. Si vous voyez autre chose n'hésitez pas à me dire que je teste.
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Je n'avais pas eu le temps de recommencer les tests. Concernant la ligne précédente, elle manque en effet. Cela ne résout pas le problème pour autant. Je n'arrive toujours pas à faire de var_dump dans la class msClicRDV.php, par contre j'ai réussi à en faire dans le cron clicRdv.php pour la variable clicrdv et ret.
clicrdv donne :
Code : Tout sélectionner
class msClicRDV#4 (4) {
private $_userID =>
int(3)
private $_groupID =>
NULL
private $_calID =>
NULL
private $_userpwd =>
NULL
}
et ret donne : bool(false)
la fonction setUserID à l'air de bien fonctionner comme les fichiers inc-ajax-updateGroups.php, inc-ajax-updateCals.php, inc-ajax-updateConsults.php, userAjax.php, inc-ajax-userParametersClicRdv.php fonctionnent et se synchronisent par rapport à clicrdv
la fonction syncEvents, comme les fonctions modEvent, sendEvent, delEvent n'ont pas l'air de fonctionner.
les fonctions getUserParams, getInterventions getCalendars, getGroups, setUserPwd, fonctionnent.
Je n'ai pas testé les fonctions getLocalPatients et getRelatedPatients qui ont également une variable ret.
Est-ce que vous auriez des idées pour tester les fonctions restantes / est-ce qu'en lisant ces fonctions il y a un truc qui vous choque ?
Merci beaucoup
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Si tu fait un var_dump()
pour afficher le résultat directement dans la sortie html et que le le résultat doit provenir d'un requête ajax qui renvoie du json, ça va foirer car la sortie de var_dump() va venir "déformer" le json qui ne sera plus interprétable. Un solution peut être de sortir le contenus de la variable dans un fichier avec file_put_content()
et serialize()
comme ceci :
Code : Tout sélectionner
file_put_content($homepath.'mydump', serialize($la_variable_que_tu_veux));
Cela mettra le contenus de $la_variable_que_tu_veux
(au format [serialize()](https://www.php.net/manual/en/function.serialize)
) dans le fichier mydump
du homepath de MedShake (c'est pratique pour déboguer facilement des requêtes ajax).
Au vu des méthode concernées, ce serai pas le lock qui les bloque ?
Peut tu fournir le retour de la requête sql suivante ?
Code : Tout sélectionner
SELECT value FROM `system` WHERE groupe='lock' and name='clicRDV'
Juste pour savoir, les paramètres de configuration clicRdv, sont ils renseignés de manière globale uniquement ou aussi au niveau de l’utilisateur ? Peut tu essayer de renseigner ces paramètres directement dans ceux de l'utilisateur si ce n'est pas le cas. (je me demande si certains paramètres ne sont pas retrouvés si ils ne sont pas directement renseigner pour l'utilisateur)
Pour essayer de voire ce qui cloche avec msClicRDV::sycEvents()
, peut tu essayer d'ajouter :
Code : Tout sélectionner
file_put_content($homepath.'mydump', serialize($params));
Juste sous (c'est à la deuxième ligne de la méthode) :
Code : Tout sélectionner
$params=$this->_getUserParams();
et voire si tout les paramètres on bien une valeur (dans le fichier mydump
qui sera à la racine de ton homepath MedShake).
Peut tu aussi vérifier le résultat de ce qui est envoyé par $this->_sendCurl()
en obtenant de résultat de la variable $res
?
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
Merci beaucoup.
J'avais loupé l'info pour le file_put_content. Quand je le mets en place cela entraîne une erreur 500 sur le /ajax/synchronizeEvents et le message : undefined Il y a un problème. Il faut recharger la page. Qui est à priori une conséquence de l'erreur 500. En créant le fichier mydump à l'avance pareil. Il faut recharger la page.Je dois encore mal l'utiliser.
Je l'ai fait ainsi par ex :
Code : Tout sélectionner
public function syncEvents() {
try {
$params=$this->_getUserParams();
file_put_content($homepath.'mydump', serialize($params));
Pour la base de données la valeur du lock est à false
Code : Tout sélectionner
MariaDB [medshakeehr]> SELECT value FROM `system` WHERE groupe='lock' and name='clicRDV'
-> ;
+-------+
| value |
+-------+
| false |
+-------+
1 row in set (0.001 sec)
https://www.brunoy-osteopathe.fr
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
C'est moi qui suis un peut con... $homepath
n'est pas déclaré en variable global. Essai avec ceci :
Code : Tout sélectionner
global $p;
file_put_content($p['homepath'].'mydump', serialize($params));
Re: [non vraiment ;-) Résolu] Problème paramètre utilisateur lors de l'activation de clicrdv
j'avais essayé et aussi avec global $homepath; sans succès le message d'erreur est le même
https://www.brunoy-osteopathe.fr