Glpi\Api\Rest\ItemHandler: lines coverage

88% of 105

Lines
Method Lines Line %
Glpi\Api\Rest\ItemHandler::__construct() 2 100%
Glpi\Api\Rest\ItemHandler::getClient() 1 0%
Glpi\Api\Rest\ItemHandler::getItem() 6 100%
Glpi\Api\Rest\ItemHandler::getAllItems() 10 100%
Glpi\Api\Rest\ItemHandler::getSubItems() 11 100%
Glpi\Api\Rest\ItemHandler::getMultipleItems() 7 100%
Glpi\Api\Rest\ItemHandler::listSearchOptions() 6 0%
Glpi\Api\Rest\ItemHandler::searchItems() 6 100%
Glpi\Api\Rest\ItemHandler::addItems() 8 100%
Glpi\Api\Rest\ItemHandler::updateItems() 10 100%
Glpi\Api\Rest\ItemHandler::deleteItems() 13 100%
Glpi\Api\Rest\ItemHandler::__call() 25 76%
#
1
<?php
2
/**
3
 * --------------------------------------------------------------------
4
 *
5
 * LICENSE
6
 *
7
 * This file is part of the GLPI API Client Library for PHP,
8
 * a subproject of GLPI. GLPI is a free IT Asset Management.
9
 *
10
 * GLPI is free software: you can redistribute it and/or
11
 * modify it under the terms of the GNU General Public License
12
 * as published by the Free Software Foundation; either version 3
13
 * of the License, or (at your option) any later version.
14
 *
15
 * GLPI is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU General Public License for more details.
19
 * --------------------------------------------------------------------
20
 * @author    Domingo Oropeza - <doropeza@teclib.com>
21
 * @copyright (C) 2017 Teclib' and contributors.
22
 * @license   GPLv3 https://www.gnu.org/licenses/gpl-3.0.html
23
 * @link      https://github.com/glpi-project/php-library-glpi
24
 * @link      http://www.glpi-project.org/
25
 * --------------------------------------------------------------------
26
 */
27

                    
28
namespace Glpi\Api\Rest;
29

                    
30

                    
31
use Glpi\Api\Rest\Exception\BadEndpointException;
32
use Glpi\Api\Rest\Exception\InsufficientArgumentsException;
33
use Psr\Log\InvalidArgumentException;
34

                    
35

                    
36
/**
37
 * These methods are dynamically handled by the __call() function to help developers' IDE.
38
 * ItemTypes declared here are from the GLPI core, to add new auto-complete helper extend this
39
 * class and add your ItemTypes
40
 *
41
 * $action valid values are 'create', 'read', 'update' and 'delete'
42
 * $input could be and array or a integer depending on the action.
43
 * $params are used for add query string parameters
44
 *
45
 * @method array Alert(string $action, array $input = [], array $params = [])
46
 * @method array AuthLDAP(string $action, array $input = [], array $params = [])
47
 * @method array AuthLdapReplicate(string $action, array $input = [], array $params = [])
48
 * @method array AuthMail(string $action, array $input = [], array $params = [])
49
 * @method array AutoUpdateSystem(string $action, array $input = [], array $params = [])
50
 * @method array Blacklist(string $action, array $input = [], array $params = [])
51
 * @method array BlacklistedMailContent(string $action, array $input = [], array $params = [])
52
 * @method array Bookmark(string $action, array $input = [], array $params = [])
53
 * @method array Bookmark_User(string $action, array $input = [], array $params = [])
54
 * @method array Budget(string $action, array $input = [], array $params = [])
55
 * @method array Calendar(string $action, array $input = [], array $params = [])
56
 * @method array Calendar_Holiday(string $action, array $input = [], array $params = [])
57
 * @method array CalendarSegment(string $action, array $input = [], array $params = [])
58
 * @method array Cartridge(string $action, array $input = [], array $params = [])
59
 * @method array CartridgeItem(string $action, array $input = [], array $params = [])
60
 * @method array CartridgeItem_PrinterModel(string $action, array $input = [], array $params = [])
61
 * @method array CartridgeItemType(string $action, array $input = [], array $params = [])
62
 * @method array Change(string $action, array $input = [], array $params = [])
63
 * @method array Change_Group(string $action, array $input = [], array $params = [])
64
 * @method array Change_Item(string $action, array $input = [], array $params = [])
65
 * @method array Change_Problem(string $action, array $input = [], array $params = [])
66
 * @method array Change_Project(string $action, array $input = [], array $params = [])
67
 * @method array Change_Supplier(string $action, array $input = [], array $params = [])
68
 * @method array Change_Ticket(string $action, array $input = [], array $params = [])
69
 * @method array Change_User(string $action, array $input = [], array $params = [])
70
 * @method array ChangeCost(string $action, array $input = [], array $params = [])
71
 * @method array ChangeTask(string $action, array $input = [], array $params = [])
72
 * @method array ChangeValidation(string $action, array $input = [], array $params = [])
73
 * @method array CommonDBChild(string $action, array $input = [], array $params = [])
74
 * @method array CommonDBConnexity(string $action, array $input = [], array $params = [])
75
 * @method array CommonDBRelation(string $action, array $input = [], array $params = [])
76
 * @method array CommonDevice(string $action, array $input = [], array $params = [])
77
 * @method array CommonDropdown(string $action, array $input = [], array $params = [])
78
 * @method array CommonImplicitTreeDropdown(string $action, array $input = [], array $params = [])
79
 * @method array CommonITILActor(string $action, array $input = [], array $params = [])
80
 * @method array CommonITILCost(string $action, array $input = [], array $params = [])
81
 * @method array CommonITILObject(string $action, array $input = [], array $params = [])
82
 * @method array CommonITILTask(string $action, array $input = [], array $params = [])
83
 * @method array CommonITILValidation(string $action, array $input = [], array $params = [])
84
 * @method array CommonTreeDropdown(string $action, array $input = [], array $params = [])
85
 * @method array Computer(string $action, array $input = [], array $params = [])
86
 * @method array Computer_Item(string $action, array $input = [], array $params = [])
87
 * @method array Computer_SoftwareLicense(string $action, array $input = [], array $params = [])
88
 * @method array Computer_SoftwareVersion(string $action, array $input = [], array $params = [])
89
 * @method array ComputerDisk(string $action, array $input = [], array $params = [])
90
 * @method array ComputerModel(string $action, array $input = [], array $params = [])
91
 * @method array ComputerType(string $action, array $input = [], array $params = [])
92
 * @method array ComputerVirtualMachine(string $action, array $input = [], array $params = [])
93
 * @method array Config(string $action, array $input = [], array $params = [])
94
 * @method array Consumable(string $action, array $input = [], array $params = [])
95
 * @method array ConsumableItem(string $action, array $input = [], array $params = [])
96
 * @method array ConsumableItemType(string $action, array $input = [], array $params = [])
97
 * @method array Contact(string $action, array $input = [], array $params = [])
98
 * @method array Contact_Supplier(string $action, array $input = [], array $params = [])
99
 * @method array ContactType(string $action, array $input = [], array $params = [])
100
 * @method array Contract(string $action, array $input = [], array $params = [])
101
 * @method array Contract_Item(string $action, array $input = [], array $params = [])
102
 * @method array Contract_Supplier(string $action, array $input = [], array $params = [])
103
 * @method array ContractCost(string $action, array $input = [], array $params = [])
104
 * @method array ContractType(string $action, array $input = [], array $params = [])
105
 * @method array CronTask(string $action, array $input = [], array $params = [])
106
 * @method array CronTaskLog(string $action, array $input = [], array $params = [])
107
 * @method array DBConnection(string $action, array $input = [], array $params = [])
108
 * @method array DeviceCase(string $action, array $input = [], array $params = [])
109
 * @method array DeviceCaseType(string $action, array $input = [], array $params = [])
110
 * @method array DeviceControl(string $action, array $input = [], array $params = [])
111
 * @method array DeviceDrive(string $action, array $input = [], array $params = [])
112
 * @method array DeviceGraphicCard(string $action, array $input = [], array $params = [])
113
 * @method array DeviceHardDrive(string $action, array $input = [], array $params = [])
114
 * @method array DeviceMemory(string $action, array $input = [], array $params = [])
115
 * @method array DeviceMemoryType(string $action, array $input = [], array $params = [])
116
 * @method array DeviceMotherboard(string $action, array $input = [], array $params = [])
117
 * @method array DeviceNetworkCard(string $action, array $input = [], array $params = [])
118
 * @method array DevicePci(string $action, array $input = [], array $params = [])
119
 * @method array DevicePowerSupply(string $action, array $input = [], array $params = [])
120
 * @method array DeviceProcessor(string $action, array $input = [], array $params = [])
121
 * @method array DeviceSoundCard(string $action, array $input = [], array $params = [])
122
 * @method array DisplayPreference(string $action, array $input = [], array $params = [])
123
 * @method array Document(string $action, array $input = [], array $params = [])
124
 * @method array Document_Item(string $action, array $input = [], array $params = [])
125
 * @method array DocumentCategory(string $action, array $input = [], array $params = [])
126
 * @method array DocumentType(string $action, array $input = [], array $params = [])
127
 * @method array Domain(string $action, array $input = [], array $params = [])
128
 * @method array DropdownTranslation(string $action, array $input = [], array $params = [])
129
 * @method array Entity(string $action, array $input = [], array $params = [])
130
 * @method array Entity_KnowbaseItem(string $action, array $input = [], array $params = [])
131
 * @method array Entity_Reminder(string $action, array $input = [], array $params = [])
132
 * @method array Entity_RSSFeed(string $action, array $input = [], array $params = [])
133
 * @method array Event(string $action, array $input = [], array $params = [])
134
 * @method array Fieldblacklist(string $action, array $input = [], array $params = [])
135
 * @method array FieldUnicity(string $action, array $input = [], array $params = [])
136
 * @method array Filesystem(string $action, array $input = [], array $params = [])
137
 * @method array FQDN(string $action, array $input = [], array $params = [])
138
 * @method array FQDNLabel(string $action, array $input = [], array $params = [])
139
 * @method array Group(string $action, array $input = [], array $params = [])
140
 * @method array Group_KnowbaseItem(string $action, array $input = [], array $params = [])
141
 * @method array Group_Problem(string $action, array $input = [], array $params = [])
142
 * @method array Group_Reminder(string $action, array $input = [], array $params = [])
143
 * @method array Group_RSSFeed(string $action, array $input = [], array $params = [])
144
 * @method array Group_Ticket(string $action, array $input = [], array $params = [])
145
 * @method array Group_User(string $action, array $input = [], array $params = [])
146
 * @method array Holiday(string $action, array $input = [], array $params = [])
147
 * @method array Infocom(string $action, array $input = [], array $params = [])
148
 * @method array InterfaceType(string $action, array $input = [], array $params = [])
149
 * @method array IPAddress(string $action, array $input = [], array $params = [])
150
 * @method array IPAddress_IPNetwork(string $action, array $input = [], array $params = [])
151
 * @method array IPNetmask(string $action, array $input = [], array $params = [])
152
 * @method array IPNetwork(string $action, array $input = [], array $params = [])
153
 * @method array IPNetwork_Vlan(string $action, array $input = [], array $params = [])
154
 * @method array Item_DeviceCase(string $action, array $input = [], array $params = [])
155
 * @method array Item_DeviceControl(string $action, array $input = [], array $params = [])
156
 * @method array Item_DeviceDrive(string $action, array $input = [], array $params = [])
157
 * @method array Item_DeviceGraphicCard(string $action, array $input = [], array $params = [])
158
 * @method array Item_DeviceHardDrive(string $action, array $input = [], array $params = [])
159
 * @method array Item_DeviceMemory(string $action, array $input = [], array $params = [])
160
 * @method array Item_DeviceMotherboard(string $action, array $input = [], array $params = [])
161
 * @method array Item_DeviceNetworkCard(string $action, array $input = [], array $params = [])
162
 * @method array Item_DevicePci(string $action, array $input = [], array $params = [])
163
 * @method array Item_DevicePowerSupply(string $action, array $input = [], array $params = [])
164
 * @method array Item_DeviceProcessor(string $action, array $input = [], array $params = [])
165
 * @method array Item_Devices(string $action, array $input = [], array $params = [])
166
 * @method array Item_DeviceSoundCard(string $action, array $input = [], array $params = [])
167
 * @method array Item_Problem(string $action, array $input = [], array $params = [])
168
 * @method array Item_Project(string $action, array $input = [], array $params = [])
169
 * @method array Item_Ticket(string $action, array $input = [], array $params = [])
170
 * @method array ITILCategory(string $action, array $input = [], array $params = [])
171
 * @method array KnowbaseItem(string $action, array $input = [], array $params = [])
172
 * @method array KnowbaseItem_Profile(string $action, array $input = [], array $params = [])
173
 * @method array KnowbaseItem_User(string $action, array $input = [], array $params = [])
174
 * @method array KnowbaseItemCategory(string $action, array $input = [], array $params = [])
175
 * @method array KnowbaseItemTranslation(string $action, array $input = [], array $params = [])
176
 * @method array Link(string $action, array $input = [], array $params = [])
177
 * @method array Link_Itemtype(string $action, array $input = [], array $params = [])
178
 * @method array Location(string $action, array $input = [], array $params = [])
179
 * @method array Log(string $action, array $input = [], array $params = [])
180
 * @method array MailCollector(string $action, array $input = [], array $params = [])
181
 * @method array Manufacturer(string $action, array $input = [], array $params = [])
182
 * @method array Monitor(string $action, array $input = [], array $params = [])
183
 * @method array MonitorModel(string $action, array $input = [], array $params = [])
184
 * @method array MonitorType(string $action, array $input = [], array $params = [])
185
 * @method array Netpoint(string $action, array $input = [], array $params = [])
186
 * @method array Network(string $action, array $input = [], array $params = [])
187
 * @method array NetworkAlias(string $action, array $input = [], array $params = [])
188
 * @method array NetworkEquipment(string $action, array $input = [], array $params = [])
189
 * @method array NetworkEquipmentFirmware(string $action, array $input = [], array $params = [])
190
 * @method array NetworkEquipmentModel(string $action, array $input = [], array $params = [])
191
 * @method array NetworkEquipmentType(string $action, array $input = [], array $params = [])
192
 * @method array NetworkInterface(string $action, array $input = [], array $params = [])
193
 * @method array NetworkName(string $action, array $input = [], array $params = [])
194
 * @method array NetworkPort(string $action, array $input = [], array $params = [])
195
 * @method array NetworkPort_NetworkPort(string $action, array $input = [], array $params = [])
196
 * @method array NetworkPort_Vlan(string $action, array $input = [], array $params = [])
197
 * @method array NetworkPortAggregate(string $action, array $input = [], array $params = [])
198
 * @method array NetworkPortAlias(string $action, array $input = [], array $params = [])
199
 * @method array NetworkPortDialup(string $action, array $input = [], array $params = [])
200
 * @method array NetworkPortEthernet(string $action, array $input = [], array $params = [])
201
 * @method array NetworkPortInstantiation(string $action, array $input = [], array $params = [])
202
 * @method array NetworkPortLocal(string $action, array $input = [], array $params = [])
203
 * @method array NetworkPortMigration(string $action, array $input = [], array $params = [])
204
 * @method array NetworkPortWifi(string $action, array $input = [], array $params = [])
205
 * @method array Notepad(string $action, array $input = [], array $params = [])
206
 * @method array Notification(string $action, array $input = [], array $params = [])
207
 * @method array NotificationEvent(string $action, array $input = [], array $params = [])
208
 * @method array NotificationMailSetting(string $action, array $input = [], array $params = [])
209
 * @method array NotificationTarget(string $action, array $input = [], array $params = [])
210
 * @method array NotificationTargetCartridgeItem(string $action, array $input = [], array $params = [])
211
 * @method array NotificationTargetChange(string $action, array $input = [], array $params = [])
212
 * @method array NotificationTargetCommonITILObject(string $action, array $input = [], array $params = [])
213
 * @method array NotificationTargetConsumableItem(string $action, array $input = [], array $params = [])
214
 * @method array NotificationTargetContract(string $action, array $input = [], array $params = [])
215
 * @method array NotificationTargetCrontask(string $action, array $input = [], array $params = [])
216
 * @method array NotificationTargetDBConnection(string $action, array $input = [], array $params = [])
217
 * @method array NotificationTargetFieldUnicity(string $action, array $input = [], array $params = [])
218
 * @method array NotificationTargetInfocom(string $action, array $input = [], array $params = [])
219
 * @method array NotificationTargetMailCollector(string $action, array $input = [], array $params = [])
220
 * @method array NotificationTargetPlanningRecall(string $action, array $input = [], array $params = [])
221
 * @method array NotificationTargetProblem(string $action, array $input = [], array $params = [])
222
 * @method array NotificationTargetProject(string $action, array $input = [], array $params = [])
223
 * @method array NotificationTargetProjectTask(string $action, array $input = [], array $params = [])
224
 * @method array NotificationTargetReservation(string $action, array $input = [], array $params = [])
225
 * @method array NotificationTargetSoftwareLicense(string $action, array $input = [], array $params = [])
226
 * @method array NotificationTargetTicket(string $action, array $input = [], array $params = [])
227
 * @method array NotificationTargetUser(string $action, array $input = [], array $params = [])
228
 * @method array NotificationTemplate(string $action, array $input = [], array $params = [])
229
 * @method array NotificationTemplateTranslation(string $action, array $input = [], array $params = [])
230
 * @method array NotImportedEmail(string $action, array $input = [], array $params = [])
231
 * @method array OperatingSystem(string $action, array $input = [], array $params = [])
232
 * @method array OperatingSystemServicePack(string $action, array $input = [], array $params = [])
233
 * @method array OperatingSystemVersion(string $action, array $input = [], array $params = [])
234
 * @method array Peripheral(string $action, array $input = [], array $params = [])
235
 * @method array PeripheralModel(string $action, array $input = [], array $params = [])
236
 * @method array PeripheralType(string $action, array $input = [], array $params = [])
237
 * @method array Phone(string $action, array $input = [], array $params = [])
238
 * @method array PhoneModel(string $action, array $input = [], array $params = [])
239
 * @method array PhonePowerSupply(string $action, array $input = [], array $params = [])
240
 * @method array PhoneType(string $action, array $input = [], array $params = [])
241
 * @method array PlanningRecall(string $action, array $input = [], array $params = [])
242
 * @method array Plugin(string $action, array $input = [], array $params = [])
243
 * @method array Printer(string $action, array $input = [], array $params = [])
244
 * @method array PrinterModel(string $action, array $input = [], array $params = [])
245
 * @method array PrinterType(string $action, array $input = [], array $params = [])
246
 * @method array Problem(string $action, array $input = [], array $params = [])
247
 * @method array Problem_Supplier(string $action, array $input = [], array $params = [])
248
 * @method array Problem_Ticket(string $action, array $input = [], array $params = [])
249
 * @method array Problem_User(string $action, array $input = [], array $params = [])
250
 * @method array ProblemCost(string $action, array $input = [], array $params = [])
251
 * @method array ProblemTask(string $action, array $input = [], array $params = [])
252
 * @method array Profile(string $action, array $input = [], array $params = [])
253
 * @method array Profile_Reminder(string $action, array $input = [], array $params = [])
254
 * @method array Profile_RSSFeed(string $action, array $input = [], array $params = [])
255
 * @method array Profile_User(string $action, array $input = [], array $params = [])
256
 * @method array ProfileRight(string $action, array $input = [], array $params = [])
257
 * @method array Project(string $action, array $input = [], array $params = [])
258
 * @method array ProjectCost(string $action, array $input = [], array $params = [])
259
 * @method array ProjectState(string $action, array $input = [], array $params = [])
260
 * @method array ProjectTask(string $action, array $input = [], array $params = [])
261
 * @method array ProjectTask_Ticket(string $action, array $input = [], array $params = [])
262
 * @method array ProjectTaskTeam(string $action, array $input = [], array $params = [])
263
 * @method array ProjectTaskType(string $action, array $input = [], array $params = [])
264
 * @method array ProjectTeam(string $action, array $input = [], array $params = [])
265
 * @method array ProjectType(string $action, array $input = [], array $params = [])
266
 * @method array QueuedMail(string $action, array $input = [], array $params = [])
267
 * @method array RegisteredID(string $action, array $input = [], array $params = [])
268
 * @method array Reminder(string $action, array $input = [], array $params = [])
269
 * @method array Reminder_User(string $action, array $input = [], array $params = [])
270
 * @method array RequestType(string $action, array $input = [], array $params = [])
271
 * @method array Reservation(string $action, array $input = [], array $params = [])
272
 * @method array ReservationItem(string $action, array $input = [], array $params = [])
273
 * @method array RSSFeed(string $action, array $input = [], array $params = [])
274
 * @method array RSSFeed_User(string $action, array $input = [], array $params = [])
275
 * @method array Rule(string $action, array $input = [], array $params = [])
276
 * @method array RuleAction(string $action, array $input = [], array $params = [])
277
 * @method array RuleCollection(string $action, array $input = [], array $params = [])
278
 * @method array RuleCriteria(string $action, array $input = [], array $params = [])
279
 * @method array RuleDictionnaryComputerModel(string $action, array $input = [], array $params = [])
280
 * @method array RuleDictionnaryComputerModelCollection(string $action, array $input = [], array $params = [])
281
 * @method array RuleDictionnaryComputerType(string $action, array $input = [], array $params = [])
282
 * @method array RuleDictionnaryComputerTypeCollection(string $action, array $input = [], array $params = [])
283
 * @method array RuleDictionnaryDropdown(string $action, array $input = [], array $params = [])
284
 * @method array RuleDictionnaryDropdownCollection(string $action, array $input = [], array $params = [])
285
 * @method array RuleDictionnaryManufacturer(string $action, array $input = [], array $params = [])
286
 * @method array RuleDictionnaryManufacturerCollection(string $action, array $input = [], array $params = [])
287
 * @method array RuleDictionnaryMonitorModel(string $action, array $input = [], array $params = [])
288
 * @method array RuleDictionnaryMonitorModelCollection(string $action, array $input = [], array $params = [])
289
 * @method array RuleDictionnaryMonitorType(string $action, array $input = [], array $params = [])
290
 * @method array RuleDictionnaryMonitorTypeCollection(string $action, array $input = [], array $params = [])
291
 * @method array RuleDictionnaryNetworkEquipmentModel(string $action, array $input = [], array $params = [])
292
 * @method array RuleDictionnaryNetworkEquipmentModelCollection(string $action, array $input = [], array $params = [])
293
 * @method array RuleDictionnaryNetworkEquipmentType(string $action, array $input = [], array $params = [])
294
 * @method array RuleDictionnaryNetworkEquipmentTypeCollection(string $action, array $input = [], array $params = [])
295
 * @method array RuleDictionnaryOperatingSystem(string $action, array $input = [], array $params = [])
296
 * @method array RuleDictionnaryOperatingSystemCollection(string $action, array $input = [], array $params = [])
297
 * @method array RuleDictionnaryOperatingSystemServicePack(string $action, array $input = [], array $params = [])
298
 * @method array RuleDictionnaryOperatingSystemServicePackCollection(string $action, array $input = [], array $params = [])
299
 * @method array RuleDictionnaryOperatingSystemVersion(string $action, array $input = [], array $params = [])
300
 * @method array RuleDictionnaryOperatingSystemVersionCollection(string $action, array $input = [], array $params = [])
301
 * @method array RuleDictionnaryPeripheralModel(string $action, array $input = [], array $params = [])
302
 * @method array RuleDictionnaryPeripheralModelCollection(string $action, array $input = [], array $params = [])
303
 * @method array RuleDictionnaryPeripheralType(string $action, array $input = [], array $params = [])
304
 * @method array RuleDictionnaryPeripheralTypeCollection(string $action, array $input = [], array $params = [])
305
 * @method array RuleDictionnaryPhoneModel(string $action, array $input = [], array $params = [])
306
 * @method array RuleDictionnaryPhoneModelCollection(string $action, array $input = [], array $params = [])
307
 * @method array RuleDictionnaryPhoneType(string $action, array $input = [], array $params = [])
308
 * @method array RuleDictionnaryPhoneTypeCollection(string $action, array $input = [], array $params = [])
309
 * @method array RuleDictionnaryPrinter(string $action, array $input = [], array $params = [])
310
 * @method array RuleDictionnaryPrinterCollection(string $action, array $input = [], array $params = [])
311
 * @method array RuleDictionnaryPrinterModel(string $action, array $input = [], array $params = [])
312
 * @method array RuleDictionnaryPrinterModelCollection(string $action, array $input = [], array $params = [])
313
 * @method array RuleDictionnaryPrinterType(string $action, array $input = [], array $params = [])
314
 * @method array RuleDictionnaryPrinterTypeCollection(string $action, array $input = [], array $params = [])
315
 * @method array RuleDictionnarySoftware(string $action, array $input = [], array $params = [])
316
 * @method array RuleDictionnarySoftwareCollection(string $action, array $input = [], array $params = [])
317
 * @method array RuleImportComputer(string $action, array $input = [], array $params = [])
318
 * @method array RuleImportComputerCollection(string $action, array $input = [], array $params = [])
319
 * @method array RuleImportEntity(string $action, array $input = [], array $params = [])
320
 * @method array RuleImportEntityCollection(string $action, array $input = [], array $params = [])
321
 * @method array RuleMailCollector(string $action, array $input = [], array $params = [])
322
 * @method array RuleMailCollectorCollection(string $action, array $input = [], array $params = [])
323
 * @method array RuleRight(string $action, array $input = [], array $params = [])
324
 * @method array RuleRightCollection(string $action, array $input = [], array $params = [])
325
 * @method array RuleRightParameter(string $action, array $input = [], array $params = [])
326
 * @method array RuleSoftwareCategory(string $action, array $input = [], array $params = [])
327
 * @method array RuleSoftwareCategoryCollection(string $action, array $input = [], array $params = [])
328
 * @method array RuleTicket(string $action, array $input = [], array $params = [])
329
 * @method array RuleTicketCollection(string $action, array $input = [], array $params = [])
330
 * @method array SLA(string $action, array $input = [], array $params = [])
331
 * @method array SlaLevel(string $action, array $input = [], array $params = [])
332
 * @method array SlaLevel_Ticket(string $action, array $input = [], array $params = [])
333
 * @method array SlaLevelAction(string $action, array $input = [], array $params = [])
334
 * @method array SlaLevelCriteria(string $action, array $input = [], array $params = [])
335
 * @method array Software(string $action, array $input = [], array $params = [])
336
 * @method array SoftwareCategory(string $action, array $input = [], array $params = [])
337
 * @method array SoftwareLicense(string $action, array $input = [], array $params = [])
338
 * @method array SoftwareLicenseType(string $action, array $input = [], array $params = [])
339
 * @method array SoftwareVersion(string $action, array $input = [], array $params = [])
340
 * @method array SolutionTemplate(string $action, array $input = [], array $params = [])
341
 * @method array SolutionType(string $action, array $input = [], array $params = [])
342
 * @method array SsoVariable(string $action, array $input = [], array $params = [])
343
 * @method array State(string $action, array $input = [], array $params = [])
344
 * @method array Supplier(string $action, array $input = [], array $params = [])
345
 * @method array Supplier_Ticket(string $action, array $input = [], array $params = [])
346
 * @method array SupplierType(string $action, array $input = [], array $params = [])
347
 * @method array TaskCategory(string $action, array $input = [], array $params = [])
348
 * @method array Ticket(string $action, array $input = [], array $params = [])
349
 * @method array Ticket_Ticket(string $action, array $input = [], array $params = [])
350
 * @method array Ticket_User(string $action, array $input = [], array $params = [])
351
 * @method array TicketCost(string $action, array $input = [], array $params = [])
352
 * @method array TicketFollowup(string $action, array $input = [], array $params = [])
353
 * @method array TicketRecurrent(string $action, array $input = [], array $params = [])
354
 * @method array TicketSatisfaction(string $action, array $input = [], array $params = [])
355
 * @method array TicketTask(string $action, array $input = [], array $params = [])
356
 * @method array TicketTemplate(string $action, array $input = [], array $params = [])
357
 * @method array TicketTemplateHiddenField(string $action, array $input = [], array $params = [])
358
 * @method array TicketTemplateMandatoryField(string $action, array $input = [], array $params = [])
359
 * @method array TicketTemplatePredefinedField(string $action, array $input = [], array $params = [])
360
 * @method array TicketValidation(string $action, array $input = [], array $params = [])
361
 * @method array Transfer(string $action, array $input = [], array $params = [])
362
 * @method array User(string $action, array $input = [], array $params = [])
363
 * @method array UserCategory(string $action, array $input = [], array $params = [])
364
 * @method array UserEmail(string $action, array $input = [], array $params = [])
365
 * @method array UserTitle(string $action, array $input = [], array $params = [])
366
 * @method array VirtualMachineState(string $action, array $input = [], array $params = [])
367
 * @method array VirtualMachineSystem(string $action, array $input = [], array $params = [])
368
 * @method array VirtualMachineType(string $action, array $input = [], array $params = [])
369
 * @method array Vlan(string $action, array $input = [], array $params = [])
370
 * @method array WifiNetwork(string $action, array $input = [], array $params = [])
371
 *
372
 */
373
class ItemHandler {
374
   /**
375
    * @var Client
376
    */
377
   protected $client;
378

                    
379
   /**
380
    * ItemHandler constructor.
381
    * @param Client $client
382
    */
383
   public function __construct(Client $client) {100%
384
      $this->client = $client;
385
   }
386

                    
387
   /**
388
    * @return Client
389
    */
390
   public function getClient() {0%
391
      return $this->client;
392
   }
393

                    
394
   /**
395
    * Return the instance fields of itemtype identified by id.
396
    * @param string $itemType
397
    * @param integer $id
398
    * @param array $queryString
399
    * @return array
400
    */
401
   public function getItem($itemType, $id, array $queryString = []) {100%
402
      $options = [];
403
      if ($queryString) {
404
         $options['query'] = $queryString;
405
      }
406
      $response = $this->client->request('get', $itemType . '/' . $id, $options);
407
      return [
408
         'statusCode' => $response->getStatusCode(),
409
         'body' => $response->getBody()->getContents(),
410
      ];
411
   }
412

                    
413
   /**
414
    * Return a collection of rows of the itemtype.
415
    * @param string $itemType
416
    * @param array $queryString
417
    * @return array
418
    */
419
   public function getAllItems($itemType, array $queryString = []) {100%
420
      $options = [];
421
      if ($queryString) {
422
         $options['query'] = $queryString;
423
      }
424
      $response = $this->client->request('get', $itemType . '/', $options);
425
      $contentRange = $response->getHeader('Content-Range');
426
      $acceptRange = $response->getHeader('Accept-Range');
427
      return [
428
         'statusCode' => $response->getStatusCode(),
429
         'body' => $response->getBody()->getContents(),
430
         'contentRange' => ($contentRange) ? $contentRange[0] : null,
431
         'acceptRange' => ($acceptRange) ? $acceptRange[0] : null,
432
      ];
433
   }
434

                    
435
   /**
436
    * Return a collection of rows of the itemtype.
437
    * @param string $itemType
438
    * @param integer $id of main item type
439
    * @param string $subItem
440
    * @param array $queryString
441
    * @return array
442
    */
443
   public function getSubItems($itemType, $id, $subItem, array $queryString = []) {100%
444
      $options = [];
445
      if ($queryString) {
446
         $options['query'] = $queryString;
447
      }
448
      $response = $this->client->request('get', $itemType . '/' . $id . '/' . $subItem,
449
         $options);
450
      $contentRange = $response->getHeader('Content-Range');
451
      $acceptRange = $response->getHeader('Accept-Range');
452
      return [
453
         'statusCode' => $response->getStatusCode(),
454
         'body' => $response->getBody()->getContents(),
455
         'contentRange' => ($contentRange) ? $contentRange[0] : null,
456
         'acceptRange' => ($acceptRange) ? $acceptRange[0] : null,
457
      ];
458
   }
459

                    
460
   /**
461
    * Virtually call Get an item for each line in input. So, you can have a ticket, an user in the same query.
462
    * @param array $items
463
    * @param array $queryString
464
    * @return array
465
    */
466
   public function getMultipleItems(array $items, array $queryString = []) {100%
467
      foreach ($items as $item) {
468
         if (!key_exists('itemtype', $item) || !key_exists('items_id', $item)) {
469
            throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGS_MANDATORY', "'itemtype' and 'items_id'"));
470
         }
471
      }
472
      $options['query'] = array_merge($queryString, ['items' => $items]);
473
      $response = $this->client->request('get', 'getMultipleItems', $options);
474
      return [
475
         'statusCode' => $response->getStatusCode(),
476
         'body' => $response->getBody()->getContents(),
477
      ];
478
   }
479

                    
480
   /**
481
    * Virtually call Get an item for each line in input. So, you can have a ticket, an user in the same query.
482
    * @param string $itemType
483
    * @param array $queryString
484
    * @return array
485
    */
486
   public function listSearchOptions($itemType, array $queryString = []) {0%
487
      $options = [];
488
      if ($queryString) {
489
         $options['query'] = $queryString;
490
      }
491
      $response = $this->client->request('get', 'listSearchOptions/' . $itemType, $options);
492
      return [
493
         'statusCode' => $response->getStatusCode(),
494
         'body' => $response->getBody()->getContents(),
495
      ];
496
   }
497

                    
498
   /**
499
    * Virtually call Get an item for each line in input. So, you can have a ticket, an user in the same query.
500
    * @param string $itemType
501
    * @param array $queryString
502
    * @return array
503
    */
504
   public function searchItems($itemType, array $queryString = []) {100%
505
      $options = [];
506
      if ($queryString) {
507
         $options['query'] = $queryString;
508
      }
509
      $response = $this->client->request('get', 'search/' . $itemType, $options);
510
      return [
511
         'statusCode' => $response->getStatusCode(),
512
         'body' => $response->getBody()->getContents(),
513
      ];
514
   }
515

                    
516
   /**
517
    * Add an object (or multiple objects) into GLPI.
518
    *
519
    * Important: In case of 'multipart/data' content_type (aka file upload),
520
    * you should insert your parameters into a 'uploadManifest' parameter.
521
    * Theses serialized data should be a json string.
522
    *
523
    * @param string $itemType
524
    * @param array $queryString
525
    * @return array
526
    */
527
   public function addItems($itemType, array $queryString) {100%
528
      $options['body'] = json_encode(['input' => $queryString]);
529
      $response = $this->client->request('post', $itemType . '/', $options);
530
      $location = $response->getHeader('location');
531
      $link = $response->getHeader('Link');
532
      return [
533
         'statusCode' => $response->getStatusCode(),
534
         'body' => $response->getBody()->getContents(),
535
         'location' => ($location) ? $location[0] : null,
536
         'link' => ($link) ? $link[0] : null,
537
      ];
538
   }
539

                    
540
   /**
541
    * Update an object (or multiple objects) existing in GLPI.
542
    * @param string $itemType
543
    * @param integer $id
544
    * @param array $queryString
545
    * @return array
546
    */
547
   public function updateItems($itemType, $id, array $queryString) {100%
548
      if (!$id) {
549
         if (!$queryString) {
550
            throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGS_MANDATORY', "'id' to identify the item"));
551
         }
552
         foreach ($queryString as $item) {
553
            if (is_array($item) && !array_key_exists('id', $item)) {
554
               throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGS_MANDATORY', "'id' to identify the item"));
555
            }
556
         }
557
      }
558
      $options['body'] = json_encode(['input' => $queryString]);
559
      $response = $this->client->request('put', $itemType . '/' . $id, $options);
560
      return [
561
         'statusCode' => $response->getStatusCode(),
562
         'body' => $response->getBody()->getContents(),
563
      ];
564
   }
565

                    
566
   /**
567
    * Delete an object
568
    * @param string $itemType
569
    * @param integer $id
570
    * @param array $inputValues
571
    * @param array $queryString
572
    * @return array
573
    */
574
   public function deleteItems($itemType, $id, array $inputValues = [], array $queryString = []) {100%
575
      $options = [];
576
      if (!$id) {
577
         if (!$inputValues) {
578
            throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGS_MANDATORY', "'id' to identify the item"));
579
         }
580
         foreach ($inputValues as $item) {
581
            if (is_array($item) && !array_key_exists('id', $item)) {
582
               throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGS_MANDATORY', "'id' to identify the item"));
583
            }
584
         }
585
         $options['body'] = json_encode(['input' => $inputValues]);
586
      }
587
      if ($queryString) {
588
         $options['query'] = $queryString;
589
      }
590
      $response = $this->client->request('delete', $itemType . '/' . $id, $options);
591
      return [
592
         'statusCode' => $response->getStatusCode(),
593
         'body' => $response->getBody()->getContents(),
594
      ];
595
   }
596

                    
597
   /**
598
    * Magic method to execute CRUD actions with a single ItemTypes dynamically.
599
    * Send your ItemType as a method and the arguments to be executed.
600
    * Each ItemType's name came from the table's name in the DB schema.
601
    * Examples:
602
    *    Alerts => glpi_alerts,
603
    *    Calendars_Holidays => glpi_calendars_holidays,
604
    *    Consumableitems => glpi_consumableitems,
605
    *
606
    * How to use this?. You can check the file 'example/magicCallExample.php' for reference.
607
    *
608
    * @param string $name of the itemtype
609
    * @param mixed $arguments first is method, second is the input, and third is the query string
610
    * @return array|null
611
    * @throws InsufficientArgumentsException|BadEndpointException|InvalidArgumentException
612
    */
613
   public function __call($name, $arguments) {76%
614
      $name = ucfirst($name);
615

                    
616
      if (count($arguments) < 2) {
617
         throw new InsufficientArgumentsException(ErrorHandler::getMessage('ERROR_APILIB_ARGUMENTS'));
618
      }
619

                    
620
      $method = strtolower($arguments[0]);
621
      $input = isset($arguments[1]) ? $arguments[1] : [];
622
      $params = isset($arguments[2]) ? $arguments[2] : [];
623
      $result = null;
624
      switch ($method) {
625
         case 'create':
626
            $result = $this->addItems($name, $input);
627
            break;
628
         case 'read':
629
            $result = $this->getItem($name, (int)$input, $params);
630
            break;
631
         case 'update':
632
            $result = $this->updateItems($name, '', $input);
633
            break;
634
         case 'delete':
635
            $result = $this->deleteItems($name, '', $input, $params);
636
            break;
637
         default:
638
            throw new InvalidArgumentException(ErrorHandler::getMessage('ERROR_APILIB_ARGUMENTS'));
639
            break;
640
      }
641
      $body = json_decode($result['body']);
642
      if ($result['statusCode'] == 400 && $body[0] == 'ERROR_RESOURCE_NOT_FOUND_NOR_COMMONDBTM') {
643
         throw new BadEndpointException("EndPoint '{$name}' is not valid. " . ErrorHandler::getMessage($body[0]));
644
      }
645
      return $result;
646
   }
647

                    
648
}
Powered by atoum
Back to top