1: | <?php
2: | namespace Opencart\Catalog\Controller\Mail;
3: | /**
4: | * Class Affiliate
5: | *
6: | * @package Opencart\Catalog\Controller\Mail
7: | */
8: | class Affiliate extends \Opencart\System\Engine\Controller {
9: | /**
10: | * @param string $route
11: | * @param array<int, mixed> $args
12: | * @param mixed $output
13: | *
14: | * @throws \Exception
15: | *
16: | * @return void
17: | */
18: | public function index(string &$route, array &$args, &$output): void {
19: | $this->load->language('mail/affiliate');
20: |
21: | $store_name = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');
22: |
23: | $subject = sprintf($this->language->get('text_subject'), $store_name);
24: |
25: | $data['text_welcome'] = sprintf($this->language->get('text_welcome'), $store_name);
26: |
27: | $this->load->model('account/customer_group');
28: |
29: | if ($this->customer->isLogged()) {
30: | $customer_group_id = $this->customer->getGroupId();
31: | } else {
32: | $customer_group_id = $args[1]['customer_group_id'];
33: | }
34: |
35: | $customer_group_info = $this->model_account_customer_group->getCustomerGroup($customer_group_id);
36: |
37: | if ($customer_group_info) {
38: | $data['approval'] = ($this->config->get('config_affiliate_approval') || $customer_group_info['approval']);
39: | } else {
40: | $data['approval'] = '';
41: | }
42: |
43: | $data['login'] = $this->url->link('account/affiliate', 'language=' . $this->config->get('config_language'), true);
44: |
45: | $data['store'] = $store_name;
46: | $data['store_url'] = $this->config->get('config_url');
47: |
48: | if ($this->config->get('config_mail_engine')) {
49: | $mail_option = [
50: | 'parameter' => $this->config->get('config_mail_parameter'),
51: | 'smtp_hostname' => $this->config->get('config_mail_smtp_hostname'),
52: | 'smtp_username' => $this->config->get('config_mail_smtp_username'),
53: | 'smtp_password' => html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'),
54: | 'smtp_port' => $this->config->get('config_mail_smtp_port'),
55: | 'smtp_timeout' => $this->config->get('config_mail_smtp_timeout')
56: | ];
57: |
58: | $mail = new \Opencart\System\Library\Mail($this->config->get('config_mail_engine'), $mail_option);
59: |
60: | if ($this->customer->isLogged()) {
61: | $mail->setTo($this->customer->getEmail());
62: | } else {
63: | $mail->setTo($args[1]['email']);
64: | }
65: |
66: | $mail->setFrom($this->config->get('config_email'));
67: | $mail->setSender($store_name);
68: | $mail->setSubject($subject);
69: | $mail->setHtml($this->load->view('mail/affiliate', $data));
70: | $mail->send();
71: | }
72: | }
73: |
74: | /**
75: | * Alert
76: | *
77: | * @param string $route
78: | * @param array<int, mixed> $args
79: | * @param mixed $output
80: | *
81: | * @throws \Exception
82: | *
83: | * @return void
84: | */
85: | public function alert(string &$route, array &$args, &$output): void {
86: | // Send to main admin email if new affiliate email is enabled
87: | if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) {
88: | $this->load->language('mail/affiliate');
89: |
90: | $store_name = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');
91: |
92: | $subject = $this->language->get('text_new_affiliate');
93: |
94: | if ($this->customer->isLogged()) {
95: | $customer_group_id = $this->customer->getGroupId();
96: |
97: | $data['firstname'] = $this->customer->getFirstName();
98: | $data['lastname'] = $this->customer->getLastName();
99: | $data['email'] = $this->customer->getEmail();
100: | $data['telephone'] = $this->customer->getTelephone();
101: | } else {
102: | $customer_group_id = $args[1]['customer_group_id'];
103: |
104: | $data['firstname'] = $args[1]['firstname'];
105: | $data['lastname'] = $args[1]['lastname'];
106: | $data['email'] = $args[1]['email'];
107: | $data['telephone'] = $args[1]['telephone'];
108: | }
109: |
110: | $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8');
111: | $data['company'] = $args[1]['company'];
112: |
113: | $this->load->model('account/customer_group');
114: |
115: | $customer_group_info = $this->model_account_customer_group->getCustomerGroup($customer_group_id);
116: |
117: | if ($customer_group_info) {
118: | $data['customer_group'] = $customer_group_info['name'];
119: | } else {
120: | $data['customer_group'] = '';
121: | }
122: |
123: | $data['store'] = $store_name;
124: | $data['store_url'] = $this->config->get('config_url');
125: |
126: | if ($this->config->get('config_mail_engine')) {
127: | $mail_option = [
128: | 'parameter' => $this->config->get('config_mail_parameter'),
129: | 'smtp_hostname' => $this->config->get('config_mail_smtp_hostname'),
130: | 'smtp_username' => $this->config->get('config_mail_smtp_username'),
131: | 'smtp_password' => html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'),
132: | 'smtp_port' => $this->config->get('config_mail_smtp_port'),
133: | 'smtp_timeout' => $this->config->get('config_mail_smtp_timeout')
134: | ];
135: |
136: | $mail = new \Opencart\System\Library\Mail($this->config->get('config_mail_engine'), $mail_option);
137: | $mail->setTo($this->config->get('config_email'));
138: | $mail->setFrom($this->config->get('config_email'));
139: | $mail->setSender($store_name);
140: | $mail->setSubject($subject);
141: | $mail->setHtml($this->load->view('mail/affiliate_alert', $data));
142: | $mail->send();
143: |
144: | // Send to additional alert emails if new affiliate email is enabled
145: | $emails = explode(',', $this->config->get('config_mail_alert_email'));
146: |
147: | foreach ($emails as $email) {
148: | if (oc_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) {
149: | $mail->setTo(trim($email));
150: | $mail->send();
151: | }
152: | }
153: | }
154: | }
155: | }
156: | }
157: |

OpenCart API API documentation generated by ApiGen dev-master