review.php (19728B)
1 <?php 2 class ControllerCatalogReview extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('catalog/review'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 $this->load->model('catalog/review'); 11 12 $this->getList(); 13 } 14 15 public function add() { 16 $this->load->language('catalog/review'); 17 18 $this->document->setTitle($this->language->get('heading_title')); 19 20 $this->load->model('catalog/review'); 21 22 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 23 $this->model_catalog_review->addReview($this->request->post); 24 25 $this->session->data['success'] = $this->language->get('text_success'); 26 27 $url = ''; 28 29 if (isset($this->request->get['filter_product'])) { 30 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 31 } 32 33 if (isset($this->request->get['filter_author'])) { 34 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 35 } 36 37 if (isset($this->request->get['filter_status'])) { 38 $url .= '&filter_status=' . $this->request->get['filter_status']; 39 } 40 41 if (isset($this->request->get['filter_date_added'])) { 42 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 43 } 44 45 if (isset($this->request->get['sort'])) { 46 $url .= '&sort=' . $this->request->get['sort']; 47 } 48 49 if (isset($this->request->get['order'])) { 50 $url .= '&order=' . $this->request->get['order']; 51 } 52 53 if (isset($this->request->get['page'])) { 54 $url .= '&page=' . $this->request->get['page']; 55 } 56 57 $this->response->redirect($this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true)); 58 } 59 60 $this->getForm(); 61 } 62 63 public function edit() { 64 $this->load->language('catalog/review'); 65 66 $this->document->setTitle($this->language->get('heading_title')); 67 68 $this->load->model('catalog/review'); 69 70 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 71 $this->model_catalog_review->editReview($this->request->get['review_id'], $this->request->post); 72 73 $this->session->data['success'] = $this->language->get('text_success'); 74 75 $url = ''; 76 77 if (isset($this->request->get['filter_product'])) { 78 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 79 } 80 81 if (isset($this->request->get['filter_author'])) { 82 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 83 } 84 85 if (isset($this->request->get['filter_status'])) { 86 $url .= '&filter_status=' . $this->request->get['filter_status']; 87 } 88 89 if (isset($this->request->get['filter_date_added'])) { 90 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 91 } 92 93 if (isset($this->request->get['sort'])) { 94 $url .= '&sort=' . $this->request->get['sort']; 95 } 96 97 if (isset($this->request->get['order'])) { 98 $url .= '&order=' . $this->request->get['order']; 99 } 100 101 if (isset($this->request->get['page'])) { 102 $url .= '&page=' . $this->request->get['page']; 103 } 104 105 $this->response->redirect($this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true)); 106 } 107 108 $this->getForm(); 109 } 110 111 public function delete() { 112 $this->load->language('catalog/review'); 113 114 $this->document->setTitle($this->language->get('heading_title')); 115 116 $this->load->model('catalog/review'); 117 118 if (isset($this->request->post['selected']) && $this->validateDelete()) { 119 foreach ($this->request->post['selected'] as $review_id) { 120 $this->model_catalog_review->deleteReview($review_id); 121 } 122 123 $this->session->data['success'] = $this->language->get('text_success'); 124 125 $url = ''; 126 127 if (isset($this->request->get['filter_product'])) { 128 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 129 } 130 131 if (isset($this->request->get['filter_author'])) { 132 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 133 } 134 135 if (isset($this->request->get['filter_status'])) { 136 $url .= '&filter_status=' . $this->request->get['filter_status']; 137 } 138 139 if (isset($this->request->get['filter_date_added'])) { 140 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 141 } 142 143 if (isset($this->request->get['sort'])) { 144 $url .= '&sort=' . $this->request->get['sort']; 145 } 146 147 if (isset($this->request->get['order'])) { 148 $url .= '&order=' . $this->request->get['order']; 149 } 150 151 if (isset($this->request->get['page'])) { 152 $url .= '&page=' . $this->request->get['page']; 153 } 154 155 $this->response->redirect($this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true)); 156 } 157 158 $this->getList(); 159 } 160 161 protected function getList() { 162 if (isset($this->request->get['filter_product'])) { 163 $filter_product = $this->request->get['filter_product']; 164 } else { 165 $filter_product = ''; 166 } 167 168 if (isset($this->request->get['filter_author'])) { 169 $filter_author = $this->request->get['filter_author']; 170 } else { 171 $filter_author = ''; 172 } 173 174 if (isset($this->request->get['filter_status'])) { 175 $filter_status = $this->request->get['filter_status']; 176 } else { 177 $filter_status = ''; 178 } 179 180 if (isset($this->request->get['filter_date_added'])) { 181 $filter_date_added = $this->request->get['filter_date_added']; 182 } else { 183 $filter_date_added = ''; 184 } 185 186 if (isset($this->request->get['order'])) { 187 $order = $this->request->get['order']; 188 } else { 189 $order = 'DESC'; 190 } 191 192 if (isset($this->request->get['sort'])) { 193 $sort = $this->request->get['sort']; 194 } else { 195 $sort = 'r.date_added'; 196 } 197 198 if (isset($this->request->get['page'])) { 199 $page = $this->request->get['page']; 200 } else { 201 $page = 1; 202 } 203 204 $url = ''; 205 206 if (isset($this->request->get['filter_product'])) { 207 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 208 } 209 210 if (isset($this->request->get['filter_author'])) { 211 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 212 } 213 214 if (isset($this->request->get['filter_status'])) { 215 $url .= '&filter_status=' . $this->request->get['filter_status']; 216 } 217 218 if (isset($this->request->get['filter_date_added'])) { 219 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 220 } 221 222 if (isset($this->request->get['sort'])) { 223 $url .= '&sort=' . $this->request->get['sort']; 224 } 225 226 if (isset($this->request->get['order'])) { 227 $url .= '&order=' . $this->request->get['order']; 228 } 229 230 if (isset($this->request->get['page'])) { 231 $url .= '&page=' . $this->request->get['page']; 232 } 233 234 $data['breadcrumbs'] = array(); 235 236 $data['breadcrumbs'][] = array( 237 'text' => $this->language->get('text_home'), 238 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 239 ); 240 241 $data['breadcrumbs'][] = array( 242 'text' => $this->language->get('heading_title'), 243 'href' => $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true) 244 ); 245 246 $data['add'] = $this->url->link('catalog/review/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 247 $data['delete'] = $this->url->link('catalog/review/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); 248 249 $data['reviews'] = array(); 250 251 $filter_data = array( 252 'filter_product' => $filter_product, 253 'filter_author' => $filter_author, 254 'filter_status' => $filter_status, 255 'filter_date_added' => $filter_date_added, 256 'sort' => $sort, 257 'order' => $order, 258 'start' => ($page - 1) * $this->config->get('config_limit_admin'), 259 'limit' => $this->config->get('config_limit_admin') 260 ); 261 262 $review_total = $this->model_catalog_review->getTotalReviews($filter_data); 263 264 $results = $this->model_catalog_review->getReviews($filter_data); 265 266 foreach ($results as $result) { 267 $data['reviews'][] = array( 268 'review_id' => $result['review_id'], 269 'name' => $result['name'], 270 'author' => $result['author'], 271 'rating' => $result['rating'], 272 'status' => ($result['status']) ? $this->language->get('text_enabled') : $this->language->get('text_disabled'), 273 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 274 'edit' => $this->url->link('catalog/review/edit', 'user_token=' . $this->session->data['user_token'] . '&review_id=' . $result['review_id'] . $url, true) 275 ); 276 } 277 278 $data['user_token'] = $this->session->data['user_token']; 279 280 if (isset($this->error['warning'])) { 281 $data['error_warning'] = $this->error['warning']; 282 } else { 283 $data['error_warning'] = ''; 284 } 285 286 if (isset($this->session->data['success'])) { 287 $data['success'] = $this->session->data['success']; 288 289 unset($this->session->data['success']); 290 } else { 291 $data['success'] = ''; 292 } 293 294 if (isset($this->request->post['selected'])) { 295 $data['selected'] = (array)$this->request->post['selected']; 296 } else { 297 $data['selected'] = array(); 298 } 299 300 $url = ''; 301 302 if (isset($this->request->get['filter_product'])) { 303 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 304 } 305 306 if (isset($this->request->get['filter_author'])) { 307 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 308 } 309 310 if (isset($this->request->get['filter_status'])) { 311 $url .= '&filter_status=' . $this->request->get['filter_status']; 312 } 313 314 if (isset($this->request->get['filter_date_added'])) { 315 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 316 } 317 318 if ($order == 'ASC') { 319 $url .= '&order=DESC'; 320 } else { 321 $url .= '&order=ASC'; 322 } 323 324 if (isset($this->request->get['page'])) { 325 $url .= '&page=' . $this->request->get['page']; 326 } 327 328 $data['sort_product'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . '&sort=pd.name' . $url, true); 329 $data['sort_author'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . '&sort=r.author' . $url, true); 330 $data['sort_rating'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . '&sort=r.rating' . $url, true); 331 $data['sort_status'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . '&sort=r.status' . $url, true); 332 $data['sort_date_added'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . '&sort=r.date_added' . $url, true); 333 334 $url = ''; 335 336 if (isset($this->request->get['filter_product'])) { 337 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 338 } 339 340 if (isset($this->request->get['filter_author'])) { 341 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 342 } 343 344 if (isset($this->request->get['filter_status'])) { 345 $url .= '&filter_status=' . $this->request->get['filter_status']; 346 } 347 348 if (isset($this->request->get['filter_date_added'])) { 349 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 350 } 351 352 if (isset($this->request->get['sort'])) { 353 $url .= '&sort=' . $this->request->get['sort']; 354 } 355 356 if (isset($this->request->get['order'])) { 357 $url .= '&order=' . $this->request->get['order']; 358 } 359 360 $pagination = new Pagination(); 361 $pagination->total = $review_total; 362 $pagination->page = $page; 363 $pagination->limit = $this->config->get('config_limit_admin'); 364 $pagination->url = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); 365 366 $data['pagination'] = $pagination->render(); 367 368 $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($review_total - $this->config->get('config_limit_admin'))) ? $review_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $review_total, ceil($review_total / $this->config->get('config_limit_admin'))); 369 370 $data['filter_product'] = $filter_product; 371 $data['filter_author'] = $filter_author; 372 $data['filter_status'] = $filter_status; 373 $data['filter_date_added'] = $filter_date_added; 374 375 $data['sort'] = $sort; 376 $data['order'] = $order; 377 378 $data['header'] = $this->load->controller('common/header'); 379 $data['column_left'] = $this->load->controller('common/column_left'); 380 $data['footer'] = $this->load->controller('common/footer'); 381 382 $this->response->setOutput($this->load->view('catalog/review_list', $data)); 383 } 384 385 protected function getForm() { 386 $data['text_form'] = !isset($this->request->get['review_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); 387 388 if (isset($this->error['warning'])) { 389 $data['error_warning'] = $this->error['warning']; 390 } else { 391 $data['error_warning'] = ''; 392 } 393 394 if (isset($this->error['product'])) { 395 $data['error_product'] = $this->error['product']; 396 } else { 397 $data['error_product'] = ''; 398 } 399 400 if (isset($this->error['author'])) { 401 $data['error_author'] = $this->error['author']; 402 } else { 403 $data['error_author'] = ''; 404 } 405 406 if (isset($this->error['text'])) { 407 $data['error_text'] = $this->error['text']; 408 } else { 409 $data['error_text'] = ''; 410 } 411 412 if (isset($this->error['rating'])) { 413 $data['error_rating'] = $this->error['rating']; 414 } else { 415 $data['error_rating'] = ''; 416 } 417 418 $url = ''; 419 420 if (isset($this->request->get['filter_product'])) { 421 $url .= '&filter_product=' . urlencode(html_entity_decode($this->request->get['filter_product'], ENT_QUOTES, 'UTF-8')); 422 } 423 424 if (isset($this->request->get['filter_author'])) { 425 $url .= '&filter_author=' . urlencode(html_entity_decode($this->request->get['filter_author'], ENT_QUOTES, 'UTF-8')); 426 } 427 428 if (isset($this->request->get['filter_status'])) { 429 $url .= '&filter_status=' . $this->request->get['filter_status']; 430 } 431 432 if (isset($this->request->get['filter_date_added'])) { 433 $url .= '&filter_date_added=' . $this->request->get['filter_date_added']; 434 } 435 436 if (isset($this->request->get['sort'])) { 437 $url .= '&sort=' . $this->request->get['sort']; 438 } 439 440 if (isset($this->request->get['order'])) { 441 $url .= '&order=' . $this->request->get['order']; 442 } 443 444 if (isset($this->request->get['page'])) { 445 $url .= '&page=' . $this->request->get['page']; 446 } 447 448 $data['breadcrumbs'] = array(); 449 450 $data['breadcrumbs'][] = array( 451 'text' => $this->language->get('text_home'), 452 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 453 ); 454 455 $data['breadcrumbs'][] = array( 456 'text' => $this->language->get('heading_title'), 457 'href' => $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true) 458 ); 459 460 if (!isset($this->request->get['review_id'])) { 461 $data['action'] = $this->url->link('catalog/review/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 462 } else { 463 $data['action'] = $this->url->link('catalog/review/edit', 'user_token=' . $this->session->data['user_token'] . '&review_id=' . $this->request->get['review_id'] . $url, true); 464 } 465 466 $data['cancel'] = $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'] . $url, true); 467 468 if (isset($this->request->get['review_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { 469 $review_info = $this->model_catalog_review->getReview($this->request->get['review_id']); 470 } 471 472 $data['user_token'] = $this->session->data['user_token']; 473 474 $this->load->model('catalog/product'); 475 476 if (isset($this->request->post['product_id'])) { 477 $data['product_id'] = $this->request->post['product_id']; 478 } elseif (!empty($review_info)) { 479 $data['product_id'] = $review_info['product_id']; 480 } else { 481 $data['product_id'] = ''; 482 } 483 484 if (isset($this->request->post['product'])) { 485 $data['product'] = $this->request->post['product']; 486 } elseif (!empty($review_info)) { 487 $data['product'] = $review_info['product']; 488 } else { 489 $data['product'] = ''; 490 } 491 492 if (isset($this->request->post['author'])) { 493 $data['author'] = $this->request->post['author']; 494 } elseif (!empty($review_info)) { 495 $data['author'] = $review_info['author']; 496 } else { 497 $data['author'] = ''; 498 } 499 500 if (isset($this->request->post['text'])) { 501 $data['text'] = $this->request->post['text']; 502 } elseif (!empty($review_info)) { 503 $data['text'] = $review_info['text']; 504 } else { 505 $data['text'] = ''; 506 } 507 508 if (isset($this->request->post['rating'])) { 509 $data['rating'] = $this->request->post['rating']; 510 } elseif (!empty($review_info)) { 511 $data['rating'] = $review_info['rating']; 512 } else { 513 $data['rating'] = ''; 514 } 515 516 if (isset($this->request->post['date_added'])) { 517 $data['date_added'] = $this->request->post['date_added']; 518 } elseif (!empty($review_info)) { 519 $data['date_added'] = ($review_info['date_added'] != '0000-00-00 00:00' ? $review_info['date_added'] : ''); 520 } else { 521 $data['date_added'] = ''; 522 } 523 524 if (isset($this->request->post['status'])) { 525 $data['status'] = $this->request->post['status']; 526 } elseif (!empty($review_info)) { 527 $data['status'] = $review_info['status']; 528 } else { 529 $data['status'] = ''; 530 } 531 532 $data['header'] = $this->load->controller('common/header'); 533 $data['column_left'] = $this->load->controller('common/column_left'); 534 $data['footer'] = $this->load->controller('common/footer'); 535 536 $this->response->setOutput($this->load->view('catalog/review_form', $data)); 537 } 538 539 protected function validateForm() { 540 if (!$this->user->hasPermission('modify', 'catalog/review')) { 541 $this->error['warning'] = $this->language->get('error_permission'); 542 } 543 544 if (!$this->request->post['product_id']) { 545 $this->error['product'] = $this->language->get('error_product'); 546 } 547 548 if ((utf8_strlen($this->request->post['author']) < 3) || (utf8_strlen($this->request->post['author']) > 64)) { 549 $this->error['author'] = $this->language->get('error_author'); 550 } 551 552 if (utf8_strlen($this->request->post['text']) < 1) { 553 $this->error['text'] = $this->language->get('error_text'); 554 } 555 556 if (!isset($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { 557 $this->error['rating'] = $this->language->get('error_rating'); 558 } 559 560 return !$this->error; 561 } 562 563 protected function validateDelete() { 564 if (!$this->user->hasPermission('modify', 'catalog/review')) { 565 $this->error['warning'] = $this->language->get('error_permission'); 566 } 567 568 return !$this->error; 569 } 570 }