OSDN Git Service

ブログ機能で記事単体表示時の前後記事リンクを更新。
authornaoki hirata <naoki@magic3.org>
Fri, 2 Oct 2015 03:31:48 +0000 (12:31 +0900)
committernaoki hirata <naoki@magic3.org>
Fri, 2 Oct 2015 03:31:48 +0000 (12:31 +0900)
include/sql/update_widgets.sql
widgets/blog_archive_menu/include/container/blog_archive_menuWidgetContainer.php
widgets/blog_calendar_box/include/container/blog_calendar_boxWidgetContainer.php
widgets/blog_category_menu/include/container/blog_category_menuWidgetContainer.php
widgets/blog_main/include/container/blog_mainTopWidgetContainer.php
widgets/blog_main/include/db/blog_mainDb.php
widgets/blog_related_category/include/container/blog_related_categoryWidgetContainer.php

index d5d5877..c02440b 100644 (file)
@@ -94,7 +94,7 @@ INSERT INTO _widgets
 DELETE FROM _widgets WHERE wd_id = 'blog_main';\r
 INSERT INTO _widgets\r
 (wd_id,       wd_name,         wd_type, wd_content_type, wd_category_id, wd_template_type, wd_edit_content, wd_version, wd_required_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_add_script_lib, wd_add_script_lib_a, wd_read_scripts, wd_read_css, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
-('blog_main', 'ブログ-メイン', 'blog',  'blog',          'blog',         'bootstrap',      true,            '3.2.1',    '2.10.10',           'Naoki Hirata', 'Magic3.org', 'GPL',      10, 'ブログ記事を管理し、画面に表示します。', 'entry_detail=jquery-ui.tabs,ckeditor_m3toolbar;image=jquery.jcrop,elfinder;', 'entry_detail=jquery-ui.tabs,ckeditor_m3toolbar;config=ckeditor_m3toolbar,jquery.uploadfile;image=jquery.jcrop,elfinder;',          false,           false,       true,         true,        true,        true,               false,true,               '2015-03-01', now(),    now());\r
+('blog_main', 'ブログ-メイン', 'blog',  'blog',          'blog',         'bootstrap',      true,            '3.3.0',    '2.10.10',           'Naoki Hirata', 'Magic3.org', 'GPL',      10, 'ブログ記事を管理し、画面に表示します。', 'entry_detail=jquery-ui.tabs,ckeditor_m3toolbar;image=jquery.jcrop,elfinder;', 'entry_detail=jquery-ui.tabs,ckeditor_m3toolbar;config=ckeditor_m3toolbar,jquery.uploadfile;image=jquery.jcrop,elfinder;',          false,           false,       true,         true,        true,        true,               false,true,               '2015-10-02', now(),    now());\r
 DELETE FROM _widgets WHERE wd_id = 'blog_search_box';\r
 INSERT INTO _widgets\r
 (wd_id,             wd_name,         wd_category_id, wd_template_type, wd_version, wd_author, wd_copyright, wd_license, wd_official_level, wd_description, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_launch_index, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
@@ -109,16 +109,16 @@ INSERT INTO _widgets
 ('blog_update_box', 'ブログ-更新', 'blog',         '1.1.0',    'Naoki Hirata', 'Magic3.org', 'GPL',      10,                'コメントを含むブログの更新状況を一覧表示。', true,        false,               false,true,               1, -1, true, '2012-10-04', now(),    now());\r
 DELETE FROM _widgets WHERE wd_id = 'blog_calendar_box';\r
 INSERT INTO _widgets \r
-(wd_id,               wd_name,               wd_category_id, wd_version, wd_author, wd_copyright, wd_license, wd_official_level, wd_description, wd_read_scripts, wd_read_css, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_launch_index, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
-('blog_calendar_box', 'ブログ-カレンダー', 'blog',         '1.1.0',    'Naoki Hirata', 'Magic3.org', 'GPL', 10, 'カレンダーからブログ記事にアクセスするためのボックス。',        false,           false,       true,         true,        false,         false,               false,true,               0, 3, 2,  '2012-10-04', now(),    now());\r
+(wd_id,               wd_name,               wd_category_id, wd_version, wd_author, wd_copyright, wd_license, wd_official_level, wd_description, wd_read_scripts, wd_read_css, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
+('blog_calendar_box', 'ブログ-カレンダー', 'blog',         '1.2.0',    'Naoki Hirata', 'Magic3.org', 'GPL', 10, 'カレンダーからブログ記事にアクセスするためのボックス。',        false,           false,       true,         true,        false,         false,               false,true,               '2015-10-02', now(),    now());\r
 DELETE FROM _widgets WHERE wd_id = 'blog_category_menu';\r
 INSERT INTO _widgets\r
-(wd_id,                wd_name,                       wd_type, wd_category_id, wd_version, wd_params, wd_author, wd_copyright, wd_license, wd_official_level, wd_description, wd_read_scripts, wd_read_css, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_launch_index, wd_cache_type, wd_view_control_type, wd_install_dt, wd_create_dt) VALUES\r
-('blog_category_menu', 'ブログ-カテゴリーメニュー', 'BGCM', 'blog',          '1.0.0',  '',        'Naoki Hirata', 'Magic3.org', 'GPL', 10, 'ブログカテゴリメニュー',          false,           false,       true,         true,        false,         false,               false,true,           0, 1, -1, now(), now());\r
+(wd_id,                wd_name,                     wd_category_id, wd_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_read_scripts, wd_read_css, wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
+('blog_category_menu', 'ブログ-カテゴリーメニュー', 'blog',         '1.1.0',    'Naoki Hirata', 'Magic3.org', 'GPL',      10,                'ブログカテゴリメニュー',          false,           false,       true,         true,        false,         false,               false,true,           '2015-10-02',now(), now());\r
 DELETE FROM _widgets WHERE wd_id = 'blog_archive_menu';\r
 INSERT INTO _widgets\r
-(wd_id,               wd_name,                       wd_category_id, wd_version, wd_author, wd_copyright, wd_license, wd_official_level, wd_description, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_launch_index, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
-('blog_archive_menu', 'ブログ-アーカイブメニュー', 'blog',         '2.0.0',  'Naoki Hirata', 'Magic3.org', 'GPL', 10, 'ブログアーカイブメニュー',        true,         false,               true,true,           0, 1, -1, '2013-09-22', now(), now());\r
+(wd_id,               wd_name,                     wd_category_id, wd_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
+('blog_archive_menu', 'ブログ-アーカイブメニュー', 'blog',         '2.1.0',    'Naoki Hirata', 'Magic3.org', 'GPL',      10,                'ブログアーカイブメニュー',        true,         false,               true,true,           '2015-10-02', now(), now());\r
 DELETE FROM _widgets WHERE wd_id = 'blog_list';\r
 INSERT INTO _widgets\r
 (wd_id,         wd_name,                 wd_category_id, wd_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description,            wd_available, wd_editable, wd_has_admin, wd_enable_operation, wd_use_instance_def, wd_initialized, wd_launch_index, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
index 2519207..7f66a59 100644 (file)
@@ -8,7 +8,7 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2013 Magic3 Project.
+ * @copyright  Copyright 2006-2015 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
  * @version    SVN: $Id$
  * @link       http://www.magic3.org
@@ -101,7 +101,7 @@ class blog_archive_menuWidgetContainer extends BaseWidgetContainer
                                                // メニュー項目を作成
                                                if ($entryCount > 0){           // 記事数が0以上のとき
                                                        $name = $foreYear . '年' . $foreMonth . '月(' . $entryCount . ')';
-                                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&year=' . $foreYear . '&month=' . $foreMonth);
+                                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'year=' . $foreYear . '&month=' . $foreMonth);
                                                        $row = array(
                                                                'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                                                                'name' => $this->convertToDispString($name)                     // タイトル
@@ -125,7 +125,7 @@ class blog_archive_menuWidgetContainer extends BaseWidgetContainer
                                // メニュー項目を作成
                                if ($entryCount > 0){           // 記事数が0以上のとき
                                        $name = $foreYear . '年' . $foreMonth . '月(' . $entryCount . ')';
-                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&year=' . $foreYear . '&month=' . $foreMonth);
+                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'year=' . $foreYear . '&month=' . $foreMonth);
                                        $row = array(
                                                'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                                                'name' => $this->convertToDispString($name)                     // タイトル
@@ -146,7 +146,7 @@ class blog_archive_menuWidgetContainer extends BaseWidgetContainer
                                                // メニュー項目を作成
                                                if ($entryCount > 0){           // 記事数が0以上のとき
                                                        $name = $foreYear . '年(' . $entryCount . ')';
-                                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&year=' . $foreYear);
+                                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'year=' . $foreYear);
                                                        $row = array(
                                                                'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                                                                'name' => $this->convertToDispString($name)                     // タイトル
@@ -169,7 +169,7 @@ class blog_archive_menuWidgetContainer extends BaseWidgetContainer
                                // メニュー項目を作成
                                if ($entryCount > 0){           // 記事数が0以上のとき
                                        $name = $foreYear . '年(' . $entryCount . ')';
-                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&year=' . $foreYear);
+                                       $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'year=' . $foreYear);
                                        $row = array(
                                                'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                                                'name' => $this->convertToDispString($name)                     // タイトル
index 3fd1529..24376bc 100644 (file)
@@ -8,9 +8,9 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2012 Magic3 Project.
+ * @copyright  Copyright 2006-2015 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
- * @version    SVN: $Id: blog_calendar_boxWidgetContainer.php 5271 2012-10-04 12:38:47Z fishbone $
+ * @version    SVN: $Id$
  * @link       http://www.magic3.org
  */
 require_once($gEnvManager->getContainerPath()          . '/baseWidgetContainer.php');
@@ -97,11 +97,11 @@ class blog_calendar_boxWidgetContainer extends BaseWidgetContainer
                $ret = $this->db->getOldEntry($langId, $row);           // 最も古い記事を取得
                if ($ret){
                        if (strtotime($year . '/' . $month . '/1') > strtotime($row['be_regist_dt'])){
-                               $prevUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'act=view&year=' . $prevYear . '&month=' . $prevMonth);
+                               $prevUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'year=' . $prevYear . '&month=' . $prevMonth);
                        }
                }
                if (strtotime($year . '/' . $month . '/1') < strtotime(date('Y/m/1'))){
-                       $nextUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'act=view&year=' . $nextYear . '&month=' . $nextMonth);
+                       $nextUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'year=' . $nextYear . '&month=' . $nextMonth);
                }
                
                $calendarData = '';
@@ -137,7 +137,7 @@ class blog_calendar_boxWidgetContainer extends BaseWidgetContainer
                        $calendarData .= "<td>&nbsp;</td>" . M3_NL;
                    } else {
                                if (in_array($Day->thisDay(), $this->entryDays)){                       // 投稿記事あり
-                                       $dayUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'act=view&year=' . $year . '&month=' . $month . '&day=' . $Day->thisDay());
+                                       $dayUrl = $this->gPage->createWidgetCmdUrl(self::TARGET_WIDGET, self::THIS_WIDGET_ID, 'year=' . $year . '&month=' . $month . '&day=' . $Day->thisDay());
                                        $dayLink = '<a href="' . $this->convertUrlToHtmlEntity($this->getUrl($dayUrl, true/*リンク用*/)) . '">' . $Day->thisDay(). '</a>';
                                        $calendarData .= '<td>'. $dayLink ."</td>" . M3_NL;
                                } else {
index 448a56a..26be21a 100644 (file)
@@ -8,7 +8,7 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2013 Magic3 Project.
+ * @copyright  Copyright 2006-2015 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
  * @version    SVN: $Id$
  * @link       http://www.magic3.org
@@ -89,7 +89,7 @@ class blog_category_menuWidgetContainer extends BaseWidgetContainer
        {
                // リンク先の作成
                $name = $fetchedRow['bc_name'];
-               $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $fetchedRow['bc_id']);
+               $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, M3_REQUEST_PARAM_CATEGORY_ID . '=' . $fetchedRow['bc_id']);
                $row = array(
                        'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                        'name' => $this->convertToDispString($name)                     // タイトル
index 6d92847..c93c881 100644 (file)
@@ -53,6 +53,8 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
        private $headKeyword;   // METAタグキーワード
        private $addLib = array();              // 追加スクリプト
        private $viewMode;                                      // 表示モード
+       private $showListType;                          // 一覧表示タイプ
+       private $viewParam = array();                                   // 表示用パラメータ
        private $editIconPos;                   // 編集アイコンの位置
        private $avatarSize;            // アバター画像サイズ
        private $titleList;             // 一覧タイトル
@@ -140,7 +142,7 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                if (empty($this->blogId)) $this->blogId = $request->trimValueOf(M3_REQUEST_PARAM_BLOG_ID_SHORT);                // 略式ブログID
                $keyword = $request->trimValueOf('keyword');// 検索キーワード
                
-               if ($act == 'search' || !empty($keyword)){
+/*             if ($act == 'search' || !empty($keyword)){
                        $this->viewMode = 2;                                    // 表示モード(検索一覧表示)
                        return 'list.tmpl.html';                // 検索結果一覧
                } else {
@@ -161,6 +163,29 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                        return 'single.tmpl.html';              // 記事詳細
                                }
                        }
+               }*/
+               if (!empty($this->entryId)){            // 記事IDがある場合を優先
+                       $this->viewMode = 10;                                   // 表示モード(記事単体表示)
+                       if ($this->_renderType == M3_RENDER_BOOTSTRAP){
+                               return 'single_bootstrap.tmpl.html';            // 記事詳細
+                       } else {
+                               return 'single.tmpl.html';              // 記事詳細
+                       }
+               } else if ($act == 'search' || !empty($keyword)){
+                       $this->viewMode = 2;                                    // 表示モード(検索一覧表示)
+                       return 'list.tmpl.html';                // 検索結果一覧
+               } else {
+                       $year = $request->trimValueOf('year');          // 年指定
+                       $month = $request->trimValueOf('month');                // 月指定
+                       $category = $request->trimValueOf(M3_REQUEST_PARAM_CATEGORY_ID);                // カテゴリID
+                       
+                       if (!empty($category) || !empty($year) || !empty($month)){
+                               $this->viewMode = 1;                                    // 表示モード(記事一覧表示)
+                               return 'list.tmpl.html';        // 記事一覧
+                       } else {
+                               $this->viewMode = 0;                                    // 表示モード(トップ一覧表示)
+                               return 'list.tmpl.html';                // トップ画面記事一覧
+                       }
                }
        }
        /**
@@ -485,7 +510,11 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                $ret = self::$_mainDb->getPrevNextEntryByKeyword($regDate, $this->_langId, $this->entryViewOrder, $this->startDt/*期間開始*/, $this->endDt/*期間終了*/, $parsedKeywords, $this->blogId, $this->_userId, $prevRow, $nextRow);
                        }
                } else {        // カテゴリーで取得の場合
-
+                       if ($this->isSystemManageUser){         // システム管理ユーザの場合
+                               $ret = self::$_mainDb->getPrevNextEntryByCategory($regDate, $this->_langId, $this->entryViewOrder, $category, $this->blogId, null/*ユーザ指定なし*/, $prevRow, $nextRow);
+                       } else {
+                               $ret = self::$_mainDb->getPrevNextEntryByCategory($regDate, $this->_langId, $this->entryViewOrder, $category, $this->blogId, $this->_userId, $prevRow, $nextRow);
+                       }
                }
                if ($ret){
                        $prevUrl = '';
@@ -493,11 +522,13 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                        if (!empty($prevRow)){
                                $url = $this->gEnv->getDefaultUrl() . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $prevRow['be_id'];
                                if (!empty($keyword)) $url .= '&keyword=' . $keyword;
+                               if (!empty($category)) $url .= '&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $category;
                                $prevUrl = $this->getUrl($url, true/*リンク用*/);
                        }
                        if (!empty($nextRow)){
                                $url = $this->gEnv->getDefaultUrl() . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $nextRow['be_id'];
                                if (!empty($keyword)) $url .= '&keyword=' . $keyword;
+                               if (!empty($category)) $url .= '&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $category;
                                $nextUrl = $this->getUrl($url, true/*リンク用*/);
                        }
                        
@@ -669,6 +700,9 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                $day = $request->trimValueOf('day');            // 日指定
                
                if (!empty($category)){                         // カテゴリー指定のとき
+                       $this->showListType = 'category';                               // 一覧表示タイプ(カテゴリー)
+                       $this->viewParam['category'] = $category;                                       // 表示用パラメータ
+                       
                        // 総数を取得
                        if ($this->isSystemManageUser){         // システム管理ユーザの場合
                                $totalCount = self::$_mainDb->getEntryItemsCountByCategory($this->now, $category, $this->_langId);
@@ -678,7 +712,7 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                        $this->calcPageLink($this->pageNo, $totalCount, $this->entryViewCount);
 
                        // リンク文字列作成、ページ番号調整
-                       $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&act=view&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $category);
+                       $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $category);
                        
                        // 記事一覧を表示
                        if ($this->isSystemManageUser){         // システム管理ユーザの場合
@@ -704,6 +738,8 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                        }
                } else if (!empty($year)){                      // 年月日指定のとき
                        if (!empty($month) && !empty($day)){            // 日指定のとき
+                               $this->showListType = 'day';                            // 一覧表示タイプ(日)
+                               
                                $startDt = $year . '/' . $month . '/' . $day;
                                $endDt = $this->getNextDay($year . '/' . $month . '/' . $day);
                                
@@ -716,7 +752,7 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                $this->calcPageLink($this->pageNo, $totalCount, $this->entryViewCount);
                                
                                // リンク文字列作成、ページ番号調整
-                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&act=view&year=' . $year . '&month=' . $month . '&day=' . $day);
+                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&year=' . $year . '&month=' . $month . '&day=' . $day);
 
                                // 記事一覧作成
                                if ($this->isSystemManageUser){         // システム管理ユーザの場合
@@ -743,6 +779,8 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                        $this->message = $this->messageNoEntry;
                                }
                        } else if (!empty($month)){             // 月指定のとき
+                               $this->showListType = 'month';                          // 一覧表示タイプ(月)
+                               
                                $startDt = $year . '/' . $month . '/1';
                                $endDt = $this->getNextMonth($year . '/' . $month) . '/1';
                                
@@ -755,7 +793,7 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                $this->calcPageLink($this->pageNo, $totalCount, $this->entryViewCount);
                                
                                // リンク文字列作成、ページ番号調整
-                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&act=view&year=' . $year . '&month=' . $month);
+                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&year=' . $year . '&month=' . $month);
                                
                                // 記事一覧作成
                                if ($this->isSystemManageUser){         // システム管理ユーザの場合
@@ -781,6 +819,8 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                        $this->message = $this->messageNoEntry;
                                }
                        } else {                // 年指定のとき
+                               $this->showListType = 'year';                           // 一覧表示タイプ(年)
+                               
                                $startDt = $year . '/1/1';
                                $endDt = ($year + 1) . '/1/1';
                                
@@ -793,7 +833,7 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                                $this->calcPageLink($this->pageNo, $totalCount, $this->entryViewCount);
                                
                                // リンク文字列作成、ページ番号調整
-                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&act=view&year=' . $year);
+                               $pageLink = $this->createPageLink($this->pageNo, self::LINK_PAGE_COUNT, $this->currentPageUrl . '&year=' . $year);
                                
                                // 記事一覧作成
                                if ($this->isSystemManageUser){         // システム管理ユーザの場合
@@ -963,7 +1003,14 @@ class blog_mainTopWidgetContainer extends blog_mainBaseWidgetContainer
                }
                
                // 記事へのリンクを生成
-               $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $entryId, true/*リンク用*/);
+               switch ($this->showListType){   // 一覧表示タイプ
+               case 'category':                                // 一覧表示タイプ(カテゴリー)
+                       $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $entryId . '&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $this->viewParam['category'], true/*リンク用*/);          // カテゴリーID付加
+                       break;
+               default:
+                       $linkUrl = $this->getUrl($this->gEnv->getDefaultUrl() . '?'. M3_REQUEST_PARAM_BLOG_ENTRY_ID . '=' . $entryId, true/*リンク用*/);
+                       break;
+               }
                
                // タイトル作成
                $titleTag = '<h' . $this->itemTagLevel . '><a href="' . $this->convertUrlToHtmlEntity($linkUrl) . '">' . $this->convertToDispString($title) . '</a></h' . $this->itemTagLevel . '>';
index a8f4c23..90498b7 100644 (file)
@@ -856,11 +856,6 @@ class blog_mainDb extends BaseDb
                        $queryStr .=     'AND be_language_id = ? ';     $params[] = $langId;
                        $queryStr .=     'AND ? < be_regist_dt '; $params[] = $regDate;
                        
-/*                     // ブログID
-                       if (isset($blogId)){
-                               $queryStr .=    'AND be_blog_id = ? ';
-                               $params[] = $blogId;
-                       }*/
                        // 検索条件を付加
                        list($condQueryStr, $condParams) = $this->_createSearchCondition($startDt, $endDt, $keywords, $blogId, $userId);
                        $queryStr .= $condQueryStr;
@@ -883,6 +878,109 @@ class blog_mainDb extends BaseDb
                return $retStatus;
        }
        /**
+        * カテゴリー選択で前後のエントリー項目を取得(一般用)
+        *
+        * @param timestamp $regDate                    登録日時
+        * @param string        $langId                         言語
+        * @param int           $order                          取得順(0=昇順,1=降順)
+        * @param int           $categoryId                     カテゴリーID
+        * @param string        $blogId                         ブログID(nullのとき指定なし)
+        * @param int       $userId                             参照制限する場合のユーザID
+        * @param array     $prevRow                    前のレコード
+        * @param array     $nextRow                    次のレコード
+        * @return bool                                                 取得 = true, 取得なし= false
+        */
+       function getPrevNextEntryByCategory($regDate, $langId, $order, $categoryId, $blogId, $userId, &$prevRow, &$nextRow)
+       {
+               if ($regDate == $this->gEnv->getInitValueOfTimestamp()){
+                       return false;
+               } else {
+                       $retStatus = false;
+                       
+                       // ### 前の日時の記事を取得 ###
+                       $params = array();
+//                     $queryStr  = 'SELECT * FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr  = 'SELECT distinct(be_serial) FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr .=   'RIGHT JOIN blog_entry_with_category ON be_serial = bw_entry_serial ';
+                       $queryStr .=   'WHERE be_deleted = false ';     // 削除されていない
+                       $queryStr .=     'AND be_language_id = ? ';     $params[] = $langId;
+                       $queryStr .=     'AND be_regist_dt < ? '; $params[] = $regDate;
+                       $queryStr .=     'AND bw_category_id = ? ';     $params[] = $categoryId;// 記事カテゴリー
+               
+                       // 検索条件を付加
+                       list($condQueryStr, $condParams) = $this->_createSearchCondition(null, null, null, $blogId, $userId);
+                       $queryStr .= $condQueryStr;
+                       $params = array_merge($params, $condParams);
+               
+                       // シリアル番号を取得
+                       $serialArray = array();
+                       $ret = $this->selectRecords($queryStr, $params, $serialRows);
+                       if ($ret){
+                               for ($i = 0; $i < count($serialRows); $i++){
+                                       $serialArray[] = $serialRows[$i]['be_serial'];
+                               }
+                       }
+                       $serialStr = implode(',', $serialArray);
+                       if (empty($serialStr)) $serialStr = '0';        // 0レコードのときはダミー値を設定
+       
+                       $queryStr  = 'SELECT * FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr .=   'LEFT JOIN _login_user ON be_regist_user_id = lu_id AND lu_deleted = false ';
+                       $queryStr .=   'WHERE be_serial in (' . $serialStr . ') ';
+               
+                       $queryStr .=   'ORDER BY be_regist_dt DESC LIMIT 1';// 投稿順
+                       $ret = $this->selectRecord($queryStr, $params, $row);
+                       if ($ret){
+                               $prevRow = $row;
+                               $retStatus = true;
+                       }
+               
+                       // ### 後の日時の記事を取得 ###
+                       $params = array();
+//                     $queryStr  = 'SELECT * FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr  = 'SELECT distinct(be_serial) FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr .=   'RIGHT JOIN blog_entry_with_category ON be_serial = bw_entry_serial ';
+                       $queryStr .=   'WHERE be_deleted = false ';     // 削除されていない
+                       $queryStr .=     'AND be_language_id = ? ';     $params[] = $langId;
+                       $queryStr .=     'AND ? < be_regist_dt '; $params[] = $regDate;
+                       $queryStr .=     'AND bw_category_id = ? ';     $params[] = $categoryId;// 記事カテゴリー
+                       
+                       // 検索条件を付加
+                       list($condQueryStr, $condParams) = $this->_createSearchCondition(null, null, null, $blogId, $userId);
+                       $queryStr .= $condQueryStr;
+                       $params = array_merge($params, $condParams);
+                       
+                       // シリアル番号を取得
+                       $serialArray = array();
+                       $ret = $this->selectRecords($queryStr, $params, $serialRows);
+                       if ($ret){
+                               for ($i = 0; $i < count($serialRows); $i++){
+                                       $serialArray[] = $serialRows[$i]['be_serial'];
+                               }
+                       }
+                       $serialStr = implode(',', $serialArray);
+                       if (empty($serialStr)) $serialStr = '0';        // 0レコードのときはダミー値を設定
+       
+                       $queryStr  = 'SELECT * FROM blog_entry LEFT JOIN blog_id ON be_blog_id = bl_id AND bl_deleted = false ';
+                       $queryStr .=   'LEFT JOIN _login_user ON be_regist_user_id = lu_id AND lu_deleted = false ';
+                       $queryStr .=   'WHERE be_serial in (' . $serialStr . ') ';
+                       
+                       $queryStr .=   'ORDER BY be_regist_dt LIMIT 1';// 投稿順
+                       $ret = $this->selectRecord($queryStr, $params, $row);
+                       if ($ret){
+                               $nextRow = $row;
+                               $retStatus = true;
+                       }
+                       
+                       // ### 降順の場合は前後入れ替え ###
+                       if (!empty($order)){
+                               $tmp = $prevRow;
+                               $prevRow = $nextRow;
+                               $nextRow = $tmp;
+                       }
+               }
+               return $retStatus;
+       }
+       /**
         * 検索条件を作成
         *
         * @param timestamp     $startDt                        期間(開始日)
index 2a23cc5..69a6ba2 100644 (file)
@@ -8,9 +8,9 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2012 Magic3 Project.
+ * @copyright  Copyright 2006-2015 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
- * @version    SVN: $Id: blog_related_categoryWidgetContainer.php 5268 2012-10-04 11:33:49Z fishbone $
+ * @version    SVN: $Id$
  * @link       http://www.magic3.org
  */
 require_once($gEnvManager->getContainerPath() . '/baseWidgetContainer.php');
@@ -94,7 +94,7 @@ class blog_related_categoryWidgetContainer extends BaseWidgetContainer
        {
                // リンク先の作成
                $name = $fetchedRow['bc_name'];
-               $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, 'act=view&' . M3_REQUEST_PARAM_CATEGORY_ID . '=' . $fetchedRow['bc_id']);
+               $linkUrl = $this->createCmdUrlToWidget(self::TARGET_WIDGET, M3_REQUEST_PARAM_CATEGORY_ID . '=' . $fetchedRow['bc_id']);
                $row = array(
                        'link_url' => $this->convertUrlToHtmlEntity($this->getUrl($linkUrl, true/*リンク用*/)),             // リンク
                        'name' => $this->convertToDispString($name)                     // タイトル