Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
blackcat.dev-vt2b.ru
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Акимов Владимир
blackcat.dev-vt2b.ru
Commits
cf806fc6
Commit
cf806fc6
authored
Nov 18, 2024
by
Владимир Акимов
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Доработка бронирования чайных
parent
820cd924
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
204 additions
and
47 deletions
+204
-47
add-bron.php
local/ajax/add-bron.php
+53
-14
bron-popup.php
local/ajax/bron-popup.php
+1
-1
tea-lists.php
local/ajax/tea-lists.php
+84
-0
init.php
local/php_interface/init.php
+62
-28
template.php
...trix/news/quests/bitrix/news.detail/.default/template.php
+4
-4
No files found.
local/ajax/add-bron.php
View file @
cf806fc6
...
...
@@ -7,22 +7,61 @@ if ($_POST['NAME']){
if
(
closed
(
$_POST
[
'DATE'
],
$_POST
[
'TIME'
],
$_POST
[
'QUEST'
])
>
0
){
echo
"error"
;
}
else
{
$el
=
new
CIBlockElement
;
$PROP
=
[];
$PROP
=
$_POST
;
$arLoad
=
array
(
"MODIFIED_BY"
=>
$USER
->
GetID
(),
// элемент изменен текущим пользователем
"IBLOCK_SECTION_ID"
=>
false
,
// элемент лежит в корне раздела
"IBLOCK_ID"
=>
10
,
"PROPERTY_VALUES"
=>
$PROP
,
"NAME"
=>
$_POST
[
'NAME'
],
"ACTIVE"
=>
"Y"
,
"PREVIEW_TEXT"
=>
$_POST
[
"COMMENT"
]
);
$el
->
Add
(
$arLoad
);
echo
"ok"
;
if
(
$PROP
[
'TEA'
]
&&
$PROP
[
'TIME_BEGIN'
]
&&
$PROP
[
'TIME_END'
]){
$el
=
new
CIBlockElement
;
$arLoad
=
array
(
"MODIFIED_BY"
=>
$USER
->
GetID
(),
// элемент изменен текущим пользователем
"IBLOCK_SECTION_ID"
=>
false
,
// элемент лежит в корне раздела
"IBLOCK_ID"
=>
10
,
"PROPERTY_VALUES"
=>
$PROP
,
"NAME"
=>
$_POST
[
'NAME'
],
"ACTIVE"
=>
"Y"
,
"PREVIEW_TEXT"
=>
$_POST
[
"COMMENT"
]
);
$el
->
Add
(
$arLoad
);
$tbegin
=
explode
(
":"
,
$PROP
[
'TIME_BEGIN'
]);
$hourBegin
=
(
int
)
$tbegin
[
0
];
$tend
=
explode
(
":"
,
$PROP
[
'TIME_END'
]);
$hourEnd
=
(
int
)
$tend
[
0
];
if
(
$hourEnd
<
$hourBegin
){
echo
"errortea"
;
}
elseif
(
closedTea
(
$PROP
[
'DATE'
],
$PROP
[
'TIME_BEGIN'
],
$PROP
[
'TEA'
])
||
closedTea
(
$PROP
[
'DATE'
],
$PROP
[
'TIME_END'
],
$PROP
[
'TEA'
]))
{
echo
"errorbrontea"
;
}
else
{
$el1
=
new
CIBlockElement
;
$arLoad1
=
array
(
"MODIFIED_BY"
=>
$USER
->
GetID
(),
// элемент изменен текущим пользователем
"IBLOCK_SECTION_ID"
=>
false
,
// элемент лежит в корне раздела
"IBLOCK_ID"
=>
13
,
"PROPERTY_VALUES"
=>
$PROP
,
"NAME"
=>
$_POST
[
'NAME'
],
"ACTIVE"
=>
"Y"
,
);
$el1
->
Add
(
$arLoad1
);
echo
"ok"
;
}
}
else
{
$el
=
new
CIBlockElement
;
$arLoad
=
array
(
"MODIFIED_BY"
=>
$USER
->
GetID
(),
// элемент изменен текущим пользователем
"IBLOCK_SECTION_ID"
=>
false
,
// элемент лежит в корне раздела
"IBLOCK_ID"
=>
10
,
"PROPERTY_VALUES"
=>
$PROP
,
"NAME"
=>
$_POST
[
'NAME'
],
"ACTIVE"
=>
"Y"
,
"PREVIEW_TEXT"
=>
$_POST
[
"COMMENT"
]
);
$el
->
Add
(
$arLoad
);
echo
"ok"
;
}
}
}
...
...
local/ajax/bron-popup.php
View file @
cf806fc6
...
...
@@ -8,7 +8,7 @@ if (!empty($_POST)){
$res
=
CIBlockElement
::
GetByID
(
$_POST
[
'quest'
]);
if
(
$ar_res
=
$res
->
GetNext
())
$name
=
$ar_res
[
'NAME'
];
$teas
=
tea
Bron
(
$_POST
[
'time'
],
$_POST
[
'date'
],
$_POST
[
'quest'
]);
$teas
=
tea
s
(
$_POST
[
'time'
],
$_POST
[
'date'
],
$_POST
[
'quest'
]);
echo
json_encode
([
'name'
=>
$name
,
'date'
=>
rusdate
(
$_POST
[
'date'
]),
'teas'
=>
$teas
]);
}
...
...
local/ajax/tea-lists.php
0 → 100644
View file @
cf806fc6
<?
require_once
(
$_SERVER
[
"DOCUMENT_ROOT"
]
.
"/bitrix/modules/main/include/prolog_before.php"
);
CModule
::
IncludeModule
(
"iblock"
);
?>
<?
if
(
!
empty
(
$_POST
)){
$iblockId
=
13
;
$teaId
=
$_POST
[
'teaid'
];
$time
=
"11:00"
;
$timesBegin
=
[];
$timesEnd
=
[];
$date
=
$_POST
[
'date'
];
for
(
$i
=
0
;
$i
<=
24
;
$i
++
)
{
$ti
=
explode
(
":"
,
$time
);
$hour
=
(
int
)
$ti
[
0
];
$min
=
(
int
)
$ti
[
1
];
if
(
$i
>
0
){
$min
=
$min
+
30
;
if
(
$min
==
60
){
$hour
+=
1
;
$min
=
0
;
}
}
if
(
$min
==
0
){
$time
=
$hour
.
":"
.
$min
.
"0"
;
}
else
$time
=
$hour
.
":"
.
$min
;
$arSelect
=
array
(
"ID"
,
"IBLOCK_ID"
,
"PROPERTY_*"
);
$date
=
date
(
'Y-m-d'
,
strtotime
(
$date
));
$arFilter
=
array
(
"IBLOCK_ID"
=>
$iblockId
,
"ACTIVE"
=>
"Y"
,
"PROPERTY_TEA"
=>
$teaId
,
"PROPERTY_DATE"
=>
$date
);
$res
=
CIBlockElement
::
GetList
(
array
(),
$arFilter
,
false
,
false
,
$arSelect
);
if
(
$res
->
SelectedRowsCount
()
==
0
)
{
$timesBegin
[]
=
$time
;
$timesEnd
[]
=
$time
;
}
else
{
while
(
$ob
=
$res
->
GetNextElement
())
{
$arItem
=
$ob
->
GetFields
();
$arItem
[
'PROPERTIES'
]
=
$ob
->
GetProperties
();
$teas
[]
=
$arItem
;
}
foreach
(
$teas
as
$arItem
)
{
$hourBeg
=
explode
(
':'
,
$arItem
[
'PROPERTIES'
][
'TIME_BEGIN'
][
'VALUE'
]);
$hourBegin
=
$hourBeg
[
0
];
$minBegin
=
$hourBeg
[
1
];
$hourEn
=
explode
(
':'
,
$arItem
[
'PROPERTIES'
][
'TIME_END'
][
'VALUE'
]);
$hourEnd
=
$hourEn
[
0
];
$minEnd
=
$hourEn
[
1
];
$hou
=
explode
(
':'
,
$time
);
$hour
=
$hou
[
0
];
$min
=
$hou
[
1
];
// если время брони совпадает
if
(
$hour
<
$hourBegin
)
{
$timesBegin
[]
=
$time
;
$timesEnd
[]
=
$time
;
}
if
(
$hour
>
$hourEnd
)
{
$timesBegin
[]
=
$time
;
$timesEnd
[]
=
$time
;
}
}
}
}
$timesBegin
=
array_unique
(
$timesBegin
);
$timesEnd
=
array_unique
(
$timesEnd
);
echo
json_encode
([
'timesBegin'
=>
$timesBegin
,
'timesEnd'
=>
$timesEnd
]);
}
?>
local/php_interface/init.php
View file @
cf806fc6
...
...
@@ -207,7 +207,7 @@ function sendTelegram($text){
echo
$resultQuery
;
}
// функция опеределяет какая чайная забронирована, чтобы убрать ее из попопа
function
tea
Bron
(
$time
,
$date
,
$questId
){
function
tea
s
(
$time
,
$date
,
$questId
){
$iblockId
=
13
;
// инфоблок чайных
$teas
=
[];
// получаем чайные у квеста
...
...
@@ -230,36 +230,38 @@ function teaBron($time,$date,$questId){
}
// получаем бронирование чайных
$arSelect
=
Array
(
"ID"
,
"IBLOCK_ID"
,
"PROPERTY_*"
);
$date
=
date
(
'Y-m-d'
,
strtotime
(
$date
));
$arFilter
=
Array
(
"IBLOCK_ID"
=>
$iblockId
,
"ACTIVE"
=>
"Y"
,
"PROPERTY_DATE"
=>
$date
,
);
$res
=
CIBlockElement
::
GetList
(
Array
(),
$arFilter
,
false
,
false
,
$arSelect
);
while
(
$ob
=
$res
->
GetNextElement
()){
$arItem
=
$ob
->
GetFields
();
$arItem
[
'PROPERTIES'
]
=
$ob
->
GetProperties
();
$hourBeg
=
explode
(
':'
,
$arItem
[
'PROPERTIES'
][
'TIME_BEGIN'
][
'VALUE'
]);
$hourBegin
=
$hourBeg
[
0
];
$minBegin
=
$hourBeg
[
1
];
$hourEn
=
explode
(
':'
,
$arItem
[
'PROPERTIES'
][
'TIME_END'
][
'VALUE'
]);
$hourEnd
=
$hourEn
[
0
];
$minEnd
=
$hourBeg
[
1
];
$hou
=
explode
(
':'
,
$time
);
$hour
=
$hou
[
0
];
// если время брони совпадает
if
(
$hour
>=
$hourBegin
&&
$hour
<=
$hourEnd
){
unset
(
$teas
[
$arItem
[
'PROPERTIES'
][
'TEA'
][
'VALUE'
]]);
}
}
//
$arSelect = Array("ID", "IBLOCK_ID","PROPERTY_*");
//
$date = date('Y-m-d', strtotime($date));
//
$arFilter = Array(
//
"IBLOCK_ID"=>$iblockId,
//
"ACTIVE"=>"Y",
//
"PROPERTY_DATE"=>$date,
//
);
//
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
//
while($ob = $res->GetNextElement()){
//
$arItem = $ob->GetFields();
//
$arItem['PROPERTIES'] = $ob->GetProperties();
//
//
$hourBeg=explode(':',$arItem['PROPERTIES']['TIME_BEGIN']['VALUE']);
//
$hourBegin=$hourBeg[0];
//
$minBegin=$hourBeg[1];
//
$hourEn=explode(':',$arItem['PROPERTIES']['TIME_END']['VALUE']);
//
$hourEnd=$hourEn[0];
//
$minEnd=$hourBeg[1];
//
$hou=explode(':',$time);
//
$hour=$hou[0];
//
// если время брони совпадает
//
if ($hour>=$hourBegin && $hour<=$hourEnd){
//
unset($teas[$arItem['PROPERTIES']['TEA']['VALUE']]);
//
}
//
//
//
}
return
$teas
;
}
// забронирована ли чайная
function
closedTea
(
$date
,
$time
,
$teaId
)
{
// получаем бронирование чайных
...
...
@@ -371,4 +373,36 @@ function timeend($tim,$teaId,$date)
}
return
$times
;
}
// При вводе проваеряем забронирована ли чайная
AddEventHandler
(
"iblock"
,
"OnBeforeIBlockElementAdd"
,
"OnBeforeIBlockElementAddHandler"
);
function
OnBeforeIBlockElementAddHandler
(
&
$arFields
)
{
// echo "<pre>";
// print_r($arFields);
// echo "</pre>";
// die();
if
(
$arFields
[
'IBLOCK_ID'
]
==
13
)
{
if
(
is_array
(
$arFields
[
'PROPERTY_VALUES'
][
61
])){
$timeBegin
=
current
(
current
(
$arFields
[
'PROPERTY_VALUES'
][
61
]));
}
if
(
is_array
(
$arFields
[
'PROPERTY_VALUES'
][
62
]))
{
$timeEnd
=
current
(
current
(
$arFields
[
'PROPERTY_VALUES'
][
62
]));
}
if
(
is_array
(
$arFields
[
'PROPERTY_VALUES'
][
60
]))
{
$teaId
=
current
(
current
(
$arFields
[
'PROPERTY_VALUES'
][
60
]));
}
if
(
is_array
(
$arFields
[
'PROPERTY_VALUES'
][
63
]))
{
$date
=
current
(
current
(
$arFields
[
'PROPERTY_VALUES'
][
63
]));
}
if
(
closedTea
(
$date
,
$timeBegin
,
$teaId
)
||
closedTea
(
$date
,
$timeEnd
,
$teaId
))
{
global
$APPLICATION
;
$APPLICATION
->
throwException
(
"Ошибка! На данное время чайная уже забронирована."
);
return
false
;
}
}
}
\ No newline at end of file
local/templates/blackcat/components/bitrix/news/quests/bitrix/news.detail/.default/template.php
View file @
cf806fc6
...
...
@@ -57,15 +57,15 @@ $kol = 3;
</div>
</div>
<div
class=
"quest__bottom"
>
<div
class=
"quest__content__description"
>
<?=
$arResult
[
'DETAIL_TEXT'
]
?>
</div>
</div>
</div>
</div>
<div
class=
"review-phone"
>
<div
class=
"quest__content__description"
>
<?=
$arResult
[
'DETAIL_TEXT'
]
?>
</div>
<a
href=
"#"
data-toggle=
"modal"
data-target=
"#reviewModal"
class=
"send-review"
>
Оставить отзыв
</a>
<div
class=
"reviews"
>
<?
foreach
(
$arResult
[
"REVIEWS"
]
as
$k
=>
$arItem
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment