OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / comment / include / container / commentWidgetContainer.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-2013 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: commentWidgetContainer.php 6000 2013-05-14 12:28:33Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/commentBaseWidgetContainer.php');
17
18 class commentWidgetContainer extends commentBaseWidgetContainer
19 {
20         /**
21          * コンストラクタ
22          */
23         function __construct()
24         {
25                 // 親クラスを呼び出す
26                 parent::__construct();
27                 
28                 // ウィジェットオブジェクト取得
29                 self::$_paramObj = $this->getWidgetParamObj();
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                 $blogId = $request->trimValueOf(M3_REQUEST_PARAM_BLOG_ID);              // 所属ブログ
47                 $serialNo = $request->trimValueOf('serial');            // 選択項目のシリアル番号
48
49                 // ##### アクセス制御 #####
50                 // 管理ウィンドウのときはブログIDが必須
51                 // 管理ウィンドウはマルチブログ時のみ使用
52                 switch ($task){
53                         case self::TASK_ENTRY:                                  // 記事編集画面(別ウィンドウ)
54                         case self::TASK_ENTRY_DETAIL:                   // 記事編集画面詳細
55                         case self::TASK_COMMENT:                // ブログ記事コメント管理
56                         case self::TASK_COMMENT_DETAIL:         // ブログ記事コメント管理(詳細)
57                                 if (empty($blogId)){    // ブログIDが指定されていない場合
58                                         $this->SetMsg(self::MSG_APP_ERR, "アクセスできません");
59                                         return true;
60                                 }
61                                 break;
62                 }
63                 self::$_canEditEntry = false;           // 記事編集権限
64                 
65                 // 設定値を取得
66                 if ($this->gEnv->isSystemManageUser()){                 // システム運用可能ユーザのとき
67                         self::$_canEditEntry = true;            // 記事編集権限
68                 } else if ($this->gEnv->getCurrentUserType() >= UserInfo::USER_TYPE_AUTHOR){            // ユーザ権限(投稿者以上)のチェック
69                         // ブログライブラリオブジェクトからテンプレートを取得
70                         $blogId = '';
71                         $blogLibObj = $this->gInstance->getObject(self::BLOG_OBJ_ID);
72                         if (isset($blogLibObj)) $blogId = $blogLibObj->getBlogId();
73
74                         // ブログの所有者のときは編集権限あり
75                         $ret = self::$_mainDb->getBlogInfoById($blogId, $row);
76                         if ($ret && $this->gEnv->getCurrentUserId() == $row['bl_owner_id']){
77                                 // シリアル番号が指定されている場合は編集権限をチェック
78                                 if (empty($serialNo)){
79                                         self::$_canEditEntry = true;            // 記事編集権限
80                                 } else {
81                                         switch ($task){
82                                                 case self::TASK_ENTRY:                                  // 記事編集画面(別ウィンドウ)
83                                                 case self::TASK_ENTRY_DETAIL:                   // 記事編集画面詳細
84                                                         $ret = self::$_mainDb->isExistsEntryInBlogId($serialNo, $blogId);
85                                                         if ($ret) self::$_canEditEntry = true;          // 記事編集権限
86                                                         break;
87                                                 case self::TASK_COMMENT:                // ブログ記事コメント管理
88                                                 case self::TASK_COMMENT_DETAIL:         // ブログ記事コメント管理(詳細)
89                                                         $ret = self::$_mainDb->isExistsCommentInBlogId($serialNo, $blogId);
90                                                         if ($ret) self::$_canEditEntry = true;          // 記事編集権限
91                                                         break;
92                                         }
93                                 }
94                         }
95                 }
96
97                 // ##### コンテナを起動 #####
98                 $goWidget = false;              // サブウィジェットを実行するかどうか
99                 switch ($task){
100                         case self::TASK_TOP:                    // トップ画面
101                                 $goWidget = true;               // サブウィジェットを実行するかどうか
102                                 break;                          
103                         case self::TASK_ENTRY:                                  // 記事編集画面(別ウィンドウ)
104                         case self::TASK_ENTRY_DETAIL:                   // 記事編集画面詳細
105                                 if (self::$_canEditEntry){      // 記事が編集可能かどうか
106                                         $task = self::TASK_ENTRY;
107                                         $goWidget = true;               // サブウィジェットを実行するかどうか                          
108                                 } else {
109                                         $this->SetMsg(self::MSG_APP_ERR, "アクセスできません");
110                                         return true;
111                                 }
112                                 break;
113                         case self::TASK_COMMENT:                // ブログ記事コメント管理
114                         case self::TASK_COMMENT_DETAIL:         // ブログ記事コメント管理(詳細)
115                                 if (self::$_canEditEntry){      // 記事が編集可能かどうか
116                                         $task = self::TASK_COMMENT;
117                                         $goWidget = true;               // サブウィジェットを実行するかどうか                          
118                                 } else {
119                                         $this->SetMsg(self::MSG_APP_ERR, "アクセスできません");
120                                         return true;
121                                 }
122                                 break;
123                 }
124                 if ($goWidget){         // サブウィジェットを実行するかどうか
125                         $this->gLaunch->goSubWidget($task);             // 一般機能で呼び出し
126                         return false;
127                 } else {
128                         $this->SetMsg(self::MSG_APP_ERR, "画面が見つかりません");
129                         return true;
130                 }
131         }
132         /**
133          * テンプレートファイルを設定
134          *
135          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
136          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
137          *
138          * @param RequestManager $request               HTTPリクエスト処理クラス
139          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
140          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
141          */
142         function _setTemplate($request, &$param)
143         {
144                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
145                 return 'message.tmpl.html';
146         }
147         /**
148          * テンプレートにデータ埋め込む
149          *
150          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
151          *
152          * @param RequestManager $request               HTTPリクエスト処理クラス
153          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
154          * @return                                                              なし
155          */
156         function _assign($request, &$param)
157         {
158                 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
159
160                 // 要求画面によってテンプレートを変更
161                 switch ($task){
162                         case self::TASK_TOP:                    // トップ画面
163                         default:
164                                 break;
165                 }
166         }
167 }
168 ?>