seo_url.php (18551B)
1 <?php 2 class ControllerDesignSeoUrl extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('design/seo_url'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 $this->load->model('design/seo_url'); 11 12 $this->getList(); 13 } 14 15 public function add() { 16 $this->load->language('design/seo_url'); 17 18 $this->document->setTitle($this->language->get('heading_title')); 19 20 $this->load->model('design/seo_url'); 21 22 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 23 $this->model_design_seo_url->addSeoUrl($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_query'])) { 30 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 31 } 32 33 if (isset($this->request->get['filter_keyword'])) { 34 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 35 } 36 37 if (isset($this->request->get['filter_store_id'])) { 38 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 39 } 40 41 if (isset($this->request->get['filter_language_id'])) { 42 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 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('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url, true)); 58 } 59 60 $this->getForm(); 61 } 62 63 public function edit() { 64 $this->load->language('design/seo_url'); 65 66 $this->document->setTitle($this->language->get('heading_title')); 67 68 $this->load->model('design/seo_url'); 69 70 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 71 $this->model_design_seo_url->editSeoUrl($this->request->get['seo_url_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_query'])) { 78 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 79 } 80 81 if (isset($this->request->get['filter_keyword'])) { 82 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 83 } 84 85 if (isset($this->request->get['filter_store_id'])) { 86 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 87 } 88 89 if (isset($this->request->get['filter_language_id'])) { 90 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 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('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url, true)); 106 } 107 108 $this->getForm(); 109 } 110 111 public function delete() { 112 $this->load->language('design/seo_url'); 113 114 $this->document->setTitle($this->language->get('heading_title')); 115 116 $this->load->model('design/seo_url'); 117 118 if (isset($this->request->post['selected']) && $this->validateDelete()) { 119 foreach ($this->request->post['selected'] as $seo_url_id) { 120 $this->model_design_seo_url->deleteSeoUrl($seo_url_id); 121 } 122 123 $this->session->data['success'] = $this->language->get('text_success'); 124 125 $url = ''; 126 127 if (isset($this->request->get['filter_query'])) { 128 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 129 } 130 131 if (isset($this->request->get['filter_keyword'])) { 132 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 133 } 134 135 if (isset($this->request->get['filter_store_id'])) { 136 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 137 } 138 139 if (isset($this->request->get['filter_language_id'])) { 140 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 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('design/seo_url', '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_query'])) { 163 $filter_query = $this->request->get['filter_query']; 164 } else { 165 $filter_query = ''; 166 } 167 168 if (isset($this->request->get['filter_keyword'])) { 169 $filter_keyword = $this->request->get['filter_keyword']; 170 } else { 171 $filter_keyword = ''; 172 } 173 174 if (isset($this->request->get['filter_store_id'])) { 175 $filter_store_id = $this->request->get['filter_store_id']; 176 } else { 177 $filter_store_id = ''; 178 } 179 180 if (isset($this->request->get['filter_language_id'])) { 181 $filter_language_id = $this->request->get['filter_language_id']; 182 } else { 183 $filter_language_id = ''; 184 } 185 186 if (isset($this->request->get['sort'])) { 187 $sort = $this->request->get['sort']; 188 } else { 189 $sort = 'keyword'; 190 } 191 192 if (isset($this->request->get['order'])) { 193 $order = $this->request->get['order']; 194 } else { 195 $order = 'ASC'; 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_query'])) { 207 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 208 } 209 210 if (isset($this->request->get['filter_keyword'])) { 211 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 212 } 213 214 if (isset($this->request->get['filter_store_id'])) { 215 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 216 } 217 218 if (isset($this->request->get['filter_language_id'])) { 219 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 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('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url, true) 244 ); 245 246 $data['add'] = $this->url->link('design/seo_url/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 247 $data['delete'] = $this->url->link('design/seo_url/delete', 'user_token=' . $this->session->data['user_token'] . $url, true); 248 249 $data['seo_urls'] = array(); 250 251 $filter_data = array( 252 'filter_query' => $filter_query, 253 'filter_keyword' => $filter_keyword, 254 'filter_store_id' => $filter_store_id, 255 'filter_language_id' => $filter_language_id, 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 $seo_url_total = $this->model_design_seo_url->getTotalSeoUrls($filter_data); 263 264 $results = $this->model_design_seo_url->getSeoUrls($filter_data); 265 266 foreach ($results as $result) { 267 $data['seo_urls'][] = array( 268 'seo_url_id' => $result['seo_url_id'], 269 'query' => $result['query'], 270 'keyword' => $result['keyword'], 271 'store' => $result['store_id'] ? $result['store'] : $this->language->get('text_default'), 272 'language' => $result['language'], 273 'edit' => $this->url->link('design/seo_url/edit', 'user_token=' . $this->session->data['user_token'] . '&seo_url_id=' . $result['seo_url_id'] . $url, true) 274 ); 275 } 276 277 $data['user_token'] = $this->session->data['user_token']; 278 279 if (isset($this->error['warning'])) { 280 $data['error_warning'] = $this->error['warning']; 281 } else { 282 $data['error_warning'] = ''; 283 } 284 285 if (isset($this->session->data['success'])) { 286 $data['success'] = $this->session->data['success']; 287 288 unset($this->session->data['success']); 289 } else { 290 $data['success'] = ''; 291 } 292 293 if (isset($this->request->post['selected'])) { 294 $data['selected'] = (array)$this->request->post['selected']; 295 } else { 296 $data['selected'] = array(); 297 } 298 299 $url = ''; 300 301 if (isset($this->request->get['filter_query'])) { 302 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 303 } 304 305 if (isset($this->request->get['filter_keyword'])) { 306 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 307 } 308 309 if (isset($this->request->get['filter_store_id'])) { 310 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 311 } 312 313 if (isset($this->request->get['filter_language_id'])) { 314 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 315 } 316 317 if ($order == 'ASC') { 318 $url .= '&order=DESC'; 319 } else { 320 $url .= '&order=ASC'; 321 } 322 323 if (isset($this->request->get['page'])) { 324 $url .= '&page=' . $this->request->get['page']; 325 } 326 327 $data['sort_query'] = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . '&sort=query' . $url, true); 328 $data['sort_keyword'] = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . '&sort=keyword' . $url, true); 329 $data['sort_store'] = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . '&sort=store' . $url, true); 330 $data['sort_language'] = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . '&sort=language' . $url, true); 331 332 $url = ''; 333 334 if (isset($this->request->get['filter_query'])) { 335 $url .= '&filter_query=' . urlencode(html_entity_decode($this->request->get['filter_query'], ENT_QUOTES, 'UTF-8')); 336 } 337 338 if (isset($this->request->get['filter_keyword'])) { 339 $url .= '&filter_keyword=' . urlencode(html_entity_decode($this->request->get['filter_keyword'], ENT_QUOTES, 'UTF-8')); 340 } 341 342 if (isset($this->request->get['filter_store_id'])) { 343 $url .= '&filter_store_id=' . $this->request->get['filter_store_id']; 344 } 345 346 if (isset($this->request->get['filter_language_id'])) { 347 $url .= '&filter_language_id=' . $this->request->get['filter_language_id']; 348 } 349 350 if (isset($this->request->get['sort'])) { 351 $url .= '&sort=' . $this->request->get['sort']; 352 } 353 354 if (isset($this->request->get['order'])) { 355 $url .= '&order=' . $this->request->get['order']; 356 } 357 358 $pagination = new Pagination(); 359 $pagination->total = $seo_url_total; 360 $pagination->page = $page; 361 $pagination->limit = $this->config->get('config_limit_admin'); 362 $pagination->url = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true); 363 364 $data['pagination'] = $pagination->render(); 365 366 $data['results'] = sprintf($this->language->get('text_pagination'), ($seo_url_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($seo_url_total - $this->config->get('config_limit_admin'))) ? $seo_url_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $seo_url_total, ceil($seo_url_total / $this->config->get('config_limit_admin'))); 367 368 $data['filter_query'] = $filter_query; 369 $data['filter_keyword'] = $filter_keyword; 370 $data['filter_store_id'] = $filter_store_id; 371 $data['filter_language_id'] = $filter_language_id; 372 373 $data['sort'] = $sort; 374 $data['order'] = $order; 375 376 $this->load->model('setting/store'); 377 378 $data['stores'] = $this->model_setting_store->getStores(); 379 380 $this->load->model('localisation/language'); 381 382 $data['languages'] = $this->model_localisation_language->getLanguages(); 383 384 $data['header'] = $this->load->controller('common/header'); 385 $data['column_left'] = $this->load->controller('common/column_left'); 386 $data['footer'] = $this->load->controller('common/footer'); 387 388 $this->response->setOutput($this->load->view('design/seo_url_list', $data)); 389 } 390 391 protected function getForm() { 392 $data['text_form'] = !isset($this->request->get['seo_url_id']) ? $this->language->get('text_add') : $this->language->get('text_edit'); 393 394 if (isset($this->error['warning'])) { 395 $data['error_warning'] = $this->error['warning']; 396 } else { 397 $data['error_warning'] = ''; 398 } 399 400 if (isset($this->error['query'])) { 401 $data['error_query'] = $this->error['query']; 402 } else { 403 $data['error_query'] = ''; 404 } 405 406 if (isset($this->error['keyword'])) { 407 $data['error_keyword'] = $this->error['keyword']; 408 } else { 409 $data['error_keyword'] = ''; 410 } 411 412 $url = ''; 413 414 if (isset($this->request->get['sort'])) { 415 $url .= '&sort=' . $this->request->get['sort']; 416 } 417 418 if (isset($this->request->get['order'])) { 419 $url .= '&order=' . $this->request->get['order']; 420 } 421 422 if (isset($this->request->get['page'])) { 423 $url .= '&page=' . $this->request->get['page']; 424 } 425 426 $data['breadcrumbs'] = array(); 427 428 $data['breadcrumbs'][] = array( 429 'text' => $this->language->get('text_home'), 430 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 431 ); 432 433 $data['breadcrumbs'][] = array( 434 'text' => $this->language->get('heading_title'), 435 'href' => $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url, true) 436 ); 437 438 if (!isset($this->request->get['seo_url_id'])) { 439 $data['action'] = $this->url->link('design/seo_url/add', 'user_token=' . $this->session->data['user_token'] . $url, true); 440 } else { 441 $data['action'] = $this->url->link('design/seo_url/edit', 'user_token=' . $this->session->data['user_token'] . '&seo_url_id=' . $this->request->get['seo_url_id'] . $url, true); 442 } 443 444 $data['cancel'] = $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'] . $url, true); 445 446 if (isset($this->request->get['seo_url_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { 447 $seo_url_info = $this->model_design_seo_url->getSeoUrl($this->request->get['seo_url_id']); 448 } 449 450 if (isset($this->request->post['query'])) { 451 $data['query'] = $this->request->post['query']; 452 } elseif (!empty($seo_url_info)) { 453 $data['query'] = $seo_url_info['query']; 454 } else { 455 $data['query'] = ''; 456 } 457 458 if (isset($this->request->post['keyword'])) { 459 $data['keyword'] = $this->request->post['keyword']; 460 } elseif (!empty($seo_url_info)) { 461 $data['keyword'] = $seo_url_info['keyword']; 462 } else { 463 $data['keyword'] = ''; 464 } 465 466 $this->load->model('setting/store'); 467 468 $data['stores'] = array(); 469 470 $data['stores'][] = array( 471 'store_id' => 0, 472 'name' => $this->language->get('text_default') 473 ); 474 475 $stores = $this->model_setting_store->getStores(); 476 477 foreach ($stores as $store) { 478 $data['stores'][] = array( 479 'store_id' => $store['store_id'], 480 'name' => $store['name'] 481 ); 482 } 483 484 if (isset($this->request->post['store_id'])) { 485 $data['store_id'] = $this->request->post['store_id']; 486 } elseif (!empty($seo_url_info)) { 487 $data['store_id'] = $seo_url_info['store_id']; 488 } else { 489 $data['store_id'] = ''; 490 } 491 492 $this->load->model('localisation/language'); 493 494 $data['languages'] = $this->model_localisation_language->getLanguages(); 495 496 if (isset($this->request->post['language_id'])) { 497 $data['language_id'] = $this->request->post['language_id']; 498 } elseif (!empty($seo_url_info)) { 499 $data['language_id'] = $seo_url_info['language_id']; 500 } else { 501 $data['language_id'] = ''; 502 } 503 504 $data['header'] = $this->load->controller('common/header'); 505 $data['column_left'] = $this->load->controller('common/column_left'); 506 $data['footer'] = $this->load->controller('common/footer'); 507 508 $this->response->setOutput($this->load->view('design/seo_url_form', $data)); 509 } 510 511 protected function validateForm() { 512 if (!$this->user->hasPermission('modify', 'design/seo_url')) { 513 $this->error['warning'] = $this->language->get('error_permission'); 514 } 515 516 if (!$this->request->post['query']) { 517 $this->error['query'] = $this->language->get('error_query'); 518 } 519 520 $seo_urls = $this->model_design_seo_url->getSeoUrlsByKeyword($this->request->post['keyword']); 521 522 foreach ($seo_urls as $seo_url) { 523 if ($seo_url['store_id'] == $this->request->post['store_id'] && $seo_url['query'] != $this->request->post['query']) { 524 $this->error['keyword'] = $this->language->get('error_exists'); 525 526 break; 527 } 528 } 529 530 if (!$this->request->post['keyword']) { 531 $this->error['keyword'] = $this->language->get('error_keyword'); 532 } 533 534 return !$this->error; 535 } 536 537 protected function validateDelete() { 538 if (!$this->user->hasPermission('modify', 'design/seo_url')) { 539 $this->error['warning'] = $this->language->get('error_permission'); 540 } 541 542 return !$this->error; 543 } 544 }