OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / s / login / include / container / s_loginWidgetContainer.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: s_loginWidgetContainer.php 4821 2012-04-03 05:04:44Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getContainerPath()           . '/baseWidgetContainer.php');
17
18 class s_loginWidgetContainer extends BaseWidgetContainer
19 {
20         private $db;    // DB接続オブジェクト
21         const TARGET_WIDGET = 'reg_user';               // 呼び出しウィジェットID
22         const DEFAULT_TITLE = 'ログイン';                   // デフォルトのウィジェットタイトル
23         
24         /**
25          * コンストラクタ
26          */
27         function __construct()
28         {
29                 // 親クラスを呼び出す
30                 parent::__construct();
31         }
32         /**
33          * テンプレートファイルを設定
34          *
35          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
36          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
37          *
38          * @param RequestManager $request               HTTPリクエスト処理クラス
39          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
40          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
41          */
42         function _setTemplate($request, &$param)
43         {       
44                 return 'index.tmpl.html';
45         }
46         /**
47          * テンプレートにデータ埋め込む
48          *
49          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
50          *
51          * @param RequestManager $request               HTTPリクエスト処理クラス
52          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
53          * @param                                                               なし
54          */
55         function _assign($request, &$param)
56         {
57                 $act = $request->trimValueOf('act');
58                 if ($act == 'loginbox_login'){                  // ログインのとき
59                         // アカウント、パスワード取得
60                         $account = $request->trimValueOf('account');
61                         $password = $request->trimValueOf('password');
62
63                         // ユーザ認証
64                         if ($this->gAccess->userLoginByAccount($account, $password)){
65                                 // 画面を全体を再表示する
66                                 $this->gPage->redirect($this->gEnv->getCurrentRequestUri());
67                                 return;
68                         } else {                // ログイン失敗の場合
69                                 // ログイン状態を削除
70                                 $this->gAccess->userLogout();
71                                 
72                                 $this->tmpl->addVar("_widget", "account", $account);            // アカウント
73                                 $this->tmpl->addVar("login_status", "message", 'ログインに失敗しました');            // メッセージ
74                                 $this->tmpl->setAttribute('login_status', 'visibility', 'visible');             // メッセージ表示
75                         }
76                 } else if ($act == 'loginbox_logout'){                  // ログアウトのとき
77                         $this->gAccess->userLogout();
78                         
79                         // 画面を全体を再表示する
80                         $this->gPage->redirect($this->gEnv->getCurrentRequestUri());
81                         return;
82                 }
83                 
84                 // ログイン状態を取得
85                 $userName = $this->gEnv->getCurrentUserName();
86                 if (empty($userName)){          // ユーザがログインしていないとき
87                         // ログイン入力部、ログインボタン表示
88                         $this->tmpl->setAttribute('login_field', 'visibility', 'visible');
89                         $this->tmpl->setAttribute('login_button', 'visibility', 'visible');
90                 } else {                // ユーザがログイン中のとき
91                         $this->tmpl->addVar("login_status", "user_name", 'ログイン: ' . $userName . ' 様');
92                         
93                         // 会員情報、ログアウトボタン表示
94                         $this->tmpl->setAttribute('login_status', 'visibility', 'visible');             // ログイン状況
95                         $this->tmpl->setAttribute('logout_button', 'visibility', 'visible');
96                         
97                         // パスワード変更画面へのリンク
98                         if ($this->canFindWidget(self::TARGET_WIDGET)){                 // ウィジェット実行可能なとき
99                                 $changepwdUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'task=changepwd');
100                                 $this->tmpl->setAttribute('user_items', 'visibility', 'visible');
101                                 $this->tmpl->addVar("user_items", "changepwd_url", $this->getUrl($changepwdUrl, true));
102                         }
103                 }
104         }
105         /**
106          * ウィジェットのタイトルを設定
107          *
108          * @param RequestManager $request               HTTPリクエスト処理クラス
109          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
110          * @return string                                               ウィジェットのタイトル名
111          */
112         function _setTitle($request, &$param)
113         {
114                 return self::DEFAULT_TITLE;
115         }
116 }
117 ?>