J’ai consulté les réponses sur le forum, mais je n’arrive toujours pas à faire fonctionner cela. La fonction refuse d’accepter le paramètre user_param que j’ai défini dans la requête.
Erreur : Array ( [success] => [errors] => Array ( [0] => DataExplorer::ValidationError: Paramètre manquant user_param de type int ) )
La requête :
-- [params]
-- int :user_param
SELECT Count(likes_received) total_likes_received
from user_stats us
where us.user_id = :user_param
Le code :
<?php global $post;
$current_user_id = get_current_user_id();
$user_discourse_id = (int)get_user_meta($current_user_id,'discourse_sso_user_id')[0];
//identifiants API,
$api_key = 'key';
$api_username = 'name';
$post_fields = array(
'user_param' => $user_discourse_id,
);
$headers = array("Content-Type: multipart/form-data;","Api-Key: $api_key","Api-Username: $api_username",);
$url = 'https://domain/admin/plugins/explorer/queries/9/run';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_fields );
$result = curl_exec( $ch );
if ( curl_errno( $ch ) !== 0 ) {
// Gérer l'erreur, appeler curl_close( $ch ) et retourner.
echo 'erreur';
curl_close ($ch);
return;
}
curl_close( $ch );
$decoded_result = json_decode( $result, true );
print_r($decoded_result);
?>
J’ai généré la valeur pour $post_fields avec et sans http_build_query, mais le paramètre n’est toujours pas transmis à Data Explorer.
Cela fonctionnait il y a un mois avec http_build_query et maintenant cela ne fonctionne plus. Qu’est-ce que je rate ?
Mise à jour :
J’ai même essayé de passer le tableau manuellement et j’obtiens toujours la même erreur. Quelque chose a-t-il changé récemment dans le plugin ?
curl_setopt( $ch, CURLOPT_POSTFIELDS, array('user_param'=>'25'));
curl_setopt( $ch, CURLOPT_POSTFIELDS, array('user_param' => 25));