$reservationId = 0; if ($eventId > 0) { $arEvent = CMeeting::GetEvent($eventId); if (is_array($arEvent) && is_array($arEvent['LOCATION']) && $arEvent['LOCATION']['mrevid'] > 0) { $reservationId = $arEvent['LOCATION']['mrevid']; $arFilter["!=ID"] = $reservationId; } } $bReserved = false; $dbElements = CIBlockElement::GetList(array("DATE_ACTIVE_FROM" => "ASC"), $arFilter, false, false, array('ID')); if ($dbElements->Fetch()) { $bReserved = true; } else { // copy-paste sucks! include_once $_SERVER['DOCUMENT_ROOT'] . "/bitrix/components/bitrix/intranet.reserve_meeting/init.php"; $arPeriodicElements = __IRM_SearchPeriodic($eventStart, $eventFinish, $arPlace['ROOM_IBLOCK'], $arPlace['ROOM_ID']); for ($i = 0, $l = count($arPeriodicElements); $i < $l; $i++) { if (!$reservationId || $arPeriodicElements[$i]['ID'] != $reservationId) { $bReserved = true; break; } } } Header('Content-Type: application/json'); echo "{result:'" . ($bReserved ? 'reserved' : 'ok') . "'}"; } else { Header('Content-Type: application/json'); echo "{result:'error',error:'wrong_place_id'}"; } } require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
public static function CheckMeetingRoom($Params) { $fromDateTime = MakeTimeStamp($Params['dateFrom']); $toDateTime = MakeTimeStamp($Params['dateTo']); $arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $Params['RMiblockId'], "SECTION_ID" => $Params['mrid'], "<DATE_ACTIVE_FROM" => self::Date($toDateTime), ">DATE_ACTIVE_TO" => self::Date($fromDateTime), "PROPERTY_PERIOD_TYPE" => "NONE"); if ($Params['mrevid_old'] > 0) { $arFilter["!=ID"] = $Params['mrevid_old']; } $dbElements = CIBlockElement::GetList(array("DATE_ACTIVE_FROM" => "ASC"), $arFilter, false, false, array('ID')); if ($arElements = $dbElements->GetNext()) { return 'reserved'; } include_once $_SERVER['DOCUMENT_ROOT'] . "/bitrix/components/bitrix/intranet.reserve_meeting/init.php"; $arPeriodicElements = __IRM_SearchPeriodic($fromDateTime, $toDateTime, $Params['RMiblockId'], $Params['mrid']); for ($i = 0, $l = count($arPeriodicElements); $i < $l; $i++) { if (!$Params['mrevid_old'] || $arPeriodicElements[$i]['ID'] != $Params['mrevid_old']) { return 'reserved'; } } return true; }
if (StrLen($errorMessage) <= 0) { if ($regularityV == "NONE") { $t = MakeTimeStamp($startDateV, FORMAT_DATE); $fromDateTime = MkTime($arStartTimeVTmp[0], $arStartTimeVTmp[1], 0, Date("m", $t), Date("d", $t), Date("Y", $t)); $toDateTime = MkTime($arStartTimeVTmp[0] + $arTimeoutTimeVTmp[0], $arStartTimeVTmp[1] + ($arTimeoutTimeVTmp[1] == "5" ? 30 : 0), 0, Date("m", $t), Date("d", $t), Date("Y", $t)); $arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $arMeeting["IBLOCK_ID"], "SECTION_ID" => $arMeeting["ID"], "<DATE_ACTIVE_FROM" => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME), $toDateTime), ">DATE_ACTIVE_TO" => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME), $fromDateTime), "PROPERTY_PERIOD_TYPE" => "NONE"); if ($arItem) { $arFilter["!ID"] = $arItem["ID"]; } $dbElements = CIBlockElement::GetList(array("DATE_ACTIVE_FROM" => "ASC"), $arFilter, false, false, array()); while ($arElements = $dbElements->GetNext()) { $ft1 = MakeTimeStamp($arElements["DATE_ACTIVE_FROM"], FORMAT_DATETIME); $ft2 = MakeTimeStamp($arElements["DATE_ACTIVE_TO"], FORMAT_DATETIME); $errorMessage .= Str_Replace(array("#TIME1#", "#TIME2#", "#RES#"), array("<b>" . Date("H:i", $ft1) . "</b> " . Date("d.m", $ft1), "<b>" . Date("H:i", $ft2) . "</b> " . Date("d.m", $ft2), $arElements["NAME"]), GetMessage("INTASK_C29_CONFLICT") . ". "); } $arPeriodicElements = __IRM_SearchPeriodic($fromDateTime, $toDateTime, $arMeeting["IBLOCK_ID"], $arMeeting["ID"], $arItem ? $arItem["ID"] : 0); foreach ($arPeriodicElements as $pe) { $errorMessage .= Str_Replace(array("#TIME1#", "#TIME2#", "#RES#"), array("<b>" . Date("H:i", $pe["DATE_ACTIVE_FROM_TIME"]) . "</b> " . Date("d.m", $pe["DATE_ACTIVE_FROM_TIME"]), "<b>" . Date("H:i", $pe["DATE_ACTIVE_TO_TIME"]) . "</b> " . Date("d.m", $pe["DATE_ACTIVE_TO_TIME"]), $pe["NAME"]), GetMessage("INTASK_C29_CONFLICT") . ". "); } } else { $t = MakeTimeStamp($startDateV, FORMAT_DATE); $fromDateTime = MkTime($arStartTimeVTmp[0], $arStartTimeVTmp[1], 0, Date("m", $t), Date("d", $t), Date("Y", $t)); $toDateTime = MkTime($arStartTimeVTmp[0] + $arTimeoutTimeVTmp[0], $arStartTimeVTmp[1] + ($arTimeoutTimeVTmp[1] == "5" ? 30 : 0), 0, Date("m", $t), Date("d", $t), Date("Y", $t)); $regularityLength = $toDateTime - $fromDateTime; $toDateTime = MakeTimeStamp($regularityEndV, FORMAT_DATE); } } if (StrLen($errorMessage) <= 0) { $arFields = array("NAME" => $nameV, "DATE_ACTIVE_FROM" => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME), $fromDateTime), "DATE_ACTIVE_TO" => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME), $toDateTime), "CREATED_BY" => $GLOBALS["USER"]->GetID(), "DETAIL_TEXT" => $descriptionV, "PROPERTY_VALUES" => array($arResult["ALLOWED_ITEM_PROPERTIES"]["UF_PERSONS"]["ID"] => array($personsV), $arResult["ALLOWED_ITEM_PROPERTIES"]["UF_RES_TYPE"]["ID"] => array($resTypeV), $arResult["ALLOWED_ITEM_PROPERTIES"]["UF_PREPARE_ROOM"]["ID"] => array($prepareRoomV), $arResult["ALLOWED_ITEM_PROPERTIES"]["PERIOD_TYPE"]["ID"] => array($regularityV), $arResult["ALLOWED_ITEM_PROPERTIES"]["PERIOD_COUNT"]["ID"] => array($regularityCountV), $arResult["ALLOWED_ITEM_PROPERTIES"]["EVENT_LENGTH"]["ID"] => array($regularityLength), $arResult["ALLOWED_ITEM_PROPERTIES"]["PERIOD_ADDITIONAL"]["ID"] => array($regularityAdditionalVString)), "ACTIVE" => "Y"); $iblockElementObject = new CIBlockElement(); if ($arItem) {