diff --git a/controllers/internals/Phone.php b/controllers/internals/Phone.php index 40dde64..7f6f14f 100644 --- a/controllers/internals/Phone.php +++ b/controllers/internals/Phone.php @@ -28,45 +28,45 @@ namespace controllers\internals; } /** - * Return a phone by his number. + * Return a phone by his name * - * @param string $number : Phone number + * @param string $name : Phone name * * @return array */ - public function get_by_number(string $number) + public function get_by_name(string $name) { - return $this->get_model()->get_by_number($number); + return $this->get_model()->get_by_name($name); } /** - * Return a phone for a user by a number. + * Return a phone for a user by a name * * @param int $id_user : user id - * @param string $number : Phone number + * @param string $name : Phone name * * @return array */ - public function get_by_number_and_user(int $id_user, string $number) + public function get_by_name_and_user(int $id_user, string $name) { - return $this->get_model()->get_by_number_and_user($id_user, $number); + return $this->get_model()->get_by_name_and_user($id_user, $name); } /** * Create a phone. * * @param int $id_user : User to insert phone for - * @param string $number : The number of the phone + * @param string $name : The name of the phone * @param string $adapter : The adapter to use the phone * @param string json $adapter_datas : A JSON string representing adapter's datas (for example credentials for an api) * * @return bool : false on error, true on success */ - public function create(int $id_user, string $number, string $adapter, string $adapter_datas): bool + public function create(int $id_user, string $name, string $adapter, string $adapter_datas): bool { $phone = [ 'id_user' => $id_user, - 'number' => $number, + 'name' => $name, 'adapter' => $adapter, 'adapter_datas' => $adapter_datas, ]; @@ -79,17 +79,17 @@ namespace controllers\internals; * * @param int $id_user : User to insert phone for * @param int $id : Phone id - * @param string $number : The number of the phone + * @param string $name : The name of the phone * @param string $adapter : The adapter to use the phone * @param array $adapter_datas : An array of the datas of the adapter (for example credentials for an api) * * @return bool : false on error, true on success */ - public function update_for_user(int $id_user, int $id, string $number, string $adapter, array $adapter_datas): bool + public function update_for_user(int $id_user, int $id, string $name, string $adapter, array $adapter_datas): bool { $phone = [ 'id_user' => $id_user, - 'number' => $number, + 'name' => $name, 'adapter' => $adapter, 'adapter_datas' => json_encode($adapter_datas), ]; diff --git a/controllers/internals/Sended.php b/controllers/internals/Sended.php index 572d889..06788a7 100644 --- a/controllers/internals/Sended.php +++ b/controllers/internals/Sended.php @@ -19,9 +19,9 @@ namespace controllers\internals; * Create a sended. * * @param int $id_user : Id of user to create sended message for + * @param int $id_phone : Id of the number the message was send with * @param $at : Reception date * @param $text : Text of the message - * @param string $origin : Number of the sender * @param string $destination : Number of the receiver * @param string $uid : Uid of the sms on the adapter service used * @param string $adapter : Name of the adapter service used to send the message @@ -30,10 +30,11 @@ namespace controllers\internals; * * @return bool : false on error, new sended id else */ - public function create(int $id_user, $at, string $text, string $origin, string $destination, string $uid, string $adapter, bool $flash = false, ?string $status = 'unknown'): bool + public function create(int $id_user, int $id_phone, $at, string $text, string $destination, string $uid, string $adapter, bool $flash = false, ?string $status = 'unknown'): bool { $sended = [ 'id_user' => $id_user, + 'id_phone' => $id_phone, 'at' => $at, 'text' => $text, 'origin' => $origin, @@ -47,38 +48,6 @@ namespace controllers\internals; return (bool) $this->get_model()->insert($sended); } - /** - * Update a sended for a user. - * - * @param int $id_user : user id - * @param int $id_sended : Sended id - * @param $at : Reception date - * @param $text : Text of the message - * @param string $origin : Number of the sender - * @param string $destination : Number of the receiver - * @param string $uid : Uid of the sms on the adapter service used - * @param string $adapter : Name of the adapter service used to send the message - * @param bool $flash : Is the sms a flash - * @param ?string $status : Status of a the sms. By default null -> unknown - * - * @return bool : false on error, true on success - */ - public function update_for_user(int $id_user, int $id_sended, $at, string $text, string $origin, string $destination, string $uid, string $adapter, bool $flash = false, ?string $status = null): bool - { - $sended = [ - 'at' => $at, - 'text' => $text, - 'origin' => $origin, - 'destination' => $destination, - 'uid' => $uid, - 'adapter' => $adapter, - 'flash' => $flash, - 'status' => $status, - ]; - - return (bool) $this->get_model()->update_for_user($id_user, $id_sended, $sended); - } - /** * Update a sended status for a user. * diff --git a/controllers/publics/Phone.php b/controllers/publics/Phone.php index 8cfb51a..2371617 100644 --- a/controllers/publics/Phone.php +++ b/controllers/publics/Phone.php @@ -101,7 +101,7 @@ class Phone extends \descartes\Controller * Create a new phone. * * @param $csrf : CSRF token - * @param string $_POST['number'] : Phone number + * @param string $_POST['name'] : Phone name * @param string $_POST['adapter'] : Phone adapter * @param array $_POST['adapter_datas'] : Phone adapter datas */ @@ -115,29 +115,21 @@ class Phone extends \descartes\Controller } $id_user = $_SESSION['user']['id']; - $number = $_POST['number'] ?? false; + $name = $_POST['name'] ?? false; $adapter = $_POST['adapter'] ?? false; $adapter_datas = !empty($_POST['adapter_datas']) ? $_POST['adapter_datas'] : []; - if (!$number || !$adapter) + if (!$name || !$adapter) { \FlashMessage\FlashMessage::push('danger', 'Des champs obligatoires sont manquants.'); return $this->redirect(\descartes\Router::url('Phone', 'add')); } - $number = \controllers\internals\Tool::parse_phone($number); - if (!$number) + $name_exist = $this->internal_phone->get_by_name($name); + if ($name_exist) { - \FlashMessage\FlashMessage::push('danger', 'Numéro de téléphone incorrect.'); - - return $this->redirect(\descartes\Router::url('Phone', 'add')); - } - - $number_exist = $this->internal_phone->get_by_number($number); - if ($number_exist) - { - \FlashMessage\FlashMessage::push('danger', 'Ce numéro de téléphone est déjà utilisé.'); + \FlashMessage\FlashMessage::push('danger', 'Ce nom est déjà utilisé pour un autre téléphone.'); return $this->redirect(\descartes\Router::url('Phone', 'add')); } @@ -181,9 +173,9 @@ class Phone extends \descartes\Controller $adapter_datas = json_encode($adapter_datas); - //Check adapter is working correctly with thoses numbers and datas + //Check adapter is working correctly with thoses names and datas $adapter_classname = $find_adapter['meta_classname']; - $adapter_instance = new $adapter_classname($number, $adapter_datas); + $adapter_instance = new $adapter_classname($name, $adapter_datas); $adapter_working = $adapter_instance->test(); if (!$adapter_working) @@ -193,7 +185,7 @@ class Phone extends \descartes\Controller return $this->redirect(\descartes\Router::url('Phone', 'add')); } - $success = $this->internal_phone->create($id_user, $number, $adapter, $adapter_datas); + $success = $this->internal_phone->create($id_user, $name, $adapter, $adapter_datas); if (!$success) { \FlashMessage\FlashMessage::push('danger', 'Impossible de créer ce téléphone.'); diff --git a/controllers/publics/Sended.php b/controllers/publics/Sended.php index 9397b60..03389b4 100644 --- a/controllers/publics/Sended.php +++ b/controllers/publics/Sended.php @@ -44,6 +44,23 @@ namespace controllers\publics; $page = (int) $page; $limit = 25; $sendeds = $this->internal_sended->list_for_user($_SESSION['user']['id'], $limit, $page); + + foreach ($sendeds as &$sended) + { + if ($sended['id_phone'] === null) + { + continue; + } + + $phone = $this->internal_phone->get_for_user($_SESSION['user']['id'], $sended['id_phone']); + if (!$phone) + { + continue; + } + + $sended['phone_name'] = $phone['name']; + } + $this->render('sended/list', ['sendeds' => $sendeds, 'page' => $page, 'limit' => $limit, 'nb_results' => \count($sendeds)]); } diff --git a/daemons/Phone.php b/daemons/Phone.php index aa9dbda..495e10d 100644 --- a/daemons/Phone.php +++ b/daemons/Phone.php @@ -141,7 +141,7 @@ class Phone extends AbstractDaemon $message['at'] = $at; - $message['origin'] = $this->phone['number']; + $message['id_phone'] = $this->phone['id']; $this->logger->info('Try send message : ' . json_encode($message)); @@ -149,7 +149,7 @@ class Phone extends AbstractDaemon if (!$sended_sms_uid) { $this->logger->error('Failed send message : ' . json_encode($message)); - $internal_sended->create($this->phone['id_user'], $at, $message['text'], $message['origin'], $message['destination'], $sended_sms_uid, $this->phone['adapter'], $message['flash'], 'failed'); + $internal_sended->create($this->phone['id_user'], $this->phone['id'], $at, $message['text'], $message['destination'], $sended_sms_uid, $this->phone['adapter'], $message['flash'], 'failed'); continue; } @@ -161,7 +161,7 @@ class Phone extends AbstractDaemon $this->logger->info('Successfully send message : ' . json_encode($message)); - $internal_sended->create($this->phone['id_user'], $at, $message['text'], $message['origin'], $message['destination'], $sended_sms_uid, $this->phone['adapter'], $message['flash']); + $internal_sended->create($this->phone['id_user'], $this->phone['id'], $at, $message['text'], $message['destination'], $sended_sms_uid, $this->phone['adapter'], $message['flash']); } } diff --git a/db/migrations/20200330222139_update_phone_to_replace_number.php b/db/migrations/20200330222139_update_phone_to_replace_number.php new file mode 100644 index 0000000..9a2119a --- /dev/null +++ b/db/migrations/20200330222139_update_phone_to_replace_number.php @@ -0,0 +1,29 @@ +table('phone'); + $table->removeColumn('number'); + $table->addColumn('name', 'string', ['null' => false, 'limit' => 150]); + $table->addIndex('name', ['unique' => true]); + $table->update(); + + $table = $this->table('sended'); + $table->removeColumn('origin'); + $table->addColumn('id_phone', 'integer', ['null' => true]); + $table->addForeignKey('id_phone', 'phone', 'id', ['delete' => 'SET_NULL', 'update' => 'CASCADE']); + $table->update(); + + + $table = $this->table('received'); + $table->removeColumn('destination'); + $table->addColumn('id_phone', 'integer', ['null' => true]); + $table->addForeignKey('id_phone', 'phone', 'id', ['delete' => 'SET_NULL', 'update' => 'CASCADE']); + $table->update(); + } +} diff --git a/models/Phone.php b/models/Phone.php index b98b94d..d26eb8d 100644 --- a/models/Phone.php +++ b/models/Phone.php @@ -14,28 +14,28 @@ namespace models; class Phone extends StandardModel { /** - * Return a phone by his number and user. + * Return a phone by his name and user. * * @param int $id_user : user id - * @param string $number : phone number + * @param string $name : phone name * * @return array */ - public function get_by_number_and_user(int $id_user, string $number) + public function get_by_name_and_user(int $id_user, string $name) { - return $this->_select_one('phone', ['number' => $number, 'id_user' => $id_user]); + return $this->_select_one('phone', ['name' => $name, 'id_user' => $id_user]); } /** - * Return a phone by his number. + * Return a phone by his name. * - * @param string $number : phone number + * @param string $name : phone name * * @return array */ - public function get_by_number(string $number) + public function get_by_name(string $name) { - return $this->_select_one('phone', ['number' => $number]); + return $this->_select_one('phone', ['name' => $name]); } /** diff --git a/templates/phone/add.php b/templates/phone/add.php index e199da2..3c158f5 100644 --- a/templates/phone/add.php +++ b/templates/phone/add.php @@ -39,12 +39,12 @@
- +

- Le numéro de téléphone qui enverra et recevra les messages. + Le nom du téléphone qui enverra et recevra les messages.

- +
@@ -126,15 +126,6 @@ { change_adapter(); }); - - var number_input = jQuery('#phone-international-input')[0]; - var iti_number_input = window.intlTelInput(number_input, { - hiddenInput: 'number', - defaultCountry: 's($_SESSION['user']['settings']['default_phone_country']); ?>', - preferredCountries: s(json_encode(explode(',', $_SESSION['user']['settings']['preferred_phone_country'])), false, false); ?>, - nationalMode: true, - utilsScript: '/intlTelInput/utils.js' - }); }); - Numéro + Nom Adaptateur Sélectionner @@ -50,7 +50,7 @@ - s(\controllers\internals\Tool::phone_format($phone['number'])); ?> + s(\controllers\internals\Tool::phone_format($phone['name'])); ?> s($phone['adapter']); ?> diff --git a/templates/scheduled/add.php b/templates/scheduled/add.php index 8be9ce8..d4fe041 100644 --- a/templates/scheduled/add.php +++ b/templates/scheduled/add.php @@ -115,7 +115,7 @@
diff --git a/templates/scheduled/edit.php b/templates/scheduled/edit.php index 38fbb7a..e94ee5c 100644 --- a/templates/scheduled/edit.php +++ b/templates/scheduled/edit.php @@ -122,7 +122,7 @@
diff --git a/templates/sended/list.php b/templates/sended/list.php index 2fa53b3..26b3b95 100644 --- a/templates/sended/list.php +++ b/templates/sended/list.php @@ -55,7 +55,7 @@ - + s($sended['phone_name'] ?? 'Inconnu'); ?> s($sended['text']); ?> s($sended['at']); ?>