Пример #1
0
 /**
  * Subscribe a user to the newsletter
  *
  * @param $form_data array
  * @return string confirmation dialog on success or boolean false on error
  */
 protected function subscribeNewsletter($form_data = array())
 {
     global $kitContactInterface;
     global $dbContactArrayCfg;
     $use_subscribe = false;
     $subscribe = false;
     // pruefen ob kit_newsletter_subscribe verwendet wird
     if (isset($_REQUEST[kitContactInterface::kit_newsletter_subscribe])) {
         $use_subscribe = true;
         if (is_bool($_REQUEST[kitContactInterface::kit_newsletter_subscribe])) {
             $subscribe = $_REQUEST[kitContactInterface::kit_newsletter_subscribe];
         } elseif (is_numeric($_REQUEST[kitContactInterface::kit_newsletter_subscribe])) {
             $subscribe = $_REQUEST[kitContactInterface::kit_newsletter_subscribe] == 1 ? true : false;
         } else {
             $subscribe = strtolower($_REQUEST[kitContactInterface::kit_newsletter_subscribe]) == 'true' ? true : false;
         }
     }
     $newsletter = '';
     if (isset($_REQUEST[kitContactInterface::kit_newsletter]) && is_array($_REQUEST[kitContactInterface::kit_newsletter])) {
         $newsletter = implode(',', $_REQUEST[kitContactInterface::kit_newsletter]);
     } elseif (isset($_REQUEST[kitContactInterface::kit_newsletter])) {
         $newsletter = $_REQUEST[kitContactInterface::kit_newsletter];
     }
     $email = $_REQUEST[kitContactInterface::kit_email];
     $register = array();
     $contact = array();
     $send_activation = false;
     if (!$kitContactInterface->subscribeNewsletter($email, $newsletter, $subscribe, $use_subscribe, $register, $contact, $send_activation)) {
         if ($kitContactInterface->isError()) {
             $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $kitContactInterface->getError()));
             return false;
         }
         $this->setMessage($kitContactInterface->getMessage());
         return $this->showForm();
     }
     $message = $kitContactInterface->getMessage();
     // special: check contact language
     if (isset($_REQUEST[kitContactInterface::kit_contact_language]) && $_REQUEST[kitContactInterface::kit_contact_language] !== strtolower(LANGUAGE)) {
         $update = array();
         $update[kitContactInterface::kit_contact_language] = strtolower(LANGUAGE);
         if (!$kitContactInterface->updateContact($register[dbKITregister::field_contact_id], $update)) {
             $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $kitContactInterface->getError()));
             return false;
         }
     }
     if ($send_activation == false) {
         $message .= sprintf($this->lang->translate('<p>The newsletter abonnement for the email address <b>{{ email }}</b> was updated.</p>', array('email' => $email)));
         $this->setMessage($message);
         $data = array('message' => $this->getMessage());
         return $this->getTemplate('prompt.htt', $data);
     } else {
         // Aktivierungskey versenden
         $form = array('activation_link' => sprintf('%s%s%s', $this->page_link, strpos($this->page_link, '?') === false ? '?' : '&', http_build_query(array(self::request_action => self::action_activation_key, self::request_key => $register[dbKITregister::field_register_key], self::request_provider_id => $form_data[dbKITform::field_provider_id], self::request_activation_type => self::activation_type_newsletter))), 'datetime' => date(cfg_datetime_str), 'subject' => $form_data[dbKITform::field_title]);
         $newsletter_array = array();
         $na = explode(',', $newsletter);
         foreach ($na as $nl) {
             $SQL = sprintf("SELECT %s FROM %s WHERE %s='%s'", dbKITcontactArrayCfg::field_value, $dbContactArrayCfg->getTableName(), dbKITcontactArrayCfg::field_identifier, $nl);
             $result = array();
             if (!$dbContactArrayCfg->sqlExec($SQL, $result)) {
                 $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $dbContactArrayCfg->getError()));
                 return false;
             }
             if (count($result) > 0) {
                 $newsletter_array[] = array('name' => $nl, 'value' => $result[0][dbKITcontactArrayCfg::field_value]);
             }
         }
         $data = array('form' => $form, 'contact' => $contact, 'newsletter' => $newsletter_array);
         $provider_data = array();
         if (!$kitContactInterface->getServiceProviderByID($form_data[dbKITform::field_provider_id], $provider_data)) {
             if ($kitContactInterface->isError()) {
                 $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $kitContactInterface->getError()));
             } else {
                 $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $kitContactInterface->getMessage()));
             }
             return false;
         }
         $provider_email = $provider_data['email'];
         $provider_name = $provider_data['name'];
         $relaying = (bool) $provider_data['relaying'];
         $client_mail = $this->getTemplate('mail.client.register.newsletter.htt', $data);
         if ($form_data[dbKITform::field_email_html] == dbKITform::html_off) {
             $client_mail = strip_tags($client_mail);
         }
         $client_subject = strip_tags($this->getTemplate('mail.client.subject.htt', $data));
         $mail = new kitMail($form_data[dbKITform::field_provider_id]);
         if (!$mail->mail($client_subject, $client_mail, $provider_email, $provider_name, array($contact[kitContactInterface::kit_email] => $contact[kitContactInterface::kit_email]), $form_data[dbKITform::field_email_html] == dbKITform::html_on ? true : false)) {
             $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $this->lang->translate('Can\'t send the email to <b>{{ email }}</b>!', array('email' => $contact[kitContactInterface::kit_email]))));
             return false;
         }
         $provider_mail = $this->getTemplate('mail.provider.register.newsletter.htt', $data);
         if ($form_data[dbKITform::field_email_html] == dbKITform::html_off) {
             $provider_mail = strip_tags($provider_mail);
         }
         $provider_subject = strip_tags($this->getTemplate('mail.provider.subject.htt', $data));
         $cc_array = array();
         $ccs = explode(',', $form_data[dbKITform::field_email_cc]);
         foreach ($ccs as $cc) {
             if (!empty($cc)) {
                 $cc_array[$cc] = $cc;
             }
         }
         $mail = new kitMail($form_data[dbKITform::field_provider_id]);
         if (!$relaying) {
             $mail->AddReplyTo($contact[kitContactInterface::kit_email]);
             $from_name = $contact[kitContactInterface::kit_email];
             $from_email = $provider_email;
         } else {
             $from_name = $contact[kitContactInterface::kit_email];
             $from_email = $contact[kitContactInterface::kit_email];
         }
         if (!$mail->mail($provider_subject, $provider_mail, $from_email, $from_name, array($provider_email => $provider_name), $form_data[dbKITform::field_email_html] == dbKITform::html_on ? true : false, $cc_array)) {
             $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $this->lang->translate('Can\'t send the email to <b>{{ email }}</b>!', array('email' => SERVER_EMAIL))));
             return false;
         }
         return $this->getTemplate('confirm.register.newsletter.htt', $data);
     }
 }