Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f400662
block_role_permissionの移行データ作成処理の共通化
Withone10 May 27, 2019
9888b18
block_role_permissionの移行処理作成
Withone10 May 27, 2019
eb93f0a
block_role_permissionの移行処理作成
Withone10 May 27, 2019
e043e17
block_role_permissionの移行処理作成
Withone10 May 27, 2019
3db63d2
block_role_permissionの移行処理修正
Withone10 May 27, 2019
c88a25b
block_role_permissionの移行処理作成
Withone10 May 27, 2019
9f63306
block_role_permissionの移行処理作成
Withone10 May 27, 2019
9dd5431
コメント修正
Withone10 May 27, 2019
48f8604
block_role_permissionの移行処理作成
Withone10 May 28, 2019
1da7b32
block_role_permissionの移行処理作成
Withone10 May 28, 2019
ab2adcb
投稿メールが表示されるように修正
Withone10 May 28, 2019
f515dd3
block_role_permission移行処理を共通処理に切替え
Withone10 May 28, 2019
dcfaf45
コメントを投稿できる権限のゲストにチェックを付けないように修正
Withone10 May 28, 2019
76e62ea
掲示板とキャビネットで作成者を移行する修正
Withone10 May 28, 2019
1ded57d
カレンダー サマータイムにより予定の開始、終了時刻がずれないように修正
notoyuichi May 29, 2019
db1632a
カレンダー phpcs対応
notoyuichi May 29, 2019
37633b0
カレンダー タイムゾーンの変換をconstを使って行うよう修正
notoyuichi May 29, 2019
f349486
カレンダー 繰り返し予定を移行するよう修正
notoyuichi May 30, 2019
83a3ac0
カレンダー 繰り返し予定登録処理の無駄なループを削除
notoyuichi May 30, 2019
6ae0ec2
質問をページごとに移行する処理を修正
Withone10 May 29, 2019
918f1c2
登録処理で開始したトランザクションを戻す処理を追加
Withone10 May 29, 2019
94c400a
回答期限の処理を修正
Withone10 May 29, 2019
998cc5d
表示していないアンケートを移行するよう修正
Withone10 May 30, 2019
7677b4c
Frameが無い場合次のデータに進む処理追加
Withone10 May 30, 2019
bac20f9
表示していない登録フォームを移行するよう修正
Withone10 May 31, 2019
44d8330
表示していないキャビネットを移行するよう修正
Withone10 May 31, 2019
cf23e20
表示していないFAQを移行するよう修正
Withone10 May 31, 2019
6f7ef2c
表示していないタスクを移行するよう修正
Withone10 May 31, 2019
65fedaf
登録フォーム ログ出力されるidを修正
notoyuichi Jul 9, 2019
8e76a9f
登録フォーム ログにスペースが入るように修正
notoyuichi Jul 9, 2019
2f8d36f
登録フォーム ログに出力されるデータid取得処理を修正
notoyuichi Jul 9, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 33 additions & 6 deletions Model/Behavior/Nc2ToNc3BbsBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room
return [];
}

//$Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User');
$Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User');
$nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Bbs['Nc2Bb']);
$nc3Created = $this->_convertDate($nc2Bbs['Nc2Bb']['insert_time']);
$data = [
//'Frame' => [
// 'id' => $frameMap['Frame']['id']
Expand All @@ -100,14 +102,16 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room
'room_id' => $nc3RoomId,
'plugin_key' => 'bbses',
'name' => $nc2Bbs['Nc2Bb']['bbs_name'],
'public_type' => $nc2Bbs['Nc2Bb']['activity']
'public_type' => $nc2Bbs['Nc2Bb']['activity'],
'created_user' => $nc3CreatedUser,
'created' => $nc3Created,
],
'Bbs' => [
'id' => '',
'key' => '',
'name' => $nc2Bbs['Nc2Bb']['bbs_name'],
//'created' => $this->_convertDate($nc2BbsBlock['Nc2BbsBlock']['insert_time']),
'created' => $this->_convertDate($nc2Bbs['Nc2Bb']['insert_time']),
'created_user' => $nc3CreatedUser,
'created' => $nc3Created,
],
//'BbsFrameSetting' => [
// 'id' => '',
Expand All @@ -118,22 +122,45 @@ public function generateNc3BbsData(Model $model, $nc2Bbs, $nc2BbsBlock, $nc3Room
//],
'BlocksLanguage' => [
'language_id' => '',
'name' => $nc2Bbs['Nc2Bb']['bbs_name']
'name' => $nc2Bbs['Nc2Bb']['bbs_name'],
'created_user' => $nc3CreatedUser,
'created' => $nc3Created,
],
'BbsSetting' => [
'use_like' => $nc2Bbs['Nc2Bb']['vote_flag'],
'use_unlike' => '0',
'use_comment' => $nc2Bbs['Nc2Bb']['child_flag'],
// 'use_comment_approval' => $nc2Bbs['Nc2Bb']['sns_flag'],
// 'use_workflow' => $nc2Bbs['Nc2Bb']['sns_flag'],
]
'created_user' => $nc3CreatedUser,
'created' => $nc3Created,
],
'MailSetting' => [
'plugin_key' => 'bbses',
'block_key' => null,
'is_mail_send' => $nc2Bbs['Nc2Bb']['mail_send'],
],
'MailSettingFixedPhrase' => [
[
'language_id' => $this->getLanguageIdFromNc2($model),
'plugin_key' => 'bbses',
'block_key' => null,
'type_key' => 'contents',
'mail_fixed_phrase_subject' => $nc2Bbs['Nc2Bb']['mail_subject'],
'mail_fixed_phrase_body' =>$nc2Bbs['Nc2Bb']['mail_body'],
],
],
];
if ($frameMap) {
$data['Frame'] = [
'id' => $frameMap['Frame']['id'],
];
}

// 権限データ設定
$data = Hash::merge($data, $model->makeContentPermissionData($nc2Bbs['Nc2Bb']['topic_authority'], $nc3RoomId));
$data = Hash::merge($data, $model->makeMailPermissionData($nc2Bbs['Nc2Bb']['mail_authority'], $nc3RoomId));

return $data;
}

Expand Down
195 changes: 195 additions & 0 deletions Model/Behavior/Nc2ToNc3BlockRolePermissionBehavior.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
<?php
/** @noinspection PhpUnusedParameterInspection */
/**
* Nc2ToNc3BlockSettingBehavior
*
* @author Japan Science and Technology Agency
* @author National Institute of Informatics
* @link http://www.netcommons.org NetCommons Project
* @license http://www.netcommons.org/license.txt NetCommons License
* @copyright Copyright 2014, NetCommons Project
*/

App::uses('Nc2ToNc3BaseBehavior', 'Nc2ToNc3.Model/Behavior');

/**
* Nc2ToNc3BlogBehavior
*
* @author WithOne Company Limited. <nc@withone.co.jp>
* @package Researchmap\Nc2ToNc3
*/
class Nc2ToNc3BlockRolePermissionBehavior extends Nc2ToNc3BaseBehavior {

/**
* __getRolesRoomIdList
*
* @param string $nc3RoomId ルームID
* @return array
* @throws CakeException
*/
private function __getRolesRoomIdList($nc3RoomId) {
$RolesRoom = ClassRegistry::init('Rooms.RolesRoom');
$rolesRooms = $RolesRoom->find('all', [
'conditions' => [
'RolesRoom.room_id' => $nc3RoomId
],
'fields' => ['RolesRoom.id', 'RolesRoom.role_key'],
'recursive' => -1
]);
$rolesRoomIdByRoleKey = Hash::combine($rolesRooms, '{n}.RolesRoom.role_key', '{n}.RolesRoom.id');

return $rolesRoomIdByRoleKey;
}

/**
* __getBorderRole
*
* @param int $nc2AuthorityCode NC2での権限
* @return string
*/
private function __getBorderRole($nc2AuthorityCode) {
$borderLine = null;
switch ($nc2AuthorityCode) {
case 4:
// NC2主担以上→Nc3ルーム管理者以上
$borderLine = 'room_administrator';
break;
case 3:
//NC2モデレータ以上→NC3編集者以上
$borderLine = 'editor';
break;
case 2:
// NC2一般以上→NC3一般以上
$borderLine = 'general_user';
break;
case 1:
// NC2ゲスト→NC3ゲスト
$borderLine = 'visitor';
break;
}

return $borderLine;
}

/**
* メール権限配列の作成
*
* @param Model $model Model
* @param int $nc2AuthorityCode NC2でのメール権限
* @param string $nc3RoomId ルームID
* @return array
* @throws CakeException
*/
public function makeMailPermissionData(Model $model, $nc2AuthorityCode, $nc3RoomId) {
$rolesRoomIdByRoleKey = $this->__getRolesRoomIdList($nc3RoomId);
$borderLine = $this->__getBorderRole($nc2AuthorityCode);

// Roleをレベル低い順に取得
$RoomRole = ClassRegistry::init('Rooms.RoomRole');
$roomRoles = $RoomRole->find('all', ['order' => 'level ASC']);
$receivable = 0;
$data = [];
foreach ($roomRoles as $roomRole) {
$roleKey = $roomRole['RoomRole']['role_key'];
if ($roleKey == $borderLine) {
$receivable = 1;
}

if (!in_array($roleKey, ['room_administrator', 'chief_editor'])) {
$data['BlockRolePermission']['mail_content_receivable'][$roleKey] = [
'id' => null,
'block_key' => null,
'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
'value' => $receivable,
'permission' => 'mail_content_receivable'
];
}

}
return $data;
}

/**
* コンテンツ権限配列の作成
*
* @param Model $model Model
* @param int $nc2AuthorityCode NC2での投稿権限
* @param int $nc3RoomId ルームID
* @return mixed
* @throws CakeException
*/
public function makeContentPermissionData(Model $model, $nc2AuthorityCode, $nc3RoomId) {
$rolesRoomIdByRoleKey = $this->__getRolesRoomIdList($nc3RoomId);
$borderLine = $this->__getBorderRole($nc2AuthorityCode);
if ($borderLine === 'visitor') {
$borderLine = null;
}

// Roleをレベル低い順に取得
$RoomRole = ClassRegistry::init('Rooms.RoomRole');
$roomRoles = $RoomRole->find('all', ['order' => 'level ASC']);
$creatable = 0;
$commentPublishable = 0;
$commentPublishableBorderLine = 'chief_editor'; // NC3のデフォルトにしとく
$data = [];
foreach ($roomRoles as $roomRole) {
$roleKey = $roomRole['RoomRole']['role_key'];
if ($roleKey == $borderLine) {
$creatable = 1;
}
if ($roleKey == $commentPublishableBorderLine) {
$commentPublishable = 1;
}

// content_publishable はデータとして挿入しなくなったのでコメントアウト
//// content_publishableはルーム管理, visitor のレコードはつくらない
//if (!in_array($roleKey, ['room_administrator', 'visitor'])){
// $data['BlockRolePermission']['content_publishable'][$roleKey] = [
// 'id' => null,
// 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
// 'value' => 0,
// 'permission' => 'content_publishable'
// ];
//}

// content_creatableはgeneral_userだけ
if ($roleKey == 'general_user') {
$data['BlockRolePermission']['content_creatable'][$roleKey] = [
'id' => null,
'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
'value' => $creatable,
'permission' => 'content_creatable'
];
}

// コメント投稿権限とコメント承認権限は
// room_administrator, chief_editor, visitor以外を設定する
if (!in_array($roleKey, ['room_administrator', 'chief_editor', 'visitor'])) {
$data['BlockRolePermission']['content_comment_publishable'][$roleKey] = [
'id' => null,
'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
'value' => $commentPublishable,
'permission' => 'content_comment_publishable'
];

$data['BlockRolePermission']['content_comment_creatable'][$roleKey] = [
'id' => null,
'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
'value' => 1,
'permission' => 'content_comment_creatable'
];
}

}
/*
* roles_room_id, block_key, permission
*/
//$data['BlockRolePermission']['content_comment_creatable']['visitor'] = [
// 'roles_room_id' => $rolesRoomIdByRoleKey[$roleKey],
// 'value' => 0,
// 'permission' => 'content_comment_creatable'
//];
return $data;
}

}
40 changes: 36 additions & 4 deletions Model/Behavior/Nc2ToNc3BlogBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,20 @@ public function generateNc3BlogData(Model $model, $nc2Journal) {
return [];
}

// use_workflowはRoom.need_approval = 0のときに変更可能。need_approval=1なら1で固定
$Room = ClassRegistry::init('Rooms.Room');
$room = $Room->findById($roomMap['Room']['id'], 'need_approval', null, -1);
if ($room['Room']['need_approval']) {
$useWorkflow = 1;
$useCommentApproval = 1;
} else {
$useWorkflow = $nc2Journal['Nc2Journal']['agree_flag'];
$useCommentApproval = $nc2Journal['Nc2Journal']['comment_agree_flag'];
}
if ($useWorkflow === 1) {
$useCommentApproval = 1;
}

/* @var $Nc2ToNc3User Nc2ToNc3User */
$Nc2ToNc3User = ClassRegistry::init('Nc2ToNc3.Nc2ToNc3User');
$nc3CreatedUser = $Nc2ToNc3User->getCreatedUser($nc2Journal['Nc2Journal']);
Expand Down Expand Up @@ -128,14 +142,28 @@ public function generateNc3BlogData(Model $model, $nc2Journal) {
'use_like' => $nc2Journal['Nc2Journal']['vote_flag'],
'use_unlike' => '0',
'use_comment' => $nc2Journal['Nc2Journal']['comment_flag'],
// NC3からルームに新しい設定「コンテンツの承認機能」=コンテンツに承認が必要が追加されたため、
// 投稿承認=ON(use_workflow)、コメント承認=ON(use_comment_approval)で移行する。
'use_comment_approval' => '1',
'use_workflow' => '1',
'use_comment_approval' => $useCommentApproval,
'use_workflow' => $useWorkflow,
'use_sns' => $nc2Journal['Nc2Journal']['sns_flag'],
'created_user' => $nc3CreatedUser,
'created' => $nc3Created,
],
'MailSetting' => [
'plugin_key' => 'blogs',
'block_key' => null,
'is_mail_send' => $nc2Journal['Nc2Journal']['mail_flag'],
'is_mail_send_approval' => $nc2Journal['Nc2Journal']['agree_mail_flag'],
],
'MailSettingFixedPhrase' => [
[
'language_id' => $this->getLanguageIdFromNc2($model),
'plugin_key' => 'blogs',
'block_key' => null,
'type_key' => 'contents',
'mail_fixed_phrase_subject' => $nc2Journal['Nc2Journal']['mail_subject'],
'mail_fixed_phrase_body' => $nc2Journal['Nc2Journal']['mail_body'],
],
],
];
if ($nc3Frame) {
// フレームがあったらセット
Expand All @@ -144,6 +172,10 @@ public function generateNc3BlogData(Model $model, $nc2Journal) {
];
}

// 権限データ設定
$data = Hash::merge($data, $model->makeContentPermissionData($nc2Journal['Nc2Journal']['post_authority'], $nc3RoomId));
$data = Hash::merge($data, $model->makeMailPermissionData($nc2Journal['Nc2Journal']['mail_authority'], $nc3RoomId));

return $data;
}

Expand Down
Loading