1: | <?php
|
2: | namespace Opencart\Admin\Controller\Tool;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class Notification extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: | |
12: | |
13: |
|
14: | public function index(): void {
|
15: | $this->load->language('tool/notification');
|
16: |
|
17: | $this->document->setTitle($this->language->get('heading_title'));
|
18: |
|
19: | $data['breadcrumbs'] = [];
|
20: |
|
21: | $data['breadcrumbs'][] = [
|
22: | 'text' => $this->language->get('text_home'),
|
23: | 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'])
|
24: | ];
|
25: |
|
26: | $data['breadcrumbs'][] = [
|
27: | 'text' => $this->language->get('heading_title'),
|
28: | 'href' => $this->url->link('tool/notification', 'user_token=' . $this->session->data['user_token'])
|
29: | ];
|
30: |
|
31: | $data['list'] = $this->getList();
|
32: |
|
33: | $data['user_token'] = $this->session->data['user_token'];
|
34: |
|
35: | $data['header'] = $this->load->controller('common/header');
|
36: | $data['column_left'] = $this->load->controller('common/column_left');
|
37: | $data['footer'] = $this->load->controller('common/footer');
|
38: |
|
39: | $this->response->setOutput($this->load->view('tool/notification', $data));
|
40: | }
|
41: |
|
42: | |
43: | |
44: | |
45: | |
46: |
|
47: | public function list(): void {
|
48: | $this->load->language('tool/notification');
|
49: |
|
50: | $this->response->setOutput($this->getList());
|
51: | }
|
52: |
|
53: | |
54: | |
55: | |
56: | |
57: |
|
58: | public function getList(): string {
|
59: | if (isset($this->request->get['page'])) {
|
60: | $page = (int)$this->request->get['page'];
|
61: | } else {
|
62: | $page = 1;
|
63: | }
|
64: |
|
65: | $url = '';
|
66: |
|
67: | if (isset($this->request->get['page'])) {
|
68: | $url .= '&page=' . $this->request->get['page'];
|
69: | }
|
70: |
|
71: | $data['notifications'] = [];
|
72: |
|
73: | $filter_data = [
|
74: | 'start' => ($page - 1) * $this->config->get('config_pagination_admin'),
|
75: | 'limit' => $this->config->get('config_pagination_admin')
|
76: | ];
|
77: |
|
78: | $this->load->model('tool/notification');
|
79: |
|
80: | $results = $this->model_tool_notification->getNotifications($filter_data);
|
81: |
|
82: | foreach ($results as $result) {
|
83: | $second = time() - strtotime($result['date_added']);
|
84: |
|
85: | $ranges = [
|
86: | 'second' => $second,
|
87: | 'minute' => floor($second / 60),
|
88: | 'hour' => floor($second / 3600),
|
89: | 'day' => floor($second / 86400),
|
90: | 'week' => floor($second / 604800),
|
91: | 'month' => floor($second / 2629743),
|
92: | 'year' => floor($second / 31556926)
|
93: | ];
|
94: |
|
95: | $date_added = 0;
|
96: | $code = 'seconds';
|
97: |
|
98: | foreach ($ranges as $range => $value) {
|
99: | if ($value) {
|
100: | $date_added = $value;
|
101: | $code = ($value > 1) ? $range . 's' : $range;
|
102: | }
|
103: | }
|
104: |
|
105: | $data['notifications'][] = [
|
106: | 'notification_id' => $result['notification_id'],
|
107: | 'title' => $result['title'],
|
108: | 'status' => $result['status'],
|
109: | 'date_added' => sprintf($this->language->get('text_' . $code . '_ago'), $date_added),
|
110: | 'view' => $this->url->link('tool/notification.info', 'user_token=' . $this->session->data['user_token'] . '¬ification_id=' . $result['notification_id'] . $url),
|
111: | 'delete' => $this->url->link('tool/notification.delete', 'user_token=' . $this->session->data['user_token'] . '¬ification_id=' . $result['notification_id'] . $url)
|
112: | ];
|
113: | }
|
114: |
|
115: | $notification_total = $this->model_tool_notification->getTotalNotifications();
|
116: |
|
117: | $data['pagination'] = $this->load->controller('common/pagination', [
|
118: | 'total' => $notification_total,
|
119: | 'page' => $page,
|
120: | 'limit' => $this->config->get('config_pagination_admin'),
|
121: | 'url' => $this->url->link('tool/notification.list', 'user_token=' . $this->session->data['user_token'] . '&page={page}')
|
122: | ]);
|
123: |
|
124: | $data['results'] = sprintf($this->language->get('text_pagination'), ($notification_total) ? (($page - 1) * $this->config->get('config_pagination_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_pagination_admin')) > ($notification_total - $this->config->get('config_pagination_admin'))) ? $notification_total : ((($page - 1) * $this->config->get('config_pagination_admin')) + $this->config->get('config_pagination_admin')), $notification_total, ceil($notification_total / $this->config->get('config_pagination_admin')));
|
125: |
|
126: | return $this->load->view('tool/notification_list', $data);
|
127: | }
|
128: |
|
129: | |
130: | |
131: | |
132: | |
133: |
|
134: | public function info(): void {
|
135: | if (isset($this->request->get['notification_id'])) {
|
136: | $notification_id = $this->request->get['notification_id'];
|
137: | } else {
|
138: | $notification_id = 0;
|
139: | }
|
140: |
|
141: | $this->load->model('tool/notification');
|
142: |
|
143: | $notification_info = $this->model_tool_notification->getNotification($notification_id);
|
144: |
|
145: | if ($notification_info) {
|
146: | $this->load->language('tool/notification');
|
147: |
|
148: | $data['title'] = $notification_info['title'];
|
149: |
|
150: | $data['text'] = html_entity_decode($notification_info['text'], ENT_QUOTES, 'UTF-8');
|
151: |
|
152: | $this->model_tool_notification->editStatus($notification_id, true);
|
153: |
|
154: | $this->response->setOutput($this->load->view('tool/notification_info', $data));
|
155: | }
|
156: | }
|
157: |
|
158: | |
159: | |
160: | |
161: | |
162: |
|
163: | public function delete(): void {
|
164: | $this->load->language('tool/notification');
|
165: |
|
166: | $json = [];
|
167: |
|
168: | if (isset($this->request->post['selected'])) {
|
169: | $selected = $this->request->post['selected'];
|
170: | } else {
|
171: | $selected = [];
|
172: | }
|
173: |
|
174: | if (!$this->user->hasPermission('modify', 'tool/notification')) {
|
175: | $json['error'] = $this->language->get('error_permission');
|
176: | }
|
177: |
|
178: | if (!$json) {
|
179: | $this->load->model('tool/notification');
|
180: |
|
181: | foreach ($selected as $notification_id) {
|
182: | $this->model_tool_notification->deleteNotification($notification_id);
|
183: | }
|
184: |
|
185: | $json['success'] = $this->language->get('text_success');
|
186: | }
|
187: |
|
188: | $this->response->addHeader('Content-Type: application/json');
|
189: | $this->response->setOutput(json_encode($json));
|
190: | }
|
191: | }
|
192: | |