diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index f9f0a0c351..79c6c1c0d5 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -324,12 +324,6 @@ class Menu { $data['date_formats'] = Block\Date::getDateFormats(); $data['month_names'] = Block\Date::getMonthNames(); - - // print "
"; - // print_r($data['custom_fields']); - // print ""; - // exit; - echo $this->renderer->render('subscribers/subscribers.html', $data); } diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index 82588c0ec8..d1f2c22ab9 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -264,7 +264,7 @@ class Subscriber extends Model { return $subscriber; } - function getCustomFields() { + function withCustomFields() { $custom_fields = CustomField::select('id')->findArray(); if(empty($custom_fields)) return $this; diff --git a/lib/Router/Subscribers.php b/lib/Router/Subscribers.php index 2143bc469b..b08976101b 100644 --- a/lib/Router/Subscribers.php +++ b/lib/Router/Subscribers.php @@ -24,7 +24,7 @@ class Subscribers { } else { $segments = $subscriber->segments()->findArray(); - $subscriber = $subscriber->getCustomFields()->asArray(); + $subscriber = $subscriber->withCustomFields()->asArray(); $subscriber['segments'] = array_map(function($segment) { return $segment['id']; }, $segments); diff --git a/tests/unit/Models/SubscriberCest.php b/tests/unit/Models/SubscriberCest.php index f44374b8b6..7a4be4af97 100644 --- a/tests/unit/Models/SubscriberCest.php +++ b/tests/unit/Models/SubscriberCest.php @@ -372,6 +372,47 @@ class SubscriberCest { expect($subscriber->last_name)->equals('DoDo'); } + function itCanSetCustomField() { + $custom_field = CustomField::createOrUpdate(array( + 'name' => 'Date of Birth', + 'type' => 'date' + )); + + expect($custom_field->id() > 0)->true(); + + $value = array( + 'year' => 1984, + 'month' => 3, + 'day' => 9 + ); + + $subscriber = Subscriber::findOne($this->subscriber->id()); + $subscriber->setCustomField($custom_field->id(), $value); + + $subscriber = $subscriber->withCustomFields()->asArray(); + + expect($subscriber['cf_'.$custom_field->id()])->equals( + mktime(0, 0, 0, $value['month'], $value['day'], $value['year']) + ); + } + + function itCanGetCustomField() { + $subscriber = Subscriber::findOne($this->subscriber->id()); + + expect($subscriber->getCustomField(9999, 'default_value')) + ->equals('default_value'); + + $custom_field = CustomField::createOrUpdate(array( + 'name' => 'Custom field: text input', + 'type' => 'input' + )); + + $subscriber->setCustomField($custom_field->id(), 'non_default_value'); + + expect($subscriber->getCustomField($custom_field->id(), 'default_value')) + ->equals('non_default_value'); + } + function _after() { ORM::forTable(Subscriber::$_table) ->deleteMany();