Current Path : /home/bitrix/ext_www/projects.demo.yacl.site/ |
Current File : /home/bitrix/ext_www/projects.demo.yacl.site/prod_cal.php |
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); use Bitrix\Main\Type\DateTime; use Bitrix\Main\Loader; use Bitrix\Highloadblock\HighloadBlockTable as HLBT; use Bitrix\Disk\Security\DiskSecurityContext; use Bitrix\Disk\Security\SecurityContext; use Bitrix\Disk\Storage; use Bitrix\Main\Localization\Loc; $xmlCal = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/local/production_calendar/calendar_2018.xml'); /* days - праздники/короткие дни/рабочие дни (суббота либо воскресенье) d - день (формат ММ.ДД) t - тип дня: 1 - выходной день, 2 - рабочий и сокращенный (может быть использован для любого дня недели), 3 - рабочий день (суббота/воскресенье) h - номер праздника (ссылка на атрибут id тэга holiday) суббота и воскресенье считаются выходными, если нет тегов day с атрибутом t=2 и t=3 за этот день */ $sxe = new SimpleXMLElement($xmlCal); $calendar = []; foreach($sxe->days->day as $day) { $attrs = $day->attributes(); switch ($attrs['t']) { case '1': // okp((string)$attrs['d']); $calendar['holidays'][(string)$attrs['d']] = (string)$attrs['d']; break; case '2': // okp((string)$attrs['d']); $calendar['shortdays'][(string)$attrs['d']] = (string)$attrs['d']; break; case '3': // okp((string)$attrs['d']); $calendar['fulldays'][(string)$attrs['d']] = (string)$attrs['d']; break; default: okp($attrs); break; } // okp($day); // okp($day->attributes()['t']); // okp($day->attributes()['d']); // okp($day->attributes()['h']); } // okp($calendar); $yearStart = strtotime('01.01.2018'); $hourCalendar = []; for ($day = $yearStart; $day < strtotime('01.01.2019'); $day += (86400)) { $dayWord = date('m.d', $day); switch (date('N', $day)) { case '1': case '2': case '3': case '4': if (!empty($calendar['holidays'][$dayWord])) { $hourCalendar[$dayWord] = 0; } elseif(!empty($calendar['shortdays'][$dayWord])) { $hourCalendar[$dayWord] = 7; } else { $hourCalendar[$dayWord] = 8; } break; case '5': if (!empty($calendar['holidays'][$dayWord])) { $hourCalendar[$dayWord] = 0; } elseif(!empty($calendar['fulldays'][$dayWord])) { $hourCalendar[$dayWord] = 8; } else { $hourCalendar[$dayWord] = 7; } break; case '6': case '7': if (!empty($calendar['shortdays'][$dayWord])) { $hourCalendar[$dayWord] = 7; } elseif(!empty($calendar['fulldays'][$dayWord])) { $hourCalendar[$dayWord] = 8; } else { $hourCalendar[$dayWord] = 0; } break; } // okp(date('d.m.Y', $day)); // okp(date('N', $day)); // okp(date('l', $day)); } okp(getProdHours($_GET['from'], $_GET['to'], $hourCalendar)); okp($hourCalendar); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>