getContent() and $json = json_decode($contenu, true) and is_array($json) and isset($json['collection']['items'][0]['data']) and $data = $json['collection']['items'][0]['data'] and is_array($data) ) { // Pour chaque champ envoyé, ça dépend ce que c'est foreach ($data as $champ) { if ( isset($champ['name']) and isset($champ['value']) ) { // Si c'est id_formulaire, on le garde de côté pour l'autorisation et pour le traitement if ($champ['name'] == 'id_formulaire') { $id_formulaire = intval($champ['value']); } // Sinon on le met dans le post pour verifier/traiter set_request($champ['name'], $champ['value']); } } // On teste l'autorisation if ($id_formulaire > 0 and autoriser('repondre', 'formulaire', $id_formulaire)) { // On vérifie maintenant les erreurs $formidable_verifier = charger_fonction('verifier', 'formulaires/formidable'); $erreurs = $formidable_verifier($id_formulaire); // On passe les erreurs dans le pipeline "verifier" (par exemple pour Saisies) $erreurs = pipeline('formulaire_verifier', array( 'args' => array( 'form' => 'formidable', 'args' => array($id_formulaire), ), 'data' => $erreurs, )); // S'il y a des erreurs, on va générer un JSON les listant if ($erreurs) { $reponse->setStatusCode(400); $reponse->headers->set('Content-Type', 'application/json'); $reponse->setCharset('utf-8'); $json_reponse = array( 'collection' => array( 'version' => '1.0', 'href' => url_absolue(self('&')), 'error' => array( 'title' => _T('erreur'), 'code' => 400, ), 'errors' => array(), ), ); foreach ($erreurs as $nom => $erreur) { $json_reponse['collection']['errors'][$nom] = array( 'title' => $erreur, 'code' => 400, ); } $reponse->setContent(json_encode($json_reponse)); } // Sinon on continue le traitement else { // On lance le traitement de la réponse $formidable_traiter = charger_fonction('traiter', 'formulaires/formidable', true); $retours_formidable = $formidable_traiter($id_formulaire); // On passe dans le pipeline "traiter" (par exemple pour les quizz) $retours_formidable = pipeline('formulaire_traiter', array( 'args' => array( 'form' => 'formidable', 'args' => array($id_formulaire), ), 'data' => $retours_formidable, )); // Si à la fin on a bien un identifiant de réponse if ($id_formulaires_reponse = $retours_formidable['id_formulaires_reponse']) { // On va cherche la fonction qui génère la vue d'une ressource if ($fonction_ressource = charger_fonction('get_ressource', 'http/collectionjson/', true)) { // On ajoute à la requête, l'identifiant de la nouvelle ressource $requete->attributes->set('ressource', $id_formulaires_reponse); $reponse = $fonction_ressource($requete, $reponse); // C'est une création, on renvoie 201 $reponse->setStatusCode(201); } } // Sinon l'enregistrement n'a pas fonctionné donc erreur // (TODO : il faudrait les chaînes pour les 5XX dans le plugin HTTP) else { $reponse = $fonction_erreur(500, $requete, $reponse); } } } // Sinon pas le droit else { $reponse = $fonction_erreur(403, $requete, $reponse); } } // Sinon on ne comprend pas ce qui se passe else { $reponse = $fonction_erreur(415, $requete, $reponse); } return $reponse; }