shop.balmet.com

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

d_seo_module_target_keyword.php (14587B)


      1 <?php
      2 class ControllerExtensionDashboardDSEOModuleTargetKeyword extends Controller {
      3 	private $codename = 'd_seo_module_target_keyword';
      4 	private $main_codename = 'd_seo_module';
      5 	private $route = 'extension/dashboard/d_seo_module_target_keyword';
      6 	private $config_file = 'd_seo_module_target_keyword';
      7 	private $extension = array();
      8 	private $error = array(); 
      9 	
     10 	public function __construct($registry) {
     11 		parent::__construct($registry);
     12 		
     13 		$this->d_shopunity = (file_exists(DIR_SYSTEM . 'library/d_shopunity/extension/d_shopunity.json'));
     14 		$this->extension = json_decode(file_get_contents(DIR_SYSTEM . 'library/d_shopunity/extension/' . $this->main_codename . '.json'), true);
     15 	}
     16 	
     17 	public function index() {
     18 		$this->load->language($this->route);
     19 		
     20 		$this->load->model($this->route);
     21 		$this->load->model('setting/setting');
     22 
     23 		if ($this->d_shopunity) {
     24 			$this->load->model('extension/d_shopunity/mbooth');
     25 				
     26 			$this->model_extension_d_shopunity_mbooth->validateDependencies($this->main_codename);
     27 		}
     28 		
     29 		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
     30 			$this->load->model('extension/module/d_twig_manager');
     31 			
     32 			$this->model_extension_module_d_twig_manager->installCompatibility();
     33 		}
     34 		
     35 		$this->load->controller('extension/module/d_seo_module/update');
     36 		
     37 		$url_token = '';
     38 		
     39 		if (isset($this->session->data['token'])) {
     40 			$url_token .=  'token=' . $this->session->data['token'];
     41 		}
     42 		
     43 		if (isset($this->session->data['user_token'])) {
     44 			$url_token .=  'user_token=' . $this->session->data['user_token'];
     45 		}
     46 		
     47 		// Styles and Scripts
     48 		$this->document->addStyle('view/stylesheet/d_bootstrap_extra/bootstrap.css');
     49 		$this->document->addScript('view/javascript/d_bootstrap_switch/js/bootstrap-switch.min.js');
     50         $this->document->addStyle('view/javascript/d_bootstrap_switch/css/bootstrap-switch.css');        
     51 		$this->document->addStyle('view/stylesheet/d_seo_module.css');
     52 		
     53 		// Heading
     54 		$this->document->setTitle($this->language->get('heading_title_main'));
     55 		$data['heading_title'] = $this->language->get('heading_title_main');
     56 		
     57 		// Variable
     58 		$data['codename'] = $this->codename;
     59 		$data['route'] = $this->route;
     60 		$data['version'] = $this->extension['version'];
     61 		$data['config'] = $this->config_file;
     62 		$data['d_shopunity'] = $this->d_shopunity;
     63 		$data['stores'] = $this->{'model_extension_dashboard_' . $this->codename}->getStores();
     64 										
     65 		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
     66 			$data['server'] = HTTPS_SERVER;
     67 			$data['catalog'] = HTTPS_CATALOG;
     68 		} else {
     69 			$data['server'] = HTTP_SERVER;
     70 			$data['catalog'] = HTTP_CATALOG;
     71 		}
     72 		
     73 		// Action
     74 		$data['module_link'] = $this->url->link($this->route, $url_token, true);
     75 		$data['action'] = $this->url->link($this->route . '/save', $url_token, true);
     76 		
     77 		if (VERSION >= '3.0.0.0') {
     78 			$data['cancel'] = $this->url->link('marketplace/extension', $url_token . '&type=dashboard', true);
     79 		} else {
     80 			$data['cancel'] = $this->url->link('extension/extension', $url_token . '&type=dashboard', true);
     81 		}
     82 		
     83 		// Button
     84 		$data['button_save'] = $this->language->get('button_save');
     85 		$data['button_save_and_stay'] = $this->language->get('button_save_and_stay');
     86 		$data['button_cancel'] = $this->language->get('button_cancel');	
     87 		
     88 		// Entry
     89 		$data['entry_status'] = $this->language->get('entry_status');
     90 		$data['entry_width'] = $this->language->get('entry_width');
     91 		$data['entry_sort_order'] = $this->language->get('entry_sort_order');
     92 		$data['entry_list_limit'] = $this->language->get('entry_list_limit');
     93 		$data['entry_duplicate_status'] = $this->language->get('entry_duplicate_status');
     94 		$data['entry_empty_status'] = $this->language->get('entry_empty_status');
     95 		$data['entry_store'] = $this->language->get('entry_store');
     96 		
     97 		// Text		
     98 		$data['text_edit'] = $this->language->get('text_edit');
     99 		$data['text_yes'] = $this->language->get('text_yes');
    100 		$data['text_no'] = $this->language->get('text_no');
    101 		$data['text_enabled'] = $this->language->get('text_enabled');
    102 		$data['text_disabled'] = $this->language->get('text_disabled');
    103 		
    104 		// Notification
    105 		foreach($this->error as $key => $error){
    106 			$data['error'][$key] = $error;
    107 		}
    108 		
    109 		if (isset($this->session->data['success'])) {
    110 			$data['success'] = $this->session->data['success'];
    111 			unset($this->session->data['success']);
    112 		} else {
    113 			$data['success'] = '';
    114 		}
    115 		
    116 		// Breadcrumbs
    117 		$data['breadcrumbs'] = array();
    118 
    119 		$data['breadcrumbs'][] = array(
    120 			'text' => $this->language->get('text_home'),
    121 			'href' => $this->url->link('common/dashboard', $url_token, true)
    122 		);
    123 		
    124 		if (VERSION >= '3.0.0.0') {
    125 			$data['breadcrumbs'][] = array(
    126 				'text' => $this->language->get('text_dashboard'),
    127 				'href' => $this->url->link('marketplace/extension', $url_token . '&type=dashboard', true)
    128 			);
    129 		} elseif (VERSION >= '2.3.0.0') {
    130 			$data['breadcrumbs'][] = array(
    131 				'text' => $this->language->get('text_dashboard'),
    132 				'href' => $this->url->link('extension/extension', $url_token . '&type=dashboard', true)
    133 			);
    134 		} else {
    135 			$data['breadcrumbs'][] = array(
    136 				'text' => $this->language->get('text_dashboard'),
    137 				'href' => $this->url->link('extension/dashboard', $url_token, true)
    138 			);
    139 		}
    140 
    141 		$data['breadcrumbs'][] = array(
    142 			'text' => $this->language->get('heading_title_main'),
    143 			'href' => $this->url->link($this->route, $url_token, true)
    144 		);
    145 		
    146 		// Setting 	
    147 		$this->config->load($this->config_file);
    148 		$data['setting'] = ($this->config->get($this->codename . '_setting')) ? $this->config->get($this->codename . '_setting') : array();
    149 		
    150 		$setting = $this->model_setting_setting->getSetting('dashboard_' . $this->codename);	
    151 		$status = isset($setting['dashboard_' . $this->codename . '_status']) ? $setting['dashboard_' . $this->codename . '_status'] : false;
    152 		$width = isset($setting['dashboard_' . $this->codename . '_width']) ? $setting['dashboard_' . $this->codename . '_width'] : 12;
    153 		$sort_order = isset($setting['dashboard_' . $this->codename . '_sort_order']) ? $setting['dashboard_' . $this->codename . '_sort_order'] : 20;
    154 		$setting = isset($setting['dashboard_' . $this->codename . '_setting']) ? $setting['dashboard_' . $this->codename . '_setting'] : array();
    155 		
    156 		$data['status'] = $status;
    157 		$data['width'] = $width;
    158 		$data['sort_order'] = $sort_order;
    159 								
    160 		if (!empty($setting)) {
    161 			$data['setting'] = array_replace_recursive($data['setting'], $setting);
    162 		}
    163 		
    164 		$data['columns'] = array();
    165 		
    166 		for ($i = 3; $i <= 12; $i++) {
    167 			$data['columns'][] = $i;
    168 		}
    169 		
    170 		$data['header'] = $this->load->controller('common/header');
    171 		$data['column_left'] = $this->load->controller('common/column_left');
    172 		$data['footer'] = $this->load->controller('common/footer');
    173 
    174 		$this->response->setOutput($this->load->view($this->route, $data));
    175 	}
    176 	
    177 	public function save() {
    178 		$this->load->language($this->route);
    179 		
    180 		$this->load->model('setting/setting');
    181 		
    182 		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
    183 			$this->model_setting_setting->editSetting('dashboard_' . $this->codename, $this->request->post);
    184 						
    185 			$data['success'] = $this->language->get('success_save');
    186 		}
    187 						
    188 		$data['error'] = $this->error;
    189 				
    190 		$this->response->setOutput(json_encode($data));
    191 	}
    192 	
    193 	public function dashboard() {
    194 		$this->load->language($this->route);
    195 		
    196 		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
    197 			$this->load->model('extension/module/d_twig_manager');
    198 			
    199 			$this->model_extension_module_d_twig_manager->installCompatibility();
    200 		}
    201 		
    202 		$this->load->controller('extension/module/d_seo_module/update');
    203 				
    204 		$url_token = '';
    205 		
    206 		if (isset($this->session->data['token'])) {
    207 			$url_token .= 'token=' . $this->session->data['token'];
    208 		}
    209 		
    210 		if (isset($this->session->data['user_token'])) {
    211 			$url_token .= 'user_token=' . $this->session->data['user_token'];
    212 		}
    213 		
    214 		// Heading
    215 		$data['heading_title'] = $this->language->get('heading_title_main');
    216 		
    217 		// Variable
    218 		$data['codename'] = $this->codename;
    219 		$data['route'] = $this->route;
    220 		$data['url_token'] =  $url_token;
    221 										
    222 		return $this->load->view($this->route . '_info', $data);
    223 	}
    224 	
    225 	public function refresh() {
    226 		$this->load->language($this->route);
    227 		
    228 		$this->load->model($this->route);
    229 		$this->load->model('setting/setting');
    230 		$this->load->model('localisation/language');
    231 		
    232 		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
    233 			$this->load->model('extension/module/d_twig_manager');
    234 			
    235 			$this->model_extension_module_d_twig_manager->installCompatibility();
    236 		}
    237 		
    238 		// Heading
    239 		$data['heading_title'] = $this->language->get('heading_title_main');
    240 		
    241 		// Variable
    242 		$data['codename'] = $this->codename;
    243 		$data['route'] = $this->route;
    244 		$data['languages'] = $this->{'model_extension_dashboard_' . $this->codename}->getLanguages();
    245 		$data['stores'] = array();
    246 				
    247 		// Column
    248 		$data['column_route'] = $this->language->get('column_route');
    249 		$data['column_target_keyword'] = $this->language->get('column_target_keyword');
    250 		
    251 		// Text
    252 		$data['text_heading_info'] = $this->language->get('text_heading_info');
    253 		$data['text_no_results'] = $this->language->get('text_no_results');
    254 		
    255 		// Setting
    256 		$this->config->load($this->config_file);
    257 		$config_setting = ($this->config->get($this->codename . '_setting')) ? $this->config->get($this->codename . '_setting') : array();
    258 		
    259 		$setting = $this->model_setting_setting->getSetting('dashboard_' . $this->codename);	
    260 		$setting = isset($setting['dashboard_' . $this->codename . '_setting']) ? $setting['dashboard_' . $this->codename . '_setting'] : array();
    261 		
    262 		if (!empty($setting)) {
    263 			$config_setting = array_replace_recursive($config_setting, $setting);
    264 		}
    265 		
    266 		$setting = $config_setting;
    267 
    268 		$installed_seo_target_keyword_extensions = $this->{'model_extension_dashboard_' . $this->codename}->getInstalledSEOTargetKeywordExtensions();
    269 		
    270 		$target_elements = array();
    271 		$store_target_elements = array();
    272 		$store_duplicate_target_elements = array();
    273 		$store_empty_target_elements = array();
    274 		
    275 		if ($setting['duplicate_status'] || $setting['empty_status']) {
    276 			foreach ($installed_seo_target_keyword_extensions as $installed_seo_target_keyword_extension) {
    277 				$info = $this->load->controller('extension/' . $this->codename . '/' . $installed_seo_target_keyword_extension . '/target_elements');
    278 				if ($info) $target_elements = array_replace_recursive($target_elements, $info);
    279 			}
    280 		}
    281 		
    282 		if ($setting['duplicate_status']) {
    283 			$store_duplicate_target_elements = $this->{'model_extension_dashboard_' . $this->codename}->getStoreDuplicateTargetElements($target_elements);				
    284 			if ($store_duplicate_target_elements) $store_target_elements = array_replace_recursive($store_target_elements, $store_duplicate_target_elements);
    285 		}
    286 		
    287 		if ($setting['empty_status']) {
    288 			$store_empty_target_elements = $this->{'model_extension_dashboard_' . $this->codename}->getStoreEmptyTargetElements($target_elements);				
    289 			if ($store_empty_target_elements) $store_target_elements = array_replace_recursive($store_target_elements, $store_empty_target_elements);
    290 		}
    291 		
    292 		foreach ($store_target_elements as $store_id => $target_elements) {
    293 			$store_target_elements[$store_id] = array_slice($target_elements, 0, $setting['list_limit']);
    294 		}
    295 		
    296 		foreach ($installed_seo_target_keyword_extensions as $installed_seo_target_keyword_extension) {
    297 			$store_target_elements_links = $this->load->controller('extension/' . $this->codename . '/' . $installed_seo_target_keyword_extension . '/store_target_elements_links', $store_target_elements);
    298 			if ($store_target_elements_links) $store_target_elements = $store_target_elements_links;
    299 		}
    300 				
    301 		$stores = $this->{'model_extension_dashboard_' . $this->codename}->getStores();
    302 					
    303 		foreach ($stores as $store) {			
    304 			if ((in_array($store['store_id'], $setting['stores_id'])) || (VERSION < '2.3.0.0')) {
    305 				$data['stores'][$store['store_id']] = $store;
    306 				
    307 				if ($setting['duplicate_status']) {
    308 					$data['stores'][$store['store_id']]['duplicate_target_elements_count'] = 0;
    309 					
    310 					if (isset($store_duplicate_target_elements[$store['store_id']])) {
    311 						$data['stores'][$store['store_id']]['duplicate_target_elements_count'] = count($store_duplicate_target_elements[$store['store_id']]);
    312 					}
    313 				}
    314 				
    315 				if ($setting['empty_status']) {
    316 					$data['stores'][$store['store_id']]['empty_target_elements_count'] = 0;
    317 					
    318 					if (isset($store_empty_target_elements[$store['store_id']])) {
    319 						$data['stores'][$store['store_id']]['empty_target_elements_count'] = count($store_empty_target_elements[$store['store_id']]);
    320 					}
    321 				}
    322 				
    323 				$data['stores'][$store['store_id']]['target_elements'] = array();
    324 						
    325 				if (isset($store_target_elements[$store['store_id']])) {
    326 					$data['stores'][$store['store_id']]['target_elements'] = $store_target_elements[$store['store_id']];
    327 				}
    328 			}
    329 		}
    330 		
    331 		$this->response->setOutput($this->load->view($this->route . '_refresh', $data));
    332 	}
    333 	
    334 	public function editTargetElement() {
    335 		$this->load->language($this->route);
    336 		
    337 		$this->load->model($this->route);
    338 		
    339 		if (isset($this->request->post['route']) && isset($this->request->post['store_id']) && isset($this->request->post['language_id']) && isset($this->request->post['target_keyword']) && $this->validate()) {
    340 			$target_element_data = array(
    341 				'route'				=> $this->request->post['route'],
    342 				'store_id'			=> $this->request->post['store_id'],
    343 				'language_id'		=> $this->request->post['language_id'],
    344 				'target_keyword'	=> $this->request->post['target_keyword']
    345 			);
    346 		
    347 			$installed_seo_target_keyword_extensions = $this->{'model_extension_dashboard_' . $this->codename}->getInstalledSEOTargetKeywordExtensions();
    348 			
    349 			foreach ($installed_seo_target_keyword_extensions as $installed_seo_target_keyword_extension) {
    350 				$this->load->controller('extension/' . $this->codename . '/' . $installed_seo_target_keyword_extension . '/edit_target_element', $target_element_data);
    351 			}
    352 		}
    353 			
    354 		$data['error'] = $this->error;
    355 		
    356 		$this->response->setOutput(json_encode($data));
    357 	}
    358 	
    359 	/*
    360 	*	Validator Functions.
    361 	*/		
    362 	private function validate($permission = 'modify') {
    363 		if (isset($this->request->post['config'])) {
    364 			return false;
    365 		}
    366 				
    367 		if (!$this->user->hasPermission($permission, $this->route)) {
    368 			$this->error['warning'] = $this->language->get('error_permission');
    369 			
    370 			return false;
    371 		}
    372 		
    373 		return true;
    374 	}
    375 }