- Posts: 9
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Tutoriel Remote control API
- afocal
- Topic Author
- Offline
- New Member
Less
More
5 years 9 months ago - 5 years 9 months ago #170483
by afocal
Tutoriel Remote control API was created by afocal
Bonjour, j'ai beau tester les instructions de cette page :
manual.limesurvey.org/RemoteControl_2_API
en ayant ajouté la ligne évoqué dans le require du fichier composer :
...et utilisé l'exemple PHP fourni, rien ne se passe ! Page blanche en résultat quand j'appelle directement dans un navigateur mon fichier PHP (envoyé en FTP à la racine de l'installation de limesurvey (toutes mises à jour faites) sur mon hébergement mutualisé OVH. Je précise que j'ai bien activé le questionnaire (dès fois que...)
J'ai l'impression que les instructions sont des évocations sans pour autant que le code indiqué soit complet et fonctionne...
N'y aurait-il pas un code source / tutoriel disponible pour comprendre comment ça fonctionne sur un cas simple concret ?
Merci d'avance...
NB : l'objectif pour moi est de récupérer les questions via JSON, d'afficher mon questionnaire sur une page html indépendante puis via PHP en cible, injecter les réponses dans Limesurvey. Histoire de profiter du dépouillement (stats, histogrammes, etc...)
Code:
... "autoload": { "psr-4": { "LimeSurvey\\PluginManager\\": [ "application/libraries/PluginManager/", "application/libraries/PluginManager/Storage" ], "LimeSurvey\\Menu\\": "application/libraries/MenuObjects/", "LimeSurvey\\Helpers\\": "application/helpers" } }, "require": { "facebook/webdriver": "^1.4" "weberhofer/jsonrpcphp": "~2" }, "config": { "vendor-dir": "third_party", "bin-dir": "third_party/bin" }, "require-dev": { "squizlabs/php_codesniffer": "2.*" } }
...et utilisé l'exemple PHP fourni, rien ne se passe ! Page blanche en résultat quand j'appelle directement dans un navigateur mon fichier PHP (envoyé en FTP à la racine de l'installation de limesurvey (toutes mises à jour faites) sur mon hébergement mutualisé OVH. Je précise que j'ai bien activé le questionnaire (dès fois que...)
J'ai l'impression que les instructions sont des évocations sans pour autant que le code indiqué soit complet et fonctionne...
N'y aurait-il pas un code source / tutoriel disponible pour comprendre comment ça fonctionne sur un cas simple concret ?
Merci d'avance...
NB : l'objectif pour moi est de récupérer les questions via JSON, d'afficher mon questionnaire sur une page html indépendante puis via PHP en cible, injecter les réponses dans Limesurvey. Histoire de profiter du dépouillement (stats, histogrammes, etc...)
Attachments:
Last edit: 5 years 9 months ago by afocal.
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13643
- Thank you received: 2491
5 years 9 months ago #170491
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Tutoriel Remote control API
Tu parle du composer de LimeSurvey, mais c'est le composer (si il existe) de ton appli …
regarde l‘exemple avec la partie sans composer : ca sera plus facile. Faut juste télécharger et placer les fichiers au bon endroit.
Maintenant, l'exemple des groupes est quand même pas terrible … Fait plutôt api.limesurvey.org/classes/remotecontrol...#method_list_surveys
regarde l‘exemple avec la partie sans composer : ca sera plus facile. Faut juste télécharger et placer les fichiers au bon endroit.
Maintenant, l'exemple des groupes est quand même pas terrible … Fait plutôt api.limesurvey.org/classes/remotecontrol...#method_list_surveys
Code:
$groups = $myJSONRPCClient->list_surveys( $sessionKey );
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
- afocal
- Topic Author
- Offline
- New Member
Less
More
- Posts: 9
- Thank you received: 0
5 years 9 months ago - 5 years 9 months ago #170573
by afocal
Replied by afocal on topic Tutoriel Remote control API
Merci beaucoup pour la réponse !
Alors j'ai beau y mettre de la bonne volonté et passer des heures à essayer à tord et à travers... Je n'arrive à rien :S quand j'appelle mon script PHP dans un navigateur = page blanche....
Qu'est-ce qui cloche dans ce code ?
Je précise que le require de départ n'est qu'une déduction de ma part, je ne sais pas si c'est cela qu'il faut faire, je ne comprends pas comment on fait sans composer...
Et est-ce que l'instanciation est correcte ?
NB : est-ce normal d'ailleurs de laisser un slash à la fin de mon url de base alors qu'ensuite le script concatène avec un chemin incluant déjà un slash de départ (LS_BASEURL.'/admin/remotecontrol')?
et même en remplaçant le premier require par :
...ça ne change rien :blink:
PS : est-ce que l'encodage de mon fichier php importe (utf-8 / ANSI...) ?
Merci d'avance !
Alors j'ai beau y mettre de la bonne volonté et passer des heures à essayer à tord et à travers... Je n'arrive à rien :S quand j'appelle mon script PHP dans un navigateur = page blanche....
Qu'est-ce qui cloche dans ce code ?
Code:
<?php require_once "application/libraries/jsonRPCClient.php"; define( 'LS_BASEURL', 'http:/monsite.com/limesurvey/'); // adjust this one to your actual LimeSurvey URL define( 'LS_USER', 'user' ); // j'ai bien sûr mis un vrai user define( 'LS_PASSWORD', 'password' ); // idem là c'est juste de l'obfuscation // instantiate a new client $myJSONRPCClient = new \org\jsonrpcphp\JsonRPCClient( LS_BASEURL.'/admin/remotecontrol' ); // receive session key $sessionKey= $myJSONRPCClient->get_session_key( LS_USER, LS_PASSWORD ); $questionnaires = $myJSONRPCClient->list_surveys($sessionKey, LS_USER ); print_r($questionnaires, null ); // release the session key $myJSONRPCClient->release_session_key( $sessionKey ); ?>
Je précise que le require de départ n'est qu'une déduction de ma part, je ne sais pas si c'est cela qu'il faut faire, je ne comprends pas comment on fait sans composer...
Et est-ce que l'instanciation est correcte ?
NB : est-ce normal d'ailleurs de laisser un slash à la fin de mon url de base alors qu'ensuite le script concatène avec un chemin incluant déjà un slash de départ (LS_BASEURL.'/admin/remotecontrol')?
et même en remplaçant le premier require par :
Code:
include "xmlrpc.php"; // https://gist.github.com/hofmeister/1808285 include "application/libraries/jsonRPCClient.php";
...ça ne change rien :blink:
PS : est-ce que l'encodage de mon fichier php importe (utf-8 / ANSI...) ?
Merci d'avance !
Last edit: 5 years 9 months ago by afocal.
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13643
- Thank you received: 2491
5 years 9 months ago #170575
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Tutoriel Remote control API
A mon avis il bug sur application/libraries/jsonRPCClient.php .
A voir,
Mais sinon : appelle le diffférement : comme cela tu verra les erreurs …
Fichier index.php gitlab.com/SondagesPro/coreAndTools/twig...ins/snippets/1729191
et rcp.php : gitlab.com/SondagesPro/coreAndTools/twig...ins/snippets/1729193
dans le même répertoire, l'appel de index.php active les erreurs. Tu verras tes erreurs.
A voir,
Mais sinon : appelle le diffférement : comme cela tu verra les erreurs …
Fichier index.php gitlab.com/SondagesPro/coreAndTools/twig...ins/snippets/1729191
et rcp.php : gitlab.com/SondagesPro/coreAndTools/twig...ins/snippets/1729193
dans le même répertoire, l'appel de index.php active les erreurs. Tu verras tes erreurs.
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: afocal
The topic has been locked.
- afocal
- Topic Author
- Offline
- New Member
Less
More
- Posts: 9
- Thank you received: 0
5 years 9 months ago - 5 years 9 months ago #170587
by afocal
Replied by afocal on topic Tutoriel Remote control API
Génial, c'était application en effet. Tout cela m'a permis enfin de comprendre ce qui n'allait pas et de le résoudre. Pour que ça me serve si je reviens un jour et pour d'autres aussi, voilà donc l'issue et le tutoriel complet du test :
Un grand merci à DenisChenu :side: :lol:
- télécharger ceci : github.com/weberhofer/jsonrpcphp (bouton clone or download vert -> zip)
- renommer le dossier jsonrpcphp_master en jsonrpcphp, puis le transférer en FTP dans le dossier d'installation de LimeSurvey
- activer l'interface dans LimeSurvey : Configuration -> Paramètres généraux -> Interfaces (cocher le bouton JSON-RPC et cliquez oui pour "Publier l’API dans /admin/remotecontrol" et ne pas oublier de sauvegarder)
- Utiliser le code ci-dessous pour commencer à comprendre le fonctionnement de l'API Remote Control puis utiliser la doc api.limesurvey.org/classes/remotecontrol_handle.html pour aller plus loin
Code:
<?php require_once './jsonrpcphp/src/org/jsonrpcphp/JsonRPCClient.php'; $rpcUrl="https://votresite.com/limesurvey/admin/remotecontrol"; // en 2018, et qui plus est avec le RGPD, le site est bien sûr chiffré en SSL ;) $rpcUser="votre_nom_utilisateur_ou_administrateur"; // à priori celui défini comme propriétaire du questionnaire dans LimeSurvey ? $rpcPassword="votre_mot_de_passe"; $lsJSONRPCClient = new \org\jsonrpcphp\jsonRPCClient($rpcUrl); $sessionKey= $lsJSONRPCClient->get_session_key($rpcUser,$rpcPassword ); //~ If an error happen if(is_array($sessionKey)) { header("Content-type: application/json"); echo json_encode($sessionKey); die(); } $response=$lsJSONRPCClient->list_surveys($sessionKey,null); // pour avoir la liste des questionnaires // $response=$lsJSONRPCClient->list_questions($sessionKey,468284,null); // si vous voulez plutôt la liste des questions d'un questionnaire en particulier, ici le numéro 468284 header("Content-type: application/json"); //~ For big array : base64 encoded if(is_array($response)){ echo json_encode($response); } else { print_r(base64_decode($response), null ); } //~ release the session key $lsJSONRPCClient->release_session_key( $sessionKey ); ?>
Un grand merci à DenisChenu :side: :lol:
Last edit: 5 years 9 months ago by afocal.
The topic has been locked.
Moderators: Nickko