diff --git a/controllers/internalConsole.php b/controllers/internalConsole.php index c4cb51c..35e7864 100755 --- a/controllers/internalConsole.php +++ b/controllers/internalConsole.php @@ -179,6 +179,15 @@ //On va liée les deux commandes pour envoyer le SMS puis le passer en echec $commande = '(' . $commande_send_sms . ') >/dev/null 2>/dev/null &'; exec($commande); //On execute la commande d'envoie d'un SMS + + $datas = array( + 'number' => $number, + 'text' => $scheduled['content'], + 'flash' => $scheduled['flash'], + ); + + $webhooks = new webhooks(); + $webhooks->_addWebhooksForType(internalConstants::WEBHOOK_TYPE['SEND_SMS'], $datas); } } @@ -348,13 +357,24 @@ $send_by = $number; $content = $text; $is_command = count($found_commands); - if (!$db->insertIntoTable('receiveds', ['at' => $date, 'send_by' => $send_by, 'content' => $content, 'is_command' => $is_command])) + + $received = array( + 'at' => $date, + 'send_by' => $send_by, + 'content' => $content, + 'is_command' => $is_command, + ); + + if (!$db->insertIntoTable('receiveds', $received)) { echo "Erreur lors de l'enregistrement du SMS\n"; $this->wlog('Unable to process the SMS in file "' . $dir); die(7); } + $webhooks = new webhooks(); + $webhooks->_addWebhooksForType(internalConstants::WEBHOOK_TYPE['RECEIVE_SMS'], $received); + //On insert le SMS dans le tableau des sms à envoyer par mail $db->insertIntoTable('transfers', ['id_received' => $db->lastId(), 'progress' => false]); diff --git a/controllers/webhooks.php b/controllers/webhooks.php index fb8ec75..450e9d8 100755 --- a/controllers/webhooks.php +++ b/controllers/webhooks.php @@ -145,14 +145,39 @@ header('Location: ' . $this->generateUrl('webhooks')); } + /** + * Cette méthode permet d'ajouter d'un coup toutes les requête d'un webhook à la queue des requête pour un type de webhook + * @param int $webhookType : Le type de webhook (une constante issue de internalConstants::WEBHOOK_TYPE) + * @param array $datas : Les données à envoyer avec la requête (si non définie, []) + * @return void + */ + public function _addWebhooksForType ($webhookType, $datas = []) + { + global $db; + + $webhooks = $db->getFromTableWhere('webhooks', ['type' => $webhookType]); + + foreach ($webhooks as $webhook) + { + $this->addWebhookQuery($webhook['url'], $datas); + } + } + /** * Cette méthode est appelée pour ajouter une requête issue d'un webhook à la queue * @param string $url : L'url à laquelle envoyer la requête * @param array $datas : Les données à envoyer avec la requête (si non définie, []) * @return boolean : true si on reussi à l'ajouter, false sinon */ - public function _enqueueQuery ($url, $datas = []) + private function addWebhookQuery ($url, $datas = []) { - return false; + global $db; + + if (!$db->insertIntoTable('webhook_queries', ['url' => $url, ['datas' => json_encode($datas)]])) + { + return false; + } + + return true; } } diff --git a/createDatabase.sql b/createDatabase.sql index cbdb388..8af9166 100755 --- a/createDatabase.sql +++ b/createDatabase.sql @@ -156,6 +156,15 @@ CREATE TABLE IF NOT EXISTS webhooks PRIMARY KEY (id) ); +CREATE TABLE IF NOT EXISTS webhook_queries +( + id INT NOT NULL AUTO_INCREMENT, + url VARCHAR(250) NOT NULL, + datas VARCHAR(10000) NOT NULL, + progress BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (id) +); + #On insert les données par défaut dans les settings INSERT INTO settings (name, value) VALUES ('transfer', '1'),