View file Web Template Ktpl/package/system/controllers/ktpl/hooks/engine_start.php

File size: 7.97Kb
<?php

class onKtplEngineStart extends cmsAction {

    public function run(){
		
		$core = cmsCore::getInstance();
		$template = cmsTemplate::getInstance();

		if($core->uri_controller == 'admin') return false;

		$link = $this->cms_config->host . $this->cms_config->upload_root;

		if($this->options['awesome_on']) $template->addCSS('templates/ktpl/controllers/ktpl/awesome/css/font-awesome.min.css', false);
		$template->addCSS("templates/ktpl/controllers/ktpl/styler.css", false);

		$template->addCSS("ktpl/set_styles", false);

		if($this->options['yw_bg_color'] && $this->options['yw_image']) $template->addHead('<meta name="yandex-tableau-widget" content="logo=' . $link . $this->options['yw_image']['original'] . ', color=' . $this->options['yw_bg_color'] . '" />');

		if($this->options['main_head']) $template->addHead($this->options['main_head']);

		if($this->options['favicon']) {

			$template->addHead('<link rel="icon" href="' . $link . $this->options['favicon']['original'] . '" type="image/png"  sizes="16x16" />');
			$template->addHead('<link rel="shortcut icon" href="' . $link . $this->options['favicon']['original'] . '" type="image/x-icon" />');

		}

		if($this->options['favicon_32']) $template->addHead('<link rel="icon" href="' . $link . $this->options['favicon_32']['original'] . '" type="image/png"  sizes="32x32" />');
		if($this->options['favicon_96']) $template->addHead('<link rel="icon" href="' . $link . $this->options['favicon_96']['original'] . '" type="image/png"  sizes="96x96" />');
		if($this->options['favicon_192']) $template->addHead('<link rel="icon" href="' . $link . $this->options['favicon_192']['original'] . '" type="image/png"  sizes="192x192" />');

		if($this->options['win_color']) $template->addHead('<meta name="msapplication-TileColor" content="' . $this->options['win_color'] . '" />');
		if($this->options['win_70']) $template->addHead('<meta name="msapplication-square70x70logo" content="' . $link . $this->options['win_70']['original'] . '" />');
		if($this->options['win_144']) $template->addHead('<meta name="msapplication-TileImage" content="' . $link . $this->options['win_144']['original'] . '" />');
		if($this->options['win_150']) $template->addHead('<meta name="msapplication-square150x150logo" content="' . $link . $this->options['win_150']['original'] . '" />');
		if($this->options['win_310x150']) $template->addHead('<meta name="msapplication-wide310x150logo" content="' . $link . $this->options['win_310x150']['original'] . '" />');
		if($this->options['win_310']) $template->addHead('<meta name="msapplication-square310x310logo" content="' . $link . $this->options['win_310']['original'] . '" />');

		if($this->options['apple_icon_57']) $template->addHead('<link rel="apple-touch-icon" sizes="57x57" href="' . $link . $this->options['apple_icon_57']['original'] . '" />');
		if($this->options['apple_icon_60']) $template->addHead('<link rel="apple-touch-icon" sizes="60x60" href="' . $link . $this->options['apple_icon_60']['original'] . '" />');
		if($this->options['apple_icon_72']) $template->addHead('<link rel="apple-touch-icon" sizes="72x72" href="' . $link . $this->options['apple_icon_72']['original'] . '" />');
		if($this->options['apple_icon_76']) $template->addHead('<link rel="apple-touch-icon" sizes="76x76" href="' . $link . $this->options['apple_icon_76']['original'] . '" />');
		if($this->options['apple_icon_114']) $template->addHead('<link rel="apple-touch-icon" sizes="114x114" href="' . $link . $this->options['apple_icon_114']['original'] . '" />');
		if($this->options['apple_icon_120']) $template->addHead('<link rel="apple-touch-icon" sizes="120x120" href="' . $link . $this->options['apple_icon_120']['original'] . '" />');
		if($this->options['apple_icon_144']) $template->addHead('<link rel="apple-touch-icon" sizes="144x144" href="' . $link . $this->options['apple_icon_144']['original'] . '" />');
		if($this->options['apple_icon_152']) $template->addHead('<link rel="apple-touch-icon" sizes="152x152" href="' . $link . $this->options['apple_icon_152']['original'] . '" />');
		if($this->options['apple_icon_180']) $template->addHead('<link rel="apple-touch-icon" sizes="180x180" href="' . $link . $this->options['apple_icon_180']['original'] . '" />');

			if($this->options['tpl']){

				$select = string_parse_list($this->options['tpl']);
		        	
		        foreach ($select as $item) {

		        	if(!isset($item['id'])){
		        		if($core->uri == ''){
		        			if(count(explode('/', $item['value'])) == 2){
			        			$item['value'] = explode('/', $item['value']);
					        	$curr_name = $template->name;
					        	$template->setName($item['value'][0]);
					        	$template->setLayout($item['value'][1]);
					        	$template->setInheritNames(array($curr_name, $item['value'][0]));
			        		} else {
			        			$curr_name = $template->name;
			        			$template->setName($item['value']);
			        			$template->setInheritNames(array($curr_name, $item['value']));
							}
		        		}
		        	} else {
		        		if(count(explode('/', $item['id'])) == 2){
		        			$item['id'] = explode('/', $item['id']);
		        			if(string_in_mask_list($core->uri, $item['value'])){
				        		$curr_name = $template->name;
				        		$template->setName($item['id'][0]);
				        		$template->setLayout($item['id'][1]);
				        		$template->setInheritNames(array($curr_name, $item['id'][0]));
							}
		        		} elseif(string_in_mask_list($core->uri, $item['value'])){
		        			$curr_name = $template->name;
		        			$template->setName($item['id']);
		        			$template->setInheritNames(array($curr_name, $item['id']));
						}
		        	}

		       	}

			}

			if($this->options['skins']){

				$skins = files_tree_to_array('templates/ktpl/skins/');
				if($skins) {

		        	foreach($skins as $key=>$skin) {
		        		$skin_arr[$key] = $key;
		        	}
		        	$skins = $skin_arr;
		        	
		        	$select = string_parse_list($this->options['skins']);

		        	$core = cmsCore::getInstance();
		        	$template = cmsTemplate::getInstance();
		        	
		        	foreach ($select as $item) {

		        		if(isset($item['id'])) {
		        			$value = $item['id'];
		        			$url_mask = $item['value'];
		        		} else {
		        			$value = $item['value'];
		        			$url_mask = false;
		        		}

						if(!in_array($value, $skins)) continue;

						if(($url_mask && string_in_mask_list($core->uri, $url_mask)) || !$url_mask){

							$template->addCSS("templates/ktpl/skins/" . $value . "/styles.css", false);
							$template->addJs("templates/ktpl/skins/" . $value . "/script.js", false, false);

						}

					}

		        }

			}

		//Redirect
		if($this->options['redirect']){
		
			$all_reg = string_parse_list($this->options['redirect']);
				
			foreach ($all_reg as $reg) {
				
				if(!isset($reg['id'])){
					$reg['id'] = $reg['value'];
					$reg['value'] = href_to_home();
				}

				if (string_in_mask_list($_SERVER['REQUEST_URI'], $reg['id'])) {

					$regular = '/' . string_mask_to_regular($reg['id']) . '/';
					$replace = preg_replace($regular, $reg['value'], $_SERVER['REQUEST_URI']);
					$this->redirect($replace, 301);

				}
				
			}

		}

		$user = cmsUser::getInstance();

		if(!$user->id) {
		
			$core = cmsCore::getInstance();

			if (in_array($core->uri_controller, $this->options['ctypes_guest_pub']) && !empty($this->options['guest_id'])) {

				if($core->uri_action == 'add') {
						
					$user->id = $this->options['guest_id'];
					$profile = cmsCore::getModel('users')->getUser($user->id);
					$user->perms = cmsUser::getPermissions($profile['groups']);

				}

				if (strstr($core->uri_action, '.html')) {
					
					$user->id = $this->options['guest_id'];
					$profile = cmsCore::getModel('users')->getUser($user->id);
					$user->perms = cmsUser::getPermissions($profile['groups']);

				}

			}

		}

    }

}