芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/cloud.pulsehost.co.uk/modules/Calendar/Classes/RRule.php
DefaultTimeZone = $DefaultTimeZone; $this->StartBase = null; $this->EndBase = null; $this->Period = null; $this->Count = null; $this->Until = null; $this->Interval = null; $this->End = null; $this->WeekNum = null; $this->ByDays = array(); } public function Populate($aRRule) { $this->Period = isset($aRRule['period']) ? (int)$aRRule['period'] : null; $this->Count = isset($aRRule['count']) ? $aRRule['count'] : null; $this->Until = isset($aRRule['until']) ? $aRRule['until'] : null; $this->Interval = isset($aRRule['interval']) ? $aRRule['interval'] : null; $this->End = isset($aRRule['end']) ? $aRRule['end'] : null; $this->WeekNum = isset($aRRule['weekNum']) ? $aRRule['weekNum'] : null; $this->ByDays = isset($aRRule['byDays']) ? $aRRule['byDays'] : array(); } public function toArray() { return array( 'startBase' => $this->StartBase, 'endBase' => $this->EndBase, 'period' => $this->Period, 'interval' => (int) $this->Interval, 'end' => !isset($this->End) ? 0 : $this->End, 'until' => (int) $this->Until, 'weekNum' => $this->WeekNum, 'count' => $this->Count, 'byDays' => $this->ByDays ); } public function toResponseArray($aParameters = array()) { return $this->toArray(); } public function __toString() { $aPeriods = array( \Aurora\Modules\Calendar\Enums\PeriodStr::Secondly, \Aurora\Modules\Calendar\Enums\PeriodStr::Minutely, \Aurora\Modules\Calendar\Enums\PeriodStr::Hourly, \Aurora\Modules\Calendar\Enums\PeriodStr::Daily, \Aurora\Modules\Calendar\Enums\PeriodStr::Weekly, \Aurora\Modules\Calendar\Enums\PeriodStr::Monthly, \Aurora\Modules\Calendar\Enums\PeriodStr::Yearly ); $sRule = ''; if (null !== $this->Period) { $iWeekNumber = null; if (($this->Period == \Aurora\Modules\Calendar\Enums\Period::Monthly || $this->Period == \Aurora\Modules\Calendar\Enums\Period::Yearly) && (null !== $this->WeekNum)) { $iWeekNumber = ((int)$this->WeekNum < 0 || (int)$this->WeekNum > 4) ? 0 : (int)$this->WeekNum; } $sUntil = ''; if (null !== $this->Until) { $oDTUntil = \Aurora\Modules\Calendar\Classes\Helper::prepareDateTime($this->Until, $this->GetTimeZone()); $sUntil = $oDTUntil->format('Ymd\T235959\Z'); } $iInterval = (null !== $this->Interval) ? (int)$this->Interval : 0; $iEnd = (null === $this->End || (int)$this->End < 0 || (int)$this->End > 3) ? 0 : (int)$this->End; $sFreq = strtoupper($aPeriods[$this->Period + 2]); $sRule = 'FREQ=' . $sFreq . ';INTERVAL=' . $iInterval; if ($iEnd === \Aurora\Modules\Calendar\Enums\RepeatEnd::Count) { $sRule .= ';COUNT=' . (null !== $this->Count) ? (int)$this->Count : 0; } elseif ($iEnd === \Aurora\Modules\Calendar\Enums\RepeatEnd::Date) { $sRule .= ';UNTIL=' . $sUntil; } $sByDay = null; if (in_array($sFreq, array('WEEKLY', 'MONTHLY', 'YEARLY'))) { $sByDay = implode(',', $this->ByDays); } if (!empty($sByDay)) { if (in_array($sFreq, array('MONTHLY', 'YEARLY')) && isset($iWeekNumber)) { if ($iWeekNumber >= 0 && $iWeekNumber < 4) { $sByDay = (int)$iWeekNumber + 1 . $sByDay; } elseif ($iWeekNumber === 4) { $sByDay = '-1' . $sByDay; } } $sRule .= ';BYDAY=' . $sByDay; } } return $sRule; } public function GetTimeZone() { return $this->DefaultTimeZone; } }