Как разрешить пользователям выбирать конкретную задержку для отправки почты в PHP? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть программное обеспечение, построенное на Zend и PHP.

Я ищу способ, позволяющий каждому пользователю выбрать время до отправки электронного письма с напоминанием о встрече.

Например:

Пользователь 1: хочет отправить электронное письмо за 12 часов до мероприятия. Пользователь 2: хочет отправить электронное письмо за 24 часа до мероприятия или встречи.

Я могу использовать задание cron для поиска и запуска события, основанного на определенном времени до или после события, но я не могу найти способ, позволяющий пользователям настраивать его так, как он этого хочет.

Ваша помощь в обходном пути будет принята с благодарностью!

1 Ответ

0 голосов
/ 01 сентября 2018

Так почему вы не можете предоставить их где-нибудь для ввода опции (или задать группу опций. Т. Е. 30 минут, 1 час, 3 часа, 6 часов, 12 часов, 24 часа и т. Д.) - затем сохранить это значение в таблице со ссылкой на встречу и пользователь к которому относится?

Что-то вроде:

  id    |    appointment   |       user       |   reminder(hrs)  |   sent
   1    |    Joe's Bday    |   jack@test.com  |       24         |     1
   2    |    Joe's Bday    |   mary@test.com  |       12         |     0

Пример того, как вы будете его использовать

$query = "Select * from remindertable;"
$query_results = mysqli_query($db, $query);
while($row = mysqli_fetch_row($query_results)) {
   if($row[4] == 0) {       

      $query = "SELECT appt-time FROM <table w data> WHERE appt-name = '" .$row[1] ."' AND appt-user ='" .$row[2] ."'";
      $timequery = mysqli_query($db, $query);
      $timequery = mysqli_fetch_assoc($timequery);

      $appt-time = date('Y-m-d H:I:S', strtotime($timequery['appt-time']));
      $appt-time2 = new DateTime($appt-time);

      //Get Current Time from Database
      $query = "SELECT NOW()";
      $currentQuery = mysqli_query($db, $query);
      $currentQuery = mysqli_fetch_array($currentQuery);

      $current-time = date('Y-m-d H:I:S', strtotime($currentQuery[0]));
      $current-time2 = new DateTime($current-time);

      $interval = $current-time2->diff($appt-time2);

      //CHECK THE INTERVAL AGAINST THE VALUE FROM THE DATABASE AND UPDATE WHEN SENT
   }

}

http://php.net/manual/en/class.datetime.php

http://php.net/manual/en/datetime.diff.php

http://php.net/manual/en/class.dateinterval.php

...