0)); # $PageTemplateFmt is deprecated if (isset($PageTemplateFmt)) LoadPageTemplate($pagename,$PageTemplateFmt); else { $x = array_merge((array)@$ActionSkin[$action], (array)$Skin); SetSkin($pagename, $x); } SDV($PageCSSListFmt,array( 'pub/css/local.css' => '$PubDirUrl/css/local.css', 'pub/css/$Group.css' => '$PubDirUrl/css/$Group.css', 'pub/css/$FullName.css' => '$PubDirUrl/css/$FullName.css')); foreach((array)$PageCSSListFmt as $k=>$v) if (file_exists(FmtPageName($k,$pagename))) $HTMLHeaderFmt[] = "\n"; # SetSkin changes the current skin to the first available skin from # the $skin array. function SetSkin($pagename, $skin) { global $Skin, $SkinDir, $SkinDirUrl, $IsTemplateLoaded, $PubDirUrl, $FarmPubDirUrl, $FarmD; unset($Skin); foreach((array)$skin as $s) { $sd = FmtPageName("pub/skins/$s", $pagename); if (is_dir($sd)) { $Skin=$s; $SkinDirUrl="$PubDirUrl/skins/$Skin"; break; } $sd = FmtPageName("$FarmD/pub/skins/$s", $pagename); if (is_dir($sd)) { $Skin=$s; $SkinDirUrl="$FarmPubDirUrl/skins/$Skin"; break; } } if (!is_dir($sd)) Abort("?unable to find skin from list ".implode(' ',(array)$skin)); $SkinDir = $sd; $IsTemplateLoaded = 0; if (file_exists("$SkinDir/$Skin.php")) include_once("$SkinDir/$Skin.php"); else if (file_exists("$SkinDir/skin.php")) include_once("$SkinDir/skin.php"); if ($IsTemplateLoaded) return; if (file_exists("$SkinDir/$Skin.tmpl")) LoadPageTemplate($pagename, "$SkinDir/$Skin.tmpl"); else if (file_exists("$SkinDir/skin.tmpl")) LoadPageTemplate($pagename, "$SkinDir/skin.tmpl"); else if (($dh = opendir($SkinDir))) { while (($fname = readdir($dh)) !== false) { if (substr($fname, -5) != '.tmpl') continue; if ($IsTemplateLoaded) Abort("?unable to find unique template in $SkinDir"); LoadPageTemplate($pagename, "$SkinDir/$fname"); } closedir($dh); } if (!$IsTemplateLoaded) Abort("Unable to load $Skin template"); } # LoadPageTemplate loads a template into $TmplFmt function LoadPageTemplate($pagename,$tfilefmt) { global $PageStartFmt, $PageEndFmt, $HTMLHeaderFmt, $IsTemplateLoaded, $TmplFmt, $TmplDisplay, $PageTextStartFmt, $PageTextEndFmt; # $BasicLayoutVars is deprecated global $BasicLayoutVars; if (isset($BasicLayoutVars)) foreach($BasicLayoutVars as $sw) $TmplDisplay[$sw] = 1; SDV($PageTextStartFmt, "\n
\n"); SDV($PageTextEndFmt, "
\n"); $sddef = array('PageEditFmt' => 0); $k = implode('',file(FmtPageName($tfilefmt,$pagename))); $sect = preg_split('#[[<]!--(/?(?:Page[A-Za-z]+Fmt|PageText|HeaderText)\\s?.*?)--[]>]#', $k,0,PREG_SPLIT_DELIM_CAPTURE); $TmplFmt['Start'] = array_merge(array('headers:'), preg_split('/[[<]!--((?:wiki|file|function|markup):.*?)--[]>]/s', array_shift($sect),0,PREG_SPLIT_DELIM_CAPTURE)); $TmplFmt['End'] = array($PageTextEndFmt); $ps = 'Start'; while (count($sect)>0) { $k = array_shift($sect); $v = preg_split('/[[<]!--((?:wiki|file|function|markup):.*?)--[]>]/', array_shift($sect),0,PREG_SPLIT_DELIM_CAPTURE); $TmplFmt[$ps][] = ""; if ($k{0} == '/') { $TmplFmt[$ps][] = (count($v) > 1) ? $v : $v[0]; continue; } @list($var, $sd) = explode(' ', $k, 2); $GLOBALS[$var] = (count($v) > 1) ? $v : $v[0]; if ($sd > '') $sddef[$var] = $sd; if ($var == 'PageText') { $ps = 'End'; } if ($var == 'HeaderText') { $TmplFmt[$ps][] = &$HTMLHeaderFmt; } $TmplFmt[$ps][$var] =& $GLOBALS[$var]; } array_push($TmplFmt['Start'], $PageTextStartFmt); $PageStartFmt = 'function:PrintSkin Start'; $PageEndFmt = 'function:PrintSkin End'; $IsTemplateLoaded = 1; SDVA($TmplDisplay, $sddef); } # This function is called to print a portion of the skin template # according to the settings in $TmplDisplay. function PrintSkin($pagename, $arg) { global $TmplFmt, $TmplDisplay; foreach ($TmplFmt[$arg] as $k => $v) if (!isset($TmplDisplay[$k]) || $TmplDisplay[$k]) PrintFmt($pagename, $v); }