source: branches/beta/data/class/SC_View.php @ 16239

Revision 16239, 9.7 KB checked in by adachi, 15 years ago (diff)

テンプレート機能にてsite_main.tplが反映されるように変更

Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8$SC_VIEW_PHP_DIR = realpath(dirname(__FILE__));
9require_once($SC_VIEW_PHP_DIR . "/../module/Smarty/libs/Smarty.class.php");
10require_once($SC_VIEW_PHP_DIR . "/../include/php_ini.inc");
11
12class SC_View {
13
14    /** Smarty¥¤¥ó¥¹¥¿¥ó¥¹ */
15    var $_smarty;
16    /** SC_SiteInfo¤Î¥¤¥ó¥¹¥¿¥ó¥¹ */
17    var $objSiteInfo;
18    /** ¥Ú¡¼¥¸½ÐÎÏ¥Ù¥ó¥Á¥Þ¡¼¥¯¤Î³«»Ï»þ´Ö */
19    var $time_start;
20    /** »ÈÍѤ·¤Æ¤¤¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸Ì¾ */
21    var $tplName;
22
23    /**
24     * ¥³¥ó¥¹¥È¥é¥¯¥¿
25     *
26     * @param boolean $assignSiteInfo ¥µ¥¤¥È¾ðÊó¤òassign¤¹¤ë¤«¤É¤¦¤«
27     */
28    function SC_View($assignSiteInfo = true) {
29        // ¥Ú¡¼¥¸½ÐÎϤΥ٥ó¥Á¥Þ¡¼¥¯¥¹¥¿¡¼¥È
30        $this->setStartTime();
31
32        // Smarty½é´ü²½
33        $this->initSmarty();
34
35        $this->tplName = $this->getTemplateName();
36        $this->assignDefaultVars();
37
38        // ¥µ¥¤¥È¾ðÊó¤òassign¤¹¤ë
39        if($assignSiteInfo) $this->assignSiteInfo();
40    }
41
42    /**
43     * Smarty¤Î½é´ü²½.
44     * ½¤¾þ»ì¤ä¥Æ¥ó¥×¥ì¡¼¥È´Ø¿ô¤ÎÄêµÁ¤ò¹Ô¤¦.
45     *
46     * @param void
47     * @return void
48     */
49    function initSmarty() {
50        $SC_VIEW_PHP_DIR = realpath(dirname(__FILE__));
51
52        $this->_smarty = new Smarty;
53        $this->_smarty->left_delimiter = '<!--{';
54        $this->_smarty->right_delimiter = '}-->';
55        $this->_smarty->register_modifier("sfDispDBDate","sfDispDBDate");
56        $this->_smarty->register_modifier("sfConvSendDateToDisp","sfConvSendDateToDisp");
57        $this->_smarty->register_modifier("sfConvSendWdayToDisp","sfConvSendWdayToDisp");
58        $this->_smarty->register_modifier("sfGetVal", "sfGetVal");
59        $this->_smarty->register_function("sfSetErrorStyle","sfSetErrorStyle");
60        $this->_smarty->register_function("sfGetErrorColor","sfGetErrorColor");
61        $this->_smarty->register_function("sfTrim", "sfTrim");
62        $this->_smarty->register_function("sfPreTax", "sfPreTax");
63        $this->_smarty->register_function("sfPrePoint", "sfPrePoint");
64        $this->_smarty->register_function("sfGetChecked", "sfGetChecked");
65        $this->_smarty->register_function("sfTrimURL", "sfTrimURL");
66        $this->_smarty->register_function("sfMultiply", "sfMultiply");
67        $this->_smarty->register_function("sfPutBR", "sfPutBR");
68        $this->_smarty->register_function("sfRmDupSlash", "sfRmDupSlash");
69        $this->_smarty->register_function("sfCutString", "sfCutString");
70        $this->_smarty->plugins_dir = array("plugins", $SC_VIEW_PHP_DIR . "/../smarty_extends");
71        $this->_smarty->register_function("sf_mb_convert_encoding","sf_mb_convert_encoding");
72        $this->_smarty->register_function("sf_mktime","sf_mktime");
73        $this->_smarty->register_function("sf_date","sf_date");
74        $this->_smarty->register_function("str_replace","str_replace");
75        $this->_smarty->register_function("sfPrintEbisTag","sfPrintEbisTag");
76        $this->_smarty->register_function("sfPrintAffTag","sfPrintAffTag");
77        $this->_smarty->register_function("sfIsHTTPS","sfIsHTTPS");
78        $this->_smarty->default_modifiers = array('script_escape');
79        $this->_smarty->force_compile = true;
80    }
81
82    /**
83     * ¥Ú¡¼¥¸½ÐÎÏ¥Ù¥ó¥Á¥Þ¡¼¥¯¤Î³«»Ï»þ´Ö¤ò¥»¥Ã¥È¤¹¤ë.
84     *
85     * @param void
86     * @return void
87     */
88    function setStartTime() {
89        // TODO PEAR::BenchMark»È¤¦¡©
90        $this->time_start = time();
91    }
92
93    /**
94     * ¥Ç¥Õ¥©¥ë¥È¤Î¥Æ¥ó¥×¥ì¡¼¥ÈÊÑ¿ô¤òassign¤¹¤ë.
95     */
96    function assignDefaultVars() {
97        $arrDefaultParams = array(
98            'URL_DIR' => URL_DIR,
99            // FIXME tplName¤¬null¤Î¾ì¹ç¤Î½èÍý
100            'TPL_PKG_URL' => URL_DIR . USER_DIR . TPL_PKG_DIR . $this->tplName . '/',
101            'tpl_site_main' => 'site_main.tpl'
102        );
103        $this->assignArray($arrDefaultParams);
104    }
105
106    /**
107     * ¥µ¥¤¥È¾ðÊó¤òassign¤¹¤ë.
108     *
109     * @param void
110     * @return void
111     */
112    function assignSiteInfo() {
113        if (!defined('LOAD_SITEINFO')) {
114            $this->objSiteInfo = new SC_SiteInfo();
115            $arrInfo['arrSiteInfo'] = $this->objSiteInfo->data;
116
117            // ÅÔÆ»Éܸ©Ì¾¤òÊÑ´¹
118            global $arrPref;
119            $arrInfo['arrSiteInfo']['pref'] = $arrPref[$arrInfo['arrSiteInfo']['pref']];
120
121            // ¥µ¥¤¥È¾ðÊó¤ò³ä¤êÅö¤Æ¤ë
122            $this->assignArray($arrInfo);
123
124            define('LOAD_SITEINFO', 1);
125        }
126    }
127
128    /**
129     * ¥Æ¥ó¥×¥ì¡¼¥È¤ËÃͤò³ä¤êÅö¤Æ¤ë
130     *
131     * @param string $key
132     * @param mixed $value
133     * @return void
134     */
135    function assign($key, $value) {
136        $this->_smarty->assign($key, $value);
137    }
138
139    /**
140     * ¥Æ¥ó¥×¥ì¡¼¥È¤Î½èÍý·ë²Ì¤ò¼èÆÀ
141     *
142     * @param string $template tpl¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹
143     * @return string ½ÐÎÏ·ë²Ì
144     */
145    function fetch($template) {
146        return $this->_smarty->fetch($template);
147    }
148
149    /**
150     * ¥Æ¥ó¥×¥ì¡¼¥È¤Î½èÍý·ë²Ì¤òɽ¼¨.
151     *
152     * @param string $template tpl¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹
153     * @return void
154     */
155    function display($template, $display = false) {
156        // ¥Æ¥ó¥×¥ì¡¼¥ÈÀÚ¤êÂؤ¨½èÍý
157        $this->initDisplay($template);
158
159        // ¥°¥í¡¼¥Ð¥ë¥¨¥é¡¼¤Îɽ¼¨
160        $this->displayGlobalError($display);
161
162        // ²èÌÌɽ¼¨
163        $this->_smarty->display($template);
164
165        // ¥Ù¥ó¥Á¥Þ¡¼¥¯·ë²Ì¤Îɽ¼¨
166        $this->displayBenchMark();
167    }
168
169    /**
170     *  ¥Æ¥ó¥×¥ì¡¼¥ÈÀÚ¤êÂؤ¨½èÍý¤ò¹Ô¤¦.
171     *  ¼ÂÁõ¤Ï»Ò¥¯¥é¥¹¤Ç¹Ô¤¦.
172     */
173    function initDisplay($template) {}
174
175    /**
176     * ¥°¥í¡¼¥Ð¥ë¥¨¥é¡¼¤òɽ¼¨¤¹¤ë.
177     *
178     * @param boolean $display
179     * @return void
180     */
181    function displayGlobalError($display = false) {
182        if (!$display) {
183            global $GLOBAL_ERR;
184            if(!defined('OUTPUT_ERR')) {
185                print($GLOBAL_ERR);
186                define('OUTPUT_ERR','ON');
187            }
188        }
189    }
190
191    /**
192     * ¥Ú¡¼¥¸½ÐÎÏ¥Ù¥ó¥Á¥Þ¡¼¥¯¤Î·ë²Ì¤òɽ¼¨¤¹¤ë.
193     * ADMIN_MODE¤¬true¤Î¤È¤­¤Î¤ßÍ­¸ú.
194     *
195     * @param void
196     * @return void
197     */
198    function displayBenchMark() {
199        if (ADMIN_MODE) {
200            $time_end = time();
201            $time = $time_end - $this->time_start;
202            print("½èÍý»þ´Ö:" . $time . "ÉÃ");
203        }
204    }
205
206    /**
207     * ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥á¥ó¥ÐÊÑ¿ô¤òassign¤¹¤ë.
208     *
209     * @param object $obj LC_Page¤Î¥¤¥ó¥¹¥¿¥ó¥¹
210     * @return void
211     */
212    function assignObj($obj) {
213        $this->assignArray(get_object_vars($obj));
214    }
215
216    /**
217     * Ï¢ÁÛÇÛÎó¤òassign¤¹¤ë.
218     *
219     * @param array $arrAssignVars assign¤¹¤ëÏ¢ÁÛÇÛÎó
220     * @return void
221     */
222    function assignArray($arrAssignVars) {
223        foreach ($arrAssignVars as $key => $val) {
224            $this->assign($key, $val);
225        }
226    }
227
228    /**
229     * »ÈÍѤ·¤Æ¤¤¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò¼èÆÀ¤¹¤ë
230     */
231    function getTemplateName() {
232        $objQuery = new SC_Query();
233        $arrRet = $objQuery->select('top_tpl', 'dtb_baseinfo');
234
235        if (isset($arrRet[0]['top_tpl'])) {
236            return $arrRet[0]['top_tpl'];
237        }
238        return null;
239    }
240    /**
241     * Smarty¤Î¥Ç¥Ð¥Ã¥°½ÐÎϤòÍ­¸ú¤Ë¤¹¤ë.
242     *
243     * @param void
244     * @return void
245     */
246    function debug($var = true){
247        $this->_smarty->debugging = $var;
248    }
249}
250
251class SC_AdminView extends SC_View{
252    function SC_AdminView() {
253        parent::SC_View(false);
254        $this->_smarty->template_dir = TEMPLATE_ADMIN_DIR;
255        $this->_smarty->compile_dir = COMPILE_ADMIN_DIR;
256    }
257
258}
259
260class SC_SiteView extends SC_View{
261    function SC_SiteView($cart = true) {
262        parent::SC_View();
263
264        $this->_smarty->template_dir = TEMPLATE_DIR;
265        $this->_smarty->compile_dir = COMPILE_DIR;
266
267        // PHP5¤Ç¤Ïsession¤ò¥¹¥¿¡¼¥È¤¹¤ëÁ°¤Ë¥Ø¥Ã¥À¡¼¾ðÊó¤òÁ÷¿®¤·¤Æ¤¤¤ë¤È·Ù¹ð¤¬½Ð¤ë¤¿¤á¡¢Àè¤Ë¥»¥Ã¥·¥ç¥ó¤ò¥¹¥¿¡¼¥È¤¹¤ë¤è¤¦¤ËÊѹ¹
268        sfDomainSessionStart();
269
270        if($cart){
271            $include_dir = realpath(dirname( __FILE__));
272            require_once($include_dir . "/SC_CartSession.php");
273            $objCartSess = new SC_CartSession();
274            $objCartSess->setPrevURL($_SERVER['REQUEST_URI']);
275        }
276    }
277
278    function initDisplay($template) {
279        // ¥Æ¥ó¥×¥ì¡¼¥È¤ò»ÈÍѤ·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ïreturn
280        if (empty($this->tplName)) return;
281
282        /**
283         * tpl_mainpage¤¬ÁêÂХѥ¹¤Ç¤¢¤ì¤Ð
284         * ¥æ¡¼¥¶¡¼¥Æ¥ó¥×¥ì¡¼¥È¤Ø¤ÎÀäÂХѥ¹¤ËÊѹ¹¤·
285         * ¤½¤Î¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¤Ð¤¢¤¤¤Ïtpl_meinpage¤òºÆÅÙassign¤·¾å½ñ¤­¤¹¤ë
286         */
287        $tpl_mainpage  = $this->_smarty->get_template_vars('tpl_mainpage');
288        $template_dir = TPL_PKG_PATH . $this->tplName . '/templates/';
289
290        $win = "^[a-zA-Z]{1}:";
291        $other = "^\/";
292        $pattern = "/($win)|($other)/";
293        if (!preg_match($pattern, $tpl_mainpage)) {
294            $tpl_pkg_mainpage = $template_dir . $tpl_mainpage;
295            if (file_exists($tpl_pkg_mainpage)) {
296                $this->assign('tpl_mainpage', $tpl_pkg_mainpage);
297            }
298        }
299        $tpl_site_main = $template_dir . 'site_main.tpl';
300        if (file_exists($tpl_site_main)) {
301            $this->assign('tpl_site_main', $tpl_site_main);
302        }
303    }
304}
305class SC_UserView extends SC_SiteView{
306    function SC_UserView($template_dir, $compile_dir = COMPILE_DIR) {
307        parent::SC_SiteView();
308        $this->_smarty->template_dir = $template_dir;
309        $this->_smarty->compile_dir = $compile_dir;
310    }
311
312    function display($template) {
313        $this->_smarty->display($template);
314    }
315}
316
317class SC_InstallView extends SC_View{
318    function SC_InstallView($template_dir, $compile_dir = COMPILE_DIR) {
319        parent::SC_View(false);
320        $this->_smarty->template_dir = $template_dir;
321        $this->_smarty->compile_dir = $compile_dir;
322    }
323    function getTemplateName() {}
324}
325
326class SC_MobileView extends SC_SiteView {
327    function SC_MobileView() {
328        parent::SC_SiteView();
329        $this->_smarty->template_dir = MOBILE_TEMPLATE_DIR;
330        $this->_smarty->compile_dir = MOBILE_COMPILE_DIR;
331    }
332}
333
334?>
Note: See TracBrowser for help on using the repository browser.