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