SocialExtension::YoutubeLink()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace LeKoala\CommonExtensions;
4
5
use SilverStripe\Forms\Tab;
6
use SilverStripe\Forms\FieldList;
7
use SilverStripe\Forms\TextField;
8
use SilverStripe\ORM\DataExtension;
9
10
/**
11
 * A typical social networks to a record
12
 *
13
 * @property \SilverStripe\SiteConfig\SiteConfig|\LeKoala\CommonExtensions\SocialExtension $owner
14
 * @property string $Facebook
15
 * @property string $Twitter
16
 * @property string $LinkedIn
17
 * @property string $Youtube
18
 * @property string $Vimeo
19
 * @property string $Flickr
20
 * @property string $Instagram
21
 * @property string $Pinterest
22
 */
23
class SocialExtension extends DataExtension
24
{
25
    //TODO: find a more flexible way to deal with various type of social networks
26
    private static $db = [
27
        "Facebook" => "Varchar(59)",
28
        "Twitter" => "Varchar(59)",
29
        "LinkedIn" => "Varchar(59)",
30
        "Youtube" => "Varchar(59)",
31
        "Vimeo" => "Varchar(59)",
32
        "Flickr" => "Varchar(59)",
33
        "Instagram" => "Varchar(59)",
34
        "Pinterest" => "Varchar(59)",
35
    ];
36
37
    public function updateCMSFields(FieldList $fields)
38
    {
39
        $tab = new Tab('Social');
40
        $fields->addFieldToTab('Root', $tab);
41
        $placeholders = [
42
            'Facebook' => 'my_page_name',
43
            'LinkedIn' => 'company/my_company_name',
44
            'Youtube' => 'channel/my_channel_name'
45
        ];
46
        foreach (self::$db as $name => $type) {
47
            $field = new TextField($name, $this->owner->fieldLabel($name));
0 ignored issues
show
Bug introduced by
The method fieldLabel() does not exist on LeKoala\CommonExtensions\SocialExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

47
            $field = new TextField($name, $this->owner->/** @scrutinizer ignore-call */ fieldLabel($name));

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
48
            $placeholder = $placeholders[$name] ?? '';
49
            $field->setAttribute('placeholder', $placeholder);
50
            $tab->push($field);
51
        }
52
    }
53
    public function FacebookLink()
54
    {
55
        return 'https://www.facebook.com/' . $this->owner->Facebook;
56
    }
57
58
    public function TwitterLink()
59
    {
60
        return 'https://twitter.com/' . $this->owner->Twitter;
61
    }
62
63
    public function LinkedInLink()
64
    {
65
        return 'https://www.linkedin.com/' . $this->owner->LinkedIn;
66
    }
67
68
    public function YoutubeLink()
69
    {
70
        return 'https://www.youtube.com/' . $this->owner->Youtube;
71
    }
72
73
    public function VimeoLink()
74
    {
75
        return 'https://vimeo.com/' . $this->owner->Vimeo;
76
    }
77
78
    public function InstagramLink()
79
    {
80
        return 'https://www.instagram.com/' . $this->owner->Instagram;
81
    }
82
83
    public function FlickrLink()
84
    {
85
        return 'https://www.flickr.com/photos/' . $this->owner->Flickr;
86
    }
87
88
    public function PinterestLink()
89
    {
90
        return 'https://www.pinterest.com/' . $this->owner->Pinterest;
91
    }
92
}
93