42 parent::__construct();
45 public function assign($tpl_var, $value =
null)
47 if (is_array($tpl_var)) {
48 $root =& XCube_Root::getSingleton();
49 $context = $root->mContext;
51 foreach ($tpl_var as $key => $val) {
53 if (isset($reserve[$key])) {
54 $context->setAttribute($reserve[$key], htmlspecialchars_decode($val));
56 $this->_tpl_vars[$key] = $val;
61 if (isset($this->_mContextReserve[$tpl_var])) {
62 $root =& XCube_Root::getSingleton();
63 $root->mContext->setAttribute($this->_mContextReserve[$tpl_var], htmlspecialchars_decode($value));
65 $this->_tpl_vars[$tpl_var] = $value;
70 public function assign_by_ref($tpl_var, &$value)
72 if (
'' !== $tpl_var) {
73 if (isset($this->_mContextReserve[$tpl_var])) {
74 $root =& XCube_Root::getSingleton();
75 $root->mContext->setAttribute($this->_mContextReserve[$tpl_var], htmlspecialchars_decode($value));
77 $this->_tpl_vars[$tpl_var] =& $value;
81 public function &get_template_vars($name =
null)
83 $root =& XCube_Root::getSingleton();
85 foreach ($this->_mContextReserve as $t_key => $t_value) {
86 if (isset($this->_mContextReserve[$t_value])) {
87 $this->_tpl_vars[$t_key] = htmlspecialchars($root->mContext->getAttribute($this->_mContextReserve[$t_value]), ENT_QUOTES);
90 $value =& parent::get_template_vars($name);
91 } elseif (isset($this->_mContextReserve[$name])) {
92 $value = htmlspecialchars($root->mContext->getAttribute($this->_mContextReserve[$name]), ENT_QUOTES);
94 $value =& parent::get_template_vars($name);
121 public $_mContentsData =
null;
131 public $_mIsActiveBanner =
false;
133 public $mBeginRender =
null;
140 public function __construct()
142 parent::__construct();
145 $this->mSetupXoopsTpl->register(
'Legacy_RenderSystem.SetupXoopsTpl');
148 $this->mBeginRender->register(
'Legacy_RenderSystem.BeginRender');
153 parent::prepare($controller);
155 $root =& $this->mController->mRoot;
156 $context =& $root->getContext();
157 $textFilter =& $root->getTextFilter();
160 if (isset($GLOBALS[
'xoopsTpl'])) {
161 $this->mXoopsTpl =& $GLOBALS[
'xoopsTpl'];
165 $mTpl =& $this->mXoopsTpl;
166 $mTpl->register_function(
'legacy_notifications_select',
'LegacyRender_smartyfunction_notifications_select');
167 $this->mSetupXoopsTpl->call(
new XCube_Ref($mTpl));
170 $GLOBALS[
'xoopsTpl'] =& $mTpl;
172 $mTpl->xoops_setCaching(0);
175 if ($controller->mDebugger && $controller->mDebugger->isDebugRenderSystem()) {
176 $mTpl->xoops_setDebugging(
true);
179 if (isset($GLOBALS[
'xoopsUserIsAdmin'])) {
180 $isadmin[
'xoops_isadmin']=$GLOBALS[
'xoopsUserIsAdmin'];
184 'xoops_requesturi' => htmlspecialchars($GLOBALS[
'xoopsRequestUri'], ENT_QUOTES),
188 'xoops_js' =>
'</script><script type="text/javascript" src="'.XOOPS_URL.
'/common/js/x-utils.js"></script><script type="text/javascript">',
190 'xutils_js' =>
'</script><script type="text/javascript" src="'.XOOPS_URL.
'/common/js/x-utils.js"></script><script type="text/javascript">'
194 if (($xoopsRedirect = xoops_getrequest(
'xoops_redirect')) &&
'/' === $xoopsRedirect[0]) {
195 $mTpl->assign(
'xoops_redirect', htmlspecialchars($xoopsRedirect, ENT_QUOTES));
198 $mTpl->assign(
'xoops_sitename', $textFilter->toShow($context->getAttribute(
'legacy_sitename')));
199 $mTpl->assign(
'xoops_pagetitle', $textFilter->toShow($context->getAttribute(
'legacy_pagetitle')));
200 $mTpl->assign(
'xoops_slogan', $textFilter->toShow($context->getAttribute(
'legacy_slogan')));
205 $moduleHandler = xoops_gethandler(
'module');
206 $legacyRender =& $moduleHandler->getByDirname(
'legacyRender');
208 if (is_object($legacyRender)) {
209 $configHandler = xoops_gethandler(
'config');
210 $configs =& $configHandler->getConfigsByCat(0, $legacyRender->get(
'mid'));
216 $this->_mIsActiveBanner = $configs[
'banners'];
217 if (LEGACY_RENDERSYSTEM_BANNERSETUP_BEFORE ==
true) {
218 if (1 == $configs[
'banners']) {
219 $mTpl->assign(
'xoops_banner', xoops_getbanner());
220 $mTpl->assign(
'banner', xoops_getbanner());
222 $mTpl->assign(
'xoops_banner',
' ');
223 $mTpl->assign(
'banner',
' ');
227 $mTpl->assign(
'xoops_banner',
' ');
228 $mTpl->assign(
'banner',
' ');
235 if (is_object($context->mXoopsUser)) {
237 'xoops_isuser' =>
true,
238 'xoops_userid' => $context->mXoopsUser->getVar(
'uid',
'n'),
239 'xoops_uname' => $context->mXoopsUser->getVar(
'uname')
243 'xoops_isuser' => false
250 public function setAttribute($key, $value)
252 $this->mRenderTarget->setAttribute($key, $value);
255 public function getAttribute($key)
257 $this->mRenderTarget->getAttribute($key);
266 $root =& $this->mController->mRoot;
267 $context =& $root->getContext();
268 $textFilter =& $root->getTextFilter();
270 $themeName = $context->getThemeName();
272 'xoops_theme' =>$themeName,
273 'xoops_imageurl' =>XOOPS_THEME_URL .
"/{$themeName}/",
274 'xoops_themecss' =>xoops_getcss($themeName),
275 'xoops_sitename' =>$textFilter->toShow($context->getAttribute(
'legacy_sitename')),
276 'xoops_pagetitle' =>$textFilter->toShow($context->getAttribute(
'legacy_pagetitle')),
277 'xoops_slogan' =>$textFilter->toShow($context->getAttribute(
'legacy_slogan')),
278 'xoops_dirname' =>
''
284 if (
null !== $context->mModule) {
285 $xoopsModule =& $context->mXoopsModule;
286 $vars[
'xoops_modulename'] = $xoopsModule->getVar(
'name');
287 $vars[
'xoops_dirname'] = $xoopsModule->getVar(
'dirname');
288 $vars[
'dirname'] = $xoopsModule->getVar(
'dirname');
291 if (isset($GLOBALS[
'xoopsUserIsAdmin'])) {
292 $vars[
'xoops_isadmin']=$GLOBALS[
'xoopsUserIsAdmin'];
294 $this->mXoopsTpl->assign($vars);
297 public function renderBlock(&$target)
304 $mTpl = $this->mXoopsTpl;
305 $mTpl->xoops_setCaching(0);
307 $vars = $target->getAttributes();
308 $mTpl->assign($vars);
310 $this->mBeginRender->call(
new XCube_Ref($mTpl));
311 $result=&$mTpl->fetchBlock($target->getTemplateName(), $target->getAttribute(
'bid'));
312 $target->setResult($result);
317 $mTpl->clear_assign(array_keys($vars));
320 public function _render(&$target)
322 foreach ($target->getAttributes() as $key=>$value) {
323 $this->mXoopsTpl->assign($key, $value);
326 $this->mBeginRender->call(
new XCube_Ref($this->mXoopsTpl), $target->getAttribute(
'legacy_buffertype'));
327 $result=$this->mXoopsTpl->fetch(
'db:'.$target->getTemplateName());
328 $target->setResult($result);
330 foreach ($target->getAttributes() as $key => $value) {
331 $this->mXoopsTpl->clear_assign($key);
340 switch ($target->getAttribute(
'legacy_buffertype')) {
341 case XCUBE_RENDER_TARGET_TYPE_BLOCK:
342 $this->renderBlock($target);
345 case XCUBE_RENDER_TARGET_TYPE_MAIN:
346 $this->renderMain($target);
349 case XCUBE_RENDER_TARGET_TYPE_THEME:
353 case XCUBE_RENDER_TARGET_TYPE_BUFFER:
359 public function renderMain(&$target)
362 $xoopsCachedTemplateId =
null;
365 $cachedTemplateId = $GLOBLAS[
'xoopsCachedTemplateId'] ??
null;
367 foreach ($target->getAttributes() as $key=>$value) {
368 $this->mXoopsTpl->assign($key, $value);
371 if ($target->getTemplateName()) {
372 if (
null !== $cachedTemplateId) {
373 $contents=$this->mXoopsTpl->fetch(
'db:'.$target->getTemplateName(), $xoopsCachedTemplateId);
375 $contents=$this->mXoopsTpl->fetch(
'db:'.$target->getTemplateName());
377 }
else if (
null !== $cachedTemplateId) {
378 $this->mXoopsTpl->assign(
'dummy_content', $target->getAttribute(
'stdout_buffer'));
379 $contents=$this->mXoopsTpl->fetch($GLOBALS[
'xoopsCachedTemplate'], $xoopsCachedTemplateId);
381 $contents=$target->getAttribute(
'stdout_buffer');
384 $target->setResult($contents);
392 $mRoot = $this->mController->mRoot;
393 $mContext = $mRoot->mContext;
394 XCube_DelegateUtils::call(
'Site.JQuery.AddFunction',
new XCube_Ref($mContext->mAttributes[
'headerScript']));
395 $headerScript = $mContext->getAttribute(
'headerScript');
396 $mTpl = $this->mXoopsTpl;
397 $moduleHeader = $mTpl->get_template_vars(
'xoops_module_header');
398 $moduleHeader = $headerScript->createLibraryTag() . $moduleHeader . $headerScript->createOnloadFunctionTag();
403 $vars = $target->getAttributes();
404 $vars[
'xoops_module_header'] = $moduleHeader;
405 $vars[
'module_header'] = $moduleHeader;
409 $moduleHandler = xoops_gethandler(
'module');
410 $legacyRender =& $moduleHandler->getByDirname(
'legacyRender');
411 $configHandler = xoops_gethandler(
'config');
412 $configs =& $configHandler->getConfigsByCat(0, $legacyRender->get(
'mid'));
414 $textFilter =& $mRoot->getTextFilter();
415 $headerScript = $mContext->getAttribute(
'headerScript');
416 $vars[
'xoops_meta_keywords'] = $textFilter->toShow($headerScript->getMeta(
'keywords') ?: $configs[
'meta_keywords']);
417 $vars[
'xoops_meta_description'] = $textFilter->toShow($headerScript->getMeta(
'description') ?: $configs[
'meta_description']);
418 $vars[
'xoops_meta_robots'] = $textFilter->toShow($headerScript->getMeta(
'robots') ?: $configs[
'meta_robots']);
419 $vars[
'xoops_meta_rating'] = $textFilter->toShow($headerScript->getMeta(
'rating') ?: $configs[
'meta_rating']);
420 $vars[
'xoops_meta_author'] = $textFilter->toShow($headerScript->getMeta(
'author') ?: $configs[
'meta_author']);
421 $vars[
'xoops_meta_copyright'] = $textFilter->toShow($headerScript->getMeta(
'copyright') ?: $configs[
'meta_copyright']);
423 $vars[
'xoops_meta_bing'] = $textFilter->toShow($headerScript->getMeta(
'msvalidate.01') ?: $configs[
'meta_bing']);
424 $vars[
'xoops_meta_google'] = $textFilter->toShow($headerScript->getMeta(
'google-site-verification') ?: $configs[
'meta_google']);
425 $vars[
'xoops_meta_yandex'] = $textFilter->toShow($headerScript->getMeta(
'yandex-verification') ?: $configs[
'meta_yandex']);
427 $vars[
'xoops_meta_fb_app'] = $textFilter->toShow($headerScript->getMeta(
'fb:app_id') ?: $configs[
'meta_fb_app']);
428 $vars[
'xoops_meta_twitter_site'] = $textFilter->toShow($headerScript->getMeta(
'twitter:site') ?: $configs[
'meta_twitter_site']);
430 $vars[
'logotype'] = $configs[
'logotype'];
431 $vars[
'favicon'] = $configs[
'favicon'];
433 $vars[
'xoops_footer'] = $configs[
'footer'];
440 if (LEGACY_RENDERSYSTEM_BANNERSETUP_BEFORE ==
false) {
441 $vars[
'xoops_banner'] = (1 == $this->_mIsActiveBanner)?xoops_getbanner():
' ';
442 $vars[
'banner'] = (1 == $this->_mIsActiveBanner)?xoops_getbanner():
' ';
445 $mTpl->assign($vars);
456 XOOPS_SIDEBLOCK_LEFT=> [
'showflag' =>
'xoops_showlblock',
'block' =>
'xoops_lblocks'],
457 XOOPS_CENTERBLOCK_LEFT=> [
'showflag' =>
'xoops_showcblock',
'block' =>
'xoops_clblocks'],
458 XOOPS_CENTERBLOCK_RIGHT=> [
'showflag' =>
'xoops_showcblock',
'block' =>
'xoops_crblocks'],
459 XOOPS_CENTERBLOCK_CENTER=> [
'showflag' =>
'xoops_showcblock',
'block' =>
'xoops_ccblocks'],
460 XOOPS_SIDEBLOCK_RIGHT=> [
'showflag' =>
'xoops_showrblock',
'block' =>
'xoops_rblocks']
463 foreach ($assignNameMap as $key=>$val) {
465 if (isset($mContext->mAttributes[
'legacy_BlockContents'][$key])) {
466 foreach ($mContext->mAttributes[
'legacy_BlockContents'][$key] as $result) {
467 $mTpl->append($val[
'block'], $result);
472 $this->mBeginRender->call(
new XCube_Ref($mTpl));
478 if ($target->getAttribute(
'isFileTheme')) {
479 $result=$mTpl->fetch($target->getTemplateName().
'/theme.html');
481 $result=$mTpl->fetch(
'db:'.$target->getTemplateName());
484 $result .= $mTpl->fetchDebugConsole();
486 $target->setResult($result);
496 case 'xoops_showrblock' :
497 if (isset($GLOBALS[
'show_rblock']) && empty($GLOBALS[
'show_rblock'])) {
500 return (!empty($this->mController->mRoot->mContext->mAttributes[
'legacy_BlockShowFlags'][XOOPS_SIDEBLOCK_RIGHT])) ? 1 : 0;
502 case 'xoops_showlblock' :
503 if (isset($GLOBALS[
'show_lblock']) && empty($GLOBALS[
'show_lblock'])) {
506 return (!empty($this->mController->mRoot->mContext->mAttributes[
'legacy_BlockShowFlags'][XOOPS_SIDEBLOCK_LEFT])) ? 1 : 0;
508 case 'xoops_showcblock' :
509 if (isset($GLOBALS[
'show_cblock']) && empty($GLOBALS[
'show_cblock'])) {
512 return (!empty($this->mController->mRoot->mContext->mAttributes[
'legacy_BlockShowFlags'][XOOPS_CENTERBLOCK_LEFT])||
513 !empty($this->mController->mRoot->mContext->mAttributes[
'legacy_BlockShowFlags'][XOOPS_CENTERBLOCK_RIGHT])||
514 !empty($this->mController->mRoot->mContext->mAttributes[
'legacy_BlockShowFlags'][XOOPS_CENTERBLOCK_CENTER])) ? 1 : 0;
530 header(
'Content-Type:text/html; charset='._CHARSET);
531 header(
'Expires: Mon, 26 Jul 1997 05:00:00 GMT');
532 header(
'Last-Modified: '.gmdate(
'D, d M Y H:i:s').
' GMT');
533 header(
'Cache-Control: no-store, no-cache, must-revalidate');
534 header(
'Cache-Control: post-check=0, pre-check=0',
false);
535 header(
'Pragma: no-cache');
547 if (1 === $xoopsConfig[
'gzip_compression']) {
548 ob_start(
'ob_gzhandler');
565 global $xoopsConfig, $xoopsTheme, $xoopsConfigMetaFooter;
567 echo
'<!DOCTYPE html>';
569 echo
'<html lang="<{$xoops_langcode}>">
571 <meta http-equiv="content-type" content="text/html; charset='._CHARSET.
'">
572 <meta http-equiv="content-language" content="'._LANGCODE.
'">
573 <meta name="robots" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_robots']).
'">
574 <meta name="keywords" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_keywords']).
'">
575 <meta name="description" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_desc']).
'">
576 <meta name="rating" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_rating']).
'">
577 <meta name="author" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_author']).
'">
578 <meta name="copyright" content="'.htmlspecialchars($xoopsConfigMetaFooter[
'meta_copyright']).
'">
579 <meta name="generator" content="XOOPSCube">
580 <title>'.htmlspecialchars($xoopsConfig[
'sitename']).
'</title>
581 <script type="text/javascript" src="'.XOOPS_URL.
'/common/js/x-utils.js"></script>
583 $themecss = getcss($xoopsConfig[
'theme_set']);
584 echo
'<link rel="stylesheet" type="text/css" media="all" href="'.XOOPS_URL.
'/theme/xcl_default/style.css">';
586 echo
'<link rel="stylesheet" type="text/css" media="all" href="'.$themecss.
'">';
589 echo
'</head><body>';
598 echo
'</body></html>';
610 public function &
createRenderTarget($type = LEGACY_RENDER_TARGET_TYPE_MAIN, $option =
null)
612 $renderTarget =
null;
614 case XCUBE_RENDER_TARGET_TYPE_MAIN:
618 case LEGACY_RENDER_TARGET_TYPE_BLOCK:
620 $renderTarget->setAttribute(
'legacy_buffertype', LEGACY_RENDER_TARGET_TYPE_BLOCK);
628 return $renderTarget;
639 return $screenTarget;