1 <?php
2
3 4 5 6 7 8 9
10 class NewsletterRole extends DataObjectDecorator {
11
12 function () {
13 return array(
14 'db' => array(
15 'BlacklistedEmail' => 'Boolean'
16 ),
17 'has_many' => array(
18 'UnsubscribedRecords' => 'UnsubscribeRecord'
19 )
20 );
21 }
22
23 24 25 26 27 28
29 function updateCMSFields($fields) {
30 $fields->removeByName('UnsubscribedRecords');
31 $fields->removeByName('BlacklistedEmail');
32 }
33
34 35 36 37 38 39
40 function updateMemberFormFields($fields) {
41 $fields->removeByName('BlacklistedEmail');
42 }
43
44 45 46 47 48 49 50 51
52 function getNewsletterSubscriptions() {
53 $groups = $this->owner->Groups()->toDropDownMap('ID', 'ID');
54 return $groups;
55 }
56
57 58 59 60 61 62 63 64
65 function unsubscribeFromNewsletter($newsletterType) {
66 $unsubscribeRecord = new UnsubscribeRecord();
67 $unsubscribeRecord->unsubscribe($this->owner, $newsletterType);
68 $this->owner->Groups()->remove($newsletterType->GroupID);
69 }
70
71 72 73 74 75 76 77 78 79
80 function saveNewsletterSubscriptions($groups) {
81 $checkboxsetfield = new CheckboxSetField(
82 "NewsletterSubscriptions",
83 "",
84 $sourceitems = DataObject::get("NewsletterType")->toDropDownMap("GroupID","Title"),
85 $selectedgroups = $groups
86 );
87 return $this->owner->Groups()->setByCheckboxSetField($checkboxsetfield);
88 }
89
90 function removeAllNewsletterSubscriptions(){
91 $groups = $this->owner->Groups();
92 $groupIDs = $groups->getIDList();
93 $newsletterTypes = DataObject::get("NewsletterType");
94 if($newsletterTypes&&$newsletterTypes->count()){
95 foreach($newsletterTypes as $type){
96 $newsletterGroupIDs[] = $type->GroupID;
97 }
98 }
99 if($newsletterGroupIDs) {
100 foreach($newsletterGroupIDs as $newsletterGroupID){
101 if($groupIDs&&in_array($newsletterGroupID, $groupIDs)){
102 $groups->remove($newsletterGroupID);
103 }
104 }
105 }
106 }
107
108 109 110 111 112 113 114 115 116 117
118 function setBlacklistedEmail($val) {
119 if($val && $this->owner->Email) {
120 $blacklisting = new NewsletterEmailBlacklist();
121 $blacklisting->BlockedEmail = $this->owner->Email;
122 $blacklisting->MemberID = $this->owner->ID;
123 $blacklisting->write();
124 }
125
126 $this->owner->setField("BlacklistedEmail", $val);
127
128 $this->owner->write();
129 }
130
131 }
132
133 ?>
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-