コード例 #1
0
ファイル: mailer.php プロジェクト: yalmasri/fusioninvoice
 public function invoice($invoice_id)
 {
     if ($this->mailer_configured == TRUE) {
         if ($this->input->post('btn_send')) {
             $from = $this->input->post('from_name') ? array($this->input->post('from_email'), $this->input->post('from_name')) : $this->input->post('from_email');
             $invoice_template = $this->input->post('invoice_template');
             $to = $this->input->post('to_email');
             $subject = $this->input->post('subject');
             $body = $this->input->post('body') ?: ' ';
             $cc = $this->input->post('to_cc');
             $bcc = $this->input->post('to_bcc');
             if (email_invoice($invoice_id, $invoice_template, $from, $to, $subject, $body, $cc, $bcc)) {
                 $this->mdl_invoices->mark_sent($invoice_id);
                 $this->session->set_flashdata('alert_success', lang('email_successfully_sent'));
                 redirect('dashboard');
             } else {
                 redirect('mailer/invoice/' . $invoice_id);
             }
         }
         $this->load->model('invoices/mdl_templates');
         $this->load->model('invoices/mdl_invoices');
         $this->load->model('email_templates/mdl_email_templates');
         $invoice = $this->mdl_invoices->where('fi_invoices.invoice_id', $invoice_id)->get()->row();
         $this->load->helper('template');
         $selected_pdf_template = select_pdf_invoice_template($invoice);
         $selected_email_template = select_email_invoice_template($invoice);
         if ($selected_email_template) {
             $email_template = $this->mdl_email_templates->where('email_template_id', $selected_email_template)->get();
             if ($email_template->num_rows()) {
                 $this->layout->set('body', $email_template->row()->email_template_body);
             } else {
                 $this->layout->set('body', '');
             }
         } else {
             $this->layout->set('body', '');
         }
         $this->layout->set('selected_pdf_template', $selected_pdf_template);
         $this->layout->set('selected_email_template', $selected_email_template);
         $this->layout->set('email_templates', $this->mdl_email_templates->get()->result());
         $this->layout->set('invoice', $invoice);
         $this->layout->set('invoice_templates', $this->mdl_templates->get_invoice_templates());
         $this->layout->buffer('content', 'mailer/invoice');
         $this->layout->render();
     } else {
         $this->layout->buffer('content', 'mailer/not_configured');
         $this->layout->render();
     }
 }
コード例 #2
0
ファイル: cron.php プロジェクト: quantumsized/InvoicePlane
 public function recur($cron_key = NULL)
 {
     if ($cron_key == $this->mdl_settings->setting('cron_key')) {
         $this->load->model('invoices/mdl_invoices_recurring');
         $this->load->model('invoices/mdl_invoices');
         $this->load->helper('mailer');
         // Gather a list of recurring invoices to generate
         $invoices_recurring = $this->mdl_invoices_recurring->active()->get()->result();
         foreach ($invoices_recurring as $invoice_recurring) {
             // This is the original invoice id
             $source_id = $invoice_recurring->invoice_id;
             // This is the original invoice
             // $invoice = $this->db->where('ip_invoices.invoice_id', $source_id)->get('ip_invoices')->row();
             $invoice = $this->mdl_invoices->get_by_id($source_id);
             // Create the new invoice
             $db_array = array('client_id' => $invoice->client_id, 'invoice_date_created' => $invoice_recurring->recur_next_date, 'invoice_date_due' => $this->mdl_invoices->get_date_due($invoice_recurring->recur_next_date), 'invoice_group_id' => $invoice->invoice_group_id, 'user_id' => $invoice->user_id, 'invoice_number' => $this->mdl_invoices->get_invoice_number($invoice->invoice_group_id), 'invoice_url_key' => $this->mdl_invoices->get_url_key(), 'invoice_terms' => $invoice->invoice_terms);
             // This is the new invoice id
             $target_id = $this->mdl_invoices->create($db_array, FALSE);
             // Copy the original invoice to the new invoice
             $this->mdl_invoices->copy_invoice($source_id, $target_id);
             // Update the next recur date for the recurring invoice
             $this->mdl_invoices_recurring->set_next_recur_date($invoice_recurring->invoice_recurring_id);
             // Email the new invoice if applicable
             if ($this->mdl_settings->setting('automatic_email_on_recur') and mailer_configured()) {
                 $new_invoice = $this->mdl_invoices->get_by_id($target_id);
                 // Set the email body, use default email template if available
                 $this->load->model('email_templates/mdl_email_templates');
                 $email_template_id = $this->mdl_settings->setting('email_invoice_template');
                 if (!$email_template_id) {
                     return;
                 }
                 $email_template = $this->mdl_email_templates->where('email_template_id', $email_template_id)->get();
                 if ($email_template->num_rows() == 0) {
                     return;
                 }
                 $tpl = $email_template->row();
                 $from = !empty($tpl->email_template_from_email) ? array($tpl->email_template_from_email, $tpl->email_template_from_name) : array($invoice->user_email, "");
                 $subject = !empty($tpl->email_template_subject) ? $tpl->email_template_subject : lang('invoice') . ' #' . $new_invoice->invoice_number;
                 email_invoice($target_id, $tpl->email_template_pdf_template, $from, $invoice->client_email, $subject, $tpl->email_template_body, $tpl->email_template_cc, $tpl->email_template_bcc);
                 $this->mdl_invoices->mark_sent($target_id);
             }
         }
     }
 }
コード例 #3
0
ファイル: cron.php プロジェクト: Thewafflication/InvoicePlane
 public function recur($cron_key = null)
 {
     if ($cron_key == $this->mdl_settings->setting('cron_key')) {
         $this->load->model('invoices/mdl_invoices_recurring');
         $this->load->model('invoices/mdl_invoices');
         $this->load->helper('mailer');
         // Gather a list of recurring invoices to generate
         $invoices_recurring = $this->mdl_invoices_recurring->active()->get()->result();
         foreach ($invoices_recurring as $invoice_recurring) {
             // This is the original invoice id
             $source_id = $invoice_recurring->invoice_id;
             // This is the original invoice
             // $invoice = $this->db->where('ip_invoices.invoice_id', $source_id)->get('ip_invoices')->row();
             $invoice = $this->mdl_invoices->get_by_id($source_id);
             // Create the new invoice
             $db_array = array('client_id' => $invoice->client_id, 'invoice_date_created' => $invoice_recurring->recur_next_date, 'invoice_date_due' => $this->mdl_invoices->get_date_due($invoice_recurring->recur_next_date), 'invoice_group_id' => $invoice->invoice_group_id, 'user_id' => $invoice->user_id, 'invoice_number' => $this->mdl_invoices->get_invoice_number($invoice->invoice_group_id), 'invoice_url_key' => $this->mdl_invoices->get_url_key(), 'invoice_terms' => $invoice->invoice_terms);
             // This is the new invoice id
             $target_id = $this->mdl_invoices->create($db_array, false);
             // Copy the original invoice to the new invoice
             $this->mdl_invoices->copy_invoice($source_id, $target_id);
             // Update the next recur date for the recurring invoice
             $this->mdl_invoices_recurring->set_next_recur_date($invoice_recurring->invoice_recurring_id);
             // Email the new invoice if applicable
             if ($this->mdl_settings->setting('automatic_email_on_recur') and mailer_configured()) {
                 $new_invoice = $this->mdl_invoices->get_by_id($target_id);
                 // Set the email body, use default email template if available
                 $this->load->model('email_templates/mdl_email_templates');
                 $email_template_id = $this->mdl_settings->setting('email_invoice_template');
                 if (!$email_template_id) {
                     return;
                 }
                 $email_template = $this->mdl_email_templates->where('email_template_id', $email_template_id)->get();
                 if ($email_template->num_rows() == 0) {
                     return;
                 }
                 $tpl = $email_template->row();
                 // Prepare the attachments
                 $this->load->model('upload/mdl_uploads');
                 $attachment_files = $this->mdl_uploads->get_invoice_uploads($target_id);
                 // Prepare the body
                 $body = $tpl->email_template_body;
                 if (strlen($body) != strlen(strip_tags($body))) {
                     $body = htmlspecialchars_decode($body);
                 } else {
                     $body = htmlspecialchars_decode(nl2br($body));
                 }
                 $from = !empty($tpl->email_template_from_email) ? array($tpl->email_template_from_email, $tpl->email_template_from_name) : array($invoice->user_email, "");
                 $subject = !empty($tpl->email_template_subject) ? $tpl->email_template_subject : trans('invoice') . ' #' . $new_invoice->invoice_number;
                 $pdf_template = $tpl->email_template_pdf_template;
                 $to = $invoice->client_email;
                 $cc = $tpl->email_template_cc;
                 $bcc = $tpl->email_template_bcc;
                 if (email_invoice($target_id, $pdf_template, $from, $to, $subject, $body, $cc, $bcc, $attachment_files)) {
                     $this->mdl_invoices->mark_sent($target_id);
                     $this->mdl_invoice_amounts->calculate($target_id);
                 } else {
                     log_message('warning', 'Invoice ' . $target_id . 'could not be sent. Please review your Email settings.');
                 }
             }
         }
     }
 }
コード例 #4
0
ファイル: mailer.php プロジェクト: webesen/InvoicePlane
 public function send_invoice($invoice_id)
 {
     if ($this->input->post('btn_cancel')) {
         redirect('invoices');
     }
     if (!$this->mailer_configured) {
         return;
     }
     $this->load->model('upload/mdl_uploads');
     $from = array($this->input->post('from_email'), $this->input->post('from_name'));
     $pdf_template = $this->input->post('pdf_template');
     $to = $this->input->post('to_email');
     $subject = $this->input->post('subject');
     if (strlen($this->input->post('body')) != strlen(strip_tags($this->input->post('body')))) {
         $body = htmlspecialchars_decode($this->input->post('body'));
     } else {
         $body = htmlspecialchars_decode(nl2br($this->input->post('body')));
     }
     $cc = $this->input->post('cc');
     $bcc = $this->input->post('bcc');
     $attachment_files = $this->mdl_uploads->get_invoice_uploads($invoice_id);
     if (email_invoice($invoice_id, $pdf_template, $from, $to, $subject, $body, $cc, $bcc, $attachment_files)) {
         $this->mdl_invoices->mark_sent($invoice_id);
         $this->session->set_flashdata('alert_success', lang('email_successfully_sent'));
         redirect('dashboard');
     } else {
         redirect('mailer/invoice/' . $invoice_id);
     }
 }