source: branches/camp/camp-2_5-E/data/class/SC_Display.php @ 19491

Revision 19491, 3.2 KB checked in by Yammy, 12 years ago (diff)

CSVダウンロードの暫定実装

Line 
1<?php
2class SC_Display{
3
4    var $response;
5
6    var $device;
7
8    var $autoSet;
9
10    /**
11     *
12     * @var SC_View
13     */
14    var $view;
15
16       
17    var $deviceSeted = false;
18   
19    // TODO php4を捨てたときに ここのコメントアウトを外してね。
20    /*
21    * const('MOBILE',1);
22    * const('SMARTPHONE',2);
23    * const('PC',4);
24    * const('ADMIN',8);
25    */
26    function SC_Display($setPrevURL=true,$autoGenerateHttpHeaders = true){
27        require_once(CLASS_EX_PATH."/SC_Response_Ex.php");
28        $this->response = new SC_Response_Ex();
29        $this->autoSet = $autoGenerateHttpHeaders;
30        if ($setPrevURL) {
31            $this->setPrevURL();
32        }
33    }
34   
35    function setPrevURL(){
36        $objCartSess = new SC_CartSession();
37        $objCartSess->setPrevURL($_SERVER['REQUEST_URI']);
38
39    }
40
41
42    // TODO このメソッドは、レスポンスを返すためのメソッドです。名前を絶対に変えましょう。
43    /**
44    *
45    * @param $page LC_Page
46    */
47    function hoge(LC_Page $page, $is_admin = false){
48        if(!$this->deviceSeted || !is_null($this->view)){
49            $device = ($is_admin) ? 8 : $this->detectDevice();
50            $this->setDevice($device);
51        }
52        $this->assignobj($page);
53        $this->response->setResposeBody($this->view->fetch($page->getTemplate()));
54    }
55   
56    function redirect($location){
57        $this->response->sendRedirect($location);
58    }
59   
60    function noAction(){   
61        return;
62    }
63   
64    function addHeader(String $name,String $value){
65        $this->response->addHeader($name, $value);
66    }
67
68    /**
69     * デバイス毎の出力方法を自動で変更する、ファサード
70     * Enter description here ...
71     */
72    function setDevice($device=4){
73       
74        switch ($device){
75            case 1:
76                $this->response->setContentType("text/html");
77                $this->setView(new SC_MobileView());
78                break;
79            case 2:
80                //                $this->view = new
81                break;
82            case 4:
83                $this->setView(new SC_SiteView());
84                break;
85            case 8:
86                $this->setView(new SC_AdminView());
87        }
88        $this->deviceSeted = true;
89    }
90   
91    function setView(SC_View $view){
92       
93        $this->view = $view;
94    }
95
96    /**
97     * 機種を判別する。
98     * SC_Display::MOBILE = ガラケー = 1
99     * SC_Display::SMARTPHONE = スマホ = 2
100     * SC_Display::PC = PC = 4
101     * ※PHP4の為にconstは使っていません。 1がガラケーで、2がスマホで4がPCです。
102     * @return
103     */
104    function detectDevice(){
105        $nu = new Net_UserAgent_Mobile();
106        $retDevice = 0;
107        if($nu->isMobile()){
108            $retDevice = 1;
109        }elseif ($nu->isSmartphone()){
110            $retDevice = 2;
111        }else{
112            $retDevice = 4;
113        }
114
115        if($this->autoSet){
116            $this->setDevice($retDevice);
117        }
118        return $retDevice;
119    }
120
121    function assign($val1,$val2){
122        $this->view->assign($val1, $val2);
123    }
124
125    function assignobj($obj){
126        $this->view->assignobj($obj);
127    }
128
129    function assignarray($array){
130        $this->view->assignarray($array);
131    }
132
133
134}
Note: See TracBrowser for help on using the repository browser.