* * This source file is subject to the GPL-3.0 license that is bundled * with this source code in the file LICENSE. */ namespace controllers\publics; class Templating extends \descartes\Controller { private $internal_contact; private $internal_templating; private $internal_quota; /** * Cette fonction est appelée avant toute les autres : * Elle vérifie que l'utilisateur est bien connecté. * * @return void; */ public function __construct() { $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_templating = new \controllers\internals\Templating(); $this->internal_quota = new \controllers\internals\Quota($bdd); \controllers\internals\Tool::verifyconnect(); } /** * Try to render a template as a message for preview. * * @param string $_POST['template'] : Template string * @param int $_POST['id_contact'] : Id of the contact to render the template for * * @return mixed : False or json string ['success' => bool, 'result' => message] */ public function render_preview() { $return = [ 'success' => false, 'result' => 'Une erreur inconnue est survenue.', 'estimation_credit' => 0, ]; $template = $_POST['template'] ?? false; $id_contact = $_POST['id_contact'] ?? false; if (!$template || !$id_contact) { $return['result'] = 'Veuillez remplir un message.'; echo json_encode($return); return false; } $contact = $this->internal_contact->get_for_user($_SESSION['user']['id'], $id_contact); if (!$contact) { $return['result'] = 'Ce contact n\'existe pas.'; echo json_encode($return); return false; } $contact['data'] = json_decode($contact['data'], true); //Add metas of contact by adding contact without data $metas = $contact; unset($metas['data'], $metas['id_user']); $data = [ 'contact' => $contact['data'], 'contact_metas' => $metas, ]; $result = $this->internal_templating->render($template, $data); $return = $result; // If we must force GSM 7 alphabet if ((int) ($_SESSION['user']['settings']['force_gsm_alphabet'] ?? false)) { $return['result'] = \controllers\internals\Tool::convert_to_gsm0338($return['result']); } if (!trim($result['result'])) { $return['result'] = 'Message vide, il ne sera pas envoyé.'; } //Add credit estimation $return['estimation_credit'] = $this->internal_quota->compute_credits_for_message($return['result']); echo json_encode($return); return true; } }