From 0959978f346b55281006a9969dbacbcdebfffa8b Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:17:27 -0600 Subject: [PATCH 1/6] [PHP 7.2] Renamed the "Object" class to "MindsObject". PHP 7.2 made `object` a keyword, thus not allowing classes to be named as such. --- Entities/Album.php | 2 +- Entities/Batch.php | 2 +- Entities/DenormalizedEntity.php | 2 +- Entities/{Object.php => MindsObject.php} | 2 +- Entities/Object/Carousel.php | 2 +- Entities/Object/Points_transaction.php | 2 +- Entities/Video.php | 2 +- Spec/Core/Security/ACLSpec.php | 8 ++++---- 8 files changed, 11 insertions(+), 11 deletions(-) rename Entities/{Object.php => MindsObject.php} (98%) diff --git a/Entities/Album.php b/Entities/Album.php index a3b66147ac..6eeb23bf21 100644 --- a/Entities/Album.php +++ b/Entities/Album.php @@ -10,7 +10,7 @@ use Minds\Core; use Minds\Core\Data; -class Album extends Object +class Album extends MindsObject { protected function initializeAttributes() { diff --git a/Entities/Batch.php b/Entities/Batch.php index 5c46ab8f75..2bd4f24093 100644 --- a/Entities/Batch.php +++ b/Entities/Batch.php @@ -8,7 +8,7 @@ use Minds\Core\Data; -class Batch extends Object +class Batch extends MindsObject { public function __construct($guid = null) { diff --git a/Entities/DenormalizedEntity.php b/Entities/DenormalizedEntity.php index 443fff345f..efc08c0a1d 100644 --- a/Entities/DenormalizedEntity.php +++ b/Entities/DenormalizedEntity.php @@ -26,7 +26,7 @@ public function __construct($db = null) /** * Set this entity's database store - * @param object $db + * @param MindsObject $db */ public function setDb($db) { diff --git a/Entities/Object.php b/Entities/MindsObject.php similarity index 98% rename from Entities/Object.php rename to Entities/MindsObject.php index a1d617a430..fafa8ccdef 100644 --- a/Entities/Object.php +++ b/Entities/MindsObject.php @@ -8,7 +8,7 @@ * Object Entity * @todo Do not inherit from ElggObject */ -class Object extends \ElggObject implements Flaggable +class MindsObject extends \ElggObject implements Flaggable { protected $dirtyIndexes; diff --git a/Entities/Object/Carousel.php b/Entities/Object/Carousel.php index 19651dc261..cf697f422e 100644 --- a/Entities/Object/Carousel.php +++ b/Entities/Object/Carousel.php @@ -6,7 +6,7 @@ /** * Carousel Entity */ -class Carousel extends Entities\Object +class Carousel extends Entities\MindsObject { /** * Initialize entity attributes diff --git a/Entities/Object/Points_transaction.php b/Entities/Object/Points_transaction.php index b8ee88bbf9..2fbfb68e03 100644 --- a/Entities/Object/Points_transaction.php +++ b/Entities/Object/Points_transaction.php @@ -6,7 +6,7 @@ /** * Points Transaction Entity */ -class Points_transaction extends Entities\Object +class Points_transaction extends Entities\MindsObject { /** * Initialize attributes diff --git a/Entities/Video.php b/Entities/Video.php index 27835dcadd..dc56972af0 100644 --- a/Entities/Video.php +++ b/Entities/Video.php @@ -12,7 +12,7 @@ use Minds\Helpers; -class Video extends Object +class Video extends MindsObject { private $cinemr; diff --git a/Spec/Core/Security/ACLSpec.php b/Spec/Core/Security/ACLSpec.php index 65baf0f5d9..fdb8a8d937 100644 --- a/Spec/Core/Security/ACLSpec.php +++ b/Spec/Core/Security/ACLSpec.php @@ -7,7 +7,7 @@ use Minds\Core; use Minds\Entities\User; use Minds\Entities\Entity; -use Minds\Entities\Object; +use Minds\Entities\MindsObject; class ACLSpec extends ObjectBehavior { @@ -49,7 +49,7 @@ public function it_should_not_allow_read_of_private_entities(Entity $entity) $this->read($entity)->shouldReturn(false); } - public function it_should_trigger_acl_read_event(Object $entity) + public function it_should_trigger_acl_read_event(MindsObject $entity) { $this->mock_session(true); @@ -85,7 +85,7 @@ public function it_should_allow_write_for_own_entities(Entity $entity) $this->mock_session(false); } - public function it_should_trigger_acl_write_event(Object $entity) + public function it_should_trigger_acl_write_event(MindsObject $entity) { $this->mock_session(true); @@ -126,7 +126,7 @@ public function it_should_allow_interaction(Entity $entity) $this->mock_session(false); } - public function it_should_return_false_on_acl_interact_event(Object $entity) + public function it_should_return_false_on_acl_interact_event(MindsObject $entity) { $this->mock_session(true); From 7209239ca28ad679375519d81da10ec479e2b7ad Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:21:05 -0600 Subject: [PATCH 2/6] [PHP 7.2] All count() calls must be to arrays or Countable classes. Note: There is a bug in Email/Manager which this migration made visible. --- Core/Email/Batches/Notifications.php | 8 +++++++- Core/Email/Manager.php | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Core/Email/Batches/Notifications.php b/Core/Email/Batches/Notifications.php index 969389a3c4..dfb8d730d5 100644 --- a/Core/Email/Batches/Notifications.php +++ b/Core/Email/Batches/Notifications.php @@ -50,6 +50,7 @@ public function run() /** @var Notification[] $notifications */ $notifications = $this->repository->getAll(['limit' => $count])['notifications']; } catch (\Exception $e) { + error_log($e->getMessage()); continue; } @@ -58,6 +59,11 @@ public function run() $i = 0; + // Needed for PHP 7.2 compatibility with the new `count`. + if (!$notifications) { + $notifications = []; + } + //count all notifications created today while ($i < count($notifications) && $today <= $notifications[$i]->getTimeCreated()) { $i++; @@ -73,4 +79,4 @@ public function run() } } } -} \ No newline at end of file +} diff --git a/Core/Email/Manager.php b/Core/Email/Manager.php index 5447cf9bf1..8634eb77b9 100644 --- a/Core/Email/Manager.php +++ b/Core/Email/Manager.php @@ -5,7 +5,6 @@ use Minds\Core\Di\Di; -use Minds\Core\Email\EmailSubscription; use Minds\Core\Entities; class Manager @@ -30,10 +29,16 @@ public function getSubscribers($options = []) $result = $this->repository->getList($options); - if (!$result || count($result['data'] === 0)) { + // @FIXME: Due to a quirk in PHP < 7.2.0, count($array === 0) always returns true. + // @FIXME: This blows up, as it should, in PHP >= 7.2.0. + // @FIXME: Since this code was -always- returning true, it needs to be fixed. + // Orig: if (!$result || count($result['data'] === 0) { + if (!$result || true /** @FIXME!~! */) { return []; } + // @FIXME: Due to the function always exiting before this point, no one caught + // @FIXME: that this array_map blows up trying to call a method on a string. $guids = array_map(function ($item) { return $item->getUserGuid(); }, $result['data']); From 55def7980765f88d2b38a829782c201eea4b1bfe Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:22:36 -0600 Subject: [PATCH 3/6] [PHP 7.2] Migrated each() to foreach(). The each() function will be removed in December with the release of PHP 7.3. --- Spec/Mocks/Cassandra/Rows.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spec/Mocks/Cassandra/Rows.php b/Spec/Mocks/Cassandra/Rows.php index d1f961c041..a955a3a417 100644 --- a/Spec/Mocks/Cassandra/Rows.php +++ b/Spec/Mocks/Cassandra/Rows.php @@ -17,8 +17,8 @@ public function __construct(array $items, $pagingStateToken) public function getIterator() { return call_user_func(function () { - while (list($key, $val) = each($this->_items)) { - yield $key => $val; + foreach ($this->_items as $key => $value) { + yield $key => $value; } }); } From 6edbc1621e76ecfbe9ccb9d9e6609a56c777a8e6 Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:24:34 -0600 Subject: [PATCH 4/6] [PHP 7.2] Enforced the strict method parameters. Prior to PHP 7.2.0, PHP merely ignored method signature discrepancies. But now, they are Fatal Errors, as they should be. Efforts at backward-compatibility were made, thus the `$unused` parameters. --- Core/SEO/Sitemaps/Manager.php | 2 +- Entities/Activity.php | 5 ++++- Entities/Image.php | 8 ++++++-- Entities/Video.php | 7 +++++-- classes/ElggFile.php | 9 ++++++--- classes/ElggSite.php | 12 +++++++++--- classes/ElggUser.php | 13 +++++++++---- 7 files changed, 40 insertions(+), 16 deletions(-) diff --git a/Core/SEO/Sitemaps/Manager.php b/Core/SEO/Sitemaps/Manager.php index 601c24afbb..167f46add2 100644 --- a/Core/SEO/Sitemaps/Manager.php +++ b/Core/SEO/Sitemaps/Manager.php @@ -65,4 +65,4 @@ protected function route($uri) } return []; } -} \ No newline at end of file +} diff --git a/Entities/Activity.php b/Entities/Activity.php index 1bf4080f16..a77d4b8306 100644 --- a/Entities/Activity.php +++ b/Entities/Activity.php @@ -96,9 +96,12 @@ public function save($index = true) /** * Deletes the activity entity and indexes + * + * @param bool $unused Needed for PHP 7.2 support. * @return bool + * @throws \Minds\Exceptions\StopEventException */ - public function delete() + public function delete($unused = true) { if ($this->p2p_boosted) { return false; diff --git a/Entities/Image.php b/Entities/Image.php index e9363d7bc9..237e47078d 100644 --- a/Entities/Image.php +++ b/Entities/Image.php @@ -69,10 +69,14 @@ public function save($index = true) /** * Extend the default delete function to remove from the remote service + * + * @param bool $recursive Whether to delete all the entities contained by this entity + * @return bool + * @throws \ClassNotFoundException */ - public function delete() + public function delete($recursive = true) { - return parent::delete(); + return parent::delete($recursive); //remove from the filestore } diff --git a/Entities/Video.php b/Entities/Video.php index dc56972af0..bb49b2e8e8 100644 --- a/Entities/Video.php +++ b/Entities/Video.php @@ -97,10 +97,13 @@ public function save($force = false) /** * Extend the default delete function to remove from the remote service + * + * @param bool $recursive Whether to delete all the entities contained by this entity + * @return bool */ - public function delete() + public function delete($recursive = true) { - $result = parent::delete(); + $result = parent::delete($recursive); return $result; } diff --git a/classes/ElggFile.php b/classes/ElggFile.php index 93c1b98b9d..72b34c53c8 100644 --- a/classes/ElggFile.php +++ b/classes/ElggFile.php @@ -271,12 +271,15 @@ public function close() { /** * Delete this file. * + * @param bool $recursive Whether to delete all the entities contained by this entity + * * @return bool - */ - public function delete() { + * @throws ClassNotFoundException + */ + public function delete($recursive = true) { $fs = $this->getFilestore(); //if ($fs->delete($this)) { - return parent::delete(); + return parent::delete($recursive); //} } diff --git a/classes/ElggSite.php b/classes/ElggSite.php index 1bf8bdd509..31ae7676ba 100644 --- a/classes/ElggSite.php +++ b/classes/ElggSite.php @@ -122,7 +122,12 @@ protected function load($guid) { return true; } - public function save(){ + /** + * @param bool $unused Needed for PHP 7.2 support. + * @return bool + * @throws IOException + */ + public function save($unused = true){ global $CONFIG; if(isset($CONFIG->site_name)){ return; //the site is not an entitiy, it is static from settings @@ -136,16 +141,17 @@ public function save(){ * * @note You cannot delete the current site. * + * @param bool $recursive Whether to delete all the entities contained by this entity * @return bool * @throws SecurityException */ - public function delete() { + public function delete($recursive = true) { global $CONFIG; if ($CONFIG->site->getGUID() == $this->guid) { throw new SecurityException('SecurityException:deletedisablecurrentsite'); } - return parent::delete(); + return parent::delete($recursive); } /** diff --git a/classes/ElggUser.php b/classes/ElggUser.php index 804820ce24..4f8e25e034 100644 --- a/classes/ElggUser.php +++ b/classes/ElggUser.php @@ -150,9 +150,12 @@ protected function loadFromLookup($string){ /** * Saves this user to the database. * - * @return bool - */ - public function save() { + * @param bool $unused Needed for PHP 7.2 support. + * @return bool + * @throws IOException + */ + public function save($unused = true) { + if(!$this->cache){ //return false; } @@ -265,9 +268,11 @@ public function disable($reason = "", $recursive = true){ /** * User specific override of the entity delete method. * + * @param bool $unused Needed for PHP 7.2 support. + * * @return bool */ - public function delete() { + public function delete($unused = true) { global $USERNAME_TO_GUID_MAP_CACHE, $CODE_TO_GUID_MAP_CACHE; // clear cache From c4f861b569b39ad185005980f517554d6a3971fa Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:28:07 -0600 Subject: [PATCH 5/6] Upgraded to Composer v1.7.3. --- composer.phar | Bin 1849094 -> 1875478 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 composer.phar diff --git a/composer.phar b/composer.phar old mode 100755 new mode 100644 index 4055d874a1a1f195c0a08966e4e0e9dbaaf0a5e0..5316de73b324be47a208ec76cb94030450d7f8a9 GIT binary patch delta 46631 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 delta 28963 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 From 418ea27db08a4797a696c5f0f5b0488fe9b4a32d Mon Sep 17 00:00:00 2001 From: "Theodore R. Smith" Date: Mon, 26 Nov 2018 21:45:18 -0600 Subject: [PATCH 6/6] [PHP 7.2] Ported Twilio/SDK v3.13.1 to PHP 7.2. So, the guys over at Twilio told me flat out that v3.13.1 of their SDK was very much EOL'd and they just wouldn't ever support PHP 7.2. They also told me that the first version to support PHP 7.2 was Twilio/SDK v6, which is a full three major versions ahead. Not knowing anything about this app's usage of Twilio, I resorted to forking Twilio and migrating v3.13.1 to PHP 7.2. By using my repo's 3.13.1-create-function-fix branch, all of the PHPSpec tests now pass! --- composer.json | 6 +++++- composer.lock | 30 ++++++++++++------------------ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/composer.json b/composer.json index d3a1a56934..cc0f3ec79b 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "stripe/stripe-php": "~4.12", "thobbs/phpcassa": "dev-minds-legacy", "tijsverkoyen/twitteroauth": "dev-master@dev", - "twilio/sdk": "3.13.*", + "twilio/sdk": "dev-3.13.1-create-function-fix", "videlalvaro/php-amqplib": "dev-master@dev", "vscn/cruftflake": "dev-master#cab1b9ee9869072e7a58a1eb593b602ec5bedcd3", "zircote/swagger-php": "2.*@dev", @@ -48,6 +48,10 @@ { "type": "vcs", "url": "https://github.com/davegardnerisme/cruftflake.git" + }, + { + "type": "git", + "url": "https://github.com/hopeseekr/twilio-php" } ], "autoload": { diff --git a/composer.lock b/composer.lock index 421c275f83..9c51a675d3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3da9199123996bc09d9556280490a86b", + "content-hash": "f793ffc01d2b9e689aa017e5e6539c88", "packages": [ { "name": "Minds/Surge", @@ -995,12 +995,12 @@ "version": "v2.2.2", "source": { "type": "git", - "url": "https://github.com/google/google-api-php-client.git", + "url": "https://github.com/googleapis/google-api-php-client.git", "reference": "4e0fd83510e579043e10e565528b323b7c2b3c81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/google-api-php-client/zipball/4e0fd83510e579043e10e565528b323b7c2b3c81", + "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/4e0fd83510e579043e10e565528b323b7c2b3c81", "reference": "4e0fd83510e579043e10e565528b323b7c2b3c81", "shasum": "" }, @@ -1054,12 +1054,12 @@ "version": "v0.69", "source": { "type": "git", - "url": "https://github.com/google/google-api-php-client-services.git", + "url": "https://github.com/googleapis/google-api-php-client-services.git", "reference": "6e2507a5bb39d970ae98cc2f1421012e7b38248f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/google-api-php-client-services/zipball/6e2507a5bb39d970ae98cc2f1421012e7b38248f", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/6e2507a5bb39d970ae98cc2f1421012e7b38248f", "reference": "6e2507a5bb39d970ae98cc2f1421012e7b38248f", "shasum": "" }, @@ -1091,12 +1091,12 @@ "version": "v1.3.3", "source": { "type": "git", - "url": "https://github.com/google/google-auth-library-php.git", + "url": "https://github.com/googleapis/google-auth-library-php.git", "reference": "af72b3f50420c801dc35cc07b1fa429ae027b847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/af72b3f50420c801dc35cc07b1fa429ae027b847", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/af72b3f50420c801dc35cc07b1fa429ae027b847", "reference": "af72b3f50420c801dc35cc07b1fa429ae027b847", "shasum": "" }, @@ -3091,17 +3091,11 @@ }, { "name": "twilio/sdk", - "version": "3.13.1", + "version": "dev-3.13.1-create-function-fix", "source": { "type": "git", - "url": "https://github.com/twilio/twilio-php.git", - "reference": "43bee3cc0956447efa1b83ee39b7a59b1b90df06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twilio/twilio-php/zipball/43bee3cc0956447efa1b83ee39b7a59b1b90df06", - "reference": "43bee3cc0956447efa1b83ee39b7a59b1b90df06", - "shasum": "" + "url": "https://github.com/hopeseekr/twilio-php", + "reference": "9408f62535209e5f2c1e88770015ee4988c14ee5" }, "require": { "php": ">=5.2.1" @@ -3116,7 +3110,6 @@ "Services_Twilio": "" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3137,7 +3130,7 @@ "sms", "twilio" ], - "time": "2015-03-31T21:34:10+00:00" + "time": "2018-11-27T03:42:24+00:00" }, { "name": "videlalvaro/php-amqplib", @@ -7071,6 +7064,7 @@ "minds/mw3": 20, "thobbs/phpcassa": 20, "tijsverkoyen/twitteroauth": 20, + "twilio/sdk": 20, "videlalvaro/php-amqplib": 20, "vscn/cruftflake": 20, "zircote/swagger-php": 20