diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index a32a51be80..c2ca8d9876 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -70,4 +70,25 @@ class Subscriber extends Model { 'segment_id' ); } + + public static function createOrUpdate($data = array()) { + $subscriber = false; + + if(isset($data['id']) && (int)$data['id'] > 0) { + $subscriber = self::findOne((int)$data['id']); + } + + if($subscriber === false) { + $subscriber = self::create(); + } + + $subscriber->hydrate($data); + $saved = $subscriber->save(); + + if($saved === false) { + return $subscriber->getValidationErrors(); + } else { + return true; + } + } } diff --git a/lib/Router/Subscribers.php b/lib/Router/Subscribers.php index b8a5cbee82..2b635430c8 100644 --- a/lib/Router/Subscribers.php +++ b/lib/Router/Subscribers.php @@ -34,22 +34,10 @@ class Subscribers { } function save($data = array()) { - $id = (isset($data['id']) ? (int)$data['id'] : 0); + $result = Subscriber::createOrUpdate($data); - if($id > 0) { - // update - $model = Subscriber::findOne($id); - $model->hydrate($data); - $saved = $model->save(); - } else { - // new - $model = Subscriber::create(); - $model->hydrate($data); - $saved = $model->save(); - } - - if($saved === false) { - wp_send_json($model->getValidationErrors()); + if($result !== true) { + wp_send_json($result); } else { wp_send_json(true); }