オープンソース・ソフトウェアの開発とダウンロード

xoopsview.phpの表示

カテゴリ(タグ)ツリー

ファイル情報

カテゴリ(タグ)
ルート
ファイル名
xoopsview.php
最終更新
2005-09-12 12:14
種類
Plain Text
作成者
might
概要
XoopsView本体です。classディレクトリ下に格納してください。
言語
日本語
翻訳する
<?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");
	}
}
?>