From b076e03a7527ac840b2351cb2adb83117910dbec Mon Sep 17 00:00:00 2001 From: Amine Ben hammou Date: Sun, 11 Feb 2018 21:04:56 +0000 Subject: [PATCH] using `static` instead of `self` renaming `internalCreateOrUpdate` to `_createOrUpdate` renaming `$conditions` to `$keys` adding block comment for `_createOrUpdate` method. --- lib/Models/CustomField.php | 2 +- lib/Models/Form.php | 3 --- lib/Models/Model.php | 24 +++++++++++++++++++----- lib/Models/Newsletter.php | 2 +- lib/Models/NewsletterOption.php | 2 +- lib/Models/NewsletterTemplate.php | 5 +---- lib/Models/ScheduledTaskSubscriber.php | 2 +- lib/Models/Segment.php | 4 ---- lib/Models/Setting.php | 4 ++-- lib/Models/SubscriberCustomField.php | 2 +- lib/Models/SubscriberSegment.php | 6 +++--- 11 files changed, 30 insertions(+), 26 deletions(-) diff --git a/lib/Models/CustomField.php b/lib/Models/CustomField.php index c51b675f9e..bcad797b4d 100644 --- a/lib/Models/CustomField.php +++ b/lib/Models/CustomField.php @@ -131,6 +131,6 @@ class CustomField extends Model { if(empty($data['params']['label']) && isset($data['name'])) { $data['params']['label'] = $data['name']; } - return parent::internalCreateOrUpdate($data); + return parent::_createOrUpdate($data); } } diff --git a/lib/Models/Form.php b/lib/Models/Form.php index efa03fc14e..c8fe6f7be9 100644 --- a/lib/Models/Form.php +++ b/lib/Models/Form.php @@ -108,7 +108,4 @@ class Form extends Model { return $orm->whereNull('deleted_at'); } - static function createOrUpdate($data = array()) { - return parent::internalCreateOrUpdate($data); - } } diff --git a/lib/Models/Model.php b/lib/Models/Model.php index 6a66e87d5f..c9082c0bf2 100644 --- a/lib/Models/Model.php +++ b/lib/Models/Model.php @@ -20,16 +20,26 @@ class Model extends \Sudzy\ValidModel { return parent::create(); } - static protected function internalCreateOrUpdate($data = array(), $conditions = false, $onCreate = false) { + /** + * Creates a row, or updates it if already exists. It tries to find the existing + * row by `id` (if given in `$data`), or by the given `$keys`. If `$onCreate` is + * given, it's used to transform `$data` before creating the new row. + * + * @param array $data + * @param boolean $keys + * @param callable $onCreate + * @return self + */ + static protected function _createOrUpdate($data = array(), $keys = false, $onCreate = false) { $model = false; if(isset($data['id']) && (int)$data['id'] > 0) { - $model = self::findOne((int)$data['id']); + $model = static::findOne((int)$data['id']); } - if(!empty($conditions)) { + if(!empty($keys)) { $first = true; - foreach($conditions as $field => $value) { + foreach($keys as $field => $value) { if($first) { $model = static::where($field, $value); $first = false; @@ -44,7 +54,7 @@ class Model extends \Sudzy\ValidModel { if(!empty($onCreate)) { $data = $onCreate($data); } - $model = self::create(); + $model = static::create(); $model->hydrate($data); } else { unset($data['id']); @@ -54,6 +64,10 @@ class Model extends \Sudzy\ValidModel { return $model->save(); } + static public function createOrUpdate($data = array()) { + return self::_createOrUpdate($data); + } + function getErrors() { if(empty($this->_errors)) { return false; diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index d49f7f5f6b..9b1ed05b56 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -793,7 +793,7 @@ class Newsletter extends Model { } static function createOrUpdate($data = array()) { - return parent::internalCreateOrUpdate($data, false, function($data) { + return parent::_createOrUpdate($data, false, function($data) { // set default sender based on settings if(empty($data['sender'])) { $sender = Setting::getValue('sender', array()); diff --git a/lib/Models/NewsletterOption.php b/lib/Models/NewsletterOption.php index 447e9db059..8dcb63391a 100644 --- a/lib/Models/NewsletterOption.php +++ b/lib/Models/NewsletterOption.php @@ -10,7 +10,7 @@ class NewsletterOption extends Model { if(!is_array($data) || empty($data['newsletter_id']) || empty($data['option_field_id'])) { return; } - return parent::internalCreateOrUpdate($data, array( + return parent::_createOrUpdate($data, array( 'option_field_id' => $data['option_field_id'], 'newsletter_id' => $data['newsletter_id'] )); diff --git a/lib/Models/NewsletterTemplate.php b/lib/Models/NewsletterTemplate.php index bc276fd099..bff9142658 100644 --- a/lib/Models/NewsletterTemplate.php +++ b/lib/Models/NewsletterTemplate.php @@ -24,8 +24,5 @@ class NewsletterTemplate extends Model { } return $template; } - - static function createOrUpdate($data = array()) { - return parent::internalCreateOrUpdate($data); - } + } diff --git a/lib/Models/ScheduledTaskSubscriber.php b/lib/Models/ScheduledTaskSubscriber.php index 91c2612e4c..7b351b1b1d 100644 --- a/lib/Models/ScheduledTaskSubscriber.php +++ b/lib/Models/ScheduledTaskSubscriber.php @@ -15,7 +15,7 @@ class ScheduledTaskSubscriber extends Model { return; } $data['processed'] = !empty($data['processed']) ? self::STATUS_PROCESSED : self::STATUS_UNPROCESSED; - return parent::internalCreateOrUpdate($data, array( + return parent::_createOrUpdate($data, array( 'subscriber_id' => $data['subscriber_id'], 'task_id' => $data['task_id'] )); diff --git a/lib/Models/Segment.php b/lib/Models/Segment.php index c6d9be1581..6b5416d4f1 100644 --- a/lib/Models/Segment.php +++ b/lib/Models/Segment.php @@ -219,10 +219,6 @@ class Segment extends Model { return $query; } - static function createOrUpdate($data = array()) { - return parent::internalCreateOrUpdate($data); - } - static function getPublic() { return self::getPublished()->where('type', self::TYPE_DEFAULT)->orderByAsc('name'); } diff --git a/lib/Models/Setting.php b/lib/Models/Setting.php index 05a234b403..fc5c189f30 100644 --- a/lib/Models/Setting.php +++ b/lib/Models/Setting.php @@ -150,8 +150,8 @@ class Setting extends Model { } public static function createOrUpdate($data = array()) { - $conditions = isset($data['name']) ? array('name' => $data['name']) : false; - return parent::internalCreateOrUpdate($data, $conditions); + $keys = isset($data['name']) ? array('name' => $data['name']) : false; + return parent::_createOrUpdate($data, $keys); } public static function deleteValue($value) { diff --git a/lib/Models/SubscriberCustomField.php b/lib/Models/SubscriberCustomField.php index 86c90a4fee..8923068ea8 100644 --- a/lib/Models/SubscriberCustomField.php +++ b/lib/Models/SubscriberCustomField.php @@ -37,7 +37,7 @@ class SubscriberCustomField extends Model { } } - return parent::internalCreateOrUpdate($data, array( + return parent::_createOrUpdate($data, array( 'custom_field_id' => $data['custom_field_id'], 'subscriber_id' => $data['subscriber_id'] )); diff --git a/lib/Models/SubscriberSegment.php b/lib/Models/SubscriberSegment.php index 4ee7dcf3c2..e109e57199 100644 --- a/lib/Models/SubscriberSegment.php +++ b/lib/Models/SubscriberSegment.php @@ -151,13 +151,13 @@ class SubscriberSegment extends Model { } static function createOrUpdate($data = array()) { - $conditions = false; + $keys = false; if(isset($data['subscriber_id']) && isset($data['segment_id'])) { - $conditions = array( + $keys = array( 'subscriber_id' => (int)$data['subscriber_id'], 'segment_id' => (int)$data['segment_id'] ); } - return parent::internalCreateOrUpdate($data, $conditions); + return parent::_createOrUpdate($data, $keys); } }