Some more refactoring for subgroups.
[timetracker.git] / invoice_send.php
index 399e08c..135453b 100644 (file)
@@ -31,21 +31,26 @@ import('form.Form');
 import('ttInvoiceHelper');
 import('ttSysConfig');
 
-// Access check.
-if (!ttAccessCheck(right_view_invoices)) {
+// Access checks.
+if (!(ttAccessAllowed('manage_invoices') || ttAccessAllowed('view_own_invoices'))) {
   header('Location: access_denied.php');
   exit();
 }
-
+if (!$user->isPluginEnabled('iv')) {
+  header('Location: feature_disabled.php');
+  exit();
+}
 $cl_invoice_id = (int)$request->getParameter('id');
-$invoice = ttInvoiceHelper::getInvoice($cl_invoice_id); 
-$sc = new ttSysConfig($user->id);
+$invoice = ttInvoiceHelper::getInvoice($cl_invoice_id);
+if (!$invoice) {
+  header('Location: access_denied.php');
+  exit();
+}
+// End of access checks.
 
-// Security check.
-if (!$cl_invoice_id || !$invoice)
-  die ($i18n->getKey('error.sys'));
+$sc = new ttSysConfig($user->id);
 
-if ($request->getMethod() == 'POST') {
+if ($request->isPost()) {
   $cl_receiver = trim($request->getParameter('receiver'));
   $cl_cc = trim($request->getParameter('cc'));
   $cl_subject = trim($request->getParameter('subject'));
@@ -53,7 +58,7 @@ if ($request->getMethod() == 'POST') {
 } else {
   $cl_receiver = $sc->getValue(SYSC_LAST_INVOICE_EMAIL);
   $cl_cc = $sc->getValue(SYSC_LAST_INVOICE_CC);
-  $cl_subject = $i18n->getKey('title.invoice').' '.$invoice['name'].', '.$user->team;
+  $cl_subject = $i18n->get('title.invoice').' '.$invoice['name'].', '.$user->group_name;
 }
 
 $form = new Form('mailForm');
@@ -62,16 +67,16 @@ $form->addInput(array('type'=>'text','name'=>'receiver','style'=>'width: 300px;'
 $form->addInput(array('type'=>'text','name'=>'cc','style'=>'width: 300px;','value'=>$cl_cc));
 $form->addInput(array('type'=>'text','name'=>'subject','style'=>'width: 300px;','value'=>$cl_subject));
 $form->addInput(array('type'=>'textarea','name'=>'comment','maxlength'=>'250','style'=>'width: 300px; height: 60px;'));
-$form->addInput(array('type'=>'submit','name'=>'btn_send','value'=>$i18n->getKey('button.send')));
+$form->addInput(array('type'=>'submit','name'=>'btn_send','value'=>$i18n->get('button.send')));
 
-if ($request->getMethod() == 'POST') {
+if ($request->isPost()) {
   // Validate user input.
-  if (!ttValidEmailList($cl_receiver)) $errors->add($i18n->getKey('error.field'), $i18n->getKey('form.mail.to'));
-  if (!ttValidEmailList($cl_cc, true)) $errors->add($i18n->getKey('error.field'), $i18n->getKey('form.mail.cc'));
-  if (!ttValidString($cl_subject)) $errors->add($i18n->getKey('error.field'), $i18n->getKey('form.mail.subject'));
-  if (!ttValidString($cl_comment, true)) $errors->add($i18n->getKey('error.field'), $i18n->getKey('label.comment'));
+  if (!ttValidEmailList($cl_receiver)) $err->add($i18n->get('error.field'), $i18n->get('form.mail.to'));
+  if (!ttValidEmailList($cl_cc, true)) $err->add($i18n->get('error.field'), $i18n->get('label.cc'));
+  if (!ttValidString($cl_subject)) $err->add($i18n->get('error.field'), $i18n->get('label.subject'));
+  if (!ttValidString($cl_comment, true)) $err->add($i18n->get('error.field'), $i18n->get('label.comment'));
 
-  if ($errors->isEmpty()) {
+  if ($err->no()) {
     // Save last invoice emails for future use.
     $sc->setValue(SYSC_LAST_INVOICE_EMAIL, $cl_receiver);
     $sc->setValue(SYSC_LAST_INVOICE_CC, $cl_cc);
@@ -86,15 +91,27 @@ if ($request->getMethod() == 'POST') {
     $mailer->setReceiver($cl_receiver);
     if (isset($cl_cc))
       $mailer->setReceiverCC($cl_cc);
-    $mailer->setSendType(MAIL_MODE);
+    if (!empty($user->bcc_email))
+      $mailer->setReceiverBCC($user->bcc_email);
+    $mailer->setMailMode(MAIL_MODE);
     if ($mailer->send($cl_subject, $body))
-      $messages->add($i18n->getKey('form.mail.invoice_sent'));
+      $msg->add($i18n->get('form.mail.invoice_sent'));
     else
-      $errors->add($i18n->getKey('error.mail_send'));
+      $err->add($i18n->get('error.mail_send'));
   }
-} // POST
+} // isPost
+
+$smarty->assign('sender', SENDER);
+if (function_exists('imap_mime_header_decode')) {
+  // Decode sender in case it is encoded. PHP IMAP extension must be installed for us to get here.
+  $elements = imap_mime_header_decode(SENDER);
+  if (count($elements) > 1) {
+      // Reassign sender.
+      $smarty->assign('sender', $elements[count($elements) - 2]->text);
+  }
+}
 
-$smarty->assign('title', $i18n->getKey('title.send_invoice'));
+$smarty->assign('title', $i18n->get('title.send_invoice'));
 $smarty->assign('forms', array($form->getName()=>$form->toArray()));
 $smarty->assign('onload', 'onLoad="document.mailForm.'.($cl_receiver?'comment':'receiver').'.focus()"');
 $smarty->assign('content_page_name', 'mail.tpl');