EmailTemplateSiteConfigExtension   A
last analyzed

Complexity

Total Complexity 30

Size/Duplication

Total Lines 130
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 60
c 0
b 0
f 0
dl 0
loc 130
rs 10
wmc 30

8 Methods

Rating   Name   Duplication   Size   Complexity  
A EmailRssLink() 0 6 2
A EmailBaseColor() 0 7 3
A EmailLogoTemplate() 0 11 4
A EmailDefaultRecipient() 0 21 5
A updateCMSFields() 0 20 3
A EmailTwitterLink() 0 10 4
A EmailDefaultSender() 0 21 5
A EmailFacebookLink() 0 10 4
1
<?php
2
3
namespace LeKoala\EmailTemplates\Extensions;
4
5
use Exception;
6
use SilverStripe\Forms\FieldList;
7
use SilverStripe\Forms\TextField;
8
use SilverStripe\Control\Director;
9
use SilverStripe\ORM\DataExtension;
10
use SilverStripe\Control\Email\Email;
11
use SilverStripe\SiteConfig\SiteConfig;
12
use LeKoala\EmailTemplates\Models\EmailTemplate;
13
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
14
15
/**
16
 * EmailTemplateSiteConfigExtension
17
 *
18
 * @author Kalyptus SPRL <[email protected]>
19
 */
20
class EmailTemplateSiteConfigExtension extends DataExtension
21
{
22
23
    private static $db = array(
24
        'EmailFooter' => 'HTMLText',
25
        'DefaultFromEmail' => 'Varchar(255)',
26
        'ContactEmail' => 'Varchar(255)',
27
    );
28
29
    public function updateCMSFields(FieldList $fields)
30
    {
31
        // Handle field update ourselves
32
        if (!SiteConfig::config()->email_templates_update_fields) {
33
            return $fields;
34
        }
35
36
        // Already defined by another module
37
        if ($fields->dataFieldByName('EmailFooter')) {
38
            return $fields;
39
        }
40
41
        $EmailFooter = new HTMLEditorField('EmailFooter', _t('EmailTemplateSiteConfigExtension.EmailFooter', 'Email Footer'));
42
        $EmailFooter->setRows(3);
43
        $fields->addFieldToTab('Root.Email', $EmailFooter);
44
45
        $fields->addFieldToTab('Root.Email', new TextField('DefaultFromEmail', _t('EmailTemplateSiteConfigExtension.DefaultFromEmail', 'Default Sender')));
46
        $fields->addFieldToTab('Root.Email', new TextField('ContactEmail', _t('EmailTemplateSiteConfigExtension.ContactEmail', 'Default Recipient')));
47
48
        return $fields;
49
    }
50
51
    public function EmailDefaultRecipient()
52
    {
53
        if ($this->owner->ContactEmail) {
54
            return $this->owner->ContactEmail;
55
        }
56
57
        $config = Email::config();
58
59
        if ($config->default_recipient_email) {
60
            return $config->default_recipient_email;
61
        }
62
63
        if ($config->admin_email) {
64
            return $config->admin_email;
65
        }
66
67
        if ($config->send_all_emails_to) {
68
            return $config->send_all_emails_to;
69
        }
70
71
        throw new Exception('Could not find the default email recipient');
72
    }
73
74
    public function EmailDefaultSender()
75
    {
76
        if ($this->owner->DefaultFromEmail) {
77
            return $this->owner->DefaultFromEmail;
78
        }
79
80
        $config = Email::config();
81
82
        if ($config->default_sender_email) {
83
            return $config->default_sender_email;
84
        }
85
86
        if ($config->admin_email) {
87
            return $config->admin_email;
88
        }
89
90
        if ($config->send_all_emails_from) {
91
            return $config->send_all_emails_from;
92
        }
93
94
        throw new Exception('Could not find the default email sender');
95
    }
96
97
    public function EmailBaseColor()
98
    {
99
        $field = EmailTemplate::config()->base_color_field;
100
        if ($field && $this->owner->hasField($field)) {
101
            return $this->owner->$field;
102
        }
103
        return EmailTemplate::config()->base_color;
104
    }
105
106
    public function EmailLogoTemplate()
107
    {
108
        // Use EmailLogo if defined
109
        if ($this->owner->EmailLogoID) {
110
            return $this->owner->EmailLogo();
111
        }
112
        // Otherwise, use configurable field
113
        $field = EmailTemplate::config()->logo_field;
114
        if ($field && $this->owner->hasField($field)) {
115
            $method = str_replace('ID', '', $field);
116
            return $this->owner->$method();
117
        }
118
    }
119
120
    public function EmailTwitterLink()
121
    {
122
        if (!EmailTemplate::config()->show_twitter) {
123
            return;
124
        }
125
        $field = EmailTemplate::config()->twitter_field;
126
        if ($field && !$this->owner->hasField($field)) {
127
            return;
128
        }
129
        return 'https://twitter.com/' . $this->owner->$field;
130
    }
131
132
    public function EmailFacebookLink()
133
    {
134
        if (!EmailTemplate::config()->show_facebook) {
135
            return;
136
        }
137
        $field = EmailTemplate::config()->facebook_field;
138
        if ($field && !$this->owner->hasField($field)) {
139
            return;
140
        }
141
        return 'https://www.facebook.com/' . $this->owner->$field;
142
    }
143
144
    public function EmailRssLink()
145
    {
146
        if (!EmailTemplate::config()->show_rss) {
147
            return;
148
        }
149
        return Director::absoluteURL('rss');
150
    }
151
}
152