/** * Open, parse, and return the template file. * * @param $file string the template file name */ function fetch($fileTemplate = null) { $instance = erLhcoreClassSystem::instance(); $port = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : 80; if (!$fileTemplate) { $fileTemplate = $this->file; } if ($this->cacheEnabled == true && key_exists(md5($fileTemplate . $instance->WWWDirLang . $instance->Language . $port), $this->cacheTemplates)) { try { return $this->fetchExecute($this->cacheTemplates[md5($fileTemplate . $instance->WWWDirLang . $instance->Language . $port)]); } catch (Exception $e) { } } $cfg = erConfigClassLhConfig::getInstance(); $file = erLhcoreClassDesign::designtpl($fileTemplate); if ($this->templatecompile == true) { $contentFile = php_strip_whitespace($file); // Compile templates - 3 level of inclusions for ($i = 0; $i < 9; $i++) { $Matches = array(); preg_match_all('/<\\?php(\\s*)include_once\\(erLhcoreClassDesign::designtpl\\(\'([a-zA-Z0-9-\\.-\\/\\_]+)\'\\)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[2] as $key => $Match) { $contentFile = str_replace($Matches[0][$key], php_strip_whitespace(erLhcoreClassDesign::designtpl($Match)), $contentFile); } //Compile templates inclusions first level. $Matches = array(); preg_match_all('/<\\?php(\\s*)include\\(erLhcoreClassDesign::designtpl\\(\'([a-zA-Z0-9-\\.-\\/\\_]+)\'\\)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[2] as $key => $Match) { $contentFile = str_replace($Matches[0][$key], php_strip_whitespace(erLhcoreClassDesign::designtpl($Match)), $contentFile); } } //Compile image css paths. Etc.. $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::design\\(\'([a-zA-Z0-9-\\.-\\/\\_]+)\'\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $Match) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::design($Match), $contentFile); } //Compile translations, pure translations $Matches = array(); preg_match_all('/<\\?php echo erTranslationClassLhTranslation::getInstance\\(\\)->getTranslation\\(\'(.*?)\',\'(.*?)\'\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $TranslateContent) { $contentFile = str_replace($Matches[0][$key], erTranslationClassLhTranslation::getInstance()->getTranslation($TranslateContent, $Matches[2][$key]), $contentFile); } //Translations used in logical conditions $Matches = array(); preg_match_all('/erTranslationClassLhTranslation::getInstance\\(\\)->getTranslation\\(\'(.*?)\',\'(.*?)\'\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $TranslateContent) { $contentFile = str_replace($Matches[0][$key], '\'' . erTranslationClassLhTranslation::getInstance()->getTranslation($TranslateContent, $Matches[2][$key]) . '\'', $contentFile); } // Compile url addresses $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::baseurl\\((.*?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::baseurl(trim($UrlAddress, '\'')), $contentFile); } // Compile url direct addresses $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::baseurldirect\\((.*?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::baseurldirect(trim($UrlAddress, '\'')), $contentFile); } // Compile url direct addresses $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::baseurlsite\\(\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::baseurlsite(), $contentFile); } // Compile css url addresses $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::designCSS\\((.*?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::designCSS(trim($UrlAddress, '\'')), $contentFile); } // Compile css url addresses $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassDesign::designJS\\((.*?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], erLhcoreClassDesign::designJS(trim($UrlAddress, '\'')), $contentFile); } // Compile url addresses in logical operations $Matches = array(); preg_match_all('/erLhcoreClassDesign::baseurl\\((.*?)\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], '\'' . erLhcoreClassDesign::baseurl(trim($UrlAddress, '\'')) . '\'', $contentFile); } // Compile url addresses in logical operations $Matches = array(); preg_match_all('/erLhcoreClassDesign::baseurldirect\\((.*?)\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $contentFile = str_replace($Matches[0][$key], '\'' . erLhcoreClassDesign::baseurldirect(trim($UrlAddress, '\'')) . '\'', $contentFile); } // Compile config settings, direct output $Matches = array(); preg_match_all('/<\\?php echo erConfigClassLhConfig::getInstance\\(\\)->getSetting\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?),(\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erConfigClassLhConfig::getInstance()->getSetting($Matches[2][$key], $Matches[5][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = $valueConfig; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile config settings $Matches = array(); preg_match_all('/erConfigClassLhConfig::getInstance\\(\\)->getSetting\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?),(\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erConfigClassLhConfig::getInstance()->getSetting($Matches[2][$key], $Matches[5][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = '\'' . $valueConfig . '\''; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile override config settings, used in title, description override $Matches = array(); preg_match_all('/<\\?php echo erConfigClassLhConfig::getInstance\\(\\)->getOverrideValue\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?),(\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erConfigClassLhConfig::getInstance()->getOverrideValue($Matches[2][$key], $Matches[5][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = $valueConfig; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile override config settings $Matches = array(); preg_match_all('/erConfigClassLhConfig::getInstance\\(\\)->getOverrideValue\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?),(\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erConfigClassLhConfig::getInstance()->getOverrideValue($Matches[2][$key], $Matches[5][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = '\'' . $valueConfig . '\''; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } $Matches = array(); preg_match_all('/<\\?php echo erConfigClassLhConfig::getInstance\\(\\)->getDirLanguage\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erConfigClassLhConfig::getInstance()->getDirLanguage($Matches[2][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = $valueConfig; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile config settings $Matches = array(); preg_match_all('/erConfigClassLhConfig::getInstance\\(\\)->getDirLanguage\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $var) { $valueConfig = erConfigClassLhConfig::getInstance()->getDirLanguage($Matches[2][$key]); $valueReplace = ''; if (is_bool($valueConfig)) { $valueReplace = $valueConfig == false ? 'false' : 'true'; } elseif (is_integer($valueConfig)) { $valueReplace = $valueConfig; } elseif (is_array($valueConfig)) { $valueReplace = var_export($valueConfig, true); } else { $valueReplace = '\'' . $valueConfig . '\''; } $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } if ($this->cacheDbVariables == true) { // Compile config completely $Matches = array(); preg_match_all('/<\\?php echo erLhcoreClassModelChatConfig::fetch\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)->current_value(.*?)\\?\\>/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erLhcoreClassModelChatConfig::fetch($Matches[2][$key])->current_value; $contentFile = str_replace($Matches[0][$key], $valueConfig, $contentFile); } // Compile config settings in php scripts $Matches = array(); preg_match_all('/erLhcoreClassModelChatConfig::fetch\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)->current_value/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erLhcoreClassModelChatConfig::fetch($Matches[2][$key])->current_value; $valueReplace = ''; $valueReplace = '\'' . str_replace("'", "\\'", $valueConfig) . '\''; $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile config settings in php scripts $Matches = array(); preg_match_all('/erLhcoreClassModelChatConfig::fetch\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)->data_value/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erLhcoreClassModelChatConfig::fetch($Matches[2][$key])->data_value; $valueReplace = var_export($valueConfig, true); $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } // Compile config settings array $Matches = array(); preg_match_all('/erLhcoreClassModelChatConfig::fetch\\((\\s?)\'([a-zA-Z0-9-\\.-\\/\\_]+)\'(\\s?)\\)->data\\[\'([a-zA-Z0-9-\\.-\\/\\_]+)\'\\]/i', $contentFile, $Matches); foreach ($Matches[1] as $key => $UrlAddress) { $valueConfig = erLhcoreClassModelChatConfig::fetch($Matches[2][$key])->data[$Matches[4][$key]]; $valueReplace = ''; $valueReplace = '\'' . str_replace("'", "\\'", $valueConfig) . '\''; $contentFile = str_replace($Matches[0][$key], $valueReplace, $contentFile); } } // Compile content language $contentFile = str_replace('<?php echo erLhcoreClassSystem::instance()->ContentLanguage?>', erLhcoreClassSystem::instance()->ContentLanguage, $contentFile); // Compile siteaccess $contentFile = str_replace('erLhcoreClassSystem::instance()->SiteAccess', '\'' . erLhcoreClassSystem::instance()->SiteAccess . '\'', $contentFile); // Atomoc template compilation to avoid concurent request compiling and writing to the same file $fileName = 'cache/compiledtemplates/' . md5(time() . rand(0, 1000) . microtime() . $file . $instance->WWWDirLang . $instance->Language . $port) . '.php'; file_put_contents($fileName, erLhcoreClassTemplate::strip_html($contentFile)); $file = 'cache/compiledtemplates/' . md5($file . $instance->WWWDirLang . $instance->Language . $port) . '.php'; rename($fileName, $file); $this->cacheTemplates[md5($fileTemplate . $instance->WWWDirLang . $instance->Language . $port)] = $file; $this->storeCache(); } return $this->fetchExecute($file); }
?> ,'nodejshost':<?php echo json_encode(erLhcoreClassModelChatConfig::fetch('sharing_nodejs_socket_host')->current_value != '' ? erLhcoreClassModelChatConfig::fetch('sharing_nodejs_socket_host')->current_value : $_SERVER['HTTP_HOST']); ?> ,'path':'<?php echo erLhcoreClassModelChatConfig::fetch('sharing_nodejs_path')->current_value; ?> ','secure':<?php if ((int) erLhcoreClassModelChatConfig::fetch('sharing_nodejs_secure')->current_value == 1) { ?> true<?php } else { ?> false<?php } ?> },'nodejsenabled':<?php echo (int) erLhcoreClassModelChatConfig::fetch('sharing_nodejs_enabled')->current_value; ?> ,'trans':{'operator_watching':<?php echo json_encode(htmlspecialchars_decode(erTranslationClassLhTranslation::getInstance()->getTranslation('chat/getstatus', 'Screen shared, click to finish'), ENT_QUOTES)); ?> },'url':'<?php echo erLhcoreClassModelChatConfig::fetch('explicit_http_mode')->current_value; ?> //<?php echo $_SERVER['HTTP_HOST']; echo erLhcoreClassDesign::baseurlsite(); ?> '+lh_inst.lang+'/cobrowse/storenodemap/(sharemode)/'+inst.sharemode+inst.getAppendCookieArguments()+'/?url='+encodeURIComponent(location.href.match(/^(.*\/)[^\/]*$/)[1])}); this.cobrowser.startMirroring();