From 2b24fdf2dc4f6851011011c4c26e5c61203fe4fb Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Fri, 28 Jul 2017 16:20:55 +0900 Subject: [PATCH 001/161] Move Nc2ToNc3Room::__savePublicTopRoomFromNc2 calling NetCommons3/NetCommons3#957 --- Model/Nc2ToNc3Room.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Model/Nc2ToNc3Room.php b/Model/Nc2ToNc3Room.php index c36bfc1..8b312c4 100644 --- a/Model/Nc2ToNc3Room.php +++ b/Model/Nc2ToNc3Room.php @@ -120,6 +120,12 @@ public function migrate() { // @see https://github.com/NetCommons3/Rooms/blob/3.1.0/Model/Room.php#L516 $this->changeNc3CurrentLanguage(); + // 既存のパブリックルームのTopを対応付け + if (!$this->__savePublicTopRoomFromNc2()) { + return false; + } + $this->saveExistingMap($nc2Pages); + foreach ($nc2Pages as $nc2Page) { if (!$this->__saveRoomFromNc2($nc2Page['Nc2Page']['lang_dirname'])) { $this->restoreNc3CurrentLanguage(); @@ -161,11 +167,6 @@ private function __saveRoomFromNc2($nc2LangDirName) { $Room = ClassRegistry::init('Rooms.Room'); $RolesRoomsUser = ClassRegistry::init('Rooms.RolesRoomsUser'); - if (!$this->__savePublicTopRoomFromNc2()) { - return false; - } - $this->saveExistingMap($nc2Pages); // 既存のパブリックルームのTopを対応付け - foreach ($nc2Pages as $nc2Page) { /* if (!$this->isMigrationRow($nc2User)) { From 48792a9b801fb4f0dab3a7251fb4fa4aa9150417 Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Fri, 28 Jul 2017 18:37:48 +0900 Subject: [PATCH 002/161] =?UTF-8?q?=E6=96=BD=E8=A8=AD=E4=BA=88=E7=B4=84?= =?UTF-8?q?=E3=80=80=E6=99=82=E9=96=93=E6=9E=A0=E3=81=8CUTC=E3=81=A7Start?= =?UTF-8?q?=E3=80=80END=E3=81=8C=E9=80=86=E7=82=B9=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AA=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=9F=E3=81=AE=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/Nc2ToNc3Reservation.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Model/Nc2ToNc3Reservation.php b/Model/Nc2ToNc3Reservation.php index 423e855..4942d35 100644 --- a/Model/Nc2ToNc3Reservation.php +++ b/Model/Nc2ToNc3Reservation.php @@ -888,7 +888,7 @@ protected function _saveNc3ReservationTimeframeFromNc2($nc2Timeframes) { $Timeframe->create(); - if (!$Timeframe->save($data)) { + if (!$Timeframe->saveTimeframe($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback $Timeframe->rollback(); @@ -943,9 +943,9 @@ protected function _generateNc3ReservationTimeframe($nc2Timeframe) { 'ReservationTimeframe' => [ 'language_id' => $this->getLanguageIdFromNc2(), 'title' => $nc2Timeframe['Nc2ReservationTimeframe']['timeframe_name'], - 'start_time' => $this->_convertTimeframeTime( $nc2Timeframe['Nc2ReservationTimeframe']['start_time']), + 'start_time' => $this->_convertTimeframeTime( $nc2Timeframe['Nc2ReservationTimeframe']['start_time'], $nc2Timeframe['Nc2ReservationTimeframe']['timezone_offset']), // 150000形式からTIME形式→そのままでも入るので変換不要 - 'end_time' => $this->_convertTimeframeTime($nc2Timeframe['Nc2ReservationTimeframe']['end_time']), + 'end_time' => $this->_convertTimeframeTime($nc2Timeframe['Nc2ReservationTimeframe']['end_time'], $nc2Timeframe['Nc2ReservationTimeframe']['timezone_offset']), 'timezone' => $this->convertTimezone($nc2Timeframe['Nc2ReservationTimeframe']['timezone_offset']), 'color' => $nc2Timeframe['Nc2ReservationTimeframe']['timeframe_color'], 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2Timeframe['Nc2ReservationTimeframe']), @@ -962,9 +962,21 @@ protected function _generateNc3ReservationTimeframe($nc2Timeframe) { * @param string $time 150000形式 * @return string */ - protected function _convertTimeframeTime($time) { + protected function _convertTimeframeTime($time, $timezoneOffset) { + // DBにはUTC時間で保存されてる + // saveTimeframe()にはtimezone で指定したタイムゾーンの時間で渡す $hour = substr($time, 0, 2); $min = substr($time, 2, 2); + $time = $hour . ':' . $min; + + $userTimezone = $this->convertTimezone($timezoneOffset); + + $time = new DateTime($time, new DateTimeZone('UTC')); + $time->setTimezone(new DateTimeZone($userTimezone)); + $ret = $time->format('H:i'); +return $ret; + $hour = $hour + $timezoneOffset; + return $hour . ':' . $min; } From 9ad2566e908c51bf1adc854eaa8cfbe032863511 Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Fri, 28 Jul 2017 19:41:05 +0900 Subject: [PATCH 003/161] =?UTF-8?q?=E6=96=BD=E8=A8=AD=E4=BA=88=E7=B4=84?= =?UTF-8?q?=E3=80=80=E6=96=BD=E8=A8=AD=E7=AE=A1=E7=90=86=E8=80=85=E3=81=A8?= =?UTF-8?q?=E3=81=97=E3=81=A6system=5Fadministrator,=20administrator=20?= =?UTF-8?q?=E3=82=92=E7=99=BB=E9=8C=B2=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Reservation.php | 38 ++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Model/Nc2ToNc3Reservation.php b/Model/Nc2ToNc3Reservation.php index 4942d35..85f2795 100644 --- a/Model/Nc2ToNc3Reservation.php +++ b/Model/Nc2ToNc3Reservation.php @@ -198,6 +198,20 @@ protected function _migrateLocation() { $Nc2Model = $this->getNc2Model('reservation_location'); $nc2Records = $Nc2Model->find('all'); + $User = ClassRegistry::init('Users.User'); + $approvalUsers = $User->find('all', [ + 'conditions' => [ + 'User.role_key' => [ + 'system_administrator', + 'administrator' + ] + ], + 'fields' => ['User.id'], + 'recursive' => -1 + ]); + + $ApplovalUser = ClassRegistry::init('Reservations.ReservationLocationsApprovalUser'); + $Nc3Model = ClassRegistry::init('Reservations.ReservationLocation'); foreach ($nc2Records as $nc2Record) { $Nc3Model->begin(); @@ -208,7 +222,7 @@ protected function _migrateLocation() { continue; } $Nc3Model->create(); - if (!$Nc3Model->save($data)) { + if (!$savedData = $Nc3Model->save($data)) { // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback $Nc3Model->rollback(); @@ -221,6 +235,28 @@ protected function _migrateLocation() { continue; } + // 承認者を登録しておく + $locationKey = $savedData['ReservationLocation']['key']; + foreach ($approvalUsers as $user) { + $approvalUser = [ + 'ReservationLocationsApprovalUser' => [ + 'location_key' => $locationKey, + 'user_id' => $user['User']['id'], + ] + ]; + $ApplovalUser->create(); + if (!$ApplovalUser->save($approvalUser)) { + $Nc3Model->rollback(); + + // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。var_exportは大丈夫らしい。。。 + // @see https://phpmd.org/rules/design.html + $message = $this->getLogArgument($approvalUser) . "\n" . + var_export($Nc3Model->validationErrors, true); + $this->writeMigrationLog($message); + continue; + } + } + $nc2Id = $nc2Record['Nc2ReservationLocation']['location_id']; $idMap = [ $nc2Id => $Nc3Model->id From 1028e331f8907870d52effa2dd0a76868b401957 Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Sat, 29 Jul 2017 11:52:31 +0900 Subject: [PATCH 004/161] =?UTF-8?q?=E6=96=BD=E8=A8=AD=E4=BA=88=E7=B4=84?= =?UTF-8?q?=E3=80=80=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E3=82=A2=E3=82=A4?= =?UTF-8?q?=E3=82=B3=E3=83=B3=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3Reservation.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Model/Nc2ToNc3Reservation.php b/Model/Nc2ToNc3Reservation.php index 85f2795..1a7e260 100644 --- a/Model/Nc2ToNc3Reservation.php +++ b/Model/Nc2ToNc3Reservation.php @@ -692,6 +692,8 @@ protected function _generateNc3ReservationEvent($nc2Record) { $mapIdList = $Nc2ToNc3Map->getMapIdList('ReservationRrule', $nc2Detail['Nc2ReservationReserveDetail']['reserve_details_id']); $rruleId = $mapIdList[$nc2Detail['Nc2ReservationReserveDetail']['reserve_details_id']]; + $titleiCon = $this->convertTitleIcon($nc2Record['Nc2ReservationReserve']['title_icon']); + $titleiCon = ($titleiCon === null) ? '' : $titleiCon; $data = [ 'ReservationEvent' => [ 'reservation_rrule_id' => $rruleId, @@ -699,7 +701,7 @@ protected function _generateNc3ReservationEvent($nc2Record) { 'language_id' => $this->getLanguageIdFromNc2(), 'target_user' => $targetUser['User']['id'], 'title' => $nc2Record['Nc2ReservationReserve']['title'], - 'title_icon' => '', // TODO + 'title_icon' => $titleiCon, 'location' => '', 'contact' => $contact, 'description' => $description, From b356f73332dc4e0727bd3194a8d3b6e68897ad7b Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Mon, 31 Jul 2017 14:14:06 +0900 Subject: [PATCH 005/161] =?UTF-8?q?NC3=E3=81=A7content=5Fpublishable?= =?UTF-8?q?=E3=81=AF=E4=BF=9D=E5=AD=98=E3=81=97=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E3=80=81=E6=B1=8E=E7=94=A8DB=E3=81=AE=E7=A7=BB=E8=A1=8C?= =?UTF-8?q?=E3=81=A7=E3=82=82content=5Fpublishable=E3=83=AC=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=82=92=E4=BD=9C=E6=88=90=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=82=92=E3=82=84=E3=82=81=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Nc2ToNc3MultidatabaseBehavior.php | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 57012be..60252e9 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -293,15 +293,16 @@ protected function _makePermissiondata($nc2AuthorityCode, $nc3RoomId) { $commentPublishable = 1; } - // 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_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') { @@ -313,6 +314,7 @@ protected function _makePermissiondata($nc2AuthorityCode, $nc3RoomId) { ]; } + // コメント投稿権限とコメント承認権限はroom_administrator, chief_editor以外を設定する if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) { $data['BlockRolePermission']['content_comment_publishable'][$roleKey] = [ 'id' => null, From 865088398e67148ac7bce33ea4243883e1c5b5ea Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 1 Aug 2017 21:12:06 +0900 Subject: [PATCH 006/161] Fix Questionnaire to each room NetCommons3/NetCommons3#958 --- Model/Nc2ToNc3Frame.php | 5 ++ Model/Nc2ToNc3Questionnaire.php | 90 ++++++++++++++++++++++----------- 2 files changed, 65 insertions(+), 30 deletions(-) diff --git a/Model/Nc2ToNc3Frame.php b/Model/Nc2ToNc3Frame.php index 2cc2e39..0c58d4d 100644 --- a/Model/Nc2ToNc3Frame.php +++ b/Model/Nc2ToNc3Frame.php @@ -134,8 +134,10 @@ private function __saveFrameFromNc2WhileDividing() { private function __saveFrameFromNc2($nc2Blocks) { /* @var $Frame Frame */ /* @var $Room Room */ + /* @var $Block Block */ $Frame = ClassRegistry::init('Frames.Frame'); $Room = ClassRegistry::init('Rooms.Room'); + $Block = ClassRegistry::init('Blocks.Block'); //$this->saveExistingMap($nc2Blocks); $nc3CurrentRoom = null; @@ -161,6 +163,9 @@ private function __saveFrameFromNc2($nc2Blocks) { } $nc3Room = $Room->findById($data['Frame']['room_id'], null, null, -1); Current::write('Room', $nc3Room['Room']); + // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.3/Model/Questionnaire.php#L442 + // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.3/Model/QuestionnaireSetting.php#L138-L141 + $Block->create(false); $Frame->create(false); if (!($data = $Frame->saveFrame($data))) { diff --git a/Model/Nc2ToNc3Questionnaire.php b/Model/Nc2ToNc3Questionnaire.php index 622b4ee..d7887a3 100644 --- a/Model/Nc2ToNc3Questionnaire.php +++ b/Model/Nc2ToNc3Questionnaire.php @@ -113,11 +113,9 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { /* @var $Questionnaire Questionnaire */ /* @var $Nc2Questionnaire AppModel */ - /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ /* @var $Frame Frame */ $Questionnaire = ClassRegistry::init('Questionnaires.Questionnaire'); $Nc2QBlock = $this->getNc2Model('questionnaire_block'); - $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); $Frame = ClassRegistry::init('Frames.Frame'); foreach ($nc2Questionnaires as $nc2Questionnaire) { $Questionnaire->begin(); @@ -136,28 +134,14 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { $Questionnaire->rollback(); continue; } - // 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) { + + // PHPMD.ExcessiveMethodLength になるので、別メソッドにした。 + if (!$this->__setCurrentData($nc2QBlock)) { $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2Questionnaire)); $this->writeMigrationLog($message); $Questionnaire->rollback(); continue; } - $nc3RoomId = $frameMap['Frame']['room_id']; - Current::write('Frame.key', $frameMap['Frame']['key']); - Current::write('Frame.room_id', $nc3RoomId); - Current::write('Frame.plugin_key', 'questionnaires'); - - // @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 - Current::write('Room.id', $nc3RoomId); - CurrentBase::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; // Model::idを初期化しないとUpdateになってしまう。 // @see https://github.com/NetCommons3/Questionnaires/blob/3.1.0/Model/Questionnaire.php#L442 @@ -180,9 +164,6 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { continue; } - // 登録処理で使用しているデータを空に戻す - unset(CurrentBase::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); - $nc2QuestionnaireId = $nc2Questionnaire['Nc2Questionnaire']['questionnaire_id']; $idMap = [ $nc2QuestionnaireId => $Questionnaire->id @@ -199,14 +180,8 @@ private function __saveQuestionnaireFromNc2($nc2Questionnaires) { } } - // 登録処理で使用しているデータを空に戻す - Current::remove('Frame.key'); - Current::remove('Frame.room_id'); - Current::remove('Frame.plugin_key'); - Current::remove('Plugin.key'); - Current::remove('Room.id'); - // Fatal error: Attempt to unset static property が発生。keyを指定した場合は発生しない。なんで? - //unset(CurrentBase::$permission); + // PHPMD.ExcessiveMethodLength になるので、別メソッドにした。 + $this->__unSetCurrentData(); $this->writeMigrationLog(__d('nc2_to_nc3', ' Questionnaire data Migration end.')); @@ -438,4 +413,59 @@ private function __saveQuestionnaireAnswerFromNc2($nc2QSummary, $nc3QAnswerSumma return true; } +/** + * Set Current data. + * + * @param array $nc2QBlock Nc2QuizBlock data. + * @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) { + 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']); + + // @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 + Current::write('Room.id', $nc3RoomId); + CurrentBase::$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'); + + // Fatal error: Attempt to unset static property が発生。keyを指定した場合は発生しない。なんで? + //unset(CurrentBase::$permission); + $nc3RoomIds = array_keys(CurrentBase::$permission); + foreach ($nc3RoomIds as $nc3RoomId) { + unset(CurrentBase::$permission[$nc3RoomId]); + } + } } From c677a7fc54f557566d8da6000b8ace78697cc849 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Fri, 4 Aug 2017 11:06:36 +0900 Subject: [PATCH 007/161] Add tex converting --- Model/Behavior/Nc2ToNc3WysiwygBehavior.php | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php index 95e830f..d681a26 100644 --- a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php +++ b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php @@ -53,6 +53,12 @@ public function convertWYSIWYG(Model $model, $content) { $replaces = array_merge($replaces, $strReplaceArguments[1]); } + $strReplaceArguments = $this->__getStrReplaceArgumentsOfTex($content); + if ($strReplaceArguments) { + $searches = array_merge($searches, $strReplaceArguments[0]); + $replaces = array_merge($replaces, $strReplaceArguments[1]); + } + $content = str_replace($searches, $replaces, $content); return $content; @@ -342,4 +348,31 @@ private function __getStrReplaceArgumentsOfCabinetFile($content) { return $strReplaceArguments; } +/** + * Get str_replace arguments of TeX. + * + * @param string $content Nc2 content. + * @return array str_replace arguments.(0:$search,1:$replace) + */ + private function __getStrReplaceArgumentsOfTex($content) { + $strReplaceArguments = []; + + $pattern = '//'; + preg_match_all($pattern, $content, $matches, PREG_SET_ORDER); + var_dump($matches); + foreach ($matches as $match) { + $strReplaceArguments[0][] = $match[0]; + + $texValue = str_replace("%_", "%", $match[1]); + $texValue = rawurldecode($texValue); + + $strReplaceArguments[1][] = + '' . + '$$' . $texValue . '$$' . + ''; + } + + return $strReplaceArguments; + } + } From 7f7c5867545e2bdb06b1e4ef8669322c926e9fc4 Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Sun, 6 Aug 2017 08:29:20 +0900 Subject: [PATCH 008/161] =?UTF-8?q?=E6=B1=8E=E7=94=A8DB=E3=80=80=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=81=A7=E6=89=BF=E8=AA=8D=E5=BF=85=E9=A0=88?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=9F=E3=82=89=E3=80=80?= =?UTF-8?q?=E6=B1=8E=E7=94=A8DB=E3=82=82=E6=89=BF=E8=AA=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E3=81=AB=E3=81=99=E3=82=8B=E3=80=82=E3=80=80=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=81=8C=E6=89=BF=E8=AA=8D=E4=B8=8D=E8=A6=81?= =?UTF-8?q?=E3=81=AE=E3=81=A8=E3=81=8D=E3=81=AFNC2=E3=81=AE=E6=B1=8E?= =?UTF-8?q?=E7=94=A8DB=E3=81=AE=E6=89=BF=E8=AA=8D=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=82=92=E5=BC=95=E3=81=8D=E7=B6=99=E3=81=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 60252e9..78088e7 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -98,12 +98,14 @@ public function generateNc3MultidatabaseData(Model $model, $nc2Multidatabase) { $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Multidatabase['Nc2Multidatabase']); $nc3Created = $this->_convertDate($nc2Multidatabase['Nc2Multidatabase']['insert_time']); - //$Nc2MultidatabaseBlock = $model->getNc2Model($model, 'multidatabase_block'); - //$nc2MultidatabaseBlock = $Nc2MultidatabaseBlock->find('first', [ - // 'conditions' => [ - // - // ] - //]) + // use_workflowはRoom.need_approval = 0のときに変更可能。need_approval=1なら1で固定 + $Room = ClassRegistry::init('Rooms.Room'); + $room = $Room->findById($roomMap['Room']['id']); + if ($room['Room']['need_approval']) { + $useWorkflow = 1; + } else { + $useWorkflow = $nc2Multidatabase['Nc2Multidatabase']['agree_flag']; + } $data = [ 'Frame' => [ @@ -135,7 +137,7 @@ public function generateNc3MultidatabaseData(Model $model, $nc2Multidatabase) { 'use_like' => $nc2Multidatabase['Nc2Multidatabase']['vote_flag'], 'use_unlike' => '0', 'use_comment' => $nc2Multidatabase['Nc2Multidatabase']['comment_flag'], - 'use_workflow' => $nc2Multidatabase['Nc2Multidatabase']['agree_flag'], + 'use_workflow' => $useWorkflow, 'use_comment_approval' => $nc2Multidatabase['Nc2Multidatabase']['agree_flag'], 'created_user' => $nc3CreatedUser, 'created' => $nc3Created, From b84d690e5731d887e61e98c958aaefd22e597afe Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Sun, 6 Aug 2017 08:30:06 +0900 Subject: [PATCH 009/161] =?UTF-8?q?Reformat=E3=80=80Code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Behavior/Nc2ToNc3ReservationBehavior.php | 33 +++++++++---------- Model/Nc2ToNc3Multidatabase.php | 14 ++++---- Model/Nc2ToNc3Reservation.php | 6 ++-- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3ReservationBehavior.php b/Model/Behavior/Nc2ToNc3ReservationBehavior.php index b57a51c..c67d2c5 100644 --- a/Model/Behavior/Nc2ToNc3ReservationBehavior.php +++ b/Model/Behavior/Nc2ToNc3ReservationBehavior.php @@ -11,44 +11,41 @@ App::uses('Nc2ToNc3BaseBehavior', 'Nc2ToNc3.Model/Behavior'); /** - * Nc2ToNc3BlogBehavior - * TODO Reservationにあわせる + * Nc2ToNc3ReservationBehavior */ - class Nc2ToNc3ReservationBehavior extends Nc2ToNc3BaseBehavior { /** * Get Log argument. * * @param Model $model Model using this behavior. - * @param array $nc2Journal Array data of Nc2Journal, Nc2JournalPost. + * @param array $Nc2Reservation Array data of Nc2Reservation, Nc2ReservationPost. * @return string Log argument */ - public function getLogArgument(Model $model, $nc2Journal) { - return $this->__getLogArgument($nc2Journal); + public function getLogArgument(Model $model, $Nc2Reservation) { + return $this->__getLogArgument($Nc2Reservation); } /** * Get Log argument. * - * @param array $nc2Journal Array data of Nc2CalendarManage, Nc2CalendarBlock and Nc2CalendarPlan. + * @param array $Nc2Reservation Array data of Nc2CalendarManage, Nc2CalendarBlock and Nc2CalendarPlan. * @return string Log argument */ - private function __getLogArgument($nc2Journal) { - if (isset($nc2Journal['Nc2Journal'])) { - return 'Nc2Journal ' . - 'journal_id:' . $nc2Journal['Nc2Journal']['journal_id']; + private function __getLogArgument($Nc2Reservation) { + if (isset($Nc2Reservation['Nc2Reservation'])) { + return 'Nc2Reservation ' . + 'journal_id:' . $Nc2Reservation['Nc2Reservation']['journal_id']; } - if (isset($nc2Journal['Nc2JournalBlock'])) { - return 'Nc2JournalBlock ' . - 'block_id:' . $nc2Journal['Nc2JournalBlock']['block_id']; + if (isset($Nc2Reservation['Nc2ReservationBlock'])) { + return 'Nc2ReservationBlock ' . + 'block_id:' . $Nc2Reservation['Nc2ReservationBlock']['block_id']; } - if (isset($nc2Journal['Nc2JournalPost'])) { - return 'Nc2JournalPost ' . - 'post_id:' . $nc2Journal['Nc2JournalPost']['post_id']; + if (isset($Nc2Reservation['Nc2ReservationPost'])) { + return 'Nc2ReservationPost ' . + 'post_id:' . $Nc2Reservation['Nc2ReservationPost']['post_id']; } } - } \ No newline at end of file diff --git a/Model/Nc2ToNc3Multidatabase.php b/Model/Nc2ToNc3Multidatabase.php index a1eab6d..6520bcc 100644 --- a/Model/Nc2ToNc3Multidatabase.php +++ b/Model/Nc2ToNc3Multidatabase.php @@ -107,7 +107,7 @@ public function migrate() { $MetadataContent = ClassRegistry::init('Multidatabases.MultidatabaseContent'); $MetadataSetting = ClassRegistry::init('Multidatabases.MultidatabaseMetadataSetting'); //$MetadataContent->virtualFields['number'] = 0; - foreach($metadata as $metadatum) { + foreach ($metadata as $metadatum) { $colNo = $metadatum['MultidatabaseMetadata']['col_no']; $result = $MetadataContent->find('first', [ 'conditions' => [ @@ -123,7 +123,7 @@ public function migrate() { if ($number === null) { $number = 0; } - }else{ + } else { $number = 0; } @@ -171,7 +171,6 @@ private function __saveNc3MultidatabaseFromNc2($nc2Multidatabases) { $MultidatabaseSetting = ClassRegistry::init('Multidatabases.MultidatabaseSetting'); $MailSetting = ClassRegistry::init('Mails.MailSetting'); - foreach ($nc2Multidatabases as $nc2Multidatabase) { $Multidatabase->begin(); try { @@ -215,7 +214,7 @@ private function __saveNc3MultidatabaseFromNc2($nc2Multidatabases) { // 'BlockRolePermission' =>$data['BlockRolePermission'] //]; - foreach($data['BlockRolePermission'] as &$permission){ + foreach ($data['BlockRolePermission'] as &$permission) { foreach ($permission as &$role){ $role['block_key'] = $block['Block']['key']; } @@ -257,7 +256,6 @@ private function __saveNc3MultidatabaseFromNc2($nc2Multidatabases) { continue; } - unset(CurrentBase::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); $nc2MultidatabaseId = $nc2Multidatabase['Nc2Multidatabase']['multidatabase_id']; @@ -268,7 +266,7 @@ private function __saveNc3MultidatabaseFromNc2($nc2Multidatabases) { // ダミーでSaveしたmetadataレコードの削除 $savedData = $Multidatabase->findById($Multidatabase->id); - $key = $savedData['Multidatabase']['key']; + $key = $savedData['Multidatabase']['key']; $Metadata->deleteAll(['key' => $key], false, false); $Multidatabase->commit(); @@ -441,7 +439,7 @@ private function __saveNc3MultidatabaseMetadataFromNc2($nc2Metadata) { * * @param array $nc2MultidbContents Nc2JournalPost data. * @return bool True on success - * @throws Exception + * @throws InternalErrorException */ private function __saveNc3MultidbContentFromNc2($nc2MultidbContents) { $this->writeMigrationLog(__d('nc2_to_nc3', ' Multidatabase Content Migration start.')); @@ -518,7 +516,7 @@ private function __saveNc3MultidbContentFromNc2($nc2MultidbContents) { // ここでファイルパスワード保存 if (isset($data['AuthorizationKey'])) { - foreach($data['AuthorizationKey'] as $authKey) { + foreach ($data['AuthorizationKey'] as $authKey) { if (! $AuthorizationKey->saveAuthorizationKey( 'MultidatabaseContent', $DbContent->id, diff --git a/Model/Nc2ToNc3Reservation.php b/Model/Nc2ToNc3Reservation.php index 1a7e260..e999dda 100644 --- a/Model/Nc2ToNc3Reservation.php +++ b/Model/Nc2ToNc3Reservation.php @@ -998,6 +998,7 @@ protected function _generateNc3ReservationTimeframe($nc2Timeframe) { * convert TimeFrame time * * @param string $time 150000形式 + * @param float $timezoneOffset +12.0〜-12.0 * @return string */ protected function _convertTimeframeTime($time, $timezoneOffset) { @@ -1012,10 +1013,7 @@ protected function _convertTimeframeTime($time, $timezoneOffset) { $time = new DateTime($time, new DateTimeZone('UTC')); $time->setTimezone(new DateTimeZone($userTimezone)); $ret = $time->format('H:i'); -return $ret; - $hour = $hour + $timezoneOffset; - - return $hour . ':' . $min; + return $ret; } /** From 2bb9e800b6f448ce82ba55358d3b9dee75240fbb Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Sun, 6 Aug 2017 11:05:27 +0900 Subject: [PATCH 010/161] =?UTF-8?q?=E6=B1=8E=E7=94=A8DB=E3=80=80NC2?= =?UTF-8?q?=E3=81=A7=E3=82=B3=E3=83=B3=E3=83=86=E3=83=B3=E3=83=84=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E5=BE=8C=E3=81=AB=E5=86=8D=E5=BA=A6=E7=A7=BB=E8=A1=8C?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=A8Notice=E7=99=BA=E7=94=9F=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=81=AE=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/Nc2ToNc3MultidatabaseBehavior.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 78088e7..4545477 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -633,22 +633,24 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { $colNo = $colNoList[$nc3MetadataId]; if (in_array($metadata[$nc3MetadataId]['type'], ['image', 'file'])) { + $fileFieldName = 'value' . $colNo . '_attach'; + $DbContent->uploadSettings($fileFieldName); + // ?action=multidatabase_action_main_filedownload&upload_id=1 $value = $nc2metadataContent['Nc2MultidatabaseMetadataContent']['content']; - $eualPos = strrpos($value, '='); - if ($eualPos === false) { + $equalPos = strrpos($value, '='); + if ($equalPos === false) { // アップロードされてない →何もすることないか - } else { // アップロードファイルあり $data['MultidatabaseContent']['value' . $colNo] = ''; - $nc2UploadId = substr($value, $eualPos + 1); + $nc2UploadId = substr($value, $equalPos + 1); $file = $Nc2ToNc3Upload->generateUploadFile($nc2UploadId); - $fileFieldName = 'value' . $colNo . '_attach'; + //$fileFieldName = 'value' . $colNo . '_attach'; //$fileFieldName = 'value'.$colNo.''; $data['MultidatabaseContent'][$fileFieldName] = $file; - $DbContent->uploadSettings($fileFieldName); + //$DbContent->uploadSettings($fileFieldName); // ダウンロードパスワード $nc2DbFile = $Nc2DbFile->findByUploadId($nc2UploadId); From b145c47bdc82efd8211875503358401243996c3a Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Mon, 7 Aug 2017 11:02:45 +0900 Subject: [PATCH 011/161] Remove var_dump --- Model/Behavior/Nc2ToNc3WysiwygBehavior.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php index d681a26..dbdc5c8 100644 --- a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php +++ b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php @@ -359,7 +359,6 @@ private function __getStrReplaceArgumentsOfTex($content) { $pattern = '//'; preg_match_all($pattern, $content, $matches, PREG_SET_ORDER); - var_dump($matches); foreach ($matches as $match) { $strReplaceArguments[0][] = $match[0]; From 9bffc78b5f7baa62d922530683e9fd2ac3c23f4f Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Mon, 7 Aug 2017 11:31:17 +0900 Subject: [PATCH 012/161] Fix not install module NetCommons3/NetCommons3#939 --- Model/Nc2ToNc3Faq.php | 9 +++++++++ Model/Nc2ToNc3Video.php | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Model/Nc2ToNc3Faq.php b/Model/Nc2ToNc3Faq.php index 36ee676..c0b48c2 100644 --- a/Model/Nc2ToNc3Faq.php +++ b/Model/Nc2ToNc3Faq.php @@ -30,6 +30,7 @@ * @method array generateNc3FaqQuestionData($nc3Faq, $nc2Question) * @method array generateNc3FaqFrameSettingData($nc2FaqBlock) * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Nc2ToNc3Faq extends Nc2ToNc3AppModel { @@ -61,6 +62,14 @@ class Nc2ToNc3Faq extends Nc2ToNc3AppModel { public function migrate() { $this->writeMigrationLog(__d('nc2_to_nc3', 'Faq Migration start.')); + /* @var $Nc2ToNc3Plugin Nc2ToNc3Plugin */ + $Nc2ToNc3Plugin = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Plugin'); + $pluginMap = $Nc2ToNc3Plugin->getMap(); + if (!Hash::extract($pluginMap, '{n}.Plugin[key=faqs]')) { + $this->writeMigrationLog(__d('nc2_to_nc3', 'Faq is not installed.')); + return true; + } + /* @var $Nc2Faq AppModel */ $Nc2Faq = $this->getNc2Model('faq'); $nc2Faqs = $Nc2Faq->find('all'); diff --git a/Model/Nc2ToNc3Video.php b/Model/Nc2ToNc3Video.php index 3dfa41a..2a9dca1 100644 --- a/Model/Nc2ToNc3Video.php +++ b/Model/Nc2ToNc3Video.php @@ -53,7 +53,13 @@ class Nc2ToNc3Video extends Nc2ToNc3AppModel { public function migrate() { $this->writeMigrationLog(__d('nc2_to_nc3', 'Video Migration start.')); - /* @var $Nc2Video AppModel */ + /* @var $Nc2ToNc3Plugin Nc2ToNc3Plugin */ + $Nc2ToNc3Plugin = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Plugin'); + $pluginMap = $Nc2ToNc3Plugin->getMap(); + if (!Hash::extract($pluginMap, '{n}.Plugin[key=videos]')) { + $this->writeMigrationLog(__d('nc2_to_nc3', 'Multimedia is not installed.')); + return true; + } /* @var $Nc2MultimediaBlock AppModel */ $Nc2Multimedia = $this->getNc2Model('multimedia'); From 42252c8632e1d6679a438a106123f70ba6303495 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 8 Aug 2017 11:41:57 +0900 Subject: [PATCH 013/161] Fix comment --- Model/Behavior/Nc2ToNc3PageBaseBehavior.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3PageBaseBehavior.php b/Model/Behavior/Nc2ToNc3PageBaseBehavior.php index f9faba6..efaebaa 100644 --- a/Model/Behavior/Nc2ToNc3PageBaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3PageBaseBehavior.php @@ -36,7 +36,7 @@ class Nc2ToNc3PageBaseBehavior extends Nc2ToNc3BaseBehavior { * Convert Nc2Page permalink. * * @param Model $model Model using this behavior. - * @param strine $nc2Permalink Nc2Item data. + * @param string $nc2Permalink Nc2Item data. * @return string Converted Nc2Page permalink. */ public function convertPermalink(Model $model, $nc2Permalink) { @@ -110,7 +110,7 @@ protected function _getMap($nc2PageIds) { /** * Convert Nc2Page permalink. * - * @param strine $nc2Permalink Nc2Item data. + * @param string $nc2Permalink Nc2Item data. * @return string Converted Nc2Page permalink. */ protected function _convertPermalink($nc2Permalink) { From d3eb1fb6bea13c1f4bfbab59bb1ae50ae17fc57f Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Wed, 9 Aug 2017 10:07:46 +0900 Subject: [PATCH 014/161] ReformatCode --- Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 4545477..006cbce 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -557,7 +557,7 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { $multidatabase = $Multidatabase->findById($nc3DbId, ['id', 'block_id', 'key'], null, -1); $Metadata = ClassRegistry::init('Multidatabases.MultidatabaseMetadata'); - $metadata =$Metadata->find('all', [ + $metadata = $Metadata->find('all', [ 'conditions' => [ 'multidatabase_id' => $nc3DbId, ] @@ -665,7 +665,6 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { // download_content $data['DownloadCount']['value' . $colNo] = $nc2DbFile['Nc2MultidatabaseFile']['download_count']; - } } elseif ($metadata[$nc3MetadataId]['type'] == 'checkbox') { From 4ed8aba05d97a87e08f01ce0f30b715911224cb9 Mon Sep 17 00:00:00 2001 From: RyujiAMANO Date: Wed, 9 Aug 2017 10:20:47 +0900 Subject: [PATCH 015/161] ReformatCode AND Add Comments --- .../Nc2ToNc3MultidatabaseBehavior.php | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php index 006cbce..2aa4833 100644 --- a/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3MultidatabaseBehavior.php @@ -77,7 +77,8 @@ public function generateNc3MultidatabaseData(Model $model, $nc2Multidatabase) { /* @var $Frame Frame */ $Frame = ClassRegistry::init('Frames.Frame'); $nc3RoomId = $roomMap['Room']['id']; - $nc3Frame = $Frame->findByRoomIdAndPluginKey($nc3RoomId, 'multidatabases', ['id','key'], null, -1); + $nc3Frame = $Frame->findByRoomIdAndPluginKey($nc3RoomId, 'multidatabases', ['id', 'key'], + null, -1); if (!$nc3Frame) { $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2Multidatabase)); $this->_writeMigrationLog($message); @@ -173,11 +174,25 @@ public function generateNc3MultidatabaseData(Model $model, $nc2Multidatabase) { return $data; } +/** + * メールの置き換え変数のコンバート。必要であればここで置換する + * + * @param string $text メール定型文 + * @return string + */ protected function _convertMailValiable($text) { - // TODO X-DATA, X-MDB使えないけどどうしよう + // 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 = [ @@ -211,7 +226,6 @@ protected function _makeMailSetting($model, $nc2Multidb, $nc3RoomId) { ]); $rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id'); - switch ($nc2Multidb['mail_authority']) { case 4: // NC2主担以上→Nc3ルーム管理者以上 @@ -253,6 +267,13 @@ protected function _makeMailSetting($model, $nc2Multidb, $nc3RoomId) { return $data; } +/** + * 権限配列の作成 + * + * @param int $nc2AuthorityCode NC2での投稿権限 + * @param int $nc3RoomId ルームID + * @return mixed + */ protected function _makePermissiondata($nc2AuthorityCode, $nc3RoomId) { $RoomRole = ClassRegistry::init('Rooms.RoomRole'); $RolesRoom = ClassRegistry::init('Rooms.RolesRoom'); @@ -265,7 +286,6 @@ protected function _makePermissiondata($nc2AuthorityCode, $nc3RoomId) { ]); $rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id'); - switch ($nc2AuthorityCode) { case 4: // NC2主担以上→Nc3ルーム管理者以上 @@ -424,6 +444,13 @@ public function generateNc3MultidatabaseFrameSettingData(Model $model, $nc2Multi return $data; } +/** + * NC3 metadataの準備 + * + * @param Model $model Nc2ToNc3Multidatabase + * @param array $nc2Metadatum NC2メタデータ + * @return array + */ public function generateNc3MultidatabaseMetadata(Model $model, $nc2Metadatum) { /* @var $Nc2ToNc3Map Nc2ToNc3Map */ $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); @@ -465,7 +492,7 @@ public function generateNc3MultidatabaseMetadata(Model $model, $nc2Metadatum) { 9 => 'date', 10 => 'created', 11 => 'updated' - ]; + ]; $type = $metadataTypeMap[$nc2Metadatum['Nc2MultidatabaseMetadata']['type']]; @@ -490,7 +517,6 @@ public function generateNc3MultidatabaseMetadata(Model $model, $nc2Metadatum) { $isTitle = ($nc2Metadatum['Nc2MultidatabaseMetadata']['metadata_id'] == $nc2Multidatabase['Nc2Multidatabase']['title_metadata_id']); - $data['MultidatabaseMetadata'] = [ //'key' => $nc3Multidatabase['Multidatabase']['key'], // 'multidatabase_id' => $nc3MultidatabaseId, @@ -498,8 +524,8 @@ public function generateNc3MultidatabaseMetadata(Model $model, $nc2Metadatum) { 'name' => $nc2Metadatum['Nc2MultidatabaseMetadata']['name'], 'col_no' => $colNo, 'type' => $type, - 'rank' => $nc2Metadatum['Nc2MultidatabaseMetadata']['display_sequence'] -1, - 'position' => $nc2Metadatum['Nc2MultidatabaseMetadata']['display_pos'] -1, + 'rank' => $nc2Metadatum['Nc2MultidatabaseMetadata']['display_sequence'] - 1, + 'position' => $nc2Metadatum['Nc2MultidatabaseMetadata']['display_pos'] - 1, 'selections' => $selections, 'is_require' => $nc2Metadatum['Nc2MultidatabaseMetadata']['require_flag'], 'is_title' => $isTitle, @@ -535,9 +561,7 @@ public function generateNc3MultidatabaseMetadata(Model $model, $nc2Metadatum) { * @param array $nc2MultidbContent Nc2MultidatabaseContent data. * @return array Nc3BlogEntry data. */ - public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { - $nc2ContentId = $nc2MultidbContent['Nc2MultidatabaseContent']['content_id']; $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); $mapIdList = $Nc2ToNc3Map->getMapIdList('MultidatabaseContent', $nc2ContentId); @@ -598,7 +622,7 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { // $data = [ - 'MultidatabaseContent' => [ + 'MultidatabaseContent' => [ 'multidatabase_key' => $dbKey, 'multidatabase_id' => $multidatabase['Multidatabase']['id'], 'language_id' => $this->getLanguageIdFromNc2($model), @@ -614,7 +638,6 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { ] ]; - $data['Like'] = [ 'like_count' => $nc2MultidbContent['Nc2MultidatabaseContent']['vote_count'], 'plugin_key' => 'multidatabases', @@ -625,7 +648,7 @@ public function generateNc3MultidbContent(Model $model, $nc2MultidbContent) { $Nc2DbFile = $this->getNc2Model($model, 'multidatabase_file'); // metadata content mapping - foreach ($nc2metadataContents as $nc2metadataContent){ + foreach ($nc2metadataContents as $nc2metadataContent) { $nc2MetadataId = $nc2metadataContent['Nc2MultidatabaseMetadataContent']['metadata_id']; $metadataMapIds = $Nc2ToNc3Map->getMapIdList('MultidatabaseMetadata', $nc2MetadataId); $nc3MetadataId = $metadataMapIds[$nc2MetadataId]; From d95ff5aeece6bda86ea22d80f631a0785775bfb5 Mon Sep 17 00:00:00 2001 From: s-nakajima Date: Sat, 12 Aug 2017 16:38:35 +0900 Subject: [PATCH 016/161] =?UTF-8?q?=E3=82=B2=E3=82=B9=E3=83=88=E6=A8=A9?= =?UTF-8?q?=E9=99=90=E3=82=92=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=81=A7=E8=BF=BD=E5=8A=A0=20https://github.com/NetCommons3/Ne?= =?UTF-8?q?tCommons3/issues/826?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Nc2ToNc3UserRole.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Model/Nc2ToNc3UserRole.php b/Model/Nc2ToNc3UserRole.php index 2dc7e48..a38c856 100644 --- a/Model/Nc2ToNc3UserRole.php +++ b/Model/Nc2ToNc3UserRole.php @@ -69,6 +69,22 @@ public function getMap($nc2RoleAuthorityIds = null) { ] ] ]; + //NetCommons 3.1.4以降、会員権限にゲスト権限(guest_user)を追加したため、ゲストはゲストで移行する + //ただし、NC3の権限管理でゲスト権限を削除した場合は、一般権限(common_user)にする + $UserRole = ClassRegistry::init('UserRoles.UserRole'); + $count = $UserRole->find('count', [ + 'recursive' => -1, + 'conditions' => [ + 'key' => 'guest_user' + ], + ]); + if ($count > 0) { + $this->__map['5'] = [ + 'UserRoleSetting' => [ + 'role_key' => 'guest_user' + ] + ]; + } } if (!isset($nc2RoleAuthorityIds)) { From ac9e55c9b45fface3dce9ecef55cbe6fb8a01b73 Mon Sep 17 00:00:00 2001 From: s-nakajima Date: Tue, 15 Aug 2017 01:13:46 +0900 Subject: [PATCH 017/161] =?UTF-8?q?=E5=85=A8=E4=BB=B6=E4=B8=80=E8=A6=A7?= =?UTF-8?q?=E3=80=81=E6=A0=B9=E8=A8=98=E4=BA=8B=E4=B8=80=E8=A6=A7=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=AB=E3=82=88=E3=82=8B=E4=BF=AE=E6=AD=A3=20https:?= =?UTF-8?q?//github.com/NetCommons3/NetCommons3/issues/882?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3BbsBehavior.php | 35 ++++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3BbsBehavior.php b/Model/Behavior/Nc2ToNc3BbsBehavior.php index b8872a5..c0afaa4 100644 --- a/Model/Behavior/Nc2ToNc3BbsBehavior.php +++ b/Model/Behavior/Nc2ToNc3BbsBehavior.php @@ -9,6 +9,7 @@ */ App::uses('Nc2ToNc3BaseBehavior', 'Nc2ToNc3.Model/Behavior'); +App::uses('BbsFrameSetting', 'Bbses.Model'); /** * Nc2ToNc3BbsBehavior @@ -105,13 +106,13 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock) { 'name' => $nc2Bbs['Nc2Bb']['bbs_name'], 'created' => $this->_convertDate($nc2BbsBlock['Nc2BbsBlock']['insert_time']), ], - 'BbsFrameSetting' => [ - 'id' => '', - 'frame_key' => $frameMap['Frame']['key'], - 'articles_per_page' => $nc2BbsBlock['Nc2BbsBlock']['visible_row'], - 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2BbsBlock['Nc2BbsBlock']), - 'created' => $this->_convertDate($nc2BbsBlock['Nc2BbsBlock']['insert_time']), - ], + //'BbsFrameSetting' => [ + // 'id' => '', + // 'frame_key' => $frameMap['Frame']['key'], + // 'articles_per_page' => $nc2BbsBlock['Nc2BbsBlock']['visible_row'], + // 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2BbsBlock['Nc2BbsBlock']), + // 'created' => $this->_convertDate($nc2BbsBlock['Nc2BbsBlock']['insert_time']), + //], 'BlocksLanguage' => [ 'language_id' => '', 'name' => $nc2Bbs['Nc2Bb']['bbs_name'] @@ -315,6 +316,24 @@ public function generateNc3BbsFrameSettingData(Model $model, $nc2BbsBlock) { 'block_id' => Hash::get($nc3Bbs, ['Bbs', 'block_id']), ]; + //表示タイプ(NC3.1.4以降対応) + if ($nc2BbsBlock['Nc2BbsBlock']['expand'] === '1') { + //フラット表示 + $data['BbsFrameSetting']['display_type'] = BbsFrameSetting::DISPLAY_TYPE_FLAT; + } else { + if ($nc2BbsBlock['Nc2BbsBlock']['display'] === '0') { + //根記事一覧 + $data['BbsFrameSetting']['display_type'] = BbsFrameSetting::DISPLAY_TYPE_ROOT; + } else { + //NC2の最新記事一覧、全件一覧および過去記事は、NC3では全件一覧にする + $data['BbsFrameSetting']['display_type'] = BbsFrameSetting::DISPLAY_TYPE_ALL; + } + } + if ($nc2BbsBlock['Nc2BbsBlock']['display'] === '1') { + //最新記事一覧の場合、表示件数を1にする + $data['BbsFrameSetting']['articles_per_page'] = 1; + } + return $data; } @@ -369,4 +388,4 @@ private function __getNc3ParentArticle($nc2ParentId) { return $nc3ParentArticle; } -} \ No newline at end of file +} From 6dfadfd116253eab75f39e50d5be86370224bfb3 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 15 Aug 2017 16:19:36 +0900 Subject: [PATCH 018/161] Fix writeMigrationLog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHP7からdebug_backtraceの結果が変わった。 http://blog.a-way-out.net/blog/2015/10/09/php7-backtrace-changes/ --- Model/Behavior/Nc2ToNc3BaseBehavior.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Model/Behavior/Nc2ToNc3BaseBehavior.php b/Model/Behavior/Nc2ToNc3BaseBehavior.php index ff4a0c2..65b1726 100644 --- a/Model/Behavior/Nc2ToNc3BaseBehavior.php +++ b/Model/Behavior/Nc2ToNc3BaseBehavior.php @@ -78,6 +78,7 @@ public function setup(Model $model, $config = array()) { public function writeMigrationLog(Model $model, $message) { $debugString = ''; $backtraces = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5); + if (isset($backtraces[4]) && isset($backtraces[4]['line']) && isset($backtraces[4]['class']) && @@ -86,6 +87,14 @@ public function writeMigrationLog(Model $model, $message) { $debugString = $backtraces[4]['class'] . ' on line ' . $backtraces[4]['line']; } + if (version_compare( PHP_VERSION, '7.0.0', '>=' ) && + isset($backtraces[2]['line']) && + isset($backtraces[3]['class']) && + $backtraces[0]['function'] == 'writeMigrationLog' + ) { + $debugString = $backtraces[3]['class'] . ' on line ' . $backtraces[2]['line']; + } + $this->_writeMigrationLog($message, $debugString); } From 69c6164e3e16f87b8c884ca4d09edf93dc2f4b6a Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 15 Aug 2017 19:03:27 +0900 Subject: [PATCH 019/161] Add Nc2ToNc3AccessCounter --- Model/Nc2ToNc3.php | 1 + Model/Nc2ToNc3AccessCounter.php | 330 ++++++++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) create mode 100644 Model/Nc2ToNc3AccessCounter.php diff --git a/Model/Nc2ToNc3.php b/Model/Nc2ToNc3.php index 36a68bc..1f6ba94 100644 --- a/Model/Nc2ToNc3.php +++ b/Model/Nc2ToNc3.php @@ -239,6 +239,7 @@ public function migration($data) { 'Nc2ToNc3Room', 'Nc2ToNc3Page', 'Nc2ToNc3Frame', + 'Nc2ToNc3AccessCounter', 'Nc2ToNc3Announcement', 'Nc2ToNc3Bbs', 'Nc2ToNc3Blog', diff --git a/Model/Nc2ToNc3AccessCounter.php b/Model/Nc2ToNc3AccessCounter.php new file mode 100644 index 0000000..4e22c59 --- /dev/null +++ b/Model/Nc2ToNc3AccessCounter.php @@ -0,0 +1,330 @@ + + * @link http://www.netcommons.org NetCommons Project + * @license http://www.netcommons.org/license.txt NetCommons License + */ + +App::uses('Nc2ToNc3AppModel', 'Nc2ToNc3.Model'); +App::uses('Current', 'NetCommons.Utility'); + +/** + * Nc2ToNc3AccessCounter + * + * @see Nc2ToNc3BaseBehavior + * @method void writeMigrationLog($message) + * @method Model getNc2Model($tableName) + * @method string getLanguageIdFromNc2() + * @method string convertDate($date) + * @method string convertLanguage($langDirName) + * @method array saveMap($modelName, $idMap) + * @method array getMap($nc2Id) + * @method void changeNc3CurrentLanguage($langDirName = null) + * @method void restoreNc3CurrentLanguage() + * + */ +class Nc2ToNc3AccessCounter extends Nc2ToNc3AppModel { + +/** + * Custom database table name, or null/false if no table association is desired. + * + * @var string + * @link http://book.cakephp.org/2.0/en/models/model-attributes.html#usetable + */ + public $useTable = false; + +/** + * List of behaviors to load when the model object is initialized. Settings can be + * passed to behaviors by using the behavior name as index. + * + * @var array + * @link http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors + */ + public $actsAs = [ + 'Nc2ToNc3.Nc2ToNc3Base' + ]; + +/** + * Migration method. + * + * @return bool True on success. + */ + public function migrate() { + $this->writeMigrationLog(__d('nc2_to_nc3', 'AccessCounter Migration start.')); + + /* @var $Nc2Counter AppModel */ + $Nc2Counter = $this->getNc2Model('counter'); + $nc2Counters = $Nc2Counter->find('all'); + if (!$this->__saveAccessCounterFromNc2($nc2Counters)) { + return false; + } + + $this->writeMigrationLog(__d('nc2_to_nc3', 'AccessCounter Migration end.')); + return true; + } + +/** + * Save AccessCounter from Nc2. + * + * @param array $nc2Counters Nc2Counter data. + * @return bool True on success + * @throws Exception + */ + private function __saveAccessCounterFromNc2($nc2Counters) { + $this->writeMigrationLog(__d('nc2_to_nc3', ' AccessCounter data Migration start.')); + + /* @var $AccessCounter AccessCounter */ + /* @var $CounterFrameSetting AccessCounterFrameSetting */ + $AccessCounter = ClassRegistry::init('AccessCounters.AccessCounter'); + $CounterFrameSetting = ClassRegistry::init('AccessCounters.AccessCounterFrameSetting'); + $Frame = ClassRegistry::init('Frames.Frame'); + + //BlockBehaviorがシングルトンで利用されるため、BlockBehavior::settingsを初期化 + //@see https://github.com/cakephp/cakephp/blob/2.9.6/lib/Cake/Model/BehaviorCollection.php#L128-L133 + //@see https://github.com/NetCommons3/AccessCounters/blob/3.1.3/Model/AccessCounter.php#L35 + $AccessCounter->Behaviors->Block->settings = []; + + $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); + $Block = ClassRegistry::init('Blocks.Block'); + $BlocksLanguage = ClassRegistry::init('Blocks.BlocksLanguage'); + foreach ($nc2Counters as $nc2Counter) { + $AccessCounter->begin(); + + $nc2Blockld = $nc2Counter['Nc2Counter']['block_id']; + $nc3Frame = $Nc2ToNc3Frame->getMap($nc2Blockld); + if (!$nc3Frame) { + $AccessCounter->rollback(); + continue; + } + + $data = $this->__generateNc3AccessCounterData($nc2Counter, $nc3Frame); + if (!$data) { + $AccessCounter->rollback(); + continue; + } + + //AccessCounter テーブルの移行を実施。SAVE前にCurrentのデータを書き換えが必要なため + $nc3RoomId = $nc3Frame['Frame']['room_id']; + Current::write('Plugin.key', 'access_counters'); + Current::write('Room.id', $nc3RoomId); + CurrentBase::$permission[$nc3RoomId]['Permission']['content_publishable']['value'] = true; + + // Model::idを初期化しないとUpdateになってしまう。 + $AccessCounter->create(); + $Block->create(); + $BlocksLanguage->create(); + + if (!$AccessCounter->saveAccessCounter($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 ここでrollback + $AccessCounter->rollback(); + + $message = $this->getLogArgument($nc2Counter) . "\n" . + var_export($AccessCounter->validationErrors, true); + $this->writeMigrationLog($message); + + $AccessCounter->rollback(); + continue; + } + + unset(CurrentBase::$permission[$nc3RoomId]['Permission']['content_publishable']['value']); + + $data = $this->__generateNc3AccessCounterFrameSettingData($nc2Counter, $nc3Frame, $AccessCounter->id); + $CounterFrameSetting->create(); + if (!$CounterFrameSetting->saveAccessCounterFrameSetting($data)) { + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、ここでrollback + $AccessCounter->rollback(); + + $message = $this->getLogArgument($nc2Counter) . "\n" . + var_export($CounterFrameSetting->validationErrors, true); + $this->writeMigrationLog($message); + + $AccessCounter->rollback(); + continue; + } + + if (!$Frame->saveFrame($data)) { + $message = $this->getLogArgument($nc2Counter) . "\n" . + var_export($Frame->validationErrors, true); + $this->writeMigrationLog($message); + + $AccessCounter->rollback(); + continue; + } + + $idMap = [ + $nc2Blockld => $AccessCounter->id + ]; + $this->saveMap('AccessCounter', $idMap); + + $AccessCounter->commit(); + } + + Current::remove('Room.id'); + Current::remove('Plugin.key'); + + $this->writeMigrationLog(__d('nc2_to_nc3', ' AccessCounter data Migration end.')); + return true; + } + +/** + * Generate AccessCounter data. + * + * @param array $nc2Counter Nc2Counter data. + * @param array $nc3Frame Nc3Frame data. + * @return bool True on success + */ + private function __generateNc3AccessCounterData($nc2Counter, $nc3Frame) { + /* @var $Nc2ToNc3User Nc2ToNc3User */ + $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); + + // Nc2Counterのshow_char_before,show_char_after,commentの優先順位でBlocksLanguage.nameとする。 + // すべてなければCounter + $nc3BlockName = $nc2Counter['Nc2Counter']['show_char_before']; + if (!strlen($nc3BlockName)) { + $nc3BlockName = $nc2Counter['Nc2Counter']['show_char_after']; + } + if (!strlen($nc3BlockName)) { + $nc3BlockName = $nc2Counter['Nc2Counter']['comment']; + } + if (!strlen($nc3BlockName)) { + $nc3BlockName = 'Counter'; + } + + $data = [ + 'AccessCounter' => [ + 'count' => $nc2Counter['Nc2Counter']['counter_num'], + 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2Counter['Nc2Counter']), + 'created' => $this->convertDate($nc2Counter['Nc2Counter']['insert_time']), + ], + 'Block' => [ + 'room_id' => $nc3Frame['Frame']['room_id'], + 'plugin_key' => 'access_counters' + ], + 'BlocksLanguage' => [ + 'name' => $nc3BlockName, + ], + 'Frame' => [ + 'id' => $nc3Frame['Frame']['id'] + ] + ]; + + $data = $this->__mergeExistData($nc2Counter, $data); + + return $data; + } + +/** + * Generate AccessCounterFrameSetting data. + * + * @param array $nc2Counter Nc2Counter data. + * @param array $nc3Frame Nc3Frame data. + * @param string $nc3AccessCounterId Nc3AccessCounter id. + * @return bool True on success + */ + private function __generateNc3AccessCounterFrameSettingData($nc2Counter, $nc3Frame, $nc3AccessCounterId) { + /* @var $Nc2ToNc3User Nc2ToNc3User */ + $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); + + $data['AccessCounterFrameSetting'] = [ + 'frame_key' => $nc3Frame['Frame']['key'], + 'display_type' => '1', // 対応できなのでとりあえず1 + 'display_digit' => $nc2Counter['Nc2Counter']['counter_digit'], + 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2Counter['Nc2Counter']), + 'created' => $this->convertDate($nc2Counter['Nc2Counter']['insert_time']), + ]; + + /* @var $AccessCounter AccessCounter */ + $AccessCounter = ClassRegistry::init('AccessCounters.AccessCounter'); + $nc3AccessCounter = $AccessCounter->findById($nc3AccessCounterId, 'Block.id', null, 0); + $data['Frame'] = [ + 'id' => $nc3Frame['Frame']['id'], + 'plugin_key' => 'access_counters', + 'block_id' => Hash::get($nc3AccessCounter, ['Block', 'id']), + ]; + + return $data; + } + +/** + * Get Log argument. + * + * @param array $nc2Counter Nc2Counter data + * @return string Log argument + */ + public function getLogArgument($nc2Counter) { + return 'Nc2Counter ' . + 'block_id:' . $nc2Counter['Nc2Counter']['block_id']; + } + +/** + * Merge exist data + * + * @param array $nc2Counter Nc2Counter data. + * @param array $nc3AccessCounter Nc3AccessCounter data. + * @return array Merge exist data. + */ + private function __mergeExistData($nc2Counter, $nc3AccessCounter) { + $AccessCounterMap = $this->__getMap($nc2Counter['Nc2Counter']['block_id']); + if ($AccessCounterMap) { + // 移行済み + return []; + + // Debug用 + /* + //$nc3AccessCounter['AccessCounter']['id'] = $AccessCounterMap['AccessCounter']['id']; + $nc3AccessCounter['AccessCounter']['block_key'] = $AccessCounterMap['AccessCounter']['block_key']; + + $nc3AccessCounter['Block']['id'] = $AccessCounterMap['AccessCounter']['block_id']; + $nc3AccessCounter['Block']['key'] = $AccessCounterMap['AccessCounter']['block_key']; + */ + } + + return $nc3AccessCounter; + } + +/** + * Get map + * + * @param array|string $nc2Blocklds Nc2Counter block_id. + * @return array Map data with Nc2Counter block_id as key. + */ + private function __getMap($nc2Blocklds) { + /* @var $Nc2ToNc3Map Nc2ToNc3Map */ + /* @var $AccessCounter AccessCounter */ + $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); + $AccessCounter = ClassRegistry::init('AccessCounters.AccessCounter'); + + $mapIdList = $Nc2ToNc3Map->getMapIdList('AccessCounter', $nc2Blocklds); + $query = [ + 'fields' => [ + 'AccessCounter.id', + 'AccessCounter.block_key', + ], + 'conditions' => [ + 'AccessCounter.id' => $mapIdList + ], + 'recursive' => -1, + ]; + $nc3AccessCounters = $AccessCounter->find('all', $query); + if (!$nc3AccessCounters) { + return $nc3AccessCounters; + } + + $map = []; + foreach ($nc3AccessCounters as $nc3AccessCounter) { + $nc2Id = array_search($nc3AccessCounter['AccessCounter']['id'], $mapIdList); + $map[$nc2Id] = $nc3AccessCounter; + } + + if (is_string($nc2Blocklds)) { + $map = $map[$nc2Blocklds]; + } + + return $map; + } + +} + From 3f2344e55699c61959e84160b58c7318c1874a10 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Sun, 20 Aug 2017 17:44:49 +0900 Subject: [PATCH 020/161] Fix Nc2ToNc3Registration --- .../Behavior/Nc2ToNc3RegistrationBehavior.php | 77 ++++++++++++------- Model/Nc2ToNc3Registration.php | 4 + 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php index b8a52ff..1df64aa 100644 --- a/Model/Behavior/Nc2ToNc3RegistrationBehavior.php +++ b/Model/Behavior/Nc2ToNc3RegistrationBehavior.php @@ -94,36 +94,59 @@ public function generateNc3RegistrationData(Model $model, $nc2Registration) { $endPeriod = $this->_convertDate($nc2Registration['Nc2Registration']['period']); } + /* @var $Nc2ToNc3Room Nc2ToNc3Room */ + $Nc2ToNc3Room = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Room'); + $roomMap = $Nc2ToNc3Room->getMap($nc2Registration['Nc2Registration']['room_id']); + if (!$roomMap) { + $message = __d('nc2_to_nc3', '%s does not migration.', $this->__getLogArgument($nc2Registration)); + $this->_writeMigrationLog($message); + return []; + } + /* @var $Nc2ToNc3User Nc2ToNc3User */ $Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User'); - $data['Registration'] = [ - 'key' => Hash::get($registrationMap, ['Registration', 'key']), - 'is_active' => '0', - 'status' => '3', - 'title' => $nc2Registration['Nc2Registration']['registration_name'], - //'title_icon' => $this->_convertTitleIcon($nc2Registration['Nc2Registration']['title_icon']), - 'is_total_show' => '0', - 'answer_timing' => $answerTiming, - 'is_key_pass_use' => RegistrationsComponent::USES_NOT_USE, - 'total_show_timing' => '0', - 'registration_mail_subject' => $nc2Registration['Nc2Registration']['mail_subject'], - 'registration_mail_body' => $nc2Registration['Nc2Registration']['mail_body'], - 'sub_title' => '', - 'is_answer_mail_send' => $nc2Registration['Nc2Registration']['mail_send'], - 'is_image_authentication' => $nc2Registration['Nc2Registration']['image_authentication'], - 'reply_to' => $nc2Registration['Nc2Registration']['rcpt_to'], - 'answer_start_period' => '', - 'answer_end_period' => $endPeriod, - 'is_limit_number' => (empty($nc2Registration['Nc2Registration']['limit_number']) ? '0' : '1'), - 'limit_number' => $nc2Registration['Nc2Registration']['limit_number'], - 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2Registration['Nc2Registration']), - 'created' => $this->_convertDate($nc2Registration['Nc2Registration']['insert_time']), + $nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Registration['Nc2Registration']); + $nc3Created = $this->_convertDate($nc2Registration['Nc2Registration']['insert_time']); + $data = [ + 'Registration' => [ + 'key' => Hash::get($registrationMap, ['Registration', 'key']), + 'is_active' => '1', + 'status' => '1', + 'title' => $nc2Registration['Nc2Registration']['registration_name'], + //'title_icon' => $this->_convertTitleIcon($nc2Registration['Nc2Registration']['title_icon']), + 'is_total_show' => '0', + 'answer_timing' => $answerTiming, + 'is_key_pass_use' => RegistrationsComponent::USES_NOT_USE, + 'total_show_timing' => '0', + 'registration_mail_subject' => $nc2Registration['Nc2Registration']['mail_subject'], + 'registration_mail_body' => $nc2Registration['Nc2Registration']['mail_body'], + 'sub_title' => '', + 'is_answer_mail_send' => $nc2Registration['Nc2Registration']['mail_send'], + 'is_image_authentication' => $nc2Registration['Nc2Registration']['image_authentication'], + 'reply_to' => $nc2Registration['Nc2Registration']['rcpt_to'], + 'answer_start_period' => '', + 'answer_end_period' => $endPeriod, + 'is_limit_number' => (empty($nc2Registration['Nc2Registration']['limit_number']) ? '0' : '1'), + 'limit_number' => $nc2Registration['Nc2Registration']['limit_number'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, + ], + 'Block' => [ + 'id' => '', + 'room_id' => $roomMap['Room']['id'], + 'plugin_key' => 'registrations', + 'name' => $nc2Registration['Nc2Registration']['registration_name'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, + ], + 'BlocksLanguage' => [ + 'language_id' => '', + 'name' => $nc2Registration['Nc2Registration']['registration_name'], + 'created_user' => $nc3CreatedUser, + 'created' => $nc3Created, + ], ]; - if ($nc2Registration['Nc2Registration']['status'] != '0') { - $data['Registration']['is_active'] = '1'; - $data['Registration']['status'] = '1'; - } if ($nc2Registration['Nc2Registration']['image_authentication'] == '1') { $data['Registration']['is_image_authentication'] = '0'; } @@ -343,7 +366,7 @@ private function __generateNc3RegistrationChoiceData($nc2Item) { $data[] = [ 'choice_sequence' => $nc3ChoiceSequence, 'choice_label' => $nc2Choice, - //'graph_color' => $this->_getGraphColor($nc3ChoiceSequence), + 'graph_color' => $this->_getGraphColor($nc3ChoiceSequence), 'created_user' => $Nc2ToNc3User->getCreatedUser($nc2Item['Nc2RegistrationItem']), 'created' => $this->_convertDate($nc2Item['Nc2RegistrationItem']['insert_time']), ]; diff --git a/Model/Nc2ToNc3Registration.php b/Model/Nc2ToNc3Registration.php index a90e5ee..355b751 100644 --- a/Model/Nc2ToNc3Registration.php +++ b/Model/Nc2ToNc3Registration.php @@ -130,6 +130,10 @@ private function __saveRegistrationFromNc2($nc2Registrations) { $this->writeCurrent($frameMap, 'registrations'); if (!$Registration->saveRegistration($data)) { + ini_set('xdebug.var_display_max_children', -1); + ini_set('xdebug.var_display_max_data', -1); + ini_set('xdebug.var_display_max_depth', -1); + // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback $Registration->rollback(); From 5f0c3b4b9babe337b0662a4a8d50708f91b6115a Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 29 Aug 2017 20:19:43 +0900 Subject: [PATCH 021/161] Add administrator map data --- Model/Nc2ToNc3UserRole.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Model/Nc2ToNc3UserRole.php b/Model/Nc2ToNc3UserRole.php index a38c856..1aa4c74 100644 --- a/Model/Nc2ToNc3UserRole.php +++ b/Model/Nc2ToNc3UserRole.php @@ -69,6 +69,28 @@ public function getMap($nc2RoleAuthorityIds = null) { ] ] ]; + + // Nc2Authority.user_authority_id:5(管理者)は全てadministrator + /* @var $Nc2Authority AppModel */ + $Nc2Authority = $this->getNc2Model('authorities'); + $nc2Administrators = $Nc2Authority->findAllBySystemFlagAndUserAuthorityId( + '0', + '5', + 'role_authority_id', + null, + null, + null, + -1 + ); + foreach ($nc2Administrators as $nc2Administrator) { + $nc2AuthorityId = $nc2Administrator['Nc2Authority']['role_authority_id']; + $this->__map[$nc2AuthorityId] = [ + 'UserRoleSetting' => [ + 'role_key' => 'administrator' + ] + ]; + } + //NetCommons 3.1.4以降、会員権限にゲスト権限(guest_user)を追加したため、ゲストはゲストで移行する //ただし、NC3の権限管理でゲスト権限を削除した場合は、一般権限(common_user)にする $UserRole = ClassRegistry::init('UserRoles.UserRole'); From ac8ddd1aa2aed342018ae16f0ad50401a0fb0edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9F=E7=94=B0=E5=8F=A3=E3=80=80=E6=BA=80?= Date: Fri, 15 Sep 2017 09:56:40 +0900 Subject: [PATCH 022/161] composer suppport --- composer.json | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 composer.json diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..d0dfeff --- /dev/null +++ b/composer.json @@ -0,0 +1,72 @@ +{ + "name": "netcommons/nc2-to-nc3", + "description": "Nc2ToNc3 Plugin for NetCommons3", + "type": "cakephp-plugin", + "keywords": ["cakephp", "nc2-to-nc3"], + "homepage": "http://www.netcommons.org/", + "license": "NetCommons License", + "extra": { + "installer-paths": { + "app/Plugin/{$name}": ["type:cakephp-plugin"] + } + }, + "repositories": [ + { + "type":"vcs", + "url": "https://github.com/akagane99/Nc2ToNc3" + } + ], + "require": { + "cakedc/migrations": "~2.2", + "netcommons/access-counters": "@dev", + "netcommons/announcements": "@dev", + "netcommons/auth-general": "@dev", + "netcommons/bbses": "@dev", + "netcommons/blogs": "@dev", + "netcommons/cabinets": "@dev", + "netcommons/calendars": "@dev", + "netcommons/categories": "@dev", + "netcommons/circular-notices": "@dev", + "netcommons/content-comments": "@dev", + "netcommons/faqs": "@dev", + "netcommons/frames": "@dev", + "netcommons/iframes": "@dev", + "netcommons/links": "@dev", + "netcommons/menus": "@dev", + "netcommons/multidatabases": "@dev", + "netcommons/pages": "@dev", + "netcommons/net-commons": "@dev", + "netcommons/photo-albums": "@dev", + "netcommons/questionnaires": "@dev", + "netcommons/quizzes": "@dev", + "netcommons/registrations": "@dev", + "netcommons/reservations": "@dev", + "netcommons/rooms": "@dev", + "netcommons/rss-readers": "@dev", + "netcommons/searches": "@dev", + "netcommons/tasks": "@dev", + "netcommons/topics": "@dev", + "netcommons/files": "@dev", + "netcommons/users": "@dev", + "netcommons/user-attributes": "@dev", + "netcommons/user-roles": "@dev", + "netcommons/videos": "@dev", + "netcommons/blocks": "@dev", + "netcommons/likes": "@dev" + }, + "authors": [ + { + "name": "kteraguchi", + "email": "kteraguchi@commonsnet.org", + "homepage": "https://github.com/kteraguchi", + "role": "Developer" + }, + { + "name": "NetCommons Community", + "homepage": "http://www.netcommons.org" + } + ], + "config": { + "vendor-dir": "vendors" + } +} From e535823a7ccabfa4516cfcc123b06bcde3b1256c Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Fri, 15 Sep 2017 10:21:15 +0900 Subject: [PATCH 023/161] Create composer.json --- composer.json | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 composer.json diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..d0dfeff --- /dev/null +++ b/composer.json @@ -0,0 +1,72 @@ +{ + "name": "netcommons/nc2-to-nc3", + "description": "Nc2ToNc3 Plugin for NetCommons3", + "type": "cakephp-plugin", + "keywords": ["cakephp", "nc2-to-nc3"], + "homepage": "http://www.netcommons.org/", + "license": "NetCommons License", + "extra": { + "installer-paths": { + "app/Plugin/{$name}": ["type:cakephp-plugin"] + } + }, + "repositories": [ + { + "type":"vcs", + "url": "https://github.com/akagane99/Nc2ToNc3" + } + ], + "require": { + "cakedc/migrations": "~2.2", + "netcommons/access-counters": "@dev", + "netcommons/announcements": "@dev", + "netcommons/auth-general": "@dev", + "netcommons/bbses": "@dev", + "netcommons/blogs": "@dev", + "netcommons/cabinets": "@dev", + "netcommons/calendars": "@dev", + "netcommons/categories": "@dev", + "netcommons/circular-notices": "@dev", + "netcommons/content-comments": "@dev", + "netcommons/faqs": "@dev", + "netcommons/frames": "@dev", + "netcommons/iframes": "@dev", + "netcommons/links": "@dev", + "netcommons/menus": "@dev", + "netcommons/multidatabases": "@dev", + "netcommons/pages": "@dev", + "netcommons/net-commons": "@dev", + "netcommons/photo-albums": "@dev", + "netcommons/questionnaires": "@dev", + "netcommons/quizzes": "@dev", + "netcommons/registrations": "@dev", + "netcommons/reservations": "@dev", + "netcommons/rooms": "@dev", + "netcommons/rss-readers": "@dev", + "netcommons/searches": "@dev", + "netcommons/tasks": "@dev", + "netcommons/topics": "@dev", + "netcommons/files": "@dev", + "netcommons/users": "@dev", + "netcommons/user-attributes": "@dev", + "netcommons/user-roles": "@dev", + "netcommons/videos": "@dev", + "netcommons/blocks": "@dev", + "netcommons/likes": "@dev" + }, + "authors": [ + { + "name": "kteraguchi", + "email": "kteraguchi@commonsnet.org", + "homepage": "https://github.com/kteraguchi", + "role": "Developer" + }, + { + "name": "NetCommons Community", + "homepage": "http://www.netcommons.org" + } + ], + "config": { + "vendor-dir": "vendors" + } +} From c5b182452e96870a6cc2f4bd766d28d2d9b64a67 Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Fri, 15 Sep 2017 14:01:12 +0900 Subject: [PATCH 024/161] upload error msg update --- Model/Nc2ToNc3Upload.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Model/Nc2ToNc3Upload.php b/Model/Nc2ToNc3Upload.php index 72686d9..f1d084e 100644 --- a/Model/Nc2ToNc3Upload.php +++ b/Model/Nc2ToNc3Upload.php @@ -78,7 +78,7 @@ public function generateUploadFile($nc2UploadId) { if (!is_readable($tmpName)) { $message = __d('nc2_to_nc3', '%s not found .', 'Nc2Upload upload_id:' . $nc2Upload['Nc2Upload']['upload_id']); - $this->writeMigrationLog($message); + $this->writeMigrationLog($message . ' - ' . $tmpName); return $data; } From a985b80efcb12a085b0931477679f8b70e99b32e Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Tue, 19 Sep 2017 16:43:45 +0900 Subject: [PATCH 025/161] Delete composer.json --- composer.json | 72 --------------------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 composer.json diff --git a/composer.json b/composer.json deleted file mode 100644 index d0dfeff..0000000 --- a/composer.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "netcommons/nc2-to-nc3", - "description": "Nc2ToNc3 Plugin for NetCommons3", - "type": "cakephp-plugin", - "keywords": ["cakephp", "nc2-to-nc3"], - "homepage": "http://www.netcommons.org/", - "license": "NetCommons License", - "extra": { - "installer-paths": { - "app/Plugin/{$name}": ["type:cakephp-plugin"] - } - }, - "repositories": [ - { - "type":"vcs", - "url": "https://github.com/akagane99/Nc2ToNc3" - } - ], - "require": { - "cakedc/migrations": "~2.2", - "netcommons/access-counters": "@dev", - "netcommons/announcements": "@dev", - "netcommons/auth-general": "@dev", - "netcommons/bbses": "@dev", - "netcommons/blogs": "@dev", - "netcommons/cabinets": "@dev", - "netcommons/calendars": "@dev", - "netcommons/categories": "@dev", - "netcommons/circular-notices": "@dev", - "netcommons/content-comments": "@dev", - "netcommons/faqs": "@dev", - "netcommons/frames": "@dev", - "netcommons/iframes": "@dev", - "netcommons/links": "@dev", - "netcommons/menus": "@dev", - "netcommons/multidatabases": "@dev", - "netcommons/pages": "@dev", - "netcommons/net-commons": "@dev", - "netcommons/photo-albums": "@dev", - "netcommons/questionnaires": "@dev", - "netcommons/quizzes": "@dev", - "netcommons/registrations": "@dev", - "netcommons/reservations": "@dev", - "netcommons/rooms": "@dev", - "netcommons/rss-readers": "@dev", - "netcommons/searches": "@dev", - "netcommons/tasks": "@dev", - "netcommons/topics": "@dev", - "netcommons/files": "@dev", - "netcommons/users": "@dev", - "netcommons/user-attributes": "@dev", - "netcommons/user-roles": "@dev", - "netcommons/videos": "@dev", - "netcommons/blocks": "@dev", - "netcommons/likes": "@dev" - }, - "authors": [ - { - "name": "kteraguchi", - "email": "kteraguchi@commonsnet.org", - "homepage": "https://github.com/kteraguchi", - "role": "Developer" - }, - { - "name": "NetCommons Community", - "homepage": "http://www.netcommons.org" - } - ], - "config": { - "vendor-dir": "vendors" - } -} From 304b8aa0979513915dd6692cc5f5024ff02aac6c Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Sun, 17 Sep 2017 18:32:30 +0900 Subject: [PATCH 026/161] =?UTF-8?q?composer=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 composer.json diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..2713036 --- /dev/null +++ b/composer.json @@ -0,0 +1,66 @@ +{ + "name": "netcommons/nc2-to-nc3", + "description": "Nc2ToNc3 Plugin for NetCommons3", + "type": "cakephp-plugin", + "keywords": ["cakephp", "nc2-to-nc3"], + "homepage": "http://www.netcommons.org/", + "license": "NetCommons License", + "extra": { + "installer-paths": { + "app/Plugin/{$name}": ["type:cakephp-plugin"] + } + }, + "require": { + "cakedc/migrations": "~2.2", + "netcommons/access-counters": "@dev", + "netcommons/announcements": "@dev", + "netcommons/auth-general": "@dev", + "netcommons/bbses": "@dev", + "netcommons/blogs": "@dev", + "netcommons/cabinets": "@dev", + "netcommons/calendars": "@dev", + "netcommons/categories": "@dev", + "netcommons/circular-notices": "@dev", + "netcommons/content-comments": "@dev", + "netcommons/faqs": "@dev", + "netcommons/frames": "@dev", + "netcommons/iframes": "@dev", + "netcommons/links": "@dev", + "netcommons/menus": "@dev", + "netcommons/multidatabases": "@dev", + "netcommons/pages": "@dev", + "netcommons/net-commons": "@dev", + "netcommons/photo-albums": "@dev", + "netcommons/questionnaires": "@dev", + "netcommons/quizzes": "@dev", + "netcommons/registrations": "@dev", + "netcommons/reservations": "@dev", + "netcommons/rooms": "@dev", + "netcommons/rss-readers": "@dev", + "netcommons/searches": "@dev", + "netcommons/tasks": "@dev", + "netcommons/topics": "@dev", + "netcommons/files": "@dev", + "netcommons/users": "@dev", + "netcommons/user-attributes": "@dev", + "netcommons/user-roles": "@dev", + "netcommons/videos": "@dev", + "netcommons/blocks": "@dev", + "netcommons/likes": "@dev" + }, + "authors": [ + { + "name": "kteraguchi", + "email": "kteraguchi@commonsnet.org", + "homepage": "https://github.com/kteraguchi", + "role": "Developer" + }, + { + "name": "NetCommons Community", + "homepage": "http://www.netcommons.org" + } + ], + "config": { + "vendor-dir": "vendors" + } +} From 2a799811f0c5205a8815a001723caed6438b5cf2 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Wed, 20 Sep 2017 11:06:45 +0900 Subject: [PATCH 027/161] Remove debug code --- Model/Nc2ToNc3Registration.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Model/Nc2ToNc3Registration.php b/Model/Nc2ToNc3Registration.php index 355b751..a90e5ee 100644 --- a/Model/Nc2ToNc3Registration.php +++ b/Model/Nc2ToNc3Registration.php @@ -130,10 +130,6 @@ private function __saveRegistrationFromNc2($nc2Registrations) { $this->writeCurrent($frameMap, 'registrations'); if (!$Registration->saveRegistration($data)) { - ini_set('xdebug.var_display_max_children', -1); - ini_set('xdebug.var_display_max_data', -1); - ini_set('xdebug.var_display_max_depth', -1); - // 各プラグインのsave○○にてvalidation error発生時falseが返ってくるがrollbackしていないので、 // ここでrollback $Registration->rollback(); From b804b56fa5decb2350828a02790a45444f43112c Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Wed, 20 Sep 2017 16:00:17 +0900 Subject: [PATCH 028/161] Fix for NetCommons3/NetCommons3#1026 --- Model/Nc2ToNc3Registration.php | 94 +++++++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/Model/Nc2ToNc3Registration.php b/Model/Nc2ToNc3Registration.php index a90e5ee..37a4cd3 100644 --- a/Model/Nc2ToNc3Registration.php +++ b/Model/Nc2ToNc3Registration.php @@ -76,6 +76,12 @@ public function migrate() { return false; } + $Nc2RegistrationBlock = $this->getNc2Model('registration_block'); + $nc2RBlocks = $Nc2RegistrationBlock->find('all'); + if (!$this->__saveFrameFromNc2($nc2RBlocks)) { + return false; + } + $this->writeMigrationLog(__d('nc2_to_nc3', 'Registration Migration end.')); return true; @@ -92,7 +98,6 @@ private function __saveRegistrationFromNc2($nc2Registrations) { $this->writeMigrationLog(__d('nc2_to_nc3', ' Registration data Migration start.')); /* @var $Registration Registration */ - /* @var $Nc2RegistrationBlock AppModel */ /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ /* @var $Frame Frame */ /* @var $Block Block */ @@ -177,7 +182,6 @@ private function __saveRegistrationDataFromNc2($nc2RegistrationData) { $this->writeMigrationLog(__d('nc2_to_nc3', ' RegistrationData data Migration start.')); /* @var $Registration Registration */ - /* @var $Registration RegistrationAnswerSummary */ /* @var $Nc2RegistrationItemData AppModel */ $Registration = ClassRegistry::init('Registrations.Registration'); $RAnswerSummary = ClassRegistry::init('Registrations.RegistrationAnswerSummary'); @@ -274,4 +278,90 @@ private function __saveRegistrationAnswerFromNc2($nc2ItemData, $nc3Registration, return true; } + +/** + * Save Frame from Nc2. + * + * @param array $nc2RBlocks Nc2RegistrationBlock data. + * @return bool True on success + * @throws Exception + */ + private function __saveFrameFromNc2($nc2RBlocks) { + $this->writeMigrationLog(__d('nc2_to_nc3', ' Frame data Migration start.')); + + /* @var $Nc2ToNc3Frame Nc2ToNc3Frame */ + /* @var $Frame Frame */ + /* @var $Nc2ToNc3Map Nc2ToNc3Map */ + /* @var $Registration Registration */ + $Nc2ToNc3Frame = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Frame'); + $Frame = ClassRegistry::init('Frames.Frame'); + $Nc2ToNc3Map = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3Map'); + $Registration = ClassRegistry::init('Registrations.Registration'); + foreach ($nc2RBlocks as $nc2RegistrationBlock) { + $Frame->begin(); + try { + $nc2BlockId = $nc2RegistrationBlock['Nc2RegistrationBlock']['block_id']; + $frameMap = $Nc2ToNc3Frame->getMap($nc2BlockId); + if (!$frameMap) { + $message = __d('nc2_to_nc3', '%s does not migration.', $this->getLogArgument($nc2RegistrationBlock)); + $this->writeMigrationLog($message); + + $Frame->rollback(); + continue; + } + + // RegistrationFrameModelは存在しないが、移行済みデータのためにDummyModel名で取得 + $mapIdList = $Nc2ToNc3Map->getMapIdList('RegistrationFrame', $nc2BlockId); + if ($mapIdList) { + $Frame->rollback(); // 移行済み + continue; + } + + $nc2RegistrationId = $nc2RegistrationBlock['Nc2RegistrationBlock']['registration_id']; + $mapIdList = $Nc2ToNc3Map->getMapIdList('Registration', $nc2RegistrationId); + $nc3RegistrationId = Hash::get($mapIdList, [$nc2RegistrationId]); + $nc3Registration = $Registration->findById($nc3RegistrationId, ['block_id'], null, -1); + if (!$nc3Registration) { + $Frame->rollback(); // ブロックデータなし + continue; + } + + $data['Frame'] = [ + 'id' => $frameMap['Frame']['id'], + 'plugin_key' => 'registrations', + 'block_id' => $nc3Registration['Registration']['block_id'], + 'default_action' => 'registration_answers/view/', + ]; + if (!$Frame->saveFrame($data)) { + // print_rはPHPMD.DevelopmentCodeFragmentに引っかかった。 var_exportは大丈夫らしい。。。 + // @see https://phpmd.org/rules/design.html + $message = $this->getLogArgument($nc2RBlocks) . "\n" . + var_export($Frame->validationErrors, true); + $this->writeMigrationLog($message); + + $Frame->rollback(); + continue; + } + + $idMap = [ + $nc2BlockId => $frameMap['Frame']['id'], + ]; + // RegistrationFrameModelは存在しないが、移行済みデータのためにDummyModel名で登録 + $this->saveMap('RegistrationFrame', $idMap); + + $Frame->commit(); + + } catch (Exception $ex) { + // NetCommonsAppModel::rollback()でthrowされるので、以降の処理は実行されない + // $QuestionnaireFrameSetting::savePage()でthrowされるとこの処理に入ってこない + $Frame->rollback($ex); + throw $ex; + } + } + + $this->writeMigrationLog(__d('nc2_to_nc3', ' Frame data Migration end.')); + + return true; + } + } From 47428a8f760b83fc463fe5003e754306a02cbfb6 Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Thu, 21 Sep 2017 14:19:27 +0900 Subject: [PATCH 029/161] =?UTF-8?q?=E7=A7=BB=E8=A1=8C=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=A6=E3=81=AA=E3=81=84Wysiwyg=E3=81=AE=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C=20https://github.com/NetCommons3/Ne?= =?UTF-8?q?tCommons3/issues/1037?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/Behavior/Nc2ToNc3WysiwygBehavior.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php index dbdc5c8..34a6975 100644 --- a/Model/Behavior/Nc2ToNc3WysiwygBehavior.php +++ b/Model/Behavior/Nc2ToNc3WysiwygBehavior.php @@ -80,10 +80,10 @@ private function __getStrReplaceArgumentsOfDownloadAction($content) { //$replace = WysiwygBehavior::REPLACE_BASE_URL . './?action=common_download_main&upload_id='; $replaceUrl = Router::url('/', true); - $pattern = '/(src|href)="\.\/\?action=common_download_main&(?:amp;)?upload_id=(\d+)"/'; + $pattern = '/(src|href)="\.\/(\?|index\.php\?)action=common_download_main&(?:amp;)?upload_id=(\d+)"/'; preg_match_all($pattern, $content, $matches, PREG_SET_ORDER); foreach ($matches as $match) { - $nc3UploadFile = $this->__saveUploadFileFromNc2($match[2]); + $nc3UploadFile = $this->__saveUploadFileFromNc2($match[3]); if (!$nc3UploadFile) { // エラー処理どうする?とりあえず継続しとく。 continue; From 70b92ae8adaa2dd4fc91b7abb4298b7c9eca773a Mon Sep 17 00:00:00 2001 From: Mitsuru Mutaguchi Date: Thu, 21 Sep 2017 16:28:38 +0900 Subject: [PATCH 030/161] =?UTF-8?q?=E3=81=8A=E7=9F=A5=E3=82=89=E3=81=9B?= =?UTF-8?q?=E3=81=AB=E6=9B=B8=E3=81=84=E3=81=9F