Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/storage/PhabricatorCalendarHoliday.php
| Show All 15 Lines | return array( | ||||
| 'day' => array( | 'day' => array( | ||||
| 'columns' => array('day'), | 'columns' => array('day'), | ||||
| 'unique' => true, | 'unique' => true, | ||||
| ), | ), | ||||
| ), | ), | ||||
| ) + parent::getConfiguration(); | ) + parent::getConfiguration(); | ||||
| } | } | ||||
| public static function getNthBusinessDay($epoch, $n) { | |||||
| // Sadly, there are not many holidays. So we can load all of them. | |||||
| $holidays = id(new PhabricatorCalendarHoliday())->loadAll(); | |||||
| $holidays = mpull($holidays, null, 'getDay'); | |||||
| $interval = ($n > 0 ? 1 : -1) * 24 * 60 * 60; | |||||
| $return = $epoch; | |||||
| for ($i = abs($n); $i > 0; ) { | |||||
| $return += $interval; | |||||
| $weekday = date('w', $return); | |||||
| if ($weekday != 0 && $weekday != 6 && // Sunday and Saturday | |||||
| !isset($holidays[date('Y-m-d', $return)])) { | |||||
| $i--; | |||||
| } | |||||
| } | |||||
| return $return; | |||||
| } | |||||
| } | } | ||||