shop.balmet.com

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

d_seo_module.php (8128B)


      1 <?php
      2 class ModelExtensionModuleDSEOModule extends Model {
      3 	private $codename = 'd_seo_module';
      4 	
      5 	/*
      6 	*	Save File Data.
      7 	*/
      8 	public function saveFileData($file, $data) {
      9 		$dir = str_replace('system/', '', DIR_SYSTEM);
     10 		
     11 		if ($file == 'htaccess') {
     12 			$file_on = $dir . '.htaccess';
     13 			$file_off = $dir . '._htaccess'; 
     14 		}
     15 		
     16 		if ($file == 'robots') {
     17 			$file_on = $dir . 'robots.txt';
     18 			$file_off = $dir . '_robots.txt'; 
     19 		}
     20 		
     21 		if ($data['status']) {
     22 			if (file_exists($file_off)) unlink($file_off);
     23 			$fh = fopen($file_on, 'w');
     24 			fwrite($fh, html_entity_decode($data['text']));
     25 			fclose($fh);
     26 		} else {
     27 			if (file_exists($file_on)) unlink($file_on);
     28 			$fh = fopen($file_off, 'w');
     29 			fwrite($fh, html_entity_decode($data['text']));
     30 			fclose($fh);
     31 		}
     32 	}
     33 	
     34 	/*
     35 	*	Return File Data.
     36 	*/
     37 	public function getFileData($file) {
     38 		$dir = str_replace('system/', '', DIR_SYSTEM);
     39 		
     40 		if ($file == 'htaccess') {
     41 			$file_on = $dir . '.htaccess';
     42 			$file_off = $dir . '._htaccess'; 
     43 		}
     44 		
     45 		if ($file == 'robots') {
     46 			$file_on = $dir . 'robots.txt';
     47 			$file_off = $dir . '_robots.txt'; 
     48 		}
     49 		
     50 		$data = array();
     51 		
     52 		if (file_exists($file_on)) { 
     53 			$data['status'] = true;
     54 			$fh = fopen($file_on, 'r');
     55 			$data['text'] = fread($fh, filesize($file_on) + 1);
     56 			fclose($fh);
     57 		} else {
     58 			if (file_exists($file_off)) {
     59 				$data['status'] = false;
     60 				$fh = fopen($file_off, 'r');
     61 				$data['text'] = fread($fh, filesize($file_off) + 1);
     62 				fclose($fh);
     63 			} else {
     64 				$data['status'] = false;
     65 				$data['text'] = '';
     66 			}
     67 		}
     68 				
     69 		return $data;
     70 	}
     71 	
     72 	/*
     73 	*	Create Default Target Elements.
     74 	*/
     75 	public function createDefaultTargetElements($default_target_keywords, $store_id = 0) {
     76 		$languages = $this->getLanguages();
     77 		
     78 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE '%/%' AND store_id = '" . (int)$store_id . "'");
     79 		
     80 		foreach ($languages as $language) {
     81 			$implode = array();
     82 						
     83 			foreach ($default_target_keywords as $route => $target_keyword) {
     84 				$sort_order = 1;
     85 				
     86 				foreach ($target_keyword as $keyword) {
     87 					$implode[] = "('" . $route . "', '" . (int)$store_id . "', '" . (int)$language['language_id'] . "', '" . $sort_order . "', '" . $keyword . "')";
     88 					
     89 					$sort_order++;
     90 				}
     91 			}
     92 			
     93 			if ($implode) {
     94 				$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword (route, store_id, language_id, sort_order, keyword) VALUES " . implode(', ', $implode));
     95 			}
     96 		}
     97 	}
     98 					
     99 	/*
    100 	*	Save SEO extensions.
    101 	*/
    102 	public function saveSEOExtensions($seo_extensions) {
    103 		$this->load->model('setting/setting');
    104 		
    105 		$setting['d_seo_extension_install'] = $seo_extensions;
    106 		
    107 		$this->model_setting_setting->editSetting('d_seo_extension', $setting);
    108 	}
    109 	
    110 	/*
    111 	*	Return list of SEO extensions.
    112 	*/
    113 	public function getSEOExtensions() {
    114 		$this->load->model('setting/setting');
    115 				
    116 		$seo_extensions = array();
    117 		
    118 		$files = glob(DIR_APPLICATION . 'controller/extension/' . $this->codename . '/*.php');
    119 		
    120 		if ($files) {
    121 			foreach ($files as $file) {
    122 				$seo_extensions[] = basename($file, '.php');
    123 			}
    124 		}
    125 		
    126 		return $seo_extensions;
    127 	}
    128 	
    129 	/*
    130 	*	Return list of installed SEO extensions.
    131 	*/
    132 	public function getInstalledSEOExtensions() {
    133 		$this->load->model('setting/setting');
    134 				
    135 		$installed_extensions = array();
    136 		
    137 		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "extension ORDER BY code");
    138 		
    139 		foreach ($query->rows as $result) {
    140 			$installed_extensions[] = $result['code'];
    141 		}
    142 		
    143 		$installed_seo_extensions = $this->model_setting_setting->getSetting('d_seo_extension');
    144 		$installed_seo_extensions = isset($installed_seo_extensions['d_seo_extension_install']) ? $installed_seo_extensions['d_seo_extension_install'] : array();
    145 		
    146 		$seo_extensions = array();
    147 		
    148 		$files = glob(DIR_APPLICATION . 'controller/extension/' . $this->codename . '/*.php');
    149 		
    150 		if ($files) {
    151 			foreach ($files as $file) {
    152 				$seo_extension = basename($file, '.php');
    153 				
    154 				if (in_array($seo_extension, $installed_extensions) && in_array($seo_extension, $installed_seo_extensions)) {
    155 					$seo_extensions[] = $seo_extension;
    156 				}
    157 			}
    158 		}
    159 		
    160 		return $seo_extensions;
    161 	}
    162 		
    163 	/*
    164 	*	Return list of languages.
    165 	*/
    166 	public function getLanguages() {
    167 		$this->load->model('localisation/language');
    168 		
    169 		$languages = $this->model_localisation_language->getLanguages();
    170 		
    171 		foreach ($languages as $key => $language) {
    172             if (VERSION >= '2.2.0.0') {
    173                 $languages[$key]['flag'] = 'language/' . $language['code'] . '/' . $language['code'] . '.png';
    174             } else {
    175                 $languages[$key]['flag'] = 'view/image/flags/' . $language['image'];
    176             }
    177         }
    178 				
    179 		return $languages;
    180 	}
    181 	
    182 	/*
    183 	*	Return list of stores.
    184 	*/
    185 	public function getStores() {
    186 		$this->load->model('setting/store');
    187 		
    188 		$result = array();
    189 		
    190 		$result[] = array(
    191 			'store_id' => 0, 
    192 			'name' => $this->config->get('config_name')
    193 		);
    194 		
    195 		$stores = $this->model_setting_store->getStores();
    196 		
    197 		if ($stores) {
    198 			foreach ($stores as $store) {
    199 				$result[] = array(
    200 					'store_id' => $store['store_id'],
    201 					'name' => $store['name']	
    202 				);
    203 			}	
    204 		}
    205 		
    206 		return $result;
    207 	}
    208 	
    209 	/*
    210 	*	Return store.
    211 	*/
    212 	public function getStore($store_id) {
    213 		$this->load->model('setting/store');
    214 		
    215 		$result = array();
    216 		
    217 		if ($store_id == 0) {
    218 			$result = array(
    219 				'store_id' => 0, 
    220 				'name' => $this->config->get('config_name'),
    221 				'url' => HTTP_CATALOG,
    222 				'ssl' => HTTPS_CATALOG
    223 			);
    224 		} else {
    225 			$store = $this->model_setting_store->getStore($store_id);
    226 			
    227 			$result = array(
    228 				'store_id' => $store['store_id'],
    229 				'name' => $store['name'],
    230 				'url' => $store['url'],
    231 				'ssl' => $store['ssl']
    232 			);
    233 		}
    234 				
    235 		return $result;
    236 	}
    237 	
    238 	/*
    239 	*	Return URL Info.
    240 	*/	
    241 	public function getURLInfo($url) {						
    242 		$url_info = parse_url(str_replace('&amp;', '&', $url));
    243 		
    244 		$url_info['scheme'] = isset($url_info['scheme']) ? $url_info['scheme'] . '://' : '';
    245 		$url_info['user'] = isset($url_info['user']) ? $url_info['user'] : '';
    246 		$url_info['pass'] = isset($url_info['pass']) ? ':' . $url_info['pass']  : '';
    247 		$url_info['pass'] = ($url_info['user'] || $url_info['pass']) ? $url_info['pass'] . '@' : ''; 
    248 		$url_info['host'] = isset($url_info['host']) ? $url_info['host'] : '';
    249 		$url_info['port'] = isset($url_info['port']) ? ':' . $url_info['port'] : '';
    250 		$url_info['path'] = isset($url_info['path']) ? $url_info['path'] : '';		
    251 		
    252 		$url_info['data'] = array();
    253 		
    254 		if (isset($url_info['query'])) {
    255 			parse_str($url_info['query'], $url_info['data']);
    256 		}
    257 		
    258 		$url_info['query'] = isset($url_info['query']) ? '?' . $url_info['query'] : '';
    259 		$url_info['fragment'] = isset($url_info['fragment']) ? '#' . $url_info['fragment'] : '';
    260 						
    261 		return $url_info;
    262 	}
    263 		
    264 	/*
    265 	*	Sort Array By Column.
    266 	*/
    267 	public function sortArrayByColumn($arr, $col, $dir = SORT_ASC) {
    268 		$sort_col = array();
    269 		$sort_key = array();
    270 		
    271 		foreach ($arr as $key => $row) {
    272 			$sort_key[$key] = $key;
    273 			
    274 			if (isset($row[$col])) {
    275 				$sort_col[$key] = $row[$col];
    276 			} else {
    277 				$sort_col[$key] = '';
    278 			}
    279 		}
    280 		
    281 		array_multisort($sort_col, $dir, $sort_key, SORT_ASC, $arr);
    282 		
    283 		return $arr;
    284 	}
    285 				
    286 	/*
    287 	*	Install.
    288 	*/		
    289 	public function installExtension() {
    290 		if (VERSION < '3.0.0.0') {
    291 			$this->db->query("ALTER TABLE " . DB_PREFIX . "setting MODIFY code VARCHAR(128) NOT NULL");
    292 		}
    293 		
    294 		$this->db->query("DROP TABLE IF EXISTS " . DB_PREFIX . "d_target_keyword");
    295 		
    296 		$this->db->query("CREATE TABLE " . DB_PREFIX . "d_target_keyword (route VARCHAR(255) NOT NULL, store_id INT(11) NOT NULL, language_id INT(11) NOT NULL, sort_order INT(3) NOT NULL, keyword VARCHAR(255) NOT NULL, PRIMARY KEY (route, store_id, language_id, sort_order), KEY keyword (keyword)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci");
    297 	}
    298 	
    299 	/*
    300 	*	Uninstall.
    301 	*/		
    302 	public function uninstallExtension() {
    303 		$this->db->query("DROP TABLE IF EXISTS " . DB_PREFIX . "d_target_keyword");
    304 		$this->db->query("DROP TABLE IF EXISTS " . DB_PREFIX . "d_meta_data");
    305 		$this->db->query("DROP TABLE IF EXISTS " . DB_PREFIX . "d_url_keyword");
    306 	}
    307 }
    308 ?>