From 5010ab8b4e9e90c51fb51c6e8ba231920f826e08 Mon Sep 17 00:00:00 2001 From: tjs-mochizuki Date: Fri, 18 Jul 2025 10:39:37 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B1=8E=E7=94=A8=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E3=83=99=E3=83=BC=E3=82=B9=E3=81=AE=E4=B8=80=E8=A6=A7?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E5=87=A6=E7=90=86=E3=81=AE=E4=BD=99=E5=88=86?= =?UTF-8?q?=E3=81=AA=E3=83=87=E3=83=BC=E3=82=BF=E5=8F=96=E5=BE=97=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MultidatabaseContentsController.php | 6 ++-- Controller/MultidatabasesAppController.php | 30 +++++-------------- Model/MultidatabaseContentSearch.php | 7 +++-- Model/MultidatabaseMetadata.php | 8 ++++- 4 files changed, 21 insertions(+), 30 deletions(-) diff --git a/Controller/MultidatabaseContentsController.php b/Controller/MultidatabaseContentsController.php index ec8627a..6e0543d 100644 --- a/Controller/MultidatabaseContentsController.php +++ b/Controller/MultidatabaseContentsController.php @@ -130,13 +130,11 @@ public function beforeFilter() { return false; } - $frameSetting = $this->MultidatabaseFrameSetting->getMultidatabaseFrameSetting(true); - $this->set('multidatabaseFrameSetting', $frameSetting['MultidatabaseFrameSetting']); - // ゲストアクセスOKのアクションを設定 $this->Auth->allow('index', 'detail', 'search'); $this->_prepare(); + $this->set('multidatabaseFrameSetting', $this->_frameSetting['MultidatabaseFrameSetting']); } /** @@ -503,7 +501,7 @@ private function __condSortOrder($sortCol = '') { */ private function __condSelect() { $pagerNamed = $this->Paginator->Controller->params->named; - return $this->MultidatabaseContentSearch->getCondSelect($pagerNamed); + return $this->MultidatabaseContentSearch->getCondSelect($pagerNamed, $this->_metadata); } /** diff --git a/Controller/MultidatabasesAppController.php b/Controller/MultidatabasesAppController.php index 0b5b790..4eb5eb6 100644 --- a/Controller/MultidatabasesAppController.php +++ b/Controller/MultidatabasesAppController.php @@ -72,25 +72,10 @@ class MultidatabasesAppController extends AppController { * @return void */ protected function _prepare() { - $this->_setupMultidatabaseTitle(); $this->_initMultidatabase(['multidatabaseSetting']); $this->_loadFrameSetting(); } -/** - * ブロック名を汎用DBタイトルとしてセットする - * - * @return void - */ - protected function _setupMultidatabaseTitle() { - $this->loadModel('Blocks.Block'); - $block = $this->Block->find('first', [ - 'recursive' => 0, - 'conditions' => ['Block.id' => Current::read('Block.id')], - ]); - $this->_multidatabaseTitle = $block['BlocksLanguage']['name']; - } - /** * 初期設定 * @@ -103,24 +88,23 @@ protected function _initMultidatabase() { } // メタデータを取得 - if (!$metadata = $this->MultidatabaseMetadata->getEditMetadatas( + if (!$metadatas = $this->MultidatabaseMetadata->getEditMetadatas( $multidatabase['Multidatabase']['id']) ) { return $this->throwBadRequest(); } - if (!$metadataGroups = $this->MultidatabaseMetadata->getMetadataGroups( - $multidatabase['Multidatabase']['id']) - ) { - return $this->throwBadRequest(); + foreach ($metadatas as $metadata) { + $metadataGroups[$metadata['position']][$metadata['rank']] = $metadata; } $this->_multidatabaseTitle = $multidatabase['Multidatabase']['name']; $this->set('multidatabase', $multidatabase); - $this->set('multidatabaseMetadata', $metadata); + $this->set('multidatabaseMetadata', $metadatas); $this->set('multidatabaseMetadataGroups', $metadataGroups); - if (!$multidatabaseSetting = $this->MultidatabaseSetting->getMultidatabaseSetting()) { + $multidatabaseSetting['MultidatabaseSetting'] = $multidatabase['MultidatabaseSetting']; + if (!$multidatabaseSetting) { $multidatabaseSetting = $this->MultidatabaseSetting->createBlockSetting(); $multidatabaseSetting['MultidatabaseSetting']['multidatabase_key'] = null; } else { @@ -129,7 +113,7 @@ protected function _initMultidatabase() { } $this->_multidatabase = $multidatabase; - $this->_metadata = $metadata; + $this->_metadata = $metadatas; $this->_setting = $multidatabaseSetting; $this->set('multidatabaseSetting', $multidatabaseSetting['MultidatabaseSetting']); $this->set('userId', (int)$this->Auth->user('id')); diff --git a/Model/MultidatabaseContentSearch.php b/Model/MultidatabaseContentSearch.php index 7cfc2a7..138e1b3 100644 --- a/Model/MultidatabaseContentSearch.php +++ b/Model/MultidatabaseContentSearch.php @@ -101,9 +101,10 @@ public function getSearchConds($query = []) { * 複数選択、単一選択の絞込条件出力 * * @param array $values 値 + * @param array $metadatas メタデータ * @return array */ - public function getCondSelect($values = []) { + public function getCondSelect($values = [], $metadatas = []) { $this->loadModels([ 'MultidatabaseMetadata' => 'Multidatabases.MultidatabaseMetadata', 'MultidatabaseContentSearchCond' => 'Multidatabases.MultidatabaseContentSearchCond', @@ -113,7 +114,9 @@ public function getCondSelect($values = []) { return []; } - $metadatas = $this->MultidatabaseMetadata->getEditMetadatas(); + if (empty($metadatas)) { + $metadatas = $this->MultidatabaseMetadata->getEditMetadatas(); + } $result = []; $valueKey = null; diff --git a/Model/MultidatabaseMetadata.php b/Model/MultidatabaseMetadata.php index e1f4a0b..d2f9260 100644 --- a/Model/MultidatabaseMetadata.php +++ b/Model/MultidatabaseMetadata.php @@ -222,7 +222,13 @@ public function getMetadatasColNo($multidatabaseId = 0) { */ public function getMetadatas($multidatabaseId = 0, $extraConditions = []) { if (empty($multidatabaseId)) { - if (! $multidatabase = $this->Multidatabase->getMultidatabase()) { + $multidatabase = $this->Multidatabase->find('first', [ + 'recursive' => 0, + 'fields' => 'Multidatabase.id', + 'conditions' => $this->Multidatabase->getBlockConditionById(), + ]); + + if (!$multidatabase) { return false; } $multidatabaseId = $multidatabase['Multidatabase']['id']; From 8d43ee01265b8599c5c5459f1ca4c4992f79a89a Mon Sep 17 00:00:00 2001 From: "G01\\fj2532ir" Date: Mon, 4 Aug 2025 09:37:04 +0900 Subject: [PATCH 2/5] =?UTF-8?q?callback=E3=82=92=E5=AE=9F=E8=A1=8C?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/MultidatabaseFrameSetting.php | 1 + Model/MultidatabaseMetadata.php | 1 + 2 files changed, 2 insertions(+) diff --git a/Model/MultidatabaseFrameSetting.php b/Model/MultidatabaseFrameSetting.php index 36d42dd..a2229c5 100644 --- a/Model/MultidatabaseFrameSetting.php +++ b/Model/MultidatabaseFrameSetting.php @@ -80,6 +80,7 @@ public function getMultidatabaseFrameSetting() { $frameSetting = $this->find('first', [ 'recursive' => -1, 'conditions' => $conditions, + 'callbacks' => false, ] ); diff --git a/Model/MultidatabaseMetadata.php b/Model/MultidatabaseMetadata.php index d2f9260..83034b0 100644 --- a/Model/MultidatabaseMetadata.php +++ b/Model/MultidatabaseMetadata.php @@ -226,6 +226,7 @@ public function getMetadatas($multidatabaseId = 0, $extraConditions = []) { 'recursive' => 0, 'fields' => 'Multidatabase.id', 'conditions' => $this->Multidatabase->getBlockConditionById(), + 'callbacks' => false, ]); if (!$multidatabase) { From 8178aa1013c0fa87165d8330d2f0c1de62f96dd4 Mon Sep 17 00:00:00 2001 From: "G01\\fj2532ir" Date: Mon, 4 Aug 2025 13:47:00 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=80=E8=A6=A7=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E6=99=82=E3=81=AB=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=82=AB?= =?UTF-8?q?=E3=83=A9=E3=83=A0=E3=82=92=E5=88=B6=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MultidatabaseContentsController.php | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Controller/MultidatabaseContentsController.php b/Controller/MultidatabaseContentsController.php index 6e0543d..c67edcc 100644 --- a/Controller/MultidatabaseContentsController.php +++ b/Controller/MultidatabaseContentsController.php @@ -544,12 +544,39 @@ private function __list($extraConditions = []) { ); } + $field = [ + 'Block.*', + 'Like.*', + 'LikesUser.*', + 'MultidatabaseContent.id', + 'MultidatabaseContent.key', + 'MultidatabaseContent.multidatabase_key', + 'MultidatabaseContent.multidatabase_id', + 'MultidatabaseContent.language_id', + 'MultidatabaseContent.block_id', + 'MultidatabaseContent.title_icon', + 'MultidatabaseContent.status', + 'MultidatabaseContent.is_active', + 'MultidatabaseContent.is_latest', + 'MultidatabaseContent.created_user', + 'MultidatabaseContent.created', + 'MultidatabaseContent.modified_user', + 'MultidatabaseContent.modified', + ]; + + foreach($this->_metadata as $metadata) { + if($metadata['is_visible_list']) { + $field[] = 'MultidatabaseContent.' . 'value' . $metadata['col_no']; + } + } + $this->Paginator->settings = array_merge( $this->Paginator->settings, [ 'conditions' => $conditions, 'limit' => $this->_frameSetting['MultidatabaseFrameSetting']['content_per_page'], - 'order' => $this->__condSortOrder() + 'order' => $this->__condSortOrder(), + 'fields' => $field ] ); From 8fd658cca18e39c5c534f01daa25f0b684eb125a Mon Sep 17 00:00:00 2001 From: "G01\\fj2532ir" Date: Tue, 5 Aug 2025 16:58:44 +0900 Subject: [PATCH 4/5] =?UTF-8?q?phpcs=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controller/MultidatabaseContentsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Controller/MultidatabaseContentsController.php b/Controller/MultidatabaseContentsController.php index c67edcc..c65a707 100644 --- a/Controller/MultidatabaseContentsController.php +++ b/Controller/MultidatabaseContentsController.php @@ -564,8 +564,8 @@ private function __list($extraConditions = []) { 'MultidatabaseContent.modified', ]; - foreach($this->_metadata as $metadata) { - if($metadata['is_visible_list']) { + foreach ($this->_metadata as $metadata) { + if ($metadata['is_visible_list']) { $field[] = 'MultidatabaseContent.' . 'value' . $metadata['col_no']; } } From 6960100164f30af1f9626da34eb19235654f6a3e Mon Sep 17 00:00:00 2001 From: "G01\\fj2532ir" Date: Tue, 19 Aug 2025 14:35:10 +0900 Subject: [PATCH 5/5] =?UTF-8?q?multidatabase=5Fcontents=E3=81=AB=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=87=E3=83=83=E3=82=AF=E3=82=B9=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/Migration/1753253996_add_index.php | 70 +++++++++++++++++++++++ Config/Schema/schema.php | 4 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 Config/Migration/1753253996_add_index.php diff --git a/Config/Migration/1753253996_add_index.php b/Config/Migration/1753253996_add_index.php new file mode 100644 index 0000000..caaebf8 --- /dev/null +++ b/Config/Migration/1753253996_add_index.php @@ -0,0 +1,70 @@ + + * @link http://www.netcommons.org NetCommons Project + * @license http://www.netcommons.org/license.txt NetCommons License + * @copyright Copyright 2014, NetCommons Project + */ + +/** + * AddIndex Migration + * + * @author Hiroki Mochizuki + * @package NetCommons\Multidatabases\Config\Migration + * + */ +class AddIndex extends CakeMigration { + +/** + * Migration description + * + * @var string + */ + public $description = 'add_index'; + +/** + * Actions to be performed + * + * @var array $migration + */ + public $migration = array( + 'up' => array( + 'create_field' => array( + 'multidatabase_contents' => array( + 'indexes' => array( + 'key' => array('column' => 'key', 'unique' => 0), + 'block_id' => array('column' => 'block_id', 'unique' => 0), + ), + ), + ), + ), + 'down' => array( + 'drop_field' => array( + 'multidatabase_contents' => array('indexes' => array('key', 'block_id')), + ), + ), + ); + +/** + * Before migration callback + * + * @param string $direction Direction of migration process (up or down) + * @return bool Should process continue + */ + public function before($direction) { + return true; + } + +/** + * After migration callback + * + * @param string $direction Direction of migration process (up or down) + * @return bool Should process continue + */ + public function after($direction) { + return true; + } +} diff --git a/Config/Schema/schema.php b/Config/Schema/schema.php index a67f3c0..f17577d 100644 --- a/Config/Schema/schema.php +++ b/Config/Schema/schema.php @@ -161,7 +161,9 @@ public function after($event = array()) { 'modified_user' => array('type' => 'integer', 'null' => true, 'default' => '0', 'unsigned' => false, 'comment' => '更新者'), 'modified' => array('type' => 'datetime', 'null' => true, 'default' => null, 'comment' => '更新日時'), 'indexes' => array( - 'PRIMARY' => array('column' => 'id', 'unique' => 1) + 'PRIMARY' => array('column' => 'id', 'unique' => 1), + 'key' => array('column' => 'key', 'unique' => 0), + 'block_id' => array('column' => 'block_id', 'unique' => 0) ), 'tableParameters' => array('charset' => 'utf8', 'collate' => 'utf8_general_ci', 'engine' => 'InnoDB') );