Skip to content

Commit

Permalink
Merge pull request #66 from NetCommons3/ISSUE_1368
Browse files Browse the repository at this point in the history
Issue 1368
  • Loading branch information
RikaFujiwara committed Nov 10, 2018
2 parents 3e922fd + 18dd4d1 commit 0fbad72
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 30 deletions.
54 changes: 27 additions & 27 deletions Model/Behavior/CalendarMonthlyEntryBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ class CalendarMonthlyEntryBehavior extends CalendarAppBehavior {
*/
public function insertMonthlyByMonthday(Model &$model, $planParams, $rruleData,
$eventData, $bymonthday, $first = 0, $createdUserWhenUpd = null) {
CakeLog::debug("DBG: insertMonthlyByMonthday() start.
rrule[INDEX]=[" . $model->rrule['INDEX'] . "]");
//CakeLog::debug("DBG: insertMonthlyByMonthday() start.
// rrule[INDEX]=[" . $model->rrule['INDEX'] . "]");

$model->rrule['INDEX']++;

Expand All @@ -61,10 +61,10 @@ public function insertMonthlyByMonthday(Model &$model, $planParams, $rruleData,
$this->__setMonthlyByMonthdayStartDtProc($eventData, $userStartTime, $startTimestamp,
$userTz, $currentDay, $first, $model, $interval, $intervalDay);

CakeLog::debug("DBG: 開始日付時刻処理. startTimestamp[" . $startTimestamp . "]
first[" . $first . "] currentDay[" . $currentDay . "]
rrule[BYMONTHDAY][0]=[" . $model->rrule['BYMONTHDAY'][0] . "]
interval[" . $interval . "] intervalDay[" . $intervalDay . "]");
//CakeLog::debug("DBG: 開始日付時刻処理. startTimestamp[" . $startTimestamp . "]
// first[" . $first . "] currentDay[" . $currentDay . "]
// rrule[BYMONTHDAY][0]=[" . $model->rrule['BYMONTHDAY'][0] . "]
// interval[" . $interval . "] intervalDay[" . $intervalDay . "]");

//終了日付時刻の処理
//NC3は内部はサーバー系時刻なのでtimezoneDateはつかわない
Expand All @@ -87,8 +87,8 @@ public function insertMonthlyByMonthday(Model &$model, $planParams, $rruleData,
//開始日と終了日の差分日数の計算
$diffNum = ($endTimestamp - $startTimestamp) / 86400;

CakeLog::debug("DBG: 終了日付時刻処理. eTime[" . $eTime . "]
endTimestamp[" . $endTimestamp . "] 開始日と終了日の差分日数[" . $diffNum . "]");
//CakeLog::debug("DBG: 終了日付時刻処理. eTime[" . $eTime . "]
// endTimestamp[" . $endTimestamp . "] 開始日と終了日の差分日数[" . $diffNum . "]");

//ユーザー系開始日、終了日をつかった、インターバル月数とインター
//バル日数を考慮した開始・終了日付時刻の実計算
Expand Down Expand Up @@ -116,20 +116,20 @@ public function insertMonthlyByMonthday(Model &$model, $planParams, $rruleData,
$svrEndDate = $date->format('Ymd');
$svrEndTime = $date->format('His');

CakeLog::debug("DBG: startTimestamp[" . $startTimestamp . "]
svrStartDate[" . $svrStartDate . "] svrStartTime[" . $svrStartTime . "]
endTimestamp[" . $endTimestamp . "] svrEndDate[" . $svrEndDate . "]
svrEndTime[" . $svrEndTime . "]");
//CakeLog::debug("DBG: startTimestamp[" . $startTimestamp . "]
// svrStartDate[" . $svrStartDate . "] svrStartTime[" . $svrStartTime . "]
// endTimestamp[" . $endTimestamp . "] svrEndDate[" . $svrEndDate . "]
// svrEndTime[" . $svrEndTime . "]");

if (!CalendarSupport::isRepeatable($model->rrule, ($svrStartDate . $svrStartTime),
$eventData['CalendarEvent']['timezone_offset'], $model->isOverMaxRruleIndex)) {
CakeLog::debug("DBG: 繰返しがとまったので、callから復帰する。");
//CakeLog::debug("DBG: 繰返しがとまったので、callから復帰する。");
//繰返しがとまったので、callから復帰する。
return true;
}

CakeLog::debug("DBG: insert(svrStartDateTime[" . $svrStartDate . $svrStartTime . "]
svrEndDateTime[" . $svrEndDate . $svrEndTime . "])実行");
//CakeLog::debug("DBG: insert(svrStartDateTime[" . $svrStartDate . $svrStartTime . "]
// svrEndDateTime[" . $svrEndDate . $svrEndTime . "])実行");
$rEventData = $this->insert($model, $planParams, $rruleData, $eventData,
($svrStartDate . $svrStartTime), ($svrEndDate . $svrEndTime), $createdUserWhenUpd);
if ($rEventData['CalendarEvent']['id'] === null) {
Expand All @@ -153,7 +153,7 @@ public function insertMonthlyByMonthday(Model &$model, $planParams, $rruleData,
*/
public function insertMonthlyByDay(Model &$model, $planParams, $rruleData, $eventData,
$first = 0, $createdUserWhenUpd = null) {
CakeLog::debug("DBG: insertMonthlyByDay() start. rrule[INDEX]=[" . $model->rrule['INDEX'] . "]");
//CakeLog::debug("DBG: insertMonthlyByDay() start. rrule[INDEX]=[" . $model->rrule['INDEX'] . "]");
$model->rrule['INDEX']++;

//ユーザタイムゾーンを取得しておく。
Expand All @@ -162,13 +162,13 @@ public function insertMonthlyByDay(Model &$model, $planParams, $rruleData, $even
//setStimeEtimeAndByday()返ってくる$sTime, $eTime, $bydayはすべてサーバー系日付時刻です。
$this->setStimeEtimeAndByday($model->rrule, $eventData, $first, $userTz, $sTime, $eTime, $byday);

CakeLog::debug("DBG: setStimeEtimeAndByday(first[" . $first . "] userTz[" . $userTz . "])
結果. sTime[" . $sTime . "] eTime[" . $eTime . "] byday[" . $byday . "]");
//CakeLog::debug("DBG: setStimeEtimeAndByday(first[" . $first . "] userTz[" . $userTz . "])
// 結果. sTime[" . $sTime . "] eTime[" . $eTime . "] byday[" . $byday . "]");

//call復帰条件のチェック
if ($first && $sTime >= $byday) {
CakeLog::debug("DBG: first[" . $first . "] is TRUE and
sTime[" . $sTime . "] >= byday[" . $byday, "]. i DEC and ReCall.");
//CakeLog::debug("DBG: first[" . $first . "] is TRUE and
// sTime[" . $sTime . "] >= byday[" . $byday, "]. i DEC and ReCall.");
//開始日(対象日?)が繰返しENDのb(第x週第y曜日の実日)を超したら、行き過ぎなので、INDEXをデクリメントして、自分を再帰callする。
$model->rrule['INDEX']--;
return $this->insertMonthlyByDay($model, $planParams, $rruleData, $eventData,
Expand All @@ -180,22 +180,22 @@ public function insertMonthlyByDay(Model &$model, $planParams, $rruleData, $even
$this->setStartDateTiemAndEndDateTime($sTime, $eTime, $byday, $userTz, $svrStartDate,
$svrStartTime, $svrEndDate, $svrEndTime);

CakeLog::debug("DBG: setStartDateTiemAndEndDateTime処理結果.
svrStartDate[" . $svrStartDate . "] svrStartTime[" . $svrStartTime . "]
svrEndDate[" . $svrEndDate . "] svrEndTime[" . $svrEndTime . "]");
//CakeLog::debug("DBG: setStartDateTiemAndEndDateTime処理結果.
// svrStartDate[" . $svrStartDate . "] svrStartTime[" . $svrStartTime . "]
// svrEndDate[" . $svrEndDate . "] svrEndTime[" . $svrEndTime . "]");

if (!CalendarSupport::isRepeatable($model->rrule, ($svrStartDate . $svrStartTime),
$eventData['CalendarEvent']['timezone_offset'], $model->isOverMaxRruleIndex)) {

CakeLog::debug("DBG: isRepeatable() がFALSEを返したので、
繰返しをとめて復帰します。");
//CakeLog::debug("DBG: isRepeatable() がFALSEを返したので、
// 繰返しをとめて復帰します。");

//繰り返しがとまったので、復帰いたします。
return true;
}

CakeLog::debug("DBG: insert(svrStartDateTime[" . $svrStartDate . $svrStartTime . "]
svrEndDateTime[" . $svrEndDate . $svrEndTime . "])実行");
//CakeLog::debug("DBG: insert(svrStartDateTime[" . $svrStartDate . $svrStartTime . "]
// svrEndDateTime[" . $svrEndDate . $svrEndTime . "])実行");

$rEventData = $this->insert($model, $planParams, $rruleData, $eventData,
($svrStartDate . $svrStartTime), ($svrEndDate . $svrEndTime), $createdUserWhenUpd);
Expand Down
20 changes: 17 additions & 3 deletions Model/CalendarPermission.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ public function __construct($id = false, $table = null, $ds = null) {
'Room' => 'Rooms.Room',
'DefaultRolePermission' => 'Roles.DefaultRolePermission',
'RolesRoom' => 'Rooms.RolesRoom',
'Block' => 'Blocks.Block'
'Block' => 'Blocks.Block',
'BlockSetting' => 'Blocks.BlockSetting'
]);
}

Expand Down Expand Up @@ -370,8 +371,21 @@ protected function _setBlockSetting(&$roomBlocks) {
if (is_null($blockKey)) {
$roomBlock[$this->alias]['use_workflow'] = $roomBlock['Room']['need_approval'];
} else {
$blockSetting = $this->getBlockSetting($blockKey, $roomId);
$roomBlock[$this->alias]['use_workflow'] = $blockSetting[$this->alias]['use_workflow'];
//$blockSetting = $this->getBlockSetting($blockKey, $roomId);
$blockSetting = $this->BlockSetting->find('first', array(
'conditions' => array(
'plugin_key' => 'calendars',
'room_id' => $roomId,
'block_key' => $blockKey,
'field_name' => 'use_workflow'
),
'recursive' => -1
));
if ($blockSetting) {
$roomBlock[$this->alias]['use_workflow'] = $blockSetting[$this->alias]['use_workflow'];
} else {
$roomBlock[$this->alias]['use_workflow'] = Hash::get($roomBlock, 'Room.need_approval');
}
}
}
}
Expand Down

0 comments on commit 0fbad72

Please sign in to comment.