d_seo_module.php (5629B)
1 <?php 2 class ModelExtensionDSEOModuleAdviserDSEOModule extends Model { 3 private $codename = 'd_seo_module'; 4 private $route = 'extension/d_seo_module_adviser/d_seo_module'; 5 6 /* 7 * Return Elements for Adviser. 8 */ 9 public function getAdviserElements($route) { 10 $_language = new Language(); 11 $_language->load($this->route); 12 13 $this->load->model('extension/module/' . $this->codename); 14 15 $stores = $this->{'model_extension_module_' . $this->codename}->getStores(); 16 $languages = $this->{'model_extension_module_' . $this->codename}->getLanguages(); 17 18 $field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo'); 19 $custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes'); 20 21 $adviser_elements = array(); 22 23 if ((strpos($route, 'category_id') === 0) || (strpos($route, 'product_id') === 0) || (strpos($route, 'manufacturer_id') === 0) || (strpos($route, 'information_id') === 0) || (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $route) && !($custom_page_exception_routes && in_array($route, $custom_page_exception_routes)))) { 24 $file_robots = str_replace('system/', '', DIR_SYSTEM) . 'robots.txt'; 25 26 if (file_exists($file_robots) && file_exists(DIR_SYSTEM . 'library/d_robots_txt_parser.php')) { 27 $robots_txt_parser = new d_robots_txt_parser(file_get_contents($file_robots)); 28 } 29 30 $field_data = array( 31 'field_code' => 'target_keyword', 32 'filter' => array('route' => $route) 33 ); 34 35 $target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data); 36 if ($target_keywords) $target_keyword = reset($target_keywords); 37 38 $field_data = array( 39 'field_code' => 'url_keyword', 40 'filter' => array('route' => $route) 41 ); 42 43 $url_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data); 44 if ($url_keywords) $url_keyword = reset($url_keywords); 45 46 foreach ($stores as $store) { 47 foreach ($languages as $language) { 48 $target_keyword_duplicate = 0; 49 50 if (isset($target_keyword[$store['store_id']][$language['language_id']])) { 51 foreach ($target_keyword[$store['store_id']][$language['language_id']] as $keyword) { 52 $field_data = array( 53 'field_code' => 'target_keyword', 54 'filter' => array( 55 'store_id' => $store['store_id'], 56 'keyword' => $keyword 57 ) 58 ); 59 60 $target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data); 61 62 if ($target_keywords) { 63 foreach ($target_keywords as $target_route => $store_target_keywords) { 64 foreach ($store_target_keywords[$store['store_id']] as $target_language_id => $keywords) { 65 if (($target_route != $route) || ($target_language_id != $language['language_id'])) { 66 $target_keyword_duplicate++; 67 } 68 } 69 } 70 } 71 } 72 } 73 74 $robots_empty_rating = 0; 75 76 if (isset($robots_txt_parser) && $robots_txt_parser->getRules()) { 77 $robots_empty_rating = 1; 78 } 79 80 $robots_no_index_rating = 1; 81 82 if (isset($url_keyword[$store['store_id']][$language['language_id']]) && $url_keyword[$store['store_id']][$language['language_id']]) { 83 if (isset($robots_txt_parser) && $robots_txt_parser->isUrlDisallow('/' . $url_keyword[$store['store_id']][$language['language_id']])) { 84 $robots_no_index_rating = 0; 85 } 86 } 87 88 $adviser_elements[$store['store_id']][$language['language_id']][] = array( 89 'extension_code' => $this->codename, 90 'element_code' => 'target_keyword_empty', 91 'name' => $_language->get('text_target_keyword_empty'), 92 'description' => $_language->get('help_target_keyword_empty'), 93 'rating' => isset($target_keyword[$store['store_id']][$language['language_id']]) ? 1 : 0, 94 'weight' => 1 95 ); 96 97 $adviser_elements[$store['store_id']][$language['language_id']][] = array( 98 'extension_code' => $this->codename, 99 'element_code' => 'target_keyword_duplicate', 100 'name' => $_language->get('text_target_keyword_duplicate'), 101 'description' => $_language->get('help_target_keyword_duplicate'), 102 'rating' => $target_keyword_duplicate ? (1 / ($target_keyword_duplicate + 1)) : 1, 103 'weight' => 0.8 104 ); 105 106 $adviser_elements[$store['store_id']][$language['language_id']][] = array( 107 'extension_code' => $this->codename, 108 'element_code' => 'robots_empty', 109 'name' => $_language->get('text_robots_empty'), 110 'description' => $_language->get('help_robots_empty'), 111 'rating' => $robots_empty_rating, 112 'weight' => 1 113 ); 114 115 $adviser_elements[$store['store_id']][$language['language_id']][] = array( 116 'extension_code' => $this->codename, 117 'element_code' => 'robots_no_index', 118 'name' => $_language->get('text_robots_no_index'), 119 'description' => $_language->get('help_robots_no_index'), 120 'rating' => $robots_no_index_rating, 121 'weight' => 1 122 ); 123 124 $adviser_elements[$store['store_id']][$language['language_id']][] = array( 125 'extension_code' => $this->codename, 126 'element_code' => 'seo_url_disabled', 127 'name' => $_language->get('text_seo_url_disabled'), 128 'description' => $_language->get('help_seo_url_disabled'), 129 'rating' => ($this->config->get('config_seo_url')) ? 1 : 0, 130 'weight' => 1 131 ); 132 } 133 } 134 } 135 136 return $adviser_elements; 137 } 138 } 139 ?>