OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / ec_main / include / container / ec_mainWidgetContainer.php
1 <?php
2 /**
3  * index.php用コンテナクラス
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-2012 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: ec_mainWidgetContainer.php 5440 2012-12-08 09:37:39Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/ec_mainBaseWidgetContainer.php');
17
18 class ec_mainWidgetContainer extends ec_mainBaseWidgetContainer
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                 // 実行処理を決定
41                 $cmd = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_COMMAND);
42                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
43                 if (empty($task)) $task = self::DEFAULT_TOP_TASK;
44                 $forward = $request->trimValueOf(M3_REQUEST_PARAM_FORWARD);             // 画面遷移用パラメータ
45                 
46                 // ##### アクセス制御 #####
47                 $canNonMemberOrder = $this->_getConfig(photo_shopCommonDef::CF_PERMIT_NON_MEMBER_ORDER);
48
49                 // ログインが必要な処理の場合は、ログイン状況をチェックする
50                 switch ($task){
51                         case 'membermenu':              // 会員向けメニュー
52                         case 'membernotice':            // 会員向けお知らせ
53                         case 'memberinfo':                      // 会員情報変更
54                         case 'changepwd':               // パスワード変更
55                         case 'purchasehistory': // 購入履歴
56                                 // ログイン状態を取得
57                                 if (!$this->gEnv->isCurrentUserLogined()){              // ログインされていない場合
58                                         // トップページへ遷移
59                                         $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
60                                         return true;
61                                 }
62                 }
63
64                 // 注文プロセスもログインが必要
65                 if (in_array($task, self::$_orderProcessAllTasks)){
66                         if (empty($canNonMemberOrder)){                 // 会員のみ注文が可能なとき
67                                 // ログイン状態を取得
68                                 if (!$this->gEnv->isCurrentUserLogined()){              // ログインされていない場合
69                                         // トップページへ遷移
70                                         $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
71                                         return true;
72                                 }
73                         }
74                         // 注文受付停止中はトップ画面へ遷移(システム管理者以外)
75                         if (!$this->gEnv->isSystemAdmin() && !$this->_getConfig(photo_shopCommonDef::CF_ACCEPT_ORDER)){
76                                 $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
77                                 return true;
78                         }
79                 }
80                 
81                 // ##### 遷移先を決定 #####
82                 if ($task == 'login'){
83                         if ($this->gEnv->isCurrentUserLogined()){
84                                 if (empty($forward)){
85                                         // 既にログイン中のときは、会員向けメニューへ
86                                         $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::DEFAULT_MEMBER_TASK;
87                                         $this->gPage->redirect($orderPage);
88                                 } else {
89                                         $forwardPage = $this->gEnv->createCurrentPageUrl() . '&' . $forward;
90                                         $this->gPage->redirect($forwardPage);
91                                 }
92                                 return true;
93                         }
94                 } else if ($task == 'order'){           // 注文処理
95                         if ($this->gEnv->isCurrentUserLogined()){               // ユーザがログインしている場合(会員の場合)
96                                 // 注文の画面遷移(配送先入力→配送方法選択→支払い方法入力→確認)
97                                 //$orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::DEFAULT_ORDER_START_TASK;
98                                 $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::$_orderProcessTasks[0];
99                                 $this->gPage->redirect($orderPage);
100                                 return true;
101                         } else {                // ログイン画面を表示した後、注文画面へ遷移
102                                 //$loginPage = $this->gEnv->createCurrentPageUrl() . '&task=login&' . M3_REQUEST_PARAM_FORWARD . '=' . urlencode('task=' . self::DEFAULT_ORDER_START_TASK);
103                                 $loginPage = $this->gEnv->createCurrentPageUrl() . '&task=login&' . M3_REQUEST_PARAM_FORWARD . '=' . urlencode('task=' . self::$_orderProcessTasks[0]);
104                                 $this->gPage->redirect($loginPage);
105                                 return true;
106                         }
107                 } else if ($task == 'logout'){// ログアウト処理
108                         $this->gAccess->userLogout();// ログイン状態を削除
109                         
110                         // トップページへ遷移
111                         $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
112                         return true;
113                 } else if (in_array($task, self::$_orderProcessTasks) && $task != self::$_orderProcessTasks[0]){                        // 注文処理の最初のタスク以外の場合
114                         // システム運用権限ありで、プレビュー指定の場合は遷移しない
115                         if (!($this->gEnv->isSystemManageUser() && $cmd == M3_REQUEST_CMD_PREVIEW)){
116                                 // 注文書が初期化されていなければカート画面へ遷移
117                                 $ret = $this->_getOrderSheet($row);
118                                 if (!$ret){
119                                         $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=cart';
120                                         $this->gPage->redirect($orderPage);
121                                         return true;
122                                 }
123                         }
124                 }
125                 
126                 // ##### 起動タスクを変更 #####
127                 switch ($task){
128                         case 'emaillogin':
129                                 $task = 'login';
130                                 break;
131                 }
132                 // 会員規約を承認していない場合は、規約ページを表示
133                 if ($task == 'regmember' && $this->getWidgetSession(photo_shopCommonDef::SK_AGREE_MEMBER, '0') == '0'){
134                         $task = 'agreemember';          // 会員規約
135                 }
136                 
137                 // ##### タスク初期処理 #####
138                 if ($task == self::$_orderProcessTasks[0]){                     // 注文処理の最初のタスクの場合
139                         // 注文書を初期化。戻るボタンで来た時は注文書を初期化しない。
140                         $act = $request->trimValueOf('act');
141                         if ($act != 'goback') $this->_initOrderSheet();
142                 }
143                 
144                 // ##### コンテナを起動 #####
145                 switch ($task){
146                         case 'cart':                    // カート機能
147                         case 'login':                   // 会員ログイン
148                         case 'regmember':                       // 会員登録
149                         case 'regcustomer':                     // 購入者情報入力
150                         case 'delivery':                // 配送先入力
151                         case 'delivmethod':             // 配送方法選択
152                         case 'payment':                 // 支払い
153                         case 'confirm':                 // 確認
154                         case 'complete':                // 手続き完了
155                         case 'sendpwd':                 // パスワード送信
156                         case 'membermenu':              // 会員向けメニュー
157                         case 'membernotice':            // 会員向けお知らせ
158                         case 'memberinfo':                      // 会員情報変更
159                         case 'agreemember':             // 会員規約表示
160                         case 'changepwd':                       // パスワード変更
161                         case 'purchasehistory':                 // 購入履歴
162                                 self::$_task = $task;           // 現在のタスク
163                                 $this->gLaunch->goSubWidget($task);
164                                 return false;
165                         default:
166                                 //$this->SetMsg(self::MSG_APP_ERR, "画面が見つかりません");
167                                 return true;
168                 }
169         }
170         /**
171          * テンプレートファイルを設定
172          *
173          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
174          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
175          *
176          * @param RequestManager $request               HTTPリクエスト処理クラス
177          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
178          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
179          */
180         function _setTemplate($request, &$param)
181         {
182                 return 'message.tmpl.html';
183         }
184         /**
185          * テンプレートにデータ埋め込む
186          *
187          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
188          *
189          * @param RequestManager $request               HTTPリクエスト処理クラス
190          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
191          * @return                                                              なし
192          */
193         function _assign($request, &$param)
194         {
195                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
196
197                 // 要求画面によってテンプレートを変更
198                 switch ($task){
199                         case 'error':                   // エラー画面
200                                 $title = 'エラー';
201                                 $message = 'エラーが発生しました。もう一度最初からやり直してください。';
202                                 break;
203                         default:
204                                 $title = 'アクセスエラー';
205                                 $message = 'アクセスできません';
206                                 break;
207                 }
208                 $this->tmpl->addVar("_widget", "title", $title);
209                 $this->tmpl->addVar("_widget", "message", $message);
210         }
211 }
212 ?>