f->disableLog(); $sql = sprintf("SELECT task FROM %stask WHERE ", DB_PREFIXE); $firstIteration = true; foreach(array('task', 'type', 'dossier', 'state', 'object_id', 'stream', 'comment') as $key) { if (isset($request_data[$key]) && !empty($request_data[$key])) { if (!$firstIteration) $sql .= " AND "; $sql .= sprintf("%s = '%s'", $key, $request_data[$key]); $firstIteration = false; } } $result = $this->f->get_one_result_from_db_query( $sql, array( "origin" => __METHOD__, ) ); if ( $result["code"] != "OK" ) { $this->setMessage(__("Erreur lors de la recherche des tâches")); return $this->BAD_DATA; } $this->task = $result['result']; if ($this->task !== null) { $task = $this->f->get_inst__om_dbform(array( "obj" => "task", "idx" => $this->task , )); $tmp_payload = $task->getVal('json_payload'); if ($tmp_payload !== "{}") { // On prend la Payload en BDD $this->payload_json = json_encode( json_decode($tmp_payload, true), JSON_UNESCAPED_SLASHES ); } else { $this->payload_json = $task->view_form_json(true); } } return $this->OK; } /** * Méthode principale qui gère le processus entier de création de task : * - création de la ou des tasks * - création d'une nouvelle task ou task sur existant * * @param array $request_data Les données brutes de la task sous forme * de tableau associatif : * @return string Le résultat du traitement */ public function create($request_data) { $this->f->disableLog(); // préparation et vérification des données reçues $params = array(); // Paramètres obligatoires if(!isset($request_data['task'])){ $this->setMessage(__( "Le paramètre 'task' n'est pas présent dans les données, ". "mais est obligatoire")); return $this->BAD_DATA; } foreach(array('type', 'json_payload', 'stream') as $key) { // si le paramètre requis n'est pas présent if (!isset($request_data['task'][$key])) { $this->setMessage(__( "Le paramètre '$key' n'est pas présent dans les données, ". "mais est obligatoire")); return $this->BAD_DATA; } // s'il est vide if (empty($request_data['task'][$key])) { $this->setMessage(__("Le paramètre '$key' ne peut être vide")); return $this->BAD_DATA; } // les paramètres sont tous de type string if (!is_string($request_data['task'][$key])) { $this->setMessage(__( "Le paramètre '$key' doit être de type string ". "(et non '".gettype($request_data['task'][$key])."')")); return $this->BAD_DATA; } $params['val'][$key] = $request_data['task'][$key]; } // Paramètres non obligatoires $params['val']['category'] = ($request_data['task']['category'] ?? PLATAU); if (isset($request_data['task']['state'])) { $params['val']['state'] = $request_data['task']['state']; } foreach(array('state') as $key) { if ( isset($request_data['task'][$key]) && is_string($request_data['task'][$key]) ) { $params['val'][$key] = $request_data['task'][$key]; } } if (isset($request_data['task']['creation_date'])) { $creation_date = \DateTime::createFromFormat('Y-m-d', $request_data['task']['creation_date']); if ($creation_date === false) { $this->setMessage(__("Le paramètre 'creation_date' doit être une date au format Y-m-d")); return $this->BAD_DATA; } } // Instanciation et ajout de la tâche $tache = new task(null); $result = $tache->add_task($params); if ($result === false) { $this->setMessage($this->filtreBalisesHtml($tache->msg)); return $this->BAD_DATA; } $task_id = $tache->getVal($tache->clePrimaire); if (isset($creation_date)) { $valF = ['creation_date' => $creation_date->format('Y-m-d')]; $qres = $this->f->execute_auto_db_query( 'update', DB_PREFIXE.$tache->table, $valF, "{$tache->clePrimaire} = $task_id", array( 'origin' => __METHOD__, ) ); } $this->setMessage(sprintf(__("Tâche '%s' ajoutée avec succès"), $task_id)); return $this->OK; } }