<?php
require_once XOOPS_ROOT_PATH."/class/template.php";
require_once XOOPS_ROOT_PATH.'/class/xoopsblock.php';
/*
* XoopsView Class
*
*
*/
class XoopsView
{
var $_template;
var $_template_name;
function XoopsView($template_name ="system_dummy.html")
{
$this->_template =& new XoopsTpl();
$this->_template_name = $template_name;
$this->_template->assign("xoops_langcode", _LANGCODE);
$this->_template->assign("xoops_charset", _CHARSET);
}
function getTemplateName() { return $this->_template_name; }
function setTemplateName($template_name) { $this->_template_name = $template_name; }
function redirectHeader($redirect_to, $time, $message)
{
redirect_header($redirect_to, $time, $message);
}
function assign($name, $value) { $this->_template->assign($name, $value); }
function append($name, $value) { $this->_template->append($name, $value); }
function _setDefaultParams()
{
global $xoopsConfig;
$this->_template->assign("xoops_imageurl", XOOPS_THEME_URL.'/'.$xoopsConfig['theme_set'].'/');
$this->_template->assign("xoops_themecss", xoops_getcss($xoopsConfig['theme_set']));
$this->_template->assign("xoops_requesturi", htmlspecialchars($GLOBALS['xoopsRequestUri'], ENT_QUOTES));
$this->_template->assign("xoops_sitename", htmlspecialchars($xoopsConfig['sitename'], ENT_QUOTES));
$this->_template->assign("xoops_slogan", htmlspecialchars($xoopsConfig['slogan'], ENT_QUOTES));
$this->_template->assign('xoops_js', '//--></script><script type="text/javascript" src="'.XOOPS_URL.'/include/xoops.js"></script><script type="text/javascript"><!--');
$this->_template->assign("xoops_banner", "no banner!");
}
function _setMetaParams()
{
$config_handler =& xoops_gethandler('config');
$xoopsConfigMetaFooter =& $config_handler->getConfigsByCat(XOOPS_CONF_METAFOOTER);
$myts =& MyTextSanitizer::getInstance();
$meta_table = array("robots", "keywords", "description", "rating", "author", "copyright");
foreach($meta_table as $meta_name){
$this->_template->assign("xoops_meta_".$meta_name, $myts->makeTboxData4Show($xoopsConfigMetaFooter["meta_".$meta_name]));
}
}
function _fetchBlocks()
{
global $xoopsUser, $xoopsModule, $xoopsUserIsAdmin;
$xoopsblock = new XoopsBlock();
$blocks = array();
define(XOOPS_ANONYMOUS_USER, 0);
$this->_template->assign("xoops_isuser", is_object($xoopsUser) ? true : false);
$this->_template->assign("xoops_userid", is_object($xoopsUser) ? $xoopsUser->getVar("uid") : XOOPS_ANONYMOUS_USER);
$this->_template->assign("xoops_uname", is_object($xoopsUser) ? $xoopsUser->getVar('uname') : "");
$this->_template->assign("xoops_isadmin", is_object($xoopsUser) ? $xoopsUserIsAdmin : false);
if(!empty($xoopsModule)){
$this->_template->assign("xoops_pagetitle", $xoopsModule->getVar('name'));
$this->_template->assign("xoops_modulename", $xoopsModule->getVar('name'));
$this->_template->assign("xoops_dirname", $xoopsModule->getVar('dirname'));
$mid = $xoopsModule->getVar('mid');
} else {
$this->_template->assign("xoops_pagetitle", htmlspecialchars($xoopsConfig['slogan'], ENT_QUOTES));
$this->_template->assign("xoops_modulename", "");
$this->_template->assign("xoops_dirname", "");
$mid = 0;
}
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
$blocks =& $xoopsblock->getAllByGroupModule($groups, $mid, true, XOOPS_BLOCK_VISIBLE);
$block_table = array(
XOOPS_SIDEBLOCK_LEFT => array("showblock" => "xoops_showlblock", "blockname" => "xoops_lblocks"),
XOOPS_CENTERBLOCK_LEFT => array("showblock" => "xoops_showcblock", "blockname" => "xoops_clblocks"),
XOOPS_CENTERBLOCK_RIGHT => array("showblock" => "xoops_showcblock", "blockname" => "xoops_crblocks"),
XOOPS_CENTERBLOCK_CENTER => array("showblock" => "xoops_showcblock", "blockname" => "xoops_ccblocks"),
XOOPS_SIDEBLOCK_RIGHT => array("showblock" => "xoops_showrblock", "blockname" => "xoops_rblocks"),
);
foreach(array_keys($block_table) as $key){
$this->_template->assign($block_table[$key]["showblock"], 0);
}
foreach(array_keys($blocks) as $key){
$block_content = "";
$block =& $blocks[$key];
$block_template = $block->getVar("template");
if($block_template == ""){
continue;
}
$block_result =& $block->buildBlock();
if($block_result == ""){
continue;
}
$this->_template->assign_by_ref("block", $block_result);
$block_content = $this->_template->fetch("db:". $block_template, "blk_".$block->getVar("bid"));
$this->_template->clear_assign("block");
$block_side = $block->getVar("side");
if(!array_key_exists($block_side, $block_table)){
continue;
}
$this->_template->assign($block_table[$block_side]["showblock"], 1);
$this->_template->append($block_table[$block_side]["blockname"], array('title' => $block->getVar('title'), 'content' => $block_content, 'weight' => $block->getVar('weight')));
}
}
function display()
{
global $xoopsConfig;
static $_displayed = false;
if($_displayed == true){
return;
}
$_displayed = true;
$templatename_db = "db:" . $this->_template_name;
$templatename_id = md5($templatename_db);
$this->_template->assign("xoops_contents", $this->_template->fetch($templatename_db, $templatename_id));
$this->_setDefaultParams();
$this->_setMetaParams();
$this->_fetchBlocks();
$template = $xoopsConfig["theme_set"];
$this->_template->display(XOOPS_ROOT_PATH."/themes/$template/theme.html");
}
}
?>