OSDN Git Service

DB更新スクリプト更新。
[magic3/magic3.git] / widgets / m / chacha / include / container / m_chachaReadWidgetContainer.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    マイクロブログ
10  * @author     株式会社 毎日メディアサービス
11  * @copyright  Copyright 2010 株式会社 毎日メディアサービス.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: m_chachaReadWidgetContainer.php 3363 2010-07-10 05:12:31Z fishbone $
14  * @link       http://www.m-media.co.jp
15  */
16 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/m_chachaBaseWidgetContainer.php');
17
18 class m_chachaReadWidgetContainer extends m_chachaBaseWidgetContainer
19 {
20         private $messageCount;                  // メッセージ数
21         private $isExistsMessage;       // メッセージが存在するかどうか
22         private $isExistsNextPage;      // 次のページがあるかどうか
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 'thread_read.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                 $pageNo = $request->trimIntValueOf(M3_REQUEST_PARAM_PAGE_NO, '1');                              // ページ番号
59                 
60                 // クライアントIDを取得
61                 $clientId = $this->_mobileId;
62                 
63                 // 会員IDを取得
64                 $clientMemberId = '';                   // 現在の端末の会員ID
65                 $ret = $this->_db->getMemberInfoByDeviceId($clientId, $row);
66                 if ($ret) $clientMemberId = $row['mb_id'];
67                 
68                 // 表示メッセージ取得
69                 // 1つ多く呼び出し、次のページがあるか確認
70                 $this->messageCount = $this->_configArray[self::CF_MESSAGE_COUNT_MYPAGE];               // 最大項目数
71                 $this->_db->getThread($this->_boardId, $this->messageCount, $pageNo, array($this, 'itemsLoop'), true);
72         
73                 // 登録用リンクを作成。会員として認識できないときはプロフィール画面へ、認識できる場合はマイページ画面へ遷移。
74                 if (empty($clientMemberId)){
75                         //$registLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&task=' . self::TASK_PROFILE, true));
76                         $registLink = $this->convertUrlToHtmlEntity($this->getUrl($this->gEnv->createCurrentPageUrlForMobile('task=' . self::TASK_PROFILE)));
77                         $registName = 'ユーザ登録';
78                 } else {
79                         //$registLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&task=' . self::TASK_MYPAGE . '&' . self::URL_PARAM_MEMBER_ID . '=' . $clientMemberId, true));
80                         $registLink = $this->convertUrlToHtmlEntity($this->getUrl($this->gEnv->createCurrentPageUrlForMobile('task=' . self::TASK_MYPAGE . '&' . self::URL_PARAM_MEMBER_ID . '=' . $clientMemberId)));
81                         $registName = '投稿';
82                 }
83                 $this->tmpl->addVar("_widget", "regist_url", $registLink);
84                 $this->tmpl->addVar("_widget", "regist_name", $registName);
85                 $this->tmpl->addVar("_widget", "current_url", $this->gEnv->getCurrentRequestUri());
86                 
87                 // スレッドが存在しないときは一覧を非表示にする
88                 if (!$this->isExistsMessage){
89                         $this->setGuidanceMsg('メッセージが投稿されていません');
90                         
91                         $this->tmpl->setAttribute('message_list', 'visibility', 'hidden');
92                 }
93                         
94                 // ページ遷移用リンク
95                 $pageLink = '';
96                 if ($pageNo > 1){                       // 前のページがあるとき
97                         //$foreLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&task=' . self::TASK_READ . '&page=' . ($pageNo -1), true));
98                         $foreLink = $this->convertUrlToHtmlEntity($this->getUrl($this->gEnv->createCurrentPageUrlForMobile('task=' . self::TASK_READ . '&page=' . ($pageNo -1), false/*セッションID削除*/)));
99                         $pageLink .= '<a href="' . $foreLink . '" accesskey="1">前へ[1]</a>';
100                 }
101                 if ($this->isExistsNextPage){   // 次のページがあるとき
102                         if (!empty($pageLink)) $pageLink .= '&nbsp;&nbsp;';
103                         //$nextLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&task=' . self::TASK_READ . '&page=' . ($pageNo +1), true));
104                         $nextLink = $this->convertUrlToHtmlEntity($this->getUrl($this->gEnv->createCurrentPageUrlForMobile('task=' . self::TASK_READ . '&page=' . ($pageNo +1), false/*セッションID削除*/)));
105                         $pageLink .= '<a href="' . $nextLink . '" accesskey="2">次へ[2]</a>';
106                 }
107                 $this->tmpl->addVar("_widget", "page_link", $pageLink);
108         }
109         /**
110          * 取得したメッセージ項目をテンプレートに設定する
111          *
112          * @param int           $index                  行番号
113          * @param array         $fetchedRow             取得行
114          * @param object        $param                  任意使用パラメータ
115          * @return bool                                         trueを返すとループ続行。falseを返すとその時点で終了。
116          */
117         function itemsLoop($index, $fetchedRow)
118         {
119                 // 最大表示数を超えたときは終了
120                 if ($index >= $this->messageCount){
121                         $this->isExistsNextPage = true;                         // 次のページあり
122                         return false;
123                 }
124                 
125                 // メッセージ用のデータを取得
126                 $no = $fetchedRow['mt_update_no'];              // スレッド更新番号
127                 $memberId = $fetchedRow['mb_id'];               // 会員ID
128                 $memberName = $fetchedRow['mb_name'];   // 会員名
129                 $messageId = $fetchedRow['mm_thread_id'];
130                 $messageCount = $fetchedRow['mt_message_count'] -1;             // メッセージ数
131                 if ($messageCount <= 0) $messageCount = '';                             // 返信がないときはメッセージ数を表示しない
132                 $mypageLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&' . self::URL_PARAM_MEMBER_ID . '=' . $memberId));
133                 $messageLink = $this->convertUrlToHtmlEntity($this->getUrl($this->_currentPageUrl . '&' . self::URL_PARAM_MESSAGE_ID . '=' . $messageId));
134                 
135                 // 名前作成
136                 $nameTag = '<a href="' . $mypageLink . '">' . $this->convertToDispString($memberName) . '</a>';
137                 
138                 // 日付作成
139                 $weekDay = array('日', '月', '火', '水', '木', '金', '土');
140                 $timestamp = strtotime($fetchedRow['mm_regist_dt']);
141                 $weekNo = intval(date('w', $timestamp));
142                 //$date = date('Y/m/d(' . $weekDay[$weekNo] . ') H:i:s', $timestamp);
143                 $date = date('m/d(' . $weekDay[$weekNo] . ') H:i:s', $timestamp);
144                 
145                 // 投稿文
146                 $message = $this->convertToDispString($fetchedRow['mm_message']);// 文字エスケープ処理
147                 $message = $this->_convertToPreviewTextWithSpace($message);                     // 改行をスペースに変換
148                 $message = $this->convDispMessage($message, $fetchedRow['mm_thread_id']);// メッセージ内のリンクを作成
149                 
150                 // メッセージID
151                 $messageIdTag = '<a href="' . $messageLink  . '">#' . $messageId . '</a>';
152                 
153                 // 削除メッセージのとき
154                 /*if ($fetchedRow['mm_deleted']){
155                         $message = '参照できません。';
156                 }*/
157                 // アバター画像を設定
158                 $avatarImageUrl = $this->getAvatarUrl($memberId);
159                 $avatarTag = '<img src="' . $this->getUrl($avatarImageUrl) . '" width="' . self::AVATAR_SIZE . '" height="' . self::AVATAR_SIZE .'" />';
160 //              $avatarTag = '<a href="' . $mypageLink . '">' . $avatarTag . '</a>';
161                 $row = array(
162                         'no'            => $no,                                 // 項目番号
163                         'id'            => $messageIdTag,               // メッセージID
164                         'message_count' => $messageCount,       // メッセージ数
165                         'name'          => $nameTag,                    // 会員名
166                         'date'          => $date,                       // 投稿日付
167                         'message'       => $message,            // 投稿文
168                         'avatar'        => $avatarTag,  // アバター画像
169                         'spacer'        => $this->_spacer       // スペーサ
170                 );
171                 $this->tmpl->addVars('message_list', $row);
172                 $this->tmpl->parseTemplate('message_list', 'a');
173                 
174                 // メッセージが存在するかどうか
175                 $this->isExistsMessage = true;
176                 return true;
177         }
178 }
179 ?>