Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function __toString()
- {
- $dbin = count($this->intervals['day']['parsed']) === 31 ? 1 : 0;
- $mbin = count($this->intervals['month']['parsed']) === 12 ? 2 : 0;
- $wbin = count($this->intervals['wday']['parsed']) === 7 ? 4 : 0;
- $interval = $dbin | $mbin | $wbin;
- switch ($interval) {
- case 7:
- return 'Elke dag';
- break;
- case 6:
- // elke maand op bepaalde dagen
- return 'Maandelijks op volgende dagen: ' .
- $this->getOptimalGroups($this->intervals['day']['parsed']);
- break;
- case 5:
- // Elke dag, maar niet elke maand
- return 'Dagelijks in de maanden: ' .
- $this->getOptimalGroups($this->intervals['month']['parsed'], self::FORMAT_MONTHS);
- break;
- case 4:
- // Elke weekdag, maar niet elke maand en niet elke dag
- return 'In de maanden: ' .
- $this->getOptimalGroups($this->intervals['month']['parsed'], self::FORMAT_MONTHS) .
- ' op volgende dagen: ' .
- $this->getOptimalGroups($this->intervals['day']['parsed']);
- break;
- case 3:
- // Elke dag en elke maand, maar niet elke weekdag
- return 'Op volgende weekdagen: ' .
- $this->getOptimalGroups($this->intervals['wday']['parsed'], self::FORMAT_WEEKDAYS);
- break;
- case 2:
- // Elke maand, maar niet elke dag en niet elke weekdag
- return 'Op de ' .
- $this->getOptimalGroups($this->intervals['day']['parsed']) .
- ' dag van elke maand die vallen op volgende weekdagen: ' .
- $this->getOptimalGroups($this->intervals['wday']['parsed'], self::FORMAT_WEEKDAYS);
- break;
- case 1:
- // Op bepaalde weekdagen in een bepaalde maand
- return 'Op volgende weekdagen: ' .
- $this->getOptimalGroups($this->intervals['wday']['parsed'], self::FORMAT_WEEKDAYS) .
- ' die vallen in de maanden: ' .
- $this->getOptimalGroups($this->intervals['month']['parsed'], self::FORMAT_MONTHS);
- break;
- case 0:
- // Op bepaalde dagen die vallen op bepaalde weekdagen in een bepaalde maand
- return 'Op de ' .
- $this->getOptimalGroups($this->intervals['day']['parsed']) .
- ' dag van maanden ' .
- $this->getOptimalGroups($this->intervals['month']['parsed'], self::FORMAT_MONTHS) .
- ' op de weekdagen: ' .
- $this->getOptimalGroups($this->intervals['wday']['parsed'], self::FORMAT_WEEKDAYS);
- }
- }
- protected function getOptimalGroups($days, $format = null)
- {
- $formats = array(
- self::FORMAT_WEEKDAYS => array_values(\Zend_Locale::getTranslationList('Day', 'nl')),
- self::FORMAT_MONTHS => array_values(\Zend_Locale::getTranslationList('Month', 'nl')),
- );
- $groups = array();
- $pday = null;
- $ndays = (array) $days;
- $n = 0;
- foreach ($ndays as $day) {
- if ($pday !== null && ($day !== $pday +1)) {
- $groups[] = array_slice($days, 0, $n);
- $days = array_splice($days, $n);
- $n = 0;
- }
- $pday = $day;
- $n++;
- }
- if ($days) {
- $groups[] = $days;
- }
- $result = '';
- foreach ($groups as $group) {
- $from = reset($group);
- $to = end($group);
- if ($format == self::FORMAT_MONTHS) {
- $from--;
- $to--;
- }
- $result .= (($format !== null) ? $formats[$format][$from] : $from . 'e');
- if ($from !== $to) {
- $result .= ' tot ' . (($format !== null) ? $formats[$format][$to] : $to . 'e');
- }
- $result .= ', ';
- }
- $result = rtrim($result, ', ');
- return $result;
- }
Add Comment
Please, Sign In to add comment