Completed
Push — master ( d0f38c...a519d5 )
by Vladimir
02:28
created

Pulse::duplicatePulse()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 18
rs 9.4286
cc 2
eloc 10
nc 2
nop 2
1
<?php
2
3
/**
4
 * This file contains the Pulse class
5
 *
6
 * @copyright 2015 Vladimir Jimenez
7
 * @license   https://github.com/allejo/PhpPulse/blob/master/LICENSE.md MIT
8
 */
9
10
namespace allejo\DaPulse;
11
12
use allejo\DaPulse\Exceptions\InvalidColumnException;
13
use allejo\DaPulse\Exceptions\InvalidObjectException;
14
use allejo\DaPulse\Exceptions\KeyNotFoundException;
15
use allejo\DaPulse\Objects\ApiObject;
16
use allejo\DaPulse\Objects\PulseColumnColorValue;
17
use allejo\DaPulse\Objects\PulseColumnDateValue;
18
use allejo\DaPulse\Objects\PulseColumnPersonValue;
19
use allejo\DaPulse\Objects\PulseColumnTextValue;
20
use allejo\DaPulse\Objects\PulseColumnValue;
21
use allejo\DaPulse\Utilities\ArrayUtilities;
22
23
/**
24
 * A class representing a single pulse in a board
25
 *
26
 * @api
27
 * @package allejo\DaPulse
28
 * @since 0.1.0
29
 */
30
class Pulse extends ApiObject
0 ignored issues
show
Coding Style introduced by
The property $updates_count is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $board_id is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $created_at is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $updated_at is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $group_id is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $column_structure is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $raw_column_values is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style introduced by
The property $column_values is not named in camelCase.

This check marks property names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
31
{
32
    /**
33
     * @ignore
34
     */
35
    const API_PREFIX = "pulses";
36
37
    // ================================================================================================================
38
    //   Instance Variables
39
    // ================================================================================================================
40
41
    /**
42
     * The resource's URL.
43
     *
44
     * @var string
45
     */
46
    protected $url;
47
48
    /**
49
     * The pulse's unique identifier.
50
     *
51
     * @var int
52
     */
53
    protected $id;
54
55
    /**
56
     * The pulse's name.
57
     *
58
     * @var string
59
     */
60
    protected $name;
61
62
    /**
63
     * The board's subscribers.
64
     *
65
     * @var PulseUser[]
66
     */
67
    protected $subscribers;
68
69
    /**
70
     * The amount of updates a pulse has.
71
     *
72
     * @var int
73
     */
74
    protected $updates_count;
75
76
    /**
77
     * The ID of the parent board.
78
     *
79
     * @var int
80
     */
81
    protected $board_id;
82
83
    /**
84
     * Creation time.
85
     *
86
     * @var \DateTime
87
     */
88
    protected $created_at;
89
90
    /**
91
     * Last update time.
92
     *
93
     * @var \DateTime
94
     */
95
    protected $updated_at;
96
97
    /**
98
     * The ID of the group this pulse belongs to
99
     *
100
     * @var string
101
     */
102
    protected $group_id;
103
104
    /**
105
     * @var PulseColumn[]
106
     */
107
    protected $column_structure;
108
109
    /**
110
     * An array containing all of the values a pulse has for each column
111
     *
112
     * @var mixed
113
     */
114
    protected $raw_column_values;
115
116
    /**
117
     * An array containing objects extended from PulseColumnValue storing all of the values for each column
118
     *
119
     * @var array
120
     */
121
    protected $column_values;
122
123
    /**
124
     * The common URL path for retrieving objects relating a pulse such as subscribers, notes, or updates
125
     *
126
     * @var string
127
     */
128
    private $urlSyntax = "%s/%s/%s.json";
129
130
    // ================================================================================================================
131
    //   Getter functions
132
    // ================================================================================================================
133
134
    /**
135
     * The resource's URL.
136
     *
137
     * @return string
138
     */
139
    public function getUrl()
140
    {
141
        return $this->url;
142
    }
143
144
    /**
145
     * The pulse's unique identifier.
146
     *
147
     * @return int
148
     */
149
    public function getId()
150
    {
151
        return $this->id;
152
    }
153
154
    /**
155
     * The pulse's name.
156
     *
157
     * @return string
158
     */
159
    public function getName()
160
    {
161
        return $this->name;
162
    }
163
164
    /**
165
     * The amount of updates a pulse has.
166
     *
167
     * @return int
168
     */
169
    public function getUpdatesCount()
170
    {
171
        return $this->updates_count;
172
    }
173
174
    /**
175
     * The ID of the parent board.
176
     *
177
     * @return int
178
     */
179
    public function getBoardId()
180
    {
181
        return $this->board_id;
182
    }
183
184
    /**
185
     * Creation time.
186
     *
187
     * @return \DateTime
188
     */
189
    public function getCreatedAt()
190
    {
191
        return $this->created_at;
192
    }
193
194
    /**
195
     * Last update time.
196
     *
197
     * @return \DateTime
198
     */
199
    public function getUpdatedAt()
200
    {
201
        return $this->updated_at;
202
    }
203
204
    // ================================================================================================================
205
    //   Pulse functions
206
    // ================================================================================================================
207
208
    /**
209
     * Delete the current Pulse
210
     *
211
     * @api
212
     * @throws \allejo\DaPulse\Exceptions\InvalidObjectException
213
     */
214 View Code Duplication
    public function deletePulse ()
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...
215
    {
216
        $this->checkInvalid();
217
218
        $deleteURL = sprintf("%s/%d.json", self::apiEndpoint(), $this->getId());
219
220
        self::sendDelete($deleteURL);
221
222
        $this->deletedObject = true;
223
    }
224
225
    public function duplicatePulse ($group_id = null, $owner_id = null)
0 ignored issues
show
Coding Style Naming introduced by
The parameter $group_id is not named in camelCase.

This check marks parameter names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style Naming introduced by
The parameter $owner_id is not named in camelCase.

This check marks parameter names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
226
    {
227
        $url = sprintf("%s/%s/pulses/%s/duplicate.json", parent::apiEndpoint("boards"), $this->getBoardId(), $this->getId());
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of duplicatePulse()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
228
        $postParams = array();
229
230
        if ($owner_id instanceof PulseUser)
231
        {
232
            $owner_id = $owner_id->getId();
233
        }
234
235
        self::setIfNotNullOrEmpty($postParams, "group_id", $group_id);
236
        self::setIfNotNullOrEmpty($postParams, "owner_id", $owner_id);
237
238
        $result = self::sendPost($url, $postParams);
239
        $this->pulseInjection($result);
240
241
        return (new Pulse($result['pulse']));
242
    }
243
244 View Code Duplication
    private function pulseInjection (&$result)
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...
245
    {
246
        $parentBoard = new PulseBoard($this->getBoardId());
247
248
        // Inject some information so a Pulse object can survive on its own
249
        $result["pulse"]["group_id"] = $result["board_meta"]["group_id"];
250
        $result["pulse"]["column_structure"] = $parentBoard->getColumns();
251
        $result["pulse"]["raw_column_values"] = $result["column_values"];
252
    }
253
254
    // ================================================================================================================
255
    //   Column data functions
256
    // ================================================================================================================
257
258
    /**
259
     * Access a pulse's specific column to either access their value or to modify the value.
260
     *
261
     * See the related functions to see the appropriate replacements.
262
     *
263
     * @todo This function only exists for legacy applications. Remove in 0.1.1
0 ignored issues
show
Coding Style introduced by
Comment refers to a TODO task

This check looks TODO comments that have been left in the code.

``TODO``s show that something is left unfinished and should be attended to.

Loading history...
264
     *
265
     * @api
266
     * @deprecated 0.0.1 This function will be removed by 0.1.1. New stricter functions are available
267
     * @param string $columnId The ID of the column to access. It's typically a slugified version of the column title
268
     * @see Pulse::getColorColumn()  getColorColumn()
269
     * @see Pulse::getDateColumn()   getDateColumn()
270
     * @see Pulse::getPersonColumn() getPersonColumn()
271
     * @see Pulse::getTextColumn()   getTextColumn()
272
     * @since 0.1.0
273
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
274
     *                                by this library or the DaPulse API.
275
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
276
     * @return PulseColumnValue The returned object will be a child of this abstract class.
277
     */
278
    public function getColumnValue ($columnId)
279
    {
280
        if (!isset($this->column_values) || !array_key_exists($columnId, $this->column_values))
281
        {
282
            $key = ArrayUtilities::array_search_column($this->raw_column_values, 'cid', $columnId);
283
284
            $data = $this->raw_column_values[$key];
285
            $type = $this->column_structure[$key]->getType();
286
287
            $data['column_id'] = $data['cid'];
288
            $data['board_id'] = $this->getBoardId();
289
            $data['pulse_id'] = $this->getId();
290
291
            $this->column_values[$columnId] = PulseColumnValue::createColumnType($type, $data);
292
        }
293
294
        return $this->column_values[$columnId];
295
    }
296
297
    /**
298
     * Access a color type column value belonging to this pulse in order to read it or modify.
299
     *
300
     * This function should only be used to access color type values; an exception will be thrown otherwise.
301
     *
302
     * @api
303
     * @param string $columnId The ID of the column to access. This is typically a slugified version of the column name
304
     * @since 0.1.0
305
     * @throws InvalidColumnException The specified column is not a "color" type column
306
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
307
     *                                by this library or the DaPulse API.
308
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
309
     * @return PulseColumnColorValue A column object with access to its contents
310
     */
311
    public function getColorColumn ($columnId)
312
    {
313
        return $this->getColumn($columnId, "color");
314
    }
315
316
    /**
317
     * Access a date type column value belonging to this pulse in order to read it or modify.
318
     *
319
     * This function should only be used to access data type values; an exception will be thrown otherwise.
320
     *
321
     * @api
322
     * @param string $columnId The ID of the column to access. This is typically a slugified version of the column name
323
     * @since 0.1.0
324
     * @throws InvalidColumnException The specified column is not a "date" type column
325
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
326
     *                                by this library or the DaPulse API.
327
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
328
     * @return PulseColumnDateValue A column object with access to its contents
329
     */
330
    public function getDateColumn ($columnId)
331
    {
332
        return $this->getColumn($columnId, "date");
333
    }
334
335
    /**
336
     * Access a person type column value belonging to this pulse in order to read it or modify.
337
     *
338
     * This function should only be used to access person type values; an exception will be thrown otherwise.
339
     *
340
     * @api
341
     * @param string $columnId The ID of the column to access. This is typically a slugified version of the column name
342
     * @since 0.1.0
343
     * @throws InvalidColumnException The specified column is not a "person" type column
344
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
345
     *                                by this library or the DaPulse API.
346
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
347
     * @return PulseColumnPersonValue A column object with access to its contents
348
     */
349
    public function getPersonColumn ($columnId)
350
    {
351
        return $this->getColumn($columnId, "person");
352
    }
353
354
    /**
355
     * Access a text type column value belonging to this pulse in order to read it or modify.
356
     *
357
     * This function should only be used to access text type values; an exception will be thrown otherwise.
358
     *
359
     * @api
360
     * @param string $columnId The ID of the column to access. This is typically a slugified version of the column name
361
     * @since 0.1.0
362
     * @throws InvalidColumnException The specified column is not a "text" type column
363
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
364
     *                                by this library or the DaPulse API.
365
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
366
     * @return PulseColumnTextValue A column object with access to its contents
367
     */
368
    public function getTextColumn ($columnId)
369
    {
370
        return $this->getColumn($columnId, "text");
371
    }
372
373
    /**
374
     * Build a pulse's column object if it doesn't exist or return the existing column.
375
     *
376
     * @param string $columnId   The ID of the column to access. This is typically a slugified version of the column
377
     *                           title
378
     * @param string $columnType The type of column being accessed: 'text', 'color', 'person', or 'date'
379
     *
380
     * @since 0.1.0
381
     *
382
     * @throws InvalidColumnException The specified column is not the same type as specified in `$columnType`
383
     * @throws InvalidObjectException The specified column exists but modification of its value is unsupported either
384
     *                                by this library or the DaPulse API.
385
     * @throws KeyNotFoundException   The specified column ID does not exist for this Pulse
386
     *
387
     * @return PulseColumnValue The returned object will be a child of this abstract class.
388
     */
389
    private function getColumn ($columnId, $columnType)
390
    {
391
        if (!isset($this->column_values) || !array_key_exists($columnId, $this->column_values))
392
        {
393
            $key = ArrayUtilities::array_search_column($this->raw_column_values, 'cid', $columnId);
394
395
            $data = $this->raw_column_values[$key];
396
            $type = $this->column_structure[$key]->getType();
397
398
            if ($type !== $columnType)
399
            {
400
                throw new InvalidColumnException("The '$columnId' column was expected to be '$columnType' but was '$type' instead.");
401
            }
402
403
            $data['column_id'] = $data['cid'];
404
            $data['board_id'] = $this->getBoardId();
405
            $data['pulse_id'] = $this->getId();
406
407
            $this->column_values[$columnId] = PulseColumnValue::createColumnType($type, $data);
408
        }
409
410
        return $this->column_values[$columnId];
411
    }
412
413
    // ================================================================================================================
414
    //   Subscribers functions
415
    // ================================================================================================================
416
417
    /**
418
     * Access a pulse's subscribers
419
     *
420
     * To modify the amount of data returned with pagination, use the following values in the array to configure your
421
     * pagination or offsets.
422
     *
423
     * ```php
424
     * $params = array(
425
     *     "page"     => 1,  // (int) Page offset to fetch
426
     *     "per_page" => 10, // (int) Number of results per page
427
     *     "offset"   => 5,  // (int) Instead of starting at result 0, start counting from result 5
428
     * );
429
     * ```
430
     *
431
     * @api
432
     * @param array $params GET parameters passed to with the query to modify the data returned.
433
     * @since 0.1.0
434
     * @return PulseUser[]
435
     */
436
    public function getSubscribers ($params = array())
437
    {
438
        $url = sprintf($this->urlSyntax, parent::apiEndpoint(), $this->id, "subscribers");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of getSubscribers()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
439
440
        return parent::fetchJsonArrayToObjectArray($url, "PulseUser", $params);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (fetchJsonArrayToObjectArray() instead of getSubscribers()). Are you sure this is correct? If so, you might want to change this to $this->fetchJsonArrayToObjectArray().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
441
    }
442
443
    // ================================================================================================================
444
    //   Notes functions
445
    // ================================================================================================================
446
447
    /**
448
     * Create a new note in this project
449
     *
450
     * @api
451
     * @param  string   $title         The title of the note
452
     * @param  string   $content       The body of the note
453
     * @param  bool     $owners_only   Set to true if only pulse owners can edit this note.
454
     * @param  int|null $user_id       The id of the user to be marked as the note’s last updater
455
     * @param  bool     $create_update Indicates whether to create an update on the pulse notifying subscribers on the
456
     *                                 changes (required user_id to be set).
457
     * @since  0.1.0
458
     * @return PulseNote
459
     */
460
    public function addNote ($title, $content, $owners_only = false, $user_id = NULL, $create_update = false)
0 ignored issues
show
Coding Style Naming introduced by
The parameter $owners_only is not named in camelCase.

This check marks parameter names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style Naming introduced by
The parameter $user_id is not named in camelCase.

This check marks parameter names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
Coding Style Naming introduced by
The parameter $create_update is not named in camelCase.

This check marks parameter names that have not been written in camelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes databaseConnectionString.

Loading history...
461
    {
462
        $url        = sprintf($this->urlSyntax, parent::apiEndpoint(), $this->id, "notes");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of addNote()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
463
        $postParams = array(
464
            "id"            => $this->id,
465
            "title"         => $title,
466
            "content"       => $content,
467
            "owners_only"   => $owners_only,
468
            "create_update" => $create_update
469
        );
470
471
        self::setIfNotNullOrEmpty($postParams, "user_id", $user_id);
472
473
        if ($create_update && is_null($user_id))
474
        {
475
            throw new \InvalidArgumentException("The user_id value must be set if an update is to be created");
476
        }
477
478
        $noteResult = self::sendPost($url, $postParams);
479
480
        return (new PulseNote($noteResult));
481
    }
482
483
    /**
484
     * Return all of the notes belonging to this project
485
     *
486
     * @api
487
     * @since  0.1.0
488
     * @return PulseNote[]
489
     */
490
    public function getNotes ()
491
    {
492
        $url = sprintf($this->urlSyntax, parent::apiEndpoint(), $this->id, "notes");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of getNotes()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
493
494
        return parent::fetchJsonArrayToObjectArray($url, "PulseNote");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (fetchJsonArrayToObjectArray() instead of getNotes()). Are you sure this is correct? If so, you might want to change this to $this->fetchJsonArrayToObjectArray().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
495
    }
496
497
    // ================================================================================================================
498
    //   Updates functions
499
    // ================================================================================================================
500
501
    /**
502
     * Get all of the updates that belong this Pulse
503
     *
504
     * @api
505
     * @since 0.1.0
506
     * @return PulseUpdate[]
507
     */
508
    public function getUpdates ()
509
    {
510
        $url = sprintf($this->urlSyntax, parent::apiEndpoint(), $this->id, "updates");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of getUpdates()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
511
512
        return parent::fetchJsonArrayToObjectArray($url, "PulseUpdate");
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (fetchJsonArrayToObjectArray() instead of getUpdates()). Are you sure this is correct? If so, you might want to change this to $this->fetchJsonArrayToObjectArray().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
513
    }
514
515
    // ================================================================================================================
516
    //   Static functions
517
    // ================================================================================================================
518
519
    /**
520
     * Get all of the pulses that belong to the organization across all boards.
521
     *
522
     * To modify the amount of data returned with pagination, use the following values in the array to configure your
523
     * pagination or offsets.
524
     *
525
     * ```php
526
     * $params = array(
527
     *     "page"     => 1,          // (int) Page offset to fetch
528
     *     "per_page" => 10,         // (int) Number of results per page
529
     *     "offset"   => 5,          // (int) Instead of starting at result 0, start counting from result 5
530
     *     "order_by_latest" => true // (bool) Order the pulses with the most recent first
531
     * );
532
     * ```
533
     *
534
     * @api
535
     * @param array $params GET parameters passed to with the query to modify the data returned.
536
     * @since 0.1.0
537
     * @return Pulse[]
538
     */
539
    public static function getPulses ($params = array())
540
    {
541
        $url = sprintf("%s.json", parent::apiEndpoint());
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (apiEndpoint() instead of getPulses()). Are you sure this is correct? If so, you might want to change this to $this->apiEndpoint().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
542
543
        return parent::fetchJsonArrayToObjectArray($url, "Pulse", $params);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (fetchJsonArrayToObjectArray() instead of getPulses()). Are you sure this is correct? If so, you might want to change this to $this->fetchJsonArrayToObjectArray().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
544
    }
545
}