<?php   if(!defined('DEDEINC')) exit("Request Error!");

/**

 * 织梦控制器基类

 *

 * @version        $Id: control.class.php 1 10:33 2010年7月6日Z tianya $

 * @package        DedeCMS.Libraries

 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.

 * @license        http://help.dedecms.com/usersguide/license.html

 * @link           http://www.dedecms.com

 */

require_once(DEDEINC."/dedetemplate.class.php");



class Control

{

    var $tpl;

    var $dsql;

    var $style='default';

    var $_helpers = array();

    

    var $apptpl = '../templates/';

    

    function __construct()

    {

        $this->Control();

    }

    

    // 析构函数

    function Control()

    {

        global $dsql;

        $this->tpl = isset($this->tpl)? $this->tpl : new DedeTemplate();

        $sqltype = "DedeSql";

        if ($GLOBALS['cfg_mysql_type'] == 'mysqli' && function_exists("mysqli_init")) $sqltype = "DedeSql";

        else $sqltype = "DedeSqli";

        $this->dsql = isset($dsql)? $dsql : new $sqltype(FALSE);

    }

    

    //设置模板

    //如果想要使用模板中指定的pagesize，必须在调用模板后才调用 SetSource($sql)

    function SetTemplate($tplfile)

    {

        $tplfile = DEDEAPPTPL.'/'.$this->style.'/'.$tplfile;

        $this->tpl->LoadTemplate($tplfile);

    }

    function SetTemplet($tplfile)

    {

        $tplfile = DEDEAPPTPL.'/'.$this->style.'/'.$tplfile;

        $this->tpl->LoadTemplate($tplfile);

    }

    

    //设置/获取文档相关的各种变量

    function SetVar($k, $v)

    {

        $this->tpl->Assign($k, $v);

    }



    function GetVar($k)

    {

        global $_vars;

        return isset($_vars[$k]) ? $_vars[$k] : '';

    }

    

    function Model($name='')

    {

        $name = preg_replace("#[^\w]#", "", $name);

        $modelfile = DEDEMODEL.'/'.$name.'.php';

        if (file_exists($modelfile))

        {

            require_once $modelfile;

        }

        if (!empty($name) && class_exists($name))

        {

            return new $name;

        } 

        return false;

    }

    

    function Libraries($name='',$data = '')

    {

	if(defined('APPNAME')) 

	{

		$classfile = 'MY_'.$name.'.class.php';

		if ( file_exists ( '../'.APPNAME.'/libraries/'.$classfile ) )

		{

			require '../'.APPNAME.'/libraries/'.$classfile;

			return new $name($data);

		}else{

			if (!empty($name) && class_exists($name))

		        {

		            return new $name($data);

		        }

		}

		return FALSE;

	}else{

		if (!empty($name) && class_exists($name))

	        {

	            return new $name($data);

	        }

	        return FALSE;

	 }

    }  

    

    //载入helper

    function helper($helper = "",$path)

    {   

        $help_path = $path.'/data/helper/'.$helper.".helper.php";

        if (file_exists($help_path))

        { 

            include_once($help_path);

        }else{

            exit('Unable to load the requested file: '.$helper.".helper.php");          

        }  

    }

    

    //显示数据

    function Display()

    {

        $this->tpl->SetObject($this);

        $this->tpl->Display();

    }

    

    //保存为HTML

    function SaveTo($filename)

    {

        $this->tpl->SetObject($this);

        $this->tpl->SaveTo($filename);

    }

    

    // 释放资源

    function __destruct() {

        unset($this->tpl);

        $this->dsql->Close(TRUE);

    }

}