OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / m / chacha / include / container / m_chachaWidgetContainer.php
1 <?php
2 /**
3  * コンテナクラス
4  *
5  * PHP versions 5
6  *
7  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
8  *
9  * @package    マイクロブログ
10  * @author     株式会社 毎日メディアサービス
11  * @copyright  Copyright 2010 株式会社 毎日メディアサービス.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: m_chachaWidgetContainer.php 3356 2010-07-08 13:40:58Z fishbone $
14  * @link       http://www.m-media.co.jp
15  */
16 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/m_chachaBaseWidgetContainer.php');
17
18 class m_chachaWidgetContainer extends m_chachaBaseWidgetContainer
19 {
20         /**
21          * コンストラクタ
22          */
23         function __construct()
24         {
25                 // 親クラスを呼び出す
26                 parent::__construct();
27         }
28         /**
29          * ディスパッチ処理(メインコンテナのみ実行)
30          *
31      * HTTPリクエストの内容を見て処理をコンテナに振り分ける
32          *
33          * @param RequestManager $request               HTTPリクエスト処理クラス
34          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
35          * @return bool                                                 このクラスの_setTemplate(), _assign()へ処理を継続するかどうかを返す。
36          *                                      true=処理を継続、false=処理を終了
37          */
38         function _dispatch($request, &$param)
39         {
40                 $memberId = $request->trimValueOf(self::URL_PARAM_MEMBER_ID);   // 会員ID
41                         
42                 // 実行処理を決定
43                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
44                 if (empty($task)){
45                         // 会員IDを取得
46                         $memberId = $request->trimValueOf(self::URL_PARAM_MEMBER_ID);
47                         $messageId = $request->trimValueOf(self::URL_PARAM_MESSAGE_ID);         // メッセージID
48                         
49                         // 会員IDが設定されているときはマイページを表示
50                         if (empty($memberId)){
51                                 if (empty($messageId)){
52                                         $task = self::DEFAULT_TASK;
53                                 } else {
54                                         $task = self::TASK_THREAD;              // スレッド表示
55                                 }
56                         } else {
57                                 $task = self::TASK_MYPAGE;              // マイページ表示
58                         }
59                 }
60
61                 // アクセス権をチェック
62                 switch ($task){
63                         case self::TASK_THREAD:         // スレッド処理
64                         case self::TASK_READ:                   // スレッド一覧画面
65                         case self::TASK_PROFILE:                        // プロフィール入力画面
66                         case self::TASK_MYPAGE:                 // マイページ画面
67                                 // 携帯以外からのアクセスの場合はエラー
68                                 if (empty($this->_mobileId)) return true;
69                                 break;
70                 }
71
72                 // ユーザ登録されていない場合はユーザ登録へ
73                 if ($task == self::TASK_MYPAGE && empty($memberId)){                    // マイページ画面
74                         $db = new chachaDb();           // DBオブジェクト作成
75                         $ret = $db->getMemberInfoByDeviceId($this->_mobileId, $row);
76                         if (!$ret){
77                                 $nextPage = $this->gEnv->createCurrentPageUrlForMobile('task=' . self::TASK_PROFILE);
78                                 $this->gPage->redirect($nextPage, true/*遷移時のダイアログ表示を抑止*/);
79                                 return true;
80                         }
81                 }
82                 
83                 // ##### コンテナを起動 #####
84                 switch ($task){
85                         case self::TASK_TOP:                    // トップ画面
86                         case self::TASK_THREAD:         // スレッド処理
87                         case self::TASK_READ:                   // スレッド一覧画面
88                         case self::TASK_PROFILE:                        // プロフィール入力画面
89                         case self::TASK_MYPAGE:                 // マイページ画面
90                                 $this->gLaunch->goSubWidget($task);
91                                 return false;
92                         default:
93                                 $this->SetMsg(self::MSG_APP_ERR, "画面が見つかりません");
94                                 return true;
95                 }
96         }
97         /**
98          * テンプレートファイルを設定
99          *
100          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
101          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
102          *
103          * @param RequestManager $request               HTTPリクエスト処理クラス
104          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
105          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
106          */
107         function _setTemplate($request, &$param)
108         {
109                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
110
111                 // 要求画面によってテンプレートを変更
112                 switch ($task){
113                         default:
114                                 return 'message.tmpl.html';
115                 }
116         }
117         /**
118          * テンプレートにデータ埋め込む
119          *
120          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
121          *
122          * @param RequestManager $request               HTTPリクエスト処理クラス
123          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
124          * @return                                                              なし
125          */
126         function _assign($request, &$param)
127         {
128                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
129                 if (empty($task)) $task = self::DEFAULT_TASK;
130
131                 // 要求画面によってテンプレートを変更
132                 switch ($task){
133                         case self::TASK_THREAD:         // スレッド処理
134                         case self::TASK_READ:                   // スレッド一覧画面
135                         case self::TASK_PROFILE:                        // プロフィール入力画面
136                         case self::TASK_MYPAGE:                 // マイページ画面
137                                 $this->setUserErrorMsg('携帯電話以外からは実行できません');
138                                 $this->tmpl->addVar('_widget', 'top_url', $this->gEnv->createCurrentPageUrlForMobile(''));
139                                 break;
140                         default:
141                                 break;
142                 }
143         }
144 }
145 ?>