fixed list selection widget + started form submission

This commit is contained in:
Jonathan Labreuille
2015-11-04 18:29:46 +01:00
parent d996b78561
commit a31dce6226
16 changed files with 514 additions and 514 deletions

View File

@@ -79,6 +79,33 @@ class Form extends Model {
$form = self::findOne((int)$data['id']);
}
// check if the user gets to pick his own lists
// or if it's selected by the admin
$has_segment_selection = false;
if(!empty($body)) {
foreach ($body as $i => $block) {
if($block['type'] === 'segment') {
$has_segment_selection = true;
if(!empty($block['params']['values'])) {
$list_selection = array_map(function($segment) {
if(!empty($segment)) {
return (int)$segment['id'];
}
}, $block['params']['values']);
}
break;
}
}
}
// check list selectio
if($has_segment_selection === true) {
$settings['segments_selected_by'] = 'user';
} else {
$settings['segments_selected_by'] = 'admin';
}
if($form === false) {
$form = self::create();
$form->hydrate($data);

View File

@@ -29,6 +29,44 @@ class Segment extends Model {
);
}
function subscribers() {
return $this->has_many_through(
__NAMESPACE__.'\Subscriber',
__NAMESPACE__.'\SubscriberSegment',
'segment_id',
'subscriber_id'
);
}
function duplicate($data = array()) {
$duplicate = parent::duplicate($data);
if($duplicate !== false) {
foreach($this->subscribers()->findResultSet() as $relation) {
$new_relation = SubscriberSegment::create();
$new_relation->set('subscriber_id', $relation->id);
$new_relation->set('segment_id', $duplicate->id);
$new_relation->save();
}
return $duplicate;
}
return false;
}
function addSubscriber($subscriber_id) {
$relation = SubscriberSegment::create();
$relation->set('subscriber_id', $subscriber_id);
$relation->set('segment_id', $this->id);
return $relation->save();
}
function removeSubscriber($subscriber_id) {
return SubscriberSegment::where('subscriber_id', $subscriber_id)
->where('segment_id', $this->id)
->delete();
}
static function search($orm, $search = '') {
return $orm->where_like('name', '%'.$search.'%');
}
@@ -83,29 +121,4 @@ class Segment extends Model {
}
return false;
}
function duplicate($data = array()) {
$duplicate = parent::duplicate($data);
if($duplicate !== false) {
foreach($this->subscribers()->findResultSet() as $relation) {
$new_relation = SubscriberSegment::create();
$new_relation->set('subscriber_id', $relation->id);
$new_relation->set('segment_id', $duplicate->id);
$new_relation->save();
}
return $duplicate;
}
return false;
}
function subscribers() {
return $this->has_many_through(
__NAMESPACE__.'\Subscriber',
__NAMESPACE__.'\SubscriberSegment',
'segment_id',
'subscriber_id'
);
}
}

View File

@@ -168,17 +168,8 @@ class Subscriber extends Model {
$subscriber->set($data);
}
$saved = $subscriber->save();
if($saved === true) {
return true;
} else {
$errors = $subscriber->getValidationErrors();
if(!empty($errors)) {
return $errors;
}
}
return false;
$subscriber->save();
return $subscriber;
}
static function bulkMoveToList($orm, $data = array()) {