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; }
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'])); } } }