mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-04-20 16:37:48 +02:00
start adding mms to a lot of places, no tests, not done
This commit is contained in:
parent
b8e587a59e
commit
ff6b3e79df
24 changed files with 1174 additions and 788 deletions
|
@ -23,14 +23,16 @@ namespace controllers\internals;
|
|||
* @param string $text : Text of the message
|
||||
* @param ?int $id_phone : Id of the phone to send message with, null by default
|
||||
* @param bool $flash : Is the sms a flash sms, by default false
|
||||
* @param bool $mms : Is the sms a mms, by default false
|
||||
* @param array $numbers : Numbers to send message to
|
||||
* @param array $contacts_ids : Contact ids to send message to
|
||||
* @param array $groups_ids : Group ids to send message to
|
||||
* @param array $conditional_group_ids : Conditional Groups ids to send message to
|
||||
* @param array $media_ids : Ids of the medias to link to scheduled message
|
||||
*
|
||||
* @return bool : false on error, new id on success
|
||||
*/
|
||||
public function create(int $id_user, $at, string $text, ?int $id_phone = null, bool $flash = false, array $numbers = [], array $contacts_ids = [], array $groups_ids = [], array $conditional_group_ids = [])
|
||||
public function create(int $id_user, $at, string $text, ?int $id_phone = null, bool $flash = false, bool $mms = false, array $numbers = [], array $contacts_ids = [], array $groups_ids = [], array $conditional_group_ids = [], array $media_ids = [])
|
||||
{
|
||||
$scheduled = [
|
||||
'id_user' => $id_user,
|
||||
|
@ -38,6 +40,7 @@ namespace controllers\internals;
|
|||
'text' => $text,
|
||||
'id_phone' => $id_phone,
|
||||
'flash' => $flash,
|
||||
'mms' => $mms,
|
||||
];
|
||||
|
||||
if (null !== $id_phone)
|
||||
|
@ -51,12 +54,28 @@ namespace controllers\internals;
|
|||
}
|
||||
}
|
||||
|
||||
//Use transaction to garanty atomicity
|
||||
$this->bdd->beginTransaction();
|
||||
|
||||
$id_scheduled = $this->get_model()->insert($scheduled);
|
||||
if (!$id_scheduled)
|
||||
{
|
||||
$this->bdd->rollBack();
|
||||
return false;
|
||||
}
|
||||
|
||||
$internal_media = new Media($this->bdd);
|
||||
foreach ($media_ids as $media_id)
|
||||
{
|
||||
$id_media_scheduled = $internal_media->link_to($media_id, 'scheduled', $id_scheduled);
|
||||
if (!$id_media_scheduled)
|
||||
{
|
||||
$this->bdd->rollBack();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach ($numbers as $number)
|
||||
{
|
||||
$this->get_model()->insert_scheduled_number($id_scheduled, $number);
|
||||
|
@ -98,6 +117,12 @@ namespace controllers\internals;
|
|||
$this->get_model()->insert_scheduled_conditional_group_relation($id_scheduled, $conditional_group_id);
|
||||
}
|
||||
|
||||
$success = $this->bdd->commit();
|
||||
if (!$success)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
$internal_event = new Event($this->bdd);
|
||||
$internal_event->create($id_user, 'SCHEDULED_ADD', 'Ajout d\'un Sms pour le ' . $date . '.');
|
||||
|
@ -114,20 +139,23 @@ namespace controllers\internals;
|
|||
* @param string $text : Text of the message
|
||||
* @param ?int $id_phone : Id of the phone to send message with, null by default
|
||||
* @param bool $flash : Is the sms a flash sms, by default false
|
||||
* @param bool $mms : Is the sms a mms, by default false
|
||||
* @param array $numbers : Numbers to send message to
|
||||
* @param array $contacts_ids : Contact ids to send message to
|
||||
* @param array $groups_ids : Group ids to send message to
|
||||
* @param array $conditional_group_ids : Conditional Groups ids to send message to
|
||||
* @param array $media_ids : Ids of the medias to link to scheduled message
|
||||
*
|
||||
* @return bool : false on error, new id on success
|
||||
* @return bool : false on error, true on success
|
||||
*/
|
||||
public function update_for_user(int $id_user, int $id_scheduled, $at, string $text, ?string $id_phone = null, bool $flash = false, array $numbers = [], array $contacts_ids = [], array $groups_ids = [], array $conditional_group_ids = [])
|
||||
public function update_for_user(int $id_user, int $id_scheduled, $at, string $text, ?string $id_phone = null, bool $flash = false, bool $mms = false, array $numbers = [], array $contacts_ids = [], array $groups_ids = [], array $conditional_group_ids = [], array $media_ids = [])
|
||||
{
|
||||
$scheduled = [
|
||||
'id_user' => $id_user,
|
||||
'at' => $at,
|
||||
'text' => $text,
|
||||
'id_phone' => $id_phone,
|
||||
'mms' => $mms,
|
||||
'flash' => $flash,
|
||||
];
|
||||
|
||||
|
@ -142,12 +170,27 @@ namespace controllers\internals;
|
|||
}
|
||||
}
|
||||
|
||||
//Ensure atomicity
|
||||
$this->bdd->beginTransaction();
|
||||
|
||||
$success = (bool) $this->get_model()->update_for_user($id_user, $id_scheduled, $scheduled);
|
||||
|
||||
$this->get_model()->delete_scheduled_numbers($id_scheduled);
|
||||
$this->get_model()->delete_scheduled_contact_relations($id_scheduled);
|
||||
$this->get_model()->delete_scheduled_group_relations($id_scheduled);
|
||||
$this->get_model()->delete_scheduled_conditional_group_relations($id_scheduled);
|
||||
$internal_media = new Media($this->bdd);
|
||||
$internal_media->unlink_all_of('scheduled', $id_scheduled);
|
||||
|
||||
foreach ($media_ids as $media_id)
|
||||
{
|
||||
$id_media_scheduled = $internal_media->link_to($media_id, 'scheduled', $id_scheduled);
|
||||
if (!$id_media_scheduled)
|
||||
{
|
||||
$this->bdd->rollBack();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($numbers as $number)
|
||||
{
|
||||
|
@ -190,7 +233,7 @@ namespace controllers\internals;
|
|||
$this->get_model()->insert_scheduled_conditional_group_relation($id_scheduled, $conditional_group_id);
|
||||
}
|
||||
|
||||
return true;
|
||||
return $this->bdd->commit();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -224,6 +267,7 @@ namespace controllers\internals;
|
|||
|
||||
$users_settings = [];
|
||||
$users_phones = [];
|
||||
$users_mms_phones = [];
|
||||
|
||||
$now = new \DateTime();
|
||||
$now = $now->format('Y-m-d H:i:s');
|
||||
|
@ -244,7 +288,16 @@ namespace controllers\internals;
|
|||
if (!isset($users_phones[$scheduled['id_user']]))
|
||||
{
|
||||
$phones = $internal_phone->gets_for_user($scheduled['id_user']);
|
||||
$mms_phones = $internal_phone->gets_phone_supporting_mms_for_user($scheduled['id_user'], $internal_phone::MMS_SENDING);
|
||||
$users_phones[$scheduled['id_user']] = $phones ?: [];
|
||||
$users_mms_phones[$scheduled['id_user']] = $mms_phones ?: [];
|
||||
}
|
||||
|
||||
//Add medias to mms
|
||||
if ($scheduled['mms'])
|
||||
{
|
||||
$internal_media = new Media($this->bdd);
|
||||
$scheduled['medias'] = $internal_media->gets_for_scheduled_and_user($scheduled['id_user'], $scheduled['id']);
|
||||
}
|
||||
|
||||
$phone_to_use = null;
|
||||
|
@ -266,8 +319,16 @@ namespace controllers\internals;
|
|||
{
|
||||
if (null === $phone_to_use)
|
||||
{
|
||||
$rnd_key = array_rand($users_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_phones[$scheduled['id_user']][$rnd_key];
|
||||
if ($scheduled['mms'])
|
||||
{
|
||||
$rnd_key = array_rand($users_mms_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_mms_phones[$scheduled['id_user']][$rnd_key];
|
||||
}
|
||||
else
|
||||
{
|
||||
$rnd_key = array_rand($users_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_phones[$scheduled['id_user']][$rnd_key];
|
||||
}
|
||||
}
|
||||
|
||||
$message = [
|
||||
|
@ -276,6 +337,8 @@ namespace controllers\internals;
|
|||
'id_phone' => $phone_to_use['id'] ?? $random_phone['id'],
|
||||
'destination' => $number['number'],
|
||||
'flash' => $scheduled['flash'],
|
||||
'mms' => $scheduled['mms'],
|
||||
'medias' => $scheduled['medias'],
|
||||
];
|
||||
|
||||
if ((int) ($users_settings[$scheduled['id_user']]['templating'] ?? false))
|
||||
|
@ -326,8 +389,16 @@ namespace controllers\internals;
|
|||
|
||||
if (null === $phone_to_use)
|
||||
{
|
||||
$rnd_key = array_rand($users_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_phones[$scheduled['id_user']][$rnd_key];
|
||||
if ($scheduled['mms'])
|
||||
{
|
||||
$rnd_key = array_rand($users_mms_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_mms_phones[$scheduled['id_user']][$rnd_key];
|
||||
}
|
||||
else
|
||||
{
|
||||
$rnd_key = array_rand($users_phones[$scheduled['id_user']]);
|
||||
$random_phone = $users_phones[$scheduled['id_user']][$rnd_key];
|
||||
}
|
||||
}
|
||||
|
||||
$message = [
|
||||
|
@ -336,6 +407,8 @@ namespace controllers\internals;
|
|||
'id_phone' => $phone_to_use['id'] ?? $random_phone['id'],
|
||||
'destination' => $contact['number'],
|
||||
'flash' => $scheduled['flash'],
|
||||
'mms' => $scheduled['mms'],
|
||||
'medias' => $scheduled['medias'],
|
||||
];
|
||||
|
||||
if ((int) ($users_settings[$scheduled['id_user']]['templating'] ?? false))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue