From eae222f264c0daf0dfdbf8bb9a80970d9f25126e Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 15 Feb 2017 11:44:14 +0200 Subject: [PATCH] Update Collection classes to be based on Doctrine Collections --- composer.json | 1 + composer.lock | 182 ++++++++++++------ .../Common/Collection/AbstractCollection.php | 59 ------ .../Collection/CloneCollectionInterface.php | 15 -- .../Collection/CloneCollectionTrait.php | 29 --- .../src/Grav/Common/Collection/Collection.php | 30 +++ .../Common/Collection/CollectionInterface.php | 18 +- .../Collection/ObjectCollectionInterface.php | 13 +- .../Collection/ObjectCollectionTrait.php | 101 ++-------- .../Collection/SortingCollectionTrait.php | 84 -------- .../src/Grav/Common/Object/AbstractObject.php | 30 +++ .../Common/Object/AbstractObjectFinder.php | 16 +- .../Grav/Common/Object/ObjectCollection.php | 13 +- .../Common/Object/ObjectFinderInterface.php | 2 - .../Object/Storage/StorageInterface.php | 10 +- system/src/Grav/Common/User/Group.php | 2 +- 16 files changed, 239 insertions(+), 366 deletions(-) delete mode 100644 system/src/Grav/Common/Collection/AbstractCollection.php delete mode 100644 system/src/Grav/Common/Collection/CloneCollectionInterface.php delete mode 100644 system/src/Grav/Common/Collection/CloneCollectionTrait.php create mode 100644 system/src/Grav/Common/Collection/Collection.php delete mode 100644 system/src/Grav/Common/Collection/SortingCollectionTrait.php diff --git a/composer.json b/composer.json index 832587378..bddc05f67 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "symfony/var-dumper": "~2.8", "symfony/polyfill-iconv": "~1.0", "doctrine/cache": "~1.5", + "doctrine/collections": "^1.4", "filp/whoops": "~2.0", "matthiasmullie/minify": "^1.3", "monolog/monolog": "~1.0", diff --git a/composer.lock b/composer.lock index 5b083f85d..e248b3bcd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "4e5b9333d3ac2de823c68c9c8e0f2017", + "hash": "d71bd78770ae90cfdd59960d2829cb75", + "content-hash": "7f68c667c95b191cfd0b6eeef614dc3d", "packages": [ { "name": "antoligy/dom-string-iterators", @@ -48,7 +49,7 @@ } ], "description": "Composer package for DOMWordsIterator and DOMLettersIterator", - "time": "2015-11-04T17:33:14+00:00" + "time": "2015-11-04 17:33:14" }, { "name": "doctrine/cache", @@ -118,7 +119,74 @@ "cache", "caching" ], - "time": "2016-10-29T11:16:17+00:00" + "time": "2016-10-29 11:16:17" + }, + { + "name": "doctrine/collections", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-01-03 10:49:41" }, { "name": "donatj/phpuseragentparser", @@ -169,7 +237,7 @@ "user agent", "useragent" ], - "time": "2017-01-23T19:32:09+00:00" + "time": "2017-01-23 19:32:09" }, { "name": "erusev/parsedown", @@ -255,7 +323,7 @@ "parsedown", "parser" ], - "time": "2015-11-01T10:19:22+00:00" + "time": "2015-11-01 10:19:22" }, { "name": "filp/whoops", @@ -315,7 +383,7 @@ "whoops", "zf2" ], - "time": "2016-12-26T16:13:31+00:00" + "time": "2016-12-26 16:13:31" }, { "name": "gregwar/cache", @@ -358,7 +426,7 @@ "file-system", "system" ], - "time": "2016-09-23T08:16:04+00:00" + "time": "2016-09-23 08:16:04" }, { "name": "gregwar/image", @@ -461,7 +529,7 @@ "php", "terminal" ], - "time": "2016-04-04T20:24:59+00:00" + "time": "2016-04-04 20:24:59" }, { "name": "matthiasmullie/minify", @@ -518,7 +586,7 @@ "minifier", "minify" ], - "time": "2017-01-26T15:48:07+00:00" + "time": "2017-01-26 15:48:07" }, { "name": "matthiasmullie/path-converter", @@ -567,7 +635,7 @@ "paths", "relative" ], - "time": "2017-01-26T08:54:49+00:00" + "time": "2017-01-26 08:54:49" }, { "name": "maximebf/debugbar", @@ -628,7 +696,7 @@ "debug", "debugbar" ], - "time": "2017-01-05T08:46:19+00:00" + "time": "2017-01-05 08:46:19" }, { "name": "monolog/monolog", @@ -706,7 +774,7 @@ "logging", "psr-3" ], - "time": "2016-11-26T00:15:39+00:00" + "time": "2016-11-26 00:15:39" }, { "name": "pimple/pimple", @@ -752,7 +820,7 @@ "container", "dependency injection" ], - "time": "2015-09-11T15:10:35+00:00" + "time": "2015-09-11 15:10:35" }, { "name": "psr/log", @@ -799,7 +867,7 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2016-10-10 12:19:37" }, { "name": "rockettheme/toolbox", @@ -847,7 +915,7 @@ "php", "rockettheme" ], - "time": "2016-10-06T18:02:45+00:00" + "time": "2016-10-06 18:02:45" }, { "name": "seld/cli-prompt", @@ -895,7 +963,7 @@ "input", "prompt" ], - "time": "2016-04-18T09:31:41+00:00" + "time": "2016-04-18 09:31:41" }, { "name": "symfony/console", @@ -956,7 +1024,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-02-06T12:04:06+00:00" + "time": "2017-02-06 12:04:06" }, { "name": "symfony/debug", @@ -1013,7 +1081,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-07-30T07:22:48+00:00" + "time": "2016-07-30 07:22:48" }, { "name": "symfony/event-dispatcher", @@ -1073,7 +1141,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:30:24+00:00" + "time": "2017-01-02 20:30:24" }, { "name": "symfony/polyfill-iconv", @@ -1132,7 +1200,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-mbstring", @@ -1191,7 +1259,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/var-dumper", @@ -1254,7 +1322,7 @@ "debug", "dump" ], - "time": "2017-01-24T13:02:12+00:00" + "time": "2017-01-24 13:02:12" }, { "name": "symfony/yaml", @@ -1303,7 +1371,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-01-21T16:40:50+00:00" + "time": "2017-01-21 16:40:50" }, { "name": "twig/twig", @@ -1364,7 +1432,7 @@ "keywords": [ "templating" ], - "time": "2017-01-11T19:36:15+00:00" + "time": "2017-01-11 19:36:15" } ], "packages-dev": [ @@ -1425,7 +1493,7 @@ "gherkin", "parser" ], - "time": "2016-10-30T11:50:56+00:00" + "time": "2016-10-30 11:50:56" }, { "name": "codeception/codeception", @@ -1517,7 +1585,7 @@ "functional testing", "unit testing" ], - "time": "2017-02-04T02:04:21+00:00" + "time": "2017-02-04 02:04:21" }, { "name": "doctrine/instantiator", @@ -1571,7 +1639,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2015-06-14 21:17:01" }, { "name": "facebook/webdriver", @@ -1620,7 +1688,7 @@ "selenium", "webdriver" ], - "time": "2017-01-13T15:48:08+00:00" + "time": "2017-01-13 15:48:08" }, { "name": "fzaninotto/faker", @@ -1668,7 +1736,7 @@ "faker", "fixtures" ], - "time": "2016-04-29T12:21:54+00:00" + "time": "2016-04-29 12:21:54" }, { "name": "guzzlehttp/guzzle", @@ -1730,7 +1798,7 @@ "rest", "web service" ], - "time": "2016-10-08T15:01:37+00:00" + "time": "2016-10-08 15:01:37" }, { "name": "guzzlehttp/promises", @@ -1781,7 +1849,7 @@ "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "time": "2016-12-20 10:07:11" }, { "name": "guzzlehttp/psr7", @@ -1839,7 +1907,7 @@ "stream", "uri" ], - "time": "2016-06-24T23:00:38+00:00" + "time": "2016-06-24 23:00:38" }, { "name": "phpdocumentor/reflection-common", @@ -1893,7 +1961,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2015-12-27 11:43:31" }, { "name": "phpdocumentor/reflection-docblock", @@ -1938,7 +2006,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "time": "2016-09-30 07:12:33" }, { "name": "phpdocumentor/type-resolver", @@ -1985,7 +2053,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2016-11-25 06:54:22" }, { "name": "phpspec/prophecy", @@ -2048,7 +2116,7 @@ "spy", "stub" ], - "time": "2016-11-21T14:58:47+00:00" + "time": "2016-11-21 14:58:47" }, { "name": "phpunit/php-code-coverage", @@ -2110,7 +2178,7 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2015-10-06 15:47:00" }, { "name": "phpunit/php-file-iterator", @@ -2157,7 +2225,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2016-10-03 07:40:28" }, { "name": "phpunit/php-text-template", @@ -2198,7 +2266,7 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", @@ -2242,7 +2310,7 @@ "keywords": [ "timer" ], - "time": "2016-05-12T18:03:57+00:00" + "time": "2016-05-12 18:03:57" }, { "name": "phpunit/php-token-stream", @@ -2291,7 +2359,7 @@ "keywords": [ "tokenizer" ], - "time": "2016-11-15T14:06:22+00:00" + "time": "2016-11-15 14:06:22" }, { "name": "phpunit/phpunit", @@ -2363,7 +2431,7 @@ "testing", "xunit" ], - "time": "2017-02-06T05:18:07+00:00" + "time": "2017-02-06 05:18:07" }, { "name": "phpunit/phpunit-mock-objects", @@ -2419,7 +2487,7 @@ "mock", "xunit" ], - "time": "2015-10-02T06:51:40+00:00" + "time": "2015-10-02 06:51:40" }, { "name": "psr/http-message", @@ -2469,7 +2537,7 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2016-08-06 14:39:51" }, { "name": "sebastian/comparator", @@ -2533,7 +2601,7 @@ "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2017-01-29 09:50:25" }, { "name": "sebastian/diff", @@ -2585,7 +2653,7 @@ "keywords": [ "diff" ], - "time": "2015-12-08T07:14:41+00:00" + "time": "2015-12-08 07:14:41" }, { "name": "sebastian/environment", @@ -2635,7 +2703,7 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2016-08-18 05:49:44" }, { "name": "sebastian/exporter", @@ -2702,7 +2770,7 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2016-06-17 09:04:28" }, { "name": "sebastian/global-state", @@ -2753,7 +2821,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2015-10-12 03:26:01" }, { "name": "sebastian/recursion-context", @@ -2806,7 +2874,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11T19:50:13+00:00" + "time": "2015-11-11 19:50:13" }, { "name": "sebastian/version", @@ -2841,7 +2909,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "time": "2015-06-21 13:59:46" }, { "name": "symfony/browser-kit", @@ -2898,7 +2966,7 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2017-01-31T21:49:23+00:00" + "time": "2017-01-31 21:49:23" }, { "name": "symfony/css-selector", @@ -2951,7 +3019,7 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:32:22+00:00" + "time": "2017-01-02 20:32:22" }, { "name": "symfony/dom-crawler", @@ -3007,7 +3075,7 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-01-21T17:14:11+00:00" + "time": "2017-01-21 17:14:11" }, { "name": "symfony/finder", @@ -3056,7 +3124,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:32:22+00:00" + "time": "2017-01-02 20:32:22" }, { "name": "symfony/process", @@ -3105,7 +3173,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-02-03T12:11:38+00:00" + "time": "2017-02-03 12:11:38" }, { "name": "webmozart/assert", @@ -3155,7 +3223,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2016-11-23 20:04:58" } ], "aliases": [ diff --git a/system/src/Grav/Common/Collection/AbstractCollection.php b/system/src/Grav/Common/Collection/AbstractCollection.php deleted file mode 100644 index 03add33e0..000000000 --- a/system/src/Grav/Common/Collection/AbstractCollection.php +++ /dev/null @@ -1,59 +0,0 @@ -items = $variables['items']; - - return $instance; - } - - /** - * Add item to the list. - * - * @param mixed $item - * @param string $key - * @return $this - */ - public function add($item, $key = null) - { - $this->offsetSet($key, $item); - - return $this; - } - - /** - * Remove item from the list. - * - * @param $key - */ - public function remove($key) - { - $this->offsetUnset($key); - } - - /** - * @return \ArrayIterator - */ - public function getIterator() - { - return new \ArrayIterator($this->items); - } -} diff --git a/system/src/Grav/Common/Collection/CloneCollectionInterface.php b/system/src/Grav/Common/Collection/CloneCollectionInterface.php deleted file mode 100644 index b29c2951d..000000000 --- a/system/src/Grav/Common/Collection/CloneCollectionInterface.php +++ /dev/null @@ -1,15 +0,0 @@ - $value) { - if (is_object($value)) { - $this->offsetSet($key, clone $value); - } - } - } - - /** - * - * Create a clone from this collection. - * - * @return static - */ - public function getClone() - { - return clone $this; - } -} diff --git a/system/src/Grav/Common/Collection/Collection.php b/system/src/Grav/Common/Collection/Collection.php new file mode 100644 index 000000000..0cc6e0a8a --- /dev/null +++ b/system/src/Grav/Common/Collection/Collection.php @@ -0,0 +1,30 @@ +createFrom(array_reverse($this->toArray())); + } + + /** + * Shuffle items. + * + * @return static + */ + public function shuffle() + { + $keys = $this->getKeys(); + shuffle($keys); + + return $this->createFrom(array_replace(array_flip($keys), $this->toArray())); + } +} diff --git a/system/src/Grav/Common/Collection/CollectionInterface.php b/system/src/Grav/Common/Collection/CollectionInterface.php index 25fea590a..85da4d8ac 100644 --- a/system/src/Grav/Common/Collection/CollectionInterface.php +++ b/system/src/Grav/Common/Collection/CollectionInterface.php @@ -1,21 +1,21 @@ getObjectKey($object); - $this->offsetSet(is_null($objKey) ? $key : $objKey, $object); - - return $this; - } - - /** - * Remove item from the list. - * - * @param string|object $key - * @return $this - */ - public function remove($key) - { - if (is_object($key)) { - $key = $this->getObjectKey($key); - if (is_null($key)) { - return $this; - } + $list = []; + foreach ($this as $key => $value) { + $list[$key] = is_object($value) ? clone $value : $value; } - $this->offsetUnset($key); - return $this; + return $this->createFrom($list); } /** * @param string $property Object property to be fetched. - * @return array Values of the property. + * @return array Key/Value pairs of the properties. */ - public function get($property) + public function getProperty($property) { $list = []; - foreach ($this as $id => $object) { - $key = $this->getObjectKey($object); - $list[is_null($key) ? $id : $key] = $this->getObjectValue($object, $property); + foreach ($this as $id => $element) { + $list[$id] = isset($element->{$property}) ? $element->{$property} : null; } return $list; @@ -65,63 +36,27 @@ trait ObjectCollectionTrait /** * @param string $property Object property to be updated. * @param string $value New value. - * @return $this */ - public function set($property, $value) + public function setProperty($property, $value) { - foreach ($this as $object) { - $object->{$property} = $value; + foreach ($this as $element) { + $element->{$property} = $value; } - - return $this; } /** - * @param string $name Method name. + * @param string $method Method name. * @param array $arguments List of arguments passed to the function. * @return array Return values. */ - public function __call($name, array $arguments) + public function call($method, array $arguments) { $list = []; - foreach ($this as $id => $object) { - $key = $this->getObjectKey($object); - $list[is_null($key) ? $id : $key] = $this->getObjectCallResult($object, $name, $arguments); + foreach ($this as $id => $element) { + $list[$id] = method_exists($element, $method) ? call_user_func_array([$element, $method], $arguments) : null; } return $list; } - - /** - * @param object $object - * @return string|null - */ - protected function getObjectKey($object) - { - $keyProperty = $this->keyProperty; - - return $keyProperty && isset($object->{$keyProperty}) ? (string) $object->{$keyProperty} : null; - } - - /** - * @param object $object - * @param string $property - * @return mixed - */ - protected function getObjectValue($object, $property) - { - return isset($object->{$property}) ? $object->{$property} : null; - } - - /** - * @param object $object - * @param string $name; - * @param array $arguments - * @return mixed - */ - protected function getObjectCallResult($object, $name, $arguments) - { - return method_exists($object, $name) ? call_user_func_array([$object, $name], $arguments) : null; - } } diff --git a/system/src/Grav/Common/Collection/SortingCollectionTrait.php b/system/src/Grav/Common/Collection/SortingCollectionTrait.php deleted file mode 100644 index 9a3fdfd8f..000000000 --- a/system/src/Grav/Common/Collection/SortingCollectionTrait.php +++ /dev/null @@ -1,84 +0,0 @@ -items = array_reverse($this->items); - - return $this; - } - - /** - * Shuffle items. - * - * @return $this - */ - public function shuffle() - { - $keys = array_keys($this->items); - shuffle($keys); - - $this->items = array_replace(array_flip($keys), $this->items); - - return $this; - } - - /** - * Sort collection by values using a user-defined comparison function. - * - * @param callable $callback - * @return $this - */ - public function sort(callable $callback) - { - uasort($this->items, $callback); - - return $this; - } - /** - * Sort collection by keys. - * - * @return $this - */ - public function ksort($sort_flags = SORT_REGULAR) - { - ksort($this->items, $sort_flags); - - return $this; - } - - - /** - * Sort collection by keys in reverse order. - * - * @return $this - */ - public function krsort($sort_flags = SORT_REGULAR) - { - krsort($this->items, $sort_flags); - - return $this; - } - - /** - * Sort collection by keys using a user-defined comparison function. - * - * @return $this - */ - public function uksort(callable $key_compare_func) - { - uksort($this->items, $key_compare_func); - - return $this; - }} diff --git a/system/src/Grav/Common/Object/AbstractObject.php b/system/src/Grav/Common/Object/AbstractObject.php index 6b80201b1..781551b4d 100644 --- a/system/src/Grav/Common/Object/AbstractObject.php +++ b/system/src/Grav/Common/Object/AbstractObject.php @@ -26,6 +26,12 @@ abstract class AbstractObject implements ObjectInterface */ static protected $storage; + /** + * If you don't have global storage, override this in extending class. + * @var ObjectFinderInterface + */ + static protected $finder; + /** * Default properties for the object. * @var array @@ -61,6 +67,22 @@ abstract class AbstractObject implements ObjectInterface protected $initialized = false; + /** + * @param StorageInterface $storage + */ + static public function setStorage(StorageInterface $storage) + { + static::$storage = $storage; + } + + /** + * @param ObjectFinderInterface $finder + */ + static public function setFinder(ObjectFinderInterface $finder) + { + static::$finder = $finder; + } + /** * Returns the global instance to the object. * @@ -148,6 +170,14 @@ abstract class AbstractObject implements ObjectInterface return new $collectionClass($results); } + /** + * @return ObjectFinderInterface + */ + static public function search() + { + return static::$finder; + } + /** * Removes all or selected instances from the object cache. * diff --git a/system/src/Grav/Common/Object/AbstractObjectFinder.php b/system/src/Grav/Common/Object/AbstractObjectFinder.php index 91d891da7..9c93f12c0 100644 --- a/system/src/Grav/Common/Object/AbstractObjectFinder.php +++ b/system/src/Grav/Common/Object/AbstractObjectFinder.php @@ -90,8 +90,6 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface /** * Set limit to the query. * - * If this function isn't used, RokClub will use threads per page configuration setting. - * * @param int $limit * * @return $this @@ -130,7 +128,7 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface } if ($direction) { - $this->query[] = ['order', $field, (int)$direction]; + $this->query['order'][] = [$field, (int)$direction]; } return $this; @@ -160,17 +158,17 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface case '<': case '<=': $this->checkOperator($value); - $this->query[] = ['where', $field, $operation, $value]; + $this->query['where'][] = [$field, $operation, $value]; break; case '==': case '!=': $this->checkEqOperator($value); - $this->query[] = ['where', $field, $operation, $value]; + $this->query['where'][] = [$field, $operation, $value]; break; case 'BETWEEN': case 'NOT BETWEEN': $this->checkBetweenOperator($value); - $this->query[] = ['where', $field, $operation, array_values($value)]; + $this->query['where'][] = [$field, $operation, array_values($value)]; break; case 'IN': if (is_null($value) || (is_array($value) && empty($value))) { @@ -178,7 +176,7 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface $this->skip = true; } else { $this->checkInOperator($value); - $this->query[] = ['where', $field, $operation, array_values((array)$value)]; + $this->query['where'][] = [$field, $operation, array_values((array)$value)]; } break; case 'NOT IN': @@ -186,7 +184,7 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface // NOT IN (nothing): optimized away. } else { $this->checkInOperator($value); - $this->query[] = ['where', $field, $operation, array_values((array)$value)]; + $this->query['where'][] = [$field, $operation, array_values((array)$value)]; } break; default: @@ -216,7 +214,7 @@ abstract class AbstractObjectFinder implements ObjectFinderInterface $this->start($start)->limit($limit); $this->prepare(); - $results = (array) $this->storage->find($this->query); + $results = (array) $this->storage->find($this->query, $this->start, $this->limit); $this->query = $query; diff --git a/system/src/Grav/Common/Object/ObjectCollection.php b/system/src/Grav/Common/Object/ObjectCollection.php index e9a7df3b3..c6d29176d 100644 --- a/system/src/Grav/Common/Object/ObjectCollection.php +++ b/system/src/Grav/Common/Object/ObjectCollection.php @@ -1,20 +1,11 @@ items = $items; - } } diff --git a/system/src/Grav/Common/Object/ObjectFinderInterface.php b/system/src/Grav/Common/Object/ObjectFinderInterface.php index a518fbfcb..9bcf267fd 100644 --- a/system/src/Grav/Common/Object/ObjectFinderInterface.php +++ b/system/src/Grav/Common/Object/ObjectFinderInterface.php @@ -30,8 +30,6 @@ interface ObjectFinderInterface /** * Set limit to the query. * - * If this function isn't used, RokClub will use threads per page configuration setting. - * * @param int $limit * * @return $this diff --git a/system/src/Grav/Common/Object/Storage/StorageInterface.php b/system/src/Grav/Common/Object/Storage/StorageInterface.php index d617321bc..f1889f8f7 100644 --- a/system/src/Grav/Common/Object/Storage/StorageInterface.php +++ b/system/src/Grav/Common/Object/Storage/StorageInterface.php @@ -13,7 +13,7 @@ interface StorageInterface /** * @param AbstractObject $object - * @return string|int Id + * @return string Id */ public function save(AbstractObject $object); @@ -24,7 +24,7 @@ interface StorageInterface public function delete(AbstractObject $object); /** - * @param array|int[]|string[] $list + * @param array|string[] $list * @return array */ public function loadList(array $list); @@ -37,7 +37,9 @@ interface StorageInterface /** * @param array $query - * @return array|int[]|string[] + * @param int $start + * @param int $limit + * @return array|string[] */ - public function find(array $query); + public function find(array $query, $start, $limit); } diff --git a/system/src/Grav/Common/User/Group.php b/system/src/Grav/Common/User/Group.php index 2a29340db..5ef45a018 100644 --- a/system/src/Grav/Common/User/Group.php +++ b/system/src/Grav/Common/User/Group.php @@ -33,7 +33,7 @@ class Group extends Data * * @param string $groupname * - * @return object + * @return bool */ public static function groupExists($groupname) {