From ae0e03d2f3a81ef977d30b55b4ba91501add751e Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Thu, 23 Aug 2018 11:25:52 +0200 Subject: [PATCH] Update code for PHP 5.5 [MAILPOET-1496] --- RoboFile.php | 4 +- composer.json | 2 +- lib/Cron/Workers/Bounce.php | 2 +- lib/Models/Newsletter.php | 4 +- lib/Models/Subscriber.php | 4 +- lib/Segments/SubscribersFinder.php | 4 +- .../ImportExport/Export/Export.php | 6 +- .../ImportExport/Import/Import.php | 6 +- lib/Subscription/Pages.php | 2 +- lib/Tasks/Sending.php | 2 +- lib/Tasks/Subscribers/BatchIterator.php | 2 +- lib/Util/Helpers.php | 73 ------------------- tests/unit/Cron/Workers/BounceTest.php | 2 +- .../ImportExport/Import/ImportTest.php | 6 +- 14 files changed, 23 insertions(+), 96 deletions(-) diff --git a/RoboFile.php b/RoboFile.php index 28279c365c..b0657a7f44 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -288,7 +288,7 @@ class RoboFile extends \Robo\Tasks { ->taskExec( './vendor/bin/phpcs '. '--standard=./tasks/code_sniffer/MailPoet '. - '--runtime-set testVersion 5.4-7.2 '. + '--runtime-set testVersion 5.5-7.2 '. '--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'. './lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '. 'lib/ '. @@ -297,7 +297,7 @@ class RoboFile extends \Robo\Tasks { ->taskExec( './vendor/bin/phpcs '. '--standard=./tasks/code_sniffer/MailPoet '. - '--runtime-set testVersion 5.4-7.2 '. + '--runtime-set testVersion 5.5-7.2 '. '--ignore=./tests/unit/_bootstrap.php '. 'tests/unit/ '. $severityFlag diff --git a/composer.json b/composer.json index 2538491090..4389889d7c 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ } ], "require": { - "php": ">=5.4", + "php": ">=5.5", "twig/twig": "1.*", "cerdic/css-tidy": "^1.5.5", "tburry/pquery": "^1.1.1", diff --git a/lib/Cron/Workers/Bounce.php b/lib/Cron/Workers/Bounce.php index e0e1449077..e3a48c48ee 100644 --- a/lib/Cron/Workers/Bounce.php +++ b/lib/Cron/Workers/Bounce.php @@ -65,7 +65,7 @@ class Bounce extends SimpleWorker { ->whereIn('id', $subscribers_to_process_ids) ->whereNull('deleted_at') ->findArray(); - $subscriber_emails = Helpers::arrayColumn($subscriber_emails, 'email'); + $subscriber_emails = array_column($subscriber_emails, 'email'); $this->processEmails($subscriber_emails); diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index 9ce48f7e5b..ea5ca97e63 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -460,7 +460,7 @@ class Newsletter extends Model { function withDeletedSegments() { if(!empty($this->segments)) { - $segment_ids = Helpers::arrayColumn($this->segments, 'id'); + $segment_ids = array_column($this->segments, 'id'); $links = $this->segmentRelations() ->whereNotIn('segment_id', $segment_ids)->findArray(); $deleted_segments = array(); @@ -501,7 +501,7 @@ class Newsletter extends Model { if(empty($options)) { $this->options = array(); } else { - $this->options = Helpers::arrayColumn($options, 'value', 'name'); + $this->options = array_column($options, 'value', 'name'); } return $this; } diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index fd96ab71ac..f3cfe58566 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -532,7 +532,7 @@ class Subscriber extends Model { $custom_fields = CustomField::select('id')->findArray(); if(empty($custom_fields)) return $this; - $custom_field_ids = Helpers::arrayColumn($custom_fields, 'id'); + $custom_field_ids = array_column($custom_fields, 'id'); $relations = SubscriberCustomField::select('custom_field_id') ->select('value') ->whereIn('custom_field_id', $custom_field_ids) @@ -845,7 +845,7 @@ class Subscriber extends Model { '(' . rtrim(str_repeat('?,', count($subscribers)), ',') . ')', array_merge( Helpers::flattenArray($sql('values')), - Helpers::arrayColumn($subscribers, $email_position) + array_column($subscribers, $email_position) ) ); } diff --git a/lib/Segments/SubscribersFinder.php b/lib/Segments/SubscribersFinder.php index d15f567127..6a156795a7 100644 --- a/lib/Segments/SubscribersFinder.php +++ b/lib/Segments/SubscribersFinder.php @@ -83,7 +83,7 @@ class SubscribersFinder { } private function addSubscribersToTaskFromStaticSegments(ScheduledTask $task, array $segments) { - $segment_ids = Helpers::arrayColumn($segments, 'id'); + $segment_ids = array_column($segments, 'id'); Subscriber::rawExecute( 'INSERT IGNORE INTO ' . MP_SCHEDULED_TASK_SUBSCRIBERS_TABLE . ' (task_id, subscriber_id, processed) @@ -125,7 +125,7 @@ class SubscribersFinder { } private function addSubscribersToTaskByIds(ScheduledTask $task, array $subscribers) { - $subscribers = Helpers::arrayColumn($subscribers, 'id'); + $subscribers = array_column($subscribers, 'id'); Subscriber::rawExecute( 'INSERT IGNORE INTO ' . MP_SCHEDULED_TASK_SUBSCRIBERS_TABLE . ' (task_id, subscriber_id, processed) diff --git a/lib/Subscribers/ImportExport/Export/Export.php b/lib/Subscribers/ImportExport/Export/Export.php index 1419da7a14..c17b0d13f5 100644 --- a/lib/Subscribers/ImportExport/Export/Export.php +++ b/lib/Subscribers/ImportExport/Export/Export.php @@ -31,12 +31,12 @@ class Export { } $this->default_subscribers_getter = new DefaultSubscribersGetter( - $data['segments'], + $data['segments'], self::SUBSCRIBER_BATCH_SIZE ); $this->dynamic_subscribers_getter = new DynamicSubscribersGetter( - $data['segments'], + $data['segments'], self::SUBSCRIBER_BATCH_SIZE ); @@ -192,7 +192,7 @@ class Export { } function getSubscriberCustomFields() { - return Helpers::arrayColumn( + return array_column( CustomField::findArray(), 'name', 'id' diff --git a/lib/Subscribers/ImportExport/Import/Import.php b/lib/Subscribers/ImportExport/Import/Import.php index 1e710802af..afa3d3ae48 100644 --- a/lib/Subscribers/ImportExport/Import/Import.php +++ b/lib/Subscribers/ImportExport/Import/Import.php @@ -194,7 +194,7 @@ class Import { function transformSubscribersData($subscribers, $columns) { foreach($columns as $column => $data) { - $transformed_subscribers[$column] = Helpers::arrayColumn($subscribers, $data['index']); + $transformed_subscribers[$column] = array_column($subscribers, $data['index']); } return $transformed_subscribers; } @@ -223,7 +223,7 @@ class Import { ); } // extract WP users ids into a simple indexed array: [wp_user_id_1, wp_user_id_2, ...] - $wp_users = array_filter(Helpers::arrayColumn($temp_existing_subscribers, 'wp_user_id')); + $wp_users = array_filter(array_column($temp_existing_subscribers, 'wp_user_id')); // create a new two-dimensional associative array with existing subscribers ($existing_subscribers) // and reduce $subscribers_data to only new subscribers by removing existing subscribers $subscribers_emails = array_flip($subscribers_data['email']); @@ -353,7 +353,7 @@ class Import { ); } if(empty($created_or_updated_subscribers)) return null; - $created_or_updated_subscribers_ids = Helpers::arrayColumn($created_or_updated_subscribers, 'id'); + $created_or_updated_subscribers_ids = array_column($created_or_updated_subscribers, 'id'); if($subscribers_custom_fields) { $this->createOrUpdateCustomFields( $action, diff --git a/lib/Subscription/Pages.php b/lib/Subscription/Pages.php index 91b8926d47..7a7a86e961 100644 --- a/lib/Subscription/Pages.php +++ b/lib/Subscription/Pages.php @@ -80,7 +80,7 @@ class Pages { if($subsciber_segments) { Scheduler::scheduleSubscriberWelcomeNotification( $this->subscriber->id, - Helpers::arrayColumn($subsciber_segments, 'id') + array_column($subsciber_segments, 'id') ); } diff --git a/lib/Tasks/Sending.php b/lib/Tasks/Sending.php index 632267d9f6..7788de4caa 100644 --- a/lib/Tasks/Sending.php +++ b/lib/Tasks/Sending.php @@ -143,7 +143,7 @@ class Sending { $subscribers->where('processed', $status); } $subscribers = $subscribers->findArray(); - return Helpers::arrayColumn($subscribers, 'subscriber_id'); + return array_column($subscribers, 'subscriber_id'); } public function setSubscribers(array $subscriber_ids) { diff --git a/lib/Tasks/Subscribers/BatchIterator.php b/lib/Tasks/Subscribers/BatchIterator.php index 7e238b576e..a27dafcbb2 100644 --- a/lib/Tasks/Subscribers/BatchIterator.php +++ b/lib/Tasks/Subscribers/BatchIterator.php @@ -31,7 +31,7 @@ class BatchIterator implements \Iterator, \Countable { ->orderByAsc('subscriber_id') ->limit($this->batch_size) ->findArray(); - $subscribers = Helpers::arrayColumn($subscribers, 'subscriber_id'); + $subscribers = array_column($subscribers, 'subscriber_id'); $this->batch_last_id = end($subscribers); return $subscribers; } diff --git a/lib/Util/Helpers.php b/lib/Util/Helpers.php index 1f0dd0de07..7716ca643d 100644 --- a/lib/Util/Helpers.php +++ b/lib/Util/Helpers.php @@ -57,79 +57,6 @@ class Helpers { return $flattened_array; } - /* - * Using func_get_args() in order to check for proper number ofparameters and trigger errors exactly as the built-in array_column() - * does in PHP 5.5. - * @author Ben Ramsey (http://benramsey.com) - */ - static function arrayColumn($input = null, $columnKey = null, $indexKey = null) { - $argc = func_num_args(); - $params = func_get_args(); - if($argc < 2) { - trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING); - return null; - } - if(!is_array($params[0])) { - trigger_error( - 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given', - E_USER_WARNING - ); - return null; - } - if(!is_int($params[1]) - && !is_float($params[1]) - && !is_string($params[1]) - && $params[1] !== null - && !(is_object($params[1]) && method_exists($params[1], '__toString')) - ) { - trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING); - return false; - } - if(isset($params[2]) - && !is_int($params[2]) - && !is_float($params[2]) - && !is_string($params[2]) - && !(is_object($params[2]) && method_exists($params[2], '__toString')) - ) { - trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING); - return false; - } - $paramsInput = $params[0]; - $paramsColumnKey = ($params[1] !== null) ? (string)$params[1] : null; - $paramsIndexKey = null; - if(isset($params[2])) { - if(is_float($params[2]) || is_int($params[2])) { - $paramsIndexKey = (int)$params[2]; - } else { - $paramsIndexKey = (string)$params[2]; - } - } - $resultArray = array(); - foreach($paramsInput as $row) { - $key = $value = null; - $keySet = $valueSet = false; - if($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) { - $keySet = true; - $key = (string)$row[$paramsIndexKey]; - } - if($paramsColumnKey === null) { - $valueSet = true; - $value = $row; - } elseif(is_array($row) && array_key_exists($paramsColumnKey, $row)) { - $valueSet = true; - $value = $row[$paramsColumnKey]; - } - if($valueSet) { - if($keySet) { - $resultArray[$key] = $value; - } else { - $resultArray[] = $value; - } - } - } - return $resultArray; - } - static function underscoreToCamelCase($str, $capitalise_first_char = false) { if($capitalise_first_char) { $str[0] = strtoupper($str[0]); diff --git a/tests/unit/Cron/Workers/BounceTest.php b/tests/unit/Cron/Workers/BounceTest.php index 322e59fc97..aeb433e359 100644 --- a/tests/unit/Cron/Workers/BounceTest.php +++ b/tests/unit/Cron/Workers/BounceTest.php @@ -86,7 +86,7 @@ class BounceTest extends \MailPoetTest { function testItSetsSubscriberStatusAsBounced() { $emails = Subscriber::select('email')->findArray(); - $emails = Helpers::arrayColumn($emails, 'email'); + $emails = array_column($emails, 'email'); $this->worker->processEmails($emails); diff --git a/tests/unit/Subscribers/ImportExport/Import/ImportTest.php b/tests/unit/Subscribers/ImportExport/Import/ImportTest.php index dc1074086e..d2b99bb143 100644 --- a/tests/unit/Subscribers/ImportExport/Import/ImportTest.php +++ b/tests/unit/Subscribers/ImportExport/Import/ImportTest.php @@ -289,7 +289,7 @@ class ImportTest extends \MailPoetTest { 'create', $subscribers_data ); - $db_subscribers = Helpers::arrayColumn( + $db_subscribers = array_column( Subscriber::select('id') ->findArray(), 'id' @@ -354,7 +354,7 @@ class ImportTest extends \MailPoetTest { $subscribers_data, $this->subscribers_fields ); - $db_subscribers = Helpers::arrayColumn( + $db_subscribers = array_column( Subscriber::select('id') ->findArray(), 'id' @@ -467,7 +467,7 @@ class ImportTest extends \MailPoetTest { $this->import->updated_at = date('Y-m-d H:i:s', $timestamp + 1); $result = $this->import->process(); expect($result['created'])->equals(1); - $db_subscribers = Helpers::arrayColumn( + $db_subscribers = array_column( Subscriber::select('id')->findArray(), 'id' );