forked from ezsystems/ezpublish-kernel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SectionHandler.php
146 lines (132 loc) · 3.61 KB
/
SectionHandler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
/**
* File containing the SectionHandler implementation
*
* @copyright Copyright (C) 1999-2013 eZ Systems AS. All rights reserved.
* @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
* @version //autogentag//
*/
namespace eZ\Publish\Core\Persistence\InMemory;
use eZ\Publish\SPI\Persistence\Content\Section\Handler as SectionHandlerInterface;
use eZ\Publish\Core\Base\Exceptions\NotFoundException as NotFound;
use LogicException;
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
class SectionHandler implements SectionHandlerInterface
{
/**
* @var Handler
*/
protected $handler;
/**
* @var Backend
*/
protected $backend;
/**
* Setups current handler instance with reference to Handler object that created it.
*
* @param Handler $handler
* @param Backend $backend The storage engine backend
*/
public function __construct( Handler $handler, Backend $backend )
{
$this->handler = $handler;
$this->backend = $backend;
}
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
public function create( $name, $identifier )
{
return $this->backend->create(
'Content\\Section',
array(
'name' => $name,
'identifier' => $identifier
)
);
}
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
public function update( $id, $name, $identifier )
{
$this->backend->update(
'Content\\Section',
$id,
array(
'id' => $id,
'name' => $name,
'identifier' => $identifier
)
);
return $this->load( $id );
}
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
public function load( $id )
{
return $this->backend->load( 'Content\\Section', $id );
}
/**
* Get all section data
*
* @return \eZ\Publish\SPI\Persistence\Content\Section[]
*/
public function loadAll()
{
return $this->backend->find( 'Content\\Section' );
}
/**
* Get section data by identifier
*
* @param string $identifier
*
* @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If section is not found
*
* @return \eZ\Publish\SPI\Persistence\Content\Section
*/
public function loadByIdentifier( $identifier )
{
$list = $this->backend->find( 'Content\\Section', array( 'identifier' => $identifier ) );
if ( empty( $list ) )
throw new NotFound( 'Section', $identifier );
if ( isset( $list[1] ) )
throw new LogicException( 'Several Sections with same identifier' );
return $list[0];
}
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
public function delete( $id )
{
$this->backend->delete( 'Content\\Section', $id );
}
/**
* @see eZ\Publish\SPI\Persistence\Content\Section\Handler
*/
public function assign( $sectionId, $contentId )
{
$this->backend->update(
'Content\\ContentInfo',
$contentId,
array(
'sectionId' => $sectionId,
),
true
);
}
/**
* Number of content assignments a Section has
*
* @param mixed $sectionId
*
* @return int
*/
public function assignmentsCount( $sectionId )
{
return $this->backend->count( 'Content\\ContentInfo', array( 'sectionId' => $sectionId ) );
}
}