Completed
Push — d64 ( cb45b2...4f8de5 )
by Welling
02:05
created

ClientRemote::createUser()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Directus – <http://getdirectus.com>
5
 *
6
 * @link      The canonical repository – <https://github.com/directus/directus>
7
 * @copyright Copyright 2006-2016 RANGER Studio, LLC – <http://rangerstudio.com>
8
 * @license   GNU General Public License (v3) – <http://www.gnu.org/copyleft/gpl.html>
9
 */
10
11
namespace Directus\SDK;
12
use Directus\Util\ArrayUtils;
13
use Directus\Util\StringUtils;
14
15
/**
16
 * Client Remote
17
 *
18
 * @author Welling Guzmán <[email protected]>
19
 */
20
class ClientRemote extends BaseClientRemote
21
{
22
    /**
23
     * @inheritdoc
24
     */
25 2
    public function getTables(array $params = [])
26
    {
27 2
        return $this->performRequest('GET', static::TABLE_LIST_ENDPOINT);
1 ignored issue
show
Bug Compatibility introduced by
The expression $this->performRequest('G...::TABLE_LIST_ENDPOINT); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 27 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getTables of type Directus\SDK\Response\EntryCollection.
Loading history...
28
    }
29
30
    /**
31
     * @inheritdoc
32
     */
33 4
    public function getTable($tableName)
34
    {
35 4
        $path = $this->buildPath(static::TABLE_INFORMATION_ENDPOINT, $tableName);
36
37 4
        return $this->performRequest('GET', $path);
1 ignored issue
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 37 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getTable of type Directus\SDK\Response\Entry.
Loading history...
38
    }
39
40
    /**
41
     * @inheritdoc
42
     */
43 2
    public function getColumns($tableName, array $params = [])
44
    {
45 2
        $path = $this->buildPath(static::COLUMN_LIST_ENDPOINT, $tableName);
46
47 2
        return $this->performRequest('GET', $path);
1 ignored issue
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 47 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getColumns of type Directus\SDK\Response\EntryCollection.
Loading history...
48
    }
49
50
    /**
51
     * @inheritdoc
52
     */
53 2
    public function getColumn($tableName, $columnName)
54
    {
55 2
        $path = $this->buildPath(static::COLUMN_INFORMATION_ENDPOINT, [$tableName, $columnName]);
56
57 2
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 57 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getColumn of type Directus\SDK\Response\Entry.
Loading history...
58
    }
59
60
    /**
61
     * @inheritdoc
62
     */
63 2
    public function getItems($tableName, array $options = [])
64
    {
65 2
        $path = $this->buildPath(static::TABLE_ENTRIES_ENDPOINT, $tableName);
0 ignored issues
show
Documentation introduced by
$tableName is of type string, but the function expects a array.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
66
67 2
        return $this->performRequest('GET', $path, ['query' => $options]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('G...('query' => $options)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 67 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getItems of type Directus\SDK\Response\EntryCollection.
Loading history...
68
    }
69
70
    /**
71
     * @inheritdoc
72
     */
73 2
    public function getItem($tableName, $id, array $options = [])
74
    {
75 2
        $path = $this->buildPath(static::TABLE_ENTRY_ENDPOINT, [$tableName, $id]);
76
77 2
        return $this->performRequest('GET', $path, ['query' => $options]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('G...('query' => $options)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 77 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getItem of type Directus\SDK\Response\Entry.
Loading history...
78
    }
79
80
    /**
81
     * @inheritdoc
82
     */
83 2
    public function getUsers(array $params = [])
84
    {
85 2
        return $this->getItems('directus_users', $params);
86
    }
87
88
    /**
89
     * @inheritdoc
90
     */
91 2
    public function getUser($id, array $params = [])
92
    {
93 2
        return $this->getItem($id, 'directus_users', $params);
94
    }
95
96
    /**
97
     * @inheritdoc
98
     */
99 2
    public function getGroups()
100
    {
101 2
        return $this->performRequest('GET', static::GROUP_LIST_ENDPOINT);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('G...::GROUP_LIST_ENDPOINT); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 101 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getGroups of type Directus\SDK\Response\EntryCollection.
Loading history...
102
    }
103
104
    /**
105
     * @inheritdoc
106
     */
107 2
    public function getGroup($groupID)
108
    {
109 2
        $path = $this->buildPath(static::GROUP_INFORMATION_ENDPOINT, $groupID);
110
111 2
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 111 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getGroup of type Directus\SDK\Response\Entry.
Loading history...
112
    }
113
114
    /**
115
     * @inheritdoc
116
     */
117 2
    public function getGroupPrivileges($groupID)
118
    {
119 2
        $path = $this->buildPath(static::GROUP_PRIVILEGES_ENDPOINT, $groupID);
120
121 2
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 121 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getGroupPrivileges of type Directus\SDK\Response\EntryCollection.
Loading history...
122
    }
123
124
    /**
125
     * @inheritdoc
126
     */
127 2
    public function getFiles()
128
    {
129 2
        return $this->performRequest('GET', static::FILE_LIST_ENDPOINT);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('G...c::FILE_LIST_ENDPOINT); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 129 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getFiles of type Directus\SDK\Response\EntryCollection.
Loading history...
130
    }
131
132
    /**
133
     * @inheritdoc
134
     */
135 2
    public function getFile($fileID)
136
    {
137 2
        $path = $this->buildPath(static::FILE_INFORMATION_ENDPOINT, $fileID);
138
139 2
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 139 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getFile of type Directus\SDK\Response\Entry.
Loading history...
140
    }
141
142
    /**
143
     * @inheritdoc
144
     */
145 2
    public function getSettings()
146
    {
147 2
        return $this->performRequest('GET', static::SETTING_LIST_ENDPOINT);
148
    }
149
150
    /**
151
     * @inheritdoc
152
     */
153 2
    public function getSettingsByCollection($collectionName)
154
    {
155 2
        $path = $this->buildPath(static::SETTING_COLLECTION_ENDPOINT, $collectionName);
156
157 2
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 157 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInt...getSettingsByCollection of type Directus\SDK\Response\EntryCollection.
Loading history...
158
    }
159
160
    /**
161
     * @inheritdoc
162
     */
163
    public function getMessages($userId)
164
    {
165
        $path = $this->buildPath(static::MESSAGES_USER_ENDPOINT, $userId);
166
167
        return $this->performRequest('GET', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('GET', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\Entry to the return on line 167 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getMessages of type Directus\SDK\Response\EntryCollection.
Loading history...
168
    }
169
170
    /**
171
     * @inheritdoc
172
     */
173 View Code Duplication
    public function createItem($tableName, array $data)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
174
    {
175
        $path = $this->buildPath(static::TABLE_ENTRY_CREATE_ENDPOINT, $tableName);
176
        $data = $this->processData($tableName, $data);
177
178
        return $this->performRequest('POST', $path, ['body' => $data]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 178 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createItem of type Directus\SDK\Response\Entry.
Loading history...
179
    }
180
181
    /**
182
     * @inheritdoc
183
     */
184 View Code Duplication
    public function updateItem($tableName, $id, array $data)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
185
    {
186
        $path = $this->buildPath(static::TABLE_ENTRY_UPDATE_ENDPOINT, [$tableName, $id]);
187
        $data = $this->processData($tableName, $data);
188
189
        return $this->performRequest('PUT', $path, ['body' => $data]);
190
    }
191
192
    /**
193
     * @inheritdoc
194
     */
195
    public function deleteItem($tableName, $id)
196
    {
197
        $path = $this->buildPath(static::TABLE_ENTRY_DELETE_ENDPOINT, [$tableName, $id]);
198
199
        return $this->performRequest('DELETE', $path);
0 ignored issues
show
Bug Best Practice introduced by
The return type of return $this->performRequest('DELETE', $path); (Directus\SDK\Response\En...ctus\SDK\Response\Entry) is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteItem of type integer.

If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design.

Let’s take a look at an example:

class Author {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

abstract class Post {
    public function getAuthor() {
        return 'Johannes';
    }
}

class BlogPost extends Post {
    public function getAuthor() {
        return new Author('Johannes');
    }
}

class ForumPost extends Post { /* ... */ }

function my_function(Post $post) {
    echo strtoupper($post->getAuthor());
}

Our function my_function expects a Post object, and outputs the author of the post. The base class Post returns a simple string and outputting a simple string will work just fine. However, the child class BlogPost which is a sub-type of Post instead decided to return an object, and is therefore violating the SOLID principles. If a BlogPost were passed to my_function, PHP would not complain, but ultimately fail when executing the strtoupper call in its body.

Loading history...
200
    }
201
202
    /**
203
     * @inheritdoc
204
     */
205
    public function createUser(array $data)
206
    {
207
        return $this->createItem('directus_users', $data);
208
    }
209
210
    /**
211
     * @inheritdoc
212
     */
213
    public function updateUser($id, array $data)
214
    {
215
        return $this->updateItem('directus_users', $id, $data);
216
    }
217
218
    /**
219
     * @inheritdoc
220
     */
221
    public function deleteUser($ids)
222
    {
223
        return $this->deleteItem('directus_users', $ids);
0 ignored issues
show
Bug Best Practice introduced by
The return type of return $this->deleteItem('directus_users', $ids); (Directus\SDK\Response\En...ctus\SDK\Response\Entry) is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteUser of type integer.

If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design.

Let’s take a look at an example:

class Author {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

abstract class Post {
    public function getAuthor() {
        return 'Johannes';
    }
}

class BlogPost extends Post {
    public function getAuthor() {
        return new Author('Johannes');
    }
}

class ForumPost extends Post { /* ... */ }

function my_function(Post $post) {
    echo strtoupper($post->getAuthor());
}

Our function my_function expects a Post object, and outputs the author of the post. The base class Post returns a simple string and outputting a simple string will work just fine. However, the child class BlogPost which is a sub-type of Post instead decided to return an object, and is therefore violating the SOLID principles. If a BlogPost were passed to my_function, PHP would not complain, but ultimately fail when executing the strtoupper call in its body.

Loading history...
224
    }
225
226
    /**
227
     * @inheritdoc
228
     */
229
    public function createFile(File $file)
230
    {
231
        $data = $this->processFile($file);
232
233
        return $this->performRequest('POST', static::FILE_CREATE_ENDPOINT, ['body' => $data]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 233 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createFile of type Directus\SDK\Response\Entry.
Loading history...
234
    }
235
236
    /**
237
     * @inheritdoc
238
     */
239
    public function updateFile($id, $data)
240
    {
241
        if ($data instanceof File) {
242
            $data = $data->toArray();
243
        }
244
245
        $data['id'] = $id;
246
        $path = $this->buildPath(static::FILE_UPDATE_ENDPOINT, $id);
247
        $data = $this->processData('directus_files', $data);
248
249
        return $this->performRequest('POST', $path, ['body' => $data]);
250
    }
251
252
    /**
253
     * @inheritdoc
254
     */
255
    public function deleteFile($id)
256
    {
257
        return $this->deleteItem('directus_files', $id);
0 ignored issues
show
Bug Best Practice introduced by
The return type of return $this->deleteItem('directus_files', $id); (Directus\SDK\Response\En...ctus\SDK\Response\Entry) is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteFile of type integer.

If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design.

Let’s take a look at an example:

class Author {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

abstract class Post {
    public function getAuthor() {
        return 'Johannes';
    }
}

class BlogPost extends Post {
    public function getAuthor() {
        return new Author('Johannes');
    }
}

class ForumPost extends Post { /* ... */ }

function my_function(Post $post) {
    echo strtoupper($post->getAuthor());
}

Our function my_function expects a Post object, and outputs the author of the post. The base class Post returns a simple string and outputting a simple string will work just fine. However, the child class BlogPost which is a sub-type of Post instead decided to return an object, and is therefore violating the SOLID principles. If a BlogPost were passed to my_function, PHP would not complain, but ultimately fail when executing the strtoupper call in its body.

Loading history...
258
    }
259
260
    public function createPreferences($data)
261
    {
262
        $this->requiredAttributes(['title', 'table_name'], $data);
263
264
        $tableName = ArrayUtils::get($data, 'table_name');
265
        $path = $this->buildPath(static::TABLE_PREFERENCES_ENDPOINT, $tableName);
266
        $data = $this->processData($tableName, $data);
267
268
        return $this->performRequest('POST', $path, ['body' => $data]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 268 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createPreferences of type Directus\SDK\Response\Entry.
Loading history...
269
    }
270
271
    /**
272
     * @inheritdoc
273
     */
274
    public function createBookmark($data)
275
    {
276
        $preferences = $this->createPreferences(ArrayUtils::pick($data, [
277
            'title', 'table_name', 'sort', 'status', 'search_string', 'sort_order', 'columns_visible'
278
        ]));
279
280
        $title = $preferences->title;
0 ignored issues
show
Documentation introduced by
The property title does not exist on object<Directus\SDK\Response\Entry>. Since you implemented __set, maybe consider adding a @property annotation.

Since your code implements the magic setter _set, this function will be called for any write access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

Since the property has write access only, you can use the @property-write annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
281
        $tableName = $preferences->table_name;
0 ignored issues
show
Documentation introduced by
The property table_name does not exist on object<Directus\SDK\Response\Entry>. Since you implemented __set, maybe consider adding a @property annotation.

Since your code implements the magic setter _set, this function will be called for any write access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

Since the property has write access only, you can use the @property-write annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
282
        $bookmarkData = [
283
            'section' => 'search',
284
            'title' => $title,
285
            'url' => 'tables/' . $tableName . '/pref/' . $title
286
        ];
287
288
        $path = $this->buildPath(static::TABLE_BOOKMARKS_CREATE_ENDPOINT);
289
        $bookmarkData = $this->processData($tableName, $bookmarkData);
290
291
        return $this->performRequest('POST', $path, ['body' => $bookmarkData]);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...dy' => $bookmarkData)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 291 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createBookmark of type Directus\SDK\Response\Entry.
Loading history...
292
    }
293
294
    /**
295
     * @inheritdoc
296
     */
297
    public function createColumn($data)
298
    {
299
        $data = $this->parseColumnData($data);
300
301
        return $this->performRequest('POST', $this->buildPath(static::COLUMN_CREATE_ENDPOINT, $data['table_name']), [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 301 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createColumn of type Directus\SDK\Response\Entry.
Loading history...
302
            'body' => $data
303
        ]);
304
    }
305
306
    /**
307
     * @inheritdoc
308
     */
309
    public function createGroup(array $data)
310
    {
311
        return $this->performRequest('POST', static::GROUP_CREATE_ENDPOINT, [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 311 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createGroup of type Directus\SDK\Response\Entry.
Loading history...
312
            'body' => $data
313
        ]);
314
    }
315
316
    /**
317
     * @inheritdoc
318
     */
319
    public function createMessage(array $data)
320
    {
321
        $this->requiredAttributes(['from', 'message', 'subject'], $data);
322
        $this->requiredOneAttribute(['to', 'toGroup'], $data);
323
324
        $data['recipients'] = $this->getMessagesTo($data);
325
        ArrayUtils::remove($data, ['to', 'toGroup']);
326
327
        return $this->performRequest('POST', static::MESSAGES_CREATE_ENDPOINT, [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 327 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createMessage of type Directus\SDK\Response\Entry.
Loading history...
328
            'body' => $data
329
        ]);
330
    }
331
332
    /**
333
     * @inheritdoc
334
     */
335
    public function sendMessage(array $data)
336
    {
337
        return $this->createMessage($data);
338
    }
339
340
    /**
341
     * @inheritdoc
342
     */
343
    public function createPrivileges(array $data)
344
    {
345
        $this->requiredAttributes(['group_id', 'table_name'], $data);
346
347
        return $this->performRequest('POST', static::GROUP_PRIVILEGES_CREATE_ENDPOINT, [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 347 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createPrivileges of type Directus\SDK\Response\Entry.
Loading history...
348
            'body' => $data
349
        ]);
350
    }
351
352
    public function createTable($name, array $params = [])
353
    {
354
        $data = [
355
            'addTable' => true,
356
            'table_name' => $name
357
        ];
358
359
        return $this->performRequest('POST', static::TABLE_CREATE_ENDPOINT, [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 359 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::createTable of type Directus\SDK\Response\Entry.
Loading history...
360
            'body' => $data
361
        ]);
362
    }
363
364
    /**
365
     * @inheritdoc
366
     */
367
    public function createColumnUIOptions(array $data)
368
    {
369
        $this->requiredAttributes(['table', 'column', 'ui', 'options'], $data);
370
371
        $path = $this->buildPath(static::COLUMN_OPTIONS_CREATE_ENDPOINT, [
372
            $data['table'],
373
            $data['column'],
374
            $data['ui']
375
        ]);
376
377
        $data = ArrayUtils::get($data, 'options');
378
379
        return $this->performRequest('POST', $path, [
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...rray('body' => $data)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 379 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInt...::createColumnUIOptions of type Directus\SDK\Response\Entry.
Loading history...
380
            'body' => $data
381
        ]);
382
    }
383
384
    /**
385
     * @inheritdoc
386
     */
387
    public function getPreferences($table, $user = null)
388
    {
389
        return $this->performRequest('POST', $this->buildPath(static::TABLE_PREFERENCES_ENDPOINT, $table));
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('P...CES_ENDPOINT, $table)); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 389 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::getPreferences of type Directus\SDK\Response\Entry.
Loading history...
390
    }
391
392
    /**
393
     * @inheritdoc
394
     */
395
    public function deleteBookmark($id)
396
    {
397
        return $this->deleteItem('directus_bookmarks', $id);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->deleteItem('directus_bookmarks', $id); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 397 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteBookmark of type Directus\SDK\Response\Entry.
Loading history...
398
    }
399
400
    /**
401
     * @inheritdoc
402
     */
403
    public function deleteColumn($name, $table)
404
    {
405
        $path = $this->buildPath(static::COLUMN_DELETE_ENDPOINT, [$name, $table]);
406
407
        return $this->performRequest('DELETE', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('DELETE', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 407 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteColumn of type Directus\SDK\Response\Entry.
Loading history...
408
    }
409
410
    /**
411
     * @inheritdoc
412
     */
413
    public function deleteGroup($id)
414
    {
415
        return $this->deleteItem('directus_groups', $id);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->deleteItem('directus_groups', $id); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 415 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteGroup of type Directus\SDK\Response\Entry.
Loading history...
416
    }
417
418
    /**
419
     * @inheritdoc
420
     */
421
    public function deleteTable($name)
422
    {
423
        $path = $this->buildPath(static::TABLE_DELETE_ENDPOINT, $name);
424
425
        return $this->performRequest('DELETE', $path);
0 ignored issues
show
Bug Compatibility introduced by
The expression $this->performRequest('DELETE', $path); of type Directus\SDK\Response\En...ctus\SDK\Response\Entry adds the type Directus\SDK\Response\EntryCollection to the return on line 425 which is incompatible with the return type declared by the interface Directus\SDK\RequestsInterface::deleteTable of type Directus\SDK\Response\Entry.
Loading history...
426
    }
427
}
428