From f400662f1c652947afac6fe31d2cfd78df732ab9 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 10:28:54 +0900 Subject: [PATCH 01/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E3=83=87=E3=83=BC=E3=82=BF=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E5=85=B1=E9=80=9A=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit \Nc2ToNc3MultidatabaseBehavior::_makeMailSetting \Nc2ToNc3MultidatabaseBehavior::_makePermissiondata をコピーして一部修正 https://github.com/NetCommons3/NetCommons3/issues/1082 --- .../Nc2ToNc3BlockRolePermissionBehavior.php | 194 ++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php diff --git a/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php b/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php new file mode 100644 index 0000000..cbbf4ae --- /dev/null +++ b/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php @@ -0,0 +1,194 @@ + + * @package Researchmap\Nc2ToNc3 + */ +class Nc2ToNc3BlockRolePermissionBehavior extends Nc2ToNc3BaseBehavior { + +/** + * __getRolesRoomIdList + * + * @param string $nc3RoomId ルームID + * @return array + * @throws CakeException + */ + private function __getRolesRoomIdList($nc3RoomId) { + $RolesRoom = ClassRegistry::init('Rooms.RolesRoom'); + $rolesRooms = $RolesRoom->find('all', [ + 'conditions' => [ + 'RolesRoom.room_id' => $nc3RoomId + ], + 'fields' => ['RolesRoom.id', 'RolesRoom.role_key'], + 'recursive' => -1 + ]); + $rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id'); + + return $rolesRoomIdByRoleKey; + } + +/** + * __getBorderRole + * + * @param int $nc2AuthorityCode NC2での権限 + * @return string + */ + private function __getBorderRole($nc2AuthorityCode) { + $borderLine = null; + switch ($nc2AuthorityCode) { + case 4: + // NC2主担以上→Nc3ルーム管理者以上 + $borderLine = 'room_administrator'; + break; + case 3: + //NC2モデレータ以上→NC3編集者以上 + $borderLine = 'editor'; + break; + case 2: + // NC2一般以上→NC3一般以上 + $borderLine = 'general_user'; + break; + case 1: + // NC2ゲスト→NC3ゲスト + $borderLine = 'visitor'; + break; + } + + return $borderLine; + } + +/** + * メール権限配列の作成 + * + * @param Model $model Model + * @param int $nc2AuthorityCode NC2でのメール権限 + * @param string $nc3RoomId ルームID + * @return array + * @throws CakeException + */ + public function makeMailPermissionData(Model $model, $nc2AuthorityCode, $nc3RoomId) { + $rolesRoomIdByRoleKey = $this->__getRolesRoomIdList($nc3RoomId); + $borderLine = $this->__getBorderRole($nc2AuthorityCode); + + // Roleをレベル低い順に取得 + $RoomRole = ClassRegistry::init('Rooms.RoomRole'); + $roomRoles = $RoomRole->find('all', ['order' => 'level ASC']); + $receivable = 0; + $data = []; + foreach ($roomRoles as $roomRole) { + $roleKey = $roomRole['RoomRole']['role_key']; + if ($roleKey == $borderLine) { + $receivable = 1; + } + + if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { + $data['BlockRolePermission']['mail_content_receivable'][$roleKey] = [ + 'id' => null, + 'block_key' => null, + 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + 'value' => $receivable, + 'permission' => 'mail_content_receivable' + ]; + } + + } + return $data; + } + +/** + * コンテンツ権限配列の作成 + * + * @param Model $model Model + * @param int $nc2AuthorityCode NC2での投稿権限 + * @param int $nc3RoomId ルームID + * @return mixed + * @throws CakeException + */ + public function makeContentPermissionData(Model $model, $nc2AuthorityCode, $nc3RoomId) { + $rolesRoomIdByRoleKey = $this->__getRolesRoomIdList($nc3RoomId); + $borderLine = $this->__getBorderRole($nc2AuthorityCode); + if ($borderLine === 'visitor') { + $borderLine = null; + } + + // Roleをレベル低い順に取得 + $RoomRole = ClassRegistry::init('Rooms.RoomRole'); + $roomRoles = $RoomRole->find('all', ['order' => 'level ASC']); + $creatable = 0; + $commentPublishable = 0; + $commentPublishableBorderLine = 'chief_editor'; // NC3のデフォルトにしとく + $data = []; + foreach ($roomRoles as $roomRole) { + $roleKey = $roomRole['RoomRole']['role_key']; + if ($roleKey == $borderLine) { + $creatable = 1; + } + if ($roleKey == $commentPublishableBorderLine) { + $commentPublishable = 1; + } + + // content_publishable はデータとして挿入しなくなったのでコメントアウト + //// content_publishableはルーム管理, visitor のレコードはつくらない + //if (!in_array($roleKey, ['room_administrator', 'visitor'])){ + // $data['BlockRolePermission']['content_publishable'][$roleKey] = [ + // 'id' => null, + // 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + // 'value' => 0, + // 'permission' => 'content_publishable' + // ]; + //} + + // content_creatableはgeneral_userだけ + if ($roleKey == 'general_user') { + $data['BlockRolePermission']['content_creatable'][$roleKey] = [ + 'id' => null, + 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + 'value' => $creatable, + 'permission' => 'content_creatable' + ]; + } + + // コメント投稿権限とコメント承認権限はroom_administrator, chief_editor以外を設定する + if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { + $data['BlockRolePermission']['content_comment_publishable'][$roleKey] = [ + 'id' => null, + 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + 'value' => $commentPublishable, + 'permission' => 'content_comment_publishable' + ]; + + $data['BlockRolePermission']['content_comment_creatable'][$roleKey] = [ + 'id' => null, + 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + 'value' => 1, + 'permission' => 'content_comment_creatable' + ]; + } + + } + /* + * roles_room_id, block_key, permission + */ + //$data['BlockRolePermission']['content_comment_creatable']['visitor'] = [ + // 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], + // 'value' => 0, + // 'permission' => 'content_comment_creatable' + //]; + return $data; + } + +} From 9888b185c7576fb1b4e1ecde455e035a76bb28d2 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 10:29:32 +0900 Subject: [PATCH 02/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3BlogBehavior.php | 40 ++++++++++++++++++++--- Model/Nc2ToNc3Blog.php | 43 ++++++++++++++++++++++++- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3BlogBehavior.php b/Model/Behavior/Nc2ToNc3BlogBehavior.php index a71f394..3e7e3ac 100644 --- a/Model/Behavior/Nc2ToNc3BlogBehavior.php +++ b/Model/Behavior/Nc2ToNc3BlogBehavior.php @@ -94,6 +94,20 @@ public function generateNc3BlogData(Model $model, $nc2Journal) { return []; } + // use_workflowはRoom.need_approval = 0のときに変更可能。need_approval=1なら1で固定 + $Room = ClassRegistry::init('Rooms.Room'); + $room = $Room->findById($roomMap['Room']['id'], 'need_approval', null, -1); + if ($room['Room']['need_approval']) { + $useWorkflow = 1; + $useCommentApproval = 1; + } else { + $useWorkflow = $nc2Journal['Nc2Journal']['agree_flag']; + $useCommentApproval = $nc2Journal['Nc2Journal']['comment_agree_flag']; + } + if ($useWorkflow === 1) { + $useCommentApproval = 1; + } + /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Journal['Nc2Journal']); @@ -128,14 +142,28 @@ public function generateNc3BlogData(Model $model, $nc2Journal) { 'use_like' => $nc2Journal['Nc2Journal']['vote_flag'], 'use_unlike' => '0', 'use_comment' => $nc2Journal['Nc2Journal']['comment_flag'], - // NC3からルームに新しい設定「コンテンツの承認機能」=コンテンツに承認が必要が追加されたため、 - // 投稿承認=ON(use_workflow)、コメント承認=ON(use_comment_approval)で移行する。 - 'use_comment_approval' => '1', - 'use_workflow' => '1', + 'use_comment_approval' => $useCommentApproval, + 'use_workflow' => $useWorkflow, 'use_sns' => $nc2Journal['Nc2Journal']['sns_flag'], 'created_user' => $nc3CreatedUser, 'created' => $nc3Created, ], + 'MailSetting' => [ + 'plugin_key' => 'blogs', + 'block_key' => null, + 'is_mail_send' => $nc2Journal['Nc2Journal']['mail_flag'], + 'is_mail_send_approval' => $nc2Journal['Nc2Journal']['agree_mail_flag'], + ], + 'MailSettingFixedPhrase' => [ + [ + 'language_id' => $this->getLanguageIdFromNc2($model), + 'plugin_key' => 'blogs', + 'block_key' => null, + 'type_key' => 'contents', + 'mail_fixed_phrase_subject' => $nc2Journal['Nc2Journal']['mail_subject'], + 'mail_fixed_phrase_body' => $nc2Journal['Nc2Journal']['mail_body'], + ], + ], ]; if ($nc3Frame) { // フレームがあったらセット @@ -144,6 +172,10 @@ public function generateNc3BlogData(Model $model, $nc2Journal) { ]; } + // 権限データ設定 + $data = Hash::merge($data, $model->makeContentPermissionData($nc2Journal['Nc2Journal']['post_authority'], $nc3RoomId)); + $data = Hash::merge($data, $model->makeMailPermissionData($nc2Journal['Nc2Journal']['mail_authority'], $nc3RoomId)); + return $data; } diff --git a/Model/Nc2ToNc3Blog.php b/Model/Nc2ToNc3Blog.php index e27969f..374cc9f 100644 --- a/Model/Nc2ToNc3Blog.php +++ b/Model/Nc2ToNc3Blog.php @@ -48,6 +48,7 @@ class Nc2ToNc3Blog extends Nc2ToNc3AppModel { public $actsAs = [ 'Nc2ToNc3.Nc2ToNc3Blog', 'Nc2ToNc3.Nc2ToNc3Wysiwyg', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', ]; /** @@ -123,6 +124,8 @@ private function __saveNc3BlogFromNc2($nc2Journals) { $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Block = ClassRegistry::init('Blocks.Block'); $Topic = ClassRegistry::init('Topics.Topic'); + $BlogSetting = ClassRegistry::init('Blogs.BlogSetting'); + $MailSetting = ClassRegistry::init('Mails.MailSetting'); foreach ($nc2Journals as $nc2Journal) { $Blog->begin(); @@ -147,6 +150,8 @@ private function __saveNc3BlogFromNc2($nc2Journals) { $Blog->create(); $Block->create(); $Topic->create(); + $BlogSetting->create(); + $MailSetting->create(); if (!$Blog->saveBlog($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback @@ -161,6 +166,41 @@ private function __saveNc3BlogFromNc2($nc2Journals) { continue; } + $nc3Blog = $Blog->findById($Blog->id, 'block_id', null, -1); + $block = $Block->findById($nc3Blog['Blog']['block_id'], null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$BlogSetting->saveBlogSetting($data)) { + $message = $this->getLogArgument($data) . "\n" . + var_export($BlogSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Blog->rollback(); + + continue; + } + + // MailSetting + $data['MailSetting']['block_key'] = $block['Block']['key']; + $data['MailSettingFixedPhrase'][0]['block_key'] = $block['Block']['key']; + + // メールの権限については先に権限設定保存じに保存できちゃってるので、ここでは保存させない + unset($data['BlockRolePermission']); + if (!$MailSetting->saveMailSettingAndFixedPhrase($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback + $MailSetting->rollback(); + + $message = $this->getLogArgument($data) . "\n" . + var_export($MailSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Blog->rollback(); + continue; + } + unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); $nc2JournalId = $nc2Journal['Nc2Journal']['journal_id']; @@ -169,7 +209,6 @@ private function __saveNc3BlogFromNc2($nc2Journals) { ]; $this->saveMap('Blog', $idMap); - $nc3Blog = $Blog->findById($Blog->id, 'block_id', null, -1); if (!$Nc2ToNc3Category->saveCategoryMap($nc2CategoryList, $nc3Blog['Blog']['block_id'])) { // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。var_exportは大丈夫らしい。。。 // @see https://phpmd.org/rules/design.html @@ -187,6 +226,8 @@ private function __saveNc3BlogFromNc2($nc2Journals) { $Blog->rollback($ex); throw $ex; } + + Current::remove('Block'); } Current::remove('Room.id'); From eb93f0acc2ae5aa6bad7851c1b841fbb48706f38 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 10:41:20 +0900 Subject: [PATCH 03/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3BbsBehavior.php | 21 +++++++++++- Model/Nc2ToNc3Bbs.php | 47 +++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3BbsBehavior.php b/Model/Behavior/Nc2ToNc3BbsBehavior.php index 5a30913..7243384 100644 --- a/Model/Behavior/Nc2ToNc3BbsBehavior.php +++ b/Model/Behavior/Nc2ToNc3BbsBehavior.php @@ -126,7 +126,22 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room 'use_comment' => $nc2Bbs['Nc2Bb']['child_flag'], // 'use_comment_approval' => $nc2Bbs['Nc2Bb']['sns_flag'], // 'use_workflow' => $nc2Bbs['Nc2Bb']['sns_flag'], - ] + ], + 'MailSetting' => [ + 'plugin_key' => 'bbses', + 'block_key' => null, + 'is_mail_send' => $nc2Bbs['Nc2Bb']['mail_send'], + ], + 'MailSettingFixedPhrase' => [ + [ + 'language_id' => $this->getLanguageIdFromNc2($model), + 'plugin_key' => 'bbses', + 'block_key' => null, + 'type_key' => 'contents', + 'mail_fixed_phrase_subject' => $nc2Bbs['Nc2Bb']['mail_subject'], + 'mail_fixed_phrase_body' =>$nc2Bbs['Nc2Bb']['mail_body'], + ], + ], ]; if ($frameMap) { $data['Frame'] = [ @@ -134,6 +149,10 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room ]; } + // 権限データ設定 + $data = Hash::merge($data, $model->makeContentPermissionData($nc2Bbs['Nc2Bb']['topic_authority'], $nc3RoomId)); + $data = Hash::merge($data, $model->makeMailPermissionData($nc2Bbs['Nc2Bb']['mail_authority'], $nc3RoomId)); + return $data; } diff --git a/Model/Nc2ToNc3Bbs.php b/Model/Nc2ToNc3Bbs.php index 18de65e..f9a24fa 100644 --- a/Model/Nc2ToNc3Bbs.php +++ b/Model/Nc2ToNc3Bbs.php @@ -46,6 +46,7 @@ class Nc2ToNc3Bbs extends Nc2ToNc3AppModel { public $actsAs = [ 'Nc2ToNc3.Nc2ToNc3Bbs', 'Nc2ToNc3.Nc2ToNc3Wysiwyg', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', ]; /** @@ -118,6 +119,8 @@ private function __saveNc3BbsFromNc2($nc2Bbses) { $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Block = ClassRegistry::init('Blocks.Block'); $Topic = ClassRegistry::init('Topics.Topic'); + $BbsSetting = ClassRegistry::init('Bbses.BbsSetting'); + $MailSetting = ClassRegistry::init('Mails.MailSetting'); /* @see Nc2ToNc3Map::getMapIdList() */ $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); @@ -164,6 +167,8 @@ private function __saveNc3BbsFromNc2($nc2Bbses) { $Bbs->create(); $Block->create(); $Topic->create(); + $BbsSetting->create(); + $MailSetting->create(); if (!$Bbs->saveBbs($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 @@ -181,6 +186,45 @@ private function __saveNc3BbsFromNc2($nc2Bbses) { continue; } + $bbs = $Bbs->findById($Bbs->id, 'block_id', null, -1); + $block = $Block->findById($bbs['Bbs']['block_id'], null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$BbsSetting->saveBbsSetting($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 + // ここでrollback + $BbsSetting->rollback(); + + $message = $this->getLogArgument($data) . "\n" . + var_export($BbsSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Bbs->rollback(); + + continue; + } + + // MailSetting + $data['MailSetting']['block_key'] = $block['Block']['key']; + $data['MailSettingFixedPhrase'][0]['block_key'] = $block['Block']['key']; + + // メールの権限については先に権限設定保存じに保存できちゃってるので、ここでは保存させない + unset($data['BlockRolePermission']); + if (!$MailSetting->saveMailSettingAndFixedPhrase($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback + $MailSetting->rollback(); + + $message = $this->getLogArgument($data) . "\n" . + var_export($MailSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Bbs->rollback(); + continue; + } + unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); $nc2BbsId = $nc2Bbs['Nc2Bb']['bbs_id']; @@ -196,8 +240,9 @@ private function __saveNc3BbsFromNc2($nc2Bbses) { $Bbs->rollback($ex); throw $ex; } + + Current::remove('Block'); } - Current::remove('Block.id'); Current::remove('Room.id'); Current::remove('Plugin.key'); From e043e174c796827febbecfd39137504c0281f0e7 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 13:20:04 +0900 Subject: [PATCH 04/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3CabinetBehavior.php | 8 ++++++- Model/Nc2ToNc3Cabinet.php | 26 ++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CabinetBehavior.php b/Model/Behavior/Nc2ToNc3CabinetBehavior.php index 1183731..c740b1f 100644 --- a/Model/Behavior/Nc2ToNc3CabinetBehavior.php +++ b/Model/Behavior/Nc2ToNc3CabinetBehavior.php @@ -88,7 +88,7 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'], ], 'CabinetSetting' => [ - 'use_workflow' => '1', + 'id' => '', ], 'BlocksLanguage' => [ 'language_id' => '', @@ -102,6 +102,12 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi 'convert_fields' => 'Block.publish_start,Block.publish_end' ] ]; + + // 権限データ設定 + $data = Hash::merge($data, $model->makeContentPermissionData( + $nc2CabinetManage['Nc2CabinetManage']['add_authority_id'], + $frameMap['Frame']['room_id'])); + return $data; } diff --git a/Model/Nc2ToNc3Cabinet.php b/Model/Nc2ToNc3Cabinet.php index 3fc01c6..7ab851e 100644 --- a/Model/Nc2ToNc3Cabinet.php +++ b/Model/Nc2ToNc3Cabinet.php @@ -43,7 +43,10 @@ class Nc2ToNc3Cabinet extends Nc2ToNc3AppModel { * @var array * @link http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors */ - public $actsAs = ['Nc2ToNc3.Nc2ToNc3Cabinet']; + public $actsAs = [ + 'Nc2ToNc3.Nc2ToNc3Cabinet', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', + ]; /** * Migration method. @@ -108,6 +111,7 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Block = ClassRegistry::init('Blocks.Block'); + $CabinetSetting = ClassRegistry::init('Cabinets.CabinetSetting'); foreach ($nc2CabinetManages as $nc2CabinetManage) { @@ -138,6 +142,7 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { $BlocksLanguage->create(); $Cabinet->create(); $Block->create(); + $CabinetSetting->create(); Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; @@ -160,8 +165,25 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); - $nc2CabinetId = $nc2CabinetManage['Nc2CabinetManage']['cabinet_id']; + $cabinet = $Cabinet->findById($Cabinet->id, 'block_id', null, -1); + $block = $Block->findById($cabinet['Cabinet']['block_id'], null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$CabinetSetting->saveCabinetSetting($data)) { + $message = $this->getLogArgument($data) . "\n" . + var_export($CabinetSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Cabinet->rollback(); + continue; + } + + $nc2CabinetId = $nc2CabinetManage['Nc2CabinetManage']['cabinet_id']; $idMap = [ $nc2CabinetId => $Cabinet->id ]; From 3db63d2c630d2f3edeffb2b5010f80f9de83d0b7 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 14:00:48 +0900 Subject: [PATCH 05/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3CabinetBehavior.php | 2 ++ Model/Nc2ToNc3Cabinet.php | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CabinetBehavior.php b/Model/Behavior/Nc2ToNc3CabinetBehavior.php index c740b1f..de9c747 100644 --- a/Model/Behavior/Nc2ToNc3CabinetBehavior.php +++ b/Model/Behavior/Nc2ToNc3CabinetBehavior.php @@ -107,6 +107,8 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi $data = Hash::merge($data, $model->makeContentPermissionData( $nc2CabinetManage['Nc2CabinetManage']['add_authority_id'], $frameMap['Frame']['room_id'])); + unset($data['BlockRolePermission']['content_comment_publishable'], + $data['BlockRolePermission']['content_comment_creatable']); return $data; } diff --git a/Model/Nc2ToNc3Cabinet.php b/Model/Nc2ToNc3Cabinet.php index 7ab851e..ffc9f76 100644 --- a/Model/Nc2ToNc3Cabinet.php +++ b/Model/Nc2ToNc3Cabinet.php @@ -163,8 +163,6 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { continue; } - unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); - $cabinet = $Cabinet->findById($Cabinet->id, 'block_id', null, -1); $block = $Block->findById($cabinet['Cabinet']['block_id'], null, null, -1); Current::write('Block', $block['Block']); @@ -183,6 +181,8 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { continue; } + unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); + $nc2CabinetId = $nc2CabinetManage['Nc2CabinetManage']['cabinet_id']; $idMap = [ $nc2CabinetId => $Cabinet->id @@ -196,6 +196,7 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { $Cabinet->rollback($ex); throw $ex; } + Current::remove('Block'); } Current::remove('Room.id'); From c88a25b3c5689ca3f6a3b7c4496ed95bbce6c6cb Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 14:32:14 +0900 Subject: [PATCH 06/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3FaqBehavior.php | 8 ++++++++ Model/Nc2ToNc3Faq.php | 28 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Model/Behavior/Nc2ToNc3FaqBehavior.php b/Model/Behavior/Nc2ToNc3FaqBehavior.php index 396736a..783d288 100644 --- a/Model/Behavior/Nc2ToNc3FaqBehavior.php +++ b/Model/Behavior/Nc2ToNc3FaqBehavior.php @@ -85,6 +85,14 @@ public function generateNc3FaqData(Model $model, $frameMap, $nc2Faq) { 'plugin_key' => 'faqs', ]; + // 権限データ設定 + $data['FaqSetting'] = ['id' => '']; + $data = Hash::merge($data, $model->makeContentPermissionData( + $nc2Faq['Nc2Faq']['faq_authority'], + $frameMap['Frame']['room_id'])); + unset($data['BlockRolePermission']['content_comment_publishable'], + $data['BlockRolePermission']['content_comment_creatable']); + return $data; } diff --git a/Model/Nc2ToNc3Faq.php b/Model/Nc2ToNc3Faq.php index 2b55188..f660d7b 100644 --- a/Model/Nc2ToNc3Faq.php +++ b/Model/Nc2ToNc3Faq.php @@ -52,6 +52,7 @@ class Nc2ToNc3Faq extends Nc2ToNc3AppModel { public $actsAs = [ 'Nc2ToNc3.Nc2ToNc3Faq', 'Nc2ToNc3.Nc2ToNc3Wysiwyg', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', ]; /** @@ -124,6 +125,8 @@ private function __saveFaqFromNc2($nc2Faqs) { $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Nc2ToNc3Category = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Category'); + $Block = ClassRegistry::init('Blocks.Block'); + $FaqSetting = ClassRegistry::init('Faqs.FaqSetting'); foreach ($nc2Faqs as $nc2Faq) { $Faq->begin(); try { @@ -159,6 +162,8 @@ private function __saveFaqFromNc2($nc2Faqs) { $this->writeCurrent($frameMap, 'faqs'); $BlocksLanguage->create(); + $Block->create(); + $FaqSetting->create(); if (!$Faq->saveFaq($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback @@ -172,6 +177,28 @@ private function __saveFaqFromNc2($nc2Faqs) { continue; } + $faq = $Faq->findById($Faq->id, 'block_id', null, -1); + $block = $Block->findById($faq['Faq']['block_id'], null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$FaqSetting->saveFaqSetting($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 + // ここでrollback + $FaqSetting->rollback(); + + $message = $this->getLogArgument($data) . "\n" . + var_export($FaqSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Faq->rollback(); + + continue; + } + // 登録処理で使用しているデータを空に戻す $nc3RoomId = $frameMap['Frame']['room_id']; unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); @@ -199,6 +226,7 @@ private function __saveFaqFromNc2($nc2Faqs) { $Faq->rollback($ex); throw $ex; } + Current::remove('Block'); } $this->removeUseCurrent(); From 9f633062855ad9f20225ea17268306efadb7c9b9 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 16:03:44 +0900 Subject: [PATCH 07/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3LinkBehavior.php | 8 ++++++ Model/Nc2ToNc3Link.php | 35 ++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Model/Behavior/Nc2ToNc3LinkBehavior.php b/Model/Behavior/Nc2ToNc3LinkBehavior.php index 5fafd02..f94440f 100644 --- a/Model/Behavior/Nc2ToNc3LinkBehavior.php +++ b/Model/Behavior/Nc2ToNc3LinkBehavior.php @@ -84,6 +84,14 @@ public function generateNc3LinkBlockData(Model $model, $frameMap, $nc2Linklist, 'use_workflow' => '0', ]; + // 権限データ設定 + $data['LinkSetting'] = ['id' => '']; + $data = Hash::merge($data, $model->makeContentPermissionData( + $nc2Linklist['Nc2Linklist']['link_authority'], + $nc3RoomId)); + unset($data['BlockRolePermission']['content_comment_publishable'], + $data['BlockRolePermission']['content_comment_creatable']); + return $data; } diff --git a/Model/Nc2ToNc3Link.php b/Model/Nc2ToNc3Link.php index 1737f79..d5e1277 100644 --- a/Model/Nc2ToNc3Link.php +++ b/Model/Nc2ToNc3Link.php @@ -55,7 +55,10 @@ class Nc2ToNc3Link extends Nc2ToNc3AppModel { * @var array * @link http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors */ - public $actsAs = ['Nc2ToNc3.Nc2ToNc3Link']; + public $actsAs = [ + 'Nc2ToNc3.Nc2ToNc3Link', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', + ]; /** * Migration method. @@ -123,6 +126,8 @@ private function __saveLinkBlockFromNc2($nc2Linklists) { $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Nc2ToNc3Category = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Category'); + $Block = ClassRegistry::init('Blocks.Block'); + $LinkSetting = ClassRegistry::init('Links.LinkSetting'); /* @see Nc2ToNc3Map::getMapIdList() */ $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); @@ -181,6 +186,8 @@ private function __saveLinkBlockFromNc2($nc2Linklists) { $this->__writeCurrent($frameMap, 'links', $nc3RoomId); $LinkBlock->create(); $BlocksLanguage->create(); + $Block->create(); + $LinkSetting->create(); if (!$LinkBlock->saveLinkBlock($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback @@ -189,6 +196,31 @@ private function __saveLinkBlockFromNc2($nc2Linklists) { $message = $this->getLogArgument($nc2Linklist) . "\n" . var_export($LinkBlock->validationErrors, true); $this->writeMigrationLog($message); + + $LinkBlock->rollback(); + continue; + } + + // LinkBlock::saveLinkBlockで$this->useTableがfalseになっているため、 + // Blockモデルから直接idを取得する + $block = $Block->findById($Block->id, null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$LinkSetting->saveLinkSetting($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 + // ここでrollback + $LinkSetting->rollback(); + + $message = $this->getLogArgument($data) . "\n" . + var_export($LinkSetting->validationErrors, true); + $this->writeMigrationLog($message); + $LinkBlock->rollback(); + continue; } @@ -222,6 +254,7 @@ private function __saveLinkBlockFromNc2($nc2Linklists) { $LinkBlock->rollback($ex); throw $ex; } + Current::remove('Block'); } $this->removeUseCurrent(); From 9dd5431da3210980fb9acb34aeab6fdac9fac5ad Mon Sep 17 00:00:00 2001 From: Withone10 Date: Mon, 27 May 2019 16:10:43 +0900 Subject: [PATCH 08/31] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Link.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Model/Nc2ToNc3Link.php b/Model/Nc2ToNc3Link.php index d5e1277..a083bae 100644 --- a/Model/Nc2ToNc3Link.php +++ b/Model/Nc2ToNc3Link.php @@ -201,8 +201,7 @@ private function __saveLinkBlockFromNc2($nc2Linklists) { continue; } - // LinkBlock::saveLinkBlockで$this->useTableがfalseになっているため、 - // Blockモデルから直接idを取得する + // LinkBlockに対応するテーブルが存在しないためBlockモデルから直接idを取得する $block = $Block->findById($Block->id, null, null, -1); Current::write('Block', $block['Block']); foreach ($data['BlockRolePermission'] as &$permission) { From 48f8604c05ba87c9a41635a51309fd19ba0569bb Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 11:39:46 +0900 Subject: [PATCH 09/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3TaskBehavior.php | 7 +++++++ Model/Nc2ToNc3Task.php | 26 ++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Model/Behavior/Nc2ToNc3TaskBehavior.php b/Model/Behavior/Nc2ToNc3TaskBehavior.php index c98cb8d..5c846aa 100644 --- a/Model/Behavior/Nc2ToNc3TaskBehavior.php +++ b/Model/Behavior/Nc2ToNc3TaskBehavior.php @@ -94,6 +94,13 @@ public function generateNc3TaskData(Model $model, $frameMap, $nc2TodoData) { 'plugin_key' => 'tasks', ]; + // 権限データ設定 + $data = Hash::merge($data, $model->makeContentPermissionData( + $nc2TodoData['Nc2Todo']['task_authority'], + $frameMap['Frame']['room_id'])); + unset($data['BlockRolePermission']['content_comment_publishable'], + $data['BlockRolePermission']['content_comment_creatable']); + return $data; } diff --git a/Model/Nc2ToNc3Task.php b/Model/Nc2ToNc3Task.php index 325106f..1f6a208 100644 --- a/Model/Nc2ToNc3Task.php +++ b/Model/Nc2ToNc3Task.php @@ -47,7 +47,10 @@ class Nc2ToNc3Task extends Nc2ToNc3AppModel { * @var array * @link http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors */ - public $actsAs = ['Nc2ToNc3.Nc2ToNc3Task']; + public $actsAs = [ + 'Nc2ToNc3.Nc2ToNc3Task', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', + ]; /** * Migration method. @@ -112,6 +115,7 @@ private function __saveTaskFromNc2($nc2TodoDatas) { $Block = ClassRegistry::init('Blocks.Block'); $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); $Nc2ToNc3Category = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Category'); + $TaskSetting = ClassRegistry::init('Tasks.TaskSetting'); foreach ($nc2TodoDatas as $nc2TodoData) { $Task->begin(); try { @@ -142,6 +146,7 @@ private function __saveTaskFromNc2($nc2TodoDatas) { $Task->create(false); $Block->create(); $BlocksLanguage->create(); + $TaskSetting->create(); if (!$Task->saveTask($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback @@ -153,6 +158,24 @@ private function __saveTaskFromNc2($nc2TodoDatas) { continue; } + $task = $Task->findById($Task->id, 'block_id', null, -1); + $block = $Block->findById($task['Task']['block_id'], null, null, -1); + Current::write('Block', $block['Block']); + foreach ($data['BlockRolePermission'] as &$permission) { + foreach ($permission as &$role) { + $role['block_key'] = $block['Block']['key']; + } + } + + if (!$TaskSetting->saveTaskSetting($data)) { + $message = $this->getLogArgument($data) . "\n" . + var_export($TaskSetting->validationErrors, true); + $this->writeMigrationLog($message); + $Task->rollback(); + + continue; + } + // 登録処理で使用しているデータを空に戻す $nc3RoomId = $frameMap['Frame']['room_id']; unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); @@ -186,6 +209,7 @@ private function __saveTaskFromNc2($nc2TodoDatas) { $Task->rollback($ex); throw $ex; } + Current::remove('Block'); } $this->removeUseCurrent(); From 1da7b32e87c64ef142addcfbc78f1c83513f303e Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 14:45:42 +0900 Subject: [PATCH 10/31] =?UTF-8?q?block=5Frole=5Fpermission=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E5=87=A6=E7=90=86=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Nc2ToNc3PhotoAlbum.php | 66 ++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/Model/Nc2ToNc3PhotoAlbum.php b/Model/Nc2ToNc3PhotoAlbum.php index adde098..c17851a 100644 --- a/Model/Nc2ToNc3PhotoAlbum.php +++ b/Model/Nc2ToNc3PhotoAlbum.php @@ -57,7 +57,10 @@ class Nc2ToNc3PhotoAlbum extends Nc2ToNc3AppModel { * @var array * @link http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors */ - public $actsAs = ['Nc2ToNc3.Nc2ToNc3PhotoAlbum']; + public $actsAs = [ + 'Nc2ToNc3.Nc2ToNc3PhotoAlbum', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', + ]; /** * Migration method. @@ -135,7 +138,24 @@ private function __savePhotoAlbumFrameSettingFromNc2($nc2PhotoalbumBlocks) { $Block->create(); $BlocksLanguage->create(); $PhotoAlbumSetting->create(false); + $PhotoAlbumsComponent->initializeSetting(); + $nc3Block = $Block->findByRoomIdAndPluginKey( + $nc3RoomId, + 'photo_albums', + ['key'], + null, + -1 + ); + if (!$this->__saveBlockRolePermission( + $nc3RoomId, + $nc3Block['Block']['key'], + $nc2PhotoalbumBlock['Nc2PhotoalbumBlock']['room_id']) + ) { + $PhotoAlbum->rollback(); + continue; + } + $frameSetting = $FrameSetting->read(); $data = [ 'PhotoAlbumFrameSetting' => $frameSetting['PhotoAlbumFrameSetting'], @@ -248,7 +268,11 @@ private function __savePhotoAlbumFromNc2($nc2PhotoalbumIdList) { //$this->writeCurrent($frameMap, 'photo_albums'); $this->__writeCurrent($frameMap, 'photo_albums', $nc3RoomId); - if (!($data = $this->__savePhotoAlbumSetting($nc3RoomId, $data))) { + if (!($data = $this->__savePhotoAlbumSetting( + $nc3RoomId, + $data, + $nc2PhotoalbumAlbum['Nc2PhotoalbumAlbum']['room_id'])) + ) { $message = $this->getLogArgument($nc2PhotoalbumAlbum); $this->writeMigrationLog($message); @@ -351,9 +375,10 @@ private function __getNc2PhotoalbumIdList($nc2Photoalbums) { * * @param string $nc3RoomId nc3 room id. * @param array $nc3PhotoAlbum data. + * @param array $nc2RoomId nc2 room id. * @return array Nc3PhotoAlbum data. */ - private function __savePhotoAlbumSetting($nc3RoomId, $nc3PhotoAlbum) { + private function __savePhotoAlbumSetting($nc3RoomId, $nc3PhotoAlbum, $nc2RoomId) { /* @var $Block Block */ $Block = ClassRegistry::init('Blocks.Block'); $PhotoAlbumSetting = ClassRegistry::init('PhotoAlbums.PhotoAlbumSetting'); @@ -381,6 +406,10 @@ private function __savePhotoAlbumSetting($nc3RoomId, $nc3PhotoAlbum) { null, -1 ); + + if (!$this->__saveBlockRolePermission($nc3RoomId, $nc3Block['Block']['key'], $nc2RoomId)) { + return []; + } } $nc3PhotoAlbum['Block'] = [ @@ -395,6 +424,37 @@ private function __savePhotoAlbumSetting($nc3RoomId, $nc3PhotoAlbum) { return $nc3PhotoAlbum; } +/** + * Save BlockRolePermission. + * + * @param string $nc3RoomId nc3 room id. + * @param array $nc2RoomId nc2 room id. + * @return array Nc3PhotoAlbum data. + */ + private function __saveBlockRolePermission($nc3RoomId, $nc3BlockKey, $nc2RoomId) { + $Nc2Photoalbum = $this->getNc2Model('photoalbum'); + $PhotoAlbumSetting = ClassRegistry::init('PhotoAlbums.PhotoAlbumSetting'); + + $nc2Photoalbum = $Nc2Photoalbum->findByRoomId( + $nc2RoomId, + 'album_authority', + 'album_authority', + -1 + ); + $data = [ + 'PhotoAlbumSetting' => ['id' => null], + ]; + $data = Hash::merge($data, $this->makeContentPermissionData( + $nc2Photoalbum['Nc2Photoalbum']['album_authority'], $nc3RoomId)); + unset($data['BlockRolePermission']['content_comment_publishable'], + $data['BlockRolePermission']['content_comment_creatable']); + foreach ($data['BlockRolePermission']['content_creatable'] as &$role) { + $role['block_key'] = $nc3BlockKey; + } + + return $PhotoAlbumSetting->savePhotoAlbumSetting($data); + } + /** * Save DisplayAlbum. * From ab2adcb88795fd8c2ad2ef380b730b29c45e47f3 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 17:03:42 +0900 Subject: [PATCH 11/31] =?UTF-8?q?=E6=8A=95=E7=A8=BF=E3=83=A1=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Multidatabase.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Model/Nc2ToNc3Multidatabase.php b/Model/Nc2ToNc3Multidatabase.php index 0eeeb40..d76f6d6 100644 --- a/Model/Nc2ToNc3Multidatabase.php +++ b/Model/Nc2ToNc3Multidatabase.php @@ -234,6 +234,7 @@ private function __saveNc3MultidatabaseFromNc2($nc2Multidatabases) { // MailSetting $data['MailSetting']['block_key'] = $block['Block']['key']; + $data['MailSettingFixedPhrase'][0]['block_key'] = $block['Block']['key']; // //foreach($data['BlockRolePermission'] as &$permission){ // foreach ($permission as &$role){ From f515dd30f2ea118c5064a1eed561625926395e00 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 17:07:03 +0900 Subject: [PATCH 12/31] =?UTF-8?q?block=5Frole=5Fpermission=E7=A7=BB?= =?UTF-8?q?=E8=A1=8C=E5=87=A6=E7=90=86=E3=82=92=E5=85=B1=E9=80=9A=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AB=E5=88=87=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- .../Nc2ToNc3MultidatabaseBehavior.php | 205 ++---------------- Model/Nc2ToNc3Multidatabase.php | 1 + 2 files changed, 22 insertions(+), 184 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 7f6beba..79cc8c3 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -163,51 +163,12 @@ public function generateNc3MultidatabaseData(Model $model, $nc2Multidatabase) { 1 => [], 2 => [], 3 => [], - ] - ]; - if ($nc3Frame) { - // フレームがあったらセット - $data['Frame'] = [ - 'id' => $nc3Frame['Frame']['id'] - ]; - } - - // 権限データ - $data = Hash::merge($data, $this->_makePermissiondata($nc2Multidatabase['Nc2Multidatabase']['contents_authority'], $nc3RoomId)); - - // Mail設定 - $data = Hash::merge($data, $this->_makeMailSetting($model, $nc2Multidatabase['Nc2Multidatabase'], $nc3RoomId)); - - return $data; - } - -/** - * メールの置き換え変数のコンバート。必要であればここで置換する - * - * @param string $text メール定型文 - * @return string - */ - protected function _convertMailValiable($text) { - // X-DATA, X-MDB使えるようになったし、ここでやることは特になさそう - return $text; - } - -/** - * メール設定配列データ作成 - * - * @param Model $model Nc2ToNc3Multidatabase - * @param array $nc2Multidb NC2汎用DB配列 - * @param array $nc3RoomId ルームID - * @return array - */ - protected function _makeMailSetting($model, $nc2Multidb, $nc3RoomId) { - // Mail - $data = [ + ], 'MailSetting' => [ 'plugin_key' => 'multidatabases', 'block_key' => null, - 'is_mail_send' => $nc2Multidb['mail_flag'], - 'is_mail_send_approval' => $nc2Multidb['agree_flag'], // ワークフローを使うなら承認メール有効にする + 'is_mail_send' => $nc2Multidatabase['Nc2Multidatabase']['mail_flag'], + 'is_mail_send_approval' => $nc2Multidatabase['Nc2Multidatabase']['agree_flag'], // ワークフローを使うなら承認メール有効にする ], 'MailSettingFixedPhrase' => [ @@ -216,160 +177,36 @@ protected function _makeMailSetting($model, $nc2Multidb, $nc3RoomId) { 'plugin_key' => 'multidatabases', 'block_key' => null, 'type_key' => 'contents', - 'mail_fixed_phrase_subject' => $this->_convertMailValiable($nc2Multidb['mail_subject']), - 'mail_fixed_phrase_body' => $this->_convertMailValiable($nc2Multidb['mail_body']), + 'mail_fixed_phrase_subject' => $this->_convertMailValiable($nc2Multidatabase['Nc2Multidatabase']['mail_subject']), + 'mail_fixed_phrase_body' => $this->_convertMailValiable($nc2Multidatabase['Nc2Multidatabase']['mail_body']), ], ], ]; - - $RoomRole = ClassRegistry::init('Rooms.RoomRole'); - $RolesRoom = ClassRegistry::init('Rooms.RolesRoom'); - $rolesRooms = $RolesRoom->find('all', [ - 'conditions' => [ - 'RolesRoom.room_id' => $nc3RoomId - ], - 'fields' => ['RolesRoom.id', 'RolesRoom.role_key'], - 'recursive' => -1 - ]); - $rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id'); - - switch ($nc2Multidb['mail_authority']) { - case 4: - // NC2主担以上→Nc3ルーム管理者以上 - $borderLine = 'room_administrator'; - break; - case 3: - //NC2モデレータ以上→NC3編集者以上 - $borderLine = 'editor'; - break; - case 2: - // NC2一般以上→NC3一般以上 - $borderLine = 'general_user'; - break; - case 1: - // NC2ゲスト→NC3ゲスト - $borderLine = 'visitor'; - break; + if ($nc3Frame) { + // フレームがあったらセット + $data['Frame'] = [ + 'id' => $nc3Frame['Frame']['id'] + ]; } - // Roleをレベル低い順に取得 - $roomRoles = $RoomRole->find('all', ['order' => 'level ASC']); - $receivable = 0; - foreach ($roomRoles as $roomRole) { - $roleKey = $roomRole['RoomRole']['role_key']; - if ($roleKey == $borderLine) { - $receivable = 1; - } - if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { - $data['BlockRolePermission']['mail_content_receivable'][$roleKey] = [ - 'id' => null, - 'block_key' => null, - 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - 'value' => $receivable, - 'permission' => 'mail_content_receivable' - ]; - } + // 権限データ設定 + $data = Hash::merge($data, $model->makeContentPermissionData( + $nc2Multidatabase['Nc2Multidatabase']['contents_authority'], $nc3RoomId)); + $data = Hash::merge($data, $model->makeMailPermissionData( + $nc2Multidatabase['Nc2Multidatabase']['mail_authority'], $nc3RoomId)); - } return $data; } /** - * 権限配列の作成 + * メールの置き換え変数のコンバート。必要であればここで置換する * - * @param int $nc2AuthorityCode NC2での投稿権限 - * @param int $nc3RoomId ルームID - * @return mixed + * @param string $text メール定型文 + * @return string */ - protected function _makePermissiondata($nc2AuthorityCode, $nc3RoomId) { - $RoomRole = ClassRegistry::init('Rooms.RoomRole'); - $RolesRoom = ClassRegistry::init('Rooms.RolesRoom'); - $rolesRooms = $RolesRoom->find('all', [ - 'conditions' => [ - 'RolesRoom.room_id' => $nc3RoomId - ], - 'fields' => ['RolesRoom.id', 'RolesRoom.role_key'], - 'recursive' => -1 - ]); - $rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id'); - - switch ($nc2AuthorityCode) { - case 4: - // NC2主担以上→Nc3ルーム管理者以上 - $borderLine = 'room_administrator'; - break; - case 3: - //NC2モデレータ以上→NC3編集者以上 - $borderLine = 'editor'; - break; - case 2: - // NC2一般以上→NC3一般以上 - $borderLine = 'general_user'; - break; - } - - // Roleをレベル低い順に取得 - $roomRoles = $RoomRole->find('all', ['order' => 'level ASC']); - $creatable = 0; - $commentPublishable = 0; - $commentPublishableBorderLine = 'chief_editor'; // NC3のデフォルトにしとく - foreach ($roomRoles as $roomRole) { - $roleKey = $roomRole['RoomRole']['role_key']; - if ($roleKey == $borderLine) { - $creatable = 1; - } - if ($roleKey == $commentPublishableBorderLine) { - $commentPublishable = 1; - } - - // content_publishable はデータとして挿入しなくなったのでコメントアウト - //// content_publishableはルーム管理, visitor のレコードはつくらない - //if (!in_array($roleKey, ['room_administrator', 'visitor'])){ - // $data['BlockRolePermission']['content_publishable'][$roleKey] = [ - // 'id' => null, - // 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - // 'value' => 0, - // 'permission' => 'content_publishable' - // ]; - //} - - // content_creatableはgeneral_userだけ - if ($roleKey == 'general_user') { - $data['BlockRolePermission']['content_creatable'][$roleKey] = [ - 'id' => null, - 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - 'value' => $creatable, - 'permission' => 'content_creatable' - ]; - } - - // コメント投稿権限とコメント承認権限はroom_administrator, chief_editor以外を設定する - if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { - $data['BlockRolePermission']['content_comment_publishable'][$roleKey] = [ - 'id' => null, - 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - 'value' => $commentPublishable, - 'permission' => 'content_comment_publishable' - ]; - - $data['BlockRolePermission']['content_comment_creatable'][$roleKey] = [ - 'id' => null, - 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - 'value' => 1, - 'permission' => 'content_comment_creatable' - ]; - } - - } - /* - * roles_room_id, block_key, permission - */ - //$data['BlockRolePermission']['content_comment_creatable']['visitor'] = [ - // 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], - // 'value' => 0, - // 'permission' => 'content_comment_creatable' - //]; - return $data; + protected function _convertMailValiable($text) { + // X-DATA, X-MDB使えるようになったし、ここでやることは特になさそう + return $text; } /** diff --git a/Model/Nc2ToNc3Multidatabase.php b/Model/Nc2ToNc3Multidatabase.php index d76f6d6..3f62153 100644 --- a/Model/Nc2ToNc3Multidatabase.php +++ b/Model/Nc2ToNc3Multidatabase.php @@ -48,6 +48,7 @@ class Nc2ToNc3Multidatabase extends Nc2ToNc3AppModel { public $actsAs = [ 'Nc2ToNc3.Nc2ToNc3Multidatabase', 'Nc2ToNc3.Nc2ToNc3Wysiwyg', + 'Nc2ToNc3.Nc2ToNc3BlockRolePermission', ]; /** From dcfaf45ebca93cbc05fd8d04a4d8c6d463dea583 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 18:00:27 +0900 Subject: [PATCH 13/31] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E6=8A=95=E7=A8=BF=E3=81=A7=E3=81=8D=E3=82=8B=E6=A8=A9?= =?UTF-8?q?=E9=99=90=E3=81=AE=E3=82=B2=E3=82=B9=E3=83=88=E3=81=AB=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92=E4=BB=98=E3=81=91=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1082 --- Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php b/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php index cbbf4ae..5b0c002 100644 --- a/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php +++ b/Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php @@ -162,8 +162,9 @@ public function makeContentPermissionData(Model $model, $nc2AuthorityCode, $nc3R ]; } - // コメント投稿権限とコメント承認権限はroom_administrator, chief_editor以外を設定する - if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { + // コメント投稿権限とコメント承認権限は + // room_administrator, chief_editor, visitor以外を設定する + if (!in_array($roleKey, ['room_administrator', 'chief_editor', 'visitor'])) { $data['BlockRolePermission']['content_comment_publishable'][$roleKey] = [ 'id' => null, 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey], From 76e62eab83d44c6d0e96931293898fc2dd802dd1 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Tue, 28 May 2019 18:34:11 +0900 Subject: [PATCH 14/31] =?UTF-8?q?=E6=8E=B2=E7=A4=BA=E6=9D=BF=E3=81=A8?= =?UTF-8?q?=E3=82=AD=E3=83=A3=E3=83=93=E3=83=8D=E3=83=83=E3=83=88=E3=81=A7?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E8=80=85=E3=82=92=E7=A7=BB=E8=A1=8C=E3=81=99?= =?UTF-8?q?=E3=82=8B=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3BbsBehavior.php | 18 +++++++++++++----- Model/Behavior/Nc2ToNc3CabinetBehavior.php | 19 ++++++++++++++++--- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3BbsBehavior.php b/Model/Behavior/Nc2ToNc3BbsBehavior.php index 7243384..dfbb48b 100644 --- a/Model/Behavior/Nc2ToNc3BbsBehavior.php +++ b/Model/Behavior/Nc2ToNc3BbsBehavior.php @@ -89,7 +89,9 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room return []; } - //$Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); + $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); + $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Bbs['Nc2Bb']); + $nc3Created = $this->_convertDate($nc2Bbs['Nc2Bb']['insert_time']); $data = [ //'Frame' => [ // 'id' => $frameMap['Frame']['id'] @@ -100,14 +102,16 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room 'room_id' => $nc3RoomId, 'plugin_key' => 'bbses', 'name' => $nc2Bbs['Nc2Bb']['bbs_name'], - 'public_type' => $nc2Bbs['Nc2Bb']['activity'] + 'public_type' => $nc2Bbs['Nc2Bb']['activity'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'Bbs' => [ 'id' => '', 'key' => '', 'name' => $nc2Bbs['Nc2Bb']['bbs_name'], - //'created' => $this->_convertDate($nc2BbsBlock['Nc2BbsBlock']['insert_time']), - 'created' => $this->_convertDate($nc2Bbs['Nc2Bb']['insert_time']), + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], //'BbsFrameSetting' => [ // 'id' => '', @@ -118,7 +122,9 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room //], 'BlocksLanguage' => [ 'language_id' => '', - 'name' => $nc2Bbs['Nc2Bb']['bbs_name'] + 'name' => $nc2Bbs['Nc2Bb']['bbs_name'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'BbsSetting' => [ 'use_like' => $nc2Bbs['Nc2Bb']['vote_flag'], @@ -126,6 +132,8 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room 'use_comment' => $nc2Bbs['Nc2Bb']['child_flag'], // 'use_comment_approval' => $nc2Bbs['Nc2Bb']['sns_flag'], // 'use_workflow' => $nc2Bbs['Nc2Bb']['sns_flag'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'MailSetting' => [ 'plugin_key' => 'bbses', diff --git a/Model/Behavior/Nc2ToNc3CabinetBehavior.php b/Model/Behavior/Nc2ToNc3CabinetBehavior.php index de9c747..24b212f 100644 --- a/Model/Behavior/Nc2ToNc3CabinetBehavior.php +++ b/Model/Behavior/Nc2ToNc3CabinetBehavior.php @@ -70,6 +70,9 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi } $data = []; + $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); + $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2CabinetManage['Nc2CabinetManage']); + $nc3Created = $this->_convertDate($nc2CabinetManage['Nc2CabinetManage']['insert_time']); $data = [ 'Frame' => [ 'id' => $frameMap['Frame']['id'] @@ -80,22 +83,32 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'], 'public_type' => $nc2CabinetManage['Nc2CabinetManage']['active_flag'], 'publish_start' => '', - 'publish_end' => '' + 'publish_end' => '', + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'Cabinet' => [ 'id' => '', 'key' => '', 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'CabinetSetting' => [ 'id' => '', + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'BlocksLanguage' => [ 'language_id' => '', - 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'] + 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], 'CabinetFile' => [ - 'status' => '1' + 'status' => '1', + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, ], '_NetCommonsTime' => [ 'user_timezone' => 'Asia/Tokyo', From 1ded57da3ee1ddcdaf92a5fd9de77488588b9510 Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Wed, 29 May 2019 13:29:15 +0900 Subject: [PATCH 15/31] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20=E3=82=B5=E3=83=9E=E3=83=BC=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=A0=E3=81=AB=E3=82=88=E3=82=8A=E4=BA=88=E5=AE=9A=E3=81=AE?= =?UTF-8?q?=E9=96=8B=E5=A7=8B=E3=80=81=E7=B5=82=E4=BA=86=E6=99=82=E5=88=BB?= =?UTF-8?q?=E3=81=8C=E3=81=9A=E3=82=8C=E3=81=AA=E3=81=84=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3CalendarBehavior.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Model/Behavior/Nc2ToNc3CalendarBehavior.php b/Model/Behavior/Nc2ToNc3CalendarBehavior.php index 3e57410..98c816e 100644 --- a/Model/Behavior/Nc2ToNc3CalendarBehavior.php +++ b/Model/Behavior/Nc2ToNc3CalendarBehavior.php @@ -352,6 +352,11 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan $nc3TimezoneOffset = 'US/Eastern'; } + // サマータイムが適用されている場合に予定の開始、終了時刻がずれないために、$nc2TimezoneOffsetを調整 + $dateTimeZone = new DateTimeZone($nc3TimezoneOffset); + $timeZoneOffset = $dateTimeZone->getOffset(new DateTime("now", $dateTimeZone)); + $nc2TimezoneOffset = $timeZoneOffset/3600; + /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); $data += [ From db1632a2f44d531642cb63181deb43cda5fe1d8b Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Wed, 29 May 2019 19:11:44 +0900 Subject: [PATCH 16/31] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20phpcs=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3CalendarBehavior.php | 46 ++++++++++++++------- Model/Nc2ToNc3Calendar.php | 26 ++++++++---- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CalendarBehavior.php b/Model/Behavior/Nc2ToNc3CalendarBehavior.php index 98c816e..442f676 100644 --- a/Model/Behavior/Nc2ToNc3CalendarBehavior.php +++ b/Model/Behavior/Nc2ToNc3CalendarBehavior.php @@ -65,7 +65,8 @@ public function generateNc3CalendarPermissionData(Model $model, $nc2CalendarMana } if (!$roomMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarManage)); + $message + = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarManage)); $this->_writeMigrationLog($message); return []; } @@ -73,7 +74,8 @@ public function generateNc3CalendarPermissionData(Model $model, $nc2CalendarMana // プライベートスペースのデータは移行できない $nc3SpaceId = $roomMap['Room']['space_id']; if ($nc3SpaceId == Space::PRIVATE_SPACE_ID) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarManage)); + $message + = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarManage)); $this->_writeMigrationLog($message); return []; } @@ -89,7 +91,8 @@ public function generateNc3CalendarPermissionData(Model $model, $nc2CalendarMana /* @var $RolesRoom RolesRoom */ $RolesRoom = ClassRegistry::init('Rooms.RolesRoom'); $nc3RoomId = $roomMap['Room']['id']; - $nc3RolesRoom = $RolesRoom->findByRoomIdAndRoleKey($nc3RoomId, 'general_user', 'RolesRoom.id', null, -1); + $nc3RolesRoom + = $RolesRoom->findByRoomIdAndRoleKey($nc3RoomId, 'general_user', 'RolesRoom.id', null, -1); /* @var $Block Block */ $Block = ClassRegistry::init('Blocks.Block'); @@ -169,7 +172,8 @@ public function generateNc3CalendarFrameSettingData(Model $model, $nc2CalendarBl $nc2BlockId = $nc2CalendarBlock['Nc2CalendarBlock']['block_id']; $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); if (!$frameMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarBlock)); + $message + = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarBlock)); $this->_writeMigrationLog($message); return []; } @@ -185,7 +189,7 @@ public function generateNc3CalendarFrameSettingData(Model $model, $nc2CalendarBl // rm2.calendar_frame_settings.display_typeは、rm1.calendar_block.display_type -1で登録 // rm1.calendar_block.display_type=1の場合、rm2.calendar_frame_settings.display_type=2(月表示(拡大))で登録 $nc3DisplayType = (string)((int)$nc2CalendarBlock['Nc2CalendarBlock']['display_type'] - 1); - if ($nc3DisplayType==='0') { + if ($nc3DisplayType === '0') { $nc3DisplayType = (string)CalendarsComponent::CALENDAR_DISP_TYPE_LARGE_MONTHLY; } /* @var $Nc2ToNc3User Nc2ToNc3User */ @@ -195,8 +199,8 @@ public function generateNc3CalendarFrameSettingData(Model $model, $nc2CalendarBl } // NC3で無効なstart_pos値(2:1月表示、3:4月表示)は0で登録 $nc3StartPos = $nc2CalendarBlock['Nc2CalendarBlock']['start_pos']; - if ($nc3StartPos==2 || $nc3StartPos==3) { - $nc3StartPos=0; + if ($nc3StartPos == 2 || $nc3StartPos == 3) { + $nc3StartPos = 0; } $data = [ @@ -211,10 +215,12 @@ public function generateNc3CalendarFrameSettingData(Model $model, $nc2CalendarBl /* @var $CalendarFrameSetting CalendarFrameSetting */ $CalendarFrameSetting = ClassRegistry::init('Calendars.CalendarFrameSetting'); - $nc3CalendarSetting = $CalendarFrameSetting->findByFrameKey($frameMap['Frame']['key'], null, null, -1); + $nc3CalendarSetting + = $CalendarFrameSetting->findByFrameKey($frameMap['Frame']['key'], null, null, -1); $data['CalendarFrameSetting'] = $data + $nc3CalendarSetting['CalendarFrameSetting']; - $nc3CalendarRooms = $this->__generateNc3CalendarSelectRoomData($nc2CalendarBlock, $nc3CalendarSetting); + $nc3CalendarRooms + = $this->__generateNc3CalendarSelectRoomData($nc2CalendarBlock, $nc3CalendarSetting); $data['CalendarFrameSettingSelectRoom'] = $nc3CalendarRooms; return $data; @@ -288,7 +294,8 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan } if (!$roomMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarPlan)); + $message + = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CalendarPlan)); $this->_writeMigrationLog($message); return []; } @@ -355,7 +362,7 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan // サマータイムが適用されている場合に予定の開始、終了時刻がずれないために、$nc2TimezoneOffsetを調整 $dateTimeZone = new DateTimeZone($nc3TimezoneOffset); $timeZoneOffset = $dateTimeZone->getOffset(new DateTime("now", $dateTimeZone)); - $nc2TimezoneOffset = $timeZoneOffset/3600; + $nc2TimezoneOffset = $timeZoneOffset / 3600; /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); @@ -368,13 +375,21 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan 'title_icon' => $this->_convertTitleIcon($nc2CalendarPlan['Nc2CalendarPlan']['title_icon']), 'title' => $nc2CalendarPlan['Nc2CalendarPlan']['title'], 'enable_time' => !$nc2AllDayFlag, - 'detail_start_datetime' => date($dateFormat, strtotime($nc2StartTimeFull) + ($nc2TimezoneOffset * 3600)), - 'detail_end_datetime' => date($dateFormat, strtotime($nc2EndTimeFull) + ($nc2TimezoneOffset * 3600)), + 'detail_start_datetime' => date( + $dateFormat, + strtotime($nc2StartTimeFull) + ($nc2TimezoneOffset * 3600) + ), + 'detail_end_datetime' => date( + $dateFormat, + strtotime($nc2EndTimeFull) + ($nc2TimezoneOffset * 3600) + ), 'timezone_offset' => $nc3TimezoneOffset, 'plan_room_id' => $roomMap['Room']['id'], 'location' => $nc2CalendarPDetail['Nc2CalendarPlanDetail']['location'], 'contact' => $nc2CalendarPDetail['Nc2CalendarPlanDetail']['contact'], - 'description' => $model->convertWYSIWYG($nc2CalendarPDetail['Nc2CalendarPlanDetail']['description']), + 'description' => $model->convertWYSIWYG( + $nc2CalendarPDetail['Nc2CalendarPlanDetail']['description'] + ), 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2CalendarPlan['Nc2CalendarPlan']), 'created' => $this->_convertDate($nc2CalendarPlan['Nc2CalendarPlan']['insert_time']), // @see https://github.com/NetCommons3/Calendars/blob/3.1.0/View/Elements/CalendarPlans/detail_edit_mail.ctp#L20-L21 @@ -385,7 +400,8 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan 'is_repeat' => false, ]; - $data['CalendarActionPlan'] = $this->__generateNc3RRuleData($nc2CalendarPlan, $nc2CalendarPDetail, $data); + $data['CalendarActionPlan'] + = $this->__generateNc3RRuleData($nc2CalendarPlan, $nc2CalendarPDetail, $data); // @see https://github.com/NetCommons3/Calendars/blob/3.1.0/Model/CalendarActionPlan.php#L549 $data['WorkflowComment'] = null; diff --git a/Model/Nc2ToNc3Calendar.php b/Model/Nc2ToNc3Calendar.php index 223a887..5d4c9f9 100644 --- a/Model/Nc2ToNc3Calendar.php +++ b/Model/Nc2ToNc3Calendar.php @@ -193,7 +193,7 @@ private function __saveCalendarFrameSettingFromNc2($nc2CalendarBlocks) { var_export($CalendarFrameSetting->validationErrors, true); $this->writeMigrationLog($message); - $CalendarFrameSetting->rollback($ex); + $CalendarFrameSetting->rollback(); continue; } @@ -269,9 +269,11 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { // Validation で throw されるため、事前にチェック $validationData = $CalendarActionPlan->convertToPlanParamFormat($data); if (!$CalendarEvent->checkMaxMinDate([$validationData['start_date']], 'start') || - !$CalendarEvent->checkMaxMinDate([$validationData['end_date']], 'end') + !$CalendarEvent->checkMaxMinDate([$validationData['end_date']], 'end') || + strlen($validationData['title']) === 0 ) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2CalendarPlan)); + $message + = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2CalendarPlan)); $this->writeMigrationLog($message); $CalendarActionPlan->rollback(); @@ -280,16 +282,20 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { // @see https://github.com/NetCommons3/Calendars/blob/3.1.0/Model/CalendarEvent.php#L313 // @see https://github.com/NetCommons3/Calendars/blob/3.1.0/Utility/CalendarPermissiveRooms.php#L202-L203 - $creatableValue = CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value']; - CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] = true; + $creatableValue + = CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value']; + CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] + = true; if (!$this->__saveCalendarEventFromGeneratedData($nc2CalendarPlan, $data)) { $CalendarActionPlan->rollback(); - CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] = $creatableValue; + CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] + = $creatableValue; continue; } - CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] = $creatableValue; + CalendarPermissiveRooms::$roomPermRoles['roomInfos'][$nc3RoomId]['content_creatable_value'] + = $creatableValue; // CalendarActionPlan::saveCalendarPlan から、まわりまわってCalendarEvent::save が呼ばれるので、 // CalendarEvent::idで取得できる @@ -304,6 +310,9 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { } catch (Exception $ex) { // NetCommonsAppModel::rollback()でthrowされるので、以降の処理は実行されない // $CalendarActionPlan->saveCalendarPlanでthrowされるとこの処理に入ってこない + $this->writeMigrationLog(var_export($CalendarActionPlan->validationErrors, true)); + $this->writeMigrationLog(var_export($nc2CalendarPlan, true)); + $this->writeMigrationLog(var_export($data, true)); $CalendarActionPlan->rollback($ex); throw $ex; } @@ -357,7 +366,8 @@ private function __saveCalendarEventFromGeneratedData($nc2CalendarPlan, $nc3Acti // 更新処理でしか使われてなさげだが、同じような処理にしとく // @see https://github.com/NetCommons3/Calendars/blob/3.1.0/Model/CalendarActionPlan.php#L573-L598 - $saveParameters = $CalendarActionPlan->getProcModeOriginRepeatAndModType($nc3ActionPlan, $nc3Event); + $saveParameters + = $CalendarActionPlan->getProcModeOriginRepeatAndModType($nc3ActionPlan, $nc3Event); list($addOrEdit, $isRepeatEvent, $isChangedDteTime, $isChangedRepetition) = $saveParameters; // Nc2CalendarPlan.insert_user_idに対応するNc3User.idで良い? From 37633b06e8a230a09d27f48f9178a9e7c3076ea3 Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Wed, 29 May 2019 19:54:35 +0900 Subject: [PATCH 17/31] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20=E3=82=BF=E3=82=A4=E3=83=A0=E3=82=BE=E3=83=BC?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E5=A4=89=E6=8F=9B=E3=82=92const=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E3=81=A3=E3=81=A6=E8=A1=8C=E3=81=86=E3=82=88=E3=81=86?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3CalendarBehavior.php | 59 ++++++++++++++------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CalendarBehavior.php b/Model/Behavior/Nc2ToNc3CalendarBehavior.php index 442f676..6c95eb1 100644 --- a/Model/Behavior/Nc2ToNc3CalendarBehavior.php +++ b/Model/Behavior/Nc2ToNc3CalendarBehavior.php @@ -21,6 +21,44 @@ class Nc2ToNc3CalendarBehavior extends Nc2ToNc3BaseBehavior { */ const NC2_ALL_MEMBERS_ROOM_ID = '0'; +/** + * Nc2ToNc3BaseBehaviour::_convertTimezoneのTimeZoneとCalendarsComponent::getTzTblのTimeZoneを対応づけ + * + * @var array + */ + const TIMEZONE_CONVERSION_MAP = [ + 'Pacific/Kwajalein' => 'Etc/GMT+12', + 'Pacific/Midway' => 'Pacific/Midway', + 'Pacific/Honolulu' => 'US/Hawaii', + 'America/Anchorage' => 'US/Alaska', + 'America/Los_Angeles' => 'US/Pacific', + 'America/Denver' => 'US/Mountain', + 'America/Chicago' => 'US/Central', + 'America/New_York' => 'US/Eastern', + 'America/Dominica' => 'Atlantic/Bermuda', + 'America/St_Johns' => 'Canada/Newfoundland', + 'America/Argentina/Buenos_Aires' => 'Brazil/East', + 'Atlantic/South_Georgia' => 'Atlantic/South_Georgia', + 'Atlantic/Azores' => 'Atlantic/Azores', + 'UTC' => 'Etc/Greenwich', + 'Europe/Brussels' => 'Europe/Amsterdam', + 'Europe/Athens' => 'Europe/Athens', + 'Asia/Baghdad' => 'Asia/Baghdad', + 'Asia/Tehran' => 'Asia/Tehran', + 'Asia/Muscat' => 'Asia/Muscat', + 'Asia/Kabul' => 'Asia/Kabul', + 'Asia/Karachi' => 'Asia/Karachi', + 'Asia/Kolkata' => 'Asia/Calcutta', + 'Asia/Dhaka' => 'Asia/Almaty', + 'Asia/Bangkok' => 'Asia/Bangkok', + 'Asia/Singapore' => 'Asia/Singapore', + 'Asia/Tokyo' => 'Asia/Tokyo', + 'Australia/Darwin' => 'Australia/Adelaide', + 'Asia/Vladivostok' => 'Australia/Brisbane', + 'Australia/Sydney' => 'Etc/GMT-11', + 'Asia/Kamchatka' => 'Pacific/Auckland', + ]; + /** * Get Log argument. * @@ -339,25 +377,10 @@ public function generateNc3CalendarActionPlanData(Model $model, $nc2CalendarPlan $dateFormat = 'Y-m-d'; } + // 時差からタイムゾーンを取得 $nc3TimezoneOffset = $this->_convertTimezone($nc2TimezoneOffset); - if ($nc3TimezoneOffset === 'UTC') { - $nc3TimezoneOffset = 'Etc/Greenwich'; - } - if ($nc3TimezoneOffset === 'Europe/Brussels') { - $nc3TimezoneOffset = 'Europe/Amsterdam'; - } - if ($nc3TimezoneOffset === 'Pacific/Honolulu') { - $nc3TimezoneOffset = 'US/Hawaii'; - } - if ($nc3TimezoneOffset === 'America/Chicago') { - $nc3TimezoneOffset = 'US/Central'; - } - if ($nc3TimezoneOffset === 'Asia/Vladivostok') { - $nc3TimezoneOffset = 'Australia/Brisbane'; - } - if ($nc3TimezoneOffset === 'America/New_York') { - $nc3TimezoneOffset = 'US/Eastern'; - } + // CalendarsComponent::getTzTblで使われているタイムゾーンに変換 + $nc3TimezoneOffset = self::TIMEZONE_CONVERSION_MAP[$nc3TimezoneOffset]; // サマータイムが適用されている場合に予定の開始、終了時刻がずれないために、$nc2TimezoneOffsetを調整 $dateTimeZone = new DateTimeZone($nc3TimezoneOffset); From f3494869014227a0f382ad5438c0ca08aadd8753 Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Thu, 30 May 2019 12:16:03 +0900 Subject: [PATCH 18/31] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20=E7=B9=B0=E3=82=8A=E8=BF=94=E3=81=97=E4=BA=88?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移行済みplan_idの予定はスキップする(同じplan_idの予定は1レコードの移行でまとめて登録されるため) 移行済みplan_idを判別できるよう、移行した予定のplan_idをmapに登録 移行元データと同じplan_id、start_time_fullのデータ以外は削除する(一部削除されている繰り返し予定への対応) --- Model/Behavior/Nc2ToNc3CalendarBehavior.php | 2 - Model/Nc2ToNc3Calendar.php | 76 +++++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CalendarBehavior.php b/Model/Behavior/Nc2ToNc3CalendarBehavior.php index 6c95eb1..a61ae07 100644 --- a/Model/Behavior/Nc2ToNc3CalendarBehavior.php +++ b/Model/Behavior/Nc2ToNc3CalendarBehavior.php @@ -443,7 +443,6 @@ private function __generateNc3RRuleData($nc2CalendarPlan, $nc2CalendarPDetail, $ // 繰り返しデータとして移行すると、繰り返し予定のなかで、削除された予定も改めて登録されてしまうため、 // 繰り返しでの登録はしない方が良い。 // 改めて登録されても良いのであればっ場合でも、登録処理後に、繰り返し予定分のmapデータを作成しないと繰り返し数×繰り返し数分の予定を作成してしまう。 - /* $nc2RRule = $nc2CalendarPDetail['Nc2CalendarPlanDetail']['rrule']; if ($nc2RRule) { $nc3ActionPlan['is_repeat'] = true; @@ -500,7 +499,6 @@ private function __generateNc3RRuleData($nc2CalendarPlan, $nc2CalendarPDetail, $ ]; } } - */ return $nc3ActionPlan; } diff --git a/Model/Nc2ToNc3Calendar.php b/Model/Nc2ToNc3Calendar.php index 5d4c9f9..a27daa1 100644 --- a/Model/Nc2ToNc3Calendar.php +++ b/Model/Nc2ToNc3Calendar.php @@ -47,6 +47,15 @@ class Nc2ToNc3Calendar extends Nc2ToNc3AppModel { */ public $useTable = false; +/** + * Contains models to load and instantiate + * + * @var array + */ + public $uses = [ + 'Calendars.CalendarEvent' + ]; + /** * List of behaviors to load when the model object is initialized. Settings can be * passed to behaviors by using the behavior name as index. @@ -243,6 +252,32 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { /* @var $CalendarActionPlan CalendarActionPlan */ $CalendarActionPlan = ClassRegistry::init('Calendars.CalendarActionPlan'); foreach ($nc2CalendarPlans as $nc2CalendarPlan) { + // 移行済みのplan_idの予定だったらcontinue + // (同じplan_idの予定はCalendarRruleEntryBehavior::insertRrule()でまとめて登録されるため) + $nc2CalendarPlanId = (int)$nc2CalendarPlan['Nc2CalendarPlan']['plan_id']; + $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); + $mapIdList = $Nc2ToNc3Map->getMapIdList('CalendarRrule'); + $mapIdList = array_flip($mapIdList); + if (in_array($nc2CalendarPlanId, $mapIdList, true)) { + continue; + } + + // plan_idが同じ予定のstart_time_fullをfind + $Nc2CalendarPlan = $this->getNc2Model('calendar_plan'); + $nc2CalendarPlans = $Nc2CalendarPlan->find( + 'list', + [ + 'fields' => ['calendar_id', 'start_time_full'], + 'conditions' => [ + 'plan_id' => $nc2CalendarPlan['Nc2CalendarPlan']['plan_id'], + ], + 'recursive' => -1, + ] + ); + foreach ($nc2CalendarPlans as $nc2ExistCPlan) { + $nc2ExistCPlans[] = $nc2ExistCPlan; + } + $CalendarActionPlan->begin(); try { $data = $this->generateNc3CalendarActionPlanData($nc2CalendarPlan); @@ -305,6 +340,17 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { ]; $this->saveMap('CalendarActionPlan', $idMap); + // 移行された予定のplan_idをnc2_to_nc3_mapsに登録する + /* @var $CalendarRrules CalendarRrules */ + $CalendarRrules = ClassRegistry::init('Calendars.CalendarRrule'); + $idMap = [ + $nc2CalendarPlanId => $CalendarRrules->id + ]; + $this->saveMap('CalendarRrule', $idMap); + + // nc2で削除済みの繰り返しデータに対応するnc3のデータを削除する + $this->__applyDeletingPlan($nc2CalendarId, $nc2ExistCPlans); + $CalendarActionPlan->commit(); } catch (Exception $ex) { @@ -404,5 +450,35 @@ private function __saveCalendarEventFromGeneratedData($nc2CalendarPlan, $nc3Acti return true; } +/** + * Apply deleting recurring CalendarEvent. + * + * @param string $nc2CalendarId Nc2CalendarPlanId. + * @param array $nc2ExistCPlans Existing Nc2CalendarPlan start_time_full. + * @return bool True on success + */ + private function __applyDeletingPlan($nc2CalendarId, $nc2ExistCPlans) { + // foreachの中で登録されたデータと同じcalendar_rrule_idのデータを取得 + $nc3CalendarEventId = $this->getMap($nc2CalendarId); + $CalendarEvent = ClassRegistry::init('Calendars.CalendarEvent'); + $nc3CalendarRruleId = $CalendarEvent->find( + 'first', + [ + 'fields' => 'calendar_rrule_id', + 'conditions' => [ + 'CalendarEvent.id' => $nc3CalendarEventId['CalendarEvent']['id'], + ], + ] + ); + + // foreachの中で登録されたデータと同じcalendar_rrule_idのデータを削除 + $CalendarEvent->deleteAll( + [ + 'calendar_rrule_id' => $nc3CalendarRruleId['CalendarEvent']['calendar_rrule_id'], + 'dtstart !=' => $nc2ExistCPlans, + ], + false + ); + } } From 83a3ac09ba78d5b81050b98c2bdf801f6a310f0a Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Thu, 30 May 2019 18:40:45 +0900 Subject: [PATCH 19/31] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20=E7=B9=B0=E3=82=8A=E8=BF=94=E3=81=97=E4=BA=88?= =?UTF-8?q?=E5=AE=9A=E7=99=BB=E9=8C=B2=E5=87=A6=E7=90=86=E3=81=AE=E7=84=A1?= =?UTF-8?q?=E9=A7=84=E3=81=AA=E3=83=AB=E3=83=BC=E3=83=97=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Calendar.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Model/Nc2ToNc3Calendar.php b/Model/Nc2ToNc3Calendar.php index a27daa1..21ee49e 100644 --- a/Model/Nc2ToNc3Calendar.php +++ b/Model/Nc2ToNc3Calendar.php @@ -256,9 +256,9 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { // (同じplan_idの予定はCalendarRruleEntryBehavior::insertRrule()でまとめて登録されるため) $nc2CalendarPlanId = (int)$nc2CalendarPlan['Nc2CalendarPlan']['plan_id']; $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); - $mapIdList = $Nc2ToNc3Map->getMapIdList('CalendarRrule'); + $mapIdList = $Nc2ToNc3Map->getMapIdList('CalendarRrule', $nc2CalendarPlanId); $mapIdList = array_flip($mapIdList); - if (in_array($nc2CalendarPlanId, $mapIdList, true)) { + if ($mapIdList) { continue; } @@ -274,9 +274,7 @@ private function __saveCalendarEventFromNc2($nc2CalendarPlans) { 'recursive' => -1, ] ); - foreach ($nc2CalendarPlans as $nc2ExistCPlan) { - $nc2ExistCPlans[] = $nc2ExistCPlan; - } + $nc2ExistCPlans = array_values($nc2CalendarPlans); $CalendarActionPlan->begin(); try { From 6ae0ec2dba8102488682c2bcc2dada2c06f289b5 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Wed, 29 May 2019 19:31:15 +0900 Subject: [PATCH 20/31] =?UTF-8?q?=E8=B3=AA=E5=95=8F=E3=82=92=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=81=94=E3=81=A8=E3=81=AB=E7=A7=BB=E8=A1=8C?= =?UTF-8?q?=E3=81=99=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php | 4 ++-- Model/Nc2ToNc3Questionnaire.php | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php b/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php index a5350f0..2ba8e41 100644 --- a/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php +++ b/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php @@ -384,9 +384,9 @@ private function __generateNc3QuestionnairePageData(Model $model, $nc2Questionna $data[$nc3PageSequence]['QuestionnaireQuestion'][$nc3QuestionSequence] = $nc3Question; if ($nc2Questionnaire['Nc2Questionnaire']['questionnaire_type'] == '1') { - $nc3PageSequence++; - } else { $nc3QuestionSequence++; + } else { + $nc3PageSequence++; } } diff --git a/Model/Nc2ToNc3Questionnaire.php b/Model/Nc2ToNc3Questionnaire.php index ff2b8e0..a55b54e 100644 --- a/Model/Nc2ToNc3Questionnaire.php +++ b/Model/Nc2ToNc3Questionnaire.php @@ -204,6 +204,7 @@ private function __saveQuestionnaireFrameSettingFromNc2($nc2QBlocks) { $QFrameSetting = ClassRegistry::init('Questionnaires.QuestionnaireFrameSetting'); $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); $Block = ClassRegistry::init('Blocks.Block'); + $QFrameDisplay = ClassRegistry::init('Questionnaires.QuestionnaireFrameDisplayQuestionnaire'); foreach ($nc2QBlocks as $nc2QBlock) { $QFrameSetting->begin(); try { @@ -235,6 +236,8 @@ private function __saveQuestionnaireFrameSettingFromNc2($nc2QBlocks) { ); Current::write('Block.id', $nc3Block['Block']['id']); + // QuestionnaireFrameDisplayQuestionnaireのquestionnaire_keyバリデーション用に初期化 + $QFrameDisplay->chkQuestionnaireList = []; if (!$QFrameSetting->saveFrameSettings($data)) { // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。 // var_exportは大丈夫らしい。。。 From 918f1c280d7680d703f275bb96993d2c3a891061 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Wed, 29 May 2019 19:32:23 +0900 Subject: [PATCH 21/31] =?UTF-8?q?=E7=99=BB=E9=8C=B2=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=81=A7=E9=96=8B=E5=A7=8B=E3=81=97=E3=81=9F=E3=83=88=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=82=B6=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92?= =?UTF-8?q?=E6=88=BB=E3=81=99=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Questionnaire.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Model/Nc2ToNc3Questionnaire.php b/Model/Nc2ToNc3Questionnaire.php index a55b54e..93c0fce 100644 --- a/Model/Nc2ToNc3Questionnaire.php +++ b/Model/Nc2ToNc3Questionnaire.php @@ -239,6 +239,10 @@ private function __saveQuestionnaireFrameSettingFromNc2($nc2QBlocks) { // QuestionnaireFrameDisplayQuestionnaireのquestionnaire_keyバリデーション用に初期化 $QFrameDisplay->chkQuestionnaireList = []; if (!$QFrameSetting->saveFrameSettings($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 + // ここでrollback + $QFrameSetting->rollback(); + // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。 // var_exportは大丈夫らしい。。。 // @see https://phpmd.org/rules/design.html From 94c400a8346290904266508252d5db202d227e88 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Wed, 29 May 2019 19:33:28 +0900 Subject: [PATCH 22/31] =?UTF-8?q?=E5=9B=9E=E7=AD=94=E6=9C=9F=E9=99=90?= =?UTF-8?q?=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php b/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php index 2ba8e41..47fe005 100644 --- a/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php +++ b/Model/Behavior/Nc2ToNc3QuestionnaireBehavior.php @@ -109,11 +109,15 @@ public function generateNc3QuestionnaireData(Model $model, $nc2Questionnaire) { $data['Questionnaire']['is_active'] = '1'; $data['Questionnaire']['status'] = '1'; } - if ($nc2Questionnaire['Nc2Questionnaire']['status'] != '2') { - $data['Questionnaire'] += [ - 'answer_timing' => '1', - 'answer_end_period' => $this->_convertDate($nc2Questionnaire['Nc2Questionnaire']['insert_time']), - ]; + if ($nc2Questionnaire['Nc2Questionnaire']['status'] == '2') { + $data['Questionnaire']['answer_timing'] = '1'; + $data['Questionnaire']['answer_end_period'] = + $this->_convertDate($nc2Questionnaire['Nc2Questionnaire']['insert_time']); + } + if ($nc2Questionnaire['Nc2Questionnaire']['period']) { + $data['Questionnaire']['answer_timing'] = '1'; + $data['Questionnaire']['answer_end_period'] = + $this->_convertDate($nc2Questionnaire['Nc2Questionnaire']['period']); } if ($nc2Questionnaire['Nc2Questionnaire']['keypass_use_flag'] == '1' && $nc2Questionnaire['Nc2Questionnaire']['image_authentication'] == '1' From 998cc5df01b02f183ed8738f7b4579c07215d103 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Thu, 30 May 2019 15:25:30 +0900 Subject: [PATCH 23/31] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E3=82=A2=E3=83=B3=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=82=92=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1406 --- Model/Nc2ToNc3Questionnaire.php | 165 ++++++++++++++++++++++++++------ 1 file changed, 137 insertions(+), 28 deletions(-) diff --git a/Model/Nc2ToNc3Questionnaire.php b/Model/Nc2ToNc3Questionnaire.php index 93c0fce..a53ca29 100644 --- a/Model/Nc2ToNc3Questionnaire.php +++ b/Model/Nc2ToNc3Questionnaire.php @@ -113,10 +113,7 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { /* @var $Questionnaire Questionnaire */ /* @var $Nc2Questionnaire AppModel */ - /* @var $Frame Frame */ $Questionnaire = ClassRegistry::init('Questionnaires.Questionnaire'); - $Nc2QBlock = $this->getNc2Model('questionnaire_block'); - $Frame = ClassRegistry::init('Frames.Frame'); foreach ($nc2Questionnaires as $nc2Questionnaire) { $Questionnaire->begin(); try { @@ -126,9 +123,11 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { continue; } - $nc2RoomId = $nc2Questionnaire['Nc2Questionnaire']['room_id']; - $nc2QBlock = $Nc2QBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); - if (!$nc2QBlock) { + // Questionnaire::saveQuestionnaireで、Block,Frameデータを登録すると、 + // Current::read('Frame.key')が空のままになり、 + // QuestionnaireFrameDisplayQuestionnaire::saveDisplayQuestionnaireでエラーになるため、 + // あらかじめ登録してFrame.keyを取得できるようにしておく + if (!$this->__saveBlockAndFrame($nc2Questionnaire['Nc2Questionnaire']['room_id'])) { $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Questionnaire)); $this->writeMigrationLog($message); $Questionnaire->rollback(); @@ -136,18 +135,14 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { } // PHPMD.ExcessiveMethodLength になるので、別メソッドにした。 - if (!$this->__setCurrentData($nc2QBlock)) { + if (!$this->__setCurrentData($nc2Questionnaire['Nc2Questionnaire']['room_id'])) { $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Questionnaire)); $this->writeMigrationLog($message); $Questionnaire->rollback(); continue; } - // Model::idを初期化しないとUpdateになってしまう。 - // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/Questionnaire.php#L442 - // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/QuestionnaireSetting.php#L129-L149 - $Frame->create(); - + $data = $this->__cleansingChoiceText($data); if (!$Questionnaire->saveQuestionnaire($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback @@ -188,6 +183,130 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { return true; } +/** + * Save Block and Frame. + * + * @param string $nc2RoomId nc2RoomId. + * @return bool True on success + */ + private function __saveBlockAndFrame($nc2RoomId) { + $frame = $this->__getFrameFromNc2RoomId($nc2RoomId); + if (!$frame) { + return false; + } + + /* @var $Questionnaire Questionnaire */ + /* @var $Nc2Questionnaire AppModel */ + /* @var $Frame Frame */ + $Questionnaire = ClassRegistry::init('Questionnaires.Questionnaire'); + $Frame = ClassRegistry::init('Frames.Frame'); + $Block = ClassRegistry::init('Blocks.Block'); + + // Model::idを初期化しないとUpdateになってしまう。 + // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/Questionnaire.php#L442 + // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/QuestionnaireSetting.php#L129-L149 + $Frame->create(); + $Block->create(); + + $Questionnaire->afterFrameSave($frame); + + return true; + } + +/** + * __getFrameFromNc2RoomId + * + * @param string $nc2RoomId nc2RoomId. + * @return array + */ + private function __getFrameFromNc2RoomId($nc2RoomId) { + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $roomMap = $Nc2ToNc3Room->getMap($nc2RoomId); + if (!$roomMap) { + return []; + } + + $data = [ + 'Frame' => [ + 'room_id' => $roomMap['Room']['id'], + 'plugin_key' => 'questionnaires', + 'key' => null, + 'block_id' => null, + ] + ]; + + $nc2BlockId = 0; + $Nc2QBlock = $this->getNc2Model('questionnaire_block'); + $nc2QBlock = $Nc2QBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); + if ($nc2QBlock) { + $nc2BlockId = $nc2QBlock['Nc2QuestionnaireBlock']['block_id']; + } + + /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ + $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + if ($frameMap) { + $data['Frame']['key'] = $frameMap['Frame']['key']; + $data['Frame']['block_id'] = $frameMap['Frame']['block_id']; + } + + if (!$data['Frame']['key']) { + $Frame = ClassRegistry::init('Frames.Frame'); + $frame = $Frame->find('first', + [ + 'fields' => ['key', 'block_id'], + 'recursive' => -1, + 'conditions' => [ + 'room_id' => $roomMap['Room']['id'], + 'plugin_key' => 'questionnaires' + ] + ]); + if (!$frame) { + return $data; + } + + $data['Frame']['key'] = $frame['Frame']['key']; + $data['Frame']['block_id'] = $frame['Frame']['block_id']; + } + + return $data; + } + +/** + * choice_labelの予約文字を半角変換/改行等除去 + * 「:」=>「:」「|」=>「|」 + * + * @param array $data Questionnaireデータ + * @return array + */ + private function __cleansingChoiceText($data) { + if (!isset($data['QuestionnairePage'])) { + return $data; + } + foreach ($data['QuestionnairePage'] as $key => $questionnairePage) { + if (!isset($questionnairePage['QuestionnaireQuestion'])) { + continue; + } + foreach ($questionnairePage['QuestionnaireQuestion'] as $key2 => $questionnaireQuestion) { + if (!isset($questionnaireQuestion['QuestionnaireChoice'])) { + continue; + } + foreach ($questionnaireQuestion['QuestionnaireChoice'] as $key3 => $questionnaireChoice) { + if (isset($questionnaireChoice['choice_label'])) { + $rep = str_replace(':', ':', + $questionnaireChoice['choice_label']); + $rep = str_replace('|', '|', $rep); + // 改行等を除去 + $rep = preg_replace('/[\n\r\t\f\v]+/u', '', $rep); + $data['QuestionnairePage'][$key]['QuestionnaireQuestion'][$key2]['QuestionnaireChoice'][$key3]['choice_label'] + = $rep; + } + } + } + } + return $data; + } + /** * Save QuestionnaireFrameSetting from Nc2. * @@ -423,31 +542,21 @@ private function __saveQuestionnaireAnswerFromNc2($nc2QSummary, $nc3QAnswerSumma /** * Set Current data. * - * @param array $nc2QBlock Nc2QuizBlock data. + * @param string $nc2RoomId nc2RoomId. * @return bool True on success */ - private function __setCurrentData($nc2QBlock) { - /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ - $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); - - // QuestionnaireFrameDisplayQuestionnaire::saveDisplayQuestionnaire でFrameに割り当てられてしまうが、 - // Nc2ToNc3Questionnaire::__saveQuestionnaireFrameSettingFromNc2で再登録を行うことで調整 - // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/Questionnaire.php#L577-L578 - // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/Questionnaire.php#L631-L634 - $frameMap = $Nc2ToNc3Frame->getMap($nc2QBlock['Nc2QuestionnaireBlock']['block_id']); - if (!$frameMap) { + private function __setCurrentData($nc2RoomId) { + $frame = $this->__getFrameFromNc2RoomId($nc2RoomId); + if (!$frame) { return false; } - $nc3RoomId = $frameMap['Frame']['room_id']; - Current::write('Frame.key', $frameMap['Frame']['key']); - Current::write('Frame.room_id', $nc3RoomId); - Current::write('Frame.plugin_key', 'questionnaires'); - Current::write('Frame.block_id', $frameMap['Frame']['block_id']); + Current::write('Frame', $frame['Frame']); // @see https://github.com/NetCommons3/Topics/blob/3.1.0/Model/Behavior/TopicsBaseBehavior.php#L347 Current::write('Plugin.key', 'questionnaires'); // @see https://github.com/NetCommons3/Workflow/blob/3.1.0/Model/Behavior/WorkflowBehavior.php#L171-L175 + $nc3RoomId = $frame['Frame']['room_id']; Current::write('Room.id', $nc3RoomId); Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; From 7677b4cb1121201ec386f5526cbfaa1d55b0dc6d Mon Sep 17 00:00:00 2001 From: Withone10 Date: Thu, 30 May 2019 19:30:51 +0900 Subject: [PATCH 24/31] =?UTF-8?q?Frame=E3=81=8C=E7=84=A1=E3=81=84=E5=A0=B4?= =?UTF-8?q?=E5=90=88=E6=AC=A1=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AB?= =?UTF-8?q?=E9=80=B2=E3=82=80=E5=87=A6=E7=90=86=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3RssReader.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Model/Nc2ToNc3RssReader.php b/Model/Nc2ToNc3RssReader.php index 0855644..addab25 100644 --- a/Model/Nc2ToNc3RssReader.php +++ b/Model/Nc2ToNc3RssReader.php @@ -97,6 +97,16 @@ private function __saveRssFromNc2($nc2RssBlocks) { try { $nc2BlockId = $nc2RssBlock['Nc2RssBlock']['block_id']; $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + if (!$frameMap) { + $message = __d( + 'nc2_to_nc3', + '%s does not migration, because of Frame does not exist.', + $this->getLogArgument($nc2RssBlock)); + $this->writeMigrationLog($message); + + $RssReader->rollback(); + continue; + } $this->writeCurrent($frameMap, 'rss_readers'); $data = $this->generateNc3RssReaderData($frameMap, $nc2RssBlock); From bac20f9e135147cdec62e9d0cff2adf9f5c6b91b Mon Sep 17 00:00:00 2001 From: Withone10 Date: Fri, 31 May 2019 22:36:14 +0900 Subject: [PATCH 25/31] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E7=99=BB=E9=8C=B2=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=82=92=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1405 --- Model/Nc2ToNc3Registration.php | 154 ++++++++++++++++++++++++++++----- 1 file changed, 134 insertions(+), 20 deletions(-) diff --git a/Model/Nc2ToNc3Registration.php b/Model/Nc2ToNc3Registration.php index 221344f..217c798 100644 --- a/Model/Nc2ToNc3Registration.php +++ b/Model/Nc2ToNc3Registration.php @@ -112,29 +112,19 @@ private function __saveRegistrationFromNc2($nc2Registrations) { foreach ($nc2Registrations as $nc2Registration) { $Registration->begin(); try { - $nc2RoomId = $nc2Registration['Nc2Registration']['room_id']; - $nc2RBlock = $NcRBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); - if (!$nc2RBlock) { + if (!$this->__saveBlockAndFrame($nc2Registration['Nc2Registration']['room_id'])) { $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Registration)); $this->writeMigrationLog($message); $Registration->rollback(); continue; } - $frameMap = $Nc2ToNc3Frame->getMap($nc2RBlock['Nc2RegistrationBlock']['block_id']); - if (!$frameMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2RBlock)); + + if (!$this->__setCurrentData($nc2Registration['Nc2Registration']['room_id'])) { + $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Registration)); $this->writeMigrationLog($message); $Registration->rollback(); continue; } - $frame = $Frame->findById($frameMap['Frame']['id'], null, null, -1); - $nc3RoomId = $frameMap['Frame']['room_id']; - Current::write('Frame', $frame['Frame']); - Current::write('Room.id', $nc3RoomId); - $Frame->create(); - $Block->create(); - $BlocksLanguage->create(); - $Registration->createBlock($frame); $data = $this->generateNc3RegistrationData($nc2Registration); if (!$data) { @@ -142,8 +132,6 @@ private function __saveRegistrationFromNc2($nc2Registrations) { continue; } - $this->writeCurrent($frameMap, 'registrations'); - // 本来 Registrationの独自ビヘイビアMailSettingBehaviorでcreate()した方がよい。 // とはいえ、ループで$Registration->saveRegistration()を繰り返し呼び出すのは、移行ツール位。 // 移行ツールだけの対応でもメール設定が移行できるようにするため、ここでcreate()する @@ -163,9 +151,6 @@ private function __saveRegistrationFromNc2($nc2Registrations) { continue; } - // 登録処理で使用しているデータを空に戻す - unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); - $nc2RegistrationId = $nc2Registration['Nc2Registration']['registration_id']; $idMap = [ $nc2RegistrationId => $Registration->id, @@ -180,13 +165,142 @@ private function __saveRegistrationFromNc2($nc2Registrations) { } } - $this->removeUseCurrent(); + $this->__unSetCurrentData(); $this->writeMigrationLog(__d('nc2_to_nc3', ' Registration data Migration end.')); return true; } +/** + * Save Block and Frame. + * + * @param string $nc2RoomId nc2RoomId. + * @return bool True on success + */ + private function __saveBlockAndFrame($nc2RoomId) { + $frame = $this->__getFrameFromNc2RoomId($nc2RoomId); + if (!$frame) { + return false; + } + + /* @var $Registration Registration */ + /* @var $Frame Frame */ + $Registration = ClassRegistry::init('Registrations.Registration'); + $Frame = ClassRegistry::init('Frames.Frame'); + $Block = ClassRegistry::init('Blocks.Block'); + + $Frame->create(); + $Block->create(); + + $Registration->createBlock($frame); + + return true; + } + +/** + * __getFrameFromNc2RoomId + * + * @param string $nc2RoomId nc2RoomId. + * @return array + */ + private function __getFrameFromNc2RoomId($nc2RoomId) { + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $roomMap = $Nc2ToNc3Room->getMap($nc2RoomId); + if (!$roomMap) { + return []; + } + + $data = [ + 'Frame' => [ + 'room_id' => $roomMap['Room']['id'], + 'plugin_key' => 'registrations', + 'key' => null, + 'block_id' => null, + ] + ]; + + $nc2BlockId = 0; + $Nc2RBlock = $this->getNc2Model('registration_block'); + $nc2RBlock = $Nc2RBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); + if ($nc2RBlock) { + $nc2BlockId = $nc2RBlock['Nc2RegistrationBlock']['block_id']; + } + + /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ + $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + if ($frameMap) { + $data['Frame']['key'] = $frameMap['Frame']['key']; + $data['Frame']['block_id'] = $frameMap['Frame']['block_id']; + } + + if (!$data['Frame']['key']) { + $Frame = ClassRegistry::init('Frames.Frame'); + $frame = $Frame->find('first', + [ + 'fields' => ['key', 'block_id'], + 'recursive' => -1, + 'conditions' => [ + 'room_id' => $roomMap['Room']['id'], + 'plugin_key' => 'registrations' + ] + ]); + if (!$frame) { + return $data; + } + + $data['Frame']['key'] = $frame['Frame']['key']; + $data['Frame']['block_id'] = $frame['Frame']['block_id']; + } + + return $data; + } + +/** + * Set Current data. + * + * @param string $nc2RoomId nc2RoomId. + * @return bool True on success + */ + private function __setCurrentData($nc2RoomId) { + $frame = $this->__getFrameFromNc2RoomId($nc2RoomId); + if (!$frame) { + return false; + } + Current::write('Frame', $frame['Frame']); + + // @see https://github.com/NetCommons3/Topics/blob/3.1.0/Model/Behavior/TopicsBaseBehavior.php#L347 + Current::write('Plugin.key', 'registrations'); + + // @see https://github.com/NetCommons3/Workflow/blob/3.1.0/Model/Behavior/WorkflowBehavior.php#L171-L175 + $nc3RoomId = $frame['Frame']['room_id']; + Current::write('Room.id', $nc3RoomId); + Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; + + return true; + } + +/** + * unset Current data. + * + * @return void + */ + private function __unSetCurrentData() { + // 登録処理で使用しているデータを空に戻す + Current::remove('Frame.key'); + Current::remove('Frame.room_id'); + Current::remove('Frame.plugin_key'); + Current::remove('Frame.block_id'); + Current::remove('Plugin.key'); + Current::remove('Room.id'); + + $nc3RoomIds = array_keys(Current::$permission); + foreach ($nc3RoomIds as $nc3RoomId) { + unset(Current::$permission[$nc3RoomId]); + } + } + /** * Save RegistrationData from Nc2. * From 44d83303e298f7be566c091e3dca9844fd352126 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Fri, 31 May 2019 13:53:08 +0900 Subject: [PATCH 26/31] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E3=82=AD=E3=83=A3=E3=83=93=E3=83=8D?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=92=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1405 --- Model/Behavior/Nc2ToNc3CabinetBehavior.php | 30 +++++++++++----------- Model/Nc2ToNc3Cabinet.php | 27 ++++++++++--------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3CabinetBehavior.php b/Model/Behavior/Nc2ToNc3CabinetBehavior.php index 24b212f..8f0cdf2 100644 --- a/Model/Behavior/Nc2ToNc3CabinetBehavior.php +++ b/Model/Behavior/Nc2ToNc3CabinetBehavior.php @@ -44,19 +44,17 @@ public function getLogArgument(Model $model, $nc2Cabinet) { * @param Model $model Model using this behavior. * @param array $nc2CabinetManage Nc2CabinetBlock data. * @param array $nc2CabinetBlock Nc2CabinetBlock data. + * @param string $nc3RoomId nc3 room id. * @return array Nc3Cabinet data. */ - public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2CabinetBlock) { - /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ - $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); - $nc2BlockId = $nc2CabinetBlock['Nc2CabinetBlock']['block_id']; - - $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); - if (!$frameMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2CabinetBlock)); - $this->_writeMigrationLog($message); - return []; + public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2CabinetBlock, $nc3RoomId) { + $frameMap = []; + if ($nc2CabinetBlock) { + /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ + $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); + $nc2BlockId = $nc2CabinetBlock['Nc2CabinetBlock']['block_id']; + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); } $nc2CabinetId = $nc2CabinetManage['Nc2CabinetManage']['cabinet_id']; @@ -68,17 +66,14 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi // 移行済み return []; } - $data = []; $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2CabinetManage['Nc2CabinetManage']); $nc3Created = $this->_convertDate($nc2CabinetManage['Nc2CabinetManage']['insert_time']); $data = [ - 'Frame' => [ - 'id' => $frameMap['Frame']['id'] - ], 'Block' => [ 'id' => '', + 'room_id' => $nc3RoomId, 'plugin_key' => 'cabinets', 'name' => $nc2CabinetManage['Nc2CabinetManage']['cabinet_name'], 'public_type' => $nc2CabinetManage['Nc2CabinetManage']['active_flag'], @@ -115,11 +110,16 @@ public function generateNc3CabinetData(Model $model, $nc2CabinetManage, $nc2Cabi 'convert_fields' => 'Block.publish_start,Block.publish_end' ] ]; + if ($frameMap) { + $data['Frame'] = [ + 'id' => $frameMap['Frame']['id'] + ]; + } // 権限データ設定 $data = Hash::merge($data, $model->makeContentPermissionData( $nc2CabinetManage['Nc2CabinetManage']['add_authority_id'], - $frameMap['Frame']['room_id'])); + $nc3RoomId)); unset($data['BlockRolePermission']['content_comment_publishable'], $data['BlockRolePermission']['content_comment_creatable']); diff --git a/Model/Nc2ToNc3Cabinet.php b/Model/Nc2ToNc3Cabinet.php index ffc9f76..796c4e2 100644 --- a/Model/Nc2ToNc3Cabinet.php +++ b/Model/Nc2ToNc3Cabinet.php @@ -116,27 +116,30 @@ private function __saveNc3CabinetFromNc2($nc2CabinetManages) { foreach ($nc2CabinetManages as $nc2CabinetManage) { $Nc2CabinetBlock = $this->getNc2Model('cabinet_block'); - //$nc2CabinetBlock = $Nc2CabinetBlock->find('all'); - $nc2CabinetBlock = $Nc2CabinetBlock->findByRoomId($nc2CabinetManage['Nc2CabinetManage']['room_id'], null, null, -1); - if (!$nc2CabinetBlock) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2CabinetManage)); - $this->writeMigrationLog($message); - continue; - } $Cabinet->begin(); try { - $data = $this->generateNc3CabinetData($nc2CabinetManage, $nc2CabinetBlock); - if (!$data) { + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $nc3Room = $Nc2ToNc3Room->getMap($nc2CabinetManage['Nc2CabinetManage']['room_id']); + if (!$nc3Room) { + $message = __d( + 'nc2_to_nc3', + '%s does not migration, because of Room does not exist.', + $this->getLogArgument($nc2CabinetManage)); + $this->writeMigrationLog($message); + $Cabinet->rollback(); continue; } - - $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); - $nc3Room = $Nc2ToNc3Room->getMap($nc2CabinetManage['Nc2CabinetManage']['room_id']); $nc3RoomId = $nc3Room['Room']['id']; + $data = $this->generateNc3CabinetData($nc2CabinetManage, $nc2CabinetBlock, $nc3RoomId); + if (!$data) { + $Cabinet->rollback(); + continue; + } + Current::write('Room.id', $nc3RoomId); $BlocksLanguage->create(); From cf23e20c1013850c6d6c352f73e6075e45581c66 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Fri, 31 May 2019 15:11:40 +0900 Subject: [PATCH 27/31] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84FAQ=E3=82=92=E7=A7=BB=E8=A1=8C?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1405 --- Model/Behavior/Nc2ToNc3FaqBehavior.php | 15 ++++++++----- Model/Nc2ToNc3Faq.php | 31 +++++++++++++++----------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3FaqBehavior.php b/Model/Behavior/Nc2ToNc3FaqBehavior.php index 783d288..b6971b7 100644 --- a/Model/Behavior/Nc2ToNc3FaqBehavior.php +++ b/Model/Behavior/Nc2ToNc3FaqBehavior.php @@ -49,9 +49,10 @@ public function getLogArgument(Model $model, $nc2Faq) { * @param Model $model Model using this behavior. * @param array $frameMap Frame mapping data. * @param array $nc2Faq Nc2Faq data. + * @param string $nc3RoomId nc3 room id. * @return array Nc3Faq data. */ - public function generateNc3FaqData(Model $model, $frameMap, $nc2Faq) { + public function generateNc3FaqData(Model $model, $frameMap, $nc2Faq, $nc3RoomId) { $nc2FaqId = $nc2Faq['Nc2Faq']['faq_id']; $faqMap = $this->_getMap($nc2FaqId); if ($faqMap) { @@ -61,13 +62,15 @@ public function generateNc3FaqData(Model $model, $frameMap, $nc2Faq) { /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); - $data['Frame'] = [ - 'id' => $frameMap['Frame']['id'], - ]; + if ($frameMap) { + $data['Frame'] = [ + 'id' => $frameMap['Frame']['id'], + ]; + } $data['Block'] = [ 'id' => '', 'key' => '', - 'room_id' => $frameMap['Frame']['room_id'], + 'room_id' => $nc3RoomId, 'plugin_key' => 'faqs', 'name' => $nc2Faq['Nc2Faq']['faq_name'], 'public_type' => 1, @@ -89,7 +92,7 @@ public function generateNc3FaqData(Model $model, $frameMap, $nc2Faq) { $data['FaqSetting'] = ['id' => '']; $data = Hash::merge($data, $model->makeContentPermissionData( $nc2Faq['Nc2Faq']['faq_authority'], - $frameMap['Frame']['room_id'])); + $nc3RoomId)); unset($data['BlockRolePermission']['content_comment_publishable'], $data['BlockRolePermission']['content_comment_creatable']); diff --git a/Model/Nc2ToNc3Faq.php b/Model/Nc2ToNc3Faq.php index f660d7b..d0b2aaa 100644 --- a/Model/Nc2ToNc3Faq.php +++ b/Model/Nc2ToNc3Faq.php @@ -131,23 +131,28 @@ private function __saveFaqFromNc2($nc2Faqs) { $Faq->begin(); try { $nc2RoomId = $nc2Faq['Nc2Faq']['room_id']; - $nc2FaqBlock = $Nc2FaqBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); - if (!$nc2FaqBlock) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Faq)); + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $nc3Room = $Nc2ToNc3Room->getMap($nc2RoomId); + if (!$nc3Room) { + $message = __d( + 'nc2_to_nc3', + '%s does not migration, because of Room does not exist.', + $this->getLogArgument($nc2Faq)); $this->writeMigrationLog($message); + $Faq->rollback(); continue; } + $nc3RoomId = $nc3Room['Room']['id']; - $frameMap = $Nc2ToNc3Frame->getMap($nc2FaqBlock['Nc2FaqBlock']['block_id']); - if (!$frameMap) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Faq)); - $this->writeMigrationLog($message); - $Faq->rollback(); - continue; + $nc2BlockId = 0; + $nc2FaqBlock = $Nc2FaqBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); + if ($nc2FaqBlock) { + $nc2BlockId = $nc2FaqBlock['Nc2FaqBlock']['block_id']; } - $data = $this->generateNc3FaqData($frameMap, $nc2Faq); + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + $data = $this->generateNc3FaqData($frameMap, $nc2Faq, $nc3RoomId); if (!$data) { $Faq->rollback(); continue; @@ -159,7 +164,8 @@ private function __saveFaqFromNc2($nc2Faqs) { $nc2CategoryList = $Nc2ToNc3Category->getNc2CategoryList('faq_category', $query); $data['Categories'] = $Nc2ToNc3Category->generateNc3CategoryData($nc2CategoryList); - $this->writeCurrent($frameMap, 'faqs'); + Current::write('Room.id', $nc3RoomId); + Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; $BlocksLanguage->create(); $Block->create(); @@ -200,7 +206,6 @@ private function __saveFaqFromNc2($nc2Faqs) { } // 登録処理で使用しているデータを空に戻す - $nc3RoomId = $frameMap['Frame']['room_id']; unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); $nc2FaqId = $nc2Faq['Nc2Faq']['faq_id']; @@ -228,7 +233,7 @@ private function __saveFaqFromNc2($nc2Faqs) { } Current::remove('Block'); } - $this->removeUseCurrent(); + Current::remove('Room.id'); $this->writeMigrationLog(__d('nc2_to_nc3', ' Faq data Migration end.')); From 6f7ef2c832b239819209be60776bc689dcf61a30 Mon Sep 17 00:00:00 2001 From: Withone10 Date: Fri, 31 May 2019 16:06:15 +0900 Subject: [PATCH 28/31] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E3=82=BF=E3=82=B9=E3=82=AF=E3=82=92?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/NetCommons3/NetCommons3/issues/1405 --- Model/Behavior/Nc2ToNc3TaskBehavior.php | 19 ++++++++-------- Model/Nc2ToNc3Task.php | 29 +++++++++++++++++-------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3TaskBehavior.php b/Model/Behavior/Nc2ToNc3TaskBehavior.php index 5c846aa..fb056f7 100644 --- a/Model/Behavior/Nc2ToNc3TaskBehavior.php +++ b/Model/Behavior/Nc2ToNc3TaskBehavior.php @@ -50,9 +50,10 @@ public function getLogArgument(Model $model, $nc2Task) { * @param Model $model Model using this behavior. * @param array $frameMap FrameMap data. * @param array $nc2TodoData Nc2TodoData data. + * @param string $nc3RoomId nc3 room id. * @return array Nc3Task data. */ - public function generateNc3TaskData(Model $model, $frameMap, $nc2TodoData) { + public function generateNc3TaskData(Model $model, $frameMap, $nc2TodoData, $nc3RoomId) { /* @var $Nc2ToNc3Map Nc2ToNc3Map */ $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); $mapIdList = $Nc2ToNc3Map->getMapIdList('Task', $nc2TodoData['Nc2Todo']['todo_id']); @@ -61,19 +62,17 @@ public function generateNc3TaskData(Model $model, $frameMap, $nc2TodoData) { return []; } - if (!$frameMap) { - return []; - } - /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); - $data['Frame'] = [ - 'id' => $frameMap['Frame']['id'], - ]; + if ($frameMap) { + $data['Frame'] = [ + 'id' => $frameMap['Frame']['id'], + ]; + } $data['Block'] = [ 'id' => '', 'key' => '', - 'room_id' => $frameMap['Frame']['room_id'], + 'room_id' => $nc3RoomId, 'plugin_key' => 'tasks', 'public_type' => 1, ]; @@ -97,7 +96,7 @@ public function generateNc3TaskData(Model $model, $frameMap, $nc2TodoData) { // 権限データ設定 $data = Hash::merge($data, $model->makeContentPermissionData( $nc2TodoData['Nc2Todo']['task_authority'], - $frameMap['Frame']['room_id'])); + $nc3RoomId)); unset($data['BlockRolePermission']['content_comment_publishable'], $data['BlockRolePermission']['content_comment_creatable']); diff --git a/Model/Nc2ToNc3Task.php b/Model/Nc2ToNc3Task.php index 1f6a208..2182891 100644 --- a/Model/Nc2ToNc3Task.php +++ b/Model/Nc2ToNc3Task.php @@ -120,16 +120,28 @@ private function __saveTaskFromNc2($nc2TodoDatas) { $Task->begin(); try { $nc2RoomId = $nc2TodoData['Nc2Todo']['room_id']; - $nc2TodoBlock = $Nc2TodoBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); - if (!$nc2TodoBlock) { - $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2TodoData)); + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $nc3Room = $Nc2ToNc3Room->getMap($nc2RoomId); + if (!$nc3Room) { + $message = __d( + 'nc2_to_nc3', + '%s does not migration, because of Room does not exist.', + $this->getLogArgument($nc2TodoData)); $this->writeMigrationLog($message); + $Task->rollback(); continue; } + $nc3RoomId = $nc3Room['Room']['id']; + + $nc2BlockId = 0; + $nc2TodoBlock = $Nc2TodoBlock->findByRoomId($nc2RoomId, 'block_id', null, -1); + if ($nc2TodoBlock) { + $nc2BlockId = $nc2TodoBlock['Nc2TodoBlock']['block_id']; + } - $frameMap = $Nc2ToNc3Frame->getMap($nc2TodoBlock['Nc2TodoBlock']['block_id']); - $data = $this->generateNc3TaskData($frameMap, $nc2TodoData); + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + $data = $this->generateNc3TaskData($frameMap, $nc2TodoData, $nc3RoomId); if (!$data) { $Task->rollback(); continue; @@ -141,7 +153,8 @@ private function __saveTaskFromNc2($nc2TodoDatas) { $nc2CategoryList = $Nc2ToNc3Category->getNc2CategoryList('todo_category', $query); $data['Categories'] = $Nc2ToNc3Category->generateNc3CategoryData($nc2CategoryList); - $this->writeCurrent($frameMap, 'tasks'); + Current::write('Room.id', $nc3RoomId); + Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; $Task->create(false); $Block->create(); @@ -177,7 +190,6 @@ private function __saveTaskFromNc2($nc2TodoDatas) { } // 登録処理で使用しているデータを空に戻す - $nc3RoomId = $frameMap['Frame']['room_id']; unset(Current::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); $nc2TodoId = $nc2TodoData['Nc2Todo']['todo_id']; @@ -211,8 +223,7 @@ private function __saveTaskFromNc2($nc2TodoDatas) { } Current::remove('Block'); } - - $this->removeUseCurrent(); + Current::remove('Room.id'); $this->writeMigrationLog(__d('nc2_to_nc3', ' Task data Migration end.')); From 65fedaf70b4f9242a710c3ec6acbdf1eef3acbad Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Tue, 9 Jul 2019 12:19:02 +0900 Subject: [PATCH 29/31] =?UTF-8?q?=E7=99=BB=E9=8C=B2=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=80=80=E3=83=AD=E3=82=B0=E5=87=BA=E5=8A=9B?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=82=8Bid=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 回答データの移行ではrm_registration_data.data_idが出力される。 フレーム設定の移行ではrm_registration_blocks.block_idが出力される。 (cherry picked from commit 5da71a7d61e1e9161355b20c4fa49348b1649b57) --- Model/Nc2ToNc3Registration.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Model/Nc2ToNc3Registration.php b/Model/Nc2ToNc3Registration.php index 217c798..469ee60 100644 --- a/Model/Nc2ToNc3Registration.php +++ b/Model/Nc2ToNc3Registration.php @@ -346,7 +346,7 @@ private function __saveRegistrationDataFromNc2($nc2RegistrationData) { $RAnswerSummary->create(); if (!($nc3Summary = $RAnswerSummary->save($data))) { - $message = $this->getLogArgument($nc2ItemData) . "\n" . + $message = $this->getLogArgument($nc2RegistrationDatum) . "\n" . var_export($RAnswerSummary->validationErrors, true); $this->writeMigrationLog($message); @@ -478,7 +478,7 @@ private function __saveFrameFromNc2($nc2RBlocks) { if (!$Frame->saveFrame($data)) { // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。 var_exportは大丈夫らしい。。。 // @see https://phpmd.org/rules/design.html - $message = $this->getLogArgument($nc2RBlocks) . "\n" . + $message = $this->getLogArgument($nc2RegistrationBlock) . "\n" . var_export($Frame->validationErrors, true); $this->writeMigrationLog($message); From 8e76a9f0e5867a9aa9a1fead46f4f33d567a0b5e Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Tue, 9 Jul 2019 13:07:39 +0900 Subject: [PATCH 30/31] =?UTF-8?q?=E7=99=BB=E9=8C=B2=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=80=80=E3=83=AD=E3=82=B0=E3=81=AB=E3=82=B9?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B9=E3=81=8C=E5=85=A5=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 86274c3deeea5b3243ec67ca7f93eb5ebf5dee54) --- Model/Behavior/Nc2ToNc3RegistrationBehavior.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php index 46fc487..197dd86 100644 --- a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php +++ b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php @@ -643,16 +643,16 @@ private function __getLogArgument($nc2Registration) { } if (isset($nc2Registration['Nc2RegistrationData'])) { - return 'Nc2RegistrationData' . + return 'Nc2RegistrationData ' . 'data_id:' . $nc2Registration['Nc2RegistrationData']['data_id']; } if (isset($nc2Registration['Nc2RegistrationItem'])) { - return 'Nc2RegistrationItem' . + return 'Nc2RegistrationItem ' . 'item_id:' . $nc2Registration['Nc2RegistrationItem']['item_id']; } - return 'Nc2RegistrationItemData' . + return 'Nc2RegistrationItemData ' . 'item_data_id:' . $nc2Registration['Nc2RegistrationItemData']['item_data_id']; } From 2f8d36fc1738c250d0382ce6eda52e8c81746c98 Mon Sep 17 00:00:00 2001 From: "noto.yuichi" Date: Tue, 9 Jul 2019 13:45:01 +0900 Subject: [PATCH 31/31] =?UTF-8?q?=E7=99=BB=E9=8C=B2=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=80=80=E3=83=AD=E3=82=B0=E3=81=AB=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E3=81=95=E3=82=8C=E3=82=8B=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?id=E5=8F=96=E5=BE=97=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit df8f06a311c9b3d5f0a8683cfb141ce46ef5f0c8) --- Model/Behavior/Nc2ToNc3RegistrationBehavior.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php index 197dd86..3478430 100644 --- a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php +++ b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php @@ -652,8 +652,8 @@ private function __getLogArgument($nc2Registration) { 'item_id:' . $nc2Registration['Nc2RegistrationItem']['item_id']; } - return 'Nc2RegistrationItemData ' . - 'item_data_id:' . $nc2Registration['Nc2RegistrationItemData']['item_data_id']; + return 'Nc2RegistrationData ' . + 'data_id:' . $nc2Registration['Nc2RegistrationItemData']['data_id']; } }