Current Path : /var/www/storage2/modification/catalog/controller/startup/ |
Current File : /var/www/storage2/modification/catalog/controller/startup/seo_url.php |
<?php class ControllerStartupSeoUrl extends Controller { public function index() { // Add rewrite to url class if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); } // Decode URL if (isset($this->request->get['_route_'])) { $parts = explode('/', $this->request->get['_route_']); // remove any empty arrays from trailing if (utf8_strlen(end($parts)) == 0) { array_pop($parts); } foreach ($parts as $part) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape($part) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'"); // Journal Theme Modification if ($part && !$query->num_rows) { $sql = " SELECT CONCAT('journal_blog_category_id=', category_id) as query FROM " . DB_PREFIX . "journal3_blog_category_description WHERE keyword = '" . $this->db->escape($part) . "' UNION SELECT CONCAT('journal_blog_post_id=', post_id) as query FROM " . DB_PREFIX . "journal3_blog_post_description WHERE keyword = '" . $this->db->escape($part) . "' "; $query = $this->db->query($sql); } if (!$query->num_rows) { $this->load->model('journal3/blog'); $journal_blog_keywords = $this->model_journal3_blog->getBlogKeywords(); if($part && is_array($journal_blog_keywords) && (in_array($part, $journal_blog_keywords))) { $this->request->get['route'] = 'journal3/blog'; continue; } } // End Journal Theme Modification if ($query->num_rows) { $url = explode('=', $query->row['query']); // Journal Theme Modification if ($url[0] == 'journal_blog_post_id') { $this->request->get['journal_blog_post_id'] = $url[1]; } if ($url[0] == 'journal_blog_category_id') { $this->request->get['journal_blog_category_id'] = $url[1]; } // End Journal Theme Modification if ($url[0] == 'product_id') { $this->request->get['product_id'] = $url[1]; } if($url[0] == 'simple_blog_article_id') { $this->request->get['simple_blog_article_id'] = $url[1]; $query->row['query'] = ''; } if($url[0] == 'simple_blog_author_id') { $this->request->get['simple_blog_author_id'] = $url[1]; $query->row['query'] = ''; } if ($url[0] == 'simple_blog_category_id') { if (!isset($this->request->get['simple_blog_category_id'])) { $this->request->get['simple_blog_category_id'] = $url[1]; } else { $this->request->get['simple_blog_category_id'] .= '_' . $url[1]; } $query->row['query'] = ''; } if ($url[0] == 'category_id') { if (!isset($this->request->get['path'])) { $this->request->get['path'] = $url[1]; } else { $this->request->get['path'] .= '_' . $url[1]; } } if ($url[0] == 'manufacturer_id') { $this->request->get['manufacturer_id'] = $url[1]; } if ($url[0] == 'information_id') { $this->request->get['information_id'] = $url[1]; } if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id' && $url[0] != 'simple_blog_article_id' && $url[0] != 'simple_blog_category_id' && $url[0] != 'simple_blog_author_id') { $this->request->get['route'] = $query->row['query']; } } else { if(($this->config->has('simple_blog_seo_keyword')) && ($this->db->escape($part) == $this->config->get('simple_blog_seo_keyword'))) { } else if($this->db->escape($part) == 'simple-blog') { } else { $this->request->get['route'] = 'error/not_found'; break; } ; break; } } // Journal Theme Modification if (isset($this->request->get['journal_blog_post_id'])) { $this->request->get['route'] = 'journal3/blog/post'; } else if (isset($this->request->get['journal_blog_category_id'])) { $this->request->get['route'] = 'journal3/blog'; } // End Journal Theme Modification if (!isset($this->request->get['route'])) { if (isset($this->request->get['product_id'])) { $this->request->get['route'] = 'product/product'; } elseif (isset($this->request->get['path'])) { $this->request->get['route'] = 'product/category'; } elseif (isset($this->request->get['manufacturer_id'])) { $this->request->get['route'] = 'product/manufacturer/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; } else if (isset($this->request->get['simple_blog_article_id'])) { $this->request->get['route'] = 'simple_blog/article/view'; } else if (isset($this->request->get['simple_blog_author_id'])) { $this->request->get['route'] = 'simple_blog/author'; } else if (isset($this->request->get['simple_blog_category_id'])) { $this->request->get['route'] = 'simple_blog/category'; } /*else if ($this->request->get['_route_'] == 'simple-blog') { $this->request->get['route'] = 'simple_blog/article';*/ else { if(($this->config->has('simple_blog_seo_keyword'))) { if($this->request->get['_route_'] == $this->config->get('simple_blog_seo_keyword')) { $this->request->get['route'] = 'simple_blog/article'; } } if($this->request->get['_route_'] == 'simple-blog') { $this->request->get['route'] = 'simple_blog/article'; } } } } } public function rewrite($link) { // Journal Theme Modification if (defined('JOURNAL3_ACTIVE')) { $this->load->model('journal3/blog'); $is_journal3_blog = false; } // End Journal Theme Modification $url_info = parse_url(str_replace('&', '&', $link)); $url = ''; $data = array(); parse_str($url_info['query'], $data); foreach ($data as $key => $value) { if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } // Journal Theme Modification } elseif ($key == 'journal_blog_post_id') { $is_journal3_blog = true; if ($journal_blog_keyword = $this->model_journal3_blog->rewritePost($value)) { $url .= '/' . $journal_blog_keyword; unset($data[$key]); } } elseif ($key == 'journal_blog_category_id') { $is_journal3_blog = true; if ($journal_blog_keyword = $this->model_journal3_blog->rewriteCategory($value)) { $url .= '/' . $journal_blog_keyword; unset($data[$key]); } } elseif (isset($data['route']) && $data['route'] == 'journal3/blog') { if (!isset($data['journal_blog_post_id']) && !isset($data['journal_blog_category_id'])) { $is_journal3_blog = true; } // End Journal Theme Modification } else if($data['route'] == 'simple_blog/article/view' && $key == 'simple_blog_article_id') { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } else { $url .= '/simple-blog/' . (int)$value; unset($data[$key]); } } else if($data['route'] == 'simple_blog/author' && $key == 'simple_blog_author_id') { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } else { $url .= '/simple-blog/' . (int)$value; unset($data[$key]); } } else if($data['route'] == 'simple_blog/category' && $key == 'simple_blog_category_id') { $blog_categories = explode("_", $value); foreach ($blog_categories as $blog_category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'simple_blog_category_id=" . (int)$blog_category . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; } else { $url .= '/simple-category' . $blog_category; } } unset($data[$key]); } else if($data['route'] == 'simple_blog/search') { //echo $data['route']; if(isset($key) && ($key == 'blog_search')) { $url .= '/search&blog_search=' . $value; } else { $url .= '/search'; } //echo $url; } else if(isset($data['route']) && $data['route'] == 'simple_blog/article' && $key != 'simple_blog_article_id' && $key != 'simple_blog_author_id' && $key != 'simple_blog_category_id' && $key != 'page') { if($this->config->has('simple_blog_seo_keyword')) { $url .= '/' . $this->config->get('simple_blog_seo_keyword'); } else { $url .= '/simple-blog'; } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } } // Journal Theme Modification if (defined('JOURNAL3_ACTIVE')) { if ($is_journal3_blog && $this->model_journal3_blog->getBlogKeyword()) { $url = '/' . $this->model_journal3_blog->getBlogKeyword() . $url; } } // End Journal Theme Modification if ($url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . rawurlencode((string)$key) . '=' . rawurlencode((is_array($value) ? http_build_query($value) : (string)$value)); } if ($query) { $query = '?' . str_replace('&', '&', trim($query, '&')); } } return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query; } else { return $link; } } }