Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Tutoriel Remote control API

  • afocal
  • afocal's Avatar Topic Author
  • Offline
  • New Member
  • New Member
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 :
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...)

File Attachment:

File Name: moncode.zip
File Size:1 KB
Attachments:
Last edit: 5 years 9 months ago by afocal.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 9 months ago #170491 by DenisChenu
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
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
  • afocal's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
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 ?
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 ! :P
Last edit: 5 years 9 months ago by afocal.
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 9 months ago #170575 by DenisChenu
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.

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
  • afocal's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
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 :
  1. télécharger ceci : github.com/weberhofer/jsonrpcphp (bouton clone or download vert -> zip)
  2. renommer le dossier jsonrpcphp_master en jsonrpcphp, puis le transférer en FTP dans le dossier d'installation de LimeSurvey
  3. 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)
  4. 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

Lime-years ahead

Online-surveys for every purse and purpose