/** * Creates temporary (variable) JavaScript file * * @param string $script * @param string $id * @param string $params * @param bool $adm * @return SPHeader */ public function &addJsVarFile($script, $id, $params, $adm = false) { $this->store(get_defined_vars(), __FUNCTION__); $checksum = md5(json_encode(get_defined_vars())); if (!isset($this->_checksums[__FUNCTION__][$checksum])) { $this->_checksums[__FUNCTION__][$checksum] = true; $varFile = SPLoader::translatePath("var.js.{$script}_{$id}", 'front', true, 'js'); if (!$varFile) { $file = SPLoader::JsFile($script, $adm, true, false); if ($file) { SPLoader::loadClass('base.fs.file'); $file = new SPFile($file); $fc =& $file->read(); foreach ($params as $k => $v) { $fc = str_replace("__{$k}__", $v, $fc); } $fc = str_replace('__CREATED__', date(SPFactory::config()->key('date.log_format', 'D M j G:i:s T Y')), $fc); $varFile = SPLoader::translatePath("var.js.{$script}_{$id}", 'front', false, 'js'); $file->saveAs($varFile); } else { Sobi::Error(__FUNCTION__, SPLang::e('CANNOT_LOAD_FILE_AT', $file), SPC::NOTICE, 0, __LINE__, __FILE__); } } if (Sobi::Cfg('cache.include_js_files', false) && !($adm || defined('SOBIPRO_ADM'))) { $this->_cache['js'][++$this->count] = $varFile; } else { $varFile = str_replace(SOBI_ROOT, SPFactory::config()->get('live_site'), $varFile); $varFile = str_replace('\\', '/', $varFile); $varFile = preg_replace('|(\\w)(//)(\\w)|', '$1/$3', $varFile); $varFile = "\n<script type=\"text/javascript\" src=\"{$varFile}\"></script>"; if (!in_array($varFile, $this->jsFiles)) { $this->jsFiles[++$this->count] = $varFile; } } } return $this; }