1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
save.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Location\Repository\Location\Strategy;
4
5
use Bitrix\Location\Entity\Location;
6
use Bitrix\Location\Repository\Location\Capability\ISaveParents;
7
use Bitrix\Location\Repository\Location\IRepository;
8
use Bitrix\Location\Repository\Location\ICache;
9
use Bitrix\Location\Repository\Location\IDatabase;
10
use Bitrix\Location\Repository\Location\Capability\ISave;
11
use Bitrix\Location\Repository\Location\Strategy\Save\NewItem;
12
use Bitrix\Main\Result;
13
18
class
Save
19
extends
Base
20
implements
ISave
,
ISaveParents
21
{
23
protected
$locationRepositories
= [];
24
26
public
function
setLocationRepositories
(
array
$locationRepositories
):
Base
27
{
28
$idx = 0;
29
30
foreach
(
$locationRepositories
as $repository)
31
{
32
if
($repository instanceof
ISave
)
33
{
34
$key
= (string)$this->
getRepoPriority
($repository) . (string)($idx++);
35
$this->locationRepositories[
$key
] = $repository;
36
}
37
}
38
39
ksort($this->locationRepositories);
40
return
$this;
41
}
42
47
protected
function
getRepoPriority
(
IRepository
$repository)
48
{
49
if
($repository instanceof
IDatabase
)
50
{
51
$result
= self::REPO_PRIORITY_A;
52
}
53
elseif
($repository instanceof
ICache
)
54
{
55
$result
= self::REPO_PRIORITY_B;
56
}
57
else
58
{
59
$result
= self::REPO_PRIORITY_C;
60
}
61
62
return
$result
;
63
}
64
72
public
function
save
(
Location
$location
):
Result
73
{
74
if
(
$location
->getId() <= 0)
75
{
76
return
(
new
NewItem
($this->locationRepositories))
77
->save(
$location
);
78
}
79
80
$result
=
new
Result
();
81
82
foreach
($this->locationRepositories as $repository)
83
{
84
$res
= $repository->save(
$location
);
85
86
if
(!
$res
->isSuccess())
87
{
88
$result
->addErrors(
$res
->getErrors());
89
}
90
}
91
92
if
($parents =
$location
->getParents())
93
{
94
$res
= $this->
saveParents
($parents);
95
96
if
(!
$res
->isSuccess())
97
{
98
$result
->addErrors(
$res
->getErrors());
99
}
100
}
101
102
return
$result
;
103
}
104
105
public
function
saveParents
(
Location
\
Parents
$parents):
Result
106
{
107
$result
=
new
Result
();
108
109
foreach
($this->locationRepositories as $repository)
110
{
111
if
($repository instanceof
ISaveParents
)
112
{
113
$res
= $repository->saveParents($parents);
114
115
if
(!
$res
->isSuccess())
116
{
117
$result
->addErrors(
$res
->getErrors());
118
}
119
}
120
}
121
122
return
$result
;
123
}
124
}
Bitrix\Location\Entity\Location\Parents
Определения
parents.php:13
Bitrix\Location\Repository\Location\Strategy\Base
Определения
base.php:13
Bitrix\Location\Repository\Location\Strategy\Save\NewItem
Определения
newitem.php:15
Bitrix\Location\Repository\Location\Strategy\Save\getRepoPriority
getRepoPriority(IRepository $repository)
Определения
save.php:47
Bitrix\Location\Repository\Location\Strategy\Save\$locationRepositories
$locationRepositories
Определения
save.php:23
Bitrix\Location\Repository\Location\Strategy\Save\saveParents
saveParents(Location\Parents $parents)
Определения
save.php:105
Bitrix\Location\Repository\Location\Strategy\Save\setLocationRepositories
setLocationRepositories(array $locationRepositories)
Определения
save.php:26
Bitrix\Location\Repository\Location\Strategy\Save\save
save(Location $location)
Определения
save.php:72
Bitrix\Main\ORM\Data\Result
Определения
result.php:16
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$res
$res
Определения
filter_act.php:7
$result
$result
Определения
get_property_values.php:14
Bitrix\Location\Repository\Location\Capability\ISave
Определения
isave.php:12
Bitrix\Location\Repository\Location\Capability\ISaveParents
Определения
isaveparents.php:13
Bitrix\Location\Repository\Location\ICache
Определения
icache.php:13
Bitrix\Location\Repository\Location\IDatabase
Определения
idatabase.php:11
Bitrix\Location\Repository\Location\IRepository
Определения
irepository.php:11
Bitrix\Location\Entity\Location
Определения
collection.php:3
Bitrix\Location\Repository\Location\Strategy\Save
Определения
newitem.php:3
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
$location
$location
Определения
options.php:2729
bitrix
modules
location
lib
repository
location
strategy
save.php
Создано системой
1.14.0