Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/rg-so.yacl.site/
Upload File :
Current File : /home/bitrix/ext_www/rg-so.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");?>