Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Sandro36

Newbie
  
  • Posts

    1
  • Joined

  • Last visited

Recent Profile Visitors

664 profile views

Sandro36's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. Существует проблема. При рассылки почты через "Почтовую рассылку" почта не отправляется, а выходит следующая ошибка в журнале: 2016-07-24 13:03:17 - PHP Warning: json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in .../public_html/system/storage/modification/admin/controller/marketing/contact.php on line 295 Код нужного файла следующий: (нужная строка выделена в конце) <?php class ControllerMarketingContact extends Controller { private $error = array(); public function index() { $this->load->language('marketing/contact'); $this->document->setTitle($this->language->get('heading_title')); //CKEditor if ($this->config->get('config_editor_default')) { $this->document->addScript('view/javascript/ckeditor/ckeditor.js'); $this->document->addScript('view/javascript/ckeditor/ckeditor_init.js'); } $data['heading_title'] = $this->language->get('heading_title'); $data['text_default'] = $this->language->get('text_default'); $data['text_newsletter'] = $this->language->get('text_newsletter'); $data['text_customer_all'] = $this->language->get('text_customer_all'); $data['text_customer'] = $this->language->get('text_customer'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_affiliate_all'] = $this->language->get('text_affiliate_all'); $data['text_affiliate'] = $this->language->get('text_affiliate'); $data['text_product'] = $this->language->get('text_product'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_store'] = $this->language->get('entry_store'); $data['entry_to'] = $this->language->get('entry_to'); $data['entry_customer_group'] = $this->language->get('entry_customer_group'); $data['entry_customer'] = $this->language->get('entry_customer'); $data['entry_affiliate'] = $this->language->get('entry_affiliate'); $data['entry_product'] = $this->language->get('entry_product'); $data['entry_subject'] = $this->language->get('entry_subject'); $data['entry_message'] = $this->language->get('entry_message'); $data['help_customer'] = $this->language->get('help_customer'); $data['help_affiliate'] = $this->language->get('help_affiliate'); $data['help_product'] = $this->language->get('help_product'); $data['button_send'] = $this->language->get('button_send'); $data['button_cancel'] = $this->language->get('button_cancel'); $data['lang'] = $this->language->get('lang'); $data['token'] = $this->session->data['token']; $data['ckeditor'] = $this->config->get('config_editor_default'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('marketing/contact', 'token=' . $this->session->data['token'], 'SSL') ); $data['cancel'] = $this->url->link('marketing/contact', 'token=' . $this->session->data['token'], 'SSL'); $this->load->model('setting/store'); $data['stores'] = $this->model_setting_store->getStores(); $this->load->model('customer/customer_group'); $data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups(); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('marketing/contact.tpl', $data)); } public function send() { $this->load->language('marketing/contact'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if (!$this->user->hasPermission('modify', 'marketing/contact')) { $json['error']['warning'] = $this->language->get('error_permission'); } if (!$this->request->post['subject']) { $json['error']['subject'] = $this->language->get('error_subject'); } if (!$this->request->post['message']) { $json['error']['message'] = $this->language->get('error_message'); } if (!$json) { $this->load->model('setting/store'); $store_info = $this->model_setting_store->getStore($this->request->post['store_id']); if ($store_info) { $store_name = $store_info['name']; } else { $store_name = $this->config->get('config_name'); } $this->load->model('customer/customer'); $this->load->model('customer/customer_group'); $this->load->model('marketing/affiliate'); $this->load->model('sale/order'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $email_total = 0; $emails = array(); switch ($this->request->post['to']) { case 'newsletter': $customer_data = array( 'filter_newsletter' => 1, 'start' => ($page - 1) * 10, 'limit' => 10 ); $email_total = $this->model_customer_customer->getTotalCustomers($customer_data); $results = $this->model_customer_customer->getCustomers($customer_data); foreach ($results as $result) { $emails[] = $result['email']; } break; case 'revsubscribe': $customer_data = array( 'start' => ($page - 1) * 10, 'limit' => 10 ); $this->load->model('revolution/revsubscribe'); $email_total = $this->model_revolution_revsubscribe->getTotalSubscriptions(); $results = $this->model_revolution_revsubscribe->viewsubscribers($customer_data); foreach ($results as $result) { $emails[] = $result['email']; } break; case 'customer_all': $customer_data = array( 'start' => ($page - 1) * 10, 'limit' => 10 ); $email_total = $this->model_customer_customer->getTotalCustomers($customer_data); $results = $this->model_customer_customer->getCustomers($customer_data); foreach ($results as $result) { $emails[] = $result['email']; } break; case 'customer_group': $customer_data = array( 'filter_customer_group_id' => $this->request->post['customer_group_id'], 'start' => ($page - 1) * 10, 'limit' => 10 ); $email_total = $this->model_customer_customer->getTotalCustomers($customer_data); $results = $this->model_customer_customer->getCustomers($customer_data); foreach ($results as $result) { $emails[$result['customer_id']] = $result['email']; } break; case 'customer': if (!empty($this->request->post['customer'])) { foreach ($this->request->post['customer'] as $customer_id) { $customer_info = $this->model_customer_customer->getCustomer($customer_id); if ($customer_info) { $emails[] = $customer_info['email']; } } } break; case 'affiliate_all': $affiliate_data = array( 'start' => ($page - 1) * 10, 'limit' => 10 ); $email_total = $this->model_marketing_affiliate->getTotalAffiliates($affiliate_data); $results = $this->model_marketing_affiliate->getAffiliates($affiliate_data); foreach ($results as $result) { $emails[] = $result['email']; } break; case 'affiliate': if (!empty($this->request->post['affiliate'])) { foreach ($this->request->post['affiliate'] as $affiliate_id) { $affiliate_info = $this->model_marketing_affiliate->getAffiliate($affiliate_id); if ($affiliate_info) { $emails[] = $affiliate_info['email']; } } } break; case 'product': if (isset($this->request->post['product'])) { $email_total = $this->model_sale_order->getTotalEmailsByProductsOrdered($this->request->post['product']); $results = $this->model_sale_order->getEmailsByProductsOrdered($this->request->post['product'], ($page - 1) * 10, 10); foreach ($results as $result) { $emails[] = $result['email']; } } break; } if ($emails) { $start = ($page - 1) * 10; $end = $start + 10; if ($end < $email_total) { $json['success'] = sprintf($this->language->get('text_sent'), $start, $email_total); } else { $json['success'] = $this->language->get('text_success'); } if ($end < $email_total) { $json['next'] = str_replace('&', '&', $this->url->link('marketing/contact/send', 'token=' . $this->session->data['token'] . '&page=' . ($page + 1), 'SSL')); } else { $json['next'] = ''; } $message = '<html dir="ltr" lang="en">' . "\n"; $message .= ' <head>' . "\n"; $message .= ' <title>' . $this->request->post['subject'] . '</title>' . "\n"; $message .= ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' . "\n"; $message .= ' </head>' . "\n"; $message .= ' <body>' . html_entity_decode($this->request->post['message'].'UNS_UNS', ENT_QUOTES, 'UTF-8') . '</body>' . "\n"; $message .= '</html>' . "\n"; foreach ($emails as $email) { $unsubscribe = ''; if ($this->request->post['to'] == 'revsubscribe') { $unsubscribe = '<br /><small><a href="'.HTTP_CATALOG.'index.php?route=revolution/revsubscribe/unsubscribecustomer&email='.base64_encode($email).'" target="_blank">Отписаться от рассылки</a></small>'; } if (preg_match($this->config->get('config_mail_regexp'), $email)) { $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($email); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($store_name, ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->request->post['subject'], ENT_QUOTES, 'UTF-8')); $mail->setHtml(str_replace('UNS_UNS',$unsubscribe,$message)); $mail->send(); } } } } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); ///// ВОТ ЭТО 295 строка! } } Как исправить проблему? может кто что посоветует?
Guest
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.