shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 }