GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( a518ec...203b50 )
by Regan
8s
created

Attachment::getTimestamp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Maknz\Slack;
4
5
use InvalidArgumentException;
6
7
class Attachment
8
{
9
    /**
10
     * The fallback text to use for clients that don't support attachments.
11
     *
12
     * @var string
13
     */
14
    protected $fallback;
15
16
    /**
17
     * Optional text that should appear within the attachment.
18
     *
19
     * @var string
20
     */
21
    protected $text;
22
23
    /**
24
     * Optional image that should appear within the attachment.
25
     *
26
     * @var string
27
     */
28
    protected $image_url;
29
30
    /**
31
     * Optional thumbnail that should appear within the attachment.
32
     *
33
     * @var string
34
     */
35
    protected $thumb_url;
36
37
    /**
38
     * Optional text that should appear above the formatted data.
39
     *
40
     * @var string
41
     */
42
    protected $pretext;
43
44
    /**
45
     * Optional title for the attachment.
46
     *
47
     * @var string
48
     */
49
    protected $title;
50
51
    /**
52
     * Optional title link for the attachment.
53
     *
54
     * @var string
55
     */
56
    protected $title_link;
57
58
    /**
59
     * Optional author name for the attachment.
60
     *
61
     * @var string
62
     */
63
    protected $author_name;
64
65
    /**
66
     * Optional author link for the attachment.
67
     *
68
     * @var string
69
     */
70
    protected $author_link;
71
72
    /**
73
     * Optional author icon for the attachment.
74
     *
75
     * @var string
76
     */
77
    protected $author_icon;
78
79
    /**
80
     * The color to use for the attachment.
81
     *
82
     * @var string
83
     */
84
    protected $color = 'good';
85
86
    /**
87
     * The text to use for the attachment footer.
88
     *
89
     * @var string
90
     */
91
    protected $footer;
92
93
    /**
94
     * The icon to use for the attachment footer.
95
     *
96
     * @var string
97
     */
98
    protected $footer_icon;
99
100
    /**
101
     * The timestamp to use for the attachment.
102
     *
103
     * @var \DateTime
104
     */
105
    protected $timestamp;
106
107
    /**
108
     * The fields of the attachment.
109
     *
110
     * @var array
111
     */
112
    protected $fields = [];
113
114
    /**
115
     * The fields of the attachment that Slack should interpret
116
     * with its Markdown-like language.
117
     *
118
     * @var array
119
     */
120
    protected $markdown_fields = [];
121
122
    /**
123
     * A collection of actions (buttons) to include in the attachment.
124
     * A maximum of 5 actions may be provided.
125
     *
126
     * @var array
127
     */
128
    protected $actions = [];
129
130
    /**
131
     * Instantiate a new Attachment.
132
     *
133
     * @param array $attributes
134
     * @return void
0 ignored issues
show
Comprehensibility Best Practice introduced by
Adding a @return annotation to constructors is generally not recommended as a constructor does not have a meaningful return value.

Adding a @return annotation to a constructor is not recommended, since a constructor does not have a meaningful return value.

Please refer to the PHP core documentation on constructors.

Loading history...
135
     */
136
    public function __construct(array $attributes)
137
    {
138
        if (isset($attributes['fallback'])) {
139
            $this->setFallback($attributes['fallback']);
140
        }
141
142
        if (isset($attributes['text'])) {
143
            $this->setText($attributes['text']);
144
        }
145
146
        if (isset($attributes['image_url'])) {
147
            $this->setImageUrl($attributes['image_url']);
148
        }
149
150
        if (isset($attributes['thumb_url'])) {
151
            $this->setThumbUrl($attributes['thumb_url']);
152
        }
153
154
        if (isset($attributes['pretext'])) {
155
            $this->setPretext($attributes['pretext']);
156
        }
157
158
        if (isset($attributes['color'])) {
159
            $this->setColor($attributes['color']);
160
        }
161
162
        if (isset($attributes['footer'])) {
163
            $this->setFooter($attributes['footer']);
164
        }
165
166
        if (isset($attributes['footer_icon'])) {
167
            $this->setFooterIcon($attributes['footer_icon']);
168
        }
169
170
        if (isset($attributes['timestamp'])) {
171
            $this->setTimestamp($attributes['timestamp']);
172
        }
173
174
        if (isset($attributes['fields'])) {
175
            $this->setFields($attributes['fields']);
176
        }
177
178
        if (isset($attributes['mrkdwn_in'])) {
179
            $this->setMarkdownFields($attributes['mrkdwn_in']);
180
        }
181
182
        if (isset($attributes['title'])) {
183
            $this->setTitle($attributes['title']);
184
        }
185
186
        if (isset($attributes['title_link'])) {
187
            $this->setTitleLink($attributes['title_link']);
188
        }
189
190
        if (isset($attributes['author_name'])) {
191
            $this->setAuthorName($attributes['author_name']);
192
        }
193
194
        if (isset($attributes['author_link'])) {
195
            $this->setAuthorLink($attributes['author_link']);
196
        }
197
198
        if (isset($attributes['author_icon'])) {
199
            $this->setAuthorIcon($attributes['author_icon']);
200
        }
201
202
        if (isset($attributes['actions'])) {
203
            $this->setActions($attributes['actions']);
204
        }
205
    }
206
207
    /**
208
     * Get the fallback text.
209
     *
210
     * @return string
211
     */
212
    public function getFallback()
213
    {
214
        return $this->fallback;
215
    }
216
217
    /**
218
     * Set the fallback text.
219
     *
220
     * @param string $fallback
221
     * @return $this
222
     */
223
    public function setFallback($fallback)
224
    {
225
        $this->fallback = $fallback;
226
227
        return $this;
228
    }
229
230
    /**
231
     * Get the optional text to appear within the attachment.
232
     *
233
     * @return string
234
     */
235
    public function getText()
236
    {
237
        return $this->text;
238
    }
239
240
    /**
241
     * Set the optional text to appear within the attachment.
242
     *
243
     * @param string $text
244
     * @return $this
245
     */
246
    public function setText($text)
247
    {
248
        $this->text = $text;
249
250
        return $this;
251
    }
252
253
    /**
254
     * Get the optional image to appear within the attachment.
255
     *
256
     * @return string
257
     */
258
    public function getImageUrl()
259
    {
260
        return $this->image_url;
261
    }
262
263
    /**
264
     * Set the optional image to appear within the attachment.
265
     *
266
     * @param string $image_url
267
     * @return $this
268
     */
269
    public function setImageUrl($image_url)
270
    {
271
        $this->image_url = $image_url;
272
273
        return $this;
274
    }
275
276
    /**
277
     * Get the optional thumbnail to appear within the attachment.
278
     *
279
     * @return string
280
     */
281
    public function getThumbUrl()
282
    {
283
        return $this->thumb_url;
284
    }
285
286
    /**
287
     * Set the optional thumbnail to appear within the attachment.
288
     *
289
     * @param string $thumb_url
290
     * @return $this
291
     */
292
    public function setThumbUrl($thumb_url)
293
    {
294
        $this->thumb_url = $thumb_url;
295
296
        return $this;
297
    }
298
299
    /**
300
     * Get the text that should appear above the formatted data.
301
     *
302
     * @return string
303
     */
304
    public function getPretext()
305
    {
306
        return $this->pretext;
307
    }
308
309
    /**
310
     * Set the text that should appear above the formatted data.
311
     *
312
     * @param string $pretext
313
     * @return $this
314
     */
315
    public function setPretext($pretext)
316
    {
317
        $this->pretext = $pretext;
318
319
        return $this;
320
    }
321
322
    /**
323
     * Get the color to use for the attachment.
324
     *
325
     * @return string
326
     */
327
    public function getColor()
328
    {
329
        return $this->color;
330
    }
331
332
    /**
333
     * Set the color to use for the attachment.
334
     *
335
     * @param string $colour
0 ignored issues
show
Documentation introduced by
There is no parameter named $colour. Did you maybe mean $color?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
336
     * @return $this
337
     */
338
    public function setColor($color)
339
    {
340
        $this->color = $color;
341
342
        return $this;
343
    }
344
345
    /**
346
     * Get the footer to use for the attachment.
347
     *
348
     * @return string
349
     */
350
    public function getFooter()
351
    {
352
        return $this->footer;
353
    }
354
355
    /**
356
     * Set the footer text to use for the attachment.
357
     *
358
     * @param string $footer
359
     * @return $this
360
     */
361
    public function setFooter($footer)
362
    {
363
        $this->footer = $footer;
364
365
        return $this;
366
    }
367
368
    /**
369
     * Get the footer icon to use for the attachment.
370
     *
371
     * @return string
372
     */
373
    public function getFooterIcon()
374
    {
375
        return $this->footer_icon;
376
    }
377
378
    /**
379
     * Set the footer icon to use for the attachment.
380
     *
381
     * @param string $footerIcon
382
     * @return $this
383
     */
384
    public function setFooterIcon($footerIcon)
385
    {
386
        $this->footer_icon = $footerIcon;
387
388
        return $this;
389
    }
390
391
    /**
392
     * Get the timestamp to use for the attachment.
393
     *
394
     * @return \DateTime
395
     */
396
    public function getTimestamp()
397
    {
398
        return $this->timestamp;
399
    }
400
401
    /**
402
     * Set the timestamp to use for the attachment.
403
     *
404
     * @param \DateTime $timestamp
405
     * @return $this
406
     */
407
    public function setTimestamp($timestamp)
408
    {
409
        $this->timestamp = $timestamp;
410
411
        return $this;
412
    }
413
414
    /**
415
     * Get the title to use for the attachment.
416
     *
417
     * @return string
418
     */
419
    public function getTitle()
420
    {
421
        return $this->title;
422
    }
423
424
    /**
425
     * Set the title to use for the attachment.
426
     *
427
     * @param string $title
428
     * @return $this
429
     */
430
    public function setTitle($title)
431
    {
432
        $this->title = $title;
433
434
        return $this;
435
    }
436
437
    /**
438
     * Get the title link to use for the attachment.
439
     *
440
     * @return string
441
     */
442
    public function getTitleLink()
443
    {
444
        return $this->title_link;
445
    }
446
447
    /**
448
     * Set the title link to use for the attachment.
449
     *
450
     * @param string $title_link
451
     * @return $this
452
     */
453
    public function setTitleLink($title_link)
454
    {
455
        $this->title_link = $title_link;
456
457
        return $this;
458
    }
459
460
    /**
461
     * Get the author name to use for the attachment.
462
     *
463
     * @return string
464
     */
465
    public function getAuthorName()
466
    {
467
        return $this->author_name;
468
    }
469
470
    /**
471
     * Set the author name to use for the attachment.
472
     *
473
     * @param string $author_name
474
     * @return $this
475
     */
476
    public function setAuthorName($author_name)
477
    {
478
        $this->author_name = $author_name;
479
480
        return $this;
481
    }
482
483
    /**
484
     * Get the author link to use for the attachment.
485
     *
486
     * @return string
487
     */
488
    public function getAuthorLink()
489
    {
490
        return $this->author_link;
491
    }
492
493
    /**
494
     * Set the auhtor link to use for the attachment.
495
     *
496
     * @param string $author_link
497
     * @return $this
498
     */
499
    public function setAuthorLink($author_link)
500
    {
501
        $this->author_link = $author_link;
502
503
        return $this;
504
    }
505
506
    /**
507
     * Get the author icon to use for the attachment.
508
     *
509
     * @return string
510
     */
511
    public function getAuthorIcon()
512
    {
513
        return $this->author_icon;
514
    }
515
516
    /**
517
     * Set the author icon to use for the attachment.
518
     *
519
     * @param string $author_icon
520
     * @return $this
521
     */
522
    public function setAuthorIcon($author_icon)
523
    {
524
        $this->author_icon = $author_icon;
525
526
        return $this;
527
    }
528
529
    /**
530
     * Get the fields for the attachment.
531
     *
532
     * @return array
533
     */
534
    public function getFields()
535
    {
536
        return $this->fields;
537
    }
538
539
    /**
540
     * Set the fields for the attachment.
541
     *
542
     * @param array $fields
543
     * @return $this
544
     */
545
    public function setFields(array $fields)
546
    {
547
        $this->clearFields();
548
549
        foreach ($fields as $field) {
550
            $this->addField($field);
551
        }
552
553
        return $this;
554
    }
555
556
    /**
557
     * Add a field to the attachment.
558
     *
559
     * @param mixed $field
560
     * @return $this
561
     */
562
    public function addField($field)
563
    {
564
        if ($field instanceof AttachmentField) {
565
            $this->fields[] = $field;
566
567
            return $this;
568
        } elseif (is_array($field)) {
569
            $this->fields[] = new AttachmentField($field);
570
571
            return $this;
572
        }
573
574
        throw new InvalidArgumentException('The attachment field must be an instance of Maknz\Slack\AttachmentField or a keyed array');
575
    }
576
577
    /**
578
     * Clear the fields for the attachment.
579
     *
580
     * @return $this
581
     */
582
    public function clearFields()
583
    {
584
        $this->fields = [];
585
586
        return $this;
587
    }
588
589
    /**
590
     * Clear the actions for the attachment.
591
     *
592
     * @return $this
593
     */
594
    public function clearActions()
595
    {
596
        $this->actions = [];
597
598
        return $this;
599
    }
600
601
    /**
602
     * Get the fields Slack should interpret in its
603
     * Markdown-like language.
604
     *
605
     * @return array
606
     */
607
    public function getMarkdownFields()
608
    {
609
        return $this->markdown_fields;
610
    }
611
612
    /**
613
     * Set the fields Slack should interpret in its
614
     * Markdown-like language.
615
     *
616
     * @param array $fields
617
     * @return $this
618
     */
619
    public function setMarkdownFields(array $fields)
620
    {
621
        $this->markdown_fields = $fields;
622
623
        return $this;
624
    }
625
626
    /**
627
     * Get the collection of actions (buttons) to include in the attachment.
628
     *
629
     * @return AttachmentAction[]
630
     */
631
    public function getActions()
632
    {
633
        return $this->actions;
634
    }
635
636
    /**
637
     * Set the collection of actions (buttons) to include in the attachment.
638
     *
639
     * @param array $actions
640
     * @return Attachment
641
     */
642
    public function setActions($actions)
643
    {
644
        $this->clearActions();
645
646
        foreach ($actions as $action) {
647
            $this->addAction($action);
648
        }
649
650
        return $this;
651
    }
652
653
    /**
654
     * Add an action to the attachment.
655
     *
656
     * @param mixed $action
657
     * @return $this
658
     */
659
    public function addAction($action)
660
    {
661
        if ($action instanceof AttachmentAction) {
662
            $this->actions[] = $action;
663
664
            return $this;
665
        } elseif (is_array($action)) {
666
            $this->actions[] = new AttachmentAction($action);
667
668
            return $this;
669
        }
670
671
        throw new InvalidArgumentException('The attachment action must be an instance of Maknz\Slack\AttachmentAction or a keyed array');
672
    }
673
674
    /**
675
     * Convert this attachment to its array representation.
676
     *
677
     * @return array
678
     */
679
    public function toArray()
680
    {
681
        $data = [
682
            'fallback' => $this->getFallback(),
683
            'text' => $this->getText(),
684
            'pretext' => $this->getPretext(),
685
            'color' => $this->getColor(),
686
            'footer' => $this->getFooter(),
687
            'footer_icon' => $this->getFooterIcon(),
688
            'ts' => $this->getTimestamp() ? $this->getTimestamp()->getTimestamp() : null,
689
            'mrkdwn_in' => $this->getMarkdownFields(),
690
            'image_url' => $this->getImageUrl(),
691
            'thumb_url' => $this->getThumbUrl(),
692
            'title' => $this->getTitle(),
693
            'title_link' => $this->getTitleLink(),
694
            'author_name' => $this->getAuthorName(),
695
            'author_link' => $this->getAuthorLink(),
696
            'author_icon' => $this->getAuthorIcon(),
697
        ];
698
699
        $data['fields'] = $this->getFieldsAsArrays();
700
        $data['actions'] = $this->getActionsAsArrays();
701
702
        return $data;
703
    }
704
705
    /**
706
     * Iterates over all fields in this attachment and returns
707
     * them in their array form.
708
     *
709
     * @return array
710
     */
711
    protected function getFieldsAsArrays()
712
    {
713
        $fields = [];
714
715
        foreach ($this->getFields() as $field) {
716
            $fields[] = $field->toArray();
717
        }
718
719
        return $fields;
720
    }
721
722
    /**
723
     * Iterates over all actions in this attachment and returns
724
     * them in their array form.
725
     *
726
     * @return array
727
     */
728
    protected function getActionsAsArrays()
729
    {
730
        $actions = [];
731
732
        foreach ($this->getActions() as $action) {
733
            $actions[] = $action->toArray();
734
        }
735
736
        return $actions;
737
    }
738
}
739