public function get_id_view()
 {
     $dbc = $this->connection;
     $settings = $this->config->get('PLUGIN_SETTINGS');
     $dbc->selectDB($settings['ScheduledEmailDB']);
     $template = new ScheduledEmailTemplatesModel($dbc);
     $template->scheduledEmailTemplateID($this->id);
     if (!$template->load()) {
         return '<div class="alert alert-danger">Template not found</div>';
     }
     $ret = '<div class="panel panel-default">
         <div class="panel-heading">Edit Template</div>
         <div class="panel-body">
         <form method="post">
         <input type="hidden" name="id" value="' . $this->id . '" />';
     $ret .= '<div class="form-group">
         <label>Template Name</label>
         <input type="text" class="form-control" name="name" value="' . $template->name() . '" />
         </div>';
     $ret .= '<div class="form-group">
         <label>Message Subject</label>
         <input type="text" class="form-control" name="subject" value="' . $template->subject() . '" />
         </div>';
     $ret .= '<div class="form-group">
         <label>Text Content
             <input type="checkbox" name="hasText" value="1" ' . ($template->hasText() ? 'checked' : '') . ' />
         </label>
         <textarea class="form-control" rows="20" name="textCopy">' . $template->textCopy() . '</textarea>
         </div>';
     $ret .= '<div class="form-group">
         <label>HTML Content
             <input type="checkbox" name="hasHTML" value="1" ' . ($template->hasHTML() ? 'checked' : '') . ' />
         </label>
         <textarea class="form-control" rows="20" name="htmlCopy">' . $template->htmlCopy() . '</textarea>
         </div>';
     $ret .= '<div class="form-group">
         <button type="submit" class="btn btn-default">Save Template</button>
         |
         <a href="' . $_SERVER['PHP_SELF'] . '" class="btn btn-default">Back to Template List</a>
         </div>
         </form>
         </div>
         </div>';
     $ret .= '<div class="panel panel-default">
         <div class="panel-heading">Test Template</div>
         <div class="panel-body">
         <form method="post">
         <input type="hidden" name="id" value="' . $this->id . '" />';
     $ret .= '<div class="form-group">
         <label>E-mail</label>
         <input type="email" class="form-control" name="email" />
         </div>
         <div class="form-group">
             <button type="submit" class="btn btn-default">Send Test Email</button>
             |
             <a href="' . $_SERVER['PHP_SELF'] . '" class="btn btn-default">Back to Template List</a>
         </div>
         </form>
         </div>
         </div>';
     return $ret;
 }
示例#2
0
 public function run()
 {
     $settings = $this->config->get('PLUGIN_SETTINGS');
     $dbc = FannieDB::get($settings['ScheduledEmailDB']);
     $sentP = $dbc->prepare('
         UPDATE ScheduledEmailQueue
         SET sentDate=' . $dbc->now() . ',
             sent=1,
             sentToEmail=?
         WHERE scheduledEmailQueueID=?');
     $failP = $dbc->prepare('
         UPDATE ScheduledEmailQueue
         SET sentDate=' . $dbc->now() . ',
             sent=2,
             sentToEmail=?
         WHERE scheduledEmailQueueID=?');
     // find messages due to be sent
     $query = '
         SELECT scheduledEmailQueueID,
             scheduledEmailTemplateID,
             cardNo,
             templateData
         FROM ScheduledEmailQueue
         WHERE sent=0
             AND sendDate <= ' . $dbc->now() . '
         ORDER BY scheduledEmailTemplateID';
     $result = $dbc->query($query);
     $template = new ScheduledEmailTemplatesModel($dbc);
     while ($row = $dbc->fetchRow($result)) {
         $template->scheduledEmailTemplateID($row['scheduledEmailTemplateID']);
         if (!$template->load()) {
             $this->cronMsg('Template does not exist: ' . $row['scheduledEmailTemplateID']);
             continue;
         }
         $member = \COREPOS\Fannie\API\member\MemberREST::get($row['cardNo']);
         $dbc->selectDB($settings['ScheduledEmailDB']);
         // reset current DB
         if ($member === false) {
             $this->cronMsg('Member does not exist: ' . $row['cardNo']);
             continue;
         }
         $email = false;
         foreach ($member['customers'] as $customer) {
             if ($customer['accountHolder']) {
                 $email = $customer['email'];
                 break;
             }
         }
         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
             $this->cronMsg('Member does not have valid email address: ' . $row['cardNo']);
             $dbc->execute($failP, array('no email address', $row['scheduledEmailQueueID']));
             continue;
         }
         $data = json_decode($row['templateData'], true);
         if ($data === null && $row['templateData'] !== null) {
             $this->cronMsg('Invalid template data: ' . $row['data']);
             continue;
         } elseif (!is_array($data)) {
             $data = array();
         }
         if (self::sendEmail($template, $email, $data)) {
             $dbc->execute($sentP, array($email, $row['scheduledEmailQueueID']));
         } else {
             $dbc->execute($failP, array('error sending', $row['scheduledEmailQueueID']));
         }
     }
 }