/**
  * Execute notification
  *
  * @return bool
  */
 public function notify()
 {
     global $ilSetting;
     if (!$this->email) {
         return false;
     }
     $this->mailer->To($this->email);
     $from = $ilSetting->get('mail_external_sender_noreply');
     if ($from) {
         $this->mailer->From($from);
     }
     $this->mailer->Subject($this->getSubject());
     $this->mailer->Body($this->getBody());
     if ($this->attach_certificate) {
         $this->mailer->Attach($this->certificate->getFilePath());
     }
     $this->mailer->Send();
     return true;
 }
 function sendMail($sid, $to, $cc, $bcc, $sender, $subject, $message, $attach)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     global $ilLog;
     include_once 'Services/Mail/classes/class.ilMimeMail.php';
     $mmail = new ilMimeMail();
     $mmail->autoCheck(false);
     $mmail->From($sender);
     $mmail->To(explode(',', $to));
     $mmail->Subject($subject);
     $mmail->Body($message);
     if ($cc) {
         $mmail->Cc(explode(',', $cc));
     }
     if ($bcc) {
         $mmail->Bcc(explode(',', $bcc));
     }
     if ($attach) {
         // mjansen: switched separator from "," to "#:#" because of mantis bug #6039
         // for backward compatibility we have to check if the substring "#:#" exists as leading separator
         // otherwise we should use ";"
         if (strpos($attach, '#:#') === 0) {
             $attach = substr($attach, strlen('#:#'));
             $attachments = explode('#:#', $attach);
         } else {
             $attachments = explode(',', $attach);
         }
         foreach ($attachments as $attachment) {
             $mmail->Attach($attachment);
         }
     }
     $mmail->Send();
     $ilLog->write('SOAP: sendMail(): ' . $to . ', ' . $cc . ', ' . $bcc);
     return true;
 }
 /**
  * send mime mail using class.ilMimeMail.php
  * All external mails are send to SOAP::sendMail starting a kind of background process
  * @param string of recipients
  * @param string of recipients
  * @param string of recipients
  * @param string subject
  * @param string message
  * @param array attachments
  * @param bool prevent soap
  * @access	public
  * @return	array of saved data
  */
 function sendMimeMail($a_rcp_to, $a_rcp_cc, $a_rcp_bcc, $a_m_subject, $a_m_message, $a_attachments, $a_no_soap = false)
 {
     include_once "Services/Mail/classes/class.ilMimeMail.php";
     #var_dump("<pre>",$a_rcp_to,$a_rcp_cc,$a_rcp_bcc,$a_m_subject,$a_m_message,$a_attachments,"<pre>");
     #$inst_name = $this->ilias->getSetting("inst_name") ? $this->ilias->getSetting("inst_name") : "ILIAS 4";
     #$a_m_subject = "[".$inst_name."] ".$a_m_subject;
     $a_m_subject = self::getSubjectPrefix() . ' ' . $a_m_subject;
     $sender = $this->getMimeMailSender();
     // #10854
     if ($this->isSOAPEnabled() && !$a_no_soap) {
         // Send per soap
         include_once 'Services/WebServices/SOAP/classes/class.ilSoapClient.php';
         $soap_client = new ilSoapClient();
         $soap_client->setResponseTimeout(1);
         $soap_client->enableWSDL(true);
         $soap_client->init();
         $attachments = array();
         $a_attachments = $a_attachments ? $a_attachments : array();
         foreach ($a_attachments as $attachment) {
             $attachments[] = $this->mfile->getAbsolutePath($attachment);
         }
         // mjansen: switched separator from "," to "#:#" because of mantis bug #6039
         $attachments = implode('#:#', $attachments);
         // mjansen: use "#:#" as leading delimiter
         if (strlen($attachments)) {
             $attachments = "#:#" . $attachments;
         }
         $soap_client->call('sendMail', array($_COOKIE['PHPSESSID'] . '::' . $_COOKIE['ilClientId'], $a_rcp_to, $a_rcp_cc, $a_rcp_bcc, $sender, $a_m_subject, $a_m_message, $attachments));
         return true;
     } else {
         // send direct
         include_once "Services/Mail/classes/class.ilMimeMail.php";
         $mmail = new ilMimeMail();
         $mmail->autoCheck(false);
         $mmail->From($sender);
         $mmail->To($a_rcp_to);
         // Add installation name to subject
         $mmail->Subject($a_m_subject);
         $mmail->Body($a_m_message);
         if ($a_rcp_cc) {
             $mmail->Cc($a_rcp_cc);
         }
         if ($a_rcp_bcc) {
             $mmail->Bcc($a_rcp_bcc);
         }
         if (is_array($a_attachments)) {
             foreach ($a_attachments as $attachment) {
                 $mmail->Attach($this->mfile->getAbsolutePath($attachment));
             }
         }
         $mmail->Send();
     }
 }
 public function __sendBill($bookings)
 {
     global $tpl, $ilSetting;
     $i = 0;
     include_once './Services/UICore/classes/class.ilTemplate.php';
     include_once './Services/Utilities/classes/class.ilUtil.php';
     include_once './Services/Payment/classes/class.ilPaymentSettings.php';
     include_once './Services/Payment/classes/class.ilPaymentShoppingCart.php';
     include_once 'Services/Mail/classes/class.ilMimeMail.php';
     //		$psc_obj = new ilPaymentShoppingCart($this->user_obj);
     $genSet = ilPaymentSettings::_getInstance();
     $currency = $genSet->get('currency_unit');
     //		$tpl = new ilTemplate('./Services/Payment/templates/default/tpl.pay_bill.html', true, true, true);
     $tpl = new ilTemplate('tpl.pay_bill.html', true, true, 'Services/Payment');
     if ($tpl->placeholderExists('HTTP_PATH')) {
         $http_path = ilUtil::_getHttpPath();
         $tpl->setVariable('HTTP_PATH', $http_path);
     }
     ilDatePresentation::setUseRelativeDates(false);
     $tpl->setVariable('DATE', utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['order_date'], IL_CAL_UNIX))));
     $tpl->setVariable('TXT_CREDIT', utf8_decode($this->lng->txt('credit')));
     $tpl->setVariable('TXT_DAY_OF_SERVICE_PROVISION', $this->lng->txt('day_of_service_provision'));
     include_once './Services/Payment/classes/class.ilPayMethods.php';
     $str_paymethod = ilPayMethods::getStringByPaymethod($bookings['list'][$i]['b_pay_method']);
     if (strlen(trim($bookings['transaction_extern']))) {
         $tpl->setVariable('TXT_EXTERNAL_BILL_NO', str_replace('%s', $str_paymethod, utf8_decode($this->lng->txt('external_bill_no'))));
         $tpl->setVariable('EXTERNAL_BILL_NO', $bookings['transaction_extern']);
     }
     $tpl->setVariable('TXT_POSITION', $this->lng->txt('position'));
     $tpl->setVariable('TXT_AMOUNT', $this->lng->txt('amount'));
     $tpl->setVariable('TXT_UNIT_PRICE', utf8_decode($this->lng->txt('unit_price')));
     $tpl->setVariable('VENDOR_ADDRESS', nl2br(utf8_decode($genSet->get('address'))));
     $tpl->setVariable('VENDOR_ADD_INFO', nl2br(utf8_decode($genSet->get('add_info'))));
     $tpl->setVariable('VENDOR_BANK_DATA', nl2br(utf8_decode($genSet->get('bank_data'))));
     $tpl->setVariable('TXT_BANK_DATA', utf8_decode($this->lng->txt('pay_bank_data')));
     $tpl->setVariable('CUSTOMER_FIRSTNAME', utf8_decode($this->user_obj->getFirstname()));
     $tpl->setVariable('CUSTOMER_LASTNAME', utf8_decode($this->user_obj->getLastname()));
     if ($bookings['po_box'] == '') {
         $tpl->setVariable('CUSTOMER_STREET', utf8_decode($bookings['street']));
         // contains also housenumber
     } else {
         $tpl->setVariable('CUSTOMER_STREET', utf8_decode($bookings['po_box']));
     }
     $tpl->setVariable('CUSTOMER_ZIPCODE', utf8_decode($bookings['zipcode']));
     $tpl->setVariable('CUSTOMER_CITY', utf8_decode($bookings['city']));
     $tpl->setVariable('CUSTOMER_COUNTRY', utf8_decode($bookings['country']));
     $tpl->setVariable('BILL_NO', $bookings['transaction']);
     $tpl->setVariable('DATE', date('d.m.Y'));
     $tpl->setVariable('TXT_BILL', utf8_decode($this->lng->txt('pays_bill')));
     $tpl->setVariable('TXT_BILL_NO', utf8_decode($this->lng->txt('pay_bill_no')));
     $tpl->setVariable('TXT_DATE', utf8_decode($this->lng->txt('date')));
     $tpl->setVariable('TXT_ARTICLE', utf8_decode($this->lng->txt('pay_article')));
     $tpl->setVariable('TXT_VAT_RATE', utf8_decode($this->lng->txt('vat_rate')));
     $tpl->setVariable('TXT_VAT_UNIT', utf8_decode($this->lng->txt('vat_unit')));
     $tpl->setVariable('TXT_PRICE', utf8_decode($this->lng->txt('price_a')));
     for ($i = 0; $i < count($bookings['list']); $i++) {
         $tmp_pobject = new ilPaymentObject($this->user_obj, $bookings['list'][$i]['pobject_id']);
         $assigned_coupons = '';
         if (!empty($_SESSION['coupons'][$this->session_var])) {
             foreach ($_SESSION['coupons'][$this->session_var] as $coupon) {
                 $this->coupon_obj->setId($coupon['pc_pk']);
                 $this->coupon_obj->setCurrentCoupon($coupon);
                 if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId())) {
                     $assigned_coupons .= '<br />' . $this->lng->txt('paya_coupons_coupon') . ': ' . $coupon['pcc_code'];
                 }
             }
         }
         $tpl->setCurrentBlock('loop');
         $tpl->setVariable('LOOP_POSITION', $i + 1);
         $tpl->setVariable('LOOP_AMOUNT', '1');
         $tpl->setVariable('LOOP_TXT_PERIOD_OF_SERVICE_PROVISION', utf8_decode($this->lng->txt('period_of_service_provision')));
         $tpl->setVariable('LOOP_OBJ_TYPE', utf8_decode($this->lng->txt($bookings['list'][$i]['type'])));
         $tpl->setVariable('LOOP_TITLE', $tmp = utf8_decode($bookings['list'][$i]['title']));
         $tpl->setVariable('LOOP_COUPON', utf8_decode($assigned_coupons));
         $tpl->setVariable('LOOP_TXT_ENTITLED_RETRIEVE', utf8_decode($this->lng->txt('pay_entitled_retrieve')));
         if ($bookings['list'][$i]['duration'] == 0 && $bookings['list'][$i]['access_enddate'] == NULL) {
             $tpl->setVariable('LOOP_DURATION', utf8_decode($this->lng->txt('unlimited_duration')));
         } else {
             $access_startdate = utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['access_startdate'], IL_CAL_DATE)));
             $access_enddate = utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['access_enddate'], IL_CAL_DATE)));
             $tmp_duration = $access_startdate . ' - ' . $access_enddate;
             if ($bookings['list'][$i]['duration'] > 0) {
                 $tmp_duration .= ' /  ' . $bookings['list'][$i]['duration'] . ' ' . utf8_decode($this->lng->txt('paya_months'));
             }
             $tpl->setVariable('LOOP_DURATION', $tmp_duration);
         }
         #$currency = $bookings['list'][$i]['currency_unit'];
         $tpl->setVariable('LOOP_VAT_RATE', number_format($bookings['list'][$i]['vat_rate'], 2, ',', '.') . ' %');
         $tpl->setVariable('LOOP_VAT_UNIT', number_format($bookings['list'][$i]['vat_unit'], 2, ',', '.') . ' ' . $currency);
         $tpl->setVariable('LOOP_PRICE', number_format($bookings['list'][$i]['price'], 2, ',', '.') . ' ' . $currency);
         $tpl->setVariable('LOOP_UNIT_PRICE', number_format($bookings['list'][$i]['price'], 2, ',', '.') . ' ' . $currency);
         $tpl->parseCurrentBlock('loop');
         $bookings['total'] += (double) $bookings[$i]['price'];
         $bookings['total_vat'] += (double) $bookings[$i]['vat_unit'];
         #$bookings['total_discount'] +=(float) $bookings[$i]['discount'];
         unset($tmp_pobject);
         $sub_total_amount = $bookings['total'];
     }
     $bookings['total'] += $bookings['total_discount'];
     if ($bookings['total_discount'] < 0) {
         $tpl->setCurrentBlock('cloop');
         $tpl->setVariable('TXT_SUBTOTAL_AMOUNT', utf8_decode($this->lng->txt('pay_bmf_subtotal_amount')));
         $tpl->setVariable('SUBTOTAL_AMOUNT', number_format($sub_total_amount, 2, ',', '.') . ' ' . $currency);
         $tpl->setVariable('TXT_COUPON', utf8_decode($this->lng->txt('paya_coupons_coupon')));
         $tpl->setVariable('BONUS', number_format($bookings['total_discount'], 2, ',', '.') . ' ' . $currency);
         $tpl->parseCurrentBlock();
     }
     if ($bookings['total'] < 0) {
         $bookings['total'] = 0.0;
         //	$bookings['total_vat'] = 0.0;
     }
     $total_net_price = $sub_total_amount - $bookings['total_vat'];
     $tpl->setVariable('TXT_TOTAL_NETPRICE', utf8_decode($this->lng->txt('total_netprice')));
     $tpl->setVariable('TOTAL_NETPRICE', number_format($total_net_price, 2, ',', '.') . ' ' . $currency);
     $tpl->setVariable('TXT_TOTAL_AMOUNT', utf8_decode($this->lng->txt('pay_bmf_total_amount')));
     $tpl->setVariable('TOTAL_AMOUNT', number_format($bookings['total'], 2, ',', '.') . ' ' . $currency);
     if ($bookings['total_vat'] > 0) {
         $tpl->setVariable('TOTAL_VAT', number_format($bookings['total_vat'], 2, ',', '.') . ' ' . $currency);
         $tpl->setVariable('TXT_TOTAL_VAT', utf8_decode($this->lng->txt('plus_vat')));
     }
     if (1 == $bookings['list'][0]['b_pay_method']) {
         $tpl->setVariable('TXT_PAYMENT_TYPE', utf8_decode($this->lng->txt('pay_unpayed_bill')));
     } else {
         $tpl->setVariable('TXT_PAYMENT_TYPE', utf8_decode($this->lng->txt('pay_payed_bill')));
     }
     if (!@file_exists($genSet->get('pdf_path'))) {
         ilUtil::makeDir($genSet->get('pdf_path'));
     }
     $file_name = time();
     if (@file_exists($genSet->get('pdf_path'))) {
         ilUtil::html2pdf($tpl->get(), $genSet->get('pdf_path') . '/' . $file_name . '.pdf');
     }
     if (@file_exists($genSet->get('pdf_path') . '/' . $file_name . '.pdf') && $this->user_obj->getEmail() != '' && $ilSetting->get('admin_email') != '') {
         $m = new ilMimeMail();
         // create the mail
         $m->From($ilSetting->get('admin_email'));
         $m->To($this->user_obj->getEmail());
         $m->Subject($this->lng->txt('pay_message_subject'));
         // if there is no mailbillingtext use this as standard
         $message = $this->lng->txt('pay_message_hello') . ' ' . $this->user_obj->getFirstname() . ' ' . $this->user_obj->getLastname() . ",\n\n";
         $message .= $this->lng->txt('pay_message_thanks') . "\n\n";
         $message .= $this->lng->txt('pay_message_attachment') . "\n\n";
         $message .= $this->lng->txt('pay_message_regards') . "\n\n";
         $message .= strip_tags($genSet->get('address'));
         //replacePlaceholders...
         $billing_text = $genSet->getMailBillingText();
         if (!$billing_text) {
             $message = '';
         }
         if ($genSet->getMailUsePlaceholders() == 1) {
             include_once './Services/Payment/classes/class.ilBillingMailPlaceholdersPropertyGUI.php';
             $message = ilBillingMailPlaceholdersPropertyGUI::replaceBillingMailPlaceholders($billing_text, $this->user_obj->getId());
         }
         $m->Body($message);
         // set the body
         $m->Attach($genSet->get('pdf_path') . '/' . $file_name . '.pdf', 'application/pdf');
         // attach a file of type image/gif
         if ($genSet->get('attach_sr_invoice') == 1) {
             require_once 'Services/RTE/classes/class.ilRTE.php';
             $regulations = ilRTE::_replaceMediaObjectImageSrc($genSet->get('statutory_regulations'), 1);
             $reg_file_name = 'statutory_regulations';
             if (@file_exists($genSet->get('pdf_path'))) {
                 ilUtil::html2pdf($regulations, $genSet->get('pdf_path') . '/' . $reg_file_name . '.pdf');
             }
             $m->Attach($genSet->get('pdf_path') . '/' . $reg_file_name . '.pdf', 'application/pdf');
             // attach a file of type image/gif
         }
         $m->Send();
         // send the mail
     }
     @unlink($genSet->get('pdf_path') . '/' . $file_name . '.html');
     @unlink($genSet->get('pdf_path') . '/' . $file_name . '.pdf');
     unset($current_booking_id);
     unset($pobject);
     unset($_SESSION['coupons'][$this->session_var]);
     $this->ctrl->redirectByClass('ilShopBoughtObjectsGUI', '');
 }
Esempio n. 5
0
 /**
  * Sends the mail with its object properties as MimeMail
  * It first tries to read the mail body, subject and sender address from posted named formular fields. 
  * If no field values found the defaults are used.
  * Placehoders will be replaced by the appropriate data.
  * @access	public
  * @param object ilUser
  */
 function send()
 {
     global $ilSetting;
     $user =& $this->getUser();
     if (!$user->getEmail()) {
         return false;
     }
     // determine language and get account mail data
     // fall back to default language if acccount mail data is not given for user language.
     $amail = $this->readAccountMail($user->getLanguage());
     if ($amail['body'] == '' || $amail['subject'] == '') {
         $amail = $this->readAccountMail($ilSetting->get('language'));
         $lang = $ilSetting->get('language');
     } else {
         $lang = $user->getLanguage();
     }
     // fallback if mail data is still not given
     if ($this->areLangVariablesUsedAsFallback() && ($amail['body'] == '' || $amail['subject'] == '')) {
         $lang = $user->getLanguage();
         $tmp_lang = new ilLanguage($lang);
         // mail subject
         $mail_subject = $tmp_lang->txt('reg_mail_subject');
         $timelimit = "";
         if (!$user->checkTimeLimit()) {
             $tmp_lang->loadLanguageModule("registration");
             // #6098
             $timelimit_from = new ilDateTime($user->getTimeLimitFrom(), IL_CAL_UNIX);
             $timelimit_until = new ilDateTime($user->getTimeLimitUntil(), IL_CAL_UNIX);
             $timelimit = ilDatePresentation::formatPeriod($timelimit_from, $timelimit_until);
             $timelimit = "\n" . sprintf($tmp_lang->txt('reg_mail_body_timelimit'), $timelimit) . "\n\n";
         }
         // mail body
         $mail_body = $tmp_lang->txt('reg_mail_body_salutation') . ' ' . $user->getFullname() . ",\n\n" . $tmp_lang->txt('reg_mail_body_text1') . "\n\n" . $tmp_lang->txt('reg_mail_body_text2') . "\n" . ILIAS_HTTP_PATH . '/login.php?client_id=' . CLIENT_ID . "\n";
         $mail_body .= $tmp_lang->txt('login') . ': ' . $user->getLogin() . "\n";
         $mail_body .= $tmp_lang->txt('passwd') . ': ' . $this->u_password . "\n";
         $mail_body .= "\n" . $timelimit;
         $mail_body .= $tmp_lang->txt('reg_mail_body_text3') . "\n\r";
         $mail_body .= $user->getProfileAsString($tmp_lang);
     } else {
         // replace placeholders
         $mail_subject = $this->replacePlaceholders($amail['subject'], $user, $amail, $lang);
         $mail_body = $this->replacePlaceholders($amail['body'], $user, $amail, $lang);
     }
     // send the mail
     include_once 'Services/Mail/classes/class.ilMimeMail.php';
     $mmail = new ilMimeMail();
     $mmail->autoCheck(false);
     $mmail->From($ilSetting->get('admin_email'));
     $mmail->Subject($mail_subject);
     $mmail->To($user->getEmail());
     $mmail->Body($mail_body);
     foreach ($this->attachments as $filename => $display_name) {
         $mmail->Attach($filename, "", "attachment", $display_name);
     }
     /*
     echo "<br><br><b>From</b>:".$ilSetting->get("admin_email");
     echo "<br><br><b>To</b>:".$user->getEmail();
     echo "<br><br><b>Subject</b>:".$mail_subject;
     echo "<br><br><b>Body</b>:".$mail_body;
     return true;*/
     $mmail->Send();
     return true;
 }