OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / m / quizk / include / container / m_quizkWidgetContainer.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    Magic3 Framework
10  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11  * @copyright  Copyright 2006-2009 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: m_quizkWidgetContainer.php 2936 2010-03-17 14:20:08Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 //require_once($gEnvManager->getContainerPath() . '/baseMobileWidgetContainer.php');
17 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/m_quizkBaseWidgetContainer.php');
18
19 class m_quizkWidgetContainer extends m_quizkBaseWidgetContainer
20 {
21         const DEFAULT_TASK = 'top';             // デフォルトの画面
22
23         /**
24          * コンストラクタ
25          */
26         function __construct()
27         {
28                 // 親クラスを呼び出す
29                 parent::__construct();
30         }
31         /**
32          * ディスパッチ処理(メインコンテナのみ実行)
33          *
34      * HTTPリクエストの内容を見て処理をコンテナに振り分ける
35          *
36          * @param RequestManager $request               HTTPリクエスト処理クラス
37          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
38          * @return bool                                                 このクラスの_setTemplate(), _assign()へ処理を継続するかどうかを返す。
39          *                                      true=処理を継続、false=処理を終了
40          */
41         function _dispatch($request, &$param)
42         {
43                 // 実行処理を決定
44                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
45                 if (empty($task)) $task = self::DEFAULT_TASK;
46
47                 // ログインが必要な処理の場合は、ログイン状況をチェックする
48                 switch ($task){
49                         case 'member':                  // 会員情報変更
50                                 // ログイン状態を取得
51                                 if (!$this->gEnv->isCurrentUserLogined()){              // ログインされていない場合
52                                         $this->SetMsg(self::MSG_APP_ERR, "ログインが必要です");
53                                         return true;
54                                 }
55                                 break;
56                         default:
57                                 break;
58                 }
59                 // アクセス権をチェック
60                 switch ($task){
61                         case 'progress':                        // クイズ質問回答画面
62                         case 'complete':                        // 受付完了画面
63                                 // 携帯以外からのアクセスの場合はエラー
64                                 if (empty($this->mobileId)) return true;
65                                 break;
66                 }
67                 
68                 // ##### コンテナを起動 #####
69                 switch ($task){
70                         case 'top':                     // トップ画面
71                         case 'profile':                 // プロフィール入力画面
72                         case 'progress':                        // クイズ質問回答画面
73                         case 'complete':                        // 受付完了画面
74                                 $this->gLaunch->goSubWidget($task);
75                                 return false;
76                         default:
77                                 $this->SetMsg(self::MSG_APP_ERR, "画面が見つかりません");
78                                 return true;
79                 }
80         }
81         /**
82          * テンプレートファイルを設定
83          *
84          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
85          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
86          *
87          * @param RequestManager $request               HTTPリクエスト処理クラス
88          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
89          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
90          */
91         function _setTemplate($request, &$param)
92         {
93                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
94
95                 // 要求画面によってテンプレートを変更
96                 switch ($task){
97                         case 'member':                  // 会員情報変更
98                                 // ログインが必要であるメッセージを表示
99                                 return 'message_login.tmpl.html';
100                         default:
101                                 return 'message.tmpl.html';
102                 }
103         }
104         /**
105          * テンプレートにデータ埋め込む
106          *
107          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
108          *
109          * @param RequestManager $request               HTTPリクエスト処理クラス
110          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
111          * @return                                                              なし
112          */
113         function _assign($request, &$param)
114         {
115                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
116
117                 // 要求画面によってテンプレートを変更
118                 switch ($task){
119                         case 'member':                  // 会員情報変更
120                                 // ログインが必要であるメッセージを表示
121                                 $this->tmpl->addVar("_widget", "login_url", $this->gEnv->createCurrentPageUrl() . '&task=login');               // ログイン用URL
122                                 break;
123                         case 'progress':                        // クイズ質問回答画面
124                         case 'complete':                        // 受付完了画面
125                                 $message = sprintf(self::ERR_MESSAGE_FORMAT, '携帯電話以外からは実行できません');
126                                 $this->tmpl->addVar("_widget", "message", $message);
127                                 $this->tmpl->addVar('_widget', 'top_url', $this->gEnv->createCurrentPageUrlForMobile(''));
128                                 break;
129                         default:
130                                 break;
131                 }
132         }
133 }
134 ?>