OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / blog_update_box / include / container / rss_blog_update_boxWidgetContainer.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: rss_blog_update_boxWidgetContainer.php 5267 2012-10-04 11:33:36Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getContainerPath() . '/baseRssContainer.php');
17 require_once($gEnvManager->getCurrentWidgetDbPath() . '/blog_update_boxDb.php');
18
19 class rss_blog_update_boxWidgetContainer extends BaseRssContainer
20 {
21         private $db;
22         private $isExistsList;                          // リスト項目が存在するかどうか
23         private $rssChannel;                            // RSSチャンネル部出力データ
24         private $rssSeqUrl = array();                                   // 項目の並び
25         private $defaultUrl;    // システムのデフォルトURL
26         const DEFAULT_ITEM_COUNT = 10;          // デフォルトの表示項目数
27         const DEFAULT_TITLE = 'ブログ更新記事';                  // デフォルトのウィジェットタイトル
28         const DEFAULT_DESC = '更新されたブログ記事が取得できます。';
29         
30         /**
31          * コンストラクタ
32          */
33         function __construct()
34         {
35                 // 親クラスを呼び出す
36                 parent::__construct();
37                 
38                 // DBオブジェクト作成
39                 $this->db = new blog_update_boxDb();
40         }
41         /**
42          * テンプレートファイルを設定
43          *
44          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
45          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
46          *
47          * @param RequestManager $request               HTTPリクエスト処理クラス
48          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
49          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
50          */
51         function _setTemplate($request, &$param)
52         {
53                 return 'rss_index.tmpl.html';
54         }
55         /**
56          * テンプレートにデータ埋め込む
57          *
58          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
59          *
60          * @param RequestManager $request               HTTPリクエスト処理クラス
61          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
62          * @param                                                               なし
63          */
64         function _assign($request, &$param)
65         {
66                 $langId = $this->gEnv->getCurrentLanguage();
67                 
68                 // 設定値を取得
69                 $itemCount = self::DEFAULT_ITEM_COUNT;  // 表示項目数
70                 $useRss = 1;                                                    // RSS配信を行うかどうか
71                 $paramObj = $this->getWidgetParamObj();
72                 if (!empty($paramObj)){
73                         $itemCount      = $paramObj->itemCount;
74                         $useRss         = $paramObj->useRss;// RSS配信を行うかどうか
75                         if (!isset($useRss)) $useRss = 1;
76                 }
77                 // RSS配信を行わないときは終了
78                 //if (empty($useRss)) $this->cancelParse();             // 出力しない
79                 if (empty($useRss)){
80                         // ページ作成処理中断
81                         $this->gPage->abortPage();
82                         
83                         // システム強制終了
84                         $this->gPage->exitSystem();
85                 }
86                                         
87                 // 一覧を作成
88                 $this->defaultUrl = $this->gEnv->getDefaultUrl();
89                 $this->db->getEntryItems($itemCount, $langId, array($this, 'itemLoop'));
90                                 
91                 // 画面にデータを埋め込む
92                 if ($this->isExistsList) $this->tmpl->setAttribute('itemlist', 'visibility', 'visible');
93                 
94                 // RSSチャンネル部出力データ作成
95                 $linkUrl = $this->getUrl($this->gPage->createRssCmdUrl($this->gEnv->getCurrentWidgetId()));
96                 $this->rssChannel = array(      'title' => self::DEFAULT_TITLE,         // タイトル
97                                                                         'link' => $linkUrl,                                     // RSS配信用URL
98                                                                         'description' => self::DEFAULT_DESC,// 説明
99                                                                         'seq' => $this->rssSeqUrl);                     // 項目の並び
100         }
101         /**
102          * RSSのチャンネル部出力
103          *
104          * _assign()よりも後に実行される。
105          *
106          * @param RequestManager $request               HTTPリクエスト処理クラス
107          * @param object         $param                 任意使用パラメータ
108          * @return array                                                設定データ
109          */
110         function _setRssChannel($request, &$param)
111         {
112                 return $this->rssChannel;
113         }
114         /**
115          * 取得したメニュー項目をテンプレートに設定する
116          *
117          * @param int           $index                  行番号
118          * @param array         $fetchedRow             取得行
119          * @param object        $param                  任意使用パラメータ
120          * @return bool                                         trueを返すとループ続行。falseを返すとその時点で終了。
121          */
122         function itemLoop($index, $fetchedRow)
123         {
124                 $totalViewCount = $fetchedRow['total'];
125                 $name = $fetchedRow['be_name'];
126
127                 // 記事へのリンク
128                 $linkUrl = $this->getUrl($this->defaultUrl . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $fetchedRow['be_id'], true);
129                 
130                 if (!empty($name)){
131                         $row = array(
132                                 'total' => $totalViewCount,             // 閲覧数
133                                 'link_url' => $this->convertUrlToHtmlEntity($linkUrl),          // リンク
134                                 'name' => $this->convertToDispString($name),                    // タイトル
135                                 'date' => getW3CDate($fetchedRow['be_dt'])              // 更新日時
136                         );
137                         $this->tmpl->addVars('itemlist', $row);
138                         $this->tmpl->parseTemplate('itemlist', 'a');
139                 
140                         // RSS用
141                         $this->rssSeqUrl[] = $linkUrl;                                  // 項目の並び
142                         
143                         $this->isExistsList = true;             // リスト項目が存在するかどうか
144                 }
145                 return true;
146         }
147 }
148 ?>