/** * @param array|Traversable $weekdays * @param string $separator * @param int|string $format * @param string $locale * @param int|string $firstDayOfWeek * @return string */ public function render($weekdays, $separator = null, $format = null, $locale = null, $firstDayOfWeek = null) { return CalendarUtils::implodeWeekdays($weekdays, $separator ?: $this->getSeparator(), $format ?: $this->getFormat(), $locale ?: $this->getLocale(), $firstDayOfWeek ?: $this->getFirstDayOfWeek()); }
/** * @param array|Traversable $holidays * @param string $separator * @param string $format * @param string $locale * @return string */ public function render($holidays, $separator = null, $format = null, $locale = null) { return CalendarUtils::implodeHolidays($holidays, $separator ?: $this->getSeparator(), $format ?: $this->getFormat(), $locale ?: $this->getLocale()); }
/** * {@inheritDoc} * * @param array<HolidayRuleInterface>|Traversable $holidayRules * @param int $filter */ public static function getWeekendDays($startDate, $endDate, array $weekend, $holidayRules = [], $filter = self::FILTER_WEEKEND_ALL) { $days = parent::getWeekendDays($startDate, $endDate, $weekend); if (!$holidayRules || $filter == static::FILTER_WEEKEND_ALL) { return $days; } $holidays = static::getHolidays($holidayRules, $startDate, $endDate, $weekend, static::FILTER_HOLIDAY_DAY_OFF | static::FILTER_HOLIDAY_WEEKDAY); $transferredWeekendDays = []; /* @var $subHoliday HolidayInterface */ foreach ($holidays as $holiday) { foreach ($holiday as $subHoliday) { if ($subHoliday->getRule() instanceof TransferredRuleInterface) { $transferredWeekendDays[] = $subHoliday->getRule()->getWeekendDay()->format('Y-m-d'); continue 2; } } } if (!$transferredWeekendDays) { return $days; } $flippedTransferredWeekendDays = array_flip($transferredWeekendDays); if ($filter & static::WEEKEND_TRANSFERRED) { $days = array_intersect_key($days, $flippedTransferredWeekendDays); } if ($filter & static::WEEKEND_DAY_OFF) { $days = array_diff_key($days, $flippedTransferredWeekendDays); } return $days; }