private function _aParseVar($sStart, $sEnd, $sTemplateDir, &$aFilelist) { $arr = array(); while (!$this->bEnd()) { $block = $this->sGetBlockStr($sStart, $sEnd); if (strlen($block)) { if (0 == strncasecmp($block, 'include', 7)) { $objblock = new Ko_View_Str(substr($block, 7)); $filename = $objblock->_sGetFile($sTemplateDir); if (is_file($filename)) { $aFilelist[] = $filename; $str = file_get_contents($filename); $objfile = new Ko_View_Str($str); $arr = array_merge($arr, $objfile->_aParseVar($sStart, $sEnd, $sTemplateDir, $aFilelist)); } } else { $objblock = new Ko_View_Str($block); while (!$objblock->bEnd()) { $str = $objblock->sGetAutoStr(); if (strlen($str)) { $arr[] = $str; } } } } } return array_unique($arr); }
private function _aGetAutoArr($sFilePath) { $templateDir = $this->_sGetTemplateDir(); $sFullname = Ko_View_Str::SGetAbsoluteFile($sFilePath, $templateDir); if (!is_file($sFullname)) { return array(); } $stime = filemtime($sFullname); $sHashFile = $this->_oSmarty->getCompileDir() . '/' . KO_VIEW_AUTOTAG . '_' . md5($sFullname); $htime = is_file($sHashFile) ? filemtime($sHashFile) : 0; if ($htime >= $stime) { $arr = Ko_Tool_Enc::ADecode(file_get_contents($sHashFile)); if (false !== $arr) { $rebuild = false; foreach ($arr[0] as $file) { $itime = is_file($file) ? filemtime($file) : time(); if ($htime < $itime) { $rebuild = true; break; } } if (!$rebuild) { return $arr[1]; } } } $aFilelist = array(); $sContent = file_get_contents($sFullname); $str = new Ko_View_Str($sContent); $aArr = $str->aParseArr($this->_oSmarty->left_delimiter, $this->_oSmarty->right_delimiter, $templateDir, $aFilelist); file_put_contents($sHashFile, Ko_Tool_Enc::SEncode(array($aFilelist, $aArr))); return $aArr; }