refactoring createOrUpdate method of models
This commit is contained in:
@ -127,25 +127,10 @@ class CustomField extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$custom_field = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$custom_field = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
// set name as label by default
|
||||
if(empty($data['params']['label']) && isset($data['name'])) {
|
||||
$data['params']['label'] = $data['name'];
|
||||
}
|
||||
|
||||
if($custom_field === false) {
|
||||
$custom_field = self::create();
|
||||
$custom_field->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$custom_field->set($data);
|
||||
}
|
||||
|
||||
return $custom_field->save();
|
||||
return parent::internalCreateOrUpdate($data);
|
||||
}
|
||||
}
|
||||
|
@ -109,20 +109,6 @@ class Form extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$form = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$form = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
if($form === false) {
|
||||
$form = self::create();
|
||||
$form->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$form->set($data);
|
||||
}
|
||||
|
||||
return $form->save();
|
||||
return parent::internalCreateOrUpdate($data);
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,40 @@ class Model extends \Sudzy\ValidModel {
|
||||
return parent::create();
|
||||
}
|
||||
|
||||
static protected function internalCreateOrUpdate($data = array(), $conditions = false, $onCreate = false) {
|
||||
$model = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$model = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
if(!empty($conditions)) {
|
||||
$first = true;
|
||||
foreach($conditions as $field => $value) {
|
||||
if($first) {
|
||||
$model = static::where($field, $value);
|
||||
$first = false;
|
||||
} else {
|
||||
$model = $model->where($field, $value);
|
||||
}
|
||||
}
|
||||
$model = $model->findOne();
|
||||
}
|
||||
|
||||
if($model === false) {
|
||||
if(!empty($onCreate)) {
|
||||
$data = $onCreate($data);
|
||||
}
|
||||
$model = self::create();
|
||||
$model->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$model->set($data);
|
||||
}
|
||||
|
||||
return $model->save();
|
||||
}
|
||||
|
||||
function getErrors() {
|
||||
if(empty($this->_errors)) {
|
||||
return false;
|
||||
|
@ -793,15 +793,7 @@ class Newsletter extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$newsletter = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$newsletter = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
if($newsletter === false) {
|
||||
$newsletter = self::create();
|
||||
|
||||
return parent::internalCreateOrUpdate($data, false, function($data) {
|
||||
// set default sender based on settings
|
||||
if(empty($data['sender'])) {
|
||||
$sender = Setting::getValue('sender', array());
|
||||
@ -832,14 +824,8 @@ class Newsletter extends Model {
|
||||
);
|
||||
}
|
||||
|
||||
$newsletter->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$newsletter->set($data);
|
||||
}
|
||||
|
||||
$newsletter->save();
|
||||
return $newsletter;
|
||||
return $data;
|
||||
});
|
||||
}
|
||||
|
||||
static function getWelcomeNotificationsForSegments($segments) {
|
||||
|
@ -7,18 +7,12 @@ class NewsletterOption extends Model {
|
||||
public static $_table = MP_NEWSLETTER_OPTION_TABLE;
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
if(!is_array($data) || empty($data['newsletter_id']) || empty($data['option_field_id'])) return;
|
||||
|
||||
$newsletter_option = self::where('option_field_id', $data['option_field_id'])
|
||||
->where('newsletter_id', $data['newsletter_id'])
|
||||
->findOne();
|
||||
|
||||
if(empty($newsletter_option)) $newsletter_option = self::create();
|
||||
|
||||
$newsletter_option->newsletter_id = $data['newsletter_id'];
|
||||
$newsletter_option->option_field_id = $data['option_field_id'];
|
||||
$newsletter_option->value = $data['value'];
|
||||
$newsletter_option->save();
|
||||
return $newsletter_option;
|
||||
if(!is_array($data) || empty($data['newsletter_id']) || empty($data['option_field_id'])) {
|
||||
return;
|
||||
}
|
||||
return parent::internalCreateOrUpdate($data, array(
|
||||
'option_field_id' => $data['option_field_id'],
|
||||
'newsletter_id' => $data['newsletter_id']
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -26,21 +26,6 @@ class NewsletterTemplate extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$template = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$template = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
if($template === false) {
|
||||
$template = self::create();
|
||||
$template->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$template->set($data);
|
||||
}
|
||||
|
||||
$template->save();
|
||||
return $template;
|
||||
return parent::internalCreateOrUpdate($data);
|
||||
}
|
||||
}
|
||||
|
@ -11,20 +11,14 @@ class ScheduledTaskSubscriber extends Model {
|
||||
public static $_id_column = array('task_id', 'subscriber_id');
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
if(!is_array($data) || empty($data['task_id']) || empty($data['subscriber_id'])) return;
|
||||
|
||||
$task_subscriber = self::where('subscriber_id', $data['subscriber_id'])
|
||||
->where('task_id', $data['task_id'])
|
||||
->findOne();
|
||||
|
||||
if(empty($task_subscriber)) $task_subscriber = self::create();
|
||||
|
||||
$task_subscriber->task_id = $data['task_id'];
|
||||
$task_subscriber->subscriber_id = $data['subscriber_id'];
|
||||
$task_subscriber->processed = !empty($data['processed']) ? self::STATUS_PROCESSED : self::STATUS_UNPROCESSED;
|
||||
$task_subscriber->save();
|
||||
|
||||
return $task_subscriber;
|
||||
if(!is_array($data) || empty($data['task_id']) || empty($data['subscriber_id'])) {
|
||||
return;
|
||||
}
|
||||
$data['processed'] = !empty($data['processed']) ? self::STATUS_PROCESSED : self::STATUS_UNPROCESSED;
|
||||
return parent::internalCreateOrUpdate($data, array(
|
||||
'subscriber_id' => $data['subscriber_id'],
|
||||
'task_id' => $data['task_id']
|
||||
));
|
||||
}
|
||||
|
||||
static function addSubscribers($task_id, array $subscriber_ids) {
|
||||
|
@ -220,22 +220,7 @@ class Segment extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$segment = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$segment = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
if($segment === false) {
|
||||
$segment = self::create();
|
||||
$segment->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$segment->set($data);
|
||||
}
|
||||
|
||||
$segment->save();
|
||||
return $segment;
|
||||
return parent::internalCreateOrUpdate($data);
|
||||
}
|
||||
|
||||
static function getPublic() {
|
||||
|
@ -150,20 +150,8 @@ class Setting extends Model {
|
||||
}
|
||||
|
||||
public static function createOrUpdate($data = array()) {
|
||||
$setting = false;
|
||||
|
||||
if(isset($data['name'])) {
|
||||
$setting = self::where('name', $data['name'])->findOne();
|
||||
}
|
||||
|
||||
if($setting === false) {
|
||||
$setting = self::create();
|
||||
$setting->hydrate($data);
|
||||
} else {
|
||||
$setting->value = $data['value'];
|
||||
}
|
||||
|
||||
return $setting->save();
|
||||
$conditions = isset($data['name']) ? array('name' => $data['name']) : false;
|
||||
return parent::internalCreateOrUpdate($data, $conditions);
|
||||
}
|
||||
|
||||
public static function deleteValue($value) {
|
||||
|
@ -37,18 +37,10 @@ class SubscriberCustomField extends Model {
|
||||
}
|
||||
}
|
||||
|
||||
$relation = self::where('custom_field_id', $data['custom_field_id'])
|
||||
->where('subscriber_id', $data['subscriber_id'])
|
||||
->findOne();
|
||||
|
||||
if($relation === false) {
|
||||
$relation = self::create();
|
||||
$relation->hydrate($data);
|
||||
} else {
|
||||
$relation->set($data);
|
||||
}
|
||||
|
||||
return $relation->save();
|
||||
return parent::internalCreateOrUpdate($data, array(
|
||||
'custom_field_id' => $data['custom_field_id'],
|
||||
'subscriber_id' => $data['subscriber_id']
|
||||
));
|
||||
}
|
||||
|
||||
static function createMultiple($values) {
|
||||
|
@ -151,26 +151,13 @@ class SubscriberSegment extends Model {
|
||||
}
|
||||
|
||||
static function createOrUpdate($data = array()) {
|
||||
$subscription = false;
|
||||
|
||||
if(isset($data['id']) && (int)$data['id'] > 0) {
|
||||
$subscription = self::findOne((int)$data['id']);
|
||||
}
|
||||
|
||||
$conditions = false;
|
||||
if(isset($data['subscriber_id']) && isset($data['segment_id'])) {
|
||||
$subscription = self::where('subscriber_id', (int)$data['subscriber_id'])
|
||||
->where('segment_id', (int)$data['segment_id'])
|
||||
->findOne();
|
||||
$conditions = array(
|
||||
'subscriber_id' => (int)$data['subscriber_id'],
|
||||
'segment_id' => (int)$data['segment_id']
|
||||
);
|
||||
}
|
||||
|
||||
if($subscription === false) {
|
||||
$subscription = self::create();
|
||||
$subscription->hydrate($data);
|
||||
} else {
|
||||
unset($data['id']);
|
||||
$subscription->set($data);
|
||||
}
|
||||
|
||||
return $subscription->save();
|
||||
return parent::internalCreateOrUpdate($data, $conditions);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user