From 48daa025daf424765a8e493a18f4fa4380a5b566 Mon Sep 17 00:00:00 2001 From: pini-girit Date: Wed, 11 Dec 2019 15:36:27 +0200 Subject: [PATCH 1/2] v3.1.0: Upgraded Cloudinary php SDK using composer in order to solve the strict transformations issue... --- .../Cloudinary/Model/Observer/Autoload.php | 12 + .../Cloudinary/Cloudinary/etc/config.xml | 9 + lib/Cloudinary/Api.php | 449 - lib/Cloudinary/AuthToken.php | 72 - lib/Cloudinary/Cloudinary.php | 979 -- lib/Cloudinary/CloudinaryField.php | 54 - lib/Cloudinary/Helpers.php | 249 - lib/Cloudinary/PreloadedFile.php | 52 - lib/Cloudinary/Search.php | 65 - lib/CloudinaryExtension/composer.json | 5 + lib/CloudinaryExtension/composer.lock | 70 + lib/CloudinaryExtension/vendor/autoload.php | 7 + .../cloudinary/cloudinary_php/.gitignore | 8 + .../cloudinary/cloudinary_php/.htaccess | 3 + .../cloudinary/cloudinary_php/.travis.yml | 16 + .../cloudinary/cloudinary_php/CHANGELOG.md | 516 + .../cloudinary/cloudinary_php/LICENSE.txt | 22 + .../cloudinary/cloudinary_php/README.md | 216 + .../cloudinary/cloudinary_php/autoload.php | 39 + .../cloudinary/cloudinary_php/composer.json | 35 + .../cloudinary/cloudinary_php/composer.lock | 985 ++ .../cloudinary/cloudinary_php/phpcs.xml | 23 + .../cloudinary/cloudinary_php/phpunit.php | 8 + .../cloudinary_php/phpunit.xml.dist | 29 + .../samples/PhotoAlbum/.gitignore | 1 + .../samples/PhotoAlbum/autoloader.php | 9 + .../samples/PhotoAlbum/files/.htaccess | 1 + .../PhotoAlbum/lib/cloudinary_cors.html | 41 + .../samples/PhotoAlbum/lib/rb-license.txt | 329 + .../samples/PhotoAlbum/lib/rb.php | 9515 +++++++++++++++++ .../samples/PhotoAlbum/list.php | 144 + .../samples/PhotoAlbum/main.php | 64 + .../samples/PhotoAlbum/settings.php.sample | 8 + .../samples/PhotoAlbum/style.css | 37 + .../samples/PhotoAlbum/upload.php | 154 + .../samples/PhotoAlbum/upload_backend.php | 46 + .../samples/PhotoAlbum/upload_complete.php | 27 + .../cloudinary_php/samples/README.md | 63 + .../cloudinary_php/samples/basic/.gitignore | 1 + .../cloudinary_php/samples/basic/basic.php | 196 + .../cloudinary_php/samples/basic/lake.jpg | Bin 0 -> 53696 bytes .../cloudinary_php/samples/basic/pizza.jpg | Bin 0 -> 52534 bytes .../samples/basic/settings.php.sample | 7 + .../cloudinary/cloudinary_php/src/Api.php | 1589 +++ .../cloudinary_php/src/Api/AlreadyExists.php | 11 + .../src/Api/AuthorizationRequired.php | 11 + .../cloudinary_php/src/Api/BadRequest.php | 11 + .../cloudinary_php/src/Api/Error.php | 11 + .../cloudinary_php/src/Api/GeneralError.php | 11 + .../cloudinary_php/src/Api/NotAllowed.php | 11 + .../cloudinary_php/src/Api/NotFound.php | 11 + .../cloudinary_php/src/Api/RateLimited.php | 11 + .../cloudinary_php/src/Api/Response.php | 26 + .../cloudinary_php/src/AuthToken.php | 92 + .../src/Cache/Adapter/CacheAdapter.php | 56 + .../Cache/Adapter/KeyValueCacheAdapter.php | 110 + .../src/Cache/ResponsiveBreakpointsCache.php | 156 + .../Storage/FileSystemKeyValueStorage.php | 123 + .../src/Cache/Storage/KeyValueStorage.php | 43 + .../cloudinary_php/src/Cloudinary.php | 1742 +++ .../cloudinary_php/src/CloudinaryField.php | 63 + .../cloudinary/cloudinary_php/src/Error.php | 11 + .../cloudinary/cloudinary_php/src/Helpers.php | 916 ++ .../cloudinary_php/src/HttpClient.php | 106 + .../cloudinary_php/src/PreloadedFile.php | 81 + .../cloudinary/cloudinary_php/src/Search.php | 82 + .../cloudinary_php/src/SignatureVerifier.php | 169 + .../cloudinary_php/src}/Uploader.php | 413 +- .../cloudinary_php/src/Utils/Singleton.php | 54 + .../cloudinary/cloudinary_php/src}/cacert.pem | 0 .../cloudinary/cloudinary_php/tests/.htaccess | 1 + .../cloudinary_php/tests/ApiTest.php | 1414 +++ .../cloudinary_php/tests/ArchiveTest.php | 112 + .../cloudinary_php/tests/AuthTokenTest.php | 193 + .../Adapter/KeyValueCacheAdapterTest.php | 155 + .../Cache/ResponsiveBreakpointsCacheTest.php | 116 + .../tests/Cache/Storage/DummyCacheStorage.php | 59 + .../Storage/FileSystemKeyValueStorageTest.php | 176 + .../tests/CloudinaryFieldTest.php | 40 + .../cloudinary_php/tests/CloudinaryTest.php | 1913 ++++ .../cloudinary_php/tests/ConfigTest.php | 42 + .../cloudinary_php/tests/HelpersTest.php | 106 + .../cloudinary_php/tests/HttpClientTest.php | 104 + .../cloudinary_php/tests/SearchTest.php | 175 + .../tests/SignatureVerifierTest.php | 231 + .../cloudinary_php/tests/TagTest.php | 1217 +++ .../cloudinary_php/tests/TestHelper.php | 270 + .../cloudinary_php/tests/UploaderTest.php | 860 ++ .../cloudinary/cloudinary_php/tests/docx.docx | Bin 0 -> 20453 bytes .../cloudinary_php/tests/favicon.ico | Bin 0 -> 1150 bytes .../cloudinary/cloudinary_php/tests/logo.png | Bin 0 -> 3381 bytes .../cloudinary_php/tools/update_version.sh | 197 + .../vendor/composer/ClassLoader.php | 445 + .../vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 34 + .../vendor/composer/autoload_files.php | 10 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 9 + .../vendor/composer/autoload_real.php | 70 + .../vendor/composer/autoload_static.php | 48 + .../vendor/composer/installed.json | 56 + modman | 1 - var/connect/Cloudinary_Cloudinary-3.0.3.tgz | Bin 239833 -> 0 bytes var/connect/Cloudinary_Cloudinary-3.1.0.tgz | Bin 0 -> 530326 bytes var/connect/Cloudinary_Cloudinary.xml | 11 +- var/connect/package.xml | 8 +- 106 files changed, 26580 insertions(+), 2009 deletions(-) create mode 100644 app/code/community/Cloudinary/Cloudinary/Model/Observer/Autoload.php delete mode 100644 lib/Cloudinary/Api.php delete mode 100644 lib/Cloudinary/AuthToken.php delete mode 100644 lib/Cloudinary/Cloudinary.php delete mode 100644 lib/Cloudinary/CloudinaryField.php delete mode 100644 lib/Cloudinary/Helpers.php delete mode 100644 lib/Cloudinary/PreloadedFile.php delete mode 100644 lib/Cloudinary/Search.php create mode 100644 lib/CloudinaryExtension/composer.json create mode 100644 lib/CloudinaryExtension/composer.lock create mode 100644 lib/CloudinaryExtension/vendor/autoload.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.gitignore create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.htaccess create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.travis.yml create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/CHANGELOG.md create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/LICENSE.txt create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/README.md create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/autoload.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/composer.json create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/composer.lock create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpcs.xml create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpunit.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpunit.xml.dist create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/.gitignore create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/autoloader.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/files/.htaccess create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/cloudinary_cors.html create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb-license.txt create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/list.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/main.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/settings.php.sample create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/style.css create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_backend.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_complete.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/README.md create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/.gitignore create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/basic.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/lake.jpg create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/pizza.jpg create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/settings.php.sample create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/AlreadyExists.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/AuthorizationRequired.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/BadRequest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/Error.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/GeneralError.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/NotAllowed.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/NotFound.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/RateLimited.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/Response.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/AuthToken.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Adapter/KeyValueCacheAdapter.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cloudinary.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/CloudinaryField.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Error.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Helpers.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/HttpClient.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/PreloadedFile.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Search.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/SignatureVerifier.php rename lib/{Cloudinary => CloudinaryExtension/vendor/cloudinary/cloudinary_php/src}/Uploader.php (52%) create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Utils/Singleton.php rename lib/{Cloudinary => CloudinaryExtension/vendor/cloudinary/cloudinary_php/src}/cacert.pem (100%) create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/.htaccess create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ApiTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ArchiveTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/AuthTokenTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Adapter/KeyValueCacheAdapterTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/ResponsiveBreakpointsCacheTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Storage/DummyCacheStorage.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Storage/FileSystemKeyValueStorageTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryFieldTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ConfigTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HelpersTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HttpClientTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SearchTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SignatureVerifierTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TagTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TestHelper.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/UploaderTest.php create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/docx.docx create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/favicon.ico create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/logo.png create mode 100644 lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tools/update_version.sh create mode 100644 lib/CloudinaryExtension/vendor/composer/ClassLoader.php create mode 100644 lib/CloudinaryExtension/vendor/composer/LICENSE create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_classmap.php create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_files.php create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_namespaces.php create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_psr4.php create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_real.php create mode 100644 lib/CloudinaryExtension/vendor/composer/autoload_static.php create mode 100644 lib/CloudinaryExtension/vendor/composer/installed.json delete mode 100644 var/connect/Cloudinary_Cloudinary-3.0.3.tgz create mode 100644 var/connect/Cloudinary_Cloudinary-3.1.0.tgz diff --git a/app/code/community/Cloudinary/Cloudinary/Model/Observer/Autoload.php b/app/code/community/Cloudinary/Cloudinary/Model/Observer/Autoload.php new file mode 100644 index 0000000..a45e253 --- /dev/null +++ b/app/code/community/Cloudinary/Cloudinary/Model/Observer/Autoload.php @@ -0,0 +1,12 @@ + + + + + singleton + cloudinary_cloudinary/observer_autoload + autoloadRegister + + + diff --git a/lib/Cloudinary/Api.php b/lib/Cloudinary/Api.php deleted file mode 100644 index cb1087c..0000000 --- a/lib/Cloudinary/Api.php +++ /dev/null @@ -1,449 +0,0 @@ -rate_limit_reset_at = strtotime($response->headers["X-FeatureRateLimit-Reset"]); - $this->rate_limit_allowed = intval($response->headers["X-FeatureRateLimit-Limit"]); - $this->rate_limit_remaining = intval($response->headers["X-FeatureRateLimit-Remaining"]); - } - } -} - - -namespace Cloudinary { - - -class Api { - static $CLOUDINARY_API_ERROR_CLASSES = array( - 400 => "\Cloudinary\Api\BadRequest", - 401 => "\Cloudinary\Api\AuthorizationRequired", - 403 => "\Cloudinary\Api\NotAllowed", - 404 => "\Cloudinary\Api\NotFound", - 409 => "\Cloudinary\Api\AlreadyExists", - 420 => "\Cloudinary\Api\RateLimited", - 500 => "\Cloudinary\Api\GeneralError" - ); - - function ping($options=array()) { - return $this->call_api("get", array("ping"), array(), $options); - } - - function usage($options=array()) { - return $this->call_api("get", array("usage"), array(), $options); - } - - function resource_types($options=array()) { - return $this->call_api("get", array("resources"), array(), $options); - } - - function resources($options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type"); - $uri = array("resources", $resource_type); - if ($type) array_push($uri, $type); - return $this->call_api("get", $uri, $this->only($options, array("next_cursor", "max_results", "prefix", "tags", "context", "moderations", "direction", "start_at")), $options); - } - - function resources_by_tag($tag, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $uri = array("resources", $resource_type, "tags", $tag); - return $this->call_api("get", $uri, $this->only($options, array("next_cursor", "max_results", "tags", "context", "moderations", "direction")), $options); - } - - function resources_by_moderation($kind, $status, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $uri = array("resources", $resource_type, "moderations", $kind, $status); - return $this->call_api("get", $uri, $this->only($options, array("next_cursor", "max_results", "tags", "context", "moderations", "direction")), $options); - } - - function resources_by_ids($public_ids, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type); - $params = array_merge($options, array("public_ids" => $public_ids)); - return $this->call_api("get", $uri, $this->only($params, array("public_ids", "tags", "moderations", "context")), $options); - } - - function resource($public_id, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type, $public_id); - return $this->call_api("get", $uri, $this->only($options, array("exif", "colors", "faces", "image_metadata", "phash", "pages", "coordinates", "max_results")), $options); - } - - function restore($public_ids, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type, "restore"); - $params = array_merge($options, array("public_ids" => $public_ids)); - return $this->call_api("post", $uri, $params, $options); - } - - function update($public_id, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type, $public_id); - - $tags = \Cloudinary::option_get($options, "tags"); - $context = \Cloudinary::option_get($options, "context"); - $face_coordinates = \Cloudinary::option_get($options, "face_coordinates"); - $custom_coordinates = \Cloudinary::option_get($options, "custom_coordinates"); - $update_options = array_merge( - $this->only($options, array("moderation_status", "raw_convert", "ocr", "categorization", "detection", "similarity_search", "auto_tagging", "background_removal")), - array( - "tags" => $tags ? implode(",", \Cloudinary::build_array($tags)) : $tags, - "context" => $context ? \Cloudinary::encode_assoc_array($context) : $context, - "face_coordinates" => $face_coordinates ? \Cloudinary::encode_double_array($face_coordinates) : $face_coordinates, - "custom_coordinates" => $custom_coordinates ? \Cloudinary::encode_double_array($custom_coordinates) : $custom_coordinates, - ) - ); - - return $this->call_api("post", $uri, $update_options, $options); - } - - function delete_resources($public_ids, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type); - return $this->call_api("delete", $uri, array_merge(array("public_ids"=>$public_ids), $this->only($options, array("keep_original", "invalidate", "transformation"))), $options); - } - - function delete_resources_by_prefix($prefix, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type); - return $this->call_api("delete", $uri, array_merge(array("prefix"=>$prefix), $this->only($options, array("keep_original", "next_cursor", "invalidate"))), $options); - } - - function delete_all_resources($options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $type = \Cloudinary::option_get($options, "type", "upload"); - $uri = array("resources", $resource_type, $type); - return $this->call_api("delete", $uri, array_merge(array("all"=>True), $this->only($options, array("keep_original", "next_cursor", "invalidate"))), $options); - } - - function delete_resources_by_tag($tag, $options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $uri = array("resources", $resource_type, "tags", $tag); - return $this->call_api("delete", $uri, $this->only($options, array("keep_original", "next_cursor", "invalidate")), $options); - } - - function delete_derived_resources($derived_resource_ids, $options=array()) { - $uri = array("derived_resources"); - return $this->call_api("delete", $uri, array("derived_resource_ids"=>$derived_resource_ids), $options); - } - - function tags($options=array()) { - $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); - $uri = array("tags", $resource_type); - return $this->call_api("get", $uri, $this->only($options, array("next_cursor", "max_results", "prefix")), $options); - } - - function transformations($options=array()) { - return $this->call_api("get", array("transformations"), $this->only($options, array("next_cursor", "max_results")), $options); - } - - function transformation($transformation, $options=array()) { - $uri = array("transformations", $this->transformation_string($transformation)); - return $this->call_api("get", $uri, $this->only($options, array("next_cursor", "max_results")), $options); - } - - function delete_transformation($transformation, $options=array()) { - $uri = array("transformations", $this->transformation_string($transformation)); - $params = array(); - if (isset($options["invalidate"])) { - $params["invalidate"] = $options["invalidate"]; - } - return $this->call_api("delete", $uri, $params, $options); - } - - # updates - currently only supported update is the "allowed_for_strict" boolean flag - function update_transformation($transformation, $updates=array(), $options=array()) { - $uri = array("transformations", $this->transformation_string($transformation)); - $params = $this->only($updates, array("allowed_for_strict")); - if (isset($updates["unsafe_update"])) { - $params["unsafe_update"] = $this->transformation_string($updates["unsafe_update"]); - } - return $this->call_api("put", $uri, $params, $options); - } - - function create_transformation($name, $definition, $options=array()) { - $uri = array("transformations", $name); - return $this->call_api("post", $uri, array("transformation"=>$this->transformation_string($definition)), $options); - } - - function upload_presets($options=array()) { - return $this->call_api("get", array("upload_presets"), $this->only($options, array("next_cursor", "max_results")), $options); - } - - function upload_preset($name, $options=array()) { - $uri = array("upload_presets", $name); - return $this->call_api("get", $uri, $this->only($options, array("max_results")), $options); - } - - function delete_upload_preset($name, $options=array()) { - $uri = array("upload_presets", $name); - return $this->call_api("delete", $uri, array(), $options); - } - - function update_upload_preset($name, $options=array()) { - $uri = array("upload_presets", $name); - $params = \Cloudinary\Uploader::build_upload_params($options); - return $this->call_api("put", $uri, array_merge($params, $this->only($options, array("unsigned", "disallow_public_id"))), $options); - } - - function create_upload_preset($options=array()) { - $params = \Cloudinary\Uploader::build_upload_params($options); - return $this->call_api("post", array("upload_presets"), array_merge($params, $this->only($options, array("name", "unsigned", "disallow_public_id"))), $options); - } - - function root_folders($options=array()) { - return $this->call_api("get", array("folders"), array(), $options); - } - - function subfolders($of_folder_path, $options=array()) { - return $this->call_api("get", array("folders", $of_folder_path), array(), $options); - } - - function upload_mappings($options=array()) { - return $this->call_api("get", array("upload_mappings"), $this->only($options, array("next_cursor", "max_results")), $options); - } - - function upload_mapping($name, $options=array()) { - $uri = array("upload_mappings"); - $params = array("folder"=>$name); - return $this->call_api("get", $uri, $params, $options); - } - - function delete_upload_mapping($name, $options=array()) { - $uri = array("upload_mappings"); - $params = array("folder"=>$name); - return $this->call_api("delete", $uri, $params, $options); - } - - function update_upload_mapping($name, $options=array()) { - $uri = array("upload_mappings"); - $params = array("folder"=>$name); - return $this->call_api("put", $uri, array_merge($params, $this->only($options, array("template"))), $options); - } - - function create_upload_mapping($name, $options=array()) { - $uri = array("upload_mappings"); - $params = array("folder"=>$name); - return $this->call_api("post", $uri, array_merge($params, $this->only($options, array("template"))), $options); - } - - /** - * List all streaming profiles associated with the current customer - * @param array $options options - * @return Api\Response An array with a "data" key for results - */ - function list_streaming_profiles($options=array()) { - return $this->call_api("get", array("streaming_profiles"), array(), $options); - } - - /** - * Get the information of a single streaming profile - * @param $name the name of the profile - * @param array $options other options - * @return Api\Response An array with a "data" key for results - */ - function get_streaming_profile($name, $options=array()) { - $uri = array("streaming_profiles/" . $name); - return $this->call_api("get", $uri, array(), $options); - } - - /** - * Delete a streaming profile information. Predefined profiles are restored to the default setting. - * @param $name the name of the streaming profile to delete - * @param array $options additional options - * @return Api\Response - */ - function delete_streaming_profile($name, $options=array()) { - $uri = array("streaming_profiles/" . $name); - return $this->call_api("delete", $uri, array(), $options); - } - - /** - * Update an existing streaming profile - * @param $name the name of the prodile - * @param array $options additional options - * @return Api\Response - */ - function update_streaming_profile($name, $options=array()) { - $uri = array("streaming_profiles/" . $name); - $params = $this->prepare_streaming_profile_params($options); - return $this->call_api("put", $uri, $params, $options); - } - - /** - * Create a new streaming profile - * @param $name the name of the new profile. if the name is of a predefined profile, the profile will be modified. - * @param array $options additional options - * @return Api\Response - */ - function create_streaming_profile($name, $options = array()) { - $uri = array("streaming_profiles"); - $params = $this->prepare_streaming_profile_params($options); - $params["name"] = $name; - return $this->call_api("post", $uri, $params, $options); - } - - function call_api($method, $uri, $params, &$options) { - $prefix = \Cloudinary::option_get($options, "upload_prefix", \Cloudinary::config_get("upload_prefix", "https://api.cloudinary.com")); - $cloud_name = \Cloudinary::option_get($options, "cloud_name", \Cloudinary::config_get("cloud_name")); - if (!$cloud_name) throw new \InvalidArgumentException("Must supply cloud_name"); - $api_key = \Cloudinary::option_get($options, "api_key", \Cloudinary::config_get("api_key")); - if (!$api_key) throw new \InvalidArgumentException("Must supply api_key"); - $api_secret = \Cloudinary::option_get($options, "api_secret", \Cloudinary::config_get("api_secret")); - if (!$api_secret) throw new \InvalidArgumentException("Must supply api_secret"); - $api_url = implode("/", array_merge(array($prefix, "v1_1", $cloud_name), $uri)); - $params = array_filter($params,function($v){ return !is_null($v) && ($v !== "" );}); - if ($method == "get") - { - $api_url .= "?" . preg_replace("/%5B\d+%5D/", "%5B%5D", http_build_query($params)); - - } - - $ch = curl_init($api_url); - - if ($method != "get") - { - $post_params = array(); - if (array_key_exists("content_type", $options) && $options["content_type"] == 'application/json') - { - $headers = array( - "Content-type: application/json", - "Accept: application/json", - ); - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - $post_params = json_encode($params); - } else { - foreach ($params as $key => $value) { - if (is_array($value)) { - $i = 0; - foreach ($value as $item) { - $post_params[$key . "[$i]"] = $item; - $i++; - } - } else { - $post_params[$key] = $value; - } - } - } - curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); - } - curl_setopt($ch, CURLOPT_HEADER, 1); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_TIMEOUT, 60); - curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); - curl_setopt($ch, CURLOPT_USERPWD, "{$api_key}:{$api_secret}"); - curl_setopt($ch, CURLOPT_CAINFO,realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR."cacert.pem"); - curl_setopt($ch, CURLOPT_USERAGENT, \Cloudinary::userAgent()); - curl_setopt($ch, CURLOPT_PROXY, \Cloudinary::option_get($options, "api_proxy", \Cloudinary::config_get("api_proxy"))); - $response = $this->execute($ch); - $curl_error = NULL; - if(curl_errno($ch)) - { - $curl_error = curl_error($ch); - } - curl_close($ch); - if ($curl_error != NULL) { - throw new \Cloudinary\Api\GeneralError("Error in sending request to server - " . $curl_error); - } - if ($response->responseCode == 200) { - return new \Cloudinary\Api\Response($response); - } else { - $exception_class = \Cloudinary::option_get(self::$CLOUDINARY_API_ERROR_CLASSES, $response->responseCode); - if (!$exception_class) throw new \Cloudinary\Api\GeneralError("Server returned unexpected status code - {$response->responseCode} - {$response->body}"); - $json = $this->parse_json_response($response); - throw new $exception_class($json["error"]["message"]); - } - } - - # Based on http://snipplr.com/view/17242/ - protected function execute($ch) { - $string = curl_exec($ch); - $headers = array(); - $content = ''; - $str = strtok($string, "\n"); - $h = null; - while ($str !== false) { - if ($h and trim($str) === '') { - $h = false; - continue; - } - if ($h !== false and false !== strpos($str, ':')) { - $h = true; - list($headername, $headervalue) = explode(':', trim($str), 2); - $headervalue = ltrim($headervalue); - if (isset($headers[$headername])) - $headers[$headername] .= ',' . $headervalue; - else - $headers[$headername] = $headervalue; - } - if ($h === false) { - $content .= $str."\n"; - } - $str = strtok("\n"); - } - $result = new \stdClass; - $result->headers = $headers; - $result->body = trim($content); - $result->responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - return $result; - } - - static function parse_json_response($response) { - $result = json_decode($response->body, TRUE); - if ($result == NULL) { - $error = json_last_error(); - throw new \Cloudinary\Api\GeneralError("Error parsing server response ({$response->responseCode}) - {$response->body}. Got - {$error}"); - } - return $result; - } - - protected function only(&$hash, $keys) { - $result = array(); - foreach ($keys as $key) { - if (isset($hash[$key])) $result[$key] = $hash[$key]; - } - - return $result; - } - - protected function transformation_string($transformation) { - return is_string($transformation) ? $transformation : \Cloudinary::generate_transformation_string($transformation); - } - - /** - * Prepare streaming profile parameters for API calls - * @param $options the options passed to the API - * @return array A single profile parameters - */ - protected function prepare_streaming_profile_params($options) { - $params = $this->only($options, array("display_name")); - if (isset($options['representations'])) { - $array_map = array_map( - function ($representation) { - return array("transformation" => \Cloudinary::generate_transformation_string($representation)); - }, $options['representations']); - $params["representations"] = json_encode($array_map); - } - return $params; - } -} - -} diff --git a/lib/Cloudinary/AuthToken.php b/lib/Cloudinary/AuthToken.php deleted file mode 100644 index 1412302..0000000 --- a/lib/Cloudinary/AuthToken.php +++ /dev/null @@ -1,72 +0,0 @@ -(\d+\.)?\d+)(?P[%pP])?$/'; - const RANGE_RE = '/^(\d+\.)?\d+[%pP]?\.\.(\d+\.)?\d+[%pP]?$/'; - - const VERSION = "1.8.0"; - /** @internal Do not change this value */ - const USER_AGENT = "CloudinaryPHP/1.8.0"; - - /** - * Additional information to be passed with the USER_AGENT, e.g. "CloudinaryMagento/1.0.1". This value is set in platform-specific - * implementations that use cloudinary_php. - * - * The format of the value should be /Version[ (comment)]. - * @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 - * - * Do not set this value in application code! - * - * @var string - */ - public static $USER_PLATFORM = ""; - - public static $DEFAULT_RESPONSIVE_WIDTH_TRANSFORMATION = array("width"=>"auto", "crop"=>"limit"); - - private static $config = NULL; - public static $JS_CONFIG_PARAMS = array("api_key", "cloud_name", "private_cdn", "secure_distribution", "cdn_subdomain"); - - /** - * Provides the USER_AGENT string that is passed to the Cloudinary servers. - * - * Prepends {@link $USER_PLATFORM} if it is defined. - * - * @return string - */ - public static function userAgent() - { - if (self::$USER_PLATFORM == "") { - return self::USER_AGENT; - } else { - return self::$USER_PLATFORM . " " . self::USER_AGENT; - } - } - - public static function is_not_null ($var) { return !is_null($var);} - - public static function config($values = NULL) { - if (self::$config == NULL) { - self::reset_config(); - } - if ($values != NULL) { - self::$config = array_merge(self::$config, $values); - } - return self::$config; - } - - public static function reset_config() { - self::config_from_url(getenv("CLOUDINARY_URL")); - } - - public static function config_from_url($cloudinary_url) { - self::$config = array(); - if ($cloudinary_url) { - $uri = parse_url($cloudinary_url); - $q_params = array(); - if (isset($uri["query"])) { - parse_str($uri["query"], $q_params); - } - $private_cdn = isset($uri["path"]) && $uri["path"] != "/"; - $config = array_merge($q_params, array( - "cloud_name" => $uri["host"], - "api_key" => $uri["user"], - "api_secret" => $uri["pass"], - "private_cdn" => $private_cdn)); - if ($private_cdn) { - $config["secure_distribution"] = substr($uri["path"], 1); - } - self::$config = array_merge(self::$config, $config); - } - } - - public static function config_get($option, $default=NULL) { - return Cloudinary::option_get(self::config(), $option, $default); - } - - public static function option_get($options, $option, $default=NULL) { - if (isset($options[$option])) { - return $options[$option]; - } else { - return $default; - } - } - - public static function option_consume(&$options, $option, $default=NULL) { - if (isset($options[$option])) { - $value = $options[$option]; - unset($options[$option]); - return $value; - } else { - unset($options[$option]); - return $default; - } - } - - public static function build_array($value) { - if (is_array($value) && !Cloudinary::is_assoc($value)) { - return $value; - } else if ($value === NULL) { - return array(); - } else { - return array($value); - } - } - - public static function encode_array($array) { - return implode(",", Cloudinary::build_array($array)); - } - - public static function encode_double_array($array) { - $array = Cloudinary::build_array($array); - if (count($array) > 0 && !is_array($array[0])) { - return Cloudinary::encode_array($array); - } else { - $array = array_map('Cloudinary::encode_array', $array); - } - - return implode("|", $array); - } - - public static function encode_assoc_array($array) { - if (Cloudinary::is_assoc($array)){ - $encoded = array(); - foreach ($array as $key => $value) { - $value = !empty($value) - ? preg_replace('/([\|=])/', '\\\$1', $value) - : $value; - - array_push($encoded, $key . '=' . $value); - } - return implode("|", $encoded); - } else { - return $array; - } - } - - private static function is_assoc($array) { - if (!is_array($array)) return FALSE; - return $array != array_values($array); - } - - private static function generate_base_transformation($base_transformation) { - $options = is_array($base_transformation) ? $base_transformation : array("transformation"=>$base_transformation); - return Cloudinary::generate_transformation_string($options); - } - - // Warning: $options are being destructively updated! - public static function generate_transformation_string(&$options=array()) { - $generate_base_transformation = "Cloudinary::generate_base_transformation"; - if (is_string($options)) { - return $options; - } - if ($options == array_values($options)) { - return implode("/", array_map($generate_base_transformation, $options)); - } - - $responsive_width = Cloudinary::option_consume($options, "responsive_width", Cloudinary::config_get("responsive_width")); - - $size = Cloudinary::option_consume($options, "size"); - if ($size) list($options["width"], $options["height"]) = preg_split("/x/", $size); - - $width = Cloudinary::option_get($options, "width"); - $height = Cloudinary::option_get($options, "height"); - - $has_layer = Cloudinary::option_get($options, "underlay") || Cloudinary::option_get($options, "overlay"); - $angle = implode(Cloudinary::build_array(Cloudinary::option_consume($options, "angle")), "."); - $crop = Cloudinary::option_consume($options, "crop"); - - $no_html_sizes = $has_layer || !empty($angle) || $crop == "fit" || $crop == "limit" || $responsive_width; - - if (strlen($width) == 0 || $width && (substr($width, 0, 4) == "auto" || floatval($width) < 1 || $no_html_sizes)) unset($options["width"]); - if (strlen($height) == 0 || $height && (floatval($height) < 1 || $no_html_sizes)) unset($options["height"]); - - $background = Cloudinary::option_consume($options, "background"); - if ($background) $background = preg_replace("/^#/", 'rgb:', $background); - $color = Cloudinary::option_consume($options, "color"); - if ($color) $color = preg_replace("/^#/", 'rgb:', $color); - - $base_transformations = Cloudinary::build_array(Cloudinary::option_consume($options, "transformation")); - if (count(array_filter($base_transformations, "is_array")) > 0) { - $base_transformations = array_map($generate_base_transformation, $base_transformations); - $named_transformation = ""; - } else { - $named_transformation = implode(".", $base_transformations); - $base_transformations = array(); - } - - $effect = Cloudinary::option_consume($options, "effect"); - if (is_array($effect)) $effect = implode(":", $effect); - - $border = Cloudinary::process_border(Cloudinary::option_consume($options, "border")); - - $flags = implode(Cloudinary::build_array(Cloudinary::option_consume($options, "flags")), "."); - $dpr = Cloudinary::option_consume($options, "dpr", Cloudinary::config_get("dpr")); - - $duration = Cloudinary::norm_range_value(Cloudinary::option_consume($options, "duration")); - $start_offset = Cloudinary::norm_range_value(Cloudinary::option_consume($options, "start_offset")); - $end_offset = Cloudinary::norm_range_value(Cloudinary::option_consume($options, "end_offset")); - $offset = Cloudinary::split_range(Cloudinary::option_consume($options, "offset")); - if (!empty($offset)) { - $start_offset = Cloudinary::norm_range_value($offset[0]); - $end_offset = Cloudinary::norm_range_value($offset[1]); - } - - $video_codec = Cloudinary::process_video_codec_param(Cloudinary::option_consume($options, "video_codec")); - - $overlay = Cloudinary::process_layer(Cloudinary::option_consume($options, "overlay"), "overlay"); - $underlay = Cloudinary::process_layer(Cloudinary::option_consume($options, "underlay"), "underlay"); - $if = Cloudinary::process_if(Cloudinary::option_consume($options, "if")); - - $aspect_ratio = Cloudinary::option_consume($options, "aspect_ratio"); - $opacity = Cloudinary::option_consume($options, "opacity"); - $quality = Cloudinary::option_consume($options, "quality"); - $radius = Cloudinary::option_consume($options, "radius"); - $x = Cloudinary::option_consume($options, "x"); - $y = Cloudinary::option_consume($options, "y"); - $zoom = Cloudinary::option_consume($options, "zoom"); - - $params = array( - "a" => self::normalize_expression($angle), - "ar" => self::normalize_expression($aspect_ratio), - "b" => $background, - "bo" => $border, - "c" => $crop, - "co" => $color, - "dpr" => self::normalize_expression($dpr), - "du" => $duration, - "e" => self::normalize_expression($effect), - "eo" => $end_offset, - "fl" => $flags, - "h" => self::normalize_expression($height), - "l" => $overlay, - "o" => self::normalize_expression($opacity), - "q" => self::normalize_expression($quality), - "r" => self::normalize_expression($radius), - "so" => $start_offset, - "t" => $named_transformation, - "u" => $underlay, - "vc" => $video_codec, - "w" => self::normalize_expression($width), - "x" => self::normalize_expression($x), - "y" => self::normalize_expression($y), - "z" => self::normalize_expression($zoom), - ); - - $simple_params = array( - "ac" => "audio_codec", - "af" => "audio_frequency", - "br" => "bit_rate", - "cs" => "color_space", - "d" => "default_image", - "dl" => "delay", - "dn" => "density", - "f" => "fetch_format", - "g" => "gravity", - "p" => "prefix", - "pg" => "page", - "vs" => "video_sampling", - ); - - foreach ($simple_params as $param=>$option) { - $params[$param] = Cloudinary::option_consume($options, $option); - } - - $variables = !empty($options["variables"]) ? $options["variables"] : []; - - $var_params = []; - foreach($options as $key => $value) { - if (preg_match('/^\$/', $key)) { - $var_params[] = $key . '_' . self::normalize_expression((string)$value); - } - } - - sort($var_params); - - if (!empty($variables)) { - foreach($variables as $key => $value) { - $var_params[] = $key . '_' . self::normalize_expression((string)$value); - } - } - - $variables = join(',', $var_params); - - - $param_filter = function($value) { return $value === 0 || $value === '0' || trim($value) == true; }; - $params = array_filter($params, $param_filter); - ksort($params); - if (isset($if)) { - $if = 'if_' . $if; - } - $join_pair = function($key, $value) { return $key . "_" . $value; }; - $transformation = implode(",", array_map($join_pair, array_keys($params), array_values($params))); - $raw_transformation = Cloudinary::option_consume($options, "raw_transformation"); - $transformation = implode(",", array_filter(array($if, $variables, $transformation, $raw_transformation))); - array_push($base_transformations, $transformation); - if ($responsive_width) { - $responsive_width_transformation = Cloudinary::config_get("responsive_width_transformation", Cloudinary::$DEFAULT_RESPONSIVE_WIDTH_TRANSFORMATION); - array_push($base_transformations, Cloudinary::generate_transformation_string($responsive_width_transformation)); - } - if (substr($width, 0, 4) == "auto" || $responsive_width) { - $options["responsive"] = true; - } - if (substr($dpr, 0, 4) == "auto") { - $options["hidpi"] = true; - } - return implode("/", array_filter($base_transformations)); - } - - private static $LAYER_KEYWORD_PARAMS = array( - "font_weight"=>"normal", "font_style"=>"normal", "text_decoration"=>"none", "text_align"=>NULL, "stroke"=>"none" - ); - - private static function text_style( $layer, $layer_parameter) { - $font_family = Cloudinary::option_get($layer, "font_family"); - $font_size = Cloudinary::option_get($layer, "font_size"); - $keywords = array(); - foreach (Cloudinary::$LAYER_KEYWORD_PARAMS as $attr=>$default_value) { - $attr_value = Cloudinary::option_get($layer, $attr, $default_value); - if ($attr_value != $default_value) { - array_push($keywords, $attr_value); - } - } - $letter_spacing = Cloudinary::option_get($layer, "letter_spacing"); - if ($letter_spacing != NULL) { - array_push($keywords, "letter_spacing_$letter_spacing"); - } - $line_spacing = Cloudinary::option_get($layer, "line_spacing"); - if ($line_spacing != NULL) { - array_push($keywords, "line_spacing_$line_spacing"); - } - $has_text_options = $font_size != NULL || $font_family != NULL || !empty($keywords); - if (!$has_text_options) { - return NULL; - } - if ($font_family == NULL) { - throw new InvalidArgumentException("Must supply font_family for text in $layer_parameter"); - } - if ($font_size == NULL) { - throw new InvalidArgumentException("Must supply font_size for text in $layer_parameter"); - } - array_unshift($keywords, $font_size); - array_unshift($keywords, $font_family); - return implode("_", array_filter($keywords, 'Cloudinary::is_not_null')); - } - - /** - * Handle overlays. - * Overlay properties can came as array or as string. - * @param $layer - * @param $layer_parameter - * @return string - */ - private static function process_layer($layer, $layer_parameter) { - // When overlay is array. - if (is_array($layer)) { - $resource_type = Cloudinary::option_get($layer, "resource_type"); - $type = Cloudinary::option_get($layer, "type"); - $text = Cloudinary::option_get($layer, "text"); - $fetch = Cloudinary::option_get($layer, "fetch"); - $text_style = NULL; - $public_id = Cloudinary::option_get($layer, "public_id"); - $format = Cloudinary::option_get($layer, "format"); - $components = array(); - - if ($public_id != NULL){ - $public_id = str_replace("/", ":", $public_id); - if($format != NULL) $public_id = $public_id . "." . $format; - } - - // Fetch overlay. - if (!empty($fetch) || $resource_type === "fetch") { - $public_id = NULL; - $resource_type = "fetch"; - $fetch = base64_encode($fetch); - } - - // Text overlay. - elseif (!empty($text) || $resource_type === "text") { - $resource_type = "text"; - $type = NULL; // type is ignored for text layers - $text_style = Cloudinary::text_style($layer, $layer_parameter); #FIXME duplicate - if ($text != NULL) { - if (!($public_id != NULL xor $text_style != NULL)) { - throw new InvalidArgumentException("Must supply either style parameters or a public_id when providing text parameter in a text $layer_parameter"); - } - $escaped = Cloudinary::smart_escape($text); - $escaped = str_replace("%2C", "%252C", $escaped); - $escaped = str_replace("/", "%252F", $escaped); - # Don't encode interpolation expressions e.g. $(variable) - preg_match_all('/\$\([a-zA-Z]\w+\)/', $text, $matches); - foreach ($matches[0] as $match) { - $escaped_match = Cloudinary::smart_escape($match); - $escaped = str_replace($escaped_match, $match, $escaped); - } - - $text = $escaped; - } - } else { - if ($public_id == NULL) { - throw new InvalidArgumentException("Must supply public_id for $resource_type $layer_parameter"); - } - if ($resource_type == "subtitles") { - $text_style = Cloudinary::text_style($layer, $layer_parameter); - } - } - - // Build a components array. - if($resource_type != "image") array_push($components, $resource_type); - if($type != "upload") array_push($components, $type); - array_push($components, $text_style); - array_push($components, $public_id); - array_push($components, $text); - array_push($components, $fetch); - - // Build a valid overlay string. - $layer = implode(":", array_filter($components, 'Cloudinary::is_not_null')); - } - - // Handle fetch overlay from string definition. - elseif (substr($layer, 0, strlen('fetch:')) === 'fetch:') { - $url = substr($layer, strlen('fetch:')); - $b64 = base64_encode($url); - $layer = 'fetch:' . $b64; - } - - return $layer; - } - - private static $CONDITIONAL_OPERATORS = array( - "=" => 'eq', - "!=" => 'ne', - "<" => 'lt', - ">" => 'gt', - "<=" => 'lte', - ">=" => 'gte', - "&&" => 'and', - "||" => 'or', - "*" => 'mul', - "/" => 'div', - "+" => 'add', - "-" => 'sub' - ); - private static $PREDEFINED_VARS = array( - "aspect_ratio" => "ar", - "current_page" => "cp", - "face_count" => "fc", - "height" => "h", - "initial_aspect_ratio" => "iar", - "initial_height" => "ih", - "initial_width" => "iw", - "page_count" => "pc", - "page_x" => "px", - "page_y" => "py", - "tags" => "tags", - "width" => "w" - ); - - private static function translate_if( $source ) - { - if (isset(self::$CONDITIONAL_OPERATORS[$source[0]])) { - return self::$CONDITIONAL_OPERATORS[$source[0]]; - } elseif (isset(self::$PREDEFINED_VARS[$source[0]])) { - return self::$PREDEFINED_VARS[$source[0]]; - } else { - return $source[0]; - } - } - - private static $IF_REPLACE_RE; - - private static function process_if($if) { - $if = self::normalize_expression($if); - return $if; - } - - private static function normalize_expression($exp) { - if (is_float($exp)) { - return number_format($exp, 1); - } - if (preg_match('/^!.+!$/', $exp)) { - return $exp; - } else { - if (empty(self::$IF_REPLACE_RE)) { - self::$IF_REPLACE_RE = '/((\|\||>=|<=|&&|!=|>|=|<|\/|\-|\+|\*)(?=[ _])|' . implode('|', array_keys(self::$PREDEFINED_VARS)) . ')/'; - } - if (isset($exp)) { - $exp = preg_replace('/[ _]+/', '_', $exp); - $exp = preg_replace_callback(self::$IF_REPLACE_RE, array("Cloudinary", "translate_if"), $exp); - } - return $exp; - } - - } - - private static function process_border($border) { - if (is_array($border)) { - $border_width = Cloudinary::option_get($border, "width", "2"); - $border_color = preg_replace("/^#/", 'rgb:', Cloudinary::option_get($border, "color", "black")); - $border = $border_width . "px_solid_" . $border_color; - } - return $border; - } - - private static function split_range($range) { - if (is_array($range) && count($range) >= 2) { - return array($range[0], end($range)); - } else if (is_string($range) && preg_match(Cloudinary::RANGE_RE, $range) == 1) { - return explode("..", $range, 2); - } else { - return NULL; - } - } - - private static function norm_range_value($value) { - if (empty($value)) { - return NULL; - } - - preg_match(Cloudinary::RANGE_VALUE_RE, $value, $matches); - - if (empty($matches)) { - return NULL; - } - - $modifier = ''; - if (!empty($matches['modifier'])) { - $modifier = 'p'; - } - return $matches['value'] . $modifier; - } - - private static function process_video_codec_param($param) { - $out_param = $param; - if (is_array($out_param)) { - $out_param = $param['codec']; - if (array_key_exists('profile', $param)) { - $out_param = $out_param . ':' . $param['profile']; - if (array_key_exists('level', $param)) { - $out_param = $out_param . ':' . $param['level']; - } - } - } - return $out_param; - } - - // Warning: $options are being destructively updated! - public static function cloudinary_url($source, &$options=array()) { - $source = self::check_cloudinary_field($source, $options); - $type = Cloudinary::option_consume($options, "type", "upload"); - - if ($type == "fetch" && !isset($options["fetch_format"])) { - $options["fetch_format"] = Cloudinary::option_consume($options, "format"); - } - $transformation = Cloudinary::generate_transformation_string($options); - - $resource_type = Cloudinary::option_consume($options, "resource_type", "image"); - $version = Cloudinary::option_consume($options, "version"); - $format = Cloudinary::option_consume($options, "format"); - - $cloud_name = Cloudinary::option_consume($options, "cloud_name", Cloudinary::config_get("cloud_name")); - if (!$cloud_name) throw new InvalidArgumentException("Must supply cloud_name in tag or in configuration"); - $secure = Cloudinary::option_consume($options, "secure", Cloudinary::config_get("secure")); - $private_cdn = Cloudinary::option_consume($options, "private_cdn", Cloudinary::config_get("private_cdn")); - $secure_distribution = Cloudinary::option_consume($options, "secure_distribution", Cloudinary::config_get("secure_distribution")); - $cdn_subdomain = Cloudinary::option_consume($options, "cdn_subdomain", Cloudinary::config_get("cdn_subdomain")); - $secure_cdn_subdomain = Cloudinary::option_consume($options, "secure_cdn_subdomain", Cloudinary::config_get("secure_cdn_subdomain")); - $cname = Cloudinary::option_consume($options, "cname", Cloudinary::config_get("cname")); - $shorten = Cloudinary::option_consume($options, "shorten", Cloudinary::config_get("shorten")); - $sign_url = Cloudinary::option_consume($options, "sign_url", Cloudinary::config_get("sign_url")); - $api_secret = Cloudinary::option_consume($options, "api_secret", Cloudinary::config_get("api_secret")); - $url_suffix = Cloudinary::option_consume($options, "url_suffix", Cloudinary::config_get("url_suffix")); - $use_root_path = Cloudinary::option_consume($options, "use_root_path", Cloudinary::config_get("use_root_path")); - $auth_token = Cloudinary::option_consume($options, "auth_token"); - if (is_array($auth_token) ) { - $auth_token = array_merge(self::config_get("auth_token", array()), $auth_token); - } elseif (is_null($auth_token)) { - $auth_token = self::config_get("auth_token"); - } - - if (!$private_cdn and !empty($url_suffix)) { - throw new InvalidArgumentException("URL Suffix only supported in private CDN"); - } - - if (!$source) return $source; - - if (preg_match("/^https?:\//i", $source)) { - if ($type == "upload") return $source; - } - - $resource_type_and_type = Cloudinary::finalize_resource_type($resource_type, $type, $url_suffix, $use_root_path, $shorten); - $sources = Cloudinary::finalize_source($source, $format, $url_suffix); - $source = $sources["source"]; - $source_to_sign = $sources["source_to_sign"]; - - if (strpos($source_to_sign, "/") && !preg_match("/^https?:\//", $source_to_sign) && !preg_match("/^v[0-9]+/", $source_to_sign) && empty($version)) { - $version = "1"; - } - $version = $version ? "v" . $version : NULL; - - $signature = NULL; - if ($sign_url && !$auth_token) { - $to_sign = implode("/", array_filter(array($transformation, $source_to_sign))); - $signature = str_replace(array('+','/','='), array('-','_',''), base64_encode(sha1($to_sign . $api_secret, TRUE))); - $signature = 's--' . substr($signature, 0, 8) . '--'; - } - - $prefix = Cloudinary::unsigned_download_url_prefix($source, $cloud_name, $private_cdn, $cdn_subdomain, $secure_cdn_subdomain, - $cname, $secure, $secure_distribution); - - $source = preg_replace( "/([^:])\/+/", "$1/", implode( "/", array_filter( array( - $prefix, - $resource_type_and_type, - $signature, - $transformation, - $version, - $source - ) ) ) ); - - if( $sign_url && $auth_token) { - $path = parse_url($source, PHP_URL_PATH); - $token = \Cloudinary\AuthToken::generate(array_merge($auth_token, array( "url" => $path))); - $source = $source . "?" . $token; - } - return $source; - } - - private static function finalize_source($source, $format, $url_suffix) { - $source = preg_replace('/([^:])\/\//', '$1/', $source); - if (preg_match('/^https?:\//i', $source)) { - $source = Cloudinary::smart_escape($source); - $source_to_sign = $source; - } else { - $source = Cloudinary::smart_escape(rawurldecode($source)); - $source_to_sign = $source; - if (!empty($url_suffix)) { - if (preg_match('/[\.\/]/i', $url_suffix)) throw new InvalidArgumentException("url_suffix should not include . or /"); - $source = $source . '/' . $url_suffix; - } - if (!empty($format)) { - $source = $source . '.' . $format ; - $source_to_sign = $source_to_sign . '.' . $format ; - } - } - return array("source" => $source, "source_to_sign" => $source_to_sign); - } - - private static function finalize_resource_type($resource_type, $type, $url_suffix, $use_root_path, $shorten) { - if (empty($type)) { - $type = "upload"; - } - - if (!empty($url_suffix)) { - if ($resource_type == "image" && $type == "upload") { - $resource_type = "images"; - $type = NULL; - } else if ($resource_type == "image" && $type == "private") { - $resource_type = "private_images"; - $type = NULL; - } else if ($resource_type == "raw" && $type == "upload") { - $resource_type = "files"; - $type = NULL; - } else { - throw new InvalidArgumentException("URL Suffix only supported for image/upload, image/private and raw/upload"); - } - } - - if ($use_root_path) { - if (($resource_type == "image" && $type == "upload") || ($resource_type == "images" && empty($type))) { - $resource_type = NULL; - $type = NULL; - } else { - throw new InvalidArgumentException("Root path only supported for image/upload"); - } - } - if ($shorten && $resource_type == "image" && $type == "upload") { - $resource_type = "iu"; - $type = NULL; - } - $out = ""; - if (!empty($resource_type)) { - $out = $resource_type; - } - if (!empty($type)) { - $out = $out . '/' . $type; - } - return $out; - } - - // cdn_subdomain and secure_cdn_subdomain - // 1) Customers in shared distribution (e.g. res.cloudinary.com) - // if cdn_domain is true uses res-[1-5].cloudinary.com for both http and https. Setting secure_cdn_subdomain to false disables this for https. - // 2) Customers with private cdn - // if cdn_domain is true uses cloudname-res-[1-5].cloudinary.com for http - // if secure_cdn_domain is true uses cloudname-res-[1-5].cloudinary.com for https (please contact support if you require this) - // 3) Customers with cname - // if cdn_domain is true uses a[1-5].cname for http. For https, uses the same naming scheme as 1 for shared distribution and as 2 for private distribution. - private static function unsigned_download_url_prefix($source, $cloud_name, $private_cdn, $cdn_subdomain, $secure_cdn_subdomain, $cname, $secure, $secure_distribution) { - $shared_domain = !$private_cdn; - $prefix = NULL; - if ($secure) { - if (empty($secure_distribution) || $secure_distribution == Cloudinary::OLD_AKAMAI_SHARED_CDN) { - $secure_distribution = $private_cdn ? $cloud_name . '-res.cloudinary.com' : Cloudinary::SHARED_CDN; - } - - if (empty($shared_domain)) { - $shared_domain = ($secure_distribution == Cloudinary::SHARED_CDN); - } - - if (is_null($secure_cdn_subdomain) && $shared_domain) { - $secure_cdn_subdomain = $cdn_subdomain ; - } - - if ($secure_cdn_subdomain) { - $secure_distribution = str_replace('res.cloudinary.com', "res-" . Cloudinary::domain_shard($source) . ".cloudinary.com", $secure_distribution); - } - - $prefix = "https://" . $secure_distribution; - } else if ($cname) { - $subdomain = $cdn_subdomain ? "a" . Cloudinary::domain_shard($source) . '.' : ""; - $prefix = "http://" . $subdomain . $cname; - } else { - $host = implode(array($private_cdn ? $cloud_name . "-" : "", "res", $cdn_subdomain ? "-" . Cloudinary::domain_shard($source) : "", ".cloudinary.com")); - $prefix = "http://" . $host; - } - if ($shared_domain) { - $prefix = $prefix . '/' . $cloud_name; - } - return $prefix; - } - - private static function domain_shard($source) { - return (((crc32($source) % 5) + 5) % 5 + 1); - } - - // [/][/][v/][.][#] - // Warning: $options are being destructively updated! - public static function check_cloudinary_field($source, &$options=array()) { - $IDENTIFIER_RE = "~" . - "^(?:([^/]+)/)??(?:([^/]+)/)??(?:(?:v(\\d+)/)(?:([^#]+)/)?)?" . - "([^#/]+?)(?:\\.([^.#/]+))?(?:#([^/]+))?$" . - "~"; - $matches = array(); - if (!(is_object($source) && method_exists($source, 'identifier'))) { - return $source; - } - $identifier = $source->identifier(); - if (!$identifier || strstr(':', $identifier) !== false || !preg_match($IDENTIFIER_RE, $identifier, $matches)) { - return $source; - } - $optionNames = array('resource_type', 'type', 'version', 'folder', 'public_id', 'format'); - foreach ($optionNames as $index => $optionName) { - if (@$matches[$index+1]) { - $options[$optionName] = $matches[$index+1]; - } - } - return Cloudinary::option_consume($options, 'public_id'); - } - - // Based on http://stackoverflow.com/a/1734255/526985 - private static function smart_escape($str) { - $revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%3A'=>':', '%2F'=>'/'); - return strtr(rawurlencode($str), $revert); - } - - public static function cloudinary_api_url($action = 'upload', $options = array()) { - $cloudinary = Cloudinary::option_get($options, "upload_prefix", Cloudinary::config_get("upload_prefix", "https://api.cloudinary.com")); - $cloud_name = Cloudinary::option_get($options, "cloud_name", Cloudinary::config_get("cloud_name")); - if (!$cloud_name) throw new InvalidArgumentException("Must supply cloud_name in options or in configuration"); - $resource_type = Cloudinary::option_get($options, "resource_type", "image"); - return implode("/", array($cloudinary, "v1_1", $cloud_name, $resource_type, $action)); - } - - public static function random_public_id() { - return substr(sha1(uniqid(Cloudinary::config_get("api_secret", "") . mt_rand())), 0, 16); - } - - public static function signed_preloaded_image($result) { - return $result["resource_type"] . "/upload/v" . $result["version"] . "/" . $result["public_id"] . - (isset($result["format"]) ? "." . $result["format"] : "") . "#" . $result["signature"]; - } - - # Utility method that uses the deprecated ZIP download API. - # @deprecated Replaced by {download_zip_url} that uses the more advanced and robust archive generation and download API - public static function zip_download_url($tag, $options=array()) { - $params = array("timestamp"=>time(), "tag"=>$tag, "transformation" => \Cloudinary::generate_transformation_string($options)); - $params = Cloudinary::sign_request($params, $options); - return Cloudinary::cloudinary_api_url("download_tag.zip", $options) . "?" . http_build_query($params); - } - - - # Returns a URL that when invokes creates an archive and returns it. - # @param options [Hash] - # @option options [String] resource_type The resource type of files to include in the archive. Must be one of image | video | raw - # @option options [String] type (upload) The specific file type of resources upload|private|authenticated - # @option options [String|Array] tags (nil) list of tags to include in the archive - # @option options [String|Array] public_ids (nil) list of public_ids to include in the archive - # @option options [String|Array] prefixes (nil) Optional list of prefixes of public IDs (e.g., folders). - # @option options [String|Array] transformations Optional list of transformations. - # The derived images of the given transformations are included in the archive. Using the string representation of - # multiple chained transformations as we use for the 'eager' upload parameter. - # @option options [String] mode (create) return the generated archive file or to store it as a raw resource and - # return a JSON with URLs for accessing the archive. Possible values download, create - # @option options [String] target_format (zip) - # @option options [String] target_public_id Optional public ID of the generated raw resource. - # Relevant only for the create mode. If not specified, random public ID is generated. - # @option options [boolean] flatten_folders (false) If true, flatten public IDs with folders to be in the root of the archive. - # Add numeric counter to the file name in case of a name conflict. - # @option options [boolean] flatten_transformations (false) If true, and multiple transformations are given, - # flatten the folder structure of derived images and store the transformation details on the file name instead. - # @option options [boolean] use_original_filename Use the original file name of included images (if available) instead of the public ID. - # @option options [boolean] async (false) If true, return immediately and perform the archive creation in the background. - # Relevant only for the create mode. - # @option options [String] notification_url Optional URL to send an HTTP post request (webhook) when the archive creation is completed. - # @option options [String|Array \Cloudinary::option_get($options, "allow_missing"), - "async" => \Cloudinary::option_get($options, "async"), - "expires_at" => \Cloudinary::option_get($options, "expires_at"), - "flatten_folders" => \Cloudinary::option_get($options, "flatten_folders"), - "flatten_transformations" => \Cloudinary::option_get($options, "flatten_transformations"), - "keep_derived" => \Cloudinary::option_get($options, "keep_derived"), - "mode" => \Cloudinary::option_get($options, "mode"), - "notification_url" => \Cloudinary::option_get($options, "notification_url"), - "phash" => \Cloudinary::option_get($options, "phash"), - "prefixes" => \Cloudinary::build_array(\Cloudinary::option_get($options, "prefixes")), - "public_ids" => \Cloudinary::build_array(\Cloudinary::option_get($options, "public_ids")), - "skip_transformation_name" => \Cloudinary::option_get($options, "skip_transformation_name"), - "tags" => \Cloudinary::build_array(\Cloudinary::option_get($options, "tags")), - "target_format" => \Cloudinary::option_get($options, "target_format"), - "target_public_id" => \Cloudinary::option_get($options, "target_public_id"), - "target_tags" => \Cloudinary::build_array(\Cloudinary::option_get($options, "target_tags")), - "timestamp" => time(), - "transformations" => \Cloudinary::build_eager(\Cloudinary::option_get($options, "transformations")), - "type" => \Cloudinary::option_get($options, "type"), - "use_original_filename" => \Cloudinary::option_get($options, "use_original_filename"), - ); - array_walk($params, function (&$value, $key){ $value = (is_bool($value) ? ($value ? "1" : "0") : $value);}); - return array_filter($params,function($v){ return !is_null($v) && ($v !== "" );}); - } - - public static function build_eager($transformations) { - $eager = array(); - foreach (\Cloudinary::build_array($transformations) as $trans) { - $transformation = $trans; - $format = \Cloudinary::option_consume($transformation, "format"); - $single_eager = implode("/", array_filter(array(\Cloudinary::generate_transformation_string($transformation), $format))); - array_push($eager, $single_eager); - } - return implode("|", $eager); - } - - public static function private_download_url($public_id, $format, $options = array()) { - $cloudinary_params = Cloudinary::sign_request(array( - "timestamp" => time(), - "public_id" => $public_id, - "format" => $format, - "type" => Cloudinary::option_get($options, "type"), - "attachment" => Cloudinary::option_get($options, "attachment"), - "expires_at" => Cloudinary::option_get($options, "expires_at") - ), $options); - - return Cloudinary::cloudinary_api_url("download", $options) . "?" . http_build_query($cloudinary_params); - } - - public static function sign_request($params, &$options) { - $api_key = Cloudinary::option_get($options, "api_key", Cloudinary::config_get("api_key")); - if (!$api_key) throw new \InvalidArgumentException("Must supply api_key"); - $api_secret = Cloudinary::option_get($options, "api_secret", Cloudinary::config_get("api_secret")); - if (!$api_secret) throw new \InvalidArgumentException("Must supply api_secret"); - - # Remove blank parameters - $params = array_filter($params, function($v){ return isset($v) && $v !== "";}); - - $params["signature"] = Cloudinary::api_sign_request($params, $api_secret); - $params["api_key"] = $api_key; - - return $params; - } - - public static function api_sign_request($params_to_sign, $api_secret) { - $params = array(); - foreach ($params_to_sign as $param => $value) { - if (isset($value) && $value !== "") { - if (!is_array($value)) { - $params[$param] = $value; - } else if (count($value) > 0) { - $params[$param] = implode(",", $value); - } - } - } - ksort($params); - $join_pair = function($key, $value) { return $key . "=" . $value; }; - $to_sign = implode("&", array_map($join_pair, array_keys($params), array_values($params))); - return sha1($to_sign . $api_secret); - } - - public static function html_attrs($options, $only = NULL) { - $attrs = array(); - foreach($options as $k => $v) { - $key = $k; - $value = $v; - if (is_int($k)) { - $key = $v; - $value = ""; - } - if (is_array($only) && array_search($key, $only) !== FALSE || !is_array($only)) { - $attrs[$key] = $value; - } - } - ksort($attrs); - - $join_pair = function($key, $value) { - $out = $key; - if (!empty($value)) { - $out .= '=\'' . $value . '\''; - } - return $out; - }; - return implode(" ", array_map($join_pair, array_keys($attrs), array_values($attrs))); - } -} - -require_once(join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), 'Helpers.php'))); diff --git a/lib/Cloudinary/CloudinaryField.php b/lib/Cloudinary/CloudinaryField.php deleted file mode 100644 index 455e207..0000000 --- a/lib/Cloudinary/CloudinaryField.php +++ /dev/null @@ -1,54 +0,0 @@ -_identifier = $identifier; - } - - public function __toString() { - return explode("#", $this->identifier())[0]; - } - - public function identifier() { - return $this->_identifier; - } - - public function url($options = array()) { - if (!$this->_identifier) { - // TODO: Error? - return; - } - return cloudinary_url($this, $options); - } - - public function upload($file, $options = array()) { - $options['return_error'] = false; - $ret = \Cloudinary\Uploader::upload($file, $options); - $preloaded = new \Cloudinary\PreloadedFile(\Cloudinary::signed_preloaded_image($ret)); - if ($this->verifyUpload && !$preloaded.is_valid()) { - throw new \Exception("Error! Couldn't verify cloudinary response!"); - } - $this->_identifier = $preloaded->extended_identifier(); - } - - public function delete() { - $options['return_error'] = false; - $ret = \Cloudinary\Uploader::destroy($this->_identifier); - unset($this->_identifier); - } - - public function verify() { - $preloaded = new \Cloudinary\PreloadedFile($this->_identifier); - return $preloaded->is_valid(); - } -} diff --git a/lib/Cloudinary/Helpers.php b/lib/Cloudinary/Helpers.php deleted file mode 100644 index 8403916..0000000 --- a/lib/Cloudinary/Helpers.php +++ /dev/null @@ -1,249 +0,0 @@ -TRUE, "upload_preset"=>$upload_preset))); - } - - function cl_image_upload_tag($field, $options = array()) - { - return cl_upload_tag($field, $options); - } - - function cl_upload_tag($field, $options = array()) - { - $html_options = Cloudinary::option_get($options, "html", array()); - - $classes = array("cloudinary-fileupload"); - if (isset($html_options["class"])) { - array_unshift($classes, Cloudinary::option_consume($html_options, "class")); - } - $tag_options = array_merge($html_options, array("type" => "file", "name" => "file", - "data-url" => cl_upload_url($options), - "data-form-data" => cl_upload_tag_params($options), - "data-cloudinary-field" => $field, - "class" => implode(" ", $classes), - )); - if (array_key_exists('chunk_size', $options)) $tag_options['data-max-chunk-size'] = $options['chunk_size']; - return ''; - } - - function cl_form_tag($callback_url, $options = array()) - { - $form_options = Cloudinary::option_get($options, "form", array()); - - $options["callback_url"] = $callback_url; - - $params = Cloudinary\Uploader::build_upload_params($options); - $params = Cloudinary::sign_request($params, $options); - - $api_url = Cloudinary::cloudinary_api_url("upload", $options); - - $form = "
\n"; - foreach ($params as $key => $value) { - $form .= " $key, "value" => $value, "type" => "hidden")) . "/>\n"; - } - $form .= "
\n"; - - return $form; - } - - // Examples - // cl_image_tag("israel.png", array("width"=>100, "height"=>100, "alt"=>"hello") # W/H are not sent to cloudinary - // cl_image_tag("israel.png", array("width"=>100, "height"=>100, "alt"=>"hello", "crop"=>"fit") # W/H are sent to cloudinary - function cl_image_tag($source, $options = array()) { - $source = cloudinary_url_internal($source, $options); - if (isset($options["html_width"])) $options["width"] = Cloudinary::option_consume($options, "html_width"); - if (isset($options["html_height"])) $options["height"] = Cloudinary::option_consume($options, "html_height"); - - $client_hints = Cloudinary::option_consume($options, "client_hints", Cloudinary::config_get("client_hints")); - $responsive = Cloudinary::option_consume($options, "responsive"); - $hidpi = Cloudinary::option_consume($options, "hidpi"); - if (($responsive || $hidpi) && !$client_hints) { - $options["data-src"] = $source; - $classes = array($responsive ? "cld-responsive" : "cld-hidpi"); - $current_class = Cloudinary::option_consume($options, "class"); - if ($current_class) array_unshift($classes, $current_class); - $options["class"] = implode(" ", $classes); - $source = Cloudinary::option_consume($options, "responsive_placeholder", Cloudinary::config_get("responsive_placeholder")); - if ($source == "blank") { - $source = Cloudinary::BLANK; - } - } - $html = ""; - return $html; - } - - function fetch_image_tag($url, $options = array()) { - $options["type"] = "fetch"; - return cl_image_tag($url, $options); - } - - function facebook_profile_image_tag($profile, $options = array()) { - $options["type"] = "facebook"; - return cl_image_tag($profile, $options); - } - - function gravatar_profile_image_tag($email, $options = array()) { - $options["type"] = "gravatar"; - $options["format"] = "jpg"; - return cl_image_tag(hash('sha256', strtolower(trim($email))), $options); - } - - function twitter_profile_image_tag($profile, $options = array()) { - $options["type"] = "twitter"; - return cl_image_tag($profile, $options); - } - - function twitter_name_profile_image_tag($profile, $options = array()) { - $options["type"] = "twitter_name"; - return cl_image_tag($profile, $options); - } - - function cloudinary_js_config() { - $params = array(); - foreach (Cloudinary::$JS_CONFIG_PARAMS as $param) { - $value = Cloudinary::config_get($param); - if ($value) $params[$param] = $value; - } - return "\n"; - } - - function cloudinary_url($source, $options = array()) { - return cloudinary_url_internal($source, $options); - } - function cloudinary_url_internal($source, &$options = array()) { - if (!isset($options["secure"])) { - $options["secure"] = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) - || ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ); - } - - return Cloudinary::cloudinary_url($source, $options); - } - - function cl_sprite_url($tag, $options = array()) { - if (substr($tag, -strlen(".css")) != ".css") { - $options["format"] = "css"; - } - $options["type"] = "sprite"; - return cloudinary_url_internal($tag, $options); - } - - function cl_sprite_tag($tag, $options = array()) { - return ""; - } - - function default_poster_options() { return array( 'format' => 'jpg', 'resource_type' => 'video' ); } - function default_source_types() { return array('webm', 'mp4', 'ogv'); } - # Returns a url for the given source with +options+ - function cl_video_path($source, $options = array()) { - $options = array_merge( array('resource_type' => 'video'), $options); - return cloudinary_url_internal($source, $options); - } - - # Returns an HTML img tag with the thumbnail for the given video +source+ and +options+ - function cl_video_thumbnail_tag($source, $options = array()) { - return cl_image_tag($source, array_merge(default_poster_options(),$options)); - } - - # Returns a url for the thumbnail for the given video +source+ and +options+ - function cl_video_thumbnail_path($source, $options = array()) { - $options = array_merge(default_poster_options(), $options); - return cloudinary_url_internal($source, $options); - } - - # Creates an HTML video tag for the provided +source+ - # - # ==== Options - # * source_types - Specify which source type the tag should include. defaults to webm, mp4 and ogv. - # * source_transformation - specific transformations to use for a specific source type. - # * poster - override default thumbnail: - # * url: provide an ad hoc url - # * options: with specific poster transformations and/or Cloudinary +:public_id+ - # - # ==== Examples - # cl_video_tag("mymovie.mp4") - # cl_video_tag("mymovie.mp4", array('source_types' => 'webm')) - # cl_video_tag("mymovie.ogv", array('poster' => "myspecialplaceholder.jpg")) - # cl_video_tag("mymovie.webm", array('source_types' => array('webm', 'mp4'), 'poster' => array('effect' => 'sepia'))) - function cl_video_tag($source, $options = array()) { - $source = preg_replace('/\.(' . implode('|', default_source_types()) . ')$/', '', $source); - - $source_types = Cloudinary::option_consume($options, 'source_types', array()); - $source_transformation = Cloudinary::option_consume($options, 'source_transformation', array()); - $fallback = Cloudinary::option_consume($options, 'fallback_content', ''); - - if (empty($source_types)) { - $source_types = default_source_types(); - } - $video_options = $options; - - if (array_key_exists('poster', $video_options)) { - if (is_array($video_options['poster'])) { - if (array_key_exists('public_id', $video_options['poster'])) { - $video_options['poster'] = cloudinary_url_internal($video_options['poster']['public_id'], $video_options['poster']); - } else { - $video_options['poster'] = cl_video_thumbnail_path($source, $video_options['poster']); - } - } - } else { - $video_options['poster'] = cl_video_thumbnail_path($source, $options); - } - - if (empty($video_options['poster'])) unset($video_options['poster']); - - - $html = ''; - return $html; - } -} diff --git a/lib/Cloudinary/PreloadedFile.php b/lib/Cloudinary/PreloadedFile.php deleted file mode 100644 index 4be08d5..0000000 --- a/lib/Cloudinary/PreloadedFile.php +++ /dev/null @@ -1,52 +0,0 @@ -resource_type = $matches[1]; - $this->type = $matches[2]; - $this->version = $matches[3]; - $this->filename = $matches[4]; - $this->signature = $matches[5]; - $public_id_and_format = $this->split_format($this->filename); - $this->public_id = $public_id_and_format[0]; - $this->format = $public_id_and_format[1]; - } else { - throw new \InvalidArgumentException("Invalid preloaded file info"); - } - } - - public function is_valid() { - $public_id = $this->resource_type == "raw" ? $this->filename : $this->public_id; - $expected_signature = \Cloudinary::api_sign_request(array("public_id" => $public_id, "version" => $this->version), \Cloudinary::config_get("api_secret")); - return $this->signature == $expected_signature; - } - - protected function split_format($identifier) { - $last_dot = strrpos($identifier, "."); - - if ($last_dot === false) { - return array($identifier, NULL); - } - $public_id = substr($identifier, 0, $last_dot); - $format = substr($identifier, $last_dot+1); - return array($public_id, $format); - } - - public function identifier() { - return "v" . $this->version . "/" . $this->filename; - } - - public function extended_identifier() { - return $this->resource_type . "/" . $this->type . "/" . $this->identifier(); - } - - public function __toString() { - return $this->resource_type . "/" . $this->type . "/v" . $this->version . "/" . $this->filename . "#" . $this->signature; - } - } -} diff --git a/lib/Cloudinary/Search.php b/lib/Cloudinary/Search.php deleted file mode 100644 index dd419d8..0000000 --- a/lib/Cloudinary/Search.php +++ /dev/null @@ -1,65 +0,0 @@ -query_hash = array( - 'sort_by' => array(), - 'aggregate' => array(), - 'with_field' => array() - ); - } - - public function expression($value) { - $this->query_hash['expression'] = $value; - return $this; - } - - public function max_results($value) { - $this->query_hash['max_results'] = $value; - return $this; - } - - public function next_cursor($value) { - $this->query_hash['next_cursor'] = $value; - return $this; - } - - public function sort_by($field_name, $dir = 'desc') { - array_push($this->query_hash['sort_by'], array($field_name => $dir)); - return $this; - } - - public function aggregate($value) { - array_push($this->query_hash['aggregate'], $value); - return $this; - } - - public function with_field($value) { - array_push($this->query_hash['with_field'], $value); - return $this; - } - - public function as_array() { - return array_filter($this->query_hash, function($value) { - return ((is_array($value) && !empty($value)) || ($value != NULL)); - }); - } - - public function execute($options = array()) { - $api = new Api(); - $uri = array('resources/search'); - $options = array_merge($options, array('content_type' => 'application/json')); - $method = 'post'; - return $api->call_api( $method, $uri, $this->as_array(), $options); - } - -} - -} - -?> \ No newline at end of file diff --git a/lib/CloudinaryExtension/composer.json b/lib/CloudinaryExtension/composer.json new file mode 100644 index 0000000..22cea26 --- /dev/null +++ b/lib/CloudinaryExtension/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "cloudinary/cloudinary_php": "^1.16" + } +} diff --git a/lib/CloudinaryExtension/composer.lock b/lib/CloudinaryExtension/composer.lock new file mode 100644 index 0000000..6bc57d6 --- /dev/null +++ b/lib/CloudinaryExtension/composer.lock @@ -0,0 +1,70 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "3265de913ba9de963f729a4f0be09a73", + "packages": [ + { + "name": "cloudinary/cloudinary_php", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/cloudinary/cloudinary_php.git", + "reference": "e33619e48ea8fa0350c007d640777091bfa4fdbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cloudinary/cloudinary_php/zipball/e33619e48ea8fa0350c007d640777091bfa4fdbc", + "reference": "e33619e48ea8fa0350c007d640777091bfa4fdbc", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ], + "files": [ + "src/Helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cloudinary", + "homepage": "https://github.com/cloudinary/cloudinary_php/graphs/contributors" + } + ], + "description": "Cloudinary PHP SDK", + "homepage": "https://github.com/cloudinary/cloudinary_php", + "keywords": [ + "cdn", + "cloud", + "cloudinary", + "image management", + "sdk" + ], + "time": "2019-11-28T15:57:33+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/lib/CloudinaryExtension/vendor/autoload.php b/lib/CloudinaryExtension/vendor/autoload.php new file mode 100644 index 0000000..b287c9f --- /dev/null +++ b/lib/CloudinaryExtension/vendor/autoload.php @@ -0,0 +1,7 @@ + + deny from all + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.travis.yml b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.travis.yml new file mode 100644 index 0000000..287e1c7 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/.travis.yml @@ -0,0 +1,16 @@ +language: php +dist: trusty +php: + - '7.3' + - '7.2' + - '7.1' + - '7.0' + - '5.6' + - '5.5' + - '5.4' + +script: vendor/bin/phpunit +install: composer install +branches: + except: + - staging-test diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/CHANGELOG.md b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/CHANGELOG.md new file mode 100644 index 0000000..0d8221f --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/CHANGELOG.md @@ -0,0 +1,516 @@ + +1.16.0 / 2019-11-28 +=================== + +New functionality and features +------------------------------ + + * Add `update_metadata` Upload API. + * Add `metadata` parameter to `upload` and `explicit` Upload APIs. + +1.15.1 / 2019-10-30 +=================== + + * Fix `Undefined index` warning in `cl_upload_url` + * Fix PHP7.4 deprecation warnings + * Detect data URLs with suffix in mime type + * Fix samples when using without composer + +1.15.0 / 2019-10-02 +=================== + +New functionality and features +------------------------------ + + * Add `create_folder` admin API + * Add `max_results` and `next_cursor` for folders APIs + * Add `live` parameter to `create_upload_preset` and `update_upload_preset` APIs + * Add `cinemagraph_analysis` parameter + * Add `duration` and `initial_duration` predefined variables + * Add `pow` transformation operator + * Allow generating archive with multiple resource types + +Other Changes +------------- + + * Fix transformations API call + * Fix `AuthToken` `UNSAFE` invalid regex + * Fix `normalize_expression` to ignore predefined variables + * Validate `CLOUDINARY_URL` scheme + * Fix travis build + +1.14.0 / 2019-05-13 +=================== + +New functionality and features +------------------------------ + * Add `delete_folder` admin API + * Add `filename` parameter to `upload` API + * Add `derived_next_cursor` to `resource` admin API + * Add `SignatureVerifier` class + * Add `force_version` option to delivery urls + +Other Changes +------------- + * Fix notice message in `generate_sprite` method + * Fix acl and url escaping in auth_token generation + * Ignore URL in AuthToken generation if ACL is provided + * Fix base64 regex validation template + * Add support of PHP 7.3 + * Improve error handling when trying to upload non-existing file. + * Add `test_secure_distribution_from_config` unit test + * Remove redundant quotes in `update_version.sh` + +1.13.0 / 2018-12-16 +=================== + +New functionality and features +------------------------------ + + * Add custom `pre` function support + * Add `fps` video transformation parameter + * Add `keyframe_interval` video transformation parameter + * Add `quality_analysis` upload parameter + +Other Changes +------------- + + * Fix file extension in `upload_large` + * Fix for Uploader.php to prevent uploads failing + * Fix missing padding in `base64url_encode` + * Mock upload presets tests + * Fix `test_detection` unit test + * Remove secure variables from travis.yml + +1.12.0 / 2018-10-11 +=================== + +New functionality and features +------------------------------ + * Add support of custom codecs in video tag + * Add Google Cloud Storage protocol support in upload + +Other Changes +------------- + * Add `update_version.sh` tool + * Rename `custom_action` to `custom_function` + +1.11.1 / 2018-09-12 +=================== + + * Update version number in files + +1.11.0 / 2018-09-07 +=================== + +New functionality and features +------------------------------ + * Add responsive breakpoints cache + * Add `cl_picture_tag` and `cl_source_tag` helpers + * Add support for web assembly and lambda functions in transformations. + * Add `font_antialiasing` and `font_hinting` text style parameters + * Add `cl_client_hints_meta_tag` helper + * Add support of `named` parameter in list transformations API + * Add support of `auto` value for `start_offset` transformation parameter (#123) + * Add `notification_url` param to the `update` method + * Add `format` parameter to responsive breakpoints settings + * Add legacy autoloader + +Other Changes +------------- + * Improve PSR-2 compliance + PSR-4 autoload + documentation update + * Update `radius` transformation parameter + * Add `base64url_encode` internal helper + * Fix base64 encoding in urls. + * Use `X-Unique-Upload-Id` header in `upload_large` + * Fix sample project includes. + +1.10.0 / 2018-05-10 +=================== + +New functionality and features +------------------------------ + + * Add `srcset` and `sizes` attributes to the `img` tag (#117) + * Support special characters in public IDs, tags, etc in Admin API calls + * Add php version to user agent (#114) + +Other Changes +------------- + * Fix URL-encode parts of api-uri + * Add `test_url_encoding` unit test + * Fix `test_transformation_cursor_results` unit test + * Fix `test_raw_conversion` unit test + * Fix streaming profiles cleanup after unit tests + * Add PHPDoc to Cloudinary\Api and Exceptions + * Update PHP version requirement + +1.9.0 / 2018-03-12 +================== + +New functionality and features +------------------------------ + + * Add `delete_derived_by_transformation` API + * Add `remove_all_tags` to `Uploader` + * Add `resources_by_context` to `Api` + * Add `access_control` parameter to uploader `upload` and api `update` + * Support remote URLs in upload_large API + * Add `transformations` parameter to delete_resources APIs + * Support `quality_override` param for `update` and `explicit` api + * Adding Streaming Profile to transformation. + * Add URL suffix support for image/authenticated, video/upload + * Remove restriction of URL suffix in shared CDN + * Support string $public_ids parameter in `delete_derived_by_transformation` + * Support `0` and `0.0` in `norm_range_value` function. Fixes #64 (#97) + +Other Changes +------------- + + * Improve PSR-2 compliance (#101) + * Add `next_cursor` test of `transformation()` API + * Add `encode_array_to_json` + * Fix encoding of attributes and url in html tags. Fixes #87 + * Add PHP versions to TravisCI setup + * Add a test of streaming_profile parameter + * Fix Categorization test + * Add `UNIQUE_TEST_ID` to test helper + * Remove `test_auto_tagging` unit test (#95) + * Update Readme.md for setup with composer + * Remove unreachable code. Fixes #66 + +1.8.0 / 2017-05-03 +================== + +New functionality and features +------------------------------ + + * Advanced search API + * Add `async` parameter to upload parameters. + +Other Changes +------------- + + * Update tests to use `TestHelper` + * Add compatibility for newer PHPUnit versions + +1.7.2 / 2017-04-03 +================== + + * Add update ocr parameters test + * Merge pull request #71 from jtabet/fix-floats-issue + * Added a number_format on float values in the transformation string + * Add ocr parameters tests + * Fix variables order. Add variables order tests. + +1.7.1 / 2017-03-13 +================== + + * Update phpunit to 5.7.* + * Update travis.yml to test 5.6 and 7.0 (matching phpunit) + * Don't normalize negative numbers. Fixed #68. + +1.7.0 / 2017-03-09 +================== + +New functionality and features +------------------------------ + + * User defined variables + * Add `async` parameter to upload params (#65) + * Add `fetch` prefix to overlay path + * Support fetch overlay underlay + +Other Changes +------------- + + * Rename items and add missing variables. + +1.6.2 / 2017-02-23 +================== + + * Add URL authentication. + * Rename `auth_token`. + * Support nested values in `CLOUDINARY_URL` + * Fix archive test. + * Add a test for `build_eager`. + +1.6.1 / 2017-02-16 +================== + + * Allow 'invalidate' param in 'delete_transformation' + * Upgrade Travis test from 7.0 to 7.1 + * Merge pull request #61 from dragosprotung/patch-1 + * Merge pull request #63 from cloudinary/support-invalidate-in-delete-transformation + * Deleted stub file + +1.6.0 / 2017-01-30 +================== + +New functionality and features +------------------------------ + + * Add Akamai token generator + +Other Changes +------------- + + * Revert using VERSION to set USER_AGENT. Fixes #58. + * Fix USER_AGENT version. + +1.5.0 / 2017-01-19 +================== + +New functionality and features +------------------------------ + + * New `add_context` & `remove_all_context` API + * support suffix url for private images + * Escape ‘|' and ‘=‘ characters in context values + * Support ‘iw’ and ‘ih’ transformation parameters for indicating initial width or height + * Support `to_type` parameter in `rename` + +Other Changes +------------- + + * Fix folder listing test + * Add test for {effect: art:incognito} + * expending retrieved list of transformation to allow test to pass properly + * Add test case for 'to_type' + fix face_coordintes exceeding image boundaries + * Fix typo in the archive `expires_at` parameter + * Remove `$name` from call to `list_streaming_profiles` + +1.4.2 / 2016-10-28 +================== + +New functionality and features +------------------------------ + + * Add streaming profiles API + * Merge pull request #40 from sergey-safonov/feature/config-connection-timeout + * Allow specify connection timeout in config + +1.4.1 / 2016-08-14 +================== + +New functionality and features +------------------------------ + + * Add `allow_missing` parameter to the archive api + * Add `skip_transformation_name` parameter to `create_archive`. + * Add `expire_at` parameter to `create_archive`. + * Add `transformation` parameter to `delete_resources`. + * Add original height and width test. + * Allow `cloud_name` to be specified in options array + * Add TravisCI configuration + * Add badges to README.md + * Add license file + * Update sample project: use cdnjs instead of locally stored JS files and bootstrap with `cloudinary_fileupload()`. + +Other Changes +------------- + + * Merge pull request #38 from RobinMalfait/patch-1 + * Merge pull request #37 from Welkio/master + * Merge pull request #41 from DacotahHarvey + * Fix Zip tests. + * Add default message to assertPost, assertGet, assertPut, assertDelete. Add optional message to assertUrl. + * Add assert helper methods. + * Add test for `gravity: auto` parameter. + * Use eager transformation in timeout test. + * Remove `overwrite` test. + * Mock `eager` test. + * Use random number for test tag. + * Add `url_prefix` to the tests. + * Mock restore tests. + * Mock upload_presets tests. + * Mock start_at test + * Separare `mock` to `apiMock` and `uploadMock`. Use random public_ids in API tests. + * Update README.md + +1.4.0 / 2016-06-22 +================== + +New functionality and features +------------------------------ + + * New configuration parameter `:client_hints` + * Enhanced auto `width` values + * Enhanced `quality` values + +Other Changes +------------- + + * Disable explicit test + +1.3.2 / 2016-06-02 +================== + + * Add `next_cursor` to `Api->transformation()`. + * Remove empty parameters from `update()` calls + * Add tests + * Add TestHelper.php. Create new `Curl` class. + * Use constants in tests + * Use comma in delete resources test + +1.3.1 / 2016-03-22 +================== + +New functionality and features +------------------------------ + + * Conditional Transformations + +Other Changes +------------- + + * Fix categorization test + * Use original file name as `public_id` for server side upload (sample project). + * Remove support for `exclusive` in `add_tag` + * Pass parameters in body unless it's a `get` call + * Support PHP versions before 5.4 + * Use `isset` instead of `!= NULL` + +1.3.0 / 2016-01-28 +================== + + * New ZIP generation API. + * Support responsive_breakpoints upload/explicit parameter. + * Support line_spacing text layer parameter. + * Support array parameters in Uploader. + * Fix layer processsing + * Implement parametrized test for layers + * Better escaping for , and / in text layer + +1.2.0 / 2015-11-01 +================== + + * Escape / in overlays + * Support crc32 on 32-bit systems + * Support upload_mappings API + * Support Backup restoration API + * Support easy overlay/underlay construction + * Add script to update and commit new version + * Add invalidate parameter to rename + +1.1.4 / 2015-08-23 +================== + + * Support passing array arguments in POST body for Uploader + * Add test for #33 - huge id list in `add_tag` api. + +1.1.3 / 2015-08-19 +================== + + * Add aspect_ratio + * Add `context` and `invalidate` to the explicit API parameters. + * Fix timeout test and make test compatible with PHP 5.3 + * Replace CURLOPT_TIMEOUT_MS with CURLOPT_TIMEOUT as it is not supported before cURL 7.16.2. + * Added comments specifying curl option version requirements. + +1.1.2 / 2015-07-27 +================== + + * Fix eager ignoring format + +1.1.1 / 2015-06-2 +=================== + + + * new format and method for USER_AGENT + * support adding information to the USER_AGENT + * solve bad URLs created with secure_cdn_subdomain. Resolves #28 + +1.1.0 / 2015-04-7 +=================== + + * support video tag generation and url helpers + * support video transformation parameters: audio_codec, audio_frequency, bit_rate, video_sampling, duration, end_offset, start_offset, video_codec + * support zoom transformation parameter + * support ftp url + * allow specifying request timeout + * enable eager_async and eager_notification_url in explicit + * change upload_large's endpoint to use upload with content_range header + * support chunk_size in cl_upload_tag + +1.0.17 / 2015-02-10 +=================== + + * Add a changelog + * Add support for 'overwrite' option in upload + * Allow root path for shared CDN + +1.0.16 / 2014-12-22 +=================== + + * Support folder listing + * Secure domain sharding + * Don't sign version component + * URL suffix and root path support + * Support tags in upload large + * Make call_api public + +1.0.15 / 2014-11-2 +=================== + + * Support api_proxy parameter for setting up a proxy between the PHP client and Cloudinary + * Fixed HHVM compatibility issue + +1.0.14 / 2014-10-15 +=================== + + * Remove force SSLv3 + +1.0.13 / 2014-09-22 +=================== + + * Force SSLv3 when contacting the Cloudinary API + * Support invalidation in bulk deletion req (if enabled in your account) + +1.0.12 / 2014-08-24 +=================== + + * Support custom_coordinates is upload and update + * Support coordinates in resource details + * Support return_delete_token parameter in upload and cl_image_upload_tag + * Correctly escape parentheses + +1.0.11 / 2014-07-7 +=================== + + * Support for auto dpr, auto width and responsive width + * Support for background_removal in upload and update + +1.0.10 / 2014-04-29 +=================== + + * Remove closing PHP tags + * Support upload_presets + * Support unsigned uploads + * Support start_at for resource listing + * Support phash for upload and resource details + * Better error message in case of file not found in uploader for PHP 5.5+ + +1.0.9 / 2014-02-26 +=================== + + * Admin API update method + * Admin API listing by moderation kind and status + * Support moderation status in admin API listing + * Support moderation flag in upload + * New Upload and update API parameters: moderation, ocr, raw_conversation, categorization, detection, similarity_search and auto_tagging + * Support CLOUDINARY_URL ending with / + * Support for uploading large raw files + +1.0.8 / 2014-01-21 +=================== + + * Support overwrite upload parameter + * Support specifying face coordinates in upload API + * Support specifying context (currently alt and caption) in upload API and returning context in API + * Support specifying allowed image formats in upload API + * Support listing resources in admin API by multiple public IDs + * Send User-Agent header with client library version in API request + * Support for signed-URLs to override restricted dynamic URLs + * Move helper methods and preloaded file to separate file and fix Composer autoload + * Minor fixes diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/LICENSE.txt b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/LICENSE.txt new file mode 100644 index 0000000..e6a44f1 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/LICENSE.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Cloudinary + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/README.md b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/README.md new file mode 100644 index 0000000..8799c03 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/README.md @@ -0,0 +1,216 @@ +[![Build Status](https://travis-ci.org/cloudinary/cloudinary_php.svg)](https://travis-ci.org/cloudinary/cloudinary_php) [![license](https://img.shields.io/github/license/cloudinary/cloudinary_php.svg?maxAge=2592000)]() [![Packagist](https://img.shields.io/packagist/v/cloudinary/cloudinary_php.svg?maxAge=2592000)]() [![Packagist](https://img.shields.io/packagist/dt/cloudinary/cloudinary_php.svg?maxAge=2592000)]() + +Cloudinary +========== + +Cloudinary is a cloud service that offers a solution to a web application's entire image management pipeline. + +Easily upload images to the cloud. Automatically perform smart image resizing, cropping and conversion without installing any complex software. Integrate Facebook or Twitter profile image extraction in a snap, in any dimension and style to match your website's graphics requirements. Images are seamlessly delivered through a fast CDN, and much much more. + +Cloudinary offers comprehensive APIs and administration capabilities and is easy to integrate with any web application, existing or new. + +Cloudinary provides URL and HTTP based APIs that can be easily integrated with any Web development framework. + +For PHP, Cloudinary provides an extension for simplifying the integration even further. + +## Getting started guide +![](http://res.cloudinary.com/cloudinary/image/upload/see_more_bullet.png) **Take a look at our [Getting started guide for PHP](http://cloudinary.com/documentation/php_integration#getting_started_guide)**. + + +## CakePHP ## +Dedicated CakePHP plugin is also available. You can browse the code, installation and usage information [at the `cloudinary_cake_php` repository](https://github.com/cloudinary/cloudinary_cake_php). + +## Setup ###################################################################### + +You can install through composer with: + +`composer require cloudinary/cloudinary_php` + +Or download cloudinary_php from [here](https://github.com/cloudinary/cloudinary_php/tarball/master) + +*Note: cloudinary_php require PHP 5.4* + +## Try it right away + +Sign up for a [free account](https://cloudinary.com/users/register/free) so you can try out image transformations and seamless image delivery through CDN. + +*Note: Replace `demo` in all the following examples with your Cloudinary's `cloud name`.* + +Accessing an uploaded image with the `sample` public ID through a CDN: + + http://res.cloudinary.com/demo/image/upload/sample.jpg + +![Sample](https://cloudinary-a.akamaihd.net/demo/image/upload/w_0.4/sample.jpg "Sample") + +Generating a 150x100 version of the `sample` image and downloading it through a CDN: + + http://res.cloudinary.com/demo/image/upload/w_150,h_100,c_fill/sample.jpg + +![Sample 150x100](https://cloudinary-a.akamaihd.net/demo/image/upload/w_150,h_100,c_fill/sample.jpg "Sample 150x100") + +Converting to a 150x100 PNG with rounded corners of 20 pixels: + + http://res.cloudinary.com/demo/image/upload/w_150,h_100,c_fill,r_20/sample.png + +![Sample 150x150 Rounded PNG](https://cloudinary-a.akamaihd.net/demo/image/upload/w_150,h_100,c_fill,r_20/sample.png "Sample 150x150 Rounded PNG") + +For plenty more transformation options, see our [image transformations documentation](http://cloudinary.com/documentation/image_transformations). + +Generating a 120x90 thumbnail based on automatic face detection of the Facebook profile picture of Bill Clinton: + + http://res.cloudinary.com/demo/image/facebook/c_thumb,g_face,h_90,w_120/billclinton.jpg + +![Facebook 90x120](https://cloudinary-a.akamaihd.net/demo/image/facebook/c_thumb,g_face,h_90,w_120/billclinton.jpg "Facebook 90x200") + +For more details, see our documentation for embedding [Facebook](http://cloudinary.com/documentation/facebook_profile_pictures) and [Twitter](http://cloudinary.com/documentation/twitter_profile_pictures) profile pictures. + +### Samples +You can find our simple and ready-to-use samples projects, along with documentations in the [samples folder](https://github.com/cloudinary/cloudinary_php/tree/master/samples). Please consult with the [README file](https://github.com/cloudinary/cloudinary_php/blob/master/samples/README.md), for usage and explanations. + +## Usage + +### Configuration + +Each request for building a URL of a remote cloud resource must have the `cloud_name` parameter set. +Each request to our secure APIs (e.g., image uploads, eager sprite generation) must have the `api_key` and `api_secret` parameters set. See [API, URLs and access identifiers](http://cloudinary.com/documentation/api_and_access_identifiers) for more details. + +Setting the `cloud_name`, `api_key` and `api_secret` parameters can be done either directly in each call to a Cloudinary method, by calling the Cloudinary::config(), or by using the CLOUDINARY_URL environment variable. + +### Embedding and transforming images + +Any image uploaded to Cloudinary can be transformed and embedded using powerful view helper methods: + +The following example generates the url for accessing an uploaded `sample` image while transforming it to fill a 100x150 rectangle: + + cloudinary_url("sample.jpg", array("width" => 100, "height" => 150, "crop" => "fill")) + +Another example, emedding a smaller version of an uploaded image while generating a 90x90 face detection based thumbnail: + + cloudinary_url("woman.jpg", array("width" => 90, "height" => 90, "crop" => "thumb", "gravity" => "face")) + +You can provide either a Facebook name or a numeric ID of a Facebook profile or a fan page. + +Embedding a Facebook profile to match your graphic design is very simple: + + cloudinary_url("billclinton.jpg", array("width" => 90, "height" => 130, "type" => "facebook", "crop" => "fill", "gravity" => "north_west")) + +Same goes for Twitter: + + cloudinary_url("billclinton.jpg", array("type" => "twitter_name")) + +![](http://res.cloudinary.com/cloudinary/image/upload/see_more_bullet.png) **See [our documentation](http://cloudinary.com/documentation/php_image_manipulation) for more information about displaying and transforming images in PHP**. + + + +### Upload + +Assuming you have your Cloudinary configuration parameters defined (`cloud_name`, `api_key`, `api_secret`), uploading to Cloudinary is very simple. + +The following example uploads a local JPG to the cloud: + + \Cloudinary\Uploader::upload("my_picture.jpg") + +The uploaded image is assigned a randomly generated public ID. The image is immediately available for download through a CDN: + + cloudinary_url("abcfrmo8zul1mafopawefg.jpg") + + http://res.cloudinary.com/demo/image/upload/abcfrmo8zul1mafopawefg.jpg + +You can also specify your own public ID: + + \Cloudinary\Uploader::upload("http://www.example.com/image.jpg", array("public_id" => 'sample_remote')) + + cloudinary_url("sample_remote.jpg") + + http://res.cloudinary.com/demo/image/upload/sample_remote.jpg + + +![](http://res.cloudinary.com/cloudinary/image/upload/see_more_bullet.png) **See [our documentation](http://cloudinary.com/documentation/php_image_upload) for plenty more options of uploading to the cloud from your PHP code**. + + +### cl\_image\_tag + +Returns an html image tag pointing to Cloudinary. + +Usage: + + "png", "width"=>100, "height"=>100, "crop"=>"fill") ?> + + # + + + +### cl\_image\_upload\_tag + +Returns an html input field for direct image upload, to be used in conjunction with [cloudinary\_js package](https://github.com/cloudinary/cloudinary_js/). It integrates [jQuery-File-Upload widget](https://github.com/blueimp/jQuery-File-Upload) and provides all the necessary parameters for a direct upload. +You may see a sample usage of this feature in the PhotoAlbum sample included in this project. + +Usage: + + cl_image_upload_tag(post-upload-field-name, upload-options-array) + +Parameters: + + - `post-upload-field-name` - A name of a field in the form to be updated with the uploaded file data. + If no such field exists a new hidden field will be creates. + The value format is `#`. + If the `cl_image_upload_tag` is not within an html form, this argument is ignored. + + - `upload-options-array` - upload options same as in Upload section above, with: + - html - an associative array of html attributes for the upload field + +![](http://res.cloudinary.com/cloudinary/image/upload/see_more_bullet.png) **See [our documentation](http://cloudinary.com/documentation/php_image_upload#direct_uploading_from_the_browser) for plenty more options of uploading directly from the browser**. + + +### cl\_form\_tag + +The following function returns an html form that can be used to upload the file directly to Cloudinary. The result is a redirect to the supplied callback_url. + + cl_form_tag(callback, array(...)) + +Optional parameters: + + public_id - The name of the uploaded file in Cloudinary + form - html attributes to be added to the form tag + Any other parameter that can be passed to \Cloudinary\Uploader::upload + +## Development + +### Testing + +To run the PHPUnit test suite you must first set the environment variable containing your Cloudinary URL. This can be obtained via Cloudinary's Management Console. + + export CLOUDINARY_URL=cloudinary://123456789012345:abcdeghijklmnopqrstuvwxyz12@n07t21i7 + +Next you can run your the PHPUnit suite from the root of this library: + + phpunit tests/* + +## Additional resources ########################################################## + +Additional resources are available at: + +* [Website](http://cloudinary.com) +* [Knowledge Base](http://support.cloudinary.com/forums) +* [Documentation](http://cloudinary.com/documentation) +* [Documentation for PHP integration](http://cloudinary.com/documentation/php_integration) +* [PHP image upload documentation](http://cloudinary.com/documentation/php_image_upload) +* [PHP image manipulation documentation](http://cloudinary.com/documentation/php_image_manipulation) +* [Image transformations documentation](http://cloudinary.com/documentation/image_transformations) + +## Support + +You can [open an issue through GitHub](https://github.com/cloudinary/cloudinary_php/issues). + +Contact us [http://cloudinary.com/contact](http://cloudinary.com/contact) + +Stay tuned for updates, tips and tutorials: [Blog](http://cloudinary.com/blog), [Twitter](https://twitter.com/cloudinary), [Facebook](http://www.facebook.com/Cloudinary). + +## Join the Community ########################################################## + +Impact the product, hear updates, test drive new features and more! Join [here](https://www.facebook.com/groups/CloudinaryCommunity). + +## License ####################################################################### + +Released under the MIT license. + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/autoload.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/autoload.php new file mode 100644 index 0000000..d870dfc --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/autoload.php @@ -0,0 +1,39 @@ +=5.4.0", + "ext-curl": "*", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*" + }, + "support": { + "email": "info@cloudinary.com", + "issues": "https://github.com/cloudinary/cloudinary_php/issues" + }, + "autoload": { + "classmap": ["src"], + "files": ["src/Helpers.php"] + }, + "autoload-dev": { + "psr-4": { "Cloudinary\\Test\\": "tests/" }, + "files": ["tests/TestHelper.php"] + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/composer.lock b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/composer.lock new file mode 100644 index 0000000..d93459f --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/composer.lock @@ -0,0 +1,985 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "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": "ad16b6d4a90a4e2b380e6ddb341cee61", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.4,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", + "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2016-01-25T08:17:30+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.5", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-02-19T10:16:54+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06T15:47:00+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-12-04T08:55:13+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-06-21T08:07:12+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02T06:51:40+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-05-22T07:24:03+00:00" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18T05:49:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-10-03T07:41:43+00:00" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "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" + }, + { + "name": "symfony/yaml", + "version": "v2.8.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "be720fcfae4614df204190d57795351059946a77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/be720fcfae4614df204190d57795351059946a77", + "reference": "be720fcfae4614df204190d57795351059946a77", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:36:31+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4.0", + "ext-curl": "*", + "ext-json": "*" + }, + "platform-dev": [] +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpcs.xml b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpcs.xml new file mode 100644 index 0000000..33831f6 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpcs.xml @@ -0,0 +1,23 @@ + + + cloudinary_php coding standard + + + + + + + + + + + + + + + + + + src + tests + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpunit.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpunit.php new file mode 100644 index 0000000..49ef939 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/phpunit.php @@ -0,0 +1,8 @@ + + + + + + + + tests + + + + + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/.gitignore b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/.gitignore new file mode 100644 index 0000000..edd8de6 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/.gitignore @@ -0,0 +1 @@ +settings.php diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/autoloader.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/autoloader.php new file mode 100644 index 0000000..4dfe2cb --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/autoloader.php @@ -0,0 +1,9 @@ + + + + + + + + + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb-license.txt b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb-license.txt new file mode 100644 index 0000000..a0b21de --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb-license.txt @@ -0,0 +1,329 @@ +/* + + .______. +_______ ____ __| _/\_ |__ ____ _____ ____ +\_ __ \_/ __ \ / __ | | __ \_/ __ \\__ \ / \ + | | \/\ ___// /_/ | | \_\ \ ___/ / __ \| | \ + |__| \___ >____ | |___ /\___ >____ /___| / + \/ \/ \/ \/ \/ \/ + + + +RedBean Database Objects - +Written by Gabor de Mooij (c) copyright 2009-2012 + +RedBean is DUAL Licensed BSD and GPLv2. You may choose the license that fits +best for your project. + + +BSD/GPLv2 License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +* Neither the name of RedBeanPHP nor the +names of its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY GABOR DE MOOIJ ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL GABOR DE MOOIJ BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +RedBeanPHP is Written by Gabor de Mooij (G.J.G.T de Mooij) Copyright (c) 2011. + + +GPLv2 LICENSE + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +*/ diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb.php new file mode 100644 index 0000000..85dc014 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/lib/rb.php @@ -0,0 +1,9515 @@ +____ | |___ /\___ >____ /___| / + \/ \/ \/ \/ \/ \/ + + + +RedBean Database Objects - +Written by Gabor de Mooij (c) copyright 2009-2012 + +RedBean is DUAL Licensed BSD and GPLv2. You may choose the license that fits +best for your project. + + +BSD/GPLv2 License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +* Neither the name of RedBeanPHP nor the +names of its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY GABOR DE MOOIJ ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL GABOR DE MOOIJ BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +RedBeanPHP is Written by Gabor de Mooij (G.J.G.T de Mooij) Copyright (c) 2011. + + +GPLv2 LICENSE + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +*/ + + +/** + * Interface for database drivers + * + * @file RedBean/Driver.php + * @desc Describes the API for database classes + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * The Driver API conforms to the ADODB pseudo standard + * for database drivers. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +interface RedBean_Driver { + /** + * Runs a query and fetches results as a multi dimensional array. + * + * @param string $sql SQL to be executed + * + * @return array $results result + */ + public function GetAll( $sql, $aValues=array() ); + + /** + * Runs a query and fetches results as a column. + * + * @param string $sql SQL Code to execute + * + * @return array $results Resultset + */ + public function GetCol( $sql, $aValues=array() ); + + /** + * Runs a query an returns results as a single cell. + * + * @param string $sql SQL to execute + * + * @return mixed $cellvalue result cell + */ + public function GetCell( $sql, $aValues=array() ); + + /** + * Runs a query and returns a flat array containing the values of + * one row. + * + * @param string $sql SQL to execute + * + * @return array $row result row + */ + public function GetRow( $sql, $aValues=array() ); + + /** + * Executes SQL code and allows key-value binding. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. This method has no return value. + * + * @param string $sql SQL Code to execute + * @param array $aValues Values to bind to SQL query + * + * @return void + */ + public function Execute( $sql, $aValues=array() ); + + /** + * Escapes a string for use in SQL using the currently selected + * driver driver. + * + * @param string $string string to be escaped + * + * @return string $string escaped string + */ + public function Escape( $str ); + + /** + * Returns the latest insert ID if driver does support this + * feature. + * + * @return integer $id primary key ID + */ + public function GetInsertID(); + + + /** + * Returns the number of rows affected by the most recent query + * if the currently selected driver driver supports this feature. + * + * @return integer $numOfRows number of rows affected + */ + public function Affected_Rows(); + + /** + * Toggles debug mode. In debug mode the driver will print all + * SQL to the screen together with some information about the + * results. All SQL code that passes through the driver will be + * passes on to the screen for inspection. + * This method has no return value. + * + * @param boolean $trueFalse turn on/off + * + * @return void + */ + public function setDebugMode( $tf ); + + /** + * Starts a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function CommitTrans(); + + /** + * Commits a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function StartTrans(); + + /** + * Rolls back a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function FailTrans(); +} + + +/** + * PDO Driver + * @file RedBean/PDO.php + * @desc PDO Driver + * @author Gabor de Mooij and the RedBeanPHP Community, Desfrenes + * @license BSD/GPLv2 + * + * This Driver implements the RedBean Driver API + * + * (c) copyright Desfrenes & Gabor de Mooij and the RedBeanPHP community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +class RedBean_Driver_PDO implements RedBean_Driver { + + /** + * Contains database DSN for connecting to database. + * @var string + */ + protected $dsn; + + /** + * Whether we are in debugging mode or not. + * @var boolean + */ + protected $debug = false; + + /** + * Holds an instance of Logger implementation. + * @var RedBean_Logger + */ + protected $logger = NULL; + + /** + * Holds the PDO instance. + * @var PDO + */ + protected $pdo; + + /** + * Holds integer number of affected rows from latest query + * if driver supports this feature. + * @var integer + */ + protected $affected_rows; + + /** + * Holds result resource. + * @var integer + */ + protected $rs; + + + /** + * Contains arbitrary connection data. + * @var array + */ + protected $connectInfo = array(); + + + /** + * Whether you want to use classic String Only binding - + * backward compatibility. + * @var bool + */ + public $flagUseStringOnlyBinding = false; + + /** + * Whether we are currently connected or not. + * This flag is being used to delay the connection until necessary. + * Delaying connections is a good practice to speed up scripts that + * don't need database connectivity but for some reason want to + * init RedbeanPHP. + * @var boolean + */ + protected $isConnected = false; + + /** + * Constructor. You may either specify dsn, user and password or + * just give an existing PDO connection. + * Examples: + * $driver = new RedBean_Driver_PDO($dsn, $user, $password); + * $driver = new RedBean_Driver_PDO($existingConnection); + * + * @param string|PDO $dsn database connection string + * @param string $user optional, usename to sign in + * @param string $pass optional, password for connection login + * + * @return void + */ + public function __construct($dsn, $user = null, $pass = null) { + if ($dsn instanceof PDO) { + $this->pdo = $dsn; + $this->isConnected = true; + $this->pdo->setAttribute(1002, 'SET NAMES utf8'); + $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); + // make sure that the dsn at least contains the type + $this->dsn = $this->getDatabaseType(); + } else { + $this->dsn = $dsn; + $this->connectInfo = array( 'pass'=>$pass, 'user'=>$user ); + } + } + + /** + * Establishes a connection to the database using PHP PDO + * functionality. If a connection has already been established this + * method will simply return directly. This method also turns on + * UTF8 for the database and PDO-ERRMODE-EXCEPTION as well as + * PDO-FETCH-ASSOC. + * + * @return void + */ + public function connect() { + if ($this->isConnected) return; + $user = $this->connectInfo['user']; + $pass = $this->connectInfo['pass']; + //PDO::MYSQL_ATTR_INIT_COMMAND + $this->pdo = new PDO( + $this->dsn, + $user, + $pass, + array(1002 => 'SET NAMES utf8', + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + + ) + ); + $this->pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); + $this->isConnected = true; + } + + /** + * Binds parameters. This method binds parameters to a PDOStatement for + * Query Execution. This method binds parameters as NULL, INTEGER or STRING + * and supports both named keys and question mark keys. + * + * @param PDOStatement $s PDO Statement instance + * @param array $aValues values that need to get bound to the statement + * + * @return void + */ + protected function bindParams($s,$aValues) { + foreach($aValues as $key=>&$value) { + if (is_integer($key)) { + + if (is_null($value)){ + $s->bindValue($key+1,null,PDO::PARAM_NULL); + } + elseif (!$this->flagUseStringOnlyBinding && RedBean_QueryWriter_AQueryWriter::canBeTreatedAsInt($value) && $value < 2147483648) { + $s->bindParam($key+1,$value,PDO::PARAM_INT); + } + else { + $s->bindParam($key+1,$value,PDO::PARAM_STR); + } + } + else { + if (is_null($value)){ + $s->bindValue($key,null,PDO::PARAM_NULL); + } + elseif (!$this->flagUseStringOnlyBinding && RedBean_QueryWriter_AQueryWriter::canBeTreatedAsInt($value) && $value < 2147483648) { + $s->bindParam($key,$value,PDO::PARAM_INT); + } + else { + $s->bindParam($key,$value,PDO::PARAM_STR); + } + } + + } + } + + /** + * Runs a query. Internal function, available for subclasses. This method + * runs the actual SQL query and binds a list of parameters to the query. + * slots. The result of the query will be stored in the protected property + * $rs (always array). The number of rows affected (result of rowcount, if supported by database) + * is stored in protected property $affected_rows. If the debug flag is set + * this function will send debugging output to screen buffer. + * + * @throws RedBean_Exception_SQL + * + * @param string $sql the SQL string to be send to database server + * @param array $aValues the values that need to get bound to the query slots + */ + protected function runQuery($sql,$aValues) { + $this->connect(); + if ($this->debug && $this->logger) { + $this->logger->log($sql, $aValues); + } + try { + if (strpos('pgsql',$this->dsn)===0) { + $s = $this->pdo->prepare($sql, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => true)); + } + else { + $s = $this->pdo->prepare($sql); + } + $this->bindParams( $s, $aValues ); + $s->execute(); + $this->affected_rows = $s->rowCount(); + if ($s->columnCount()) { + $this->rs = $s->fetchAll(); + if ($this->debug && $this->logger) $this->logger->log('resultset: ' . count($this->rs) . ' rows'); + } + else { + $this->rs = array(); + } + }catch(PDOException $e) { + //Unfortunately the code field is supposed to be int by default (php) + //So we need a property to convey the SQL State code. + $err = $e->getMessage(); + if ($this->debug && $this->logger) $this->logger->log('An error occurred: '.$err); + $x = new RedBean_Exception_SQL( $err, 0); + $x->setSQLState( $e->getCode() ); + throw $x; + } + } + + + /** + * Runs a query and fetches results as a multi dimensional array. + * + * @param string $sql SQL to be executed + * + * @return array $results result + */ + public function GetAll( $sql, $aValues=array() ) { + $this->runQuery($sql,$aValues); + return $this->rs; + } + + /** + * Runs a query and fetches results as a column. + * + * @param string $sql SQL Code to execute + * + * @return array $results Resultset + */ + public function GetCol($sql, $aValues=array()) { + $rows = $this->GetAll($sql,$aValues); + $cols = array(); + if ($rows && is_array($rows) && count($rows)>0) { + foreach ($rows as $row) { + $cols[] = array_shift($row); + } + } + return $cols; + } + + /** + * Runs a query an returns results as a single cell. + * + * @param string $sql SQL to execute + * + * @return mixed $cellvalue result cell + */ + public function GetCell($sql, $aValues=array()) { + $arr = $this->GetAll($sql,$aValues); + $row1 = array_shift($arr); + $col1 = array_shift($row1); + return $col1; + } + + /** + * Runs a query and returns a flat array containing the values of + * one row. + * + * @param string $sql SQL to execute + * + * @return array $row result row + */ + public function GetRow($sql, $aValues=array()) { + $arr = $this->GetAll($sql, $aValues); + return array_shift($arr); + } + + + + /** + * Executes SQL code and allows key-value binding. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. This method has no return value. + * + * @param string $sql SQL Code to execute + * @param array $aValues Values to bind to SQL query + * + * @return void + */ + public function Execute( $sql, $aValues=array() ) { + $this->runQuery($sql,$aValues); + return $this->affected_rows; + } + + /** + * Escapes a string for use in SQL using the currently selected + * PDO driver. + * + * @param string $string string to be escaped + * + * @return string $string escaped string + */ + public function Escape( $str ) { + $this->connect(); + return substr(substr($this->pdo->quote($str), 1), 0, -1); + } + + /** + * Returns the latest insert ID if driver does support this + * feature. + * + * @return integer $id primary key ID + */ + public function GetInsertID() { + $this->connect(); + return (int) $this->pdo->lastInsertId(); + } + + /** + * Returns the number of rows affected by the most recent query + * if the currently selected PDO driver supports this feature. + * + * @return integer $numOfRows number of rows affected + */ + public function Affected_Rows() { + $this->connect(); + return (int) $this->affected_rows; + } + + /** + * Toggles debug mode. In debug mode the driver will print all + * SQL to the screen together with some information about the + * results. All SQL code that passes through the driver will be + * passes on to the screen for inspection. + * This method has no return value. + * + * Additionally you can inject RedBean_Logger implementation + * where you can define your own log() method + * + * @param boolean $trueFalse turn on/off + * @param RedBean_Logger $logger + * + * @return void + */ + public function setDebugMode( $tf, $logger = NULL ) { + $this->connect(); + $this->debug = (bool)$tf; + if ($this->debug and !$logger) $logger = new RedBean_Logger_Default(); + $this->setLogger($logger); + } + + + /** + * Injects RedBean_Logger object. + * + * @param RedBean_Logger $logger + */ + public function setLogger( RedBean_Logger $logger ) { + $this->logger = $logger; + } + + /** + * Gets RedBean_Logger object. + * + * @return RedBean_Logger + */ + public function getLogger() { + return $this->logger; + } + + /** + * Starts a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function StartTrans() { + $this->connect(); + $this->pdo->beginTransaction(); + } + + /** + * Commits a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function CommitTrans() { + $this->connect(); + $this->pdo->commit(); + } + + /** + * Rolls back a transaction. + * This method is part of the transaction mechanism of + * RedBeanPHP. All queries in a transaction are executed together. + * In case of an error all commands will be rolled back so none of the + * SQL in the transaction will affect the DB. Using transactions is + * considered best practice. + * This method has no return value. + * + * @return void + */ + public function FailTrans() { + $this->connect(); + $this->pdo->rollback(); + } + + /** + * Returns the name of the database type/brand: i.e. mysql, db2 etc. + * + * @return string $typeName database identification + */ + public function getDatabaseType() { + $this->connect(); + return $this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME); + } + + /** + * Returns the version number of the database. + * + * @return mixed $version version number of the database + */ + public function getDatabaseVersion() { + $this->connect(); + return $this->pdo->getAttribute(PDO::ATTR_CLIENT_VERSION); + } + + /** + * Returns the underlying PHP PDO instance. + * + * @return PDO $pdo PDO instance used by PDO wrapper + */ + public function getPDO() { + $this->connect(); + return $this->pdo; + } + + /** + * Closes database connection by destructing PDO. + */ + public function close() { + $this->pdo = null; + $this->isConnected = false; + } + + /** + * Returns TRUE if the current PDO instance is connected. + * + * @return boolean $yesNO + */ + public function isConnected() { + if (!$this->isConnected && !$this->pdo) return false; + return true; + } + + +} + + + +/** + * RedBean_OODBBean (Object Oriented DataBase Bean) + * + * @file RedBean/RedBean_OODBBean.php + * @desc The Bean class used for passing information + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_OODBBean implements IteratorAggregate, ArrayAccess, Countable { + + + /** + * By default own-lists and shared-lists no longer have IDs as keys (3.3+), + * this is because exportAll also does not offer this feature and we want the + * ORM to be more consistent. Also, exporting without keys makes it easier to + * export lists to Javascript because unlike in PHP in JS arrays will fill up gaps. + * + * @var boolean + */ + private static $flagKeyedExport = false; + + /** + * Reference to NULL property for magic getter. + * @var Null $null + */ + private $null = null; + + + /** + * Properties of the bean. These are kept in a private + * array called properties and exposed through the array interface. + * @var array $properties + */ + private $properties = array(); + + /** + * Meta Data storage. This is the internal property where all + * Meta information gets stored. + * @var array + */ + private $__info = NULL; + + /** + * Contains a BeanHelper to access service objects like + * te association manager and OODB. + * @var RedBean_BeanHelper + */ + private $beanHelper = NULL; + + /** + * Contains the latest Fetch Type. + * A Fetch Type is a preferred type for the next nested bean. + * @var null + */ + private $fetchType = NULL; + + /** + * Used store store SQL snippet for use with with() + * method. + * + * @var string + */ + private $withSql = ''; + + /** + * Alias name for a type. + * + * @var string + */ + private $aliasName = NULL; + + /** + * By default own-lists and shared-lists no longer have IDs as keys (3.3+), + * this is because exportAll also does not offer this feature and we want the + * ORM to be more consistent. Also, exporting without keys makes it easier to + * export lists to Javascript because unlike in PHP in JS arrays will fill up gaps. + * + * @var boolean $yesNo + */ + public static function setFlagKeyedExport($flag) { + self::$flagKeyedExport = (boolean) $flag; + } + + /** Returns the alias for a type + * + * @param $type aliased type + * + * @return string $type type + */ + private function getAlias( $type ) { + if ($this->fetchType) { + $type = $this->fetchType; + $this->fetchType = null; + } + return $type; + } + + /** + * Sets the Bean Helper. Normally the Bean Helper is set by OODB. + * Here you can change the Bean Helper. The Bean Helper is an object + * providing access to a toolbox for the bean necessary to retrieve + * nested beans (bean lists: ownBean,sharedBean) without the need to + * rely on static calls to the facade (or make this class dep. on OODB). + * + * @param RedBean_IBeanHelper $helper + * @return void + */ + public function setBeanHelper(RedBean_BeanHelper $helper) { + $this->beanHelper = $helper; + } + + + /** + * Returns an ArrayIterator so you can treat the bean like + * an array with the properties container as its contents. + * + * @return ArrayIterator $arrayIt an array iterator instance with $properties + */ + public function getIterator() { + return new ArrayIterator($this->properties); + } + + /** + * Imports all values in associative array $array. Every key is used + * for a property and every value will be assigned to the property + * identified by the key. So basically this method converts the + * associative array to a bean by loading the array. You can filter + * the values using the $selection parameter. If $selection is boolean + * false, no filtering will be applied. If $selection is an array + * only the properties specified (as values) in the $selection + * array will be taken into account. To skip a property, omit it from + * the $selection array. Also, instead of providing an array you may + * pass a comma separated list of property names. This method is + * chainable because it returns its own object. + * Imports data into bean + * + * @param array $array what you want to import + * @param string|array $selection selection of values + * @param boolean $notrim if TRUE values will not be trimmed + * + * @return RedBean_OODBBean $this + */ + public function import( $arr, $selection=false, $notrim=false ) { + if (is_string($selection)) $selection = explode(',',$selection); + //trim whitespaces + if (!$notrim && is_array($selection)) foreach($selection as $k=>$s){ $selection[$k]=trim($s); } + foreach($arr as $k=>$v) { + if ($k!='__info') { + if (!$selection || ($selection && in_array($k,$selection))) { + $this->$k = $v; + } + } + } + return $this; + } + + /** + * Injects the properties of another bean but keeps the original ID. + * Just like import() but keeps the original ID. + * Chainable. + * + * @param RedBean_OODBBean $otherBean the bean whose properties you would like to copy + * + * @return RedBean_OODBBean $self + */ + public function inject(RedBean_OODBBean $otherBean) { + $myID = $this->id; + $array = $otherBean->export(); + $this->import($array); + $this->id = $myID; + return $this; + } + + /** + * Very superficial export function + * @return array $properties + */ + public function getProperties() { + return $this->properties; + } + + /** + * Exports the bean as an array. + * This function exports the contents of a bean to an array and returns + * the resulting array. If $meta eq uals boolean TRUE, then the array will + * also contain the __info section containing the meta data inside the + * RedBean_OODBBean Bean object. + * @param boolean $meta + * @return array $arr + */ + public function export($meta = false, $parents = false, $onlyMe = false, $filters = array()) { + $arr=array(); + if ($parents) { + foreach($this as $k=>$v) { + if (substr($k,-3)=='_id') { + $prop = substr($k,0,strlen($k)-3); + $this->$prop; + } + } + } + foreach($this as $k=>$v) { + if (!$onlyMe && is_array($v)) { + $vn = array(); + foreach($v as $i=>$b) { + if (is_numeric($i) && !self::$flagKeyedExport) { + $vn[]=$b->export($meta,false,false,$filters); + } + else { + $vn[$i]=$b->export($meta,false,false,$filters); + } + $v = $vn; + } + } + elseif ($v instanceof RedBean_OODBBean) { + if (is_array($filters) && count($filters) && !in_array(strtolower($v->getMeta('type')),$filters)) { + continue; + } + $v = $v->export($meta,$parents,false,$filters); + } + $arr[$k] = $v; + } + if ($meta) $arr['__info'] = $this->__info; + return $arr; + } + + /** + * Exports the bean to an object. + * This function exports the contents of a bean to an object. + * @param object $obj + * @return array $arr + */ + public function exportToObj($obj) { + foreach($this->properties as $k=>$v) { + if (!is_array($v) && !is_object($v)) + $obj->$k = $v; + } + } + + /** + * Implements isset() function for use as an array. + * Returns whether bean has an element with key + * named $property. Returns TRUE if such an element exists + * and FALSE otherwise. + * @param string $property + * @return boolean $hasProperty + */ + public function __isset($property) { + return (isset($this->properties[$property])); + } + + + + /** + * Returns the ID of the bean no matter what the ID field is. + * + * @return string $id record Identifier for bean + */ + public function getID() { + return (string) $this->id; + } + + /** + * Unsets a property. This method will load the property first using + * __get. + * + * @param string $property property + * + * @return void + */ + public function __unset($property) { + $this->__get($property); + $fieldLink = $property.'_id'; + if (isset($this->$fieldLink)) { + //wanna unset a bean reference? + $this->$fieldLink = null; + } + if ((isset($this->properties[$property]))) { + unset($this->properties[$property]); + } + } + + /** + * Removes a property from the properties list without invoking + * an __unset on the bean. + * + * @param string $property property that needs to be unset + * + * @return void + */ + public function removeProperty( $property ) { + unset($this->properties[$property]); + } + + /** + * Adds WHERE clause conditions to ownList retrieval. + * For instance to get the pages that belong to a book you would + * issue the following command: $book->ownPage + * However, to order these pages by number use: + * + * $book->with(' ORDER BY `number` ASC ')->ownPage + * + * the additional SQL snippet will be merged into the final + * query. + * + * @param string $sql SQL to be added to retrieval query. + * + * @return RedBean_OODBBean $self + */ + public function with($sql) { + $this->withSql = $sql; + return $this; + } + + /** + * Just like with(). Except that this method prepends the SQL query snippet + * with AND which makes it slightly more comfortable to use a conditional + * SQL snippet. For instance to filter an own-list with pages (belonging to + * a book) on specific chapters you can use: + * + * $book->withCondition(' chapter = 3 ')->ownPage + * + * This will return in the own list only the pages having 'chapter == 3'. + * + * @param string $sql SQL to be added to retrieval query (prefixed by AND) + * + * @return RedBean_OODBBean $self + */ + public function withCondition($sql) { + $this->withSql = ' AND '.$sql; + return $this; + } + + /** + * Prepares an own-list to use an alias. This is best explained using + * an example. Imagine a project and a person. The project always involves + * two persons: a teacher and a student. The person beans have been aliased in this + * case, so to the project has a teacher_id pointing to a person, and a student_id + * also pointing to a person. Given a project, we obtain the teacher like this: + * + * $project->fetchAs('person')->teacher; + * + * Now, if we want all projects of a teacher we cant say: + * + * $teacher->ownProject + * + * because the $teacher is a bean of type 'person' and no project has been + * assigned to a person. Instead we use the alias() method like this: + * + * $teacher->alias('teacher')->ownProject + * + * now we get the projects associated with the person bean aliased as + * a teacher. + * + * @param string $aliasName the alias name to use + * + * @return RedBean_OODBBean + */ + public function alias($aliasName) { + $this->aliasName = $aliasName; + return $this; + } + + /** + * Magic Getter. Gets the value for a specific property in the bean. + * If the property does not exist this getter will make sure no error + * occurs. This is because RedBean allows you to query (probe) for + * properties. If the property can not be found this method will + * return NULL instead. + * @param string $property + * @return mixed $value + */ + public function &__get( $property ) { + if ($this->beanHelper) + $toolbox = $this->beanHelper->getToolbox(); + if ($this->withSql!=='') { + if (strpos($property,'own')===0) { + unset($this->properties[$property]); + } + } + if (!isset($this->properties[$property])) { + $fieldLink = $property.'_id'; + /** + * All this magic can be become very complex quicly. For instance, + * my PHP CLI produced a segfault while testing this code. Turns out that + * if fieldlink equals idfield, scripts tend to recusrively load beans and + * instead of giving a clue they simply crash and burn isnt that nice? + */ + if (isset($this->$fieldLink) && $fieldLink != $this->getMeta('sys.idfield')) { + $this->setMeta('tainted',true); + $type = $this->getAlias($property); + $targetType = $this->properties[$fieldLink]; + $bean = $toolbox->getRedBean()->load($type,$targetType); + //return $bean; + $this->properties[$property] = $bean; + return $this->properties[$property]; + } + if (strpos($property,'own')===0) { + $firstCharCode = ord(substr($property,3,1)); + if ($firstCharCode>=65 && $firstCharCode<=90) { + $type = (__lcfirst(str_replace('own','',$property))); + if ($this->aliasName) { + $myFieldLink = $this->aliasName.'_id'; + $this->setMeta('sys.alias.'.$type,$this->aliasName); + $this->aliasName = null; + } + else { + $myFieldLink = $this->getMeta('type').'_id'; + } + $beans = $toolbox->getRedBean()->find($type,array(),array(" $myFieldLink = ? ".$this->withSql,array($this->getID()))); + $this->withSql = ''; + $this->properties[$property] = $beans; + $this->setMeta('sys.shadow.'.$property,$beans); + $this->setMeta('tainted',true); + return $this->properties[$property]; + } + } + if (strpos($property,'shared')===0) { + $firstCharCode = ord(substr($property,6,1)); + if ($firstCharCode>=65 && $firstCharCode<=90) { + $type = (__lcfirst(str_replace('shared','',$property))); + $keys = $toolbox->getRedBean()->getAssociationManager()->related($this,$type); + if (!count($keys)) $beans = array(); else + $beans = $toolbox->getRedBean()->batch($type,$keys); + $this->properties[$property] = $beans; + $this->setMeta('sys.shadow.'.$property,$beans); + $this->setMeta('tainted',true); + return $this->properties[$property]; + } + } + return $this->null; + } + return $this->properties[$property]; + } + + /** + * Magic Setter. Sets the value for a specific property. + * This setter acts as a hook for OODB to mark beans as tainted. + * The tainted meta property can be retrieved using getMeta("tainted"). + * The tainted meta property indicates whether a bean has been modified and + * can be used in various caching mechanisms. + * @param string $property + * @param mixed $value + */ + + public function __set($property,$value) { + $this->__get($property); + $this->setMeta('tainted',true); + $linkField = $property.'_id'; + if (isset($this->properties[$linkField]) && !($value instanceof RedBean_OODBBean)) { + if (is_null($value) || $value === false) { + return $this->__unset($property); + } + else { + throw new RedBean_Exception_Security('Cannot cast to bean.'); + } + } + if ($value===false) { + $value = '0'; + } + elseif ($value===true) { + $value = '1'; + } + elseif ($value instanceof DateTime) { + $value = $value->format('Y-m-d H:i:s'); + } + $this->properties[$property] = $value; + } + + /** + * Sets a property directly, for internal use only. + * + * @param string $property property + * @param mixed $value value + */ + public function setProperty($property,$value) { + $this->properties[$property] = $value; + } + + + /** + * Returns the value of a meta property. A meta property + * contains extra information about the bean object that will not + * get stored in the database. Meta information is used to instruct + * RedBean as well as other systems how to deal with the bean. + * For instance: $bean->setMeta("buildcommand.unique", array( + * array("column1", "column2", "column3") ) ); + * Will add a UNIQUE constaint for the bean on columns: column1, column2 and + * column 3. + * To access a Meta property we use a dot separated notation. + * If the property cannot be found this getter will return NULL instead. + * @param string $path + * @param mixed $default + * @return mixed $value + */ + public function getMeta($path,$default = NULL) { + return (isset($this->__info[$path])) ? $this->__info[$path] : $default; + } + + /** + * Stores a value in the specified Meta information property. $value contains + * the value you want to store in the Meta section of the bean and $path + * specifies the dot separated path to the property. For instance "my.meta.property". + * If "my" and "meta" do not exist they will be created automatically. + * @param string $path + * @param mixed $value + */ + public function setMeta($path,$value) { + $this->__info[$path] = $value; + } + + /** + * Copies the meta information of the specified bean + * This is a convenience method to enable you to + * exchange meta information easily. + * @param RedBean_OODBBean $bean + * @return RedBean_OODBBean + */ + public function copyMetaFrom(RedBean_OODBBean $bean) { + $this->__info = $bean->__info; + return $this; + } + + + /** + * Reroutes a call to Model if exists. (new fuse) + * @param string $method + * @param array $args + * @return mixed $mixed + */ + public function __call($method, $args) { + if (!isset($this->__info['model'])) { + $model = $this->beanHelper->getModelForBean($this); + if (!$model) return; + $this->__info['model'] = $model; + } + if (!method_exists($this->__info['model'],$method)) return null; + return call_user_func_array(array($this->__info['model'],$method), $args); + } + + /** + * Implementation of __toString Method + * Routes call to Model. + * @return string $string + */ + public function __toString() { + $string = $this->__call('__toString',array()); + if ($string === null) { + return json_encode($this->properties); + } + else { + return $string; + } + } + + /** + * Implementation of Array Access Interface, you can access bean objects + * like an array. + * Call gets routed to __set. + * + * @param mixed $offset offset string + * @param mixed $value value + * + * @return void + */ + public function offsetSet($offset, $value) { + $this->__set($offset, $value); + } + + /** + * Implementation of Array Access Interface, you can access bean objects + * like an array. + * + * @param mixed $offset property + * + * @return + */ + public function offsetExists($offset) { + return isset($this->properties[$offset]); + } + + /** + * Implementation of Array Access Interface, you can access bean objects + * like an array. + * Unsets a value from the array/bean. + * + * @param mixed $offset property + * + * @return + */ + public function offsetUnset($offset) { + unset($this->properties[$offset]); + } + + /** + * Implementation of Array Access Interface, you can access bean objects + * like an array. + * Returns value of a property. + * + * @param mixed $offset property + * + * @return + */ + public function offsetGet($offset) { + return $this->__get($offset); + } + + /** + * Chainable method to cast a certain ID to a bean; for instance: + * $person = $club->fetchAs('person')->member; + * This will load a bean of type person using member_id as ID. + * + * @param string $type preferred fetch type + * + * @return RedBean_OODBBean + */ + public function fetchAs($type) { + $this->fetchType = $type; + return $this; + } + + /** + * Implementation of Countable interface. Makes it possible to use + * count() function on a bean. + * + * @return integer $numberOfProperties number of properties in the bean. + */ + public function count() { + return count($this->properties); + } + + /** + * Checks wether a bean is empty or not. + * A bean is empty if it has no other properties than the id field OR + * if all the other property are empty(). + * + * @return boolean + */ + public function isEmpty() { + $empty = true; + foreach($this->properties as $key=>$value) { + if ($key=='id') continue; + if (!empty($value)) { + $empty = false; + + } + } + return $empty; + } + + + /** + * Chainable setter. + * + * @param string $property the property of the bean + * @param mixed $value the value you want to set + * + * @return RedBean_OODBBean the bean + */ + public function setAttr($property,$value) { + $this->$property = $value; + return $this; + } + + /** + * Comfort method. + * Unsets all properties in array. + * + * @param array $properties properties you want to unset. + * + * @return RedBean_OODBBean + */ + public function unsetAll($properties) { + foreach($properties as $prop) { + if (isset($this->properties[$prop])) { + unset($this->properties[$prop]); + } + } + return $this; + } + + /** + * Returns original (old) value of a property. + * You can use this method to see what has changed in a + * bean. + * + * @param string $property name of the property you want the old value of + * + * @return mixed + */ + public function old($property) { + $old = $this->getMeta('sys.orig',array()); + if (isset($old[$property])) { + return $old[$property]; + } + } + + /** + * Convenience method. + * Returns true if the bean has been changed, or false otherwise. + * Same as $bean->getMeta('tainted'); + * Note that a bean becomes tainted as soon as you retrieve a list from + * the bean. This is because the bean lists are arrays and the bean cannot + * determine whether you have made modifications to a list so RedBeanPHP + * will mark the whole bean as tainted. + * + * @return boolean + */ + public function isTainted() { + return $this->getMeta('tainted'); + } + + + /** + * Returns TRUE if the value of a certain property of the bean has been changed and + * FALSE otherwise. + * + * @param string $property name of the property you want the change-status of + * + * @return boolean + */ + public function hasChanged($property) { + if (!isset($this->properties[$property])) return false; + return ($this->old($property)!=$this->properties[$property]); + } +} + + + + +/** + * Observable + * Base class for Observables + * + * @file RedBean/Observable.php + * @description Part of the observer pattern in RedBean + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +abstract class RedBean_Observable { + /** + * Array that keeps track of observers. + * @var array + */ + private $observers = array(); + + /** + * Implementation of the Observer Pattern. + * Adds a listener to this instance. + * This method can be used to attach an observer to an object. + * You can subscribe to a specific event by providing the ID + * of the event you are interested in. Once the event occurs + * the observable will notify the listeners by calling + * onEvent(); providing the event ID and either a bean or + * an information array. + * + * @param string $eventname event + * @param RedBean_Observer $observer observer + * + * @return void + */ + public function addEventListener( $eventname, RedBean_Observer $observer ) { + if (!isset($this->observers[ $eventname ])) { + $this->observers[ $eventname ] = array(); + } + foreach($this->observers[$eventname] as $o) if ($o==$observer) return; + $this->observers[ $eventname ][] = $observer; + } + + /** + * Implementation of the Observer Pattern. + * Sends an event (signal) to the registered listeners + * This method is provided by the abstract class Observable for + * convience. Observables can use this method to notify their + * observers by sending an event ID and information parameter. + * + * @param string $eventname eventname + * @param mixed $info info + * @return unknown_ty + */ + public function signal( $eventname, $info ) { + if (!isset($this->observers[ $eventname ])) { + $this->observers[ $eventname ] = array(); + } + foreach($this->observers[$eventname] as $observer) { + $observer->onEvent( $eventname, $info ); + } + } +} + +/** + * Observer + * + * @file RedBean/Observer.php + * @desc Part of the observer pattern in RedBean + * @author Gabor de Mooijand the RedBeanPHP community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +interface RedBean_Observer { + + /** + * Part of the RedBean Observer Infrastructure. + * The on-event method is called by an observable once the + * event the observer has been registered for occurs. + * Once the even occurs, the observable will signal the observer + * using this method, sending the event name and the bean or + * an information array. + * + * @param string $eventname + * @param RedBean_OODBBean mixed $info + */ + public function onEvent( $eventname, $bean ); +} + +/** + * Adapter Interface + * + * @file RedBean/Adapter.php + * @desc Describes the API for a RedBean Database Adapter. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +interface RedBean_Adapter { + + /** + * Returns the latest SQL statement + * + * @return string $SQLString SQLString + */ + public function getSQL(); + + /** + * Escapes a value for usage in an SQL statement + * + * @param string $sqlvalue value + */ + public function escape( $sqlvalue ); + + /** + * Executes an SQL Statement using an array of values to bind + * If $noevent is TRUE then this function will not signal its + * observers to notify about the SQL execution; this to prevent + * infinite recursion when using observers. + * + * @param string $sql SQL + * @param array $aValues values + * @param boolean $noevent no event firing + */ + public function exec( $sql , $aValues=array(), $noevent=false); + + /** + * Executes an SQL Query and returns a resultset. + * This method returns a multi dimensional resultset similar to getAll + * The values array can be used to bind values to the place holders in the + * SQL query. + * + * @param string $sql SQL + * @param array $aValues values + */ + public function get( $sql, $aValues = array() ); + + /** + * Executes an SQL Query and returns a resultset. + * This method returns a single row (one array) resultset. + * The values array can be used to bind values to the place holders in the + * SQL query. + * + * @param string $sql SQL + * @param array $aValues values to bind + * + * @return array $aMultiDimArray row + */ + public function getRow( $sql, $aValues = array() ); + + /** + * Executes an SQL Query and returns a resultset. + * This method returns a single column (one array) resultset. + * The values array can be used to bind values to the place holders in the + * SQL query. + * + * @param string $sql SQL + * @param array $aValues values to bind + * + * @return array $aSingleDimArray column + */ + public function getCol( $sql, $aValues = array() ); + + /** + * Executes an SQL Query and returns a resultset. + * This method returns a single cell, a scalar value as the resultset. + * The values array can be used to bind values to the place holders in the + * SQL query. + * + * @param string $sql SQL + * @param array $aValues values to bind + * + * @return string $sSingleValue value from cell + */ + public function getCell( $sql, $aValues = array() ); + + /** + * Executes the SQL query specified in $sql and takes + * the first two columns of the resultset. This function transforms the + * resultset into an associative array. Values from the the first column will + * serve as keys while the values of the second column will be used as values. + * The values array can be used to bind values to the place holders in the + * SQL query. + * + * @param string $sql SQL + * @param array $values values to bind + * + * @return array $associativeArray associative array result set + */ + public function getAssoc( $sql, $values = array() ); + + /** + * Returns the latest insert ID. + * + * @return integer $id primary key ID + */ + public function getInsertID(); + + /** + * Returns the number of rows that have been + * affected by the last update statement. + * + * @return integer $count number of rows affected + */ + public function getAffectedRows(); + + /** + * Returns the original database resource. This is useful if you want to + * perform operations on the driver directly instead of working with the + * adapter. RedBean will only access the adapter and never to talk + * directly to the driver though. + * + * @return object $driver driver + */ + public function getDatabase(); + + /** + * This method is part of the RedBean Transaction Management + * mechanisms. + * Starts a transaction. + */ + public function startTransaction(); + + /** + * This method is part of the RedBean Transaction Management + * mechanisms. + * Commits the transaction. + */ + public function commit(); + + /** + * This method is part of the RedBean Transaction Management + * mechanisms. + * Rolls back the transaction. + */ + public function rollback(); + + /** + * Closes database connection. + */ + public function close(); + +} + +/** + * DBAdapter (Database Adapter) + * @file RedBean/Adapter/DBAdapter.php + * @desc An adapter class to connect various database systems to RedBean + * @author Gabor de Mooij and the RedBeanPHP Community. + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Adapter_DBAdapter extends RedBean_Observable implements RedBean_Adapter { + + /** + * ADODB compatible class + * @var RedBean_Driver + */ + private $db = null; + + /** + * Contains SQL snippet + * @var string + */ + private $sql = ''; + + + /** + * Constructor. + * Creates an instance of the RedBean Adapter Class. + * This class provides an interface for RedBean to work + * with ADO compatible DB instances. + * + * @param RedBean_Driver $database ADO Compatible DB Instance + */ + public function __construct($database) { + $this->db = $database; + } + + /** + * Returns the latest SQL Statement. + * This method returns the most recently executed SQL statement string. + * This can be used for building logging features. + * + * @return string $SQL latest SQL statement + */ + public function getSQL() { + return $this->sql; + } + + /** + * Escapes a string for use in a Query. + * This method escapes the value argument using the native + * driver escaping functions. + * + * @param string $sqlvalue SQL value to escape + * + * @return string $escapedValue escaped value + */ + public function escape( $sqlvalue ) { + return $this->db->Escape($sqlvalue); + } + + /** + * Executes SQL code; any query without + * returning a resultset. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql SQL Code to execute + * @param array $values assoc. array binding values + * @param boolean $noevent if TRUE this will suppress the event 'sql_exec' + * + * @return mixed $undefSet whatever driver returns, undefined + */ + public function exec( $sql , $aValues=array(), $noevent=false) { + if (!$noevent) { + $this->sql = $sql; + $this->signal('sql_exec', $this); + } + return $this->db->Execute( $sql, $aValues ); + } + + /** + * Multi array SQL fetch. Fetches a multi dimensional array. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql SQL code to execute + * @param array $values assoc. array binding values + * + * @return array $result two dimensional array result set + */ + public function get( $sql, $aValues = array() ) { + $this->sql = $sql; + $this->signal('sql_exec', $this); + return $this->db->GetAll( $sql,$aValues ); + } + + /** + * Executes SQL and fetches a single row. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql SQL code to execute + * @param array $values assoc. array binding values + * + * @return array $result one dimensional array result set + */ + public function getRow( $sql, $aValues = array() ) { + $this->sql = $sql; + $this->signal('sql_exec', $this); + return $this->db->GetRow( $sql,$aValues ); + } + + /** + * Executes SQL and returns a one dimensional array result set. + * This function rotates the result matrix to obtain a column result set. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql SQL code to execute + * @param array $values assoc. array binding values + * + * @return array $result one dimensional array result set + */ + public function getCol( $sql, $aValues = array() ) { + $this->sql = $sql; + $this->signal('sql_exec', $this); + return $this->db->GetCol( $sql,$aValues ); + } + + + /** + * Executes an SQL Query and fetches the first two columns only. + * Then this function builds an associative array using the first + * column for the keys and the second result column for the + * values. For instance: SELECT id, name FROM... will produce + * an array like: id => name. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql SQL code to execute + * @param array $values assoc. array binding values + * + * @return array $result multi dimensional assoc. array result set + */ + public function getAssoc( $sql, $aValues = array() ) { + $this->sql = $sql; + $this->signal('sql_exec', $this); + $rows = $this->db->GetAll( $sql, $aValues ); + $assoc = array(); + if ($rows) { + foreach($rows as $row) { + if (is_array($row) && count($row)>0) { + if (count($row)>1) { + $key = array_shift($row); + $value = array_shift($row); + } + elseif (count($row)==1) { + $key = array_shift($row); + $value=$key; + } + $assoc[ $key ] = $value; + } + } + } + return $assoc; + } + + + /** + * Retrieves a single cell. + * This function allows you to provide an array with values to bind + * to query parameters. For instance you can bind values to question + * marks in the query. Each value in the array corresponds to the + * question mark in the query that matches the position of the value in the + * array. You can also bind values using explicit keys, for instance + * array(":key"=>123) will bind the integer 123 to the key :key in the + * SQL. + * + * @param string $sql sql code to execute + * @param array $values assoc. array binding values + * + * @return array $result scalar result set + */ + + public function getCell( $sql, $aValues = array(), $noSignal = null ) { + $this->sql = $sql; + if (!$noSignal) $this->signal('sql_exec', $this); + $arr = $this->db->getCol( $sql, $aValues ); + if ($arr && is_array($arr)) return ($arr[0]); else return false; + } + + /** + * Returns latest insert id, most recently inserted id. + * Following an insert-SQL statement this method will return the most recently + * primary key ID of an inserted record. + * + * @return integer $id latest insert ID + */ + public function getInsertID() { + return $this->db->getInsertID(); + } + + /** + * Returns number of affected rows. + * Returns the number of rows that have been affected by the most recent + * SQL query. + * + * @return integer $numOfAffectRows + */ + public function getAffectedRows() { + return $this->db->Affected_Rows(); + } + + /** + * Unwrap the original database object. + * Returns the database driver instance. For instance this can be + * an OCI object or a PDO instance or some other third party driver. + * + * @return RedBean_Driver $database returns the inner database object + */ + public function getDatabase() { + return $this->db; + } + + /** + * Transactions. + * Part of the transaction management infrastructure of RedBeanPHP. + * Starts a transaction. + * Note that transactions may not work in fluid mode depending on your + * database platform. + */ + public function startTransaction() { + return $this->db->StartTrans(); + } + + /** + * Transactions. + * Part of the transaction management infrastructure of RedBeanPHP. + * Commits a transaction. + * Note that transactions may not work in fluid mode depending on your + * database platform. + */ + public function commit() { + return $this->db->CommitTrans(); + } + + /** + * Transactions. + * Part of the transaction management infrastructure of RedBeanPHP. + * Rolls back transaction. This will undo all changes that have been + * part of the transaction. + * Note that transactions may not work in fluid mode depending on your + * database platform. + */ + public function rollback() { + return $this->db->FailTrans(); + } + + /** + * Closes the database connection. + */ + public function close() { + $this->db->close(); + } +} + + +/** + * QueryWriter + * Interface for QueryWriters + * + * @file RedBean/QueryWriter.php + * @desc Describes the API for a QueryWriter + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * Notes: + * - Whenever you see a parameter called $table or $type you should always + * be aware of the fact that this argument contains a Bean Type string, not the + * actual table name. These raw type names are passed to safeTable() to obtain the + * actual name of the database table. Don't let the names confuse you $type/$table + * refers to Bean Type, not physical database table names! + * - This is the interface for FLUID database drivers. Drivers intended to support + * just FROZEN mode should implement the IceWriter instead. + * + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +interface RedBean_QueryWriter { + + /** + * QueryWriter Constant Identifier. + * Identifies a situation in which a table has not been found in + * the database. + */ + const C_SQLSTATE_NO_SUCH_TABLE = 1; + + /** + * QueryWriter Constant Identifier. + * Identifies a situation in which a perticular column has not + * been found in the database. + */ + const C_SQLSTATE_NO_SUCH_COLUMN = 2; + + /** + * QueryWriter Constant Identifier. + * Identifies a situation in which a perticular column has not + * been found in the database. + */ + const C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION = 3; + + /** + * Returns the tables that are in the database. + * + * @return array $arrayOfTables list of tables + */ + public function getTables(); + + /** + * This method should create a table for the bean. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type of bean you want to create a table for + * + * @return void + */ + public function createTable($type); + + /** + * Returns an array containing all the columns of the specified type. + * The format of the return array looks like this: + * $field => $type where $field is the name of the column and $type + * is a database specific description of the datatype. + * + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type of bean you want to obtain a column list of + * + * @return array $listOfColumns list of columns ($field=>$type) + */ + public function getColumns($type); + + + /** + * Returns the Column Type Code (integer) that corresponds + * to the given value type. This method is used to determine the minimum + * column type required to represent the given value. + * + * @param string $value value + * + * @return integer $type type + */ + public function scanType($value, $alsoScanSpecialForTypes=false); + + /** + * This method should add a column to a table. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type name of the table + * @param string $column name of the column + * @param integer $field data type for field + * + * @return void + * + */ + public function addColumn($type, $column, $field); + + /** + * This method should return a data type constant based on the + * SQL type definition. This function is meant to compare column data + * type to check whether a column is wide enough to represent the desired + * values. + * + * @param integer $typedescription SQL type description from database + * + * @return integer $type + */ + public function code($typedescription); + + /** + * This method should widen the column to the specified data type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type / table that needs to be adjusted + * @param string $column column that needs to be altered + * @param integer $datatype target data type + * + * @return void + */ + public function widenColumn($type, $column, $datatype); + + /** + * This method should update (or insert a record), it takes + * a table name, a list of update values ( $field => $value ) and an + * primary key ID (optional). If no primary key ID is provided, an + * INSERT will take place. + * Returns the new ID. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type name of the table to update + * @param array $updatevalues list of update values + * @param integer $id optional primary key ID value + * + * @return integer $id the primary key ID value of the new record + */ + public function updateRecord($type, $updatevalues, $id=null); + + + /** + * This method should select a record. You should be able to provide a + * collection of conditions using the following format: + * array( $field1 => array($possibleValue1, $possibleValue2,... $possibleValueN ), + * ...$fieldN=>array(...)); + * Also, additional SQL can be provided. This SQL snippet will be appended to the + * query string. If the $delete parameter is set to TRUE instead of selecting the + * records they will be deleted. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type of bean to select records from + * @param array $cond conditions using the specified format + * @param string $asql additional sql + * @param boolean $delete IF TRUE delete records (optional) + * @param boolean $inverse IF TRUE inverse the selection (optional) + * + * @return array $records selected records + */ + public function selectRecord($type, $conditions, $addSql = null, $delete = false, $inverse = false); + + + /** + * This method should add a UNIQUE constraint index to a table on columns $columns. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type + * @param array $columnsPartOfIndex columns to include in index + * + * @return void + */ + public function addUniqueIndex($type,$columns); + + + /** + * This method should check whether the SQL state is in the list of specified states + * and returns true if it does appear in this list or false if it + * does not. The purpose of this method is to translate the database specific state to + * a one of the constants defined in this class and then check whether it is in the list + * of standard states provided. + * + * @param string $state sql state + * @param array $list list + * + * @return boolean $isInList + */ + public function sqlStateIn( $state, $list ); + + /** + * This method should remove all beans of a certain type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type bean type + * + * @return void + */ + public function wipe($type); + + /** + * This method should count the number of beans of the given type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type of bean to count + * + * @return integer $numOfBeans number of beans found + */ + public function count($type); + + /** + * This method should filter a column name so that it can + * be used safely in a query for a specific database. + * + * @param string $name the column name + * @param bool $noQuotes whether you want to omit quotes + * + * @return string $clean the clean version of the column name + */ + public function safeColumn($name, $noQuotes = false); + + /** + * This method should filter a type name so that it can + * be used safely in a query for a specific database. It actually + * converts a type to a table. TYPE -> TABLE + * + * @param string $name the name of the type + * @param bool $noQuotes whether you want to omit quotes in table name + * + * @return string $tablename clean table name for use in query + */ + public function safeTable($name, $noQuotes = false); + + /** + * This method should add a constraint. If one of the beans gets trashed + * the other, related bean should be removed as well. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * + * @return void + */ + public function addConstraint( RedBean_OODBBean $bean1, RedBean_OODBBean $bean2 ); + + /** + * This method should add a foreign key from type and field to + * target type and target field. + * The foreign key is created without an action. On delete/update + * no action will be triggered. The FK is only used to allow database + * tools to generate pretty diagrams and to make it easy to add actions + * later on. + * This methods accepts a type and infers the corresponding table name. + * + * + * @param string $type type that will have a foreign key field + * @param string $targetType points to this type + * @param string $field field that contains the foreign key value + * @param string $targetField field where the fk points to + * + * @return void + */ + public function addFK( $type, $targetType, $field, $targetField); + + + /** + * This method should add an index to a type and field with name + * $name. + * This methods accepts a type and infers the corresponding table name. + * + * @param $type type to add index to + * @param $name name of the new index + * @param $column field to index + * + * @return void + */ + public function addIndex($type, $name, $column); + + /** + * Returns a modified value from ScanType. + * Used for special types. + * + * @return mixed $value changed value + */ + public function getValue(); + +} + +/** + * RedBean Abstract Query Writer + * + * @file RedBean/QueryWriter/AQueryWriter.php + * @description Quert Writer + * Represents an abstract Database to RedBean + * To write a driver for a different database for RedBean + * Contains a number of functions all implementors can + * inherit or override. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +abstract class RedBean_QueryWriter_AQueryWriter { + + /** + * Scanned value (scanType) + * @var type + */ + protected $svalue; + + /** + * Supported Column Types. + * @var array + */ + public $typeno_sqltype = array(); + + /** + * Holds a reference to the database adapter to be used. + * @var RedBean_Adapter_DBAdapter + */ + protected $adapter; + + + /** + * default value to for blank field (passed to PK for auto-increment) + * @var string + */ + protected $defaultValue = 'NULL'; + + /** + * character to escape keyword table/column names + * @var string + */ + protected $quoteCharacter = ''; + + + /** + * Constructor + * Sets the default Bean Formatter, use parent::__construct() in + * subclass to achieve this. + */ + public function __construct() { + + } + + /** + * Do everything that needs to be done to format a table name. + * + * @param string $name of table + * + * @return string table name + */ + public function safeTable($name, $noQuotes = false) { + $name = $this->check($name); + if (!$noQuotes) $name = $this->noKW($name); + return $name; + } + + /** + * Do everything that needs to be done to format a column name. + * + * @param string $name of column + * + * @return string $column name + */ + public function safeColumn($name, $noQuotes = false) { + $name = $this->check($name); + if (!$noQuotes) $name = $this->noKW($name); + return $name; + } + + /** + * Returns the sql that should follow an insert statement. + * + * @param string $table name + * + * @return string sql + */ + protected function getInsertSuffix ($table) { + return ''; + } + + /** + * Checks table name or column name. + * + * @param string $table table string + * + * @return string $table escaped string + */ + protected function check($table) { + if ($this->quoteCharacter && strpos($table, $this->quoteCharacter)!==false) { + throw new Redbean_Exception_Security('Illegal chars in table name'); + } + return $this->adapter->escape($table); + } + + /** + * Puts keyword escaping symbols around string. + * + * @param string $str keyword + * + * @return string $keywordSafeString escaped keyword + */ + protected function noKW($str) { + $q = $this->quoteCharacter; + return $q.$str.$q; + } + + /** + * This method adds a column to a table. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type name of the table + * @param string $column name of the column + * @param integer $field data type for field + * + * @return void + * + */ + public function addColumn( $type, $column, $field ) { + $table = $type; + $type = $field; + $table = $this->safeTable($table); + $column = $this->safeColumn($column); + $type = array_key_exists($type, $this->typeno_sqltype) ? $this->typeno_sqltype[$type] : ''; + $sql = "ALTER TABLE $table ADD $column $type "; + $this->adapter->exec( $sql ); + } + + /** + * This method updates (or inserts) a record, it takes + * a table name, a list of update values ( $field => $value ) and an + * primary key ID (optional). If no primary key ID is provided, an + * INSERT will take place. + * Returns the new ID. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type name of the table to update + * @param array $updatevalues list of update values + * @param integer $id optional primary key ID value + * + * @return integer $id the primary key ID value of the new record + */ + public function updateRecord( $type, $updatevalues, $id=null) { + $table = $type; + if (!$id) { + $insertcolumns = $insertvalues = array(); + foreach($updatevalues as $pair) { + $insertcolumns[] = $pair['property']; + $insertvalues[] = $pair['value']; + } + return $this->insertRecord($table,$insertcolumns,array($insertvalues)); + } + if ($id && !count($updatevalues)) return $id; + + $table = $this->safeTable($table); + $sql = "UPDATE $table SET "; + $p = $v = array(); + foreach($updatevalues as $uv) { + $p[] = " {$this->safeColumn($uv["property"])} = ? "; + $v[]=$uv['value']; + } + $sql .= implode(',', $p ) .' WHERE id = '.intval($id); + $this->adapter->exec( $sql, $v ); + return $id; + } + + /** + * Inserts a record into the database using a series of insert columns + * and corresponding insertvalues. Returns the insert id. + * + * @param string $table table to perform query on + * @param array $insertcolumns columns to be inserted + * @param array $insertvalues values to be inserted + * + * @return integer $insertid insert id from driver, new record id + */ + protected function insertRecord( $table, $insertcolumns, $insertvalues ) { + $default = $this->defaultValue; + $suffix = $this->getInsertSuffix($table); + $table = $this->safeTable($table); + if (count($insertvalues)>0 && is_array($insertvalues[0]) && count($insertvalues[0])>0) { + foreach($insertcolumns as $k=>$v) { + $insertcolumns[$k] = $this->safeColumn($v); + } + $insertSQL = "INSERT INTO $table ( id, ".implode(',',$insertcolumns)." ) VALUES + ( $default, ". implode(',',array_fill(0,count($insertcolumns),' ? '))." ) $suffix"; + + foreach($insertvalues as $i=>$insertvalue) { + $ids[] = $this->adapter->getCell( $insertSQL, $insertvalue, $i ); + } + $result = count($ids)===1 ? array_pop($ids) : $ids; + } + else { + $result = $this->adapter->getCell( "INSERT INTO $table (id) VALUES($default) $suffix"); + } + if ($suffix) return $result; + $last_id = $this->adapter->getInsertID(); + return $last_id; + } + + + + + /** + * This selects a record. You provide a + * collection of conditions using the following format: + * array( $field1 => array($possibleValue1, $possibleValue2,... $possibleValueN ), + * ...$fieldN=>array(...)); + * Also, additional SQL can be provided. This SQL snippet will be appended to the + * query string. If the $delete parameter is set to TRUE instead of selecting the + * records they will be deleted. + * This methods accepts a type and infers the corresponding table name. + * + * @throws Exception + * @param string $type type of bean to select records from + * @param array $cond conditions using the specified format + * @param string $asql additional sql + * @param boolean $delete IF TRUE delete records (optional) + * @param boolean $inverse IF TRUE inverse the selection (optional) + * @param boolean $all IF TRUE suppress WHERE keyword, omitting WHERE clause + * + * @return array $records selected records + */ + public function selectRecord( $type, $conditions, $addSql=null, $delete=null, $inverse=false, $all=false ) { + if (!is_array($conditions)) throw new Exception('Conditions must be an array'); + $table = $this->safeTable($type); + $sqlConditions = array(); + $bindings=array(); + foreach($conditions as $column=>$values) { + if (!count($values)) continue; + $sql = $this->safeColumn($column); + $sql .= ' '.($inverse ? ' NOT ':'').' IN ( '; + //If its safe to not use bindings please do... (fixes SQLite PDO issue limit 256 bindings) + if (is_array($conditions) + && count($conditions)===1 + && isset($conditions['id']) + && is_array($values) + && preg_match('/^\d+$/',implode('',$values))) { + $sql .= implode(',',$values).') '; + $sqlConditions[] = $sql; + } + else { + $sql .= implode(',',array_fill(0,count($values),'?')).') '; + $sqlConditions[] = $sql; + if (!is_array($values)) $values = array($values); + foreach($values as $k=>$v) { + $values[$k]=strval($v); + } + $bindings = array_merge($bindings,$values); + } + } + //$addSql can be either just a string or array($sql, $bindings) + if (is_array($addSql)) { + if (count($addSql)>1) { + $bindings = array_merge($bindings,$addSql[1]); + } + else { + $bindings = array(); + } + $addSql = $addSql[0]; + + } + $sql = ''; + if (is_array($sqlConditions) && count($sqlConditions)>0) { + $sql = implode(' AND ',$sqlConditions); + $sql = " WHERE ( $sql ) "; + if ($addSql) $sql .= " AND $addSql "; + } + elseif ($addSql) { + if ($all) { + $sql = " $addSql "; + } + else { + $sql = " WHERE $addSql "; + } + } + $sql = (($delete) ? 'DELETE FROM ' : 'SELECT * FROM ').$table.$sql; + $rows = $this->adapter->get($sql,$bindings); + return $rows; + } + + + /** + * This method removes all beans of a certain type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type bean type + * + * @return void + */ + public function wipe($type) { + $table = $type; + $table = $this->safeTable($table); + $sql = "TRUNCATE $table "; + $this->adapter->exec($sql); + } + + /** + * Counts rows in a table. + * + * @param string $beanType type of bean to count + * @param string $addSQL additional SQL + * @param array $params parameters to bind to SQL + * + * @return integer $numRowsFound + */ + public function count($beanType,$addSQL = '',$params = array()) { + $sql = "SELECT count(*) FROM {$this->safeTable($beanType)} "; + if ($addSQL!='') $addSQL = ' WHERE '.$addSQL; + return (int) $this->adapter->getCell($sql.$addSQL,$params); + } + + + + /** + * This is a utility service method publicly available. + * It allows you to check whether you can safely treat an certain value as an integer by + * comparing an int-valled string representation with a default string casted string representation and + * a ctype-digit check. It does not take into account numerical limitations (X-bit INT), just that it + * can be treated like an INT. This is useful for binding parameters to query statements like + * Query Writers and drivers can do. + * + * @static + * + * @param string $value string representation of a certain value + * + * @return boolean $value boolean result of analysis + */ + public static function canBeTreatedAsInt( $value ) { + return (boolean) (ctype_digit(strval($value)) && strval($value)===strval(intval($value))); + } + + + /** + * This method adds a foreign key from type and field to + * target type and target field. + * The foreign key is created without an action. On delete/update + * no action will be triggered. The FK is only used to allow database + * tools to generate pretty diagrams and to make it easy to add actions + * later on. + * This methods accepts a type and infers the corresponding table name. + * + * + * @param string $type type that will have a foreign key field + * @param string $targetType points to this type + * @param string $field field that contains the foreign key value + * @param string $targetField field where the fk points to + * + * @return void + */ + public function addFK( $type, $targetType, $field, $targetField, $isDependent = false) { + $table = $this->safeTable($type); + $tableNoQ = $this->safeTable($type,true); + $targetTable = $this->safeTable($targetType); + $column = $this->safeColumn($field); + $columnNoQ = $this->safeColumn($field,true); + $targetColumn = $this->safeColumn($targetField); + $targetColumnNoQ = $this->safeColumn($targetField,true); + $db = $this->adapter->getCell('select database()'); + $fkName = 'fk_'.$tableNoQ.'_'.$columnNoQ.'_'.$targetColumnNoQ.($isDependent ? '_casc':''); + $cName = 'cons_'.$fkName; + $cfks = $this->adapter->getCell(" + SELECT CONSTRAINT_NAME + FROM information_schema.KEY_COLUMN_USAGE + WHERE TABLE_SCHEMA ='$db' AND TABLE_NAME = '$tableNoQ' AND COLUMN_NAME = '$columnNoQ' AND + CONSTRAINT_NAME <>'PRIMARY' AND REFERENCED_TABLE_NAME is not null + "); + $flagAddKey = false; + + try{ + //No keys + if (!$cfks) { + $flagAddKey = true; //go get a new key + } + //has fk, but different setting, --remove + if ($cfks && $cfks!=$cName) { + $this->adapter->exec("ALTER TABLE $table DROP FOREIGN KEY $cfks "); + $flagAddKey = true; //go get a new key. + } + if ($flagAddKey) { + $this->adapter->exec("ALTER TABLE $table + ADD CONSTRAINT $cName FOREIGN KEY $fkName ( $column ) REFERENCES $targetTable ( + $targetColumn) ON DELETE ".($isDependent ? 'CASCADE':'SET NULL').' ON UPDATE SET NULL ;'); + } + } + catch(Exception $e) { } //Failure of fk-constraints is not a problem + + } + + /** + * Returns the format for link tables. + * Given an array containing two type names this method returns the + * name of the link table to be used to store and retrieve + * association records. + * + * @param array $types two types array($type1,$type2) + * + * @return string $linktable name of the link table + */ + public static function getAssocTableFormat($types) { + sort($types); + return ( implode('_', $types) ); + } + + + /** + * Adds a constraint. If one of the beans gets trashed + * the other, related bean should be removed as well. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * @param bool $dontCache by default we use a cache, TRUE = NO CACHING (optional) + * + * @return void + */ + public function addConstraint( RedBean_OODBBean $bean1, RedBean_OODBBean $bean2) { + $table1 = $bean1->getMeta('type'); + $table2 = $bean2->getMeta('type'); + $writer = $this; + $adapter = $this->adapter; + $table = RedBean_QueryWriter_AQueryWriter::getAssocTableFormat( array( $table1,$table2) ); + + $property1 = $bean1->getMeta('type') . '_id'; + $property2 = $bean2->getMeta('type') . '_id'; + if ($property1==$property2) $property2 = $bean2->getMeta('type').'2_id'; + + $table = $adapter->escape($table); + $table1 = $adapter->escape($table1); + $table2 = $adapter->escape($table2); + $property1 = $adapter->escape($property1); + $property2 = $adapter->escape($property2); + + //Dispatch to right method + return $this->constrain($table, $table1, $table2, $property1, $property2); + } + + /** + * Checks whether a value starts with zeros. In this case + * the value should probably be stored using a text datatype instead of a + * numerical type in order to preserve the zeros. + * + * @param string $value value to be checked. + */ + protected function startsWithZeros($value) { + $value = strval($value); + if (strlen($value)>1 && strpos($value,'0')===0 && strpos($value,'0.')!==0) { + return true; + } + else { + return false; + } + } + + /** + * Returns a modified value from ScanType. + * Used for special types. + * + * @return mixed $value changed value + */ + public function getValue(){ + return $this->svalue; + } + +} + + +/** + * RedBean MySQLWriter + * + * @file RedBean/QueryWriter/MySQL.php + * @description Represents a MySQL Database to RedBean + * To write a driver for a different database for RedBean + * you should only have to change this file. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * + * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_QueryWriter_MySQL extends RedBean_QueryWriter_AQueryWriter implements RedBean_QueryWriter { + + /** + * Here we describe the datatypes that RedBean + * Uses internally. If you write a QueryWriter for + * RedBean you should provide a list of types like this. + */ + + /** + * DATA TYPE + * Boolean Data type + * @var integer + */ + const C_DATATYPE_BOOL = 0; + + /** + * + * DATA TYPE + * Unsigned 8BIT Integer + * @var integer + */ + const C_DATATYPE_UINT8 = 1; + + /** + * + * DATA TYPE + * Unsigned 32BIT Integer + * @var integer + */ + const C_DATATYPE_UINT32 = 2; + + /** + * DATA TYPE + * Double precision floating point number and + * negative numbers. + * @var integer + */ + const C_DATATYPE_DOUBLE = 3; + + /** + * DATA TYPE + * Standard Text column (like varchar255) + * At least 8BIT character support. + * @var integer + */ + const C_DATATYPE_TEXT8 = 4; + + /** + * DATA TYPE + * Long text column (16BIT) + * @var integer + */ + const C_DATATYPE_TEXT16 = 5; + + /** + * + * DATA TYPE + * 32BIT long textfield (number of characters can be as high as 32BIT) Data type + * This is the biggest column that RedBean supports. If possible you may write + * an implementation that stores even bigger values. + * @var integer + */ + const C_DATATYPE_TEXT32 = 6; + + /** + * Special type date for storing date values: YYYY-MM-DD + * @var integer + */ + const C_DATATYPE_SPECIAL_DATE = 80; + + /** + * Special type datetime for store date-time values: YYYY-MM-DD HH:II:SS + * @var integer + */ + const C_DATATYPE_SPECIAL_DATETIME = 81; + + + /** + * + * DATA TYPE + * Specified. This means the developer or DBA + * has altered the column to a different type not + * recognized by RedBean. This high number makes sure + * it will not be converted back to another type by accident. + * @var integer + */ + const C_DATATYPE_SPECIFIED = 99; + + + + /** + * Holds the RedBean Database Adapter. + * @var RedBean_Adapter_DBAdapter + */ + protected $adapter; + + /** + * character to escape keyword table/column names + * @var string + */ + protected $quoteCharacter = '`'; + + /** + * Constructor. + * The Query Writer Constructor also sets up the database. + * + * @param RedBean_Adapter_DBAdapter $adapter adapter + * + */ + public function __construct( RedBean_Adapter $adapter ) { + + $this->typeno_sqltype = array( + RedBean_QueryWriter_MySQL::C_DATATYPE_BOOL=>" SET('1') ", + RedBean_QueryWriter_MySQL::C_DATATYPE_UINT8=>' TINYINT(3) UNSIGNED ', + RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32=>' INT(11) UNSIGNED ', + RedBean_QueryWriter_MySQL::C_DATATYPE_DOUBLE=>' DOUBLE ', + RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT8=>' VARCHAR(255) ', + RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT16=>' TEXT ', + RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT32=>' LONGTEXT ', + RedBean_QueryWriter_MySQL::C_DATATYPE_SPECIAL_DATE=>' DATE ', + RedBean_QueryWriter_MySQL::C_DATATYPE_SPECIAL_DATETIME=>' DATETIME ', + ); + + $this->sqltype_typeno = array(); + foreach($this->typeno_sqltype as $k=>$v) + $this->sqltype_typeno[trim(strtolower($v))]=$k; + + + $this->adapter = $adapter; + parent::__construct(); + } + + /** + * This method returns the datatype to be used for primary key IDS and + * foreign keys. Returns one if the data type constants. + * + * @return integer $const data type to be used for IDS. + */ + public function getTypeForID() { + return self::C_DATATYPE_UINT32; + } + + /** + * Returns all tables in the database. + * + * @return array $tables tables + */ + public function getTables() { + return $this->adapter->getCol( 'show tables' ); + } + + /** + * Creates an empty, column-less table for a bean based on it's type. + * This function creates an empty table for a bean. It uses the + * safeTable() function to convert the type name to a table name. + * + * @param string $table type of bean you want to create a table for + * + * @return void + */ + public function createTable( $table ) { + $table = $this->safeTable($table); + $sql = " CREATE TABLE $table ( + id INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT , + PRIMARY KEY ( id ) + ) ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci "; + $this->adapter->exec( $sql ); + } + + /** + * Returns an array containing the column names of the specified table. + * + * @param string $table table + * + * @return array $columns columns + */ + public function getColumns( $table ) { + $table = $this->safeTable($table); + $columnsRaw = $this->adapter->get("DESCRIBE $table"); + foreach($columnsRaw as $r) { + $columns[$r['Field']]=$r['Type']; + } + return $columns; + } + + /** + * Returns the MySQL Column Type Code (integer) that corresponds + * to the given value type. + * + * @param string $value value + * + * @return integer $type type + */ + public function scanType( $value, $flagSpecial=false ) { + $this->svalue = $value; + + if (is_null($value)) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_BOOL; + } + + if ($flagSpecial) { + if (preg_match('/^\d{4}\-\d\d-\d\d$/',$value)) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_SPECIAL_DATE; + } + if (preg_match('/^\d{4}\-\d\d-\d\d\s\d\d:\d\d:\d\d$/',$value)) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_SPECIAL_DATETIME; + } + } + $value = strval($value); + if (!$this->startsWithZeros($value)) { + + if ($value=='1' || $value=='') { + return RedBean_QueryWriter_MySQL::C_DATATYPE_BOOL; + } + if (is_numeric($value) && (floor($value)==$value) && $value >= 0 && $value <= 255 ) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_UINT8; + } + if (is_numeric($value) && (floor($value)==$value) && $value >= 0 && $value <= 4294967295 ) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32; + } + if (is_numeric($value)) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_DOUBLE; + } + } + if (strlen($value) <= 255) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT8; + } + if (strlen($value) <= 65535) { + return RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT16; + } + return RedBean_QueryWriter_MySQL::C_DATATYPE_TEXT32; + } + + /** + * Returns the Type Code for a Column Description. + * Given an SQL column description this method will return the corresponding + * code for the writer. If the include specials flag is set it will also + * return codes for special columns. Otherwise special columns will be identified + * as specified columns. + * + * @param string $typedescription description + * @param boolean $includeSpecials whether you want to get codes for special columns as well + * + * @return integer $typecode code + */ + public function code( $typedescription, $includeSpecials = false ) { + $r = ((isset($this->sqltype_typeno[$typedescription])) ? $this->sqltype_typeno[$typedescription] : self::C_DATATYPE_SPECIFIED); + if ($includeSpecials) return $r; + if ($r > self::C_DATATYPE_SPECIFIED) return self::C_DATATYPE_SPECIFIED; + return $r; + } + + /** + * This method upgrades the column to the specified data type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type / table that needs to be adjusted + * @param string $column column that needs to be altered + * @param integer $datatype target data type + * + * @return void + */ + public function widenColumn( $type, $column, $datatype ) { + $table = $type; + $type = $datatype; + $table = $this->safeTable($table); + $column = $this->safeColumn($column); + $newtype = array_key_exists($type, $this->typeno_sqltype) ? $this->typeno_sqltype[$type] : ''; + $changecolumnSQL = "ALTER TABLE $table CHANGE $column $column $newtype "; + $this->adapter->exec( $changecolumnSQL ); + } + + /** + * Adds a Unique index constrain to the table. + * + * @param string $table table + * @param string $col1 column + * @param string $col2 column + * + * @return void + */ + public function addUniqueIndex( $table,$columns ) { + $table = $this->safeTable($table); + sort($columns); //else we get multiple indexes due to order-effects + foreach($columns as $k=>$v) { + $columns[$k]= $this->safeColumn($v); + } + $r = $this->adapter->get("SHOW INDEX FROM $table"); + $name = 'UQ_'.sha1(implode(',',$columns)); + if ($r) { + foreach($r as $i) { + if ($i['Key_name']== $name) { + return; + } + } + } + $sql = "ALTER IGNORE TABLE $table + ADD UNIQUE INDEX $name (".implode(',',$columns).")"; + $this->adapter->exec($sql); + } + + /** + * This method should add an index to a type and field with name + * $name. + * This methods accepts a type and infers the corresponding table name. + * + * @param $type type to add index to + * @param $name name of the new index + * @param $column field to index + * + * @return void + */ + public function addIndex($type, $name, $column) { + $table = $type; + $table = $this->safeTable($table); + $name = preg_replace('/\W/','',$name); + $column = $this->safeColumn($column); + foreach( $this->adapter->get("SHOW INDEX FROM $table ") as $ind) { + if ($ind['Key_name']===$name) return; + } + try{ $this->adapter->exec("CREATE INDEX $name ON $table ($column) "); }catch(Exception $e){} + } + + /** + * Tests whether a given SQL state is in the list of states. + * + * @param string $state code + * @param array $list array of sql states + * + * @return boolean $yesno occurs in list + */ + public function sqlStateIn($state, $list) { + $stateMap = array( + '42S02'=>RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE, + '42S22'=>RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + '23000'=>RedBean_QueryWriter::C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION + ); + return in_array((isset($stateMap[$state]) ? $stateMap[$state] : '0'),$list); + } + + /** + * Add the constraints for a specific database driver: MySQL. + * @todo Too many arguments; find a way to solve this in a neater way. + * + * @param string $table table + * @param string $table1 table1 + * @param string $table2 table2 + * @param string $property1 property1 + * @param string $property2 property2 + * + * @return boolean $succes whether the constraint has been applied + */ + protected function constrain($table, $table1, $table2, $property1, $property2) { + try{ + $db = $this->adapter->getCell('select database()'); + $fks = $this->adapter->getCell(" + SELECT count(*) + FROM information_schema.KEY_COLUMN_USAGE + WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND + CONSTRAINT_NAME <>'PRIMARY' AND REFERENCED_TABLE_NAME is not null + ",array($db,$table)); + //already foreign keys added in this association table + if ($fks>0) return false; + $columns = $this->getColumns($table); + if ($this->code($columns[$property1])!==RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32) { + $this->widenColumn($table, $property1, RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32); + } + if ($this->code($columns[$property2])!==RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32) { + $this->widenColumn($table, $property2, RedBean_QueryWriter_MySQL::C_DATATYPE_UINT32); + } + + $sql = " + ALTER TABLE ".$this->noKW($table)." + ADD FOREIGN KEY($property1) references `$table1`(id) ON DELETE CASCADE; + "; + $this->adapter->exec( $sql ); + $sql =" + ALTER TABLE ".$this->noKW($table)." + ADD FOREIGN KEY($property2) references `$table2`(id) ON DELETE CASCADE + "; + $this->adapter->exec( $sql ); + return true; + } catch(Exception $e){ return false; } + } + + /** + * Drops all tables in database + */ + public function wipeAll() { + $this->adapter->exec('SET FOREIGN_KEY_CHECKS=0;'); + foreach($this->getTables() as $t) { + try{ + $this->adapter->exec("drop table if exists`$t`"); + } + catch(Exception $e){} + try{ + $this->adapter->exec("drop view if exists`$t`"); + } + catch(Exception $e){} + } + $this->adapter->exec('SET FOREIGN_KEY_CHECKS=1;'); + } + + +} + + +/** + * RedBean SQLiteWriter with support for SQLite types + * + * @file RedBean/QueryWriter/SQLiteT.php + * @description Represents a SQLite Database to RedBean + * To write a driver for a different database for RedBean + * you should only have to change this file. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_QueryWriter_SQLiteT extends RedBean_QueryWriter_AQueryWriter implements RedBean_QueryWriter { + /** + * + * @var RedBean_Adapter_DBAdapter + * Holds database adapter + */ + protected $adapter; + + /** + * @var string + * character to escape keyword table/column names + */ + protected $quoteCharacter = '`'; + + /** + * Here we describe the datatypes that RedBean + * Uses internally. If you write a QueryWriter for + * RedBean you should provide a list of types like this. + */ + + /** + * DATA TYPE + * Integer Data type + * @var integer + */ + const C_DATATYPE_INTEGER = 0; + + /** + * DATA TYPE + * Numeric Data type (for REAL and date/time) + * @var integer + */ + const C_DATATYPE_NUMERIC = 1; + + /** + * DATA TYPE + * Text type + * @var integer + */ + const C_DATATYPE_TEXT = 2; + + /** + * DATA TYPE + * Specified. This means the developer or DBA + * has altered the column to a different type not + * recognized by RedBean. This high number makes sure + * it will not be converted back to another type by accident. + * @var integer + */ + const C_DATATYPE_SPECIFIED = 99; + + /** + * Constructor + * The Query Writer Constructor also sets up the database + * + * @param RedBean_Adapter_DBAdapter $adapter adapter + */ + public function __construct( RedBean_Adapter $adapter ) { + + $this->typeno_sqltype = array( + RedBean_QueryWriter_SQLiteT::C_DATATYPE_INTEGER=>'INTEGER', + RedBean_QueryWriter_SQLiteT::C_DATATYPE_NUMERIC=>'NUMERIC', + RedBean_QueryWriter_SQLiteT::C_DATATYPE_TEXT=>'TEXT', + ); + + $this->sqltype_typeno = array(); + foreach($this->typeno_sqltype as $k=>$v) + $this->sqltype_typeno[$v]=$k; + + + $this->adapter = $adapter; + parent::__construct($adapter); + } + + /** + * This method returns the datatype to be used for primary key IDS and + * foreign keys. Returns one if the data type constants. + * + * @return integer $const data type to be used for IDS. + */ + public function getTypeForID() { + return self::C_DATATYPE_INTEGER; + } + + /** + * Returns the MySQL Column Type Code (integer) that corresponds + * to the given value type. + * + * @param string $value value + * + * @return integer $type type + */ + public function scanType( $value, $flagSpecial=false ) { + $this->svalue=$value; + if ($value===false) return self::C_DATATYPE_INTEGER; + if ($value===null) return self::C_DATATYPE_INTEGER; //for fks + if ($this->startsWithZeros($value)) return self::C_DATATYPE_TEXT; + if (is_numeric($value) && (intval($value)==$value) && $value<2147483648) return self::C_DATATYPE_INTEGER; + if ((is_numeric($value) && $value < 2147483648) + || preg_match('/\d{4}\-\d\d\-\d\d/',$value) + || preg_match('/\d{4}\-\d\d\-\d\d\s\d\d:\d\d:\d\d/',$value) + ) { + return self::C_DATATYPE_NUMERIC; + } + return self::C_DATATYPE_TEXT; + } + + /** + * Adds a column of a given type to a table + * + * @param string $table table + * @param string $column column + * @param integer $type type + */ + public function addColumn( $table, $column, $type) { + $column = $this->check($column); + $table = $this->check($table); + $type=$this->typeno_sqltype[$type]; + $sql = "ALTER TABLE `$table` ADD `$column` $type "; + $this->adapter->exec( $sql ); + } + + /** + * Returns the Type Code for a Column Description. + * Given an SQL column description this method will return the corresponding + * code for the writer. If the include specials flag is set it will also + * return codes for special columns. Otherwise special columns will be identified + * as specified columns. + * + * @param string $typedescription description + * @param boolean $includeSpecials whether you want to get codes for special columns as well + * + * @return integer $typecode code + */ + public function code( $typedescription, $includeSpecials = false ) { + $r = ((isset($this->sqltype_typeno[$typedescription])) ? $this->sqltype_typeno[$typedescription] : 99); + if ($includeSpecials) return $r; + if ($r > self::C_DATATYPE_SPECIFIED) return self::C_DATATYPE_SPECIFIED; + return $r; + } + + + + + /** + * Gets all information about a table (from a type). + * + * Format: + * array( + * name => name of the table + * columns => array( name => datatype ) + * indexes => array() raw index information rows from PRAGMA query + * keys => array() raw key information rows from PRAGMA query + * ) + * + * @param string $type type you want to get info of + * + * @return array $info + */ + protected function getTable($type) { + $tableName = $this->safeTable($type,true); + $columns = $this->getColumns($type); + $indexes = $this->getIndexes($type); + $keys = $this->getKeys($type); + $table = array('columns'=>$columns,'indexes'=>$indexes,'keys'=>$keys,'name'=>$tableName); + $this->tableArchive[$tableName] = $table; + return $table; + } + + /** + * Puts a table. Updates the table structure. + * In SQLite we can't change columns, drop columns, change or add foreign keys so we + * have a table-rebuild function. You simply load your table with getTable(), modify it and + * then store it with putTable()... + * + * @param array $tableMap information array + */ + protected function putTable($tableMap) { + $table = $tableMap['name']; + $q = array(); + $q[] = "DROP TABLE IF EXISTS tmp_backup;"; + $oldColumnNames = array_keys($this->getColumns($table)); + foreach($oldColumnNames as $k=>$v) $oldColumnNames[$k] = "`$v`"; + $q[] = "CREATE TEMPORARY TABLE tmp_backup(".implode(",",$oldColumnNames).");"; + $q[] = "INSERT INTO tmp_backup SELECT * FROM `$table`;"; + $q[] = "PRAGMA foreign_keys = 0 "; + $q[] = "DROP TABLE `$table`;"; + $newTableDefStr = ''; + foreach($tableMap['columns'] as $column=>$type) { + if ($column != 'id') { + $newTableDefStr .= ",`$column` $type"; + } + } + $fkDef = ''; + foreach($tableMap['keys'] as $key) { + $fkDef .= ", FOREIGN KEY(`{$key['from']}`) + REFERENCES `{$key['table']}`(`{$key['to']}`) + ON DELETE {$key['on_delete']} ON UPDATE {$key['on_update']}"; + } + $q[] = "CREATE TABLE `$table` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT $newTableDefStr $fkDef );"; + foreach($tableMap['indexes'] as $name=>$index) { + if (strpos($name,'UQ_')===0) { + $cols = explode('__',substr($name,strlen('UQ_'.$table))); + foreach($cols as $k=>$v) $cols[$k] = "`$v`"; + $q[] = "CREATE UNIQUE INDEX $name ON `$table` (".implode(',',$cols).")"; + } + else $q[] = "CREATE INDEX $name ON `$table` ({$index['name']}) "; + } + $q[] = "INSERT INTO `$table` SELECT * FROM tmp_backup;"; + $q[] = "DROP TABLE tmp_backup;"; + $q[] = "PRAGMA foreign_keys = 1 "; + foreach($q as $sq) $this->adapter->exec($sq); + + } + + /** + * This method upgrades the column to the specified data type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type / table that needs to be adjusted + * @param string $column column that needs to be altered + * @param integer $datatype target data type + * + * @return void + */ + public function widenColumn( $type, $column, $datatype ) { + $t = $this->getTable($type); + $t['columns'][$column] = $this->typeno_sqltype[$datatype]; + $this->putTable($t); + } + + + /** + * Returns all tables in the database + * + * @return array $tables tables + */ + public function getTables() { + return $this->adapter->getCol( "SELECT name FROM sqlite_master + WHERE type='table' AND name!='sqlite_sequence';" ); + } + + /** + * Creates an empty, column-less table for a bean. + * + * @param string $table table + */ + public function createTable( $table ) { + $table = $this->safeTable($table); + $sql = "CREATE TABLE $table ( id INTEGER PRIMARY KEY AUTOINCREMENT ) "; + $this->adapter->exec( $sql ); + } + + /** + * Returns an array containing the column names of the specified table. + * + * @param string $table table + * + * @return array $columns columns + */ + public function getColumns( $table ) { + $table = $this->safeTable($table, true); + $columnsRaw = $this->adapter->get("PRAGMA table_info('$table')"); + $columns = array(); + foreach($columnsRaw as $r) { + $columns[$r['name']]=$r['type']; + } + return $columns; + } + + /** + * Returns the indexes for type $type. + * + * @param string $type + * + * @return array $indexInfo index information + */ + protected function getIndexes($type) { + $table = $this->safeTable($type, true); + $indexes = $this->adapter->get("PRAGMA index_list('$table')"); + $indexInfoList = array(); + foreach($indexes as $i) { + $indexInfoList[$i['name']] = $this->adapter->getRow("PRAGMA index_info('{$i['name']}') "); + $indexInfoList[$i['name']]['unique'] = $i['unique']; + } + return $indexInfoList; + } + + /** + * Returns the keys for type $type. + * + * @param string $type + * + * @return array $keysInfo keys information + */ + protected function getKeys($type) { + $table = $this->safeTable($type,true); + $keys = $this->adapter->get("PRAGMA foreign_key_list('$table')"); + $keyInfoList = array(); + foreach($keys as $k) { + $keyInfoList['from_'.$k['from'].'_to_table_'.$k['table'].'_col_'.$k['to']] = $k; + } + return $keyInfoList; + } + + /** + * Adds a Unique index constrain to the table. + * + * @param string $table table + * @param string $column1 first column + * @param string $column2 second column + * + * @return void + */ + public function addUniqueIndex( $type,$columns ) { + $table = $this->safeTable($type,true); + $name = 'UQ_'.$table.implode('__',$columns); + $t = $this->getTable($type); + if (isset($t['indexes'][$name])) return; + $t['indexes'][$name] = array('name'=>$name); + $this->putTable($t); + } + + /** + * Given an Database Specific SQLState and a list of QueryWriter + * Standard SQL States this function converts the raw SQL state to a + * database agnostic ANSI-92 SQL states and checks if the given state + * is in the list of agnostic states. + * + * @param string $state state + * @param array $list list of states + * + * @return boolean $isInArray whether state is in list + */ + public function sqlStateIn($state, $list) { + $stateMap = array( + 'HY000'=>RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE, + '23000'=>RedBean_QueryWriter::C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION + ); + return in_array((isset($stateMap[$state]) ? $stateMap[$state] : '0'),$list); + } + + /** + * This method should add an index to a type and field with name + * $name. + * This methods accepts a type and infers the corresponding table name. + * + * @param $type type to add index to + * @param $name name of the new index + * @param $column field to index + * + * @return void + */ + public function addIndex($type, $name, $column) { + $table = $type; + $table = $this->safeTable($table); + $name = preg_replace('/\W/','',$name); + $column = $this->safeColumn($column,true); + foreach( $this->adapter->get("PRAGMA INDEX_LIST($table) ") as $ind) { + if ($ind['name']===$name) return; + } + $t = $this->getTable($type); + $t['indexes'][$name] = array('name'=>$column); + return $this->putTable($t); + } + + + /** + * Counts rows in a table. + * Uses SQLite optimization for deleting all records (i.e. no WHERE) + * + * @param string $beanType + * + * @return integer $numRowsFound + */ + public function wipe($type) { + $table = $this->safeTable($type); + $this->adapter->exec("DELETE FROM $table"); + } + + /** + * Adds a foreign key to a type + * + * @param string $type type you want to modify table of + * @param string $targetType target type + * @param string $field field of the type that needs to get the fk + * @param string $targetField field where the fk needs to point to + * @param boolean $isDep whether this field is dependent on it's referenced record + * + * @return bool $success whether an FK has been added + */ + public function addFK( $type, $targetType, $field, $targetField, $isDep=false) { + return $this->buildFK($type, $targetType, $field, $targetField, $isDep); + } + + /** + * Adds a foreign key to a type + * + * @param string $type type you want to modify table of + * @param string $targetType target type + * @param string $field field of the type that needs to get the fk + * @param string $targetField field where the fk needs to point to + * @param integer $buildopt 0 = NO ACTION, 1 = ON DELETE CASCADE + * + * @return boolean $didIt + * + * @note: cant put this in try-catch because that can hide the fact + * that database has been damaged. + */ + + protected function buildFK($type, $targetType, $field, $targetField,$constraint=false) { + $consSQL = ($constraint ? 'CASCADE' : 'SET NULL'); + $t = $this->getTable($type); + $label = 'from_'.$field.'_to_table_'.$targetType.'_col_'.$targetField; + if (isset($t['keys'][$label]) + && $t['keys'][$label]['table']===$targetType + && $t['keys'][$label]['from']===$field + && $t['keys'][$label]['to']===$targetField + && $t['keys'][$label]['on_delete']===$consSQL + ) return false; + + $t['keys'][$label] = array( + 'table' => $targetType, + 'from' => $field, + 'to' => $targetField, + 'on_update' => 'SET NULL', + 'on_delete' => $consSQL + ); + $this->putTable($t); + return true; + } + + + /** + * Add the constraints for a specific database driver: SQLite. + * @todo Too many arguments; find a way to solve this in a neater way. + * + * @param string $table table + * @param string $table1 table1 + * @param string $table2 table2 + * @param string $property1 property1 + * @param string $property2 property2 + * + * @return boolean $succes whether the constraint has been applied + */ + protected function constrain($table, $table1, $table2, $property1, $property2) { + $writer = $this; + $adapter = $this->adapter; + $firstState = $this->buildFK($table,$table1,$property1,'id',true); + $secondState = $this->buildFK($table,$table2,$property2,'id',true); + return ($firstState && $secondState); + } + + /** + * Removes all tables and views from the database. + * + * @return void + */ + public function wipeAll() { + $this->adapter->exec('PRAGMA foreign_keys = 0 '); + foreach($this->getTables() as $t) { + try{ + $this->adapter->exec("drop table if exists`$t`"); + } + catch(Exception $e){} + try{ + $this->adapter->exec("drop view if exists`$t`"); + } + catch(Exception $e){} + } + $this->adapter->exec('PRAGMA foreign_keys = 1 '); + } + + +} + + +/** + * RedBean PostgreSQL Query Writer + * + * @file RedBean/QueryWriter/PostgreSQL.php + * @description QueryWriter for the PostgreSQL database system. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_QueryWriter_PostgreSQL extends RedBean_QueryWriter_AQueryWriter implements RedBean_QueryWriter { + + /** + * DATA TYPE + * Integer Data Type + * @var integer + */ + const C_DATATYPE_INTEGER = 0; + + /** + * DATA TYPE + * Double Precision Type + * @var integer + */ + const C_DATATYPE_DOUBLE = 1; + + /** + * DATA TYPE + * String Data Type + * @var integer + */ + const C_DATATYPE_TEXT = 3; + + + /** + * Special type date for storing date values: YYYY-MM-DD + * @var integer + */ + const C_DATATYPE_SPECIAL_DATE = 80; + + /** + * Special type date for storing date values: YYYY-MM-DD HH:MM:SS + * @var integer + */ + const C_DATATYPE_SPECIAL_DATETIME = 81; + + + + /** + * Specified field type cannot be overruled + * @var integer + */ + const C_DATATYPE_SPECIFIED = 99; + + + /** + * Holds Database Adapter + * @var RedBean_DBAdapter + */ + protected $adapter; + + /** + * character to escape keyword table/column names + * @var string + */ + protected $quoteCharacter = '"'; + + /** + * Default Value + * @var string + */ + protected $defaultValue = 'DEFAULT'; + + /** + * This method returns the datatype to be used for primary key IDS and + * foreign keys. Returns one if the data type constants. + * + * @return integer $const data type to be used for IDS. + */ + public function getTypeForID() { + return self::C_DATATYPE_INTEGER; + } + + /** + * Returns the insert suffix SQL Snippet + * + * @param string $table table + * + * @return string $sql SQL Snippet + */ + protected function getInsertSuffix($table) { + return 'RETURNING id '; + } + + /** + * Constructor + * The Query Writer Constructor also sets up the database + * + * @param RedBean_DBAdapter $adapter adapter + */ + public function __construct( RedBean_Adapter $adapter ) { + + + $this->typeno_sqltype = array( + self::C_DATATYPE_INTEGER=>' integer ', + self::C_DATATYPE_DOUBLE=>' double precision ', + self::C_DATATYPE_TEXT=>' text ', + self::C_DATATYPE_SPECIAL_DATE => ' date ', + self::C_DATATYPE_SPECIAL_DATETIME => ' timestamp without time zone ', + + + ); + + $this->sqltype_typeno = array(); + foreach($this->typeno_sqltype as $k=>$v) + $this->sqltype_typeno[trim(strtolower($v))]=$k; + + + $this->adapter = $adapter; + parent::__construct(); + } + + /** + * Returns all tables in the database + * + * @return array $tables tables + */ + public function getTables() { + return $this->adapter->getCol( "select table_name from information_schema.tables + where table_schema = 'public'" ); + } + + /** + * Creates an empty, column-less table for a bean. + * + * @param string $table table to create + */ + public function createTable( $table ) { + $table = $this->safeTable($table); + $sql = " CREATE TABLE $table (id SERIAL PRIMARY KEY); "; + $this->adapter->exec( $sql ); + } + + /** + * Returns an array containing the column names of the specified table. + * + * @param string $table table to get columns from + * + * @return array $columns array filled with column (name=>type) + */ + public function getColumns( $table ) { + $table = $this->safeTable($table, true); + $columnsRaw = $this->adapter->get("select column_name, data_type from information_schema.columns where table_name='$table'"); + foreach($columnsRaw as $r) { + $columns[$r['column_name']]=$r['data_type']; + } + return $columns; + } + + /** + * Returns the pgSQL Column Type Code (integer) that corresponds + * to the given value type. + * + * @param string $value value to determine type of + * + * @return integer $type type code for this value + */ + public function scanType( $value, $flagSpecial=false ) { + + $this->svalue=$value; + + if ($flagSpecial && $value) { + if (preg_match('/^\d{4}\-\d\d-\d\d$/',$value)) { + return RedBean_QueryWriter_PostgreSQL::C_DATATYPE_SPECIAL_DATE; + } + if (preg_match('/^\d{4}\-\d\d-\d\d\s\d\d:\d\d:\d\d(\.\d{1,6})?$/',$value)) { + return RedBean_QueryWriter_PostgreSQL::C_DATATYPE_SPECIAL_DATETIME; + } + + } + + $sz = ($this->startsWithZeros($value)); + if ($sz) return self::C_DATATYPE_TEXT; + if ($value===null || ($value instanceof RedBean_Driver_PDO_NULL) ||(is_numeric($value) + && floor($value)==$value + && $value < 2147483648 + && $value > -2147483648)) { + return self::C_DATATYPE_INTEGER; + } + elseif(is_numeric($value)) { + return self::C_DATATYPE_DOUBLE; + } + else { + return self::C_DATATYPE_TEXT; + } + } + + /** + * Returns the Type Code for a Column Description. + * Given an SQL column description this method will return the corresponding + * code for the writer. If the include specials flag is set it will also + * return codes for special columns. Otherwise special columns will be identified + * as specified columns. + * + * @param string $typedescription description + * @param boolean $includeSpecials whether you want to get codes for special columns as well + * + * @return integer $typecode code + */ + public function code( $typedescription, $includeSpecials = false ) { + $r = ((isset($this->sqltype_typeno[$typedescription])) ? $this->sqltype_typeno[$typedescription] : 99); + if ($includeSpecials) return $r; + if ($r > self::C_DATATYPE_SPECIFIED) return self::C_DATATYPE_SPECIFIED; + return $r; + } + + /** + * This method upgrades the column to the specified data type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type / table that needs to be adjusted + * @param string $column column that needs to be altered + * @param integer $datatype target data type + * + * @return void + */ + public function widenColumn( $type, $column, $datatype ) { + $table = $type; + $type = $datatype; + $table = $this->safeTable($table); + $column = $this->safeColumn($column); + $newtype = $this->typeno_sqltype[$type]; + $changecolumnSQL = "ALTER TABLE $table \n\t ALTER COLUMN $column TYPE $newtype "; + $this->adapter->exec( $changecolumnSQL ); + } + + /** + * Adds a Unique index constrain to the table. + * + * @param string $table table to add index to + * @param string $col1 column to be part of index + * @param string $col2 column 2 to be part of index + * + * @return void + */ + public function addUniqueIndex( $table,$columns ) { + $table = $this->safeTable($table, true); + sort($columns); //else we get multiple indexes due to order-effects + foreach($columns as $k=>$v) { + $columns[$k]=$this->safeColumn($v); + } + $r = $this->adapter->get("SELECT + i.relname as index_name + FROM + pg_class t, + pg_class i, + pg_index ix, + pg_attribute a + WHERE + t.oid = ix.indrelid + AND i.oid = ix.indexrelid + AND a.attrelid = t.oid + AND a.attnum = ANY(ix.indkey) + AND t.relkind = 'r' + AND t.relname = '$table' + ORDER BY t.relname, i.relname;"); + + $name = "UQ_".sha1($table.implode(',',$columns)); + if ($r) { + foreach($r as $i) { + if (strtolower( $i['index_name'] )== strtolower( $name )) { + return; + } + } + } + $sql = "ALTER TABLE \"$table\" + ADD CONSTRAINT $name UNIQUE (".implode(',',$columns).")"; + $this->adapter->exec($sql); + } + + /** + * Given an Database Specific SQLState and a list of QueryWriter + * Standard SQL States this function converts the raw SQL state to a + * database agnostic ANSI-92 SQL states and checks if the given state + * is in the list of agnostic states. + * + * @param string $state state + * @param array $list list of states + * + * @return boolean $isInArray whether state is in list + */ + public function sqlStateIn($state, $list) { + $stateMap = array( + '42P01'=>RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE, + '42703'=>RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + '23505'=>RedBean_QueryWriter::C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION + ); + return in_array((isset($stateMap[$state]) ? $stateMap[$state] : '0'),$list); + } + + + /** + * This method should add an index to a type and field with name + * $name. + * This methods accepts a type and infers the corresponding table name. + * + * @param $type type to add index to + * @param $name name of the new index + * @param $column field to index + * + * @return void + */ + public function addIndex($type, $name, $column) { + $table = $type; + $table = $this->safeTable($table); + $name = preg_replace('/\W/','',$name); + $column = $this->safeColumn($column); + if ($this->adapter->getCell("SELECT COUNT(*) FROM pg_class WHERE relname = '$name'")) return; + try{ $this->adapter->exec("CREATE INDEX $name ON $table ($column) "); }catch(Exception $e){} + } + + /** + * Adds a foreign key to a table. The foreign key will not have any action; you + * may configure this afterwards. + * + * @param string $type type you want to modify table of + * @param string $targetType target type + * @param string $field field of the type that needs to get the fk + * @param string $targetField field where the fk needs to point to + * + * @return bool $success whether an FK has been added + */ + public function addFK( $type, $targetType, $field, $targetField, $isDep = false) { + try{ + $table = $this->safeTable($type); + $column = $this->safeColumn($field); + $tableNoQ = $this->safeTable($type,true); + $columnNoQ = $this->safeColumn($field,true); + $targetTable = $this->safeTable($targetType); + $targetTableNoQ = $this->safeTable($targetType,true); + $targetColumn = $this->safeColumn($targetField); + $targetColumnNoQ = $this->safeColumn($targetField,true); + + + $sql = "SELECT + tc.constraint_name, + tc.table_name, + kcu.column_name, + ccu.table_name AS foreign_table_name, + ccu.column_name AS foreign_column_name, + rc.delete_rule + FROM + information_schema.table_constraints AS tc + JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name + JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name + JOIN information_schema.referential_constraints AS rc ON ccu.constraint_name = rc.constraint_name + WHERE constraint_type = 'FOREIGN KEY' AND tc.table_catalog=current_database() + AND tc.table_name = '$tableNoQ' + AND ccu.table_name = '$targetTableNoQ' + AND kcu.column_name = '$columnNoQ' + AND ccu.column_name = '$targetColumnNoQ' + "; + + + $row = $this->adapter->getRow($sql); + + $flagAddKey = false; + + if (!$row) $flagAddKey = true; + + if ($row) { + if (($row['delete_rule']=='SET NULL' && $isDep) || + ($row['delete_rule']!='SET NULL' && !$isDep)) { + //delete old key + $flagAddKey = true; //and order a new one + $cName = $row['constraint_name']; + $sql = "ALTER TABLE $table DROP CONSTRAINT $cName "; + $this->adapter->exec($sql); + } + + } + + if ($flagAddKey) { + $delRule = ($isDep ? 'CASCADE' : 'SET NULL'); + $this->adapter->exec("ALTER TABLE $table + ADD FOREIGN KEY ( $column ) REFERENCES $targetTable ( + $targetColumn) ON DELETE $delRule ON UPDATE SET NULL DEFERRABLE ;"); + return true; + } + return false; + + } + catch(Exception $e){ return false; } + } + + + + /** + * Add the constraints for a specific database driver: PostgreSQL. + * @todo Too many arguments; find a way to solve this in a neater way. + * + * @param string $table table + * @param string $table1 table1 + * @param string $table2 table2 + * @param string $property1 property1 + * @param string $property2 property2 + * + * @return boolean $succes whether the constraint has been applied + */ + protected function constrain($table, $table1, $table2, $property1, $property2) { + try{ + $writer = $this; + $adapter = $this->adapter; + $fkCode = 'fk'.md5($table.$property1.$property2); + $sql = " + SELECT + c.oid, + n.nspname, + c.relname, + n2.nspname, + c2.relname, + cons.conname + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + LEFT OUTER JOIN pg_constraint cons ON cons.conrelid = c.oid + LEFT OUTER JOIN pg_class c2 ON cons.confrelid = c2.oid + LEFT OUTER JOIN pg_namespace n2 ON n2.oid = c2.relnamespace + WHERE c.relkind = 'r' + AND n.nspname IN ('public') + AND (cons.contype = 'f' OR cons.contype IS NULL) + AND + ( cons.conname = '{$fkCode}a' OR cons.conname = '{$fkCode}b' ) + + "; + + $rows = $adapter->get( $sql ); + if (!count($rows)) { + $sql1 = "ALTER TABLE \"$table\" ADD CONSTRAINT + {$fkCode}a FOREIGN KEY ($property1) + REFERENCES \"$table1\" (id) ON DELETE CASCADE "; + $sql2 = "ALTER TABLE \"$table\" ADD CONSTRAINT + {$fkCode}b FOREIGN KEY ($property2) + REFERENCES \"$table2\" (id) ON DELETE CASCADE "; + $adapter->exec($sql1); + $adapter->exec($sql2); + } + return true; + } + catch(Exception $e){ return false; } + } + + /** + * Removes all tables and views from the database. + */ + public function wipeAll() { + $this->adapter->exec('SET CONSTRAINTS ALL DEFERRED'); + foreach($this->getTables() as $t) { + $t = $this->noKW($t); + try{ + $this->adapter->exec("drop table if exists $t CASCADE "); + } + catch(Exception $e){ } + try{ + $this->adapter->exec("drop view if exists $t CASCADE "); + } + catch(Exception $e){ throw $e; } + } + $this->adapter->exec('SET CONSTRAINTS ALL IMMEDIATE'); + } + + + + /** + * This method removes all beans of a certain type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type bean type + * + * @return void + */ + public function wipe($type) { + $table = $type; + $table = $this->safeTable($table); + $sql = "TRUNCATE $table CASCADE"; + $this->adapter->exec($sql); + } + +} + + +/** + * RedBean CUBRID Writer + * + * @file RedBean/QueryWriter/CUBRID.php + * @description Represents a CUBRID Database to RedBean + * To write a driver for a different database for RedBean + * you should only have to change this file. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + + */ +class RedBean_QueryWriter_CUBRID extends RedBean_QueryWriter_AQueryWriter implements RedBean_QueryWriter { + + + /** + * Here we describe the datatypes that RedBean + * Uses internally. If you write a QueryWriter for + * RedBean you should provide a list of types like this. + */ + + /** + * + * DATA TYPE + * Signed 4 byte Integer + * @var integer + */ + const C_DATATYPE_INTEGER = 0; + + /** + * DATA TYPE + * Double precision floating point number + * @var integer + */ + const C_DATATYPE_DOUBLE = 1; + + /** + * + * DATA TYPE + * Variable length text + * @var integer + */ + const C_DATATYPE_STRING = 2; + + + /** + * Special type date for storing date values: YYYY-MM-DD + * @var integer + */ + const C_DATATYPE_SPECIAL_DATE = 80; + + /** + * Special type datetime for store date-time values: YYYY-MM-DD HH:II:SS + * @var integer + */ + const C_DATATYPE_SPECIAL_DATETIME = 81; + + + /** + * + * DATA TYPE + * Specified. This means the developer or DBA + * has altered the column to a different type not + * recognized by RedBean. This high number makes sure + * it will not be converted back to another type by accident. + * @var integer + */ + const C_DATATYPE_SPECIFIED = 99; + + + + /** + * Holds the RedBean Database Adapter. + * @var RedBean_Adapter_DBAdapter + */ + protected $adapter; + + /** + * character to escape keyword table/column names + * @var string + */ + protected $quoteCharacter = '`'; + + /** + * Do everything that needs to be done to format a table name. + * + * @param string $name of table + * + * @return string table name + */ + public function safeTable($name, $noQuotes = false) { + $name = strtolower($name); + $name = $this->check($name); + if (!$noQuotes) $name = $this->noKW($name); + return $name; + } + + + /** + * Do everything that needs to be done to format a column name. + * + * @param string $name of column + * + * @return string $column name + */ + public function safeColumn($name, $noQuotes = false) { + $name = strtolower($name); + $name = $this->check($name); + if (!$noQuotes) $name = $this->noKW($name); + return $name; + } + + /** + * Constructor. + * The Query Writer Constructor also sets up the database. + * + * @param RedBean_Adapter_DBAdapter $adapter adapter + * + */ + public function __construct( RedBean_Adapter $adapter ) { + + $this->typeno_sqltype = array( + RedBean_QueryWriter_CUBRID::C_DATATYPE_INTEGER => ' INTEGER ', + RedBean_QueryWriter_CUBRID::C_DATATYPE_DOUBLE => ' DOUBLE ', + RedBean_QueryWriter_CUBRID::C_DATATYPE_STRING => ' STRING ', + RedBean_QueryWriter_CUBRID::C_DATATYPE_SPECIAL_DATE => ' DATE ', + RedBean_QueryWriter_CUBRID::C_DATATYPE_SPECIAL_DATETIME => ' DATETIME ', + ); + + $this->sqltype_typeno = array(); + foreach($this->typeno_sqltype as $k=>$v) + $this->sqltype_typeno[trim(($v))]=$k; + $this->sqltype_typeno['STRING(1073741823)'] = self::C_DATATYPE_STRING; + + $this->adapter = $adapter; + parent::__construct(); + } + + /** + * This method returns the datatype to be used for primary key IDS and + * foreign keys. Returns one if the data type constants. + * + * @return integer $const data type to be used for IDS. + */ + public function getTypeForID() { + return self::C_DATATYPE_INTEGER; + } + + /** + * Returns all tables in the database. + * + * @return array $tables tables + */ + public function getTables() { + $rows = $this->adapter->getCol( "SELECT class_name FROM db_class WHERE is_system_class = 'NO';" ); + return $rows; + } + + /** + * Creates an empty, column-less table for a bean based on it's type. + * This function creates an empty table for a bean. It uses the + * safeTable() function to convert the type name to a table name. + * + * @param string $table type of bean you want to create a table for + * + * @return void + */ + public function createTable( $table ) { + $rawTable = $this->safeTable($table,true); + $table = $this->safeTable($table); + + $sql = ' CREATE TABLE '.$table.' ( + "id" integer AUTO_INCREMENT, + CONSTRAINT "pk_'.$rawTable.'_id" PRIMARY KEY("id") + )'; + $this->adapter->exec( $sql ); + } + + + + /** + * Returns an array containing the column names of the specified table. + * + * @param string $table table + * + * @return array $columns columns + */ + public function getColumns( $table ) { + $columns = array(); + $table = $this->safeTable($table); + $columnsRaw = $this->adapter->get("SHOW COLUMNS FROM $table"); + foreach($columnsRaw as $r) { + $columns[$r['Field']]=$r['Type']; + } + return $columns; + } + + /** + * Returns the Column Type Code (integer) that corresponds + * to the given value type. + * + * @param string $value value + * + * @return integer $type type + */ + public function scanType( $value, $flagSpecial=false ) { + $this->svalue = $value; + + if (is_null($value)) { + return self::C_DATATYPE_INTEGER; + } + + if ($flagSpecial) { + if (preg_match('/^\d{4}\-\d\d-\d\d$/',$value)) { + return self::C_DATATYPE_SPECIAL_DATE; + } + if (preg_match('/^\d{4}\-\d\d-\d\d\s\d\d:\d\d:\d\d$/',$value)) { + return self::C_DATATYPE_SPECIAL_DATETIME; + } + } + $value = strval($value); + if (!$this->startsWithZeros($value)) { + + if (is_numeric($value) && (floor($value)==$value) && $value >= -2147483647 && $value <= 2147483647 ) { + return self::C_DATATYPE_INTEGER; + } + if (is_numeric($value)) { + return self::C_DATATYPE_DOUBLE; + } + } + + return self::C_DATATYPE_STRING; + } + + /** + * Returns the Type Code for a Column Description. + * Given an SQL column description this method will return the corresponding + * code for the writer. If the include specials flag is set it will also + * return codes for special columns. Otherwise special columns will be identified + * as specified columns. + * + * @param string $typedescription description + * @param boolean $includeSpecials whether you want to get codes for special columns as well + * + * @return integer $typecode code + */ + public function code( $typedescription, $includeSpecials = false ) { + + + $r = ((isset($this->sqltype_typeno[$typedescription])) ? $this->sqltype_typeno[$typedescription] : self::C_DATATYPE_SPECIFIED); + + if ($includeSpecials) return $r; + if ($r > self::C_DATATYPE_SPECIFIED) return self::C_DATATYPE_SPECIFIED; + return $r; + } + + /** + * This method adds a column to a table. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type name of the table + * @param string $column name of the column + * @param integer $field data type for field + * + * @return void + * + */ + public function addColumn( $type, $column, $field ) { + $table = $type; + $type = $field; + $table = $this->safeTable($table); + $column = $this->safeColumn($column); + $type = array_key_exists($type, $this->typeno_sqltype) ? $this->typeno_sqltype[$type] : ''; + $sql = "ALTER TABLE $table ADD COLUMN $column $type "; + $this->adapter->exec( $sql ); + } + + + /** + * This method upgrades the column to the specified data type. + * This methods accepts a type and infers the corresponding table name. + * + * @param string $type type / table that needs to be adjusted + * @param string $column column that needs to be altered + * @param integer $datatype target data type + * + * @return void + */ + public function widenColumn( $type, $column, $datatype ) { + $table = $type; + $type = $datatype; + $table = $this->safeTable($table); + $column = $this->safeColumn($column); + $newtype = array_key_exists($type, $this->typeno_sqltype) ? $this->typeno_sqltype[$type] : ''; + $changecolumnSQL = "ALTER TABLE $table CHANGE $column $column $newtype "; + $this->adapter->exec( $changecolumnSQL ); + } + + /** + * Adds a Unique index constrain to the table. + * + * @param string $table table + * @param string $col1 column + * @param string $col2 column + * + * @return void + */ + public function addUniqueIndex( $table,$columns ) { + $table = $this->safeTable($table); + sort($columns); //else we get multiple indexes due to order-effects + foreach($columns as $k=>$v) { + $columns[$k]= $this->safeColumn($v); + } + $r = $this->adapter->get("SHOW INDEX FROM $table"); + $name = 'UQ_'.sha1(implode(',',$columns)); + if ($r) { + foreach($r as $i) { + if (strtoupper($i['Key_name'])== strtoupper($name)) { + return; + } + } + } + $sql = "ALTER TABLE $table + ADD CONSTRAINT UNIQUE $name (".implode(',',$columns).")"; + $this->adapter->exec($sql); + } + + /** + * Tests whether a given SQL state is in the list of states. + * + * @param string $state code + * @param array $list array of sql states + * + * @return boolean $yesno occurs in list + */ + public function sqlStateIn($state, $list) { + if ($state=='HY000') { + if (in_array(RedBean_QueryWriter::C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION,$list)) return true; + if (in_array(RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN,$list)) return true; + if (in_array(RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE,$list)) return true; + } + return false; + } + + + /** + * Adds a constraint. If one of the beans gets trashed + * the other, related bean should be removed as well. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * @param bool $dontCache by default we use a cache, TRUE = NO CACHING (optional) + * + * @return void + */ + public function addConstraint( RedBean_OODBBean $bean1, RedBean_OODBBean $bean2) { + $table1 = $bean1->getMeta('type'); + $table2 = $bean2->getMeta('type'); + $writer = $this; + $adapter = $this->adapter; + $table = RedBean_QueryWriter_AQueryWriter::getAssocTableFormat( array( $table1,$table2) ); + $property1 = $bean1->getMeta('type') . '_id'; + $property2 = $bean2->getMeta('type') . '_id'; + if ($property1==$property2) $property2 = $bean2->getMeta('type').'2_id'; + //Dispatch to right method + return $this->constrain($table, $table1, $table2, $property1, $property2); + } + + + /** + * Add the constraints for a specific database driver: CUBRID + * @todo Too many arguments; find a way to solve this in a neater way. + * + * @param string $table table + * @param string $table1 table1 + * @param string $table2 table2 + * @param string $property1 property1 + * @param string $property2 property2 + * + * @return boolean $succes whether the constraint has been applied + */ + protected function constrain($table, $table1, $table2, $property1, $property2) { + $writer = $this; + $adapter = $this->adapter; + $firstState = $this->buildFK($table,$table1,$property1,'id',true); + $secondState = $this->buildFK($table,$table2,$property2,'id',true); + return ($firstState && $secondState); + } + + /** + * This method should add an index to a type and field with name + * $name. + * This methods accepts a type and infers the corresponding table name. + * + * @param $type type to add index to + * @param $name name of the new index + * @param $column field to index + * + * @return void + */ + public function addIndex($type, $name, $column) { + $table = $type; + $table = $this->safeTable($table); + $name = preg_replace('/\W/','',$name); + $column = $this->safeColumn($column); + $index = $this->adapter->getRow("SELECT 1 as `exists` FROM db_index WHERE index_name = ? ",array($name)); + if ($index && $index['exists']) return; // positive number will return, 0 will continue. + try{ $this->adapter->exec("CREATE INDEX $name ON $table ($column) "); }catch(Exception $e){} + } + + /** + * This method adds a foreign key from type and field to + * target type and target field. + * The foreign key is created without an action. On delete/update + * no action will be triggered. The FK is only used to allow database + * tools to generate pretty diagrams and to make it easy to add actions + * later on. + * This methods accepts a type and infers the corresponding table name. + * + * + * @param string $type type that will have a foreign key field + * @param string $targetType points to this type + * @param string $field field that contains the foreign key value + * @param string $targetField field where the fk points to + * + * @return void + */ + public function addFK( $type, $targetType, $field, $targetField, $isDependent = false) { + return $this->buildFK($type, $targetType, $field, $targetField, $isDependent); + } + + + /** + * This method adds a foreign key from type and field to + * target type and target field. + * The foreign key is created without an action. On delete/update + * no action will be triggered. The FK is only used to allow database + * tools to generate pretty diagrams and to make it easy to add actions + * later on. + * This methods accepts a type and infers the corresponding table name. + * + * + * @param string $type type that will have a foreign key field + * @param string $targetType points to this type + * @param string $field field that contains the foreign key value + * @param string $targetField field where the fk points to + * + * @return void + */ + protected function buildFK($type, $targetType, $field, $targetField,$isDep=false) { + $table = $this->safeTable($type); + $tableNoQ = $this->safeTable($type,true); + $targetTable = $this->safeTable($targetType); + $targetTableNoQ = $this->safeTable($targetType,true); + $column = $this->safeColumn($field); + $columnNoQ = $this->safeColumn($field,true); + $targetColumn = $this->safeColumn($targetField); + $targetColumnNoQ = $this->safeColumn($targetField,true); + $keys = $this->getKeys($targetTableNoQ,$tableNoQ); + $needsToAddFK = true; + $needsToDropFK = false; + foreach($keys as $key) { + if ($key['FKTABLE_NAME']==$tableNoQ && $key['FKCOLUMN_NAME']==$columnNoQ) { + //already has an FK + $needsToDropFK = true; + if ((($isDep && $key['DELETE_RULE']==0) || (!$isDep && $key['DELETE_RULE']==3))) { + return false; + } + break; + } + } + + if ($needsToDropFK) { + $sql = "ALTER TABLE $table DROP FOREIGN KEY {$key['FK_NAME']} "; + $this->adapter->exec($sql); + } + $casc = ($isDep ? 'CASCADE' : 'SET NULL'); + $sql = "ALTER TABLE $table ADD CONSTRAINT FOREIGN KEY($column) REFERENCES $targetTable($targetColumn) ON DELETE $casc "; + $this->adapter->exec($sql); + } + + + /** + * Drops all tables in database + */ + public function wipeAll() { + foreach($this->getTables() as $t) { + foreach($this->getKeys($t) as $k) { + $this->adapter->exec("ALTER TABLE \"{$k['FKTABLE_NAME']}\" DROP FOREIGN KEY \"{$k['FK_NAME']}\""); + } + $this->adapter->exec("DROP TABLE \"$t\""); + } + + } + + + /** + * Obtains the keys of a table using the PDO schema function. + * + * @param type $table + * @return type + */ + protected function getKeys($table,$table2=null) { + $pdo = $this->adapter->getDatabase()->getPDO(); + $keys = $pdo->cubrid_schema(PDO::CUBRID_SCH_EXPORTED_KEYS,$table);//print_r($keys); + if ($table2) $keys = array_merge($keys, $pdo->cubrid_schema(PDO::CUBRID_SCH_IMPORTED_KEYS,$table2) );//print_r($keys); + + return $keys; + } + + /** + * Checks table name or column name. + * + * @param string $table table string + * + * @return string $table escaped string + */ + protected function check($table) { + if ($this->quoteCharacter && strpos($table, $this->quoteCharacter)!==false) { + throw new Redbean_Exception_Security('Illegal chars in table name'); + } + return $table; + } + +} + +/** + * RedBean Exception Base + * + * @file RedBean/Exception.php + * @desc Represents the base class for RedBean Exceptions + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Exception extends LogicException {} + +/** + * RedBean Exception SQL + * + * @file RedBean/Exception/SQL.php + * @desc Represents a generic database exception independent of the underlying driver. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Exception_SQL extends RuntimeException { + + /** + * Holds the current SQL Strate code. + * @var string + */ + private $sqlState; + + /** + * Returns an ANSI-92 compliant SQL state. + * + * @return string $state ANSI state code + */ + public function getSQLState() { + return $this->sqlState; + } + + /** + * @todo parse state to verify valid ANSI92! + * Stores ANSI-92 compliant SQL state. + * + * @param string $sqlState code + * + * @return void + */ + public function setSQLState( $sqlState ) { + $this->sqlState = $sqlState; + } + + /** + * To String prints both code and SQL state. + * + * @return string $message prints this exception instance as a string + */ + public function __toString() { + return '['.$this->getSQLState().'] - '.$this->getMessage(); + } +} + +/** + * Exception Security. + * Part of the RedBean Exceptions Mechanism. + * + * @file RedBean/Exception + * @desc Represents a subtype in the RedBean Exception System. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Exception_Security extends RedBean_Exception {} + +/** + * RedBean Object Oriented DataBase + * + * @file RedBean/OODB.php + * @desc RedBean OODB + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * The RedBean OODB Class is the main class of RedBeanPHP. + * It takes RedBean_OODBBean objects and stores them to and loads them from the + * database as well as providing other CRUD functions. This class acts as a + * object database. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_OODB extends RedBean_Observable { + + /** + * Chill mode, for fluid mode but with a list of beans / types that + * are considered to be stable and don't need to be modified. + * @var array + */ + protected $chillList = array(); + + /** + * List of dependencies. Format: $type => array($depensOnMe, $andMe) + * @var array + */ + protected $dep = array(); + + /** + * Secret stash. Used for batch loading. + * @var array + */ + protected $stash = NULL; + + /** + * Contains the writer for OODB. + * @var RedBean_Adapter_DBAdapter + */ + protected $writer; + + /** + * Whether this instance of OODB is frozen or not. + * In frozen mode the schema will not de modified, in fluid mode + * the schema can be adjusted to meet the needs of the developer. + * @var boolean + */ + protected $isFrozen = false; + + /** + * Bean Helper. The bean helper to give to the beans. Bean Helpers + * assist beans in getting hold of a toolbox. + * @var null|\RedBean_BeanHelperFacade + */ + protected $beanhelper = null; + + /** + * Association Manager. + * Reference to the Association Manager. The OODB class uses + * the association manager to store many-to-many relations. + * + * @var RedBean_AssociationManager + */ + protected $assocManager = null; + + /** + * The RedBean OODB Class is the main class of RedBean. + * It takes RedBean_OODBBean objects and stores them to and loads them from the + * database as well as providing other CRUD functions. This class acts as a + * object database. + * Constructor, requires a DBAadapter (dependency inversion) + * @param RedBean_Adapter_DBAdapter $adapter + */ + public function __construct( $writer ) { + if ($writer instanceof RedBean_QueryWriter) { + $this->writer = $writer; + } + $this->beanhelper = new RedBean_BeanHelper_Facade(); + } + + /** + * Toggles fluid or frozen mode. In fluid mode the database + * structure is adjusted to accomodate your objects. In frozen mode + * this is not the case. + * + * You can also pass an array containing a selection of frozen types. + * Let's call this chilly mode, it's just like fluid mode except that + * certain types (i.e. tables) aren't touched. + * + * @param boolean|array $trueFalse + */ + public function freeze( $tf ) { + if (is_array($tf)) { + $this->chillList = $tf; + $this->isFrozen = false; + } + else + $this->isFrozen = (boolean) $tf; + } + + + /** + * Returns the current mode of operation of RedBean. + * In fluid mode the database + * structure is adjusted to accomodate your objects. + * In frozen mode + * this is not the case. + * + * @return boolean $yesNo TRUE if frozen, FALSE otherwise + */ + public function isFrozen() { + return (bool) $this->isFrozen; + } + + /** + * Dispenses a new bean (a RedBean_OODBBean Bean Object) + * of the specified type. Always + * use this function to get an empty bean object. Never + * instantiate a RedBean_OODBBean yourself because it needs + * to be configured before you can use it with RedBean. This + * function applies the appropriate initialization / + * configuration for you. + * + * @param string $type type of bean you want to dispense + * + * @return RedBean_OODBBean $bean the new bean instance + */ + public function dispense($type ) { + $bean = new RedBean_OODBBean(); + $bean->setBeanHelper($this->beanhelper); + $bean->setMeta('type',$type ); + $bean->setMeta('sys.id','id'); + $bean->id = 0; + if (!$this->isFrozen) $this->check( $bean ); + $bean->setMeta('tainted',true); + $bean->setMeta('sys.orig',array('id'=>0)); + $this->signal('dispense',$bean ); + return $bean; + } + + /** + * Sets bean helper to be given to beans. + * Bean helpers assist beans in getting a reference to a toolbox. + * + * @param RedBean_IBeanHelper $beanhelper helper + * + * @return void + */ + public function setBeanHelper( RedBean_BeanHelper $beanhelper) { + $this->beanhelper = $beanhelper; + } + + + /** + * Checks whether a RedBean_OODBBean bean is valid. + * If the type is not valid or the ID is not valid it will + * throw an exception: RedBean_Exception_Security. + * @throws RedBean_Exception_Security $exception + * + * @param RedBean_OODBBean $bean the bean that needs to be checked + * + * @return void + */ + public function check( RedBean_OODBBean $bean ) { + //Is all meta information present? + if (!isset($bean->id) ) { + throw new RedBean_Exception_Security('Bean has incomplete Meta Information id '); + } + if (!($bean->getMeta('type'))) { + throw new RedBean_Exception_Security('Bean has incomplete Meta Information II'); + } + //Pattern of allowed characters + $pattern = '/[^a-z0-9_]/i'; + //Does the type contain invalid characters? + if (preg_match($pattern,$bean->getMeta('type'))) { + throw new RedBean_Exception_Security('Bean Type is invalid'); + } + //Are the properties and values valid? + foreach($bean as $prop=>$value) { + if ( + is_array($value) || + (is_object($value)) || + strlen($prop)<1 || + preg_match($pattern,$prop) + ) { + throw new RedBean_Exception_Security("Invalid Bean: property $prop "); + } + } + } + + + /** + * Searches the database for a bean that matches conditions $conditions and sql $addSQL + * and returns an array containing all the beans that have been found. + * + * Conditions need to take form: + * + * array( + * 'PROPERTY' => array( POSSIBLE VALUES... 'John','Steve' ) + * 'PROPERTY' => array( POSSIBLE VALUES... ) + * ); + * + * All conditions are glued together using the AND-operator, while all value lists + * are glued using IN-operators thus acting as OR-conditions. + * + * Note that you can use property names; the columns will be extracted using the + * appropriate bean formatter. + * + * @throws RedBean_Exception_SQL + * + * @param string $type type of beans you are looking for + * @param array $conditions list of conditions + * @param string $addSQL SQL to be used in query + * @param boolean $all whether you prefer to use a WHERE clause or not (TRUE = not) + * + * @return array $beans resulting beans + */ + public function find($type,$conditions=array(),$addSQL=null,$all=false) { + try { + $beans = $this->convertToBeans($type,$this->writer->selectRecord($type,$conditions,$addSQL,false,false,$all)); + return $beans; + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN) + )) throw $e; + } + return array(); + } + + + /** + * Checks whether the specified table already exists in the database. + * Not part of the Object Database interface! + * + * @param string $table table name (not type!) + * + * @return boolean $exists whether the given table exists within this database. + */ + public function tableExists($table) { + //does this table exist? + $tables = $this->writer->getTables(); + return in_array(($table), $tables); + } + + + /** + * Processes all column based build commands. + * A build command is an additional instruction for the Query Writer. It is processed only when + * a column gets created. The build command is often used to instruct the writer to write some + * extra SQL to create indexes or constraints. Build commands are stored in meta data of the bean. + * They are only for internal use, try to refrain from using them in your code directly. + * + * @param string $table name of the table to process build commands for + * @param string $property name of the property to process build commands for + * @param RedBean_OODBBean $bean bean that contains the build commands + * + * @return void + */ + protected function processBuildCommands($table, $property, RedBean_OODBBean $bean) { + if ($inx = ($bean->getMeta('buildcommand.indexes'))) { + if (isset($inx[$property])) $this->writer->addIndex($table,$inx[$property],$property); + } + } + + + + /** + * Process groups. Internal function. Processes different kind of groups for + * storage function. Given a list of original beans and a list of current beans, + * this function calculates which beans remain in the list (residue), which + * have been deleted (are in the trashcan) and which beans have been added + * (additions). + * + * @param array $originals originals + * @param array $current the current beans + * @param array $additions beans that have been added + * @param array $trashcan beans that have been deleted + * @param array $residue beans that have been left untouched + * + * @return array $result new relational state + */ + private function processGroups( $originals, $current, $additions, $trashcan, $residue ) { + return array( + array_merge($additions,array_diff($current,$originals)), + array_merge($trashcan,array_diff($originals,$current)), + array_merge($residue,array_intersect($current,$originals)) + ); + } + + + /** + * Figures out the desired type given the cast string ID. + * + * @param string $cast cast identifier + * + * @return integer $typeno + */ + private function getTypeFromCast($cast) { + if ($cast=='string') { + $typeno = $this->writer->scanType('STRING'); + } + elseif ($cast=='id') { + $typeno = $this->writer->getTypeForID(); + } + elseif(isset($this->writer->sqltype_typeno[$cast])) { + $typeno = $this->writer->sqltype_typeno[$cast]; + } + else { + throw new RedBean_Exception('Invalid Cast'); + } + return $typeno; + } + + /** + * Processes an embedded bean. First the bean gets unboxed if possible. + * Then, the bean is stored if needed and finally the ID of the bean + * will be returned. + * + * @param RedBean_OODBBean|Model $v the bean or model + * + * @return integer $id + */ + private function prepareEmbeddedBean($v) { + if (!$v->id || $v->getMeta('tainted')) { + $this->store($v); + } + return $v->id; + } + + /** + * Stores a bean in the database. This function takes a + * RedBean_OODBBean Bean Object $bean and stores it + * in the database. If the database schema is not compatible + * with this bean and RedBean runs in fluid mode the schema + * will be altered to store the bean correctly. + * If the database schema is not compatible with this bean and + * RedBean runs in frozen mode it will throw an exception. + * This function returns the primary key ID of the inserted + * bean. + * + * @throws RedBean_Exception_Security $exception + * + * @param RedBean_OODBBean | RedBean_SimpleModel $bean bean to store + * + * @return integer $newid resulting ID of the new bean + */ + public function store( $bean ) { + if ($bean instanceof RedBean_SimpleModel) $bean = $bean->unbox(); + if (!($bean instanceof RedBean_OODBBean)) throw new RedBean_Exception_Security('OODB Store requires a bean, got: '.gettype($bean)); + $processLists = false; + foreach($bean as $k=>$v) if (is_array($v) || is_object($v)) { $processLists = true; break; } + if (!$processLists && !$bean->getMeta('tainted')) return $bean->getID(); + $this->signal('update', $bean ); + foreach($bean as $k=>$v) if (is_array($v) || is_object($v)) { $processLists = true; break; } + if ($processLists) { + //Define groups + $sharedAdditions = $sharedTrashcan = $sharedresidue = $sharedItems = array(); + $ownAdditions = $ownTrashcan = $ownresidue = array(); + $tmpCollectionStore = array(); + $embeddedBeans = array(); + foreach($bean as $p=>$v) { + if ($v instanceof RedBean_SimpleModel) $v = $v->unbox(); + if ($v instanceof RedBean_OODBBean) { + $linkField = $p.'_id'; + $bean->$linkField = $this->prepareEmbeddedBean($v); + $bean->setMeta('cast.'.$linkField,'id'); + $embeddedBeans[$linkField] = $v; + $tmpCollectionStore[$p]=$bean->$p; + $bean->removeProperty($p); + } + if (is_array($v)) { + $originals = $bean->getMeta('sys.shadow.'.$p); + if (!$originals) $originals = array(); + if (strpos($p,'own')===0) { + list($ownAdditions,$ownTrashcan,$ownresidue)=$this->processGroups($originals,$v,$ownAdditions,$ownTrashcan,$ownresidue); + $bean->removeProperty($p); + } + elseif (strpos($p,'shared')===0) { + list($sharedAdditions,$sharedTrashcan,$sharedresidue)=$this->processGroups($originals,$v,$sharedAdditions,$sharedTrashcan,$sharedresidue); + $bean->removeProperty($p); + } + else {} + } + } + } + $this->storeBean($bean); + + if ($processLists) { + $this->processEmbeddedBeans($bean,$embeddedBeans); + $myFieldLink = $bean->getMeta('type').'_id'; + //Handle related beans + $this->processTrashcan($bean,$ownTrashcan); + $this->processAdditions($bean,$ownAdditions); + $this->processResidue($ownresidue); + foreach($sharedTrashcan as $trash) $this->assocManager->unassociate($trash,$bean); + $this->processSharedAdditions($bean,$sharedAdditions); + foreach($sharedresidue as $residue) $this->store($residue); + } + $this->signal('after_update',$bean); + return (int) $bean->id; + } + + /** + * Stores a cleaned bean; i.e. only scalar values. This is the core of the store() + * method. When all lists and embedded beans (parent objects) have been processed and + * removed from the original bean the bean is passed to this method to be stored + * in the database. + * + * @param RedBean_OODBBean $bean the clean bean + */ + private function storeBean(RedBean_OODBBean $bean) { + if (!$this->isFrozen) $this->check($bean); + //what table does it want + $table = $bean->getMeta('type'); + if ($bean->getMeta('tainted')) { + //Does table exist? If not, create + if (!$this->isFrozen && !$this->tableExists($this->writer->safeTable($table,true))) { + $this->writer->createTable( $table ); + $bean->setMeta('buildreport.flags.created',true); + } + if (!$this->isFrozen) { + $columns = $this->writer->getColumns($table) ; + } + //does the table fit? + $insertvalues = array(); + $insertcolumns = array(); + $updatevalues = array(); + foreach( $bean as $p=>$v ) { + $origV = $v; + if ($p!='id') { + if (!$this->isFrozen) { + //Not in the chill list? + if (!in_array($bean->getMeta('type'),$this->chillList)) { + //Does the user want to specify the type? + if ($bean->getMeta("cast.$p",-1)!==-1) { + $cast = $bean->getMeta("cast.$p"); + $typeno = $this->getTypeFromCast($cast); + } + else { + $cast = false; + //What kind of property are we dealing with? + $typeno = $this->writer->scanType($v,true); + } + //Is this property represented in the table? + if (isset($columns[$this->writer->safeColumn($p,true)])) { + //rescan + $v = $origV; + if (!$cast) $typeno = $this->writer->scanType($v,false); + //yes it is, does it still fit? + $sqlt = $this->writer->code($columns[$this->writer->safeColumn($p,true)]); + if ($typeno > $sqlt) { + //no, we have to widen the database column type + $this->writer->widenColumn( $table, $p, $typeno ); + $bean->setMeta('buildreport.flags.widen',true); + } + } + else { + //no it is not + $this->writer->addColumn($table, $p, $typeno); + $bean->setMeta('buildreport.flags.addcolumn',true); + //@todo: move build commands here... more practical + $this->processBuildCommands($table,$p,$bean); + } + } + } + //Okay, now we are sure that the property value will fit + $insertvalues[] = $v; + $insertcolumns[] = $p; + $updatevalues[] = array( 'property'=>$p, 'value'=>$v ); + } + } + if (!$this->isFrozen && ($uniques = $bean->getMeta('buildcommand.unique'))) { + foreach($uniques as $unique) $this->writer->addUniqueIndex( $table, $unique ); + } + $rs = $this->writer->updateRecord( $table, $updatevalues, $bean->id ); + $bean->id = $rs; + $bean->setMeta('tainted',false); + } + } + + /** + * Processes a list of beans from a bean. A bean may contain lists. This + * method handles shared addition lists; i.e. the $bean->sharedObject properties. + * + * @param RedBean_OODBBean $bean the bean + * @param array $sharedAdditions list with shared additions + */ + private function processSharedAdditions($bean,$sharedAdditions) { + foreach($sharedAdditions as $addition) { + if ($addition instanceof RedBean_OODBBean) { + $this->assocManager->associate($addition,$bean); + } + else { + throw new RedBean_Exception_Security('Array may only contain RedBean_OODBBeans'); + } + } + } + + /** + * Processes a list of beans from a bean. A bean may contain lists. This + * method handles own lists; i.e. the $bean->ownObject properties. + * A residue is a bean in an own-list that stays where it is. This method + * checks if there have been any modification to this bean, in that case + * the bean is stored once again, otherwise the bean will be left untouched. + * + * @param RedBean_OODBBean $bean the bean + * @param array $ownresidue list + */ + private function processResidue($ownresidue) { + foreach($ownresidue as $residue) { + if ($residue->getMeta('tainted')) { + $this->store($residue); + } + } + } + + /** + * Processes a list of beans from a bean. A bean may contain lists. This + * method handles own lists; i.e. the $bean->ownObject properties. + * A trash can bean is a bean in an own-list that has been removed + * (when checked with the shadow). This method + * checks if the bean is also in the dependency list. If it is the bean will be removed. + * If not, the connection between the bean and the owner bean will be broken by + * setting the ID to NULL. + * + * @param RedBean_OODBBean $bean the bean + * @param array $ownTrashcan list + */ + private function processTrashcan($bean,$ownTrashcan) { + $myFieldLink = $bean->getMeta('type').'_id'; + if (is_array($ownTrashcan) && count($ownTrashcan)>0) { + $first = reset($ownTrashcan); + if ($first instanceof RedBean_OODBBean) { + $alias = $bean->getMeta('sys.alias.'.$first->getMeta('type')); + if ($alias) $myFieldLink = $alias.'_id'; + } + } + foreach($ownTrashcan as $trash) { + if (isset($this->dep[$trash->getMeta('type')]) && in_array($bean->getMeta('type'),$this->dep[$trash->getMeta('type')])) { + $this->trash($trash); + } + else { + $trash->$myFieldLink = null; + $this->store($trash); + } + } + } + + /** + * Processes embedded beans. + * Each embedded bean will be indexed and foreign keys will + * be created if the bean is in the dependency list. + * + * @param RedBean_OODBBean $bean bean + * @param array $embeddedBeans embedded beans + */ + private function processEmbeddedBeans($bean, $embeddedBeans) { + foreach($embeddedBeans as $linkField=>$embeddedBean) { + if (!$this->isFrozen) { + $this->writer->addIndex($bean->getMeta('type'), + 'index_foreignkey_'.$bean->getMeta('type').'_'.$embeddedBean->getMeta('type'), + $linkField); + $isDep = $this->isDependentOn($bean->getMeta('type'),$embeddedBean->getMeta('type')); + $this->writer->addFK($bean->getMeta('type'),$embeddedBean->getMeta('type'),$linkField,'id',$isDep); + } + } + + } + + /** + * Part of the store() functionality. + * Handles all new additions after the bean has been saved. + * Stores addition bean in own-list, extracts the id and + * adds a foreign key. Also adds a constraint in case the type is + * in the dependent list. + * + * @param RedBean_OODBBean $bean bean + * @param array $ownAdditions list of addition beans in own-list + */ + private function processAdditions($bean,$ownAdditions) { + $myFieldLink = $bean->getMeta('type').'_id'; + if ($bean && count($ownAdditions)>0) { + $first = reset($ownAdditions); + if ($first instanceof RedBean_OODBBean) { + $alias = $bean->getMeta('sys.alias.'.$first->getMeta('type')); + if ($alias) $myFieldLink = $alias.'_id'; + } + } + foreach($ownAdditions as $addition) { + if ($addition instanceof RedBean_OODBBean) { + $addition->$myFieldLink = $bean->id; + $addition->setMeta('cast.'.$myFieldLink,'id'); + $this->store($addition); + + if (!$this->isFrozen) { + $this->writer->addIndex($addition->getMeta('type'), + 'index_foreignkey_'.$addition->getMeta('type').'_'.$bean->getMeta('type'), + $myFieldLink); + $isDep = $this->isDependentOn($addition->getMeta('type'),$bean->getMeta('type')); + $this->writer->addFK($addition->getMeta('type'),$bean->getMeta('type'),$myFieldLink,'id',$isDep); + } + } + else { + throw new RedBean_Exception_Security('Array may only contain RedBean_OODBBeans'); + } + } + + } + + /** + * Checks whether reference type has been marked as dependent on target type. + * This is the result of setting reference type as a key in R::dependencies() and + * putting target type in its array. + * + * @param string $refType reference type + * @param string $otherType other type / target type + * + * @return boolean + */ + protected function isDependentOn($refType,$otherType) { + return (boolean) (isset($this->dep[$refType]) && in_array($otherType,$this->dep[$refType])); + } + + + /** + * Loads a bean from the object database. + * It searches for a RedBean_OODBBean Bean Object in the + * database. It does not matter how this bean has been stored. + * RedBean uses the primary key ID $id and the string $type + * to find the bean. The $type specifies what kind of bean you + * are looking for; this is the same type as used with the + * dispense() function. If RedBean finds the bean it will return + * the RedBean_OODB Bean object; if it cannot find the bean + * RedBean will return a new bean of type $type and with + * primary key ID 0. In the latter case it acts basically the + * same as dispense(). + * + * Important note: + * If the bean cannot be found in the database a new bean of + * the specified type will be generated and returned. + * + * @param string $type type of bean you want to load + * @param integer $id ID of the bean you want to load + * + * @return RedBean_OODBBean $bean loaded bean + */ + public function load($type,$id) { + $bean = $this->dispense( $type ); + if ($this->stash && isset($this->stash[$id])) { + $row = $this->stash[$id]; + } + else { + try { + $rows = $this->writer->selectRecord($type,array('id'=>array($id))); + }catch(RedBean_Exception_SQL $e ) { + if ( + $this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + ) + ) { + $rows = 0; + if ($this->isFrozen) throw $e; //only throw if frozen; + } + } + if (empty($rows)) return $bean; // $this->dispense($type); -- no need... + $row = array_pop($rows); + } + $bean->setMeta('sys.orig',$row); + foreach($row as $p=>$v) { + //populate the bean with the database row + $bean->$p = $v; + } + $this->signal('open',$bean ); + $bean->setMeta('tainted',false); + return $bean; + } + + /** + * Removes a bean from the database. + * This function will remove the specified RedBean_OODBBean + * Bean Object from the database. + * + * @throws RedBean_Exception_Security $exception + * + * @param RedBean_OODBBean|RedBean_SimpleModel $bean bean you want to remove from database + */ + public function trash( $bean ) { + if ($bean instanceof RedBean_SimpleModel) $bean = $bean->unbox(); + if (!($bean instanceof RedBean_OODBBean)) throw new RedBean_Exception_Security('OODB Store requires a bean, got: '.gettype($bean)); + $this->signal('delete',$bean); + foreach($bean as $p=>$v) { + if ($v instanceof RedBean_OODBBean) { + $bean->removeProperty($p); + } + if (is_array($v)) { + if (strpos($p,'own')===0) { + $bean->removeProperty($p); + } + elseif (strpos($p,'shared')===0) { + $bean->removeProperty($p); + } + } + } + if (!$this->isFrozen) $this->check( $bean ); + try { + $this->writer->selectRecord($bean->getMeta('type'), + array('id' => array( $bean->id) ),null,true ); + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + } + $bean->id = 0; + $this->signal('after_delete', $bean ); + } + + /** + * Returns an array of beans. Pass a type and a series of ids and + * this method will bring you the correspondig beans. + * + * important note: Because this method loads beans using the load() + * function (but faster) it will return empty beans with ID 0 for + * every bean that could not be located. The resulting beans will have the + * passed IDs as their keys. + * + * @param string $type type of beans + * @param array $ids ids to load + * + * @return array $beans resulting beans (may include empty ones) + */ + public function batch( $type, $ids ) { + if (!$ids) return array(); + $collection = array(); + try { + $rows = $this->writer->selectRecord($type,array('id'=>$ids)); + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + + $rows = false; + } + $this->stash = array(); + if (!$rows) return array(); + foreach($rows as $row) { + $this->stash[$row['id']] = $row; + } + foreach($ids as $id) { + $collection[ $id ] = $this->load( $type, $id ); + } + $this->stash = NULL; + return $collection; + } + + /** + * This is a convenience method; it converts database rows + * (arrays) into beans. Given a type and a set of rows this method + * will return an array of beans of the specified type loaded with + * the data fields provided by the result set from the database. + * + * @param string $type type of beans you would like to have + * @param array $rows rows from the database result + * + * @return array $collectionOfBeans collection of beans + */ + public function convertToBeans($type, $rows) { + $collection = array(); + $this->stash = array(); + foreach($rows as $row) { + $id = $row['id']; + $this->stash[$id] = $row; + $collection[ $id ] = $this->load( $type, $id ); + } + $this->stash = NULL; + return $collection; + } + + /** + * Returns the number of beans we have in DB of a given type. + * + * @param string $type type of bean we are looking for + * @param string $addSQL additional SQL snippet + * @param array $params parameters to bind to SQL + * + * @return integer $num number of beans found + */ + public function count($type,$addSQL='',$params=array()) { + try { + return (int) $this->writer->count($type,$addSQL,$params); + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array(RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + } + return 0; + } + + /** + * Trash all beans of a given type. + * + * @param string $type type + * + * @return boolean $yesNo whether we actually did some work or not.. + */ + public function wipe($type) { + try { + $this->writer->wipe($type); + return true; + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array(RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + return false; + } + } + + /** + * Returns an Association Manager for use with OODB. + * A simple getter function to obtain a reference to the association manager used for + * storage and more. + * + * @throws Exception + * @return RedBean_AssociationManager $assoc Association Manager + */ + public function getAssociationManager() { + if (!isset($this->assocManager)) throw new Exception('No association manager available.'); + return $this->assocManager; + } + + /** + * Sets the association manager instance to be used by this OODB. + * A simple setter function to set the association manager to be used for storage and + * more. + * + * @param RedBean_AssociationManager $assoc sets the association manager to be used + * + * @return void + */ + public function setAssociationManager(RedBean_AssociationManager $assoc) { + $this->assocManager = $assoc; + } + + + /** + * Sets a dependency list. Dependencies can be used to make + * certain beans depend on others. This causes dependent beans to get removed + * once the bean they depend on has been removed as well. + * A dependency takes the form: + * + * $me => depends on array( $bean1, $bean2 ) + * + * For instance a to inform RedBeanPHP about the fact that a page + * depends on a book: + * + * 'page' => array('book') + * + * A bean can depend on multiple other beans. + * + * A dependency does two things: + * + * 1. Adds a ON CASCADE DELETE + * 2. trashes the depending bean if the entry in the ownList is removed + * + * @param array $dep + */ + public function setDepList($dep) { + $this->dep = $dep; + } + + /** + * Preloads certain properties for beans. + * Understands aliases. + * + * Usage: $redbean->preload($books,array('coauthor'=>'author')); + * + * @param array $beans beans + * @param array $types types to load + */ + public function preload($beans, $types) { + foreach($types as $key => $type) { + $map = array(); + $field = (is_numeric($key)) ? $type : $key; + $ids = array(); + foreach($beans as $bean) { + if($id = $bean->{$field.'_id'}){ + $ids[$id] = $id; + if (!isset($map[$id])) $map[$id] = array(); + $map[$id][] = $bean; + } + } + $parents = $this->batch($type,$ids); + foreach($parents as $parent) { + foreach($map[$parent->id] as $childBean) { + $childBean->setProperty($field,$parent); + } + } + } + } + +} + + + + +/** + * ToolBox + * Contains most important redbean tools + * + * @file RedBean/ToolBox.php + * @desc A RedBeanPHP-wide service locator + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * The ToolBox acts as a resource locator for RedBean but can + * be integrated in larger resource locators (nested). + * It does not do anything more than just store the three most + * important RedBean resources (tools): the database adapter, + * the RedBeanPHP core class (oodb) and the query writer. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_ToolBox { + + /** + * Reference to the RedBeanPHP OODB Object Database instance + * @var RedBean_OODB + */ + protected $oodb; + + /** + * Reference to the Query Writer + * @var RedBean_QueryWriter + */ + protected $writer; + + /** + * Reference to the database adapter + * @var RedBean_Adapter_DBAdapter + */ + protected $adapter; + + /** + * Constructor. + * The Constructor of the ToolBox takes three arguments: a RedBean_OODB $redbean + * object database, a RedBean_Adapter $databaseAdapter and a + * RedBean_QueryWriter $writer. It stores these objects inside and acts as + * a micro service locator. You can pass the toolbox to any object that needs + * one of the RedBean core objects to interact with. + * + * @param RedBean_OODB $oodb Object Database + * @param RedBean_Adapter_DBAdapter $adapter Adapter + * @param RedBean_QueryWriter $writer Writer + * + * return RedBean_ToolBox $toolbox Toolbox + */ + public function __construct(RedBean_OODB $oodb,RedBean_Adapter $adapter,RedBean_QueryWriter $writer) { + $this->oodb = $oodb; + $this->adapter = $adapter; + $this->writer = $writer; + return $this; + } + + /** + * The Toolbox acts as a kind of micro service locator, providing just the + * most important objects that make up RedBean. You can pass the toolkit to + * any object that needs one of these objects to function properly. + * Returns the QueryWriter; normally you do not use this object but other + * object might want to use the default RedBean query writer to be + * database independent. + * + * @return RedBean_QueryWriter $writer writer + */ + public function getWriter() { + return $this->writer; + } + + /** + * The Toolbox acts as a kind of micro service locator, providing just the + * most important objects that make up RedBean. You can pass the toolkit to + * any object that needs one of these objects to function properly. + * Retruns the RedBean OODB Core object. The RedBean OODB object is + * the ultimate core of Redbean. It provides the means to store and load + * beans. Extract this object immediately after invoking a kickstart method. + * + * @return RedBean_OODB $oodb Object Database + */ + public function getRedBean() { + return $this->oodb; + } + + /** + * The Toolbox acts as a kind of micro service locator, providing just the + * most important objects that make up RedBean. You can pass the toolkit to + * any object that needs one of these objects to function properly. + * Returns the adapter. The Adapter can be used to perform queries + * on the database directly. + * + * @return RedBean_Adapter_DBAdapter $adapter Adapter + */ + public function getDatabaseAdapter() { + return $this->adapter; + } +} + +/** + * RedBean Association + * + * @file RedBean/AssociationManager.php + * @desc Manages simple bean associations. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_AssociationManager extends RedBean_Observable { + /** + * Contains a reference to the Object Database OODB + * @var RedBean_OODB + */ + protected $oodb; + + /** + * Contains a reference to the Database Adapter + * @var RedBean_Adapter_DBAdapter + */ + protected $adapter; + + /** + * Contains a reference to the Query Writer + * @var RedBean_QueryWriter + */ + protected $writer; + + + /** + * Constructor + * + * @param RedBean_ToolBox $tools toolbox + */ + public function __construct( RedBean_ToolBox $tools ) { + $this->oodb = $tools->getRedBean(); + $this->adapter = $tools->getDatabaseAdapter(); + $this->writer = $tools->getWriter(); + $this->toolbox = $tools; + } + + /** + * Creates a table name based on a types array. + * Manages the get the correct name for the linking table for the + * types provided. + * + * @todo find a nice way to decouple this class from QueryWriter? + * + * @param array $types 2 types as strings + * + * @return string $table table + */ + public function getTable( $types ) { + return RedBean_QueryWriter_AQueryWriter::getAssocTableFormat($types); + } + /** + * Associates two beans with eachother using a many-to-many relation. + * + * @param RedBean_OODBBean $bean1 bean1 + * @param RedBean_OODBBean $bean2 bean2 + */ + public function associate($beans1, $beans2) { + $results = array(); + if (!is_array($beans1)) $beans1 = array($beans1); + if (!is_array($beans2)) $beans2 = array($beans2); + foreach($beans1 as $bean1) { + foreach($beans2 as $bean2) { + $table = $this->getTable( array($bean1->getMeta('type') , $bean2->getMeta('type')) ); + $bean = $this->oodb->dispense($table); + $results[] = $this->associateBeans( $bean1, $bean2, $bean ); + } + } + return (count($results)>1) ? $results : reset($results); + } + + + /** + * Associates a pair of beans. This method associates two beans, no matter + * what types.Accepts a base bean that contains data for the linking record. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * @param RedBean_OODBBean $bean base bean + * + * @return mixed $id either the link ID or null + */ + protected function associateBeans(RedBean_OODBBean $bean1, RedBean_OODBBean $bean2, RedBean_OODBBean $bean) { + + $property1 = $bean1->getMeta('type') . '_id'; + $property2 = $bean2->getMeta('type') . '_id'; + if ($property1==$property2) $property2 = $bean2->getMeta('type').'2_id'; + //add a build command for Unique Indexes + $bean->setMeta('buildcommand.unique' , array(array($property1, $property2))); + //add a build command for Single Column Index (to improve performance in case unqiue cant be used) + $indexName1 = 'index_for_'.$bean->getMeta('type').'_'.$property1; + $indexName2 = 'index_for_'.$bean->getMeta('type').'_'.$property2; + $bean->setMeta('buildcommand.indexes', array($property1=>$indexName1,$property2=>$indexName2)); + $this->oodb->store($bean1); + $this->oodb->store($bean2); + $bean->setMeta("cast.$property1","id"); + $bean->setMeta("cast.$property2","id"); + $bean->$property1 = $bean1->id; + $bean->$property2 = $bean2->id; + try { + $id = $this->oodb->store( $bean ); + //On creation, add constraints.... + if (!$this->oodb->isFrozen() && + $bean->getMeta('buildreport.flags.created')){ + $bean->setMeta('buildreport.flags.created',0); + if (!$this->oodb->isFrozen()) + $this->writer->addConstraint( $bean1, $bean2 ); + } + $results[] = $id; + } + catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_INTEGRITY_CONSTRAINT_VIOLATION + ))) throw $e; + } + + } + + /** + * Returns all ids of beans of type $type that are related to $bean. If the + * $getLinks parameter is set to boolean TRUE this method will return the ids + * of the association beans instead. You can also add additional SQL. This SQL + * will be appended to the original query string used by this method. Note that this + * method will not return beans, just keys. For a more convenient method see the R-facade + * method related(), that is in fact a wrapper for this method that offers a more + * convenient solution. If you want to make use of this method, consider the + * OODB batch() method to convert the ids to beans. + * + * Since 3.2, you can now also pass an array of beans instead just one + * bean as the first parameter. + * + * @throws RedBean_Exception_SQL + * + * @param RedBean_OODBBean|array $bean reference bean + * @param string $type target type + * @param bool $getLinks whether you are interested in the assoc records + * @param bool $sql room for additional SQL + * + * @return array $ids + */ + public function related( $bean, $type, $getLinks=false, $sql=false) { + if (!is_array($bean) && !($bean instanceof RedBean_OODBBean)) throw new RedBean_Exception_Security('Expected array or RedBean_OODBBean but got:'.gettype($bean)); + $ids = array(); + if (is_array($bean)) { + $beans = $bean; + foreach($beans as $b) { + if (!($b instanceof RedBean_OODBBean)) throw new RedBean_Exception_Security('Expected RedBean_OODBBean in array but got:'.gettype($b)); + $ids[] = $b->id; + } + $bean = reset($beans); + } + else $ids[] = $bean->id; + $table = $this->getTable( array($bean->getMeta('type') , $type) ); + if ($type==$bean->getMeta('type')) { + $type .= '2'; + $cross = 1; + } + else $cross=0; + if (!$getLinks) $targetproperty = $type.'_id'; else $targetproperty='id'; + + $property = $bean->getMeta('type').'_id'; + try { + $sqlFetchKeys = $this->writer->selectRecord( + $table, + array( $property => $ids ), + $sql, + false + ); + $sqlResult = array(); + foreach( $sqlFetchKeys as $row ) { + if (isset($row[$targetproperty])) { + $sqlResult[] = $row[$targetproperty]; + } + } + if ($cross) { + $sqlFetchKeys2 = $this->writer->selectRecord( + $table, + array( $targetproperty => $ids), + $sql, + false + ); + foreach( $sqlFetchKeys2 as $row ) { + if (isset($row[$property])) { + $sqlResult[] = $row[$property]; + } + } + } + return $sqlResult; //or returns rows in case of $sql != empty + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + return array(); + } + } + + /** + * Breaks the association between two beans. This method unassociates two beans. If the + * method succeeds the beans will no longer form an association. In the database + * this means that the association record will be removed. This method uses the + * OODB trash() method to remove the association links, thus giving FUSE models the + * opportunity to hook-in additional business logic. If the $fast parameter is + * set to boolean TRUE this method will remove the beans without their consent, + * bypassing FUSE. This can be used to improve performance. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * @param boolean $fast If TRUE, removes the entries by query without FUSE + */ + public function unassociate($beans1, $beans2, $fast=null) { + if (!is_array($beans1)) $beans1 = array($beans1); + if (!is_array($beans2)) $beans2 = array($beans2); + foreach($beans1 as $bean1) { + foreach($beans2 as $bean2) { + + $this->oodb->store($bean1); + $this->oodb->store($bean2); + $table = $this->getTable( array($bean1->getMeta('type') , $bean2->getMeta('type')) ); + $type = $bean1->getMeta('type'); + if ($type==$bean2->getMeta('type')) { + $type .= '2'; + $cross = 1; + } + else $cross = 0; + $property1 = $type.'_id'; + $property2 = $bean2->getMeta('type').'_id'; + $value1 = (int) $bean1->id; + $value2 = (int) $bean2->id; + try { + $rows = $this->writer->selectRecord($table,array( + $property1 => array($value1), $property2=>array($value2)),null,$fast + ); + if ($cross) { + $rows2 = $this->writer->selectRecord($table,array( + $property2 => array($value1), $property1=>array($value2)),null,$fast + ); + if ($fast) continue; + $rows = array_merge($rows,$rows2); + } + if ($fast) continue; + $beans = $this->oodb->convertToBeans($table,$rows); + foreach($beans as $link) { + $this->oodb->trash($link); + } + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + } + } + } + } + + /** + * Removes all relations for a bean. This method breaks every connection between + * a certain bean $bean and every other bean of type $type. Warning: this method + * is really fast because it uses a direct SQL query however it does not inform the + * models about this. If you want to notify FUSE models about deletion use a foreach-loop + * with unassociate() instead. (that might be slower though) + * + * @param RedBean_OODBBean $bean reference bean + * @param string $type type of beans that need to be unassociated + * + * @return void + */ + public function clearRelations(RedBean_OODBBean $bean, $type) { + $this->oodb->store($bean); + $table = $this->getTable( array($bean->getMeta('type') , $type) ); + if ($type==$bean->getMeta('type')) { + $property2 = $type.'2_id'; + $cross = 1; + } + else $cross = 0; + $property = $bean->getMeta('type').'_id'; + try { + $this->writer->selectRecord( $table, array($property=>array($bean->id)),null,true); + if ($cross) { + $this->writer->selectRecord( $table, array($property2=>array($bean->id)),null,true); + } + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + } + } + + /** + * Given two beans this function returns TRUE if they are associated using a + * many-to-many association, FALSE otherwise. + * + * @throws RedBean_Exception_SQL + * + * @param RedBean_OODBBean $bean1 bean + * @param RedBean_OODBBean $bean2 bean + * + * @return bool $related whether they are associated N-M + */ + public function areRelated(RedBean_OODBBean $bean1, RedBean_OODBBean $bean2) { + if (!$bean1->getID() || !$bean2->getID()) return false; + $table = $this->getTable( array($bean1->getMeta('type') , $bean2->getMeta('type')) ); + $type = $bean1->getMeta('type'); + if ($type==$bean2->getMeta('type')) { + $type .= '2'; + $cross = 1; + } + else $cross = 0; + $property1 = $type.'_id'; + $property2 = $bean2->getMeta('type').'_id'; + $value1 = (int) $bean1->id; + $value2 = (int) $bean2->id; + try { + $rows = $this->writer->selectRecord($table,array( + $property1 => array($value1), $property2=>array($value2)),null + ); + if ($cross) { + $rows2 = $this->writer->selectRecord($table,array( + $property2 => array($value1), $property1=>array($value2)),null + ); + $rows = array_merge($rows,$rows2); + } + }catch(RedBean_Exception_SQL $e) { + if (!$this->writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) throw $e; + return false; + } + return (count($rows)>0); + } +} + +/** + * RedBean Extended Association + * + * @file RedBean/ExtAssociationManager.php + * @desc Manages complex bean associations. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_AssociationManager_ExtAssociationManager extends RedBean_AssociationManager { + + /** + * Associates two beans with eachother. This method connects two beans with eachother, just + * like the other associate() method in the Association Manager. The difference is however + * that this method accepts a base bean, this bean will be used as the basis of the + * association record in the link table. You can thus add additional properties and + * even foreign keys. + * + * @param RedBean_OODBBean $bean1 bean 1 + * @param RedBean_OODBBean $bean2 bean 2 + * @param RedBean_OODBBean $bbean base bean for association record + * + * @return void + */ + public function extAssociate(RedBean_OODBBean $bean1, RedBean_OODBBean $bean2, RedBean_OODBBean $baseBean ) { + $table = $this->getTable( array($bean1->getMeta('type') , $bean2->getMeta('type')) ); + $baseBean->setMeta('type', $table ); + return $this->associateBeans( $bean1, $bean2, $baseBean ); + } +} + +/** + * RedBean Setup + * Helper class to quickly setup RedBean for you. + * + * @file RedBean/Setup.php + * @desc Helper class to quickly setup RedBean for you + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Setup { + + /** + * This method checks the DSN string. If the DSN string contains a + * database name that is not supported by RedBean yet then it will + * throw an exception RedBean_Exception_NotImplemented. In any other + * case this method will just return boolean TRUE. + * @throws RedBean_Exception_NotImplemented + * @param string $dsn + * @return boolean $true + */ + private static function checkDSN($dsn) { + $dsn = trim($dsn); + $dsn = strtolower($dsn); + if ( + strpos($dsn, 'mysql:')!==0 + && strpos($dsn,'sqlite:')!==0 + && strpos($dsn,'pgsql:')!==0 + && strpos($dsn,'cubrid:')!==0 + && strpos($dsn,'oracle:')!==0 + ) { + trigger_error('Unsupported DSN'); + } + else { + return true; + } + } + + + /** + * Generic Kickstart method. + * This is the generic kickstarter. It will prepare a database connection + * using the $dsn, the $username and the $password you provide. + * If $frozen is boolean TRUE it will start RedBean in frozen mode, meaning + * that the database cannot be altered. If RedBean is started in fluid mode + * it will adjust the schema of the database if it detects an + * incompatible bean. + * This method returns a RedBean_Toolbox $toolbox filled with a + * RedBean_Adapter, a RedBean_QueryWriter and most importantly a + * RedBean_OODB; the object database. To start storing beans in the database + * simply say: $redbean = $toolbox->getRedBean(); Now you have a reference + * to the RedBean object. + * Optionally instead of using $dsn you may use an existing PDO connection. + * Example: RedBean_Setup::kickstart($existingConnection, true); + * + * @param string|PDO $dsn Database Connection String (or PDO instance) + * @param string $username Username for database + * @param string $password Password for database + * @param boolean $frozen Start in frozen mode? + * + * @return RedBean_ToolBox $toolbox + */ + public static function kickstart($dsn,$username=NULL,$password=NULL,$frozen=false ) { + if ($dsn instanceof PDO) { + $db = new RedBean_Driver_PDO($dsn); + $dsn = $db->getDatabaseType(); + } + else { + self::checkDSN($dsn); + if (strpos($dsn, 'oracle') === 0) + $db = new RedBean_Driver_OCI($dsn,$username,$password); + else + $db = new RedBean_Driver_PDO($dsn,$username,$password); + + } + $adapter = new RedBean_Adapter_DBAdapter($db); + if (strpos($dsn,'pgsql')===0) { + $writer = new RedBean_QueryWriter_PostgreSQL($adapter); + } + else if (strpos($dsn,'sqlite')===0) { + $writer = new RedBean_QueryWriter_SQLiteT($adapter); + } + else if (strpos($dsn,'cubrid')===0) { + $writer = new RedBean_QueryWriter_CUBRID($adapter); + } + else if (strpos($dsn,'oracle')===0) { $writer = new RedBean_QueryWriter_Oracle($adapter); } //layout important for unit test - this line cannot always be tested. + else { + $writer = new RedBean_QueryWriter_MySQL($adapter); + } + $redbean = new RedBean_OODB($writer); + if ($frozen) $redbean->freeze(true); + $toolbox = new RedBean_ToolBox($redbean,$adapter,$writer); + //deliver everything back in a neat toolbox + return $toolbox; + } +} + +/** + * RedBean interface for Model Formatting - Part of FUSE + * + * @file RedBean/ModelFormatter.php + * @desc RedBean IModelFormatter + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +interface RedBean_IModelFormatter { + + /** + * ModelHelper will call this method of the class + * you provide to discover the model + * + * @param string $model + * + * @return string $formattedModel + */ + public function formatModel( $model ); + + +} + + +/** + * RedBean Logging + * + * @file RedBean/Logging.php + * @desc Logging interface for RedBeanPHP ORM + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * Provides a uniform and convenient logging + * interface throughout RedBeanPHP. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +interface RedBean_Logger { + + /** + * Method used to log messages. + * Writes the specified message to the log document whatever + * that may be (files, database etc). Provides a uniform + * interface for logging throughout RedBeanPHP. + * + * @param string $message the message to log. (optional) + */ + public function log(); + +} + + +/** + * RedBean class for Logging + * + * @file RedBean/Logger.php + * @desc Logger + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Logger_Default implements RedBean_Logger { + + /** + * Default logger method logging to STDOUT. + * This is the default/reference implementation of a logger. + * This method will write the message value to STDOUT (screen). + * + * @param $message (optional) + */ + public function log() { + if (func_num_args() > 0) { + foreach (func_get_args() as $argument) { + if (is_array($argument)) echo print_r($argument,true); else echo $argument; + echo "
\n"; + } + } + } +} + + + + +/** + * RedBean Bean Helper Interface + * + * @file RedBean/IBeanHelper.php + * @desc Interface for Bean Helper. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * Interface for Bean Helper. + * A little bolt that glues the whole machinery together. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +interface RedBean_BeanHelper { + + /** + * @abstract + * @return RedBean_Toolbox $toolbox toolbox + */ + public function getToolbox(); + + public function getModelForBean(RedBean_OODBBean $bean); + +} + + +/** + * RedBean Bean Helper + * + * @file RedBean/BeanHelperFacade.php + * @desc Finds the toolbox for the bean. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_BeanHelper_Facade implements RedBean_BeanHelper { + + /** + * Returns a reference to the toolbox. This method returns a toolbox + * for beans that need to use toolbox functions. Since beans can contain + * lists they need a toolbox to lazy-load their relationships. + * + * @return RedBean_ToolBox $toolbox toolbox containing all kinds of goodies + */ + public function getToolbox() { + return RedBean_Facade::$toolbox; + } + + /** + * Fuse connector. + * Gets the model for a bean $bean. + * Allows you to implement your own way to find the + * right model for a bean and to do dependency injection + * etc. + * + * @param RedBean_OODBBean $bean bean + * + * @return type + */ + public function getModelForBean(RedBean_OODBBean $bean) { + $modelName = RedBean_ModelHelper::getModelName( $bean->getMeta('type'), $bean ); + if (!class_exists($modelName)) return null; + $obj = RedBean_ModelHelper::factory($modelName); + $obj->loadBean($bean); + return $obj; + } +} + + +/** + * SimpleModel + * + * @file RedBean/SimpleModel.php + * @desc Part of FUSE + * @author Gabor de Mooij and the RedBeanPHP Team + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_SimpleModel { + + /** + * Contains the inner bean. + * @var RedBean_OODBBean + */ + protected $bean; + + /** + * Used by FUSE: the ModelHelper class to connect a bean to a model. + * This method loads a bean in the model. + * + * @param RedBean_OODBBean $bean bean + */ + public function loadBean( RedBean_OODBBean $bean ) { + $this->bean = $bean; + } + + /** + * Magic Getter to make the bean properties available from + * the $this-scope. + * + * @param string $prop property + * + * @return mixed $propertyValue value + */ + public function __get( $prop ) { + return $this->bean->$prop; + } + + /** + * Magic Setter + * + * @param string $prop property + * @param mixed $value value + */ + public function __set( $prop, $value ) { + $this->bean->$prop = $value; + } + + /** + * Isset implementation + * + * @param string $key key + * + * @return + */ + public function __isset($key) { + return (isset($this->bean->$key)); + } + + /** + * Box the bean using the current model. + * + * @return RedBean_SimpleModel $box a bean in a box + */ + public function box() { + return $this; + } + + /** + * Unbox the bean from the model. + * + * @return RedBean_OODBBean $bean bean + */ + public function unbox(){ + return $this->bean; + } + +} + +/** + * RedBean Model Helper + * + * @file RedBean/ModelHelper.php + * @desc Connects beans to models, in essence + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * This is the core of so-called FUSE. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +class RedBean_ModelHelper implements RedBean_Observer { + + /** + * Holds a model formatter + * @var RedBean_IModelFormatter + */ + private static $modelFormatter; + + + /** + * Holds a dependency injector + * @var type + */ + private static $dependencyInjector; + + /** + * Cache for model names to avoid unnecessary + * reflections. + * + * @var array + */ + private static $modelCache = array(); + + + /** + * Connects OODB to a model if a model exists for that + * type of bean. This connector is used in the facade. + * + * @param string $eventName + * @param RedBean_OODBBean $bean + */ + public function onEvent( $eventName, $bean ) { + $bean->$eventName(); + } + + + /** + * Given a model ID (model identifier) this method returns the + * full model name. + * + * @param string $model + * @param RedBean_OODBBean $bean + * + * @return string $fullname + */ + public static function getModelName( $model, $bean = null ) { + if (isset(self::$modelCache[$model])) return self::$modelCache[$model]; + if (self::$modelFormatter){ + $modelID = self::$modelFormatter->formatModel($model,$bean); + } + else { + $modelID = 'Model_'.ucfirst($model); + } + self::$modelCache[$model] = $modelID; + return self::$modelCache[$model]; + } + + /** + * Sets the model formatter to be used to discover a model + * for Fuse. + * + * @param string $modelFormatter + */ + public static function setModelFormatter( $modelFormatter ) { + self::$modelFormatter = $modelFormatter; + } + + + /** + * Obtains a new instance of $modelClassName, using a dependency injection + * container if possible. + * + * @param string $modelClassName name of the model + */ + public static function factory( $modelClassName ) { + if (self::$dependencyInjector) { + return self::$dependencyInjector->getInstance($modelClassName); + } + return new $modelClassName(); + } + + /** + * Sets the dependency injector to be used. + * + * @param RedBean_DependencyInjector $di injecto to be used + */ + public static function setDependencyInjector( RedBean_DependencyInjector $di ) { + self::$dependencyInjector = $di; + } + + /** + * Stops the dependency injector from resolving dependencies. Removes the + * reference to the dependency injector. + */ + public static function clearDependencyInjector() { + self::$dependencyInjector = null; + } + + /** + * Attaches the FUSE event listeners. Now the Model Helper will listen for + * CRUD events. If a CRUD event occurs it will send a signal to the model + * that belongs to the CRUD bean and this model will take over control from + * there. + * + * @param Observable $observable + */ + public function attachEventListeners( RedBean_Observable $observable ) { + $observable->addEventListener('update', $this ); + $observable->addEventListener('open', $this ); + $observable->addEventListener('delete', $this ); + $observable->addEventListener('after_delete', $this ); + $observable->addEventListener('after_update', $this ); + $observable->addEventListener('dispense', $this ); + } + +} + +/** + * RedBean SQL Helper + * + * @file RedBean/SQLHelper.php + * @desc Allows you to mix PHP and SQL as if they were one language + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * Allows you to mix PHP and SQL as if they were one language + * + * Simplest case: + * + * $r->now(); //returns SQL time + * + * Another Example: + * + * $f->begin() + * ->select('*') + * ->from('island')->where('id = ? ')->put(1)->get(); + * + * Another example: + * + * $f->begin()->show('tables')->get('col'); + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ + class RedBean_SQLHelper { + + /** + * Holds the database adapter for executing SQL queries. + * @var RedBean_Adapter + */ + protected $adapter; + + /** + * Holds current mode + * @var boolean + */ + protected $capture = false; + + /** + * Holds SQL until now + * @var string + */ + protected $sql = ''; + + /** + * Holds list of parameters for SQL Query + * @var array + */ + protected $params = array(); + + /** + * Constructor + * + * @param RedBean_DBAdapter $adapter database adapter for querying + */ + public function __construct(RedBean_Adapter $adapter) { + $this->adapter = $adapter; + } + + /** + * Magic method to construct SQL query + * + * @param string $funcName name of the next SQL statement/keyword + * @param array $args list of statements to be seperated by commas + * + * @return mixed $result either self or result depending on mode + */ + public function __call($funcName,$args=array()) { + $funcName = str_replace('_',' ',$funcName); + if ($this->capture) { + $this->sql .= ' '.$funcName . ' '.implode(',', $args); + return $this; + } + else { + return $this->adapter->getCell('SELECT '.$funcName.'('.implode(',',$args).')'); + } + } + + /** + * Begins SQL query + * + * @return RedBean_SQLHelper $this chainable + */ + public function begin() { + $this->capture = true; + return $this; + } + + /** + * Adds a value to the parameter list + * + * @param mixed $param parameter to be added + * + * @return RedBean_SQLHelper $this chainable + */ + public function put($param) { + $this->params[] = $param; + return $this; + } + + /** + * Executes query and returns result + * + * @return mixed $result + */ + public function get($what='') { + $what = 'get'.ucfirst($what); + $rs = $this->adapter->$what($this->sql,$this->params); + $this->clear(); + return $rs; + } + + /** + * Clears the parameter list as well as the SQL query string. + * + * @return RedBean_SQLHelper $this chainable + */ + public function clear() { + $this->sql = ''; + $this->params = array(); + $this->capture = false; //turn off capture mode (issue #142) + return $this; + } + + /** + * To explicitly add a piece of SQL. + * + * @param string $sql sql + * + * @return RedBean_SQLHelper + */ + public function addSQL($sql) { + if ($this->capture) { + $this->sql .= ' '.$sql . ' '; + return $this; + } + } + + + /** + * Returns query parts. + * + * @return array $queryParts query parts. + */ + public function getQuery() { + $list = array($this->sql,$this->params); + $this->clear(); + return $list; + } + + /** + * Writes a '(' to the sql query. + */ + public function open() { + if ($this->capture) { + $this->sql .= ' ( '; + return $this; + } + } + + /** + * Writes a ')' to the sql query. + */ + public function close() { + if ($this->capture) { + $this->sql .= ' ) '; + return $this; + } + } + +} + +/** + * RedBean Tag Manager + * + * @file RedBean/TagManager.php + * @desc RedBean Tag Manager + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * Provides methods to tag beans and perform tag-based searches in the + * bean database. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_TagManager { + + /** + * The Tag Manager requires a toolbox + * @var RedBean_Toolbox + */ + protected $toolbox; + + /** + * Association Manager to manage tag-bean relations + * @var RedBean_AssociationManager + */ + protected $associationManager; + + /** + * RedBeanPHP OODB instance + * @var RedBean_OODBBean + */ + protected $redbean; + + /** + * Constructor, + * creates a new instance of TagManager. + * @param RedBean_Toolbox $toolbox + */ + public function __construct( RedBean_Toolbox $toolbox ) { + $this->toolbox = $toolbox; + $this->redbean = $toolbox->getRedBean(); + $this->associationManager = $this->redbean->getAssociationManager(); + } + + /** + * Finds a tag bean by it's title. + * + * @param string $title title + * + * @return RedBean_OODBBean $bean | null + */ + public function findTagByTitle($title) { + $beans = $this->redbean->find('tag',array('title'=>array($title))); + if ($beans) { + $bean = reset($beans); + return $bean; + } + return null; + } + + /** + * Part of RedBeanPHP Tagging API. + * Tests whether a bean has been associated with one ore more + * of the listed tags. If the third parameter is TRUE this method + * will return TRUE only if all tags that have been specified are indeed + * associated with the given bean, otherwise FALSE. + * If the third parameter is FALSE this + * method will return TRUE if one of the tags matches, FALSE if none + * match. + * + * @param RedBean_OODBBean $bean bean to check for tags + * @param array $tags list of tags + * @param boolean $all whether they must all match or just some + * + * @return boolean $didMatch whether the bean has been assoc. with the tags + */ + public function hasTag($bean, $tags, $all=false) { + $foundtags = $this->tag($bean); + if (is_string($foundtags)) $foundtags = explode(",",$tags); + $same = array_intersect($tags,$foundtags); + if ($all) { + return (implode(",",$same)===implode(",",$tags)); + } + return (bool) (count($same)>0); + } + + /** + * Part of RedBeanPHP Tagging API. + * Removes all sepcified tags from the bean. The tags specified in + * the second parameter will no longer be associated with the bean. + * + * @param RedBean_OODBBean $bean tagged bean + * @param array $tagList list of tags (names) + * + * @return void + */ + public function untag($bean,$tagList) { + if ($tagList!==false && !is_array($tagList)) $tags = explode( ",", (string)$tagList); else $tags=$tagList; + foreach($tags as $tag) { + if ($t = $this->findTagByTitle($tag)) { + $this->associationManager->unassociate( $bean, $t ); + } + } + } + + /** + * Part of RedBeanPHP Tagging API. + * Tags a bean or returns tags associated with a bean. + * If $tagList is null or omitted this method will return a + * comma separated list of tags associated with the bean provided. + * If $tagList is a comma separated list (string) of tags all tags will + * be associated with the bean. + * You may also pass an array instead of a string. + * + * @param RedBean_OODBBean $bean bean + * @param mixed $tagList tags + * + * @return string $commaSepListTags + */ + public function tag( RedBean_OODBBean $bean, $tagList = null ) { + if (is_null($tagList)) { + $tags = array(); + $keys = $this->associationManager->related($bean, 'tag'); + if ($keys) { + $tags = $this->redbean->batch('tag',$keys); + } + $foundTags = array(); + foreach($tags as $tag) { + $foundTags[] = $tag->title; + } + return $foundTags; + } + $this->associationManager->clearRelations( $bean, 'tag' ); + $this->addTags( $bean, $tagList ); + } + + /** + * Part of RedBeanPHP Tagging API. + * Adds tags to a bean. + * If $tagList is a comma separated list of tags all tags will + * be associated with the bean. + * You may also pass an array instead of a string. + * + * @param RedBean_OODBBean $bean bean + * @param array $tagList list of tags to add to bean + * + * @return void + */ + public function addTags( RedBean_OODBBean $bean, $tagList ) { + if ($tagList!==false && !is_array($tagList)) $tags = explode( ",", (string)$tagList); else $tags=$tagList; + if ($tagList===false) return; + foreach($tags as $tag) { + if (!$t = $this->findTagByTitle($tag)) { + $t = $this->redbean->dispense('tag'); + $t->title = $tag; + $this->redbean->store($t); + } + $this->associationManager->associate( $bean, $t ); + } + } + + /** + * Part of RedBeanPHP Tagging API. + * Returns all beans that have been tagged with one of the tags given. + * + * @param $beanType type of bean you are looking for + * @param $tagList list of tags to match + * + * @return array + */ + public function tagged( $beanType, $tagList ) { + if ($tagList!==false && !is_array($tagList)) $tags = explode( ",", (string)$tagList); else $tags=$tagList; + $collection = array(); + $tags = $this->redbean->find('tag',array('title'=>$tags)); + if (is_array($tags) && count($tags)>0) { + $collectionKeys = $this->associationManager->related($tags,$beanType); + if ($collectionKeys) { + $collection = $this->redbean->batch($beanType,$collectionKeys); + } + } + return $collection; + } + + /** + * Part of RedBeanPHP Tagging API. + * Returns all beans that have been tagged with ALL of the tags given. + * + * @param $beanType type of bean you are looking for + * @param $tagList list of tags to match + * + * @return array + */ + public function taggedAll( $beanType, $tagList ) { + if ($tagList!==false && !is_array($tagList)) $tags = explode( ",", (string)$tagList); else $tags=$tagList; + $beans = array(); + foreach($tags as $tag) { + $beans = $this->tagged($beanType,$tag); + if (isset($oldBeans)) $beans = array_intersect_assoc($beans,$oldBeans); + $oldBeans = $beans; + } + return $beans; + } + +} + +/** + * RedBean Facade + * @file RedBean/Facade.php + * @desc Convenience class for RedBeanPHP. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * This class hides the object landscape of + * RedBeanPHP behind a single letter class providing + * almost all functionality with simple static calls. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +class RedBean_Facade { + + /** + * Collection of toolboxes + * @var array + */ + public static $toolboxes = array(); + /** + * + * Constains an instance of the RedBean Toolbox + * @var RedBean_ToolBox + * + */ + public static $toolbox; + + /** + * Constains an instance of RedBean OODB + * @var RedBean_OODB + */ + public static $redbean; + + /** + * Contains an instance of the Query Writer + * @var RedBean_QueryWriter + */ + public static $writer; + + /** + * Contains an instance of the Database + * Adapter. + * @var RedBean_DBAdapter + */ + public static $adapter; + + + /** + * Contains an instance of the Association Manager + * @var RedBean_AssociationManager + */ + public static $associationManager; + + + /** + * Contains an instance of the Extended Association Manager + * @var RedBean_ExtAssociationManager + */ + public static $extAssocManager; + + /** + * Holds the tag manager + * @var RedBean_TagManager + */ + public static $tagManager; + + /** + * holds the duplication manager + * @var RedBean_DuplicationManager + */ + public static $duplicationManager; + + /** + * Holds the Key of the current database. + * @var string + */ + public static $currentDB = ''; + + /** + * Holds reference to SQL Helper + */ + public static $f; + + + private static $strictType = true; + + + /** + * Get version + * @return string + */ + public static function getVersion() { + return '3.3'; + } + + /** + * Kickstarts redbean for you. This method should be called before you start using + * RedBean. The Setup() method can be called without any arguments, in this case it will + * try to create a SQLite database in /tmp called red.db (this only works on UNIX-like systems). + * + * @param string $dsn Database connection string + * @param string $username Username for database + * @param string $password Password for database + * + * @return void + */ + public static function setup( $dsn=NULL, $username=NULL, $password=NULL ) { + if (function_exists('sys_get_temp_dir')) $tmp = sys_get_temp_dir(); else $tmp = 'tmp'; + if (is_null($dsn)) $dsn = 'sqlite:/'.$tmp.'/red.db'; + self::addDatabase('default',$dsn,$username,$password); + self::selectDatabase('default'); + return self::$toolbox; + } + + + /** + * Adds a database to the facade, afterwards you can select the database using + * selectDatabase($key). + * + * @param string $key ID for the database + * @param string $dsn DSN for the database + * @param string $user User for connection + * @param null|string $pass Password for connection + * @param bool $frozen Whether this database is frozen or not + * + * @return void + */ + public static function addDatabase( $key, $dsn, $user=null, $pass=null, $frozen=false ) { + self::$toolboxes[$key] = RedBean_Setup::kickstart($dsn,$user,$pass,$frozen); + } + + + /** + * Selects a different database for the Facade to work with. + * + * @param string $key Key of the database to select + * @return int 1 + */ + public static function selectDatabase($key) { + if (self::$currentDB===$key) return false; + self::configureFacadeWithToolbox(self::$toolboxes[$key]); + self::$currentDB = $key; + return true; + } + + + /** + * Toggles DEBUG mode. + * In Debug mode all SQL that happens under the hood will + * be printed to the screen or logged by provided logger. + * + * @param boolean $tf + * @param RedBean_Logger $logger + */ + public static function debug( $tf = true, $logger = NULL ) { + if (!$logger) $logger = new RedBean_Logger_Default; + self::$adapter->getDatabase()->setDebugMode( $tf, $logger ); + } + + /** + * Stores a RedBean OODB Bean and returns the ID. + * + * @param RedBean_OODBBean|RedBean_SimpleModel $bean bean + * + * @return integer $id id + */ + public static function store( $bean ) { + return self::$redbean->store( $bean ); + } + + + /** + * Toggles fluid or frozen mode. In fluid mode the database + * structure is adjusted to accomodate your objects. In frozen mode + * this is not the case. + * + * You can also pass an array containing a selection of frozen types. + * Let's call this chilly mode, it's just like fluid mode except that + * certain types (i.e. tables) aren't touched. + * + * @param boolean|array $trueFalse + */ + public static function freeze( $tf = true ) { + self::$redbean->freeze( $tf ); + } + + + /** + * Loads the bean with the given type and id and returns it. + * + * @param string $type type + * @param integer $id id of the bean you want to load + * + * @return RedBean_OODBBean $bean + */ + public static function load( $type, $id ) { + return self::$redbean->load( $type, $id ); + } + + /** + * Deletes the specified bean. + * + * @param RedBean_OODBBean|RedBean_SimpleModel $bean bean to be deleted + * + * @return mixed + */ + public static function trash( $bean ) { + return self::$redbean->trash( $bean ); + } + + /** + * Dispenses a new RedBean OODB Bean for use with + * the rest of the methods. + * + * @param string $type type + * @param integer $number number of beans to dispense + * + * @return array $oneOrMoreBeans + */ + public static function dispense( $type, $num = 1 ) { + if (!preg_match('/^[a-z0-9]+$/',$type) && self::$strictType) throw new RedBean_Exception_Security('Invalid type: '.$type); + if ($num==1) { + return self::$redbean->dispense( $type ); + } + else { + $beans = array(); + for($v=0; $v<$num; $v++) $beans[] = self::$redbean->dispense( $type ); + return $beans; + } + } + + /** + * Toggles strict bean type names. + * If set to true (default) this will forbid the use of underscores and + * uppercase characters in bean type strings (R::dispense). + * + * @param boolean $trueFalse + */ + public static function setStrictTyping($trueFalse) { + self::$strictType = (boolean) $trueFalse; + } + + /** + * Convience method. Tries to find beans of a certain type, + * if no beans are found, it dispenses a bean of that type. + * + * @param string $type type of bean you are looking for + * @param string $sql SQL code for finding the bean + * @param array $values parameters to bind to SQL + * + * @return array $beans Contains RedBean_OODBBean instances + */ + public static function findOrDispense( $type, $sql, $values ) { + $foundBeans = self::find($type,$sql,$values); + if (count($foundBeans)==0) return array(self::dispense($type)); else return $foundBeans; + } + + /** + * Associates two Beans. This method will associate two beans with eachother. + * You can then get one of the beans by using the related() function and + * providing the other bean. You can also provide a base bean in the extra + * parameter. This base bean allows you to add extra information to the association + * record. Note that this is for advanced use only and the information will not + * be added to one of the beans, just to the association record. + * It's also possible to provide an array or JSON string as base bean. If you + * pass a scalar this function will interpret the base bean as having one + * property called 'extra' with the value of the scalar. + * + * @param RedBean_OODBBean $bean1 bean that will be part of the association + * @param RedBean_OODBBean $bean2 bean that will be part of the association + * @param mixed $extra bean, scalar, array or JSON providing extra data. + * + * @return mixed + */ + public static function associate( $beans1, $beans2, $extra = null ) { + //No extra? Just associate like always (default) + if (!$extra) { + return self::$associationManager->associate( $beans1, $beans2 ); + } + else{ + if (!is_array($extra)) { + $info = json_decode($extra,true); + if (!$info) $info = array('extra'=>$extra); + } + else { + $info = $extra; + } + $bean = RedBean_Facade::dispense('xtypeless'); + $bean->import($info); + return self::$extAssocManager->extAssociate($beans1, $beans2, $bean); + } + } + + + /** + * Breaks the association between two beans. + * This functions breaks the association between a pair of beans. After + * calling this functions the beans will no longer be associated with + * eachother. Calling related() with either one of the beans will no longer + * return the other bean. + * + * @param RedBean_OODBBean $bean1 bean + * @param RedBean_OODBBean $bean2 bean + * + * @return mixed + */ + public static function unassociate( $beans1, $beans2 , $fast=false) { + return self::$associationManager->unassociate( $beans1, $beans2, $fast ); + + } + + /** + * Returns all the beans associated with $bean. + * This method will return an array containing all the beans that have + * been associated once with the associate() function and are still + * associated with the bean specified. The type parameter indicates the + * type of beans you are looking for. You can also pass some extra SQL and + * values for that SQL to filter your results after fetching the + * related beans. + * + * Dont try to make use of subqueries, a subquery using IN() seems to + * be slower than two queries! + * + * Since 3.2, you can now also pass an array of beans instead just one + * bean as the first parameter. + * + * @param RedBean_OODBBean|array $bean the bean you have + * @param string $type the type of beans you want + * @param string $sql SQL snippet for extra filtering + * @param array $val values to be inserted in SQL slots + * + * @return array $beans beans yielded by your query. + */ + public static function related( $bean, $type, $sql=null, $values=array()) { + $keys = self::$associationManager->related( $bean, $type ); + if (count($keys)==0 || !is_array($keys)) return array(); + if (!$sql) return self::batch($type, $keys); + $rows = self::$writer->selectRecord( $type, array('id'=>$keys),array($sql,$values),false ); + return self::$redbean->convertToBeans($type,$rows); + } + + /** + * Returns only single associated bean. + * + * @param RedBean_OODBBean $bean bean provided + * @param string $type type of bean you are searching for + * @param string $sql SQL for extra filtering + * @param array $values values to be inserted in SQL slots + * + * + * @return RedBean_OODBBean $bean + */ + public static function relatedOne( RedBean_OODBBean $bean, $type, $sql=null, $values=array() ) { + $beans = self::related($bean, $type, $sql, $values); + if (count($beans)==0 || !is_array($beans)) return null; + return reset( $beans ); + } + + /** + * Checks whether a pair of beans is related N-M. This function does not + * check whether the beans are related in N:1 way. + * + * @param RedBean_OODBBean $bean1 first bean + * @param RedBean_OODBBean $bean2 second bean + * + * @return bool $yesNo whether they are related + */ + public static function areRelated( RedBean_OODBBean $bean1, RedBean_OODBBean $bean2) { + return self::$associationManager->areRelated($bean1,$bean2); + } + + + /** + * The opposite of related(). Returns all the beans that are not + * associated with the bean provided. + * + * @param RedBean_OODBBean $bean bean provided + * @param string $type type of bean you are searching for + * @param string $sql SQL for extra filtering + * @param array $values values to be inserted in SQL slots + * + * @return array $beans beans + */ + public static function unrelated(RedBean_OODBBean $bean, $type, $sql=null, $values=array()) { + $keys = self::$associationManager->related( $bean, $type ); + $rows = self::$writer->selectRecord( $type, array('id'=>$keys), array($sql,$values), false, true ); + return self::$redbean->convertToBeans($type,$rows); + + } + + + + /** + * Clears all associated beans. + * Breaks all many-to-many associations of a bean and a specified type. + * + * @param RedBean_OODBBean $bean bean you wish to clear many-to-many relations for + * @param string $type type of bean you wish to break associatons with + * + * @return void + */ + public static function clearRelations( RedBean_OODBBean $bean, $type ) { + self::$associationManager->clearRelations( $bean, $type ); + } + + /** + * Finds a bean using a type and a where clause (SQL). + * As with most Query tools in RedBean you can provide values to + * be inserted in the SQL statement by populating the value + * array parameter; you can either use the question mark notation + * or the slot-notation (:keyname). + * + * @param string $type type the type of bean you are looking for + * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $values values array of values to be bound to parameters in query + * + * @return array $beans beans + */ + public static function find( $type, $sql=null, $values=array() ) { + if ($sql instanceof RedBean_SQLHelper) list($sql,$values) = $sql->getQuery(); + if (!is_array($values)) throw new InvalidArgumentException('Expected array, ' . gettype($values) . ' given.'); + return self::$redbean->find($type,array(),array($sql,$values)); + } + + /** + * Finds a bean using a type and a where clause (SQL). + * As with most Query tools in RedBean you can provide values to + * be inserted in the SQL statement by populating the value + * array parameter; you can either use the question mark notation + * or the slot-notation (:keyname). + * The findAll() method differs from the find() method in that it does + * not assume a WHERE-clause, so this is valid: + * + * R::findAll('person',' ORDER BY name DESC '); + * + * Your SQL does not have to start with a valid WHERE-clause condition. + * + * @param string $type type the type of bean you are looking for + * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $values values array of values to be bound to parameters in query + * + * @return array $beans beans + */ + public static function findAll( $type, $sql=null, $values=array() ) { + if (!is_array($values)) throw new InvalidArgumentException('Expected array, ' . gettype($values) . ' given.'); + return self::$redbean->find($type,array(),array($sql,$values),true); + } + + /** + * Finds a bean using a type and a where clause (SQL). + * As with most Query tools in RedBean you can provide values to + * be inserted in the SQL statement by populating the value + * array parameter; you can either use the question mark notation + * or the slot-notation (:keyname). + * The variation also exports the beans (i.e. it returns arrays). + * + * @param string $type type the type of bean you are looking for + * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $values values array of values to be bound to parameters in query + * + * @return array $arrays arrays + */ + public static function findAndExport($type, $sql=null, $values=array()) { + $items = self::find( $type, $sql, $values ); + $arr = array(); + foreach($items as $key=>$item) { + $arr[$key]=$item->export(); + } + return $arr; + } + + /** + * Finds a bean using a type and a where clause (SQL). + * As with most Query tools in RedBean you can provide values to + * be inserted in the SQL statement by populating the value + * array parameter; you can either use the question mark notation + * or the slot-notation (:keyname). + * This variation returns the first bean only. + * + * @param string $type type the type of bean you are looking for + * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $values values array of values to be bound to parameters in query + * + * @return RedBean_OODBBean $bean + */ + public static function findOne( $type, $sql=null, $values=array()) { + $items = self::find($type,$sql,$values); + $found = reset($items); + if (!$found) return null; + return $found; + } + + /** + * Finds a bean using a type and a where clause (SQL). + * As with most Query tools in RedBean you can provide values to + * be inserted in the SQL statement by populating the value + * array parameter; you can either use the question mark notation + * or the slot-notation (:keyname). + * This variation returns the last bean only. + * + * @param string $type type the type of bean you are looking for + * @param string $sql sql SQL query to find the desired bean, starting right after WHERE clause + * @param array $values values array of values to be bound to parameters in query + * + * @return RedBean_OODBBean $bean + */ + public static function findLast( $type, $sql=null, $values=array() ) { + $items = self::find( $type, $sql, $values ); + $found = end( $items ); + if (!$found) return null; + return $found; + } + + /** + * Returns an array of beans. Pass a type and a series of ids and + * this method will bring you the correspondig beans. + * + * important note: Because this method loads beans using the load() + * function (but faster) it will return empty beans with ID 0 for + * every bean that could not be located. The resulting beans will have the + * passed IDs as their keys. + * + * @param string $type type of beans + * @param array $ids ids to load + * + * @return array $beans resulting beans (may include empty ones) + */ + public static function batch( $type, $ids ) { + return self::$redbean->batch($type, $ids); + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return integer $affected number of affected rows + */ + public static function exec( $sql, $values=array() ) { + return self::query('exec',$sql,$values); + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return array $results + */ + public static function getAll( $sql, $values=array() ) { + return self::query('get',$sql,$values); + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return string $result scalar + */ + public static function getCell( $sql, $values=array() ) { + return self::query('getCell',$sql,$values); + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return array $results + */ + public static function getRow( $sql, $values=array() ) { + return self::query('getRow',$sql,$values); + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return array $results + */ + public static function getCol( $sql, $values=array() ) { + return self::query('getCol',$sql,$values); + } + + /** + * Internal Query function, executes the desired query. Used by + * all facade query functions. This keeps things DRY. + * + * @throws RedBean_Exception_SQL + * + * @param string $method desired query method (i.e. 'cell','col','exec' etc..) + * @param string $sql the sql you want to execute + * @param array $values array of values to be bound to query statement + * + * @return array $results results of query + */ + private static function query($method,$sql,$values) { + if (!self::$redbean->isFrozen()) { + try { + $rs = RedBean_Facade::$adapter->$method( $sql, $values ); + }catch(RedBean_Exception_SQL $e) { + if(self::$writer->sqlStateIn($e->getSQLState(), + array( + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_COLUMN, + RedBean_QueryWriter::C_SQLSTATE_NO_SUCH_TABLE) + )) { + return array(); + } + else { + throw $e; + } + } + return $rs; + } + else { + return RedBean_Facade::$adapter->$method( $sql, $values ); + } + } + + /** + * Convenience function to execute Queries directly. + * Executes SQL. + * Results will be returned as an associative array. The first + * column in the select clause will be used for the keys in this array and + * the second column will be used for the values. If only one column is + * selected in the query, both key and value of the array will have the + * value of this field for each row. + * + * @param string $sql sql SQL query to execute + * @param array $values values a list of values to be bound to query parameters + * + * @return array $results + */ + public static function getAssoc($sql,$values=array()) { + return self::query('getAssoc',$sql,$values); + } + + + /** + * Makes a copy of a bean. This method makes a deep copy + * of the bean.The copy will have the following features. + * - All beans in own-lists will be duplicated as well + * - All references to shared beans will be copied but not the shared beans themselves + * - All references to parent objects (_id fields) will be copied but not the parents themselves + * In most cases this is the desired scenario for copying beans. + * This function uses a trail-array to prevent infinite recursion, if a recursive bean is found + * (i.e. one that already has been processed) the ID of the bean will be returned. + * This should not happen though. + * + * Note: + * This function does a reflectional database query so it may be slow. + * + * @param RedBean_OODBBean $bean bean to be copied + * @param array $trail for internal usage, pass array() + * @param boolean $pid for internal usage + * + * @return array $copiedBean the duplicated bean + */ + public static function dup($bean,$trail=array(),$pid=false,$filters=array()) { + self::$duplicationManager->setFilters($filters); + return self::$duplicationManager->dup($bean, $trail,$pid); + } + + /** + * Exports a collection of beans. Handy for XML/JSON exports with a + * Javascript framework like Dojo or ExtJS. + * What will be exported: + * - contents of the bean + * - all own bean lists (recursively) + * - all shared beans (not THEIR own lists) + * + * @param array|RedBean_OODBBean $beans beans to be exported + * + * @return array $array exported structure + */ + public static function exportAll($beans,$parents=false,$filters=array()) { + $array = array(); + if (!is_array($beans)) $beans = array($beans); + foreach($beans as $bean) { + $f = self::dup($bean,array(),true,$filters); + $array[] = $f->export(false,$parents,false,$filters); + } + return $array; + } + + + /** + * Given an array of two beans and a property, this method + * swaps the value of the property. + * This is handy if you need to swap the priority or orderNo + * of an item (i.e. bug-tracking, page order). + * + * @param array $beans beans + * @param string $property property + */ + public static function swap( $beans, $property ) { + $bean1 = array_shift($beans); + $bean2 = array_shift($beans); + $tmp = $bean1->$property; + $bean1->$property = $bean2->$property; + $bean2->$property = $tmp; + RedBean_Facade::store($bean1); + RedBean_Facade::store($bean2); + } + + /** + * Converts a series of rows to beans. + * + * @param string $type type + * @param array $rows must contain an array of arrays. + * + * @return array $beans + */ + public static function convertToBeans($type,$rows) { + return self::$redbean->convertToBeans($type,$rows); + } + + + /** + * Part of RedBeanPHP Tagging API. + * Tests whether a bean has been associated with one ore more + * of the listed tags. If the third parameter is TRUE this method + * will return TRUE only if all tags that have been specified are indeed + * associated with the given bean, otherwise FALSE. + * If the third parameter is FALSE this + * method will return TRUE if one of the tags matches, FALSE if none + * match. + * + * @param RedBean_OODBBean $bean bean to check for tags + * @param array $tags list of tags + * @param boolean $all whether they must all match or just some + * + * @return boolean $didMatch whether the bean has been assoc. with the tags + */ + public static function hasTag($bean, $tags, $all=false) { + return self::$tagManager->hasTag($bean,$tags,$all); + } + + /** + * Part of RedBeanPHP Tagging API. + * Removes all sepcified tags from the bean. The tags specified in + * the second parameter will no longer be associated with the bean. + * + * @param RedBean_OODBBean $bean tagged bean + * @param array $tagList list of tags (names) + * + * @return void + */ + public static function untag($bean,$tagList) { + return self::$tagManager->untag($bean,$tagList); + } + + /** + * Part of RedBeanPHP Tagging API. + * Tags a bean or returns tags associated with a bean. + * If $tagList is null or omitted this method will return a + * comma separated list of tags associated with the bean provided. + * If $tagList is a comma separated list (string) of tags all tags will + * be associated with the bean. + * You may also pass an array instead of a string. + * + * @param RedBean_OODBBean $bean bean + * @param mixed $tagList tags + * + * @return string $commaSepListTags + */ + public static function tag( RedBean_OODBBean $bean, $tagList = null ) { + return self::$tagManager->tag($bean,$tagList); + } + + /** + * Part of RedBeanPHP Tagging API. + * Adds tags to a bean. + * If $tagList is a comma separated list of tags all tags will + * be associated with the bean. + * You may also pass an array instead of a string. + * + * @param RedBean_OODBBean $bean bean + * @param array $tagList list of tags to add to bean + * + * @return void + */ + public static function addTags( RedBean_OODBBean $bean, $tagList ) { + return self::$tagManager->addTags($bean,$tagList); + } + + /** + * Part of RedBeanPHP Tagging API. + * Returns all beans that have been tagged with one of the tags given. + * + * @param $beanType type of bean you are looking for + * @param $tagList list of tags to match + * + * @return array + */ + public static function tagged( $beanType, $tagList ) { + return self::$tagManager->tagged($beanType,$tagList); + } + + /** + * Part of RedBeanPHP Tagging API. + * Returns all beans that have been tagged with ALL of the tags given. + * + * @param $beanType type of bean you are looking for + * @param $tagList list of tags to match + * + * @return array + */ + public static function taggedAll( $beanType, $tagList ) { + return self::$tagManager->taggedAll($beanType,$tagList); + } + + + /** + * Wipes all beans of type $beanType. + * + * @param string $beanType type of bean you want to destroy entirely. + */ + public static function wipe( $beanType ) { + return RedBean_Facade::$redbean->wipe($beanType); + } + + /** + * Counts beans + * + * @param string $beanType type of bean + * @param string $addSQL additional SQL snippet (for filtering, limiting) + * @param array $params parameters to bind to SQL + * + * @return integer $numOfBeans + */ + + public static function count( $beanType, $addSQL = '', $params = array() ) { + return RedBean_Facade::$redbean->count($beanType,$addSQL,$params); + } + + /** + * Configures the facade, want to have a new Writer? A new Object Database or a new + * Adapter and you want it on-the-fly? Use this method to hot-swap your facade with a new + * toolbox. + * + * @param RedBean_ToolBox $tb toolbox + * + * @return RedBean_ToolBox $tb old, rusty, previously used toolbox + */ + public static function configureFacadeWithToolbox( RedBean_ToolBox $tb ) { + $oldTools = self::$toolbox; + self::$toolbox = $tb; + self::$writer = self::$toolbox->getWriter(); + self::$adapter = self::$toolbox->getDatabaseAdapter(); + self::$redbean = self::$toolbox->getRedBean(); + self::$associationManager = new RedBean_AssociationManager( self::$toolbox ); + self::$redbean->setAssociationManager(self::$associationManager); + self::$extAssocManager = new RedBean_AssociationManager_ExtAssociationManager( self::$toolbox ); + $helper = new RedBean_ModelHelper(); + $helper->attachEventListeners(self::$redbean); + self::$associationManager->addEventListener('delete', $helper ); + self::$duplicationManager = new RedBean_DuplicationManager(self::$toolbox); + self::$tagManager = new RedBean_TagManager( self::$toolbox ); + self::$f = new RedBean_SQLHelper(self::$adapter); + return $oldTools; + } + + /** + * Facade Convience method for adapter transaction system. + * Begins a transaction. + * + * @return void + */ + public static function begin() { + self::$adapter->startTransaction(); + } + + /** + * Facade Convience method for adapter transaction system. + * Commits a transaction. + * + * @return void + */ + public static function commit() { + self::$adapter->commit(); + } + + /** + * Facade Convience method for adapter transaction system. + * Rolls back a transaction. + * + * @return void + */ + public static function rollback() { + self::$adapter->rollback(); + } + + /** + * Returns a list of columns. Format of this array: + * array( fieldname => type ) + * Note that this method only works in fluid mode because it might be + * quite heavy on production servers! + * + * @param string $table name of the table (not type) you want to get columns of + * + * @return array $columns list of columns and their types + */ + public static function getColumns($table) { + return self::$writer->getColumns($table); + } + + /** + * Generates question mark slots for an array of values. + * + * @param array $array + * @return string $slots + */ + public static function genSlots($array) { + if (is_array($array) && count($array)>0) { + $filler = array_fill(0,count($array),'?'); + return implode(',',$filler); + } + else { + return ''; + } + } + + /** + * Nukes the entire database. + */ + public static function nuke() { + if (!self::$redbean->isFrozen()) { + self::$writer->wipeAll(); + } + } + + /** + * Sets a list of dependencies. + * A dependency list contains an entry for each dependent bean. + * A dependent bean will be removed if the relation with one of the + * dependencies gets broken. + * + * Example: + * + * array( + * 'page' => array('book','magazine') + * ) + * + * A page will be removed if: + * + * unset($book->ownPage[$pageID]); + * + * or: + * + * unset($magazine->ownPage[$pageID]); + * + * but not if: + * + * unset($paper->ownPage[$pageID]); + * + * + * @param array $dep list of dependencies + */ + public static function dependencies($dep) { + self::$redbean->setDepList($dep); + } + + /** + * Short hand function to store a set of beans at once, IDs will be + * returned as an array. For information please consult the R::store() + * function. + * A loop saver. + * + * @param array $beans list of beans to be stored + * + * @return array $ids list of resulting IDs + */ + public static function storeAll($beans) { + $ids = array(); + foreach($beans as $bean) $ids[] = self::store($bean); + return $ids; + } + + /** + * Short hand function to trash a set of beans at once. + * For information please consult the R::trash() function. + * A loop saver. + * + * @param array $beans list of beans to be trashed + */ + public static function trashAll($beans) { + foreach($beans as $bean) self::trash($bean); + } + + /** + * A label is a bean with only an id, type and name property. + * This function will dispense beans for all entries in the array. The + * values of the array will be assigned to the name property of each + * individual bean. + * + * @param string $type type of beans you would like to have + * @param array $labels list of labels, names for each bean + * + * @return array $bean a list of beans with type and name property + */ + public static function dispenseLabels($type,$labels) { + $labelBeans = array(); + foreach($labels as $label) { + $labelBean = self::dispense($type); + $labelBean->name = $label; + $labelBeans[] = $labelBean; + } + return $labelBeans; + } + + /** + * Gathers labels from beans. This function loops through the beans, + * collects the values of the name properties of each individual bean + * and stores the names in a new array. The array then gets sorted using the + * default sort function of PHP (sort). + * + * @param array $beans list of beans to loop + * + * @return array $array list of names of beans + */ + public static function gatherLabels($beans) { + $labels = array(); + foreach($beans as $bean) $labels[] = $bean->name; + sort($labels); + return $labels; + } + + + /** + * Closes the database connection. + */ + public static function close() { + if (isset(self::$adapter)){ + self::$adapter->close(); + } + } + + + + + /** + * Simple convenience function, returns ISO date formatted representation + * of $time. + * + * @param mixed $time UNIX timestamp + * + * @return type + */ + public static function isoDate( $time = null ) { + if (!$time) $time = time(); + return @date('Y-m-d',$time); + } + + /** + * Simple convenience function, returns ISO date time + * formatted representation + * of $time. + * + * @param mixed $time UNIX timestamp + * + * @return type + */ + public static function isoDateTime( $time = null) { + if (!$time) $time = time(); + return @date('Y-m-d H:i:s',$time); + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @param RedBean_Adapter $adapter + */ + public static function setDatabaseAdapter(RedBean_Adapter $adapter) { + self::$adapter = $adapter; + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @param RedBean_QueryWriter $writer + */ + public static function setWriter(RedBean_QueryWriter $writer) { + self::$writer = $writer; + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @param RedBean_OODB $redbean + */ + public static function setRedBean(RedBean_OODB $redbean) { + self::$redbean = $redbean; + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @return RedBean_DatabaseAdapter $adapter + */ + public static function getDatabaseAdapter() { + return self::$adapter; + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @return RedBean_QueryWriter $writer + */ + public static function getWriter() { + return self::$writer; + } + + /** + * Optional accessor for neat code. + * Sets the database adapter you want to use. + * + * @return RedBean_RedBean $redbean + */ + public static function getRedBean() { + return self::$redbean; + } + + /** + * Preloads certain properties for beans. + * Understands aliases. + * + * Usage: R::preload($books,array('coauthor'=>'author')); + * + * @param array $beans beans + * @param array $types types to load + */ + public static function preload($beans,$types) { + return self::$redbean->preload($beans,$types); + } + +} + +//Compatibility with PHP 5.2 and earlier +function __lcfirst( $str ){ return (string)(strtolower(substr($str,0,1)).substr($str,1)); } + + +/** + * RedBean Plugin + * + * @file RedBean/Plugin.php + * @desc Marker interface for plugins. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +interface RedBean_Plugin { }; + +/** + * Sync + * + * @file RedBean/Plugin/Sync.php + * @desc Plugin for Synchronizing databases. + * + * @plugin public static function syncSchema($from,$to) { return RedBean_Plugin_Sync::syncSchema($from,$to); } + * + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * + * (c) G.J.G.T. (Gabor) de Mooij + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Plugin_Sync implements RedBean_Plugin { + + /** + * Captures the SQL required to adjust source database to match + * schema of target database and feeds this sql code to the + * adapter of the target database. + * + * @param RedBean_Toolbox $source toolbox of source database + * @param RedBean_Toolbox $target toolbox of target database + */ + public function doSync(RedBean_Toolbox $source, RedBean_Toolbox $target) { + + $sourceWriter = $source->getWriter(); + $targetWriter = $target->getWriter(); + + $longText = str_repeat('lorem ipsum', 9000); + $testmap = array( + false, 1, 2.5, -10, 1000, 'abc', $longText, '2010-10-10', '2010-10-10 10:00:00', '10:00:00', 'POINT(1 2)' + ); + $translations = array(); + $defaultCode = $targetWriter->scanType('string'); + foreach ($testmap as $v) { + $code = $sourceWriter->scanType($v, true); + $translation = $targetWriter->scanType($v, true); + if (!isset($translations[$code])) + $translations[$code] = $translation; + if ($translation > $translations[$code] && $translation < 50) + $translations[$code] = $translation; + } + + + //Fix narrow translations SQLiteT stores date as double. (double != really double) + if (get_class($sourceWriter)==='RedBean_QueryWriter_SQLiteT') { + $translations[1] = $defaultCode; //use magic number in case writer not loaded. + } + + $sourceTables = $sourceWriter->getTables(); + $targetTables = $targetWriter->getTables(); + $missingTables = array_diff($sourceTables, $targetTables); + foreach ($missingTables as $missingTable) { + $targetWriter->createTable($missingTable); + } + //First run, create tables and columns + foreach ($sourceTables as $sourceTable) { + $sourceColumns = $sourceWriter->getColumns($sourceTable); + if (in_array($sourceTable, $missingTables)) { + $targetColumns = array(); + } else { + $targetColumns = $targetWriter->getColumns($sourceTable); + } + unset($sourceColumns['id']); + foreach ($sourceColumns as $sourceColumn => $sourceType) { + if (substr($sourceColumn, -3) === '_id') { + $targetCode = $targetWriter->getTypeForID(); + } else { + $sourceCode = $sourceWriter->code($sourceType, true); + $targetCode = (isset($translations[$sourceCode])) ? $translations[$sourceCode] : $defaultCode; + } + if (!isset($targetColumns[$sourceColumn])) { + $targetWriter->addColumn($sourceTable, $sourceColumn, $targetCode); + } + } + } + + foreach ($sourceTables as $sourceTable) { + $sourceColumns = $sourceWriter->getColumns($sourceTable); + foreach ($sourceColumns as $sourceColumn => $sourceType) { + if (substr($sourceColumn, -3) === '_id') { + $fkTargetType = substr($sourceColumn, 0, strlen($sourceColumn) - 3); + $fkType = $sourceTable; + $fkField = $sourceColumn; + $fkTargetField = 'id'; + $targetWriter->addFK($fkType, $fkTargetType, $fkField, $fkTargetField); + } + } + //Is it a link table? -- Add Unique constraint and FK constraint + if (strpos($sourceTable, '_') !== false) { + $targetWriter->addUniqueIndex($sourceTable, array_keys($sourceColumns)); + $types = explode('_', $sourceTable); + $targetWriter->addConstraint(R::dispense($types[0]), R::dispense($types[1])); + } + } + } + + + /** + * Performs a database schema sync. For use with facade. + * Instead of toolboxes this method accepts simply string keys and is static. + * + * @param string $database1 the source database + * @param string $database2 the target database + */ + public static function syncSchema($database1,$database2) { + if (!isset(RedBean_Facade::$toolboxes[$database1])) throw new RedBean_Exception_Security('No database for this key: '.$database1); + if (!isset(RedBean_Facade::$toolboxes[$database2])) throw new RedBean_Exception_Security('No database for this key: '.$database2); + $db1 = RedBean_Facade::$toolboxes[$database1]; + $db2 = RedBean_Facade::$toolboxes[$database2]; + $sync = new self; + $sync->doSync($db1, $db2); + } + +} + + +/** + * BeanCan + * + * @file RedBean/BeanCan.php + * @desc Server Interface for RedBean and Fuse. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * The BeanCan Server is a lightweight, minimalistic server interface for + * RedBean that can perfectly act as an ORM middleware solution or a backend + * for an AJAX application. + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Plugin_BeanCan implements RedBean_Plugin { + + /** + * Holds a FUSE instance. + * @var RedBean_ModelHelper + */ + private $modelHelper; + + /** + * Constructor. + */ + public function __construct() { + $this->modelHelper = new RedBean_ModelHelper; + } + + /** + * Writes a response object for the client (JSON encoded). Internal method. + * + * @param mixed $result result + * @param integer $id request ID + * @param integer $errorCode error code from server + * @param string $errorMessage error message from server + * + * @return string $json JSON encoded response. + */ + private function resp($result=null, $id=null, $errorCode='-32603',$errorMessage='Internal Error') { + $response = array('jsonrpc'=>'2.0'); + if (!is_null($id)) { $response['id'] = $id; } + if ($result) { + $response['result']=$result; + } + else { + $response['error'] = array('code'=>$errorCode,'message'=>$errorMessage); + } + return (json_encode($response)); + } + + /** + * Processes a JSON object request. + * + * @param array $jsonObject JSON request object + * + * @return mixed $result result + */ + public function handleJSONRequest( $jsonString ) { + //Decode JSON string + $jsonArray = json_decode($jsonString,true); + if (!$jsonArray) return $this->resp(null,null,-32700,'Cannot Parse JSON'); + if (!isset($jsonArray['jsonrpc'])) return $this->resp(null,null,-32600,'No RPC version'); + if (($jsonArray['jsonrpc']!='2.0')) return $this->resp(null,null,-32600,'Incompatible RPC Version'); + //DO we have an ID to identify this request? + if (!isset($jsonArray['id'])) return $this->resp(null,null,-32600,'No ID'); + //Fetch the request Identification String. + $id = $jsonArray['id']; + //Do we have a method? + if (!isset($jsonArray['method'])) return $this->resp(null,$id,-32600,'No method'); + //Do we have params? + if (!isset($jsonArray['params'])) { + $data = array(); + } + else { + $data = $jsonArray['params']; + } + //Check method signature + $method = explode(':',trim($jsonArray['method'])); + if (count($method)!=2) { + return $this->resp(null, $id, -32600,'Invalid method signature. Use: BEAN:ACTION'); + } + //Collect Bean and Action + $beanType = $method[0]; + $action = $method[1]; + //May not contain anything other than ALPHA NUMERIC chars and _ + if (preg_match('/\W/',$beanType)) return $this->resp(null, $id, -32600,'Invalid Bean Type String'); + if (preg_match('/\W/',$action)) return $this->resp(null, $id, -32600,'Invalid Action String'); + + try { + switch($action) { + case 'store': + if (!isset($data[0])) return $this->resp(null, $id, -32602,'First param needs to be Bean Object'); + $data = $data[0]; + if (!isset($data['id'])) $bean = RedBean_Facade::dispense($beanType); else + $bean = RedBean_Facade::load($beanType,$data['id']); + $bean->import( $data ); + $rid = RedBean_Facade::store($bean); + return $this->resp($rid, $id); + case 'load': + if (!isset($data[0])) return $this->resp(null, $id, -32602,'First param needs to be Bean ID'); + $bean = RedBean_Facade::load($beanType,$data[0]); + return $this->resp($bean->export(),$id); + case 'trash': + if (!isset($data[0])) return $this->resp(null, $id, -32602,'First param needs to be Bean ID'); + $bean = RedBean_Facade::load($beanType,$data[0]); + RedBean_Facade::trash($bean); + return $this->resp('OK',$id); + case 'export': + if (!isset($data[0])) return $this->resp(null, $id, -32602,'First param needs to be Bean ID'); + $bean = RedBean_Facade::load($beanType,$data[0]); + $array = RedBean_Facade::exportAll(array($bean),true); + return $this->resp($array,$id); + default: + $modelName = $this->modelHelper->getModelName( $beanType ); + if (!class_exists($modelName)) return $this->resp(null, $id, -32601,'No such bean in the can!'); + $beanModel = new $modelName; + if (!method_exists($beanModel,$action)) return $this->resp(null, $id, -32601,"Method not found in Bean: $beanType "); + return $this->resp( call_user_func_array(array($beanModel,$action), $data), $id); + } + } + catch(Exception $exception) { + return $this->resp(null, $id, -32099,$exception->getCode().'-'.$exception->getMessage()); + } + } + + /** + * Support for RESTFul GET-requests. + * Only supports very BASIC REST requests, for more functionality please use + * the JSON-RPC 2 interface. + * + * @param string $pathToResource RESTFul path to resource + * + * @return string $json a JSON encoded response ready for sending to client + */ + public function handleRESTGetRequest( $pathToResource ) { + if (!is_string($pathToResource)) return $this->resp(null,0,-32099,'IR'); + $resourceInfo = explode('/',$pathToResource); + $type = $resourceInfo[0]; + try { + if (count($resourceInfo) < 2) { + return $this->resp(RedBean_Facade::findAndExport($type)); + } + else { + $id = (int) $resourceInfo[1]; + return $this->resp(RedBean_Facade::load($type,$id)->export(),$id); + } + } + catch(Exception $e) { + return $this->resp(null,0,-32099); + } + } +} + + + +/** + * Query Logger + * + * @file RedBean/Plugin/QueryLogger.php + * @desc Query logger, can be attached to an observer that signals the sql_exec event. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ + +class RedBean_Plugin_QueryLogger implements RedBean_Observer, RedBean_Plugin { + + /** + * @var array + * contains log messages + */ + protected $logs = array(); + + /** + * Creates a new instance of the Query Logger and attaches + * this logger to the adapter. + * + * @static + * @param RedBean_Observable $adapter the adapter you want to attach to + * + * @return RedBean_Plugin_QueryLogger $querylogger instance of the Query Logger + */ + public static function getInstanceAndAttach( RedBean_Observable $adapter ) { + $queryLog = new RedBean_Plugin_QueryLogger; + $adapter->addEventListener( 'sql_exec', $queryLog ); + return $queryLog; + } + + /** + * Singleton pattern + * Constructor - private + */ + private function __construct(){} + + /** + * Implementation of the onEvent() method for Observer interface. + * If a query gets executed this method gets invoked because the + * adapter will send a signal to the attached logger. + * + * @param string $eventName ID of the event (name) + * @param RedBean_DBAdapter $adapter adapter that sends the signal + * + * @return void + */ + public function onEvent( $eventName, $adapter ) { + if ($eventName=='sql_exec') { + $this->logs[] = $adapter->getSQL(); + } + } + + /** + * Searches the logs for the given word and returns the entries found in + * the log container. + * + * @param string $word word to look for + * + * @return array $entries entries that contain the keyword + */ + public function grep( $word ) { + $found = array(); + foreach($this->logs as $log) { + if (strpos($log,$word)!==false) { + $found[] = $log; + } + } + return $found; + } + + /** + * Returns all the logs. + * + * @return array $logs logs + */ + public function getLogs() { + return $this->logs; + } + + /** + * Clears the logs. + * + * @return void + */ + public function clear() { + $this->logs = array(); + } +} + + +/** + * TimeLine + * + * @file RedBean/Plugin/TimeLine.php + * @desc Monitors schema changes to ease deployment. + * + * @plugin public static function log($filename) { $tl = new RedBean_Plugin_TimeLine($filename); self::$adapter->addEventListener('sql_exec',$tl);} + * + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ + +class RedBean_Plugin_TimeLine extends RedBean_Plugin_QueryLogger implements RedBean_Plugin { + + /** + * Path to file to write SQL and comments to. + * + * @var string + */ + protected $file; + + /** + * Constructor. + * Requires a path to an existing and writable file. + * + * @param string $outputPath path to file to write schema changes to. + */ + public function __construct($outputPath) { + if (!file_exists($outputPath) || !is_writable($outputPath)) + throw new RedBean_Exception_Security('Cannot write to file: '.$outputPath); + $this->file = $outputPath; + } + + /** + * Implementation of the onEvent() method for Observer interface. + * If a query gets executed this method gets invoked because the + * adapter will send a signal to the attached logger. + * + * @param string $eventName ID of the event (name) + * @param RedBean_DBAdapter $adapter adapter that sends the signal + * + * @return void + */ + public function onEvent( $eventName, $adapter ) { + if ($eventName=='sql_exec') { + $sql = $adapter->getSQL(); + $this->logs[] = $sql; + if (strpos($sql,'ALTER')===0) { + $write = "-- ".date('Y-m-d H:i')." | Altering table. \n"; + $write .= $sql; + $write .= "\n\n"; + } + if (strpos($sql,'CREATE')===0) { + $write = "-- ".date('Y-m-d H:i')." | Creating new table. \n"; + $write .= $sql; + $write .= "\n\n"; + } + if (isset($write)) { + file_put_contents($this->file,$write,FILE_APPEND); + } + } + } + + +} + +/** + * RedBean Cooker + * + * @file RedBean/Cooker.php + * + * @plugin public static function graph($array,$filterEmpty=false) { $c = new RedBean_Plugin_Cooker(); $c->setToolbox(self::$toolbox);return $c->graph($array,$filterEmpty);} + * + * @desc Turns arrays into bean collections for easy persistence. + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * The Cooker is a little candy to make it easier to read-in an HTML form. + * This class turns a form into a collection of beans plus an array + * describing the desired associations. + * + * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ +class RedBean_Plugin_Cooker implements RedBean_Plugin { + + /** + * This flag indicates whether empty strings in beans will be + * interpreted as NULL or not. TRUE means Yes, will be converted to NULL, + * FALSE means empty strings will be stored as such (conversion to 0 for integer fields). + * @var boolean + */ + private static $useNULLForEmptyString = false; + + /** + * Sets the toolbox to be used by graph() + * + * @param RedBean_Toolbox $toolbox toolbox + * @return void + */ + public function setToolbox(RedBean_Toolbox $toolbox) { + $this->toolbox = $toolbox; + $this->redbean = $this->toolbox->getRedbean(); + } + + /** + * Turns an array (post/request array) into a collection of beans. + * Handy for turning forms into bean structures that can be stored with a + * single call. + * + * Typical usage: + * + * $struct = R::graph($_POST); + * R::store($struct); + * + * Example of a valid array: + * + * $form = array( + * 'type'=>'order', + * 'ownProduct'=>array( + * array('id'=>171,'type'=>'product'), + * ), + * 'ownCustomer'=>array( + * array('type'=>'customer','name'=>'Bill') + * ), + * 'sharedCoupon'=>array( + * array('type'=>'coupon','name'=>'123'), + * array('type'=>'coupon','id'=>3) + * ) + * ); + * + * Each entry in the array will become a property of the bean. + * The array needs to have a type-field indicating the type of bean it is + * going to be. The array can have nested arrays. A nested array has to be + * named conform the bean-relation conventions, i.e. ownPage/sharedPage + * each entry in the nested array represents another bean. + * + * @param array $array array to be turned into a bean collection + * @param boolean $filterEmpty whether you want to exclude empty beans + * + * @return array $beans beans + */ + public function graph( $array, $filterEmpty = false ) { + $beans = array(); + if (is_array($array) && isset($array['type'])) { + $type = $array['type']; + unset($array['type']); + //Do we need to load the bean? + if (isset($array['id'])) { + $id = (int) $array['id']; + $bean = $this->redbean->load($type,$id); + } + else { + $bean = $this->redbean->dispense($type); + } + foreach($array as $property=>$value) { + if (is_array($value)) { + $bean->$property = $this->graph($value,$filterEmpty); + } + else { + if($value == '' && self::$useNULLForEmptyString){ + $bean->$property = null; + } + else + $bean->$property = $value; + } + } + return $bean; + } + elseif (is_array($array)) { + foreach($array as $key=>$value) { + $listBean = $this->graph($value,$filterEmpty); + if (!($listBean instanceof RedBean_OODBBean)) { + throw new RedBean_Exception_Security('Expected bean but got :'.gettype($listBean)); + } + if ($listBean->isEmpty()) { + if (!$filterEmpty) { + $beans[$key] = $listBean; + } + } + else { + $beans[$key] = $listBean; + } + } + return $beans; + } + else { + throw new RedBean_Exception_Security('Expected array but got :'.gettype($array)); + } + } + + /** + * Toggles the use-NULL flag. + * + * @param boolean $yesNo + */ + public function setUseNullFlag($yesNo) { + self::$useNULLForEmptyString = (boolean) $yesNo; + } + +} + + +/** + * RedBeanPHP Cache Plugin + * + * @file RedBean/Plugin/Cache.php + * @desc Cache plugin, caches beans. + * @author Gabor de Mooij and the RedBeanPHP community + * @license BSD/GPLv2 + * + * Provides a means to cache beans after loading or batch loading. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + */ + +class RedBean_Plugin_Cache extends RedBean_OODB implements RedBean_Plugin { + + /** + * Bean cache, contains the cached beans identified by + * label keys containing the type id and the fetch method; + * i.e. single load or batch load. + * + * @var array + */ + protected $cache = array(); + + + + /** + * Number of hits (beans/calls being served from cache). + * Can be used to monitor cache performance. + * + * @var integer + */ + protected $hits = 0; + + /** + * Number of misses (beans not being served from cache), can be + * used to monitor cache performance. + * + * @var integer + */ + protected $misses = 0; + + /** + * Constructor. + * Cache decorates RedBeanPHP OODB class, so needs a writer. + * + * @param RedBean_QueryWriter $writer + */ + public function __construct(RedBean_QueryWriter $writer) { + parent::__construct($writer); + } + + + + /** + * Loads a bean by type and id. If the bean cannot be found an + * empty bean will be returned instead. This is a cached version + * of the loader, if the bean has been cached it will be served + * from cache, otherwise the bean will be retrieved from the database + * as usual an a new cache entry will be added.. + * + * @param string $type type of bean you are looking for + * @param integer $id identifier of the bean + * + * @return RedBean_OODBBean $bean the bean object found + */ + public function load($type,$id) { + if (isset($this->cache[$type][$id])) { + $this->hits ++; + $bean = $this->cache[$type][$id]; + } + else { + $this->misses ++; + $bean = parent::load($type,$id); + if ($bean->id) { + if (!isset($this->cache[$type])) $this->cache[$type]=array(); + $this->cache[$type][$id] = $bean; + } + } + return $bean; + } + + /** + * Stores a RedBean OODBBean and caches it. + * + * @param RedBean_OODBBean $bean the bean you want to store + * + * @return integer $id + */ + public function store( $bean ) { + $id = parent::store($bean); + $type = $bean->getMeta('type'); + if (!isset($this->cache[$type])) $this->cache[$type]=array(); + $this->cache[$type][$id] = $bean; + return $id; + } + + /** + * Trashes a RedBean OODBBean and removes it from cache. + * + * @param RedBean_OODBBean $bean bean + * @return mixed + */ + public function trash( $bean ) { + $type = $bean->getMeta('type'); + $id = $bean->id; + if (isset($this->cache[$type][$id])) unset($this->cache[$type][$id]); + return parent::trash($bean); + } + + /** + * Flushes the cache for a given type. + * + * @param string $type + * + * @return RedBean_Plugin_Cache + */ + public function flush($type) { + if (isset($this->cache[$type])) $this->cache[$type]=array(); + return $this; + } + + /** + * Flushes the cache completely. + * + * @return RedBean_Plugin_Cache + */ + public function flushAll() { + $this->cache = array(); + return $this; + } + + + /** + * Returns the number of hits. If a call to load() or + * batch() can use the cache this counts as a hit. + * Otherwise it's a miss. + * + * @return integer + */ + public function getHits() { + return $this->hits; + } + + /** + * Returns the number of hits. If a call to load() or + * batch() can use the cache this counts as a hit. + * Otherwise it's a miss. + * + * @return integer + */ + public function getMisses() { + return $this->misses; + } + + /** + * Resets hits counter to 0. + */ + public function resetHits() { + $this->hits = 0; + } + + /** + * Resets misses counter to 0. + */ + public function resetMisses() { + $this->misses = 0; + } + +} + +/** + * RedBean Dependency Injector + * + * @file RedBean/DependencyInjector.php + * @desc Simple dependency injector + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * A default dependency injector that can be subclassed to + * suit your needs. This injetor can be used to inject helper objects into + * FUSE(d) models. + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +class RedBean_DependencyInjector { + + /** + * List of dependencies. + * @var array + */ + protected $dependencies = array(); + + /** + * Adds a dependency to the list. + * You can add dependencies using this method. Pass both the key of the + * dependency and the dependency itself. The key of the dependency is a + * name that should match the setter. For instance if you have a dependency + * class called My_Mailer and a setter on the model called setMailSystem + * you should pass an instance of My_Mailer with key MailSystem. + * The injector will now look for a setter called setMailSystem. + * + * @param string $dependencyID name of the dependency (should match setter) + * @param mixed $dependency the service to be injected + */ + public function addDependency($dependencyID,$dependency) { + $this->dependencies[$dependencyID] = $dependency; + } + + /** + * Returns an instance of the class $modelClassName completely + * configured as far as possible with all the available + * service objects in the dependency list. + * + * @param string $modelClassName the name of the class of the model + * + * @return mixed $object the model/object + */ + public function getInstance($modelClassName) { + $object = new $modelClassName; + if ($this->dependencies && is_array($this->dependencies)) { + foreach($this->dependencies as $key=>$dep) { + $depSetter = 'set'.$key; + if (method_exists($object,$depSetter)) { + $object->$depSetter($dep); + } + } + } + return $object; + } +} + +/** + * RedBean Duplication Manager + * + * @file RedBean/DuplicationManager.php + * @desc Creates deep copies of beans + * @author Gabor de Mooij and the RedBeanPHP Community + * @license BSD/GPLv2 + * + * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community + * This source file is subject to the BSD/GPLv2 License that is bundled + * with this source code in the file license.txt. + * + */ +class RedBean_DuplicationManager { + + + /** + * The Dup Manager requires a toolbox + * @var RedBean_Toolbox + */ + protected $toolbox; + + /** + * Association Manager + * @var RedBean_AssociationManager + */ + protected $associationManager; + + /** + * RedBeanPHP OODB instance + * @var RedBean_OODBBean + */ + protected $redbean; + + protected $tables = array(); + protected $columns = array(); + protected $filters = array(); + protected $cacheTables = false; + /** + * Constructor, + * creates a new instance of DupManager. + * @param RedBean_Toolbox $toolbox + */ + public function __construct( RedBean_Toolbox $toolbox ) { + $this->toolbox = $toolbox; + $this->redbean = $toolbox->getRedBean(); + $this->associationManager = $this->redbean->getAssociationManager(); + } + + /** + * For better performance you can pass the tables in an array to this method. + * If the tables are available the duplication manager will not query them so + * this might be beneficial for performance. + * + * @param array $tables + */ + public function setTables($tables) { + foreach($tables as $key=>$value) { + if (is_numeric($key)) { + $this->tables[] = $value; + } + else { + $this->tables[] = $key; + $this->columns[$key] = $value; + } + } + $this->cacheTables = true; + } + + /** + * Returns a schema array for cache. + * + * @return array + */ + public function getSchema() { + return $this->columns; + } + + /** + * Indicates whether you want the duplication manager to cache the database schema. + * If this flag is set to TRUE the duplication manager will query the database schema + * only once. Otherwise the duplicationmanager will, by default, query the schema + * every time a duplication action is performed (dup()). + * + * @param boolean $yesNo + */ + public function setCacheTables($yesNo) { + $this->cacheTables = $yesNo; + } + + /** + * A filter array is an array with table names. + * By setting a table filter you can make the duplication manager only take into account + * certain bean types. Other bean types will be ignored when exporting or making a + * deep copy. If no filters are set all types will be taking into account, this is + * the default behavior. + * + * @param array $filters + */ + public function setFilters($filters) { + $this->filters = $filters; + } + + /** + * Determines whether the bean has an own list based on + * schema inspection from realtime schema or cache. + * + * @param string $type bean type + * @param string $target type of list you want to detect + * + * @return boolean + */ + protected function hasOwnList($type,$target) { + return (isset($this->columns[$target][$type.'_id'])); + } + + /** + * Determines whether the bea has a shared list based on + * schema inspection from realtime schema or cache. + * + * @param string $type bean type + * @param string $target type of list you are looking for + * + * @return boolean + */ + protected function hasSharedList($type,$target) { + $linkType = array($type,$target); + sort($linkType); + $linkType = implode('_',$linkType); + return (in_array($linkType,$this->tables)); + } + + /** + * Makes a copy of a bean. This method makes a deep copy + * of the bean.The copy will have the following features. + * - All beans in own-lists will be duplicated as well + * - All references to shared beans will be copied but not the shared beans themselves + * - All references to parent objects (_id fields) will be copied but not the parents themselves + * In most cases this is the desired scenario for copying beans. + * This function uses a trail-array to prevent infinite recursion, if a recursive bean is found + * (i.e. one that already has been processed) the ID of the bean will be returned. + * This should not happen though. + * + * Note: + * This function does a reflectional database query so it may be slow. + * + * Note: + * this function actually passes the arguments to a protected function called + * duplicate() that does all the work. This method takes care of creating a clone + * of the bean to avoid the bean getting tainted (triggering saving when storing it). + * + * @param RedBean_OODBBean $bean bean to be copied + * @param array $trail for internal usage, pass array() + * @param boolean $pid for internal usage + * + * @return array $copiedBean the duplicated bean + */ + public function dup($bean,$trail=array(),$pid=false) { + if (!count($this->tables)) $this->tables = $this->toolbox->getWriter()->getTables(); + if (!count($this->columns)) foreach($this->tables as $table) $this->columns[$table] = $this->toolbox->getWriter()->getColumns($table); + $beanCopy = clone($bean); + $rs = $this->duplicate($beanCopy,$trail,$pid); + if (!$this->cacheTables) { + $this->tables = array(); + $this->columns = array(); + } + return $rs; + } + + /** + * Makes a copy of a bean. This method makes a deep copy + * of the bean.The copy will have the following features. + * - All beans in own-lists will be duplicated as well + * - All references to shared beans will be copied but not the shared beans themselves + * - All references to parent objects (_id fields) will be copied but not the parents themselves + * In most cases this is the desired scenario for copying beans. + * This function uses a trail-array to prevent infinite recursion, if a recursive bean is found + * (i.e. one that already has been processed) the ID of the bean will be returned. + * This should not happen though. + * + * Note: + * This function does a reflectional database query so it may be slow. + * + * @param RedBean_OODBBean $bean bean to be copied + * @param array $trail for internal usage, pass array() + * @param boolean $pid for internal usage + * + * @return array $copiedBean the duplicated bean + */ + protected function duplicate($bean,$trail=array(),$pid=false) { + + $type = $bean->getMeta('type'); + $key = $type.$bean->getID(); + if (isset($trail[$key])) return $bean; + $trail[$key]=$bean; + $copy =$this->redbean->dispense($type); + $copy->import( $bean->getProperties() ); + $copy->id = 0; + $tables = $this->tables; + foreach($tables as $table) { + if (is_array($this->filters) && count($this->filters) && !in_array($table,$this->filters)) continue; + if (strpos($table,'_')!==false || $table==$type) continue; + $owned = 'own'.ucfirst($table); + $shared = 'shared'.ucfirst($table); + if ($this->hasOwnList($type,$table)) { + if ($beans = $bean->$owned) { + $copy->$owned = array(); + foreach($beans as $subBean) { + array_push($copy->$owned,$this->duplicate($subBean,$trail,$pid)); + } + } + $copy->setMeta('sys.shadow.'.$owned,null); + } + if ($this->hasSharedList($type, $table)) { + if ($beans = $bean->$shared) { + $copy->$shared = array(); + foreach($beans as $subBean) { + array_push($copy->$shared,$subBean); + } + } + } + $copy->setMeta('sys.shadow.'.$shared,null); + + } + if ($pid) $copy->id = $bean->id; + return $copy; + } +} + +class R extends RedBean_Facade{ + public static function syncSchema($from,$to) { return RedBean_Plugin_Sync::syncSchema($from,$to); } + public static function log($filename) { $tl = new RedBean_Plugin_TimeLine($filename); self::$adapter->addEventListener('sql_exec',$tl);} + public static function graph($array,$filterEmpty=false) { $c = new RedBean_Plugin_Cooker(); $c->setToolbox(self::$toolbox);return $c->graph($array,$filterEmpty);} +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/list.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/list.php new file mode 100644 index 0000000..eb52b2a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/list.php @@ -0,0 +1,144 @@ + + + + + PhotoAlbum - Main page + + + + "fetch")); ?>"/> + + + + + + + + + +
+ + "png", + "transformation" => array( + array( + "height" => 95, + "width" => 95, + "crop" => "thumb", + "gravity" => "face", + "effect" => "sepia", + "radius" => 20, + ), + array("angle" => 10), + ), + )); + ?> +
+ +

Welcome!

+ +

+ This is the main demo page of the PhotoAlbum sample PHP application of Cloudinary.
+ Here you can see all images you have uploaded to this PHP application and find some information on how + to implement your own PHP application storing, manipulating and serving your photos using Cloudinary! +

+ +

+ All of the images you see here are transformed and served by Cloudinary. + For instance, the logo and the poster frame. + They are both generated in the cloud using the Cloudinary shortcut functions: fetch_image_tag and + facebook_profile_image_tag. + These two pictures weren't even have to be uploaded to Cloudinary, they are retrieved by the service, transformed, + cached and distributed through a CDN. +

+ +

Your Images

+
+

+ Following are the images uploaded by you. You can also upload more pictures. + + You can click on each picture to view its original size, and see more info about and additional transformations. + Upload Images... +

+ +

No images were uploaded yet.

+ + "; + echo cl_image_tag($photo["public_id"], array_merge($thumbs_params, array("crop" => "fill"))); + ?> + + + + +
+ Hide transformations... + + "fill", "radius" => 10), + array("crop" => "scale"), + array("crop" => "fit", "format" => "png"), + array("crop" => "thumb", "gravity" => "face"), + array( + "override" => true, + "format" => "png", + "angle" => 20, + "transformation" => + array("crop" => "fill", + "gravity" => "north", + "width" => 150, + "height" => 150, + "effect" => "sepia", + ), + ), + ); + foreach ($thumbs as $params) { + $merged_params = array_merge((\Cloudinary::option_consume($params, "override")) + ? array() : $thumbs_params, $params); + echo ""; + } + ?> + +
"; + echo ""; + echo "
"; + \PhotoAlbum\array_to_table($merged_params); + echo "
+ +
+ Take a look at our documentation of Image + Transformations for a full list of supported transformations. +
+
+
+ + + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/main.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/main.php new file mode 100644 index 0000000..30de1d4 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/main.php @@ -0,0 +1,64 @@ + 'jpg', 'height' => 150, 'width' => 150, 'class' => 'thumbnail inline'); + +// Helper functions +function ret_var_dump($var) +{ + ob_start(); + var_dump($var); + return ob_get_clean(); +} + +function array_to_table($array) +{ + $saved_error_reporting = error_reporting(0); + echo ''; + foreach ($array as $key => $value) { + if ($key != 'class') { + if ($key == 'url' || $key == 'secure_url') { + $display_value = '"' . $value . '"'; + } else { + $display_value = json_encode($value); + } + echo ""; + } + } + echo '
{$key}:{$display_value}
'; + error_reporting($saved_error_reporting); +} + +function create_photo_model($options = array()) +{ + $photo = \R::dispense('photo'); + + foreach ($options as $key => $value) { + if ($key != 'tags') { + $photo->{$key} = $value; + } + } + + # Add metadata we want to keep: + $photo->moderated = false; + $photo->created_at = (array_key_exists('created_at', $photo) ? + \DateTime::createFromFormat(\DateTime::ISO8601, $photo->created_at) : + \R::isoDateTime()); + + \R::store($photo); +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/settings.php.sample b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/settings.php.sample new file mode 100644 index 0000000..5edf3e1 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/settings.php.sample @@ -0,0 +1,8 @@ + 'my_cloud_name', + 'api_key' => '123456789012345', + 'api_secret' => 'abcdefghijklmnopqrstuvwxyz1' +)); + +R::setup('mysql:host=my_database.mydomain.com;dbname=photo_album', 'username', 'password'); diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/style.css b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/style.css new file mode 100644 index 0000000..77f9bb9 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/style.css @@ -0,0 +1,37 @@ +body { font-family: Helvetica, Arial, sans-serif; color: #333; margin: 10px; width: 960px } +#posterframe { position: absolute; right: 10px; top: 10px; } +h1 { color: #0e2953; font-size: 18px; } +h2 { color: #666; font-size: 16px; } +p { font-size: 14px; line-height: 18px; } +#logo { height: 51px; width: 241px; } +a { color: #0b63b6 } + +.upload_link { display: block; color: #000; border: 1px solid #aaa; background-color: #e0e0e0; + font-size: 18px; padding: 5px 10px; width: 150px; margin: 10px 0 20px 0; + font-weight: bold; text-align: center; } + +.photo { margin: 10px; padding: 10px; border-bottom: 2px solid #ccc; } +.photo .thumbnail { margin-top: 10px; display: block; max-width: 200px; } +.toggle_info { margin-top: 10px; font-weight: bold; color: #e62401; display: block; } +.thumbnail_holder { height: 182px; margin-bottom: 5px; margin-right: 10px; } +.info td, .uploaded_info td { font-size: 12px } +.note { margin: 20px 0} + +.more_info, .show_more_info .less_info { display: none; } +.show_more_info .more_info, .less_info { display: inline-block; } +.inline { display: inline-block; } +td { vertical-align: top; padding-right: 5px; } + +#backend_upload, #direct_upload { padding: 20px 20px; margin: 20px 0; + border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; } + +#backend_upload h1, #direct_upload h1 { margin: 0 0 15px 0; } + +.back_link { font-weight: bold; display: block; font-size: 16px; margin: 10px 0; } +#direct_upload { position: relative; min-height: 90px} +.status { position: absolute; top: 20px; left: 500px; text-align: center; border: 1px solid #aaa; + padding: 10px; width: 200px } + +.uploaded_info { margin: 10px} +.uploaded_info .image { margin: 5px 0 } +.uploaded_info td { padding-right: 10px } diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload.php new file mode 100644 index 0000000..9b38b5a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload.php @@ -0,0 +1,154 @@ + + + + + + PhotoAlbum - Upload page2 + + + + "fetch")); ?>"/> + + + + + + + + + + + + + +
+ + "png", + "transformation" => array( + array( + "height" => 95, + "width" => 95, + "crop" => "thumb", + "gravity" => "face", + "effect" => "sepia", + "radius" => 20, + ), + array("angle" => 10), + ), + )); + ?> +
+ + +
+

Upload through your server

+
+ + +
+
+ + + + +
+

Direct upload from the browser

+
+ upload_preset($upload_preset); + } catch (\Cloudinary\Api\NotFound $e) { + $api->create_upload_preset(array( + "name" => $upload_preset, + "unsigned" => true, + "folder" => "preset_folder", + )); + } + # The callback URL is set to point to an HTML file on the local server which works-around restrictions + # in older browsers (e.g., IE) which don't full support CORS. + echo cl_unsigned_image_upload_tag('test', $upload_preset, array( + "tags" => "direct_photo_album", + "callback" => $cors_location, + "html" => array("multiple" => true), + )); + } else { + # The callback URL is set to point to an HTML file on the local server which works-around restrictions + # in older browsers (e.g., IE) which don't full support CORS. + echo cl_image_upload_tag('test', array( + "tags" => "direct_photo_album", + "callback" => $cors_location, + "html" => array("multiple" => true), + )); + } + ?> + +
+ +
+

Status

+ Idle +
+ +
+
+
+ +Back to list... + + + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_backend.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_backend.php new file mode 100644 index 0000000..73cc230 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_backend.php @@ -0,0 +1,46 @@ + "backend_photo_album", + "public_id" => $orig_name, + )); + + unlink($file_path); + error_log("Upload result: " . \PhotoAlbum\ret_var_dump($result)); + \PhotoAlbum\create_photo_model($result); + return $result; +} + +$files = $_FILES["files"]; +$files = is_array($files) ? $files : array( $files ); +$files_data = array(); +foreach ($files["tmp_name"] as $index => $value) { + array_push($files_data, create_photo($value, $files["name"][$index])); +} + +?> + + + + Upload succeeded! + + + +

Your photo has been uploaded sucessfully!

+

Upload details:

+ +
+ "fill" ))); ?> + +Back to list... + + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_complete.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_complete.php new file mode 100644 index 0000000..5e38da6 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/upload_complete.php @@ -0,0 +1,27 @@ + $_POST['public_id'], + 'version' => $_POST['version'], +); + +$calculated_signature = \Cloudinary::api_sign_request($to_sign, $api_secret); + +if ($existing_signature == $calculated_signature) { + # Create a model record using the data received (best practice is to save locally + # only data needed for reaching the image on Cloudinary - public_id and version; + # and fields that might be needed for your application (e.g.,), width, height) + \PhotoAlbum\create_photo_model($_POST); +} else { + error_log("Received signature verification failed (" . + $existing_signature . " != " . $calculated_signature . "). data: " . + \PhotoAlbum\ret_var_dump($_POST)); +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/README.md b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/README.md new file mode 100644 index 0000000..0724893 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/README.md @@ -0,0 +1,63 @@ +# Cloudinary PHP Sample Project + +Included in this folder are two sample projects for demonstrating the common Cloudinary's usage in PHP. + +*Note: PHP 5.3+ is required.* + +## Installation + +The cloudinary_php package is ready to be used as-is in your Apache server. (other servers are also supported, but the access restrictions set in .htaccess might not work). +As described in cloudinary\_php main README.md file, you have to set up your Cloudinary credentials either by passing it as the `CLOUDINARY_URL` environment variable or calling Cloudinary::config(). +Each sample tries to include `settings.php` (`Config/CloudinaryPrivate.php` for PhotoAlbumCake) for configuration data - you can use the included `settings.php.sample` as a basis for such file. + +## Basic sample + +This sample is a synchronous script that shows the upload process from local file, remote URL, with different transformations and options. + +You can access it through http://YOUR\_SERVER/PATH\_TO\_CLOUDINARY\_PHP/samples/basic/basic.php + +Another option is available if you are using PHP 5.4 or higher. + +First install the library: + +```bash +php composer.phar dump-autoload --optimize +``` + +Then run the basic sample: + +```bash +php -S localhost:8001 -t samples/basic +``` + +Then you can simply browse to: [http://localhost:8001/basic.php](http://localhost:8001/basic.php) + +## Photo Album + +A simple web application that allows you to uploads photos, maintain a database with references to them, list them with their metadata, and display them using various cloud-based transformations. + +Make sure to first create a MySQL database (e.g., `create database photo_album`). Then edit `settings.php` to have the correct database details. For example: + + R::setup('mysql:host=127.0.0.1;dbname=photo_album', 'my_db_user', 'my_db_password'); + +You can access it through http://YOUR\_SERVER/PATH\_TO\_CLOUDINARY\_PHP/samples/PhotoAlbum/list.php + +Another option is available if you are using PHP 5.4 or higher. + +First install the library: + +```bash +php composer.phar dump-autoload --optimize +``` + +Then run the basic sample: + +```bash +php -S localhost:8001 -t samples/PhotoAlbum +``` + +Then you can simply browse to: [http://localhost:8001/list.php](http://localhost:8001/list.php) + +## Photo Album Cake + +See the [Cloudinary CakePHP project](https://github.com/cloudinary/cloudinary_cake_php/tree/master/samples). diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/.gitignore b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/.gitignore new file mode 100644 index 0000000..edd8de6 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/.gitignore @@ -0,0 +1 @@ +settings.php diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/basic.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/basic.php new file mode 100644 index 0000000..56fa683 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/basic.php @@ -0,0 +1,196 @@ + getcwd() . DIRECTORY_SEPARATOR . 'pizza.jpg', + 'lake' => getcwd() . DIRECTORY_SEPARATOR . 'lake.jpg', + 'couple' => 'http://res.cloudinary.com/demo/image/upload/couple.jpg', +); + + +$default_upload_options = array('tags' => 'basic_sample'); +$eager_params = array('width' => 200, 'height' => 150, 'crop' => 'scale'); +$files = array(); + + +/** + * This function, when called uploads all files into your Cloudinary storage and saves the + * metadata to the $files array. + */ +function do_uploads() +{ + global $files, $sample_paths, $default_upload_options, $eager_params; + + # public_id will be generated on Cloudinary's backend. + $files['unnamed_local'] = \Cloudinary\Uploader::upload($sample_paths['pizza'], $default_upload_options); + + # Same image, uploaded with a public_id + $files['named_local'] = \Cloudinary\Uploader::upload( + $sample_paths['pizza'], + array_merge( + $default_upload_options, + array('public_id' => 'custom_name') + ) + ); + + # Eager transformations are applied as soon as the file is uploaded, instead of waiting + # for a user to request them. + $files['eager'] = \Cloudinary\Uploader::upload( + $sample_paths['lake'], + array_merge( + $default_upload_options, + array( + 'public_id' => 'eager_custom_name', + 'eager' => $eager_params, + ) + ) + ); + + # In the two following examples, the file is fetched from a remote URL and stored in Cloudinary. + # This allows you to apply the same transformations, and serve those using Cloudinary's CDN layer. + $files['remote'] = \Cloudinary\Uploader::upload( + $sample_paths['couple'], + $default_upload_options + ); + + $files['remote_trans'] = \Cloudinary\Uploader::upload( + $sample_paths['couple'], + array_merge( + $default_upload_options, + array( + 'width' => 500, + 'height' => 500, + 'crop' => 'fit', + 'effect' => 'saturation:-70', + ) + ) + ); +} + +/** + * Output an image in HTML along with provided caption and public_id + * + * @param $img + * @param array $options + * @param string $caption + */ +function show_image($img, $options = array(), $caption = '') +{ + $options['format'] = $img['format']; + $transformation_url = cloudinary_url($img['public_id'], $options); + + echo '
'; + echo '
' . $caption . '
'; + echo '' . cl_image_tag($img['public_id'], $options) . ''; + echo '
' . $img['public_id'] . '
'; + + echo ''; + echo '
'; +} + +?> + + + + Cloudinary - Basic PHP Sample + + + + +

Cloudinary - Basic PHP Sample

+

Uploading ...

+ +

... Done uploading!

+ + 200, 'height' => 150, 'crop' => 'fill'), + 'Local file, Fill 200x150' + ); + + show_image( + $files['named_local'], + array('width' => 200, 'height' => 150, 'crop' => 'fit'), + 'Local file, custom public ID, Fit into 200x150' + ); + + show_image( + $files['eager'], + $eager_params, + 'Local file, Eager trasnformation of scaling to 200x150' + ); + + show_image( + $files['remote'], + array('width' => 200, 'height' => 150, 'crop' => 'thumb', 'gravity' => 'faces'), + 'Uploaded remote image, Face detection based 200x150 thumbnail' + ); + + show_image( + $files['remote_trans'], + array('width' => 200, + 'height' => 150, + 'crop' => 'fill', + 'gravity' => 'face', + 'radius' => 10, + 'effect' => 'sepia' + ), + 'Uploaded remote image, Fill 200x150, round corners, apply the sepia effect' + ); +?> + + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/lake.jpg b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/samples/basic/lake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..062a217183742c9689584ef67a388bf4447abbca GIT binary patch literal 53696 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�OP{)~5F>O(?TX=V{ z*mdlEu@3x0mgcg{EYPfSn2DH4CcQh52<}ec0gUfAshX-;8YPjpxJ&o@;AhRwG>r&2 zyJVbMv&SV=wGt&!mtD+{a?U`r5=Q+^_uklxdbVg;qnM!}ja_WL$F=~cX{sVdib%)e zuqqUQ1&34Ld`C56z$K>B_=?w)Vh2v&t~t>56C|J}gcofj>KlT${lD7*Rq19)A~H6^ z!p+~l2B@jiBxnh5mTMw*Sg!i{Wit(hO+sW zIH}@Em`Y(c*BIH{-pYLj#E)!exddjbi6|gca?;gD7}3{rjs9AC8hpMA8hUXJEC*ETr^gP#I{#6N^hCrYAZA3N_S>~>CtQ# zO|AhYuiP;H*wCmmVLoA3lGJpkD31&Yq-o-ovj`iv2}JT=jbO zIgFhu!0Zm&;!7^&)K1$LcTz^8KwTo*zWAEx=i=7SRY3J(NWoXRW1$r3Bh!APrG^?g zT$J>Tw7kHi26ac+k1K<*7vA`oSXErckjApJs0zuoy~k7Q(-JjVUZ##2rilz`eReww z?`8(g_roSVq(*S{3p5R)(-(HI4y@2^u~sKbci7tg_>#+V+WIM5nLjo+HgP*@45zPA z`}O{KVpft0c_NZHmr)lAKTF>Ue8x!_N2S^*fFPh6y^ol|Pjm@O(j{rB{!ApXxK|?f z<`%Zzr+;iWG|`4FbzA*+U9aB}qCi2Co}OVUT!@|S#Ce0Y{{Wv}xNRoq0`oyMgo}e8 zhQq!80OjzluVAK1y+m>;`HGnW>=RFkiS#!g*A2ZiE`v;x2S?U5MpTeLnd{rn0Yy3j-be_ z*D*)}x43KA{@5O}qO0T`T(am;yRC>@?e^>XoH~n2n2nQB*J-0^p4D#D|>*MM{?QY+$2g{@=fa?R23#cZ+nYI_(&-r2cPnVHQZ!;{qJZR#< z_uj;H`{38Hqis>gNZF?6R3vKG7q+GV_37<~Z2~NRi8Sh4N-ls$wjcaiG({QlDYleL zgMdVJhQIvMN}}fBg}ZeF8ZSdUY?l>O@be)a09L`TVh=)mu#+`oR9-62!wF!gcLVub z0M)}cB*`2LOih7j7F%}eZ+t5$r)_B*j@7PO#Fu43zg@cfoMo}O>Zq;B$&!!+8f8;= zzV{c{{+MD(gt5N>D?!x0Fq@#YuZQ%=l4?~}E-K(h>}25J+zC9`CkhvsVHUyqb=KQ!(muJsu2|WM!>O11E6fHGSkEQn8u*BY}GLM$6%jVG`0bC2&{r>=w z7%-O^Au`3v4I=*lmo#!_A3p;|(Mo|BjgGFPZlk#Sj7o*uP}mN*hT-b!TB%yxplag0 zkg%~<0FpH>?LZ@&V*9Hlgr{9l=@kY)wTQ^KKiG*&9F zdwyU+#>opsd|R@Cz~2kbS;X|&27D_hrOjz-BA^JMh$W1M(b?NT za~>4S@+`tRrizIz6v4F0E(kl1Lu+~rR$!)HJj^pn%+4B$T(c~ymYRW4%yKmF5{9c# z-r<=Ll zk~L2WJmw^|!jB2q>OOePej9ut&v=5O4m#rMBPR{NGI_MhqH2v7xLC&IcuxBRryqV- zih7tHo~9V*iN&2HP|Cy99gZ=t@h_#KZZXJ zE3zEREY5fXik5u2h+M`hxACW2fQm|;jfSnqTjS>bGU6(n`kFc#8hNt19JGd|61AjR z7!7hs)2LDC1+hEubK=htd^M(*BWiOkHBvN@!0_p1nXCiuH4(Q=QO#dMaFup_>|fUj z=55m$r^649G<;db>BBWyZAArJLKRk3w4C+1aKo^$+uIuVH*Jl^3}a%srPyJU*9kJ< zLnabr!>nSw!Dd__%YjU|Ns|n*lX-%Sp14Vq0vSDUlO`Qw5#_7tGi&3bOOC|);3b!~8m_N`h66QTu2qi6!AaZ9^!LKfDk-)YH#sDX=i&`}Jo(Ji zsWj2T%PD2Bj94mr*LanCHERIP6);2wbv7vlS&FN}5MPR3_EfA<_ zOzW)t%!N;VR2u8r^1M0Z|d*abu9CFml8p>QOYLa>oEwLVClkbR53Cy|K zJbA2;S&}%hu*-OusuG<7CgV@T1exorzSvr6RME* zy}V%Tck6?F6ulA+!_dPdbqgv=tOH-^H}7j@f$n{<^eI^-D!S`bxZW~YvA*~22sZDBVtJJrYL(_>aFSO(kQY!TxnhQ_a1&&3a+8#s#r{7 z2j~Dd7xn)54tgmh(JPHm2JsaZ2h#qy3w@36LMm%soeXp`>W@%;mc%u>YBxWo8u{ry zU22+1lwY88z53tphU9u!K!s?_okLNzmwWC<>xV092QlerNxGYsMcb!q^u<@`$!s33 zqH3np8KqDE0N5}7_~cV4k4nM<{W3bU z_UVGCXlnpy%S_4^`Y(I`0Bk&IzFmbvr0m+RvN#G9o$qfi=Z0jcmq05qdv(&bzoq-( zyXYL9j{g7+on4<(i3qlrzT?XF>-u2YB;;y{I7j~gPTn25{`iVD8HV?n%G+f!5CQeJ z3!s{+IwqHys&lj;0z!GV{{Xf%0;r~~pe50)EOiTR2;SIjm=sjl4O&*?YaROfW3|wp zWK67G90RBeYV`NVB1qd(EzgzuuKQ!G!%ZVJrb|ZFIzo(zo z?`^llHd94Zl~ko-68r`ENRgl-%93jRwq>^AVyz>Qa?AyTdLQgD=tf*pvw~hX zH`$bYCHPyMvOXHP432|5OT%#|g&O|Z)0Gn|+9I0>g3jzrPuaP4dXA}Hn&gJ9!o-fHN6Csjl z76~b1Ze(&s0;r9?a~0X z@6*#3jv(W18>ODBD=kx+Ra3^#S5240&NS!&Cz{(VVAzW>1o>jBq=afwmWyUlno;LD zRVHbd%4MXig=c}vkXaa98y&{jk&Udlq5L`GjvUSCnwKQa=;{^*Iw=v?n@*i{Fa+O8 zBwTH43|!-wG4jI7KV1x;*hJDs2VL<-bo>ZlrqE8DDSr~ed zHx@Xw&(zr80<*36Y+DvIa%RZ-Gm8HJfqx9@A(A+T$y- zt`cO!EKAU@D}AuDC$17?z=m8T%ZFISc>>J1Nt4$C88+*L8F1?uk04o>*9kIULoO0! zIAx4iFta8(teggA!xfeA(ZXh(>^lL}oGkd`k10As!Am5RVy%Scb@Ao&tu%*G=&66G z`C^5e%~74oW~yMJLDCP{^*D=DJwzo;CPsS?Mf4Wx zar0hhnDa}FdOnZD@fIjtyE2Y4&$C3ylPb+JsUf5igo34#+REP7w%t6jL5-%&1k0B} zJlvHI?k{B>f%3W9=Ngy9dJ6o)ujVGqWTwgyQ=LwTbt@n~A=|%EiZ*S;)WVVsqan)L z3NXV`b$OWVOCG&@W0M_ONv-XbSSja8rIx1aCa#v>S4$ijNtLwRq~@e(^(hlSRZzy) z+kT{A+T6aPI1JSh%M~v+SOlbv{*KLR248u_+RU^Sk4T}{j6x^#R1U1J_nCOhY z$c)Uj*-m3sl-FFWdeLO;r?=bF*9}NQ<;zZs;w*KW^c|1sizaIvHStzSGmn~dx|S9J zfYeW&&+^4>RiMivSC9sAb=u~@+z;I0GRx2yD^)yNb&|xbfb+vuN<_T75}_8>+%UE8 zhG~PzG?C1*6;?V}li?TGi~HhFDWj>DNuw~kvXWN&>R!8UFVhpMHyxt?0PyXhT#f7H zERjz#YL8JMi-jdu(*FRz+ZRmJE}@GyWlK#A0@0Q}5Nr+oN4_e2F~f6HQNyf8)Xe(I zGMj;8w_AhL-x9gTVzKhu!WgL+jMx#|+xlQiR;au*wn%3+5;V(ERaEulg3McGVQcN_ z_U(-7wvH+0sFD~gBa}#_o2sF)xW7}@-)u zL~l^Uk@aa%Jo|OreX+Rxi6_htD5asAqDQDhptEUP^*u>GLmo+3Q@YBUgtsJLm8d>3%8CoL4 zNhxh7&woz1?MtDTQ)zh6Y1Hg?H{09S?}aq$6T{1kOkineN7Sr6x5E*~4AIRCG;#vh zLWHf!9n|+W0|}`1H+>IQ*M_Gw6RIK*JTV(8+sfVW1wzL0YP^Kn=onmI&wie`8n67l zLNh~X$=17&$IRaU0I%B#sF5uhM^#Bqv8k_hJq_*Y-^&eN(>9u_Ihb-5HhANUnX1jc z%)O84wgs+{%^Z|zDOiaCRv-sm&Af)=15Q?*PkA*?G1Fw8|R#VJjSk@w;KQSN! zs|k!)xB>$lBg_!!|li=^@DGltxrXxH`Zh+kfiMv9uLt5!l`<}_xW1eW1$E*!mpziZ<9 z-v?{5ocA%|m8gPj-aM`<+segOc%5$|#yWzG2tCNdzXS5f^Nt}L30@$MAyV}%CV;_^ zC7lre0OU44g8~rwe36{>@hDtLz?@yc*?w7`S5Zp^9dQpwS5Gyy61s-KhDOu9i0Ohj zH!aL_+`>8v-0Do0EZXcUa|f9qs&TL-fU_Q>QP^J_Z}_vV%5$C$$?GzAil9^GGUanI zVx~4g4TAI}5%qZzJL1#uQlo}`B>Wqt;Oyd*OD0uLw6e!54q~$2(?{KHdtc7urXDd| z+6t7MY$M=D!Mgtdhx}bxn^tBtm9WV`A%wuJq&qM#aC=w_8~4V}K9C{exv&+jXLxx@OlP&^jZgImVIufTWXPH#fkv8I2`Em()0fSfit|qAWf;(eJ7_zA(e&3+IPe<=8h>P zFJ*CKmQ?G}^f8khFN*vePnA?=)ERX&#(6904P`r^x->)cUlPW6<5MK85fojR^aIZo z{E(*aNKeNrO18l`uQdJ_kW|$v9PJunTiB9&k8Zev;Kj^%sTzFJ9KtS03ak@CviaWE z`{7iHCTqrvTbWYAa`2_7OUe|n2VxTYj;DM}ai0<`3{ufi%o=u0GCH?~LFxhX$ISVj zTFTs|(&-;Z;rQQ;D(~0hd0mHJOlPoh#F=(!99bnRLm$k;15?EM zm|X1MEzQrCIAK02{j;`hH(raM#oEev+cB-6hYA?+g^}#kL0MbE`jN!c@+9(H6U=STZLeStTMsN_ua%^hg=Alv za@PUJV`~du_>!9B+a-~uMgAO>s&eB!V@*{^vpkUtk{CHBSp$0$exByocP-22hdWAG za^nGD06`bj*4w91b9?WwIBzWC2q3&DqnbJbV)4wlo=HN0Hlqs1+F~~Ci2QgqA_yaoJMqqW$^|BYZJFZF=UE` zAw$eM03h(lenId9`d*5G0bbY6jXsI#_!4 z2H1&jL$mZGz>%PO# z^uPjc$!a+_hcQQrJDoB{%VtZHV8D*w>L1e#=aWeUAVU)J$}4CmQ6l7$E!1v5Omd>0 zLqQ)kkkq1;5)P$EH&^uT39$zd`LvAGF+(iUGoqnTKO!4 zNvS4OcaKt|u(0e;>J7W#T4t=glQe4}Wi~eqH^SheiXKx{u|UH}JiS4Mw*LToVT$B2 zL}Q*vgciP}7SwIfZ@>4#rn?cKDvHf9>5@ZFE%#DxzwLk`s;eZep314#fLBkAksjx=== zMk5NcvPWfg1gTO<)qEo@68zDcRaIn&1&nyL6Ta)^?}v?DOp^Sh#nb{!Z*nw|xY%?Z zkL!)c*;N>#7HT;@VYzyxXV@EfLAKlf08AH2mg0A(Y{gTHTId{KV|QAaBmER=+#ca9;w zi4MoM<8Ln5YHX&OymDwNDk*3$_pnlMLrwb@3`sL z89j$cip%NSoy%DXP>gk;@Q+RZ0Or_3QN2w>^G_leNCifqb_Z|egQcY8hn98$UG*r5 z#egHIKduLwXiy?YOe3<`u(>R6g_NjUw#OtwDbfprS zP+KrDyfIo$2(~Q1jmST7wg|1NprgwdO+je|ij+gCcIj@n9#|f`GOZB>5HL}F3k`yx z{{X~}qrL%^W~k=L;fg^nlN&vi_UZ>?=ZbPr=n~%BGqsXULiX5$?}r!glbDZvchoJl zyYG%2$-NEw1 z(;jLomKy&6HN}A=r{4~kqA@c@8InVA*0BU^LH%)zTK*MO@iESlgN5?5Q(q+MH-Z(B zfJ1BV(Qa;W^k*G$w;4ge8NDwOWpL!xd9*^4FNPzkQ5aiIGh68f_EF}1v5S9&tjOhm z8uEyD(ODd{tz-VQHvPcG$NWiWRnz=ct)Z&b9X%}^F;f8Fl#ONn?8o%QqP`%L(Tdk) z($me%g^H?=7;TNe^^c`K2)iYo@oV2RW;O0fXM4x|W10c(H4ob# zME?MUR?8#HYRx?i@@92vWv#0V_;9Fi1Z9tQxoZzAoP4yEYH1L|P0M)F+SJ&!`kzye zpnt;teMOW}y>@-X4^IunH4a<}V>FVo25_TxBFa4hI9xJZ?0VHB>M(HJ^ALn}Hp0rC zM0W>#B3lT{cLN@lHmv2yoe@H24t0I-Jw&Hg=Hs?GSt^Z0dEhxFzCDa;_IP<8ppAI; ztO?BD9p>$dkU=G|gC+;&`QdAK8(>`;uc6&|;bVL=tf|~%k1)0ItSJ>=iu^@44)D@e z#qy4?P_fMgK)9MC^`iE^kb3nO$IskVQBT91VI28WI?)A=dU)ltvIhb{q;z1Uk@v>0 z@%k*sFw1iKEV8aHW3#cOc|w`3Ychg2E9ZT$j5=N#;u@dCtmKJ6-WjJrO^)6DJKG;S z{{W?uZzUz9dmauY!pnX`#uZ#MnpbBsQNsw1lT|z%!tt)Qxruy7NG8YA8Z3Vh=_{ym zy1d<$BB*GrOWS5@2p03Us^g~P%*oYN{jRUB&GIW){$VZPgb-k2s_kBCieB{)W| zf(Z{QXobO3ZP`x!0`1z^^Kwr-qs2WQhB!tt>ejTd3ueBLPwun&e+LcGO4M}a_D28O)DD2W_Z;Z9_09nn{B<0#MoaC zd`{w8yz7cuqcfqGEvN_~sHBa~kmxPg++O#w>4^E-oaMqCrlIC&WY+04c4n|TK?7#B z{rcmkNn4^(x3P@JFjbN1<7womV#zelz}s_nzi-zA$(dBr&e2BH<$>BlmjP|q_rL4w zfO9HZ%)lv%Fp|B45cW~ze76?F-wkCm!whL(2z7PYO4~u|2=nzG*n@&>R<<8OM3O}% zKyV$%e-eGu6FJsc6y#wp`+91DdfU~kl4 zr){v~{xa$yt4Hj4n&(*l? zfMI569nayF?Bk)$_Wys%S6I5rV0snp84LbpNO->AfOeC;sg z>5ExX8UFw{HzXVx@_d&DT~R3Mb8G&+uoX)!B%=Jbk5IX95|4eZ4g+jw8X%~{NmnFo zPFi5gt&Z%%);2%BB-ffMi@kw1J|GCU^)|s!$Wu!!aVcPQb1Xmu*Yq3UI>ypLk|m97 zbtTTg3;x*F6%ZQQ&%_bRggV`mLl8(EP5iwM0n27&s%d4XG6vK&f=-VyZ_wM%1~f2- z5=&U=9ERWpxdPVf>u#7DtkgpyEh+Gp1p!X2+T*S!;q+C<*oLlKF!`#crx&m$)=}^O z0KM=u)l~Jt`4GqglG@#_K(|f3w(Ek;BvZ*ewGXBA0@1`ifKPk&xWIBn3`in~OUtpl zGJ>i{^~O=BqD~I>H5=2yZBEX}e!XX9z88`uElz6^sS?O8G=;da*j)KyB1megM3o9- z5vVN2B`4Sw>*xAn$H96s*{Y>zWT=&FueF)HJqNbi;?Rw~n%X66>7OTy<{33bD+HJY zu&_OkkQV*%SLOU9mKK~3!)J)@I+ed|`W?Kmq@h}Bl9Nay zMRGI)aa*01NF7_wLTI36Ux4&#Iv{TdrBFCj;H;@hcY;WK6?TEHz z{Txn2%_NNtn5wS(4ZH2v1T8$GWrATGM%tZJ`F>D(dSFU;#B++NBaE}f;eM7jur}&( z=qi>a>VC%9?dt^VOuAkeDu3I@F*%S(?glP zPt4Q6P4231Vg-%vY=5Vzz;u;B%NhAp*Q@~givn-Zf%n2P$I&oah*Z-#A)=66ZQLHW z!{zeoJi(eeeKhNF8*?qFA0;(kO!sh+;uMY!$wdDLs@~85%WRHX{3j)ONxyWhG=UVg-)( zTsk3E14~#PujFyvyek<2>_hvEb`BL05U`K9)bG6AG~`iDZ)ZKsq+oBlNx* zhDM55*?ekF!rR{k&bz%tY;=*U(O7S7@rEV1cDh`fiE@1EmQTc`s*ZL#euh>BhxPm8 zX#W5hG_pg*xn6&kvNz6Uw*-rZ2;aTc*BD#P0C=7!eGGLMVaJ)b6L7!% zKbp*Iv{s;e1XP<+F)@_G)`r?j%mUiNHb~x8c76AmZ$j% zd0>$uxEeK%sCTzsy+FkpJkqXgvRtlbde|avaySK=CIEtO*4F-55|XYY(jqAwa=_e` zzv+z!;6)tS$HYvEo}P4yUVfnR4M9Tqjfa^7Y-hEFBdGir1!M!E+iYLH4bjprV%g14 z6AYDTRLEUehi=wU+?(x%#J)&*I#zwrE@ej*L^SeMLbJ|TMHz4z%8RfAy@y{c4VYI2 zjqG>F$lNW)kN*H!aNE;!1Q|_jQ*$Sh@;p-!u1QJ!)*q)#eJ>?v&BT%+x;lcbZlLtX zwc*82XPM>Xa8>pyT84Kdp15qj8?ha5t&Z6BlSuL0TkQ6{aLK+r@sK>Q&6}ygQb2HH zrc8D^hC{Ky?A{V^HAPfZ@U+v&vBrYz%xnO`PhUKE z{zsq2;}80K7(6SfPyP~FpAzO7wLqw;sw=jYSk}c>{Rd&^fTj=%f)?Od5cdq%zkCj1 z<%rt*j=+BSCKzpJAQC(O09<)8$tgQ$sTe4#NO4-l`6ZK4EY7yQ`fq{YNmUj(D&(|e zolvcg*+Qi{7E}4=$vE1%j;9I@$yqNTQIjS1mnd%W$N{h9{yvREf zgYvx3Hp=4V(q|JY^pF5l5_^!gAMoIJSne+vzhSFleX#IVSjz-K({7t!HWYwrcxNfB znp&wMiYkeav%5(p*x%~C?mt2?PE3n5%XomgMk=6N6DV-nhhj+noA<@>Sb|tFR0i6I z)A#R(sp#6VBxsdcm%lIp=e4jJQq>CMT@~ml;bAnKv!kg8&&&J$jyX?S&{JMiR*K<8 z$kaNVSW=cSPx)v88}l3zN3Q*FJp~?7SuZMDT6rTLCMc|fS5C(g{1R`lNf9kt@_@n> z=8}G$_V)C_RFRLFM+jX>HzM~Qe)uLyXldm!Q$bFVuZ4q;5&L2-W|nB3;HhFdxOUR2 zE!127UkKG`q%l8am15G$(X*LdRdwmtV0&0$xoYWQWSR(7Cbr5upXxnvTc0p_8vMe| zZubBV*Z$Z7NtRS*r+av=%-8XG?b`^`Em|zem`EArsFRq)8#TcDdi21#j%xNW$^nJN z{5K}|{{Wj}0zPa~yw!4@O4dYXCsDUhJ7L)B4a&(QMo71WdH(?K0jd&R1+3GqvmA=u z{;}7mL)h((RMkyWE4xE9VnL)S0Dx>Sz5|UZ*lAjqx`W_l(j0#w`{SCY4)LVR5o7e& zfJd$aB$#1~Tgr*djdY6wE^XZZ0B-nxrj|u0%QF}>1lZ~-HFf_0Y&8ji9wQw>a}VLj zP+VX7?_q;lsUca?1YpeCbd#|ou>J6=#_QPJ)59LIsXl_DF}oZ0Hub~~VN&x>k<-S( zQo)VME7xz^6Et;HwY3_XTM`+IGgw?6$IKD;!ZVenp?D{Ym8#}PbRIGW_TOvu>xR`E zl4{8KX-sI7B1uS*IFd=4%C5u_q<7lPf8fEgW>HejB_l%4FQw!`a(1&^bo8*pnY@ij zJgTi6)X{~NNwH$2_-}rVzT>s+h=dv+bK`&$V$sI0O>O33yDn38Nqoxi5| zHD;%n8Cs1g$r@KmlA_~cRGW{qkk(porK>^wUg5!CE# zFdeN6DW>{8CSestIpn)1;gALQ2Hh|Gu^m>bkgv?3K_p?muNR1swYEJlZ1kpR9;zrz z5X=Il*I?J`KSTSBa*mdwc;cg_jc1hV(vgtF+k5-tDA%EFr?D{^XL+hxc3m%^FjKnu zHT?$Ocui#Rs7OSGnV109@ZYz7xZsvGZ4B~U5NC|veYgJJm>#}qDn!x2m#d&)%CdbZ zJ6QF$74OkrX)Q8JuA*2eUI8HH5WLk!x+uR>*5>x<(#HY8LswZ685JXSy8sF8{r>ym zG^KzHrYK(8O9mx+_2172P)|2Femsd71RXX3y!v6&BPriw6vn0sgHE(TS%sxC8-s6t z*j(_n(W*s85E1y2X%BPQ z+~8f4m3@s+$(So7XzZXV<+~e;{{W`Pu|K9b-#cL)TvW?D9kd-b9!Gm$?SbklT2&Cn z^2!tG0qt+L8Fs3aYBcc)t+=^nW%KLT1XisS@iUMG{3m1XFocN6BIEOk>8tbE~iewbnk{ROHC&?ki}c_>^wwvzB@>ghq8tn62xz}mIF$4(iwGX z2yR$zPnHUzlfc}ymDPY2Bl_bb6LeBRSmK&?R2Kj#14%#M`QwOEhQIMCRteQz3#tn+ zBE&E|bin+GK3$JF$x(8{rTmUM(lqZAO)H61izV)iKb`R49L`o6iinCXx=iR zy>3Y#akorFLseTrES!`foeXlVzN9@zw%DJbonxHyC6+V?WJM02r&0F7wRE&qvl6Qt zB!Cd?nqD*OZSC*26~gv`MMkQg3WW_!k}Im}eMEg;m^&<^=Vi5(hGbQzRI;%kU9aWe zY&Tn%*JZV?CXZZ7cak%3LGO;`_0LB^m_Uw1bqJ`@-r>c;1o`yBM^9#HxafUrGYZVg zY|2K8Nf0M6bXO{%bQ>F3TzALSUkAl+{Ur`*nb$Q{US>s1hW-@WNL3w$hCWu#A{lN$ zMpkI#`Lz?WXz?MtEwz2Rdmi}S{{X|Tb6J>hth5y}104}T2n%g0z?*vG)bJ*jN`B8j z%#Fg=qh{8Om$<_mz*@`Db->ZJ(`E&I4gt-xAwx$|Q_FWqBWEa^vj8qY^~bSk9$7Lb zx)FV_%|$|}vYqji@h=|J(D7A0WgUDoQhc*PBx;7`t|S|sh&?rS++cj4j-agL3cAIt z3zfAjdg5Y965mRN7TA+*{I8Bx=Hlf|?#jO(BUX{6=2@j31O|HQg@!)B+>_`4+~S4B zxx;4@MIAUXQd7Av&$@>;>uguEeBw&#mzrrq&h24up;Vo%=s$c%&m_|}nWk$mP3$lI zamD2M&UYB}cliDig-TtETFEDKA#F&c?`>GW`j`P;9PqH zgsN(c>Q!;n-*7PJFsbn=WBS|I3fO2=(hf-q06KQM{`laKGJtGYeMI|tVfdaI5a}d8 zWwpoahS^j(+it|*fa?=rz#v<7?}Z0JXxI|xeO9*EY(GW%i5KwiVTNQ@u`Q`bPPf9h z^e|J^BxIJ93vNMOt%hGPSpkJxmPq=M05A zQ+h(Smt=P=9a3}TDmUs*9jdLS%5vjX0>;|A8iuNa|2q#7W%w`C#(nq!k`pW7Rc+Lh?v~3ArpbBXP09+Oj6s5zxv8{xG4o z>;BjpSR`#aWD@jS19Dj5`6yi!{t#_HSl83e_~&b7>cA&nWy1tr#-JP>hW^*Xi^){b zu_=gwZ6e!u7aed%%SQ4vnzSiz^lGv4zxBsuo8|)2s;FD|E)CnSLHvdTOgfP+YVC<%rmXr#qk>!{+?b_$c=dJ$$dd7SsjqPm!_h>wt!L zOw_T*$?yagWb(gH*4Fah1Mw3pseo>D_47Y`R!@5Ex4^ZkwJm;o9bO}Kv1^XF5;ah%7NQCgbi8|x z{jro0xZcU=>qM}W=LRGNV0I)}TK?9;A&cf8<*Di#Sk;-?BReS@lW%NAtuv`=sLK#n zaD=cwuS^pKYS70YCP-vy5QC=oQMe%AzfV4c4wiug8w5r-`KeZ50n(|<)U3Wj#9)}` zjyjYwNcuy9%gerz+yHtDU~HnImQ15ph}Fj9R=$LJkbC<2VXBpo*0_{7Vu0x1r(^AG zB#~I_VO2TQ)DYCt)4whOCDJ`%mDJoYDsBk1iNl#iL=&=1h8js!n8!F>Usq-CeYzWu zTtl{8)dghKB#by#4Im0GHudztbtC2KT9h@Oorp*CIAp7Sg_XB#wr7=*v~yD=e7T@3 z;6H?}p?d&&Z@BGqh}t^ZspfcuF$9q6<;e<>eXarPW9V@W4q+sf5y4dhO&V!HP1V=W zOCFxx4kx7fq^D_mVTj_Up@Cy;(xn)< z*0Cw+>`jgl$Tp<5sADXp)F!B_V$s|-fOl_DdSY6ZY8u*Ar-q4QsSI>T(*9c;iyeW! z7&RGN%Ia2Np_E3?;agu}Wxck?9CGJmy1?BL4tY$6vMrlYWEAQbUq7(ajKK zZepLqUfnjD$)<)6D9tP$rI02I%I+ZQ9-Nh|)^86LR7}TTt!pJkA=$q2xlcOHm=TY=qlSe0b(F zLPUJ_bR+W{=^jAfg{Kijs_i2yAscK*ex6ut(8ACKrg;$cMwUBV_vw5Mg;66zWtiD;V3P{n#G1D6t zO*aI07w$0&OHxY0kkcAi`-A@gas0ei`{02jy0jxR)Dxtx)*zoeJbpVuN(t$j-^0En z%5q)^q@&EUKl7~8ODuLSP_q(7!~S0k@uwJNwVXdyPnK0{sCxwu5zs~V2KKl2#!XQ2 zQAS#BbRcX9Hy*b*Zk|;(eQ_|cD)zoQUzI)_PG{l4%aaQJ53YZjkxa*4ri{y_eZU6i zt|locsGdH3JQ@h_hDboU^zZxP5o#6{I_JKy3Dla0ptqJ4Nt@HU{v1rM&PLq^{WtRR z$16!4Dk!m0NJBI-)1x?IqTMVlzrGHYX<}d*Wac#e7bYJW)pA{K!@eETK~}ptb7D_GKlO&u$qYcy znyv0|LknEoHv9YgU^Wzm$cU;IGo`x!0PhJbNeZ`rGi)L?WF(6aK(IT3=e`M18NZ#a zw!`g=5NIS3sfb2*Yuea$p+hiel&RaNOX0p!)oJw{H%#%b2A zz8b1}Zg7|b3m3kYw}g@Q!!9vlrqMH*R8i%znX0CYDzLb?E&5`&#C%;Fz+uZ{Rs<8M z9m&RhnO9ZTR5Z0!Ei|s$i#I|%{{W^LR+-923Mgi7>`nK=OFQZ##{%t=RPq@Ck+iF7 z4oKXc`+f1rX{Ba&b<&S_+;4^DnS9*RW>XwQog}aBM{oDS<({z2@Y2x9DP1A;fT{;e z-_Ng1MK)EWf*_%9!>Em2q*WFHtQT&$^))uPypf_Ciz$#0!rcxF(^D~SbcG|)v`M|U z`gYjhYN}%dk&arSX3_zdr(NysgV~mm+PLCKh*b(VYw7~`?mWKu3ZcwPqMoF?*>5Y4 zF2IlZz7d$u4Jr9^7%p_`SkF&Gh)Rhho=qd_(n>0>*8Z4TNum>yQ@NK(+j~z=onkl3BbQ#sG~b_Oa>f*9N52^G`3#LngcG zLPuL+xg)2N7v+|_ZKw-a<3$BpVrMM0@yH`t7=#6rs@z|G*53zIW%3Z!EjW1kE}P!= z+E-vt-bG1h>kTtSIxmdV%x=ehlv}tP-wdsKDxs?( z;LDP$FG`iEk~v{ZG<_QStO@rPIP?ueFkhL7O2Ca`+FXD37?*0uZJ4cklRPrQe0f|$#!1Vjy?S@urohq);$U(3rY=4&cJ2a-DsiTzBv4`cx zmORZ!!rKe>w@#MCK#s1SG%!?5&@zijsIs5_!*8}0>_-v$kDHBJXMSEb%&DL?bnz@8+{sQP8kcSU#CPq1Yav48Nh}*n9YiZBKYji1_FD|nLefm) zH;zKXO^)Bt`(g6&$xht9R8;|qj51qQzb);s!lu~LQGcQtX_;#vWs<{~7>!#V!}(%a zD@{!}q!iSv40@V$=w$x@$xma5_Ki(s6EjT^3_Lc}E)M(S(aQ0%&jQ4u3A}`cJN>PV zTM=|3T%Dv*QAV|o7$5e^ZoaqfJw^tsNtJ@7Fjm;BIAQN^EJ#6^%^b!^s^nd^DB3{( z0PFkUhRi3B6e!U#+{{l?>*?w+)-qb8MLcte)n8n4MsK;ezuyhJA&eD}waHhFPS?SC zzGEtlH3H;)D{f*Rz5o>uDkQN(9Dx4-+*R<8)3zAP_D3d&Gl!AlR!xWnZ+*Mr>eHfh zs4CpK6l$>3)B552X##FmikQXNbp(0fN$aP19L*1ap4}~upp454yst9ZSIoChE}ocL z$e@WNW;%Bu_36I&ex4VaDFQN;E2KA(!YSsbr>qM#Gfb*9oA_>R*BHl3#m$N161Z?~ zoiFLO_$yUZh$DuW#uSZOmw#J%oC-|ZjL^)1m&6oo*57Z_4pKalM(ib(oz9TD&CT(Q zE0;Wzati?^^*@9gdtz#hIWlVo8NdXH&r*E-1^}WDMxqskWR^l(S+U>C(+@->c6iiA zlBZIj-1*?3G)Xv;cS$0Qi><;dpAVtOS!$b0F?P5YRReo<9-jCdO(~S3yA>K#=oZpF zaO7^na~&f}Mf_UEz~2vI(4{fR#%E`bvaQXBrSR;UimOR87&dSTzub@Mhp$psM6yCJ z&|AJ3sM4+#q#bQ`#u*EKV>-KsZ9>Gim!=)2l~yao31P0xb$Gn+)N`WE8#^&TqfdtW z;o4OQB+{<8C6Et0{@BROHX4-$R=_LxuH7&FaNSisHE@6b08=S8k|S&Tj)Y-~iAfPc zsirj~mInU-@MF>H(H@r44~%RMGhs;VlsaidDCto!AjV4-Ao&j0#A3ry1FKahATiuO zNB;oh>%Uw{OH5^334tnas|2r#Kg44DTTArY2|tili07{~v8;kNAsg_)U{AN{iym29 zBq4M#k~gzizb}2US9tH4r8T3{?5Y`#+E1Oly)iAJGSdRJR8l0&P$+9MZ?|6G-w})B zqLN9gMZOu(Q^z=D15p5VE9-+`Xc{tgq=&dx1mdR=GfIgy%wwwF*Z%;Xc$TK7ju}3s zR8e)`dt!}~M97VlYt*~`TysE?8G=Z~P@ToJpEK!!;HYJAvpvx4ta_4qVjnrqS*pbp zbx##H)m6(EW&@^!?||J5m6HDe#S)cdwWfW}nD!R(xy4gE%qr_Di`1zAT&N`3cIXF{ zu)@*HAtn`?I92=tMgvgw^}E@C_ic+@HJMG{4eeov*T&US~ zD+Sma6Kmm0QYu`TrHcHi5kS%bQ@G#0C9+JeOuVx+#pjhrQE?bQ%Mvh}Sedzu=!9Hs zP09ZNn_=2+UouW!qRKoru+k5F1UnHoF(c7YBQ@6Y1pw?1m+8|UdZ^n@zG`V2m$t7V zZ|{WEQcFCms-Z@bZ>4VApXZ30$Ec^QSlFzRp9@0FNh7V#Yn_e8Gk(FZVKU6pNbar- z+c63NRP*WmKYR}%(=#!Ut=h^H@`KnME}f}gn@={CkzDIlVR7Z!*1xU@dO99nns!$z zH)cK&x9{zZ7|YPPCmJB?DdSlrZd{s_YSpUydg7~_wPA3q;R!eTdi{ni^^usPDIt|% z`am0l`hQ$itK^P4f&`1C*+Saj`e7xfvyxT?6E=p`anLu2e*59or&XtxZ*4w_7nAo}l1u1wk&ER<5p=qOA>;2p|$Xy|DAZND8c4?h4tzHV=HN zidv%4nbnj54G;40oru&At;P?_=}jaCStFR-9$-cd&}@GD;5STKZGymqQb{_bQ0NN! zZ{pkPwhKq6p$w}mpXt;ub@C%_y~ZER9a(NvNPrMjqfU%q`T9afy07+DVYnvxx|8D(p3LREuf9`mAgZ+YFT< zWk_4o(8&;1LMMy>BPnAWcej}P_rz9Q(G*m}BUlA&RbR)^E1+iRZo?``n6p)SVimO&P!)@PeZk~x7!iW z$C^YMNL4AL)o`J%j!&5AcJspPWLc|q#O&mYhd=4^^y!9=%v4i6aE(x___wiLt$b*- zkj*vOBbUWOP>P;JGT&no-CNvr9^n13{{T3{IME;!%A)se*?h4JOHmCvYgnFG*Qry} z?THAZigfvjK4E1iZera?>4vKoY^IzDYY3&(AZYAGtPo%MdEhz%pjk5+HkILRkBdmy3-!S4oYyh}8E$s~ zsZ;HOR(jP&R#}*DvFJST>^ao@^k8eyBjweeu{3Tgj(f zECtTXds_}ve9EP!)34MG{I~CdWsVYolAcI|1A7kt0Bj2+6Ef-fsXBgPVT@r?qU$nv zl>Y4oatO*1HFH%pyEe?Er+$10?9MAWD1EX1Afg;4YP`k^OE+}W*r zA1q|dNYsOcgQ*1CIjj|#tmCrzZhLgW6#oE>8G{h|KMdcl{k<@n5ECno z2^=JWPOkp|mknj>IhIh)L+I2jJAX_!B!NwZLM+M;(|ZHj{{Zmeb4Nu@7*}^Lw-&hT z>2JOh6mwLgNl#BSkwM}u8WsRs5tTD)ACsNv*9tKllirHsiX@d8qj!%^gac92(*sLT zxA7ye2XtNTe%LQ4(MwFyRr45XDx;$6@4gLcgENMSN+{^6zstG*Ksz%#@eEqv(#Z{uRXmv@UUDXZ6h~M_XIkra(8N_tdm5EZ^qVj|m z(mQwWzA^;**fvK~B$SZ7?<$WRWNtzA?THvFxpjtVO1bE)4y{AIh9Tvltx3`0s%m)e zrI8xt$Oh#0!E*yviWgCdJP`}rk8{{z`7%oz9<0u!R2mV5hk=*?LG#2_q?)=pq?rb_ z2KE-P{&;?ZomA?YFm(WQpUA#v-^(72(PmjAMUp7Z^y&Kl0O9S0a&NNHf<&4lEf|`n zs^!JRDz~vD04zH7!s-!bQi_2iM$+s>w+EpB>@dRAbL3qSBsaQ-)zcH%FAZl|kyX;L z)2X|e1%PAP*SS49`Qs&h1-k4Op0iatMw57wz$Tp_i|>zAOEitiN%W}k7}Q?g{c&)j z;My8lIg;y~-*Q^R_QawJS~^xVktA_PeR>oF`kX%p>|SWkT?-qDS4guelic?7K8FJn zDpae6WYWg_?C0ALv@pp-QCM0}n^_xCz0~-LJ9*m!<))^xby(STnMcW%Tt`W@V}{PrEOK5PXK+FilNdD`=9Tn1Q)s zP5%J42TEC{bEasSn2jZcy$!tf?T1l|L}w`#ip;*Mno%W1E9kh;;#(m-Y;EoO;kK*N z;#avF9gh8Raj1?7X(gnU;x8Ob>`5RCU!d+zDtU!0bktB(m=XSDctXi`j@uirYxce; zG@|V>l9ZOtW)jA<2UXpOxYZ@>2c|2f>24}y)+5!jt(ykdx6D(4V;TIw?pN>M0SYPE zHN^@%WcZMqDLwHf`7tWJ5*cx$o*85kGNUAFs_~Mf+Tlt2l6}2!^d+jJmRAwFtiw#2 zd@riv_Zwc}aJpJpzruuOvO_A#s6%V1Q(@G1>Ts&xVB{*Qsz_0S%yh`6HfG#j;M{o~yWkkAT1w>k znHCbNEXQtP79B@>V5Jn~M-4$ME5oTI*I}uwS5fI}bn?FVY*TV6>E-4|;Vw6`25WR4 zU3%cP_9}0-P3BU=H9S>fjz-iix)#(2d-b*LfvQ(2l~x%NrKJEFSV?sv;^1H3^cV-nrk32Bj@8kr$c4MAwd)CJTny^p>B09;9Ab$qI* z>E@?_Kz%B0Wnt~_gyr@lNrhjf`bbLB)HzFdwL@!I_1^_k*BL3*8K!z(sx^-hzV`C- z#647ytm`V7B-gct?4#S)2W94_rqeQ^g;;_>1YrLFM5STPGL55DNPr(fB)TvPPwAwjjr;0Qo zw3*jaA6s7p7h)l%iWW^K;xZY0K4bn^cEo(EFqOm48!e600)JEIi7BFm*P)T)?7Nuf(0{#~Bx1I_$kyEsKgCiw})CWWU_>7hwb2Bs9h4k3^_r%^| zPPEYf0GOvug~^Uy-rjf^8We@)jt7+`Yb|> zkO<^blP{U-EstZ^>IhU!uScxOAkcKO4e#V|mu6IE(poaVTN`88_A!A{b-DZ)++Ozo z09U5nu+vP@)GUm2soZHlN%Zo^vFs^{Nb6*64kA}AwxHI(`{DXG5(Y+?MAo}o&)*)$ zuu+9U^$U@yyB{m{{jm6&II4;|mM#aW7xOswJ%TWFaA^z?iEG&fw*5Ms87q9Os_*${rBYNg^KnHW(!9W?+nvYU40o8$j?xmB@URWkd3xj6_5&Gcn#pqt zwh`o+agBg>Eik^D9<6Uqn46z1%jmM1saD2W(b1)_EJ+ylJ&cUXJZVrlW~98p5^U|L zGuq^zUgz||G`z$A0B&wujrQ0NOnV-}$awS>6*TfRfT87Ry_a`!=f6R}Q})8(Wuij_ zAV+xhGrrob`<~wT_C12dLvU2X8n--ZuqRiQ@P(<3fQks@0I!D5d-cb$>?<7x2;hq( zXG)D#Qb?+*+Z+D?u)?ysNmx8_L#dQ&XCw-uBZ_6s+nXC%rOGpmjU{55yf#2e`g z-`?jMtVs<$I>#6`)3e*y;SCHwr)LUWx!yd=6%Q-tbp%p~s zJ#y5!g=0Y03*g)+I6k%%5tE~np$P;6Nh5uL{{Y@Sk7Cj2jP&$GzGY2J=_JrCRI)G; z#{LNU{Y3RWjj;omvYF<0VA8y%Rv~n*)#Re)N#ppmZ%5Q)PgmRp@uz=U@}j!2}3W* zuQFH~>usEFKKOi6W+o8=#?J~h!h$>`fxq7#$FMBk#!{NTHnT+{5PT$|?}I5Ore|p9 zjpSWKGNG}xt#!WG_C1P3VW}mKN`I7+1M;QICbzzp?AITm^d}0MX&|VMpex@>i6SE4 zn*t4w>GsF5><8EvvQ{4*M2{daq^aNzHyy&C<>`QG7E`J=zK1vPt;+j9I0IXXJ4O$&#TF(dw1bsax( z{V=I>3CrjgP5cNp01NaO_C0{ck3+C#5+f5M268M{Rqkzt{{RxKn24Fmpt;hj6d%(b z$FY#ZRdPh?!L^nPV1AH4z9ZptBfhFukz-xlY#09kk?)UV*keAysU)H1NX{f6jmDsE zJuxQ*YKn8pK#@pED%;$2vG4k0*!CKbVl=fPq@^q}s9NgXI;021i7k783xNC9O;_mM5Qi>FcyX%X)%fapIcaxjkzjsZt zlbI*8W@jcdv-Vog=gQ|c09{s6MiKx81qG1)w*fxa0pb8yAPfu)5cb~y3kwSeLWT$Z z0~!(%0x|{~CME_N1_l-`F&-8+Ar1xxJ_SA@2?-e)85SNTn35DsOiD)jza&uqP6fe% zP~qWGNwG1oN&mm`*$2RYht`K01VT{)pfR9;7*L;o0VDtb6zsp*LIM6SV4c!v+(Su zJJ&b3V3#C3Y7X&WPPL*YF4wt#L_|;kXyE^QnSZ+gD42hD<6n^p0|5OGP%!^H{yY8; zP|z4a3QSfQEJ`*}SQTs&DrY#cphEG+Kc8y=WZ*wC3?K$T7;rdJO!ARRM`oiPK7d26 zXtvH7H-<}n%B~tl+-ndBFds@?|BDtB$_PFINuW>0M z8`1_^sv2Qt`|5dLZbk&DXZEWU;eD($2ge{E=B!NpCqZdBf1*g`Vxt4I<-f4`?yU5p z)#>AHXOoFW^Lo$09%t&+A+8(?Vzp`j6jcFU7McQ$H|R#;dZvq?xKn&>^G6Ep;#4Z7mZ60(@8lMsB7tF^>?tDzaXAai#p3Svn4!X z3W#UJuiPOMhQA0|5u?d=x^pCN3WSCv@Of0wz!bt*Qg-Mp6W5aXDy4zVbCu{YdSc>5u`|q!T~!&|L|4$v#7w$l+8L5$Rsigf zqOW>J(gDmv7egLz#q!$gCpe=p1-YH!@4qw(S?PEq3%EU9we{iaYRh6HN02)>{rk7n z7ASO>>@tSdgD2pumU!D`a3(#py?EQsl)1c`yU{-Z1HX=&vW^F!YoraDY4*`dEtu*Z z>wIVX0xjzx1Yf7fm|zLYXN>rb^Kz?KukKeCVHG6qGO3J8Wk_<@(GAaoHegFt-@_as z1~KgD60%hO9sDR~r_&D(PnLbUTLX+JMyj)By}h1^v}ro}!Q%FTsBkNFoz~Y^LH1hc z*JTN;|JA0(Z$vL5quZ=weL3MPzPrbo!f2yymt8sj4K>J@V@sVER4E_BMqs~EzlGEK z39#x0%Fg-o=y0~Sc6a|y5M>F&gps&I_aO49uP@G9(JPLk{I(C{6$miR$2SXkkMi1I z%*WUB#o0Sq^x{BR&MxO?_ynl6n*SINYmLL&#dl*e9U1WZs`*V*Ys4(51MFV^i@9SU z^up^Cfbn-tz=Aa$#fMbgw>j%s@4e)yKEk~>@_{cdq*ACnIIdg>s(4H zm9>N8k^_2@8=Q=w9nc&=pg_pEc$sQD!8T@Y!T6xBA|0^msp9bon7C2M0xl;lW_$v` znpeu70PBFzv>!mdU!8(~xm4{h4xyWuKLHn>*F&pg1Le+4TW>15{h&|4n6eGMmWqVH z^n-JJd@lmo&geYhx+Y(=fh!&pTEyshTz0rrrz4|!Wt{7az z0~unxy9@nby`k-|W^CCxGvIQqV7qHwkRS9C9cIS&ew<`i{RG%t{d|-jMXfAbJ$e*3 zA)xvMcybD3uLrXpYH$}{=25mq8Jl2b5Y2`!J}=*V7-8*}wPpfSGwQ#dw2Ifgxjxm_ z>>D}fK9eRghzWlnGQ#>)7#bOjdU`oC{k?7HNRr-|7+y%$`@SC#G0)zQmQO>+?_Q6| zM_30wr{8JgsYw&?;(x4%_HUVZowF3QL3fK7KecWgn`QgOE2)+sK}FJDaW}CeQblgD zuJP;5M#0&g>Ndgip*Galq^v0}07K>?&^DjKc(Bt6Br1oYl_ISLaEvaRogK!oc4;*F zOZ-|d8+q#On+)B~x{X@0hcj)SDj$}pC|pa+5r;@e?xRsQW-}G-z!W*QAsO%%CeAeY z%VD1U6L4EYQq^dG7qslH15TNk0;Q0?Gd#0(WOcR@k=kFHkx?=(Cf^y8El7{9b*m-n zD;@?~`l^q05BZ%?i3X`vUES7DN5a7cWZ9aL@j3JF347a`M~8}w9UYyhQo8k(Nbq|v zRCOgr7lZ+idRys81Z@WzCwV0o;eVhmTmxvSyhY$xl@3ml=%g9;c*+y+OGH0fF2cF1 zDYij#zu_eP7a#;MmZe_dc)gnyA?m32XUo?$=DwCG7C8m(gIdef+AVUO`sU#8k)(?h zx8K<2Pt&muRK$?C9aXJy*$iYqsE|=cIYW|vF6v>dCKbO;#-FH4+#sok&>&f1C%!h> z){fDozw#-To8YuI@$K<$%tW~+uQmNLBC>gDtA@=zPlPvUSC@BOYjxQ_n(OGX`2;W( z*Y3)tv2#|&$+fTB-Pg7w%9M`|MD4a8CPucAPL_w(L>#c+{4ZOBzP^mm)#|y>Fb+7q5G*P zLq)wIRqyEDA=b1w5Tf>eY}LDt6ldztb#|o?!-)_~+loQs-5KoUJXv)8Ir#R$B0)lrTaY@o#@8 z6{zW|sXaIg-mO}a+47q&W{0M}<=q@Qs}OCo^|dt0iXo2vKrVpB!L8R&RQxdHzf2U7 zF-IE2xJ|QH??rKv0Z7!{ZLRN!7aO+Yg*utQI$18}v=xD|*6JlL<{+>pD4l7p{@h=PV!1d@VB~zDXeQnqnFm+j}^*C{EjjXA_QIF*n<{x4qZOjB5ildHiY_3@QSx(GwtMKhJ-BKHxkcAr--R!oo#yJw2n5xLN>udZ zW+&Y!S{-71uc{w3#?L0XFN8(7`!c{PNttyfh0(9vB2ZVG1-46e&my!PCAMKdp0$Y| zXbO>}@)Q;-&OPhZF}gbp{%i7s^)5|{FDxF`zc2Uv1jtH&IyX}+U6jTe1AR=;#ith=h#>nFByK+R+C_wnZ^R*3fbRX%MI zlpy84_^1teTtpX5GXn!`oQSp^4T&(ayes)J;$=f|LVM50H}~TEU{@A_HI^Zm9D7;`@q@N`EH!jt0RypR&eHce2sEd(z%_`p?JWS8<*@h(yBpIsRvI zY?wXA^S3ruA*BKtxkh)BR(x91v93-$o2z~r{|3u$;>AU<}^U;DGUW)#dj9~thgbPgCy zv%}Hn!+1p`$x}V@N+Qhwr>}~Fl}~wLqc9v=Z?|P-z5X&A9&nY`_CNbT&aE;vn9M5> ze2}Zk+sH4x8?X?2tBk|jTqCFz31ywrRnctsD`lO^td`kfii=q{O6nu;M=SL>PGa+^ zf2vA8Kbb5~p?$J$?;&z-^O}V!Looc>`r@LgEMlq}1Zvfwm|f-54wdHqXLG zm_B`;CGn)D;<;K1s}y+pfJ_8n5co^@={K!4PTL@q(fiauvxmgqNOHD8&jvzPGz`gN zr4EHQE`pW56J;&N7k_zWv=ta@X}Zg$=DkQssLSt&oHG;(E%ZszZ^7kg zyFnL`I4hFg!!wdpJi_TAMO}(2JL3weL-i`juK4o(9CxQR3#&E=VUGEzCXmS#%tLHRcIMdH9#BT&PL5+WxAA zE2%`s5R)mcXC*4F6D^sj3lm*rJ#d#22v$mORzw6&L2hC!vJ=n@PWoc5v?St`(Moxs z6&JV5h0jzO0@>#(8r6~KZeOkpiF*R)_SLDQ;e0Gl=1Pg;)3*3xjL~FOU)^~jgJNha z(ee+2lIBBw0od~tFoCh^s|avVTQ3V*uP5_ynd0yC$gwd$9Q;#B#-*2BLJ$u2h36`9 zO7;WTp9@Vz`~ewcxA>pH?mpD9 z)zJ+7d2Iz3ZL%rc`)M+1FH_Y=QAU=0KvsoZ+m<(-8%*9{WYU2DeM88Pl%qCAB8>4s zuE$!x&bN|hRoB>l_2q|Xf%yNr5vLE$%1iN30{R zQFCeXQ7p!Qh*xhXal=`q{sRupLFiwXWfl@_}iLKC54VZ+KHCvLILE^ zy7M?GhB~$Q>*+_vyrti*QLTw~Y;~cNfQ2Bek#I%w+hSc`zJwx8L@t#t@||gg zC1lXYj=E_!hF3IjB~4M*x|IwwM{!Qm#Oo<#*InlOJ9rMZ7Um+%7Uq&Xc>i3}!IxN{EO@N&Fn{L;T8hM-LLhzBkh}KMXpGV1vCb-Q0d?LQ6ki0}OjQ9_j^;s} zD92-P5Kex;1Bn0Pp%w-5w=N5iS5Bm2K;3w7kIk$Miwr|e<>b+A(TWv<%hy6~D{ zi?`bFLr5MGtv28{%Ej5YQNX42TG&}ee}YnBndvj)=nca<7mOv(ow16aNHQjAm!rrw zxaw-QS+ZWyZYEyV?n7GNs5NLKsV^AnRpUQ_AeRXL@Cx2>)J2DpctZ9oDdxbRt270f zi9;Y=Jf|+QT-=^dfcN$z2eWTtLnUgI&qd!_xtkzu-LO%9K~TEFCggW^A@ zP^CvNL_vvXW?Z((L6agY&kwvWDwD>afc;0JJ4A$bp~W9Ply|;CzTXDmSw)p>82^H! z(EY4b-YMG#iobMWkwP-3bqyCHOtQ!&;JRgc&01OfTj7}%+%^f6kRt3Gb7%59>&&|n z7^}4De@eECHe3(t`v7T0nEZl%M+stQm8=f!Icsuy94$zH0vIkd0tI@8lC$?oSt8#< zqxml6C@9!`=A}-}j_C~)@%UB4lOzWcyyxRww&Pk6i4(Xv={Al67S+E=eHq6xjy+q{ zJ?Bm4A@NzRsKoXNd~d!hzw`3;vjG#V_bQw!^LeX&ixX3Nc&Jo~JPvBB<%DR8o=PdEyu}c!Ve#Nl)|ZOG1Fkl607IXEr5xNms=l>C zxFDq!7THJUqgSoYfZXQjut-nRo`npOPe3V;8O~+bBHPFca?FK_L5|*NjDK)IbWRM{ zYE}CbChfGF;Ej4@oH)hAt$FNFf5C4amBd*aEwjBIt}~U5e7cKPRu5ZwGAG~FQ|YNi zbb$iLnZwe2fi2m(VLQ^6egndh5;VIwR2NwA(+?sS=WeyReVS1=Pa-JI#m*))G1ln* zMRp@bkBzjrHGEq`AXc@)=jQ^qF3cGJDvv)TMgJ+Dr0Y-88K=9Yz@;5xzSrrO;uN& zVow})GyX*qlINNRPs+OFhQ7y|Yx})a7K{Q@_*ecf)%%ZA06CgwYvW zojAfjVb(Fm{yr3Ifw}UDfUVH2?_W^i7VM*YlGu}V**rqUt%J<%PZt{xl2}eOsD~s! z0RoE^a0Y1I#J})J$F+{`;vpOiM}iL=S}MXhY{K>ko%bi=@df3p2(&iK*6V8$>*G4W zoam(!OD>fh$7nLD5_XW?Lw%y@Km{@i%oeZkAn~H>6C5wCH?)g1sNB0o5GQ*dxV#$M zf3+5Y>BM@Xb$|6ypKb@Gj`mPHdpz`t4p~d)*J^&#ii2B_AO+!^K6u{Oqo%^kLEp(o zJ9k07Eo(TBS`tDIlmXMNt|-*vr)i_hZ1wkbh29(0AsxV0Y#+SjVp`wx$2+c-5$xHR zKzjW2EX`?6&hx#(4aCXB*NhbgX_3DDxP7&)dS5i%Z^SDktle}3rrs|z$ha62>-MT; z0Mc^*R&1})XZ7+1e0~jdnLw}^i6G;``%mHrNWD76VmbiXUNzo+7*alLLWgguA-t6T zgb+27f)Q7s8uJjT)2DB*sJT8@rXcWf!i9Zf5ki*XQ6cw@wGrh)vp4}OS?=iv;Et6{ z_jVY%Jtg^6rb5j9;5z}4dSk=6YqzE*30!}9jAa{x4#KcO=m_9|rA7ao=)*`utc5lq4cHBMrv1b}rs(%Y9^tDw9~9=_&#_~Uw$^HLg%~Rw zD3228Nbo?E*<_^hKPiRW5{F}s!0zj33fTf7ej{~_EC4J0@xx9LnLFH#MaEA+M4ALB z$enzP035*K2$NW75pll1taCK-npL6a#0Ac+F1*2m)9;JLMk0!Q;Uim&p3-(|Jx_Ag z|8|10&a-uLrZHGIpsHj}s2@r%=5eN#+TW&Bi;6yK?R_m>&fulEXrBM|N{3A{vkbH4 zOW%)BHxirfO2!`pWuDdSm|oJ;rD_4xb6+<|s)}diE30D^*9pTnLJ&w(ZS{c^-4bfe zypk~Pwdfo2a|^-g!kMKZ3%fyF;s7OCUdv352ZLXZt-utMYahalE~_v3^4tZ)f5#NC zrWCoJl@*}HniII-Vp$2c{1@{XDhXMIt#`)C?eA1J<7_>jO;ZwsWa!~A5l;E%mQCb} z1#zePWAzf&Dxg~qPT0AGj?uT%fFz#P=yA&3zyGuOT@35V z`%sN>-U;kxg~0eQpHfYfe-Pq0c?wpv75FyhkPN}Xck*M+g^-DwpV#@>YL#GokdT!z z(y@=(suksb7?F*4YbDP7;HO^r1iT9w{8EPh(>JZJ84hvP8R0uu0Pq0oWswE(@|*eV zh_`zFV@UR|YOdnughXss^{N@b&PF|WCv%h~x9UiBZL5ZKlb^{7Yly+}=n7*Qwdh;k zu|L#>RrX*!cOhSBJHRRWQ-(OsAqC(xFM%lurXAF-BrtT4`-v+B6=llp0!rBg1E1AH zJb?sTv?O8Q(=8(79k~_@rG&>a)*}0A`tU;XAy!EU~|=_3h%-`lqXqnc}52&j&Z-tzj1+aEnH95 zsxrY;R((|66L0b=O zG;|t4x&^IcqJSoAk=8_WL;d{q_sYam&DjWK#I#QU{Re%ytTh_Dyv*|)3bhtKl~9ZN z@~o`Us-|rub@C+9?VgREj%o6kB-&JsP~QGI97D6UEAFAD#zUbM_!H20CkmtxJ4N%Z zl#6|~ z68;N(v%fRe0}iA0(XeEVMMek;xjKkYrpMyRhC=tBVL8Irq+bq04e9m50iGOk^2Y7@ z-R$c3p$A(LIK zEW!*n=P1^YM!{35~XEZ4encJjfOlKQ!JroY@3_sM>W6(VHJ)25%66-7}DC ziu0WL^rh@PNWpF)iqt^Hb8B0`?U1d+U!`$-x=RK4C-d?fJeLP}SoB>fQo_1b%OV3- z)s4V0ZhRngUao)2R6&9eo?S+P_D; z#ktdz+)YKyaAb#gvx2c+s$w2lP_Wr8%Ra{Xrd3rDp`;&s)9$JS@=sZG2jZ7wVF9?O zr?G#rWiksd-80eGrj59O#@TO=%Ky0`H}?zXpMc0dY6xqLmUw4-d#0DUhC9S0QM8`N zM=XO3bLvap$-(eiHi2Yi(ISr92m8z={*UAgGO}*z537rR-tsG4_>Tjyhuspb`i>y6 z<@N1EYz{!6Kdc_n071HGp%@cwjvyNAmSd$tC`!tE&fd5!$O}51+?9|V2X)X{ADZmV zuQ*0jaIb(Q`!Cs)RapGr9-8^UpUN#VH?JjPv5&PXDXN8-gEZ%tV$_f2@OVUro#ClB z-h+L57kodaT|&Rs_M$mEMAZ&w%MBhKtGtz{VadydCOE4|?m&Im^e2Gi)oH#V?BXdG zxKAzSEbwfJH)Tox_Dn5a4Q7@=%8Ib7*h_&V)=Z1$R`JRxaeqZR(GGixDj!V?UfLCp zH;F$iC$@H^Fd`k=5hZfqE*%%pohNwn8oVIFFUNGKlD^7H=^%>hNdZajq6n)x<8-B_ zx7cwPapSRy^yZS2hIHdq;}5L^=Tb^#aA6`RoNS0PcVYoPp)u`>M;AK(>1n&vr0o~w z^^^q-I4KP2L4l{ppl+_K@@GMnyEPG5gQoGLF*{gFd3-8=ZNLAsfb`?Asy8Dy2r}t#|4O%{ zk+>%nZa?Jt=SrjwqFqXs;6+4&COeSyFDJZ~rJELGx8*Q+ENHlxK>bTNFBrC1@(IYs za!HIcnQLxlp`M5in3Ny7>>Fvx3-nA)u#(QRlDoV9My6BKGapvW+{KQk2S z;3>tQQj#6BhOr4rgY3;;s2bb1e0L*~iEb zByG=P>baV5_Y-g=iVw5s{8K{3f|la@VqK3rx_n9=#u)O0JZH@5|A=?ddASJ+D`J z?HmpSk)YmGosp8AF+(PT@zB`O_L)*+DX zi(XmJN1VhgjBTJylCxrp%fG13Lft<0-wI87{cp*Yy7mJO`;Aj1ls8NwHQvG5E`#Q`dBz3y+K90}uCQebiB8dNRLSnK_)9r;eP zz+zfKF5pEgpT0OF_%Dt3JU_1ywu@ zrV)(7#9=YTg>U*Y`>UQ1984n2#pnic>W%0cZYZCu`pQ#45GFafxjAAgI@g^{uQHv& z{h!0@J>@FYR~7PO`<~_s?FI}(xiCS5kynj}UAgSz-~92YDqERwR>)`f_f>Wi5#!5i z8JTXe#LCvpa?@o|#E&|>0ntol)5SUmCi91i_EXd_|8j<*fy&>8S};L#k?S^%Tp*rF zoTjSDnwQDk$^7jDyiGLaJQ_gZtVH3E42I!O`1XkKT&R>67F0;*W2LGaF8~55NbMOi zb09;X?6PVb&SE5(dfqf>ekkTb{uOi(B6BF>=>?{cTB^S8NwsCFSm1=UB$!YE2CiKC z{hGBtz(m*hW>Y>^-C&e}lg#XoTD)4sv++oS(T>Y!1J@pm!NcEyKRnKYO)nKLufROR%!f%g%5x+n1M9ZOH6L=K)UkZYnxdhb zMok!;l@O_xv$;kN>RZwETD65@CYCrj-bX5uV|EEnbNMoLj6?Ylv3pX&#$M`0dDZ-l z7NdR#J79Fqw{5R*!9k0Y~Zos`$59G{?cnljAgpc_+PcN|6L-a(9|c)=D_I$y9GC+nMB z)~d_65B-AijBQZNY%M>GJV+MB=Oyy75-pj*2wPMBpz%cVhb62&N&8ypH*VUcpHAaY zyTP6`Ke-2!@kRuD?HoL6hU&xO_5_=CmEl}-U;l~7--#Q*vsPNrh($nD;yp)rdb^GI z(k~heepR>93mN5zptYQ@csBOJb&K$BdH705VTJhrH3eiLRQ7TeJe>n-QL}n*L#zo_ zo{X0)_S3p^E`1l(o{-{4L}Y*mssN8^!&dxvJu{mWyKWy%GcgJ(rp`Y&Txj9Fe4*|% zWhyU{4CubuTzfX!eQbMkiGfFb^%7l;ucj4^G+-`3z3Nxkl^j0_@6u$`(Xx>mvK#5D zo_nVLmGvpCoBr(tG`5gnB^x}!|3>0-aCk^q6I;D)S6M7>HaU>t&=>+iGis+3TPD1g zVP3v;&pKKz!_QTZd|BbpEECSJ%?*WTR79P?Ube6ml;&1B6ByG&Uhp&>FQd39m~_se zjwXfxz<(}srqmtU>}n?}Xk)7pC`pJvoKKrTnj(q9e0dP^gJo>^Le_i5YC-`R7cE`o zN&yJus*79$f52$xM_WgOc&}u|@^A|*bvABTj zSs?#uC99bXbtQJEITY>tq|yO31hap2n36qyPXGOM!No8TpyRn-u6q{pElkg9k8})B zFJ4M1jbP9`vm5jrFk?Gx)R?8Orn9D}Gq#g!OhC0<`O)eCYXRP~yXY3D6ON5H+0fYU zw0e_%`(4}i9&72Ws5vC7-ojwc7AQR^w5w$mi3lqFmU)1TYJH5*2WFP^ESLDj&e;@A zkq}q_brzl6-%s4ha#wAS4=-}@wy0X34U?EGvL{NfeWo%V4&LJ@WP}%j0uh|j+5ckp zJUP)y`W}VA^Q>Cdan934)n!Dwm4Vzq^6Nr9i+h-#nY~9)&}PDwK79;cb3@%T5Plr$ z#gBh!L#;)&Ouh9;590iB{A?Jbziu%nLX=^dVXPc^iOKzr4<_4apx_6 zOT~taseBuz_O_^z6alj`zD57Qh(atpu!B^3Ns7AvxyOlX!$3}q2|wVEU!b2UwgaHt zo~dT6Kag}+KHOk_0?J_?u}8?YwY~-ZE{O4s*WFmvUftBKt-Y_oVW8W&Vc1Urz=eQF6UN=eeSLFFHg>G4kmb5l$#YLcxAzM?%kS##%{~N47_UD> z=r+wyJV!U`L%X-&E@9zT_~{*D&w`suRtV0c6s9j|`;sZx>^pXr!XDZ(Dq#8-N&Gy{ zpB{>U<_MDOEE#t*hhG=L`%i7g=_;Q9Y|F`qks7q2G!|Pk>NIxi;uOQme~yr#C<&df zh$RW#MB2PWnGABHfI|eVwsDA<8K{DH&@#AM+!8X{()8^%=AKBo`u=Zi@8uSUngX@s zSD8_KPH|0r10JB=LR^{JQ%db{M!w&1JPO8Bl=_i(F<|4IyE;dx_xbS8(1MQ87vcc0 z75m{!et6r__ojUnjvk@HO`WdJTCz1CwgcLU zEy<#0o_iLK-iU~|31B4m8dT{ZAhe2w1Z0+98WAAFT9R@`Fa%4fY?jL>mD`vfkz3k5 zl$T9#T_^`1eQ{CvVu`5eSyoAum(sW|smSnC5X-!A$g^In0AKcA1?u!B!d(7hhO}4L zP`gxxVaTj+fKE`sjYtuD?jYlrUO4a(k3)AWoa4uLEjZmd~|+aVJF7MXHa#GPoMQvVB)7JdsJWWR4gn zgthkOOl>i-zrfymufd;*t0RXM{9m_V zRi$P9UqDgxqc z;w#yA@9q5E;>JUFw4iy~WgJEd((iu+Cvj9UUx_<-0C}m{W8$u`Ba>bT{Ko&(V^)%U z7`eG+n+>g1RT&%ASSaq0XW7`qXt3D!%YD842WH^vokP!V<#3)|+Byd>VZnBrK7|(* zz;WS4s}AAoZH!kFcg55<%R(SrHo32tBHDBfE}rK}YS>fhTbbIkEJp;W#{N+=*bXyYEC7-)f9q z&L#?n9d$>X>guUSaoY>!P;(Y%I5ObBLq!u`OtAHO`y(dL=6|6^ouozWyBVn}AbzlK zyswKb7CR#g$HVkgTfUlE(h?2HV3-PKU8XJ8ypxgCZjdd?>+{n4=&tS!Q{}x|QT&rh zG(hfhdl~l??ZuD2X|?q4TjK#SNkSXyM;zZ`IvvwORj9Jls=%1PRK?2z?u>z)8;mCt zG1w$=nfx_av^t$6zAV$ zjMp5rQ#gj3vzT|r%q079Gt(C1r^lUikaG^3RJHZZpxXdhRMa=ufJ-9oWzIY9zwr;2 zy9UVP?gMy8wQI-?KZ(bUQ}W>rU&=UDnX*Khs9muP>jdbBM-@6QOx)O1I=jpe1qOfAQBy-*a3D;hmOU zX#4A}sTGI%{ilCXv+;A`>Ia-bTM5VETDAcYkiDA#c`T)ZPH>!2C$Cp%1FFHEc$>1P$8kcSE{ z6%;gbd!S247J185xY>znR(Uy zycaV-3^A2B_9SA&Vg}O+*Nk6Gdxp5iuJzCn7{d%EwM{^D*8^z!3z&nh3FDIqp2{B8 z7&0!V8ehwM))xogRS5lJStT3qTC!1pS7(Jv?bR~|i{QgVx3o3keHm1GtI+a{?ZdU(ioz8&7M-Qx=)Elm)T#|T& zvJ)LS#BM4`4UCdK0@f0=&+m1p%CK&~qZl@~hEFbmcCvD(82` zZP~O|S+(iL>#pP_J?E)b$JbjaZ;$3Nwd!|R z1qO&JlDpj93-$>QA_b)s0Vm2|7Pklbfv;DZO)lqpVQBp5eTX-v)iE&(NHk~+mqP0I z?gC@#iJDbo)(Hma=WN_0s5UJz%FH4|-iwuHtJ>y{JvJ?;WI_c;WeYh`u|s+?ps=9W zK?x^OiK*cQRq>=~t^>e*#dl^ZDmw^%=}xM&TUs>t92xRONC!Aa1K#}l(1>+}|FL?Q zjWK-6HNK-NsefXHin!cnvm|VuLsv)4lz7D~b$IFLxN$APv0p6IT&KhY2<*VdkGP4% zbr#!wqLbStSwp%q&#FbJ6Yls|5^=BAjTE`ls}^gDH++4O{ye$g!F=S;iK^2sl20;b zJhKY|q%w$SIteI{tnRKzBz6;n4dkJ^XZ9O*EVch)>ZUew%DzC%VSg*w(>lfD0?{%0 zHh1SDb1>!(YOMQd!t(Pla^G#tEFhy^F4%Y1`BpMRY)&fNwET91Z0oZxuDcA~|(M=7PhzwO^w(4p8f) z&J%We!gJ&F4FYGgm)%H+B5Mr?B3o?bx=i_|3eykEtMbzrLvN;ES*)+vPxbNqmy!T_ z*PiArmY)E*dopEzcgPx*F$-nG6;TdZ;g!kJ7!KtX2>d)Ed zv%%j)e|?$Uw{5-EA2NlsOft6qF`&fHEc5Jz-t{?oV;Ggc^yI@lBCxD_sXc(^X%U8eC13VH|Dim5-gAa{M2pGpTdfk_F zmW4BqJc&`7P*VC)5IWd9d9C=#zE3wD-!Pn@b>7Tz`q%drAC}7cVh$2v$sH81^)J{8 z4dE+lS{C|yGxart#A?Qq9IOKCHS?1SQJjm35ltB|0f2Oj-}hyicrOpNbLP^#vq^?_ z9^rO0cJIMaDc1vOef7YuCB}0FaprodvrPMBZp}!0Sipq>Im~qmOFLIH|lK zy%yM?FDtvbPO_;>1`op8&CU8C}U8s$`x6&|Ep7^5FZBO-?gA zMI0_vxAR<$9&}>Rm(YCOmdC<2#fAZ91aQMfptB|=gdYw@yY$ zl+eODqqsGJ=i6w`!4}Ceb*djI9>+ekrO(8|(%<;ME)|;gI1OZho>0^lhD~!`O@TVp z-8%4rhZF#{>l2_$H-g~7w>zCiInuZ1dZt67x|6NO^^>@IH2g-}1l0#kce!+~_p3{% zPy|lit_z4!a%@lr99^ll>U0^iSwv+*j>sP0SinvG^cPOh1IPb%|IPtUbV#WbDed?v z=0goq(@8yEERTb`XPi^zL2j;*fsgL1*wez~5aJO(ex~}tr>@M41zHQ|`f1Zo*OlXV zS6;w7BtjGV!RLbT&zm&Oe(DM*`gQ+Mygwsg*XtAmPXONQtjIN*KU3d4-SHj+ji8(o zu+()%-f)u^DD#^PQSe*R6A*m@mb<@QOw>5{Seg9pJfIqMEMv$$?0mw08`5$ZVNDi| z!`$bc(?c5DF*AkJqaxQp%3di(v~Vh3IJcrcLf_aR))Qk|?!rjpRGcGlbkG2@j~x-% z{D;rc#xR)=uRmRN_HeByKJ7>_5i>wQ#&8y!gB(G|+G;68bnLO_p8xd|@MFN^u{Ng& z-qf1fxS|-GEFZ(9jYe|}TlF7U)2{QbH`U`*L1$*?i&=o3MRR*|TXPLdAc3ivCTm>z zQX8K-B|ctGnDzp4ZdCCwIxSZ}H&$);U;=1zk4E&Oqpr)mF|e+<{3^D$)+tu#?9C{S zV^RqED-G&koCs3yL)|mx;1r48KsvysXZt;1>DLFDLMB^xdhMRIw7^@8>yb)=zgag{ zBh99~?C;3`hO=m1{O83lsLaSW)+c(N)g)^Ue@sU>u{5hd8Y4?}ke=rD3HW*z zZI@URjU$~Z{N8>B5wz~14Te+imw6ZYjyB;@^6S7PGqniDaxmsVskeRkO6x%^^b-&z zW)>%yV&=I{*Ft4&>O<{{~>@=CTG_f&BE`N$vJx~8d0LIXUFt}v`DEV1=aAe`X4XPdZWhIL&+6~>XXN@>5(-rXYp_KW!9}_U*b{ zwD{d-7=GN-G64A)IZbtPlt$Rm$*(HBurKTVcafE2);?X|c#`vpCIp3BO%%+X%vsHH z0;|O6d%`T>VXl&7sU1jRijN$!UMoGvSamBKJ3SBbJ}OpUDJLU|Zs$g3deSdZl=6v`jVEm?mKBGH8Fvag?Rj$hwbq zBE@vCpm-pV#)v;Hl^n1ek>ejuzv6-vgnqqAcoH}aTPz49YyLF+mex6f#Y*7uLfv020>pTWVnF}VNRr@8WwZsCB@h`;hd)bY) zNf;kE@kHMgifqw&RB z(eK{2aP~dRw6o$Y2W&&69A!1@>1K)ze`~8UxyWtaQ7MD!{vQ`3(UD6g$P*OHNEQD* zO_)tq_fnZA_DDPrJYTDNTU*Z}i@@)>oXY^4rE;Z)d5G1U&VT0lWEBt3YDq5tL`JrB zei%f}5)|)(V-UV|9bG<1xGPq+3AzZDP+sat-DvT+Mdz~=WX!ky)zUQe%2>N2e4~@ks3>YL^v#7AEhhhC-7)B5^QUeF zOdUJHC*XX<^+7P!@=FL66?;{ghm)-+c8t^^8nN;7GE~HTH#Y-ru*%S%XZzCYA@-ey zQf@XHTpt%U&taupwU*Qz3`eJ=u=hHF@qdlRGT(pnr${;+e*#t>YmziptmE&@GR<$O zh65IaB#Y7xaI#V1RnmB&mXE!oCvM7dtp$XE#dtp3J$i1!{<$9(sl5FpF)`H4ad+-R`n>16~;uHfhny<85Ci@FPl4l_QfVlxX8kw`VJHUH}YqMca` z>TNzH@r>v3l%&}_eRl+_g%Bf63>*e1-Dxw~?rsE2Dj>;lHFEhb!;m^Ag#>ACY*g`-{IYnaDNd)eioeD$+6ZnkAzyR-*K6U=^qAk~HFo ztK*9SDl3{}1_eT0+D;y5j)CkTLqkbN^n#5!s>k8CmdKLwd0~=^2)wHD{&tS7x<**3 zVq#)@oQ7KTfowe;9Gnj-2$5mbA?A+f4BuASaN0;JzmFA+1M`Y9YIB>=HL65f_*4J$ zCNpNh3t>83c{_Di^+ahr6&++(t~JQNAnH0X~b3RrglNCYI*b8Ad{o z-|*0wU6Hb_+i{vHZ>UGe7DWn2N?#;b5|sLEaw%COS3}ehR8vEAV%B$F7$@{N$ou~Q zt!eG0wv=qbt($0>c2V;bJQE{|`!dmKH?aBI7~})GwNm0+?MFkwGY^t3tC}W204|aXy=WYN6s~oj~V6 zq~Q9GYPoZ(SS%7q=0=1m=0c1%1AlQ`(}%7<3wV+#0Cp$0&)T{j+eN8x&FoyB9Pe)G zQ=4#kPk%}%@{+W`$C1iA?B|;8p0}(+6k2>v_K`0zLoRna?UUOze}j0E&rZ;F4F_Gf zD?ckL30G#y;3Il`{p(x6GucmJCZ8h%a|sN{P8*bggINCni+T>5V>Ft)ck+HJ<;E?D z2bgRL9rmcA`yx$8k}GgO5b9h%G-mw|_*LFe1YqGD9=jdA{&l?6^((K!$u+&Z6;&j= zZCrlVd+Xg9;7I_6*@S^PvA+IbKJ}v0_>%4P87wYx!mfs#HMeoV5tDX;k?x7^Y4TSub^FruXWpdOLGmBX&NEG zz{O@Yjb2HK=aAzWtoEm@#SUIs0NZ+%5PUa}ZRB5xMGR4!!X&Ues+&7OM?_eTyK>r*76uY<=oUQCrKAk_iAE z@ky7FIR>#s50#~NXP)h(k+*JU$t3%pw4Cb_`FCJ$OQ&6nR;9 z1a+&rP05ng9VB2EVmkS#V=eI$Ey&bM3OMq#N`K5xTB~s!agJ%7IeG(~kJg6Fw{0GI zxl|HzPBT>%82M#qVb>YhQ=ExK>zVMOZ5$@sklCmcm4W6YpI=&vRgAZWig||n9jnoY zUGdAFnCVsaL((dS4I^}>sEnR$pOrF2{{S)Z2|Yzg8RgF7Z(6n4D3BIxU>~nQDW{Z4 zhHRf{{UKj(?;#egsAydMMdTy66E^TIdSNVVrxJf^M6Rq|*8CWzmM>4h1t`8Fa~^w~6;L$(#f2fOht;R_TW^&p2P5 zdXLlxfl>?GS(#Qv!Sx+#$%ZL1sOyv1oEpK|YVnok5&{oHnkJguWG{&7NIiN`Cf8*& znV`8#i)80$Dvnj`c>;((cyv7^Q*_zdMtf#H zKzWAVrl?D6ac?1DzAB!Z_Z)tA_Rc0Qndi^R> zIxm$Y#ytfM@t>3e&4cSs@ffBDQQC^pDVARG`O3uub9}HWIX@pLI8=;!lm3+SEC3*G zden&^L+3co*`i5(m0+o~>*<_x-J&VjU=vjCctl(iolam6UP!?EXEmr;%d)Bh#Pq<< zYfHkMFLSEjtT$23Z3YQv<=^B5G8o*QB017I?vcWpKA$+1ExdXE0R7v8&fiV2D^m!> zY@I>r?OhIEh0S)%`c?WWsmCqG**`J`$Rs1>33xmVC0tbb+} zGzD@q_N!39O9R`|jm^S(^bS?D_GAA51FL^SQGbK#kr0yDPZ@5U$UythtTIn%E^4&F zjcLxn07gy#1FaCY(5|F~elG6CvqO{VEpi3s!Oaw@*DeHE*IA1ZskJt*EN z$K4=#zoRJ7@&ds;*xS;C@b42xsTYDvcY%S%#E{3n*xTxAocvbTaot(RZnm-lQIqvC z&q57n{6nX+L*X=XXD65tYo9+OkHHDaW($SlTfmcjafwsUDl~7-NmgG{5j^E~c?wS?pdyu1gedsy#NXj|FOy-rD~Fhe&c&d7~$;JCCJu ziuM$0;CSk?&hCh4)Vn2v96dM(B`wr!}{cyQY!QQZY;6rkL8KA&2#CBBPu7l$?K zthxUHc8?n{2foKR`_`vQO(Vj>Ew`dlZR1jxOr98wXLV#jP?W3^rV z5Qo7$*(CCwn5l5Rc~7yX4sxYI#(Gns$ig#|^EF7Z@res#kg+|x3UL_9wo4wpg*lIg ztV50d^;jS;lE)u9K7k)75u9L*jfkkcBN@pjnYs-0sY(iR!3^HDOrjZq z@XmUQY*DdOlq#fWH7o^NA=tJsNCKU6bNNLhOyJ}6((OH#RVxwa0I4Hw>NylR2nI3K zW~F%5-yj_N^!n2-q7iuxSfApS!a~DtIdDo3=Dkm}L};=VkFG^}iF8wEB)HI_D#G2K z)>Z!iFX=x@&X?3gg^;Ysjf2YAKWgb05G47MCSGuN0K4k{_1hyaKZpS= zdSOLJbK=HN{$etNVjF6I63i|2iNRsc)3Lzx#bxeh7ncn!$s#3U5i{F8O*Si##G6Pj zr{2$Te%7gGs{kZ4oZ0(Pi6KbS!&v!L?pwJvn~bz}%W)oJbUOt-7Klr$P5u_MAXa5; zI6cV!0F_B6dNe3hU(*Q!atf1>cll900rPVzgVi(q(2GmRt}Wx4M=vl0k4iVgwuUqp z4#%EBkUL_O&>lP+o&JN+wg4C>9qP<`^{UZqN4-ldkivpVrAU+>tZ`8rTdk9oR$ilT zYG*DsuUg#OTrOdmBmnQq*{RqJXCofFFeyC0qSbK z*AZLA7cG=#=65`*Iskio>eNA&Xvel{bo)pyhvmp5!76!o!5u-OP-u4Xs+&kHM{*9Tcu=?X1JYYAnXn@PQ+k>4^in|Cd-L5?M^g`WHAOic#1iG^iM2mzQD(p zGGQ4wk3`ayQrR{Kl$2cW^Xpnp3F6&1@zXT2_+$m;B!+ zLHtl1YS#7}h^{n!Zo(+!!pOun6WoHo(lH-(oAsiW*x*0jWbHQ3+K6I3tt7PxXF&x8+`w>P=2Kk$QB*EoU+Z*@CJ zDU7lkBg zE+3Iq22S9b-f>K^PiX)Tj7TxdzD6pYhY8tn73?xzvlwk#oCQ#Mw#E)Y1N!bg6D6j|u^hB%omVu-!)8 zN3DGkaiwW`cAnPOmUi(W8NwhLKK{Qtn?{1h8*r=<9k)B+?M#o2Ud7RujB97hcktdi ziKc>1WgM)a6UuY9Z+dQ!(;Ku%V}{{*)V009%0B%F>-88l^o&{siM^Up3hw*)dej>4 z4(NAUe6U?21=x?**4Cn+qv z+48TOaf7ycd)GI;DPyP=h>&(MvDl2(kB<)#=~}Jkmn+@e!3r4?Zbc!Z-1Cxr!>0T7 z2C`ABYI+UJhVd@#4>FF0qd(|Dpvw#F?RXx0@%wg(?qixHj^=eqT4GqYK6!`Ix);Dr zKSkAb+moznhR#?a{{YHHtGkn&kbQ^su4SS_J7=@u9?DoQKfM6v^tAh z+!@GkDy+PqclBI-_oc!rGhDunzDMRcV|d})I{u}=JUOY_coxj^Ic&;R$TAM+CpbIx zt{22S9mae)uS}MDHnTmnQZR<%3wDtiK57Wg4R?(Pi7X{lm_~sg2bweGVe;u(IJkpO zSjmXVpL3esC5J3_sORAFvSDql+49c{>xri86UD5x!~m%>2SOY;>5-4)-nx#7s|&c| z0^^jCx|Z7?U8?WK4idBCTM?_lZm+07GnLrNo`>9a`&J8qG@tRSi7l5?j?(D>RE48r ztUHq5wz=7SIVmqm8#4L0^6qY#)b1@6EX=9M(t(~uV0pe+G&*|{@!Ux=qAEb`=Rn-8 zjj-L1K}l_+>e>XhX{to`){gwF_Hmah=zPFzJO2QBlV8*K=l5pNvNYw5B z0J#4E{cEk_;A$MQDrXzY@-6X;&>K&;lG4T~W`7a+N#}0+)a0Ou0>kZAbge>tX&Nmv zPv^A3C75$cpl|+M{Xd#bONY3X?b+<~^hER-Y*NIkc3A^2TE^YMs%lpz*5FIxspVyma`ODgYSrl0V^7nfwq`OAxhJU4 zTFHweo9H}Q-bU$Yvn-06Aj$4&k;{iJBL~>hFbqyX-1NmPXbWXJQIpr^Dy3v3jU)564^8pX zp?55&%g7hoIjeHVEP+Rt2Ygk_J9}`WnCBg8xVNHR6s+wfcuSFjci*TK_OdL>(zaI_ z>Aeu~FvVjTUYnYRY5AkiDds1?dM*hdc?k`=gc&6VUyVt7pi=z$1 zIxMEjN$ql%E5C>`zccSyM!b80;mKn6e4ulv4T%mwf!Z zsm-}kc0cJ^wv5?oW(E!iA!g>>bjbUhQ76Y@XNS|+7S}_&xP!%-SZ&abY)*ey$PLY0 z(IL3gZrTfdP8NysWP>CJ`X2RQ+)2wLPZ%R|SZ+mUE=ASF$2GdJ8UFxzj+JUoMRMeV zy1mR3Gh3`ElMRoTaYy)T#G8eqNkQ=~Cj@`!C$Gz|+Jm$fuWJUOaQq|ZM{js z+RG;r^4uOsuGGS*(;dP2{{XEEPEps;rypo9jtibH)DQ+M8x8(|?Lgp+-Q4(bj41cs zwY+m@HOCZ73JeKVSih*nHpfhY)P7oHAGq#m@tRSyUKF^dM-(wdXz?=w?3lspRW0qB z+`Ka3mDCasr6#E>Th3lKeq43;q9PfkbzvJck}v54J+`H`#pKB4vW}bLM>E2o?#q5y z^fl3JP#Y+Uow;%L+Om2jplM8l45^SC)c5*U(@s(?isu+0iXPbfYm7tyqLZFn4awTG zTundXWm4_rjNw!szVvHfxme*?ISyqTA3zWM>o>&@X>B|)Ud!Pug-BpJ9#D7o-iboQ z<;djtq8o6@j$U9+z~>cu2bGV8WpYXB&6*7srE4S%@GRyuJgUvIx68dtZ+vc5qKN`c zfyx0mKR-{O{pfhOu|AebI!H5pX*Ik8X66b`GHLKh4V)JDa)MAu1~Y^69^ERP*0IEf z%`7fNHrANIM2!hPyPV{oTB*dc!#zP0ECMe2mo(d|c9kI#)?^x|KQHpriPt>{OhaAet zeCh5#(ycYRG>CNjp*n%eLy&}h&MLCPQdHU0{7y`GJcRNqLD_X_UT2rYJnVAK+@DiS zeNo8W_xChDEk5zkGc-yMQ_c=P)O&(B8&%?4g7RkC$r}wJ87zD9kMCJw<2kxLr2haf z;=(r;v;mgy@r9sh%-q28u6z2`trJNT-bV$kuQkk%$f~Qk`gJw*cL;DN4(L|t;OS6F zI2+9}hjaBm+O&7}7LwbC7Lcrw9(bKo1sl{6{{Tk1*nCw8)t(>nesl8k^G`qy7So{N zejAD#iDNPB;w^wO#S!ref-|2jR`{o+adpm~_f{|X)sL;Tepg}Y zJ$_wlg-fULE~PUevXwwMG2|&z=s`Kn4o5j@X&K`vq;v=4&0A5s7TRJvv0$L8b8=^D z`X}MqOKZd8317vPNG&5M<|erZ!yXE^(d}cN<|KQg=4N4>A3^P1XGp$lZ_Ce@zSMp^ z;~5o|HnbVk(98x-H>O*_vB)M_=2BOck!4_w^IYJa&rwWyRz=QmJ5+%AF_Dhdw@ulS z+9fBD9#Ne7Z$ocbICqh-6-g&Pl{B{nCRmBty{ZjPbb`)TWmAPetEF1^0^J`!d_v+o ztL;ifxsV9q${>$rDhccV06Na_POqVAI+E#=+CisWN(!aP-CS?vVYV~t>rD8aI{yHP zyl@W`26imHf$jIK#|h}SS9gnWT@Wb*^K1vXC#7I+q~##^s495aDtjF|B9clHLZtI1AGX5>Z|m}+dPi@- z@ZMh4ow80h(6oyi1XUWx;-N2ad1Q<5&5?xzAU@gL9sRq-!WO(2sp?kWfzy?*?p{N4 zABjA0fSxKo+l?7ui5pCH(U#$TgEM- zv`$sPiXqORW1!rOR%?j(lZD<>G<+|l&gFqKO=lCkW2Q+`f12f!Y7tKo#o`zpR{#@% zwNPzktQ_0ksCdumB=z}K<@2(=B}ntj1~hd~@%Ouj!iAO?FffrQRUVrSs!J=IxTFWe z5=O@(pP{Z_9}(Eu!Oae%YOHrec?NUnM_;WzFN&INzKHsQH#;i`*4v*CA@7dh4^jZ6 z!fsNzFkY69gREQWx}2q_fo(2NS)*K%2Tb~k0jlY;S@I5O-ZtG`8)Ns}S2S;o4|%C4 z;%q!CavRGD%eSWNK&^&@#8w*g1lrs)NP~E!{YXEiK2%(y-4_Ydt1kE~yZ-<=sN;z!=--Qz8?A%yU!Wd4yp@Frlj*$gCfeU@!^Zo#86m1xUh15A9rk6=l&sO97mA zre#8Tn73e}rytoYjwEozXTx5(CY;#=&RG%8asQ#(dqUtd3Sx{ zg*XWo+56I4%+~rd3n*ij=0Zt%WCNG5`HCs6(a3n^%io}UYkrE-j~Npf%#5Jp>q4Zy zlHwLJ8Ca--hwFT!M zQT|hd%Tg@<%sjHdXBV~R??W{@raFa$^jkEdeao6 z5&Sr#d96(jp=V>QMihx62>9E7Prhhpi?+$a5ZgsjAJO-gw3{ zI)b|$j`W4wiv}=~xLNC%n8F=`_-Nm&InTXZw3b`={{RbW8Yp^6DL!NVo$6~XHd||F zibfKv9FdA4YAx-e{Uu{wp+ysPTw@r@q+io5qK+X9cm+TmJ5jwVdl@G-Nik_#%Y{OB z`cS?a;cZKaW$_A0X{NK~q&pS^upi&0c0L>7%_~K>SnTapTNr0;-M(gz4kpAGn4aT{tjEqu{{6w1c~104oED_n&@8-1!! z#OEfp!yIAIw>I5_wC*3!^!V00Egr(%SEnVqgZIX2dyN-Fx&&QmHWHKFt(2d>Ggg4# zBdsY621Oke&Pn!R_`Bhri>la_(;f8tge9WMFCRCd2XH<|Z%W}@Q=#hG9=9f)s6fiV zWnFhiQ`{d)`nQykjGD>(OVO85;p>^=ggxc7O(YG<3CJBc>~TxUg-u%1DapR}eA+Zv z%ug)RC}IItQ@Z+sf3-l?mQvfu@mw@QBZ&u4K9vTsKB**V*Akfd$>kjZ9>c9xwb1n| zwJ!@lESpHqa6jfNG-B%88%{fH=zj_L4fv~3Sq7zW_E7-t6|tP3)BIP`x*reQ*xSbh z5u|a(IaNTw0=aklBgFRhy6uz89G{1lA~|}ThW_>6o)uCaBlk7G$HchuDspTY_;7@0 zx3+2<rV@0_-IV30lGa$vQpRvW>GYzpY`~L5@ANqJI}(wWg6J>h z$_8=Y1a}paj`C{>TFX;k4&pZCe}8|KXUUDg(Fv&z>DwqFOtGCT_8vxwHOXUzhc&%j8RO zim&X$B-0(KN2OTXnRPp)mB;Mn7|mpLJ#OmmcCxU6geo$5HW)qXZC=kvYpEu9-KHA_ zc^H64v8Qm*Fn%FqPEbGqcJEo^6%}pR*wj^w;d?8EdF|x4kodqb11BVJpS5%!hhGcj z)$bbPT44sBhan?u$v3utX#Qwt3d)(il)}>(?SjT|e`b2QoZ9&Q~XvxR`^S2oc$B9E^9UNEzR1N2d$u*Zlnac=B{`-ag^3I@7G7Ep)e5fwE_X za1&$turfcVyN{M7`T zb-)ku^ffX=?j}!COQV8*3ip>uGC7-(OOl?NdqwbOu1j;vd&yPV_qzo zm$hu|dM^}MN2kJL($1r*up!arPs1Vg$}un4OKYB>d<@A1WPQ}`Kbp}WCO>RW zIi)I_*kR<%peri_wnp^HrwU5OpaImHr3*uHxwe@k2Yf4M_^Ab}k_%yR>r7IuFhwrfeHY3pkjD8Z1NvHsLZMmY}I z&gUYjSl%&;q;t!iH&C}3YiB#|Km=3~!*bH9q%0f1ING{|aRaehU-0``H>E=9SvQxn9O`Rhb-x_$lTVVT@^V?Ly|oh?kcR>Exf0hgRFyK z>TpE_lP+rZy9O9vlgrB8!1bnlII`4rz9$yCjg!T0r^Ir|RC15okAGS(rtr?CHR1=j z3vLeb42C1pwwyI-{u`@ESSUiEE)I70^*uMM$1ieJRHM!<%jnu#TE`4)9B36lzyoYm zn9~&;6Qd{~=j&EfsoW8o>d}N%Pp73!u~QezzH?HERBjDj62(-dH*qr_Tmq-CYJQ;wiDb1#TIMs?jX;?B-i zg(L+7_1ubHOtHqcO0%0@Pp8_*X1HXUMHw6HKkM4GzYchM^NiK*=8jl&#BNkX9Hv4# zob<=@N4N{&mkn5H_IKP%B)X04uDFTLAx1m?k+}oDPtv;#H@a1xo;(MFIAdHWKov)@ z0+9?Uy^UDo9`*p?8(U5m)mA7iqk9H-M8P@66% z+b;}x$5FAT@i)XBA4bw1^5z)~n8a}g2c5k$+O@p6+P1;RhIuBT6>X2XwkioboYgjn zh9Coh*0?_v{7B+$a#>&eK-*inE8tqVP#162k2XEeT-JTA^=lieTeE#Vy!@Y(>mvt6 z+idzDYUSkfp?=hQj6d;QvW?FoPxO6ElK3#?m<$f4xbMWhUE|`za7blnR4VP%ZBXbR z6Xv+&u-2C{ewgk71DNglzyJ@J!1k@xuMFvWoFeB`)1th084h!hJq9~dUS*yp3~LEpP&La(zzZV*-mFNJ>`zg*kG1A2fDWGX_hD zjA@pa!wLolNjrZTt)~QWG+`rn0G}dO)q!R+sBR^TSrA(Lvx@DdsdO&FdLPeoVn^$5w<`AvwC&>M^lEz_Cs#1CnHHD zc<|3n_ZY#gMwR%>YboSGEJi_qsGyb}o1Lp+YoS_kR|6Su<+g_5Sg4*=^P>)#KA6Q% z9}@DV#j0r>PdCN?0OUtJ<0~Cchwj!N6@&8l_SZ1BIq~|3%x5(gm&O{(D!ti;@;1TA zP`hogDhKmk)U`{wcy{AT)Cqa?TZAw^GtC)pLNn+#9^j8k2cg=i;%MwV0VGpQxJ=`j zTNwcFjgMN?@$hwzM?Ou*;&ojgP=i;s@vV@C2MmX*oKXd~ZcxEWk9~z?_#O359^+fx z9up%#Lvw?_^_WGR_Y%nleE(uNS&L?$NUp+@r8-S*tNDd2>~#5yZT^6YEo4 z&K&q?8CTzWjZhQ;utC~|*U_OenZpu7_pej#AdQFyC2%@qSEx9JW^~|!N&b4(T`p+t zb*b%J3T^;s{mwtsAH7aggOGLjbKZ=lAdX={HPw29|W z(s8(;w>Gy>T*iD-VOA{QozB~T+KcJ4o4Zw+*mE~rZBXkIa#>6n4pj&T-lDg#lQR1C2`f`v==T&XJ+V=SX` zK1QrX9$Rurply8Gwu5nTr!B%5Sa_LCZQleQ-Rh2ssZVcr5t?}#5ZGj6kVk&Ce5r_* zRdj5l1xCP+nW-RxCzv$KLiH!0qVWhCC7vRU5df*ib674p<4q=OX*Bz3?lKQ6v`NZ+ zz;EwYH&F^LIV)z~Ek?tTtWBJ4l^bK)fa*G*TRtljxkiq8AHOPdAL6pZ7IxH|svSJI(`pfH>DD}3GZ0}9k491t^Hx`l?v_&$ zsA)$0g@7mTT+>OPQ`fI!w$U`lokM{n&H4~$JD!8@n&=i^3tcSIwQq7pn-Ef$2k!#Cyr*XyAt8Sr=lf5n?Fqhr)d_E8b}M zhg@jR0EoPK&V6}nQ+dETD_Rvt)Sz@<_lb7I>^p|Y{s+>F{EzIvP5zEeb;tU&yxf9# z*lmYGgnYpj8{BcF0K)yX)%Eo4 zVR2+-x`>`=97vNN_<4DTPqs7HtwS!e9lOWQEul_f$h^GVzaV~f7O8n>du2AGb9Z=k zg_1b!q6}GMRmo<_=)a^W2Va+KzAxcXqQ&f2&!5tTP<)$%X?RFn7f{V^Lh2Jk3QbH?48Y zX5x9dgqxBMNc+&uKaS+kui}GHg|0ODzuaBKa!<1_x8K^ROq%x;v&F-@Q%?yzjdLfG z5%MRg`BA$Mgu0UG^Vr{N(8?ZFo+7cI%VDz(&wu(9%vjoXkUXoiXQ6TD4c{p6^?P)4 z)hBNVjko<+`;Dt5@dt@4?{)Y}6uz>8EQO9wE3waU+oo|sFa8i}S!RP%fa9QaZT_?u zQPHpXZLRIDycU%QIpN7n5oo9lyXhe;R@c-ar#6L;Htu z^sahMJs#0zxTikCuvuKkV=c(j=X8=lkjh^x*8~g?Iou7g@~*k?uZk`%bV)RsrRS2z zmz9rFj5Z%l$J)6y-xfSNW!{Ho&n}uzVMQZ10L(yu~L=415tHQ6{P;qMzru+KiN4vk{N^A-+h zrsc@_#=b(XMyb0Sy~&5kT7l}^D+4o)9FPuJ!axyP!Or@T`0mBw>NCkynasE zS}ik3(QLc}B-*R&d9Po^3P9=s*l)c<#8wxx3%XfQyHKp!F7`JvzZ zGFO+zv*Me`9d|1<0!43anQ`;ph2!!Yr0ByJvJNNsld4(TK-Z8#Xon^sV^t&$qi(+{ z#>?@7;iTnDIM@T%@X>AjSH353PZPl{z17efjf6^3p4EwU2Ym974{q76Q7JLEDC!L( zI?D%5v(^4D@!mFUYE8EP0NLCvJ|=2##;G=+6e{YjB9hG)%EKYH9S9)igz+`k2I{(* zn}~FkivDO9mTP;a9#i^T8D$6PK2^?O)vm5QHM_Z%e-1Gcc&=NK2Spj^2Vv5idj#^_ z#P;$kmdFICA+gex9MZbvH_H4Raa8fPjc@(~;mg5zTde(Z<;zs-VF?Qb+MrtY%0KnXJMe#DmKr1AUGIl{iP-VVdtD0N!4!fn_7@8?Xx&RCku0R8Ajxq*of1vADdYz&)OcG)< zBstuA{Kvf?G}*5PSl1u0m=Ob$*QVy9VUj|w4@}arSqNl^W3Nr?%oqT{e%nzRQy?%o zJr3Tcy;C#324gw*uTato*^wZEHr|_g2jZ06y3`+cYaqyPC!$6|9mV&UeRJs@DwDF=LW9G#q5vSsY}Q8?8r*{{RER3u^?= z_`8DOHhcb9X^iCKcK%69AC zyJrl1J<_!Jk*`$V&Ig&K&nZ63(zaGwb(N|GhTb#-_Nss@c0V2cvi*5AMh8l=g3b>H z3uJ)?$MxQ5fsB`=UUkSVaQQR{Hr_1I-Z@OXcJ#uLXt>FBr#wD@7ND-UurpG zQC8S^xn!DzR@j!8dTpz`w|B8ypxH~fU+Y15qmA@C8+S-Ap}TYCWQntYd*`Kb3)}0h zQsznLm<*Ca7r-9FH40lzB7@4@x#~@GCFe`1#P!&J#J#O?&XX{;zoq3 z$;x?tb?a?jdq80s9LEJp{{S_nzOtIu=tDFw6mEgkw?3(JhDVKn z^0Y(->4S`ekFlg_{wCoOi1Z{6=~{gi z_0hrnm!COc^xtgV=)5CwtUBLt=7BDwEUtN3R|^vz$Rz9sTxPp3!@q&4cOu+z_??uI zi+EgkL*_xr^zHSowZYc9W|O5_*=css#cc`&L|waeKBwH)i^ne50oSqRI~wX?@S_@( zowLndJ(*2sh4hPf65C6+5ycYnLL!d?1KZ`^vNxJ!@iqz;7|z?*TDXos4C9oZUrql2 z>+M1=t&H(=6yzl2lA*Wh)b*_s!llqHoTlOu5to$b(2C^$01)hq^0G>#70E{QHT1>a zgp(r{h&DQ$V!7uQ=yn$l&^jw%b;jVvy@5TUZv^8M%@bV!|=lWbS^n%`0D)#>(miiZb^EdE2N1 zt}85VWssb;T(MHv@gZq5unU}@l{?ayo3+e@1v%iXVz>%^} zIdh82JafS_M*05$hi;?&X%yZxn2dN}e)2JjOYx%Cj!VXwu+%kcTS+2>w==s13Zrqq zTF_~B_d1Q>v9k)&U^B5e2tDhZ+VU)oA&>DlJ$zX@E<1r$t@XW5&ssM+W#rIKHZG_2 z4@2rGSBjp2UOH#e+%3Yk8d+JUb8~dtmvPhNJ66+9xHkOCgbn%*_4C&c{9e>7q>epa z-aEm7rQ;qO4}U}aS7qUiQrlOw{8Vhvlhq~Jsl0e}XoPs0r@EGWmTiYk>N}@M;mbAw z8=p$AE!DlO3nbGbFS*?PJJc2zsj0t-5;{VMs}0HdQk<33?0QeXqOJY)%#9p+b-a@t zW1OK1DEAFnUPTj2ct?usb{Fv2WF#&N@{MOHrQbW{Po;@5}+{zbZQ&xw+Kfws=`!2azK|la2BG(L3G|xOfPj z#%p_I=0Av#1yw$q^*-HcE-DX5Plx13Go0lrF&Y$5O>pTvDJ)=a2{_5=TkZqaUxVzg zt`Zb@oyfNX^=>_P>4HA=2S~8Dg5X-XkSSmZ<=u((^r<+;-L%%SNaPI^*~DOP&Fk;h zs~?kjsTjQY*G29kE+&(8jNtBjR)E+;r)t+wpli!Sj~uc#3k(B{j^O_Q zN{fM@ialoDOPHc%X9|K)O2$v`AOny(;BQ(F!&^_NF^)Lc_=FII0h89ZpjBG)o){Oi+uEDF?2}g$f zvq%1QI}!G+2Oa54sm6GRO@$g6P#MB!IsX7R`qFaZmmlpH#@8tQ8g3f9ZBInEz6zOj z^YR^o4x`(8w;^qdgR$rhV7?OHD&5`b5~~+KogO{5Bl>--ptt5^x{ME6ekpT;Iyk4w zHhCEtat(T+@{{BQdf->6>}iE#%EbQw6)bY&BAs}ucTtL^I!)pJK_T&gNyaM&#JO}| zitY(Z#T={67|W0H{OX;?r37-apb`#TbAz^hy=x$6mI>~oGqbFZ%_%tCk8w#o#DZks z3%4&R$O4&mwqc%Tx;1lOoiabew78d)_|gyyZ@(zVK|=5D?PjxQiA%WZK*mR|J!l>6 z(>=uUO5+8IJjS55)FXHvC0wR59AIz#X!*X8mE5*eo5faVUP(bY!>;4%DAx;c7Z7nI z;(L1+wzenz^sEAXJDMx-lSPMG;*lNB8YmaUDpw)MAOZ5PrF8o^;)zl<3I{+21wRH3 zO4!8OMgxPs8EINV#`h|2?i6m)4=6sux)rUeLV*!L1JbReU(HA(!0CfqV+9_FMyuG0 zP&;?2FaXb7Q$`1y6h)o@{e7#Hf3!ukkEZEYO3&fPGo#?_Ie^FXHP!%c`PNh7C7d_f z6~(>L9vM<{dlBB3njGNKyYczGA0jzFN6n0$9;YS0;$fK)h)GZtM;@b?1N5tr>Yy-N zwG%?8my|X$_N@N1B(`_*LSM=o1HRQ&F8P;sV_X?heIG$zLCo#ls$T5HPqz=7o)?z?Si!J za^}epB&4Am5NlzhajmOFBfE(60ghBbqrmmp+Hk(j(?i6Q*3CrP1^)uC1qCs93IJRy&aAmmb^y0BXG(OW}T?0-c64 zUq0LGvPL&!k6h6UJ~FF~$7qPH1G)v}nKA?3yDx7&~gx&m(I}^jI86GApj0HH~ zKH{so%C6S3qj-$KMB{ZoPg*C#dRVibbaJfL!{aB$2gv6CmvD{+P6^Ze3lP!Ix4_H z5ym#>GzldW+y*wnd-)0Q;!&PT9CM%9A(4W<9&p^c?-Sccc#hDcc#{GC0NX$$zfsuw zXQh22x;jq4FOfh4VbZc+40Iu-*_p0m0`lScrasx&4{TRPLZbnHif&JG*`^bBWH9jT zODeU+!`$O#&S=f7F+iRiOUk350~E+41~44rnJwod6;xv9U=K>pp%t;NQkIKTOu<5j z3USxcmfB8cR%Qns=yF~=x%^CAfNU||q*)^W0PM-;KD1ktD%4GWnHiZ6HsEeE>sFfG zO0ZLw>9Ghpe?5 ztJ&jsXjS1Lg0Uz+$6C=^Ybx=>1oLw-etuVS#mM&P0QRnHHQnqEqC0XJ4pPUeoO)3U z7nS9OoeV`c=O4+%X7X}N(`qlXXMx}@e6lW%m#Jy6-tu3@z8s6xj`fG)tGI4%(Mc~X z2MBSpkDYF&V0dmuNx45P;fG^f>qygN)wNZ(LaWSjUCsa=rjy{}N-AGsKO^Kz;1S`i zKKoaSSRjNtARNrY0Y|QVYh__=_&Yenl0?!+z7ciI5_UaZG!7Sb>)KNI0yNa)8rs@-v%j=xb|oDxxzOyy+7Sos8Q?c%%fIgSGoM)=;e`~@YM|V$a>Lhtp0#h`_PI6362)gMsTxd-2R7rF4Cm|( zGc4m7FWFu+s$cB4tLTz&R~gys3Pb6WNK~-j!&ca-_ZiQ=E2T|lti0*U*%=r;XlAE% zpviA7wxcXp86IfWGnzZ3TiV=dkWFbjJ-9%zuK56MgPrJc!6`K!j*KD0{Q;zoNZSSp z-~RwgP4x$Ro3 z9TFweB(c0hiPM@!2XJxyt2xAS8MQuHADhBOKz)F!=9A)N%ZbMyCQ-dqlbu<4gD!EN zv?5a!k*T$q0uP!t*orMX1L2XM(}P*vZU;-?@T!2|Hgo%^;H}Z09`tk%h1#QOyg(-n zg2~H_``6MOGp|}+qO7tiK0BKD+Q#kViw)vKGMutYO_tM$RJK+QgTS^Owbnp09U?CI}2$gxM8xYllAr$wzs$7-A_(S zd2a4)FGFq567sP0JAyv=_U~P1;fDuVXgX+@z>D#7j%i(2><6_fIH4qM$N4O{*R_B+ zFX4j43^y9whFSWwYJ7v+-n-Wh+r?p~L2CqRk;b@H17SfdEyGGNlf7vnQmCVP(}od; zNY9_l%b(`#Ad@ya;CfRh<(4v~LuaTp5Fi1XloCeWYe!~FW_MT7)sf`2URTD*4#(wO z65;N&J$iH-JZ`{;{ln0YabHgIb8LHhR!fff6HMYX@p7PSz5~u;92lSurDwNzmdaP8+N`tZHp!)T$rNi3%kVy>oG9!Lo zMgtE}dx|+>uUy^0A&%Nf?wiVq7|D^3Ks^bra>Sgt%dyb%ol&3S_*+ZSW|CX5uZ~_) z{k>|J!oCNR>sXIoyDKHKj}kMD-MbO;s@!+OJZGs+WYn~q%PVl%jK~Ke7~d?UjQbka z{4C=Gd3`;ms~k~D9>~y=Bin2cN#FfzWHBsyWy)@UXHc_%BtcR>RrytjZJ3;l=hTWL zX#&j>zbWNmSK+l#2Qdrj?@r>$6p%XF(ccPlf!3_u!2~eoMFeyLiQ*Vn4C(>uC{Cez zq_knfr%-Xyq^c++tmhvUczP{gMVec63wa1F9yaF3?Iyl_f(hOwk8==gyC^y9-oB;O z+)Eo|WMGb!^FJNk-v0oJ-RYLm2w;X%tWag4z=SQj#!?$_{)m zcE}VW1G#!M$mCbsa$hW)|LcdaJ?>XX~?CYmo}4R0avAP6!-?m?pPCoD(Hob6SSPGcU$Zw}pZ z2hF;DiJ*iWnBGt5-A#6;)t+etW1XAZ~rlXpDID1me=!rs3$y z%gk}NK}TgTfE7tDHrqI%+GJuCIqQnM1d&G$T;QGeJDSrDs0tkJu*O<`fNsNT%WFF1 zuEi}GLSznd4)rGyYi`lJFpyAh?Seig#+N)T zezyR!h|A=4$lO;1w7UE}%PdKU9kG#$>>m)dyKnqCcblbGlz4H2`;VsH*{&-Ttq~1~ns_z6K1ocn!0zF3%5k})mPuuK3Qyt8fhv)KJ3}qKBD?DqDPydgpmwCcU~kSaQYmbvCtD(ViH&*B}hA&t0fqhoOrEY>^|J z<$%W3tI?sFZ6lIp!%Bw(p&M*|RZiUb`A6ypeEQY+QGS|>IDT$F^7062DI&xKxsh?O zC#TARab}$ZUd4YRJZf8&=S-X&WB&DLfGvw_@k=QYtVDoG@|Gh2XX{W%;%OQ^d^hg-rGwbBy7CLs3&^ai9tVUz2DeX@8p}!$haE~@m{J)48?ygJg$1@8Lv~V zlST?bn9u2A0U!#>X!>>bp~N%Z-`GiPhzEopp*_EfHjLcAteQzAV5NyYHm+((gC}hj zIF3iPw0BnphhTeGI=p9V){%zpbDG*}@)=7nH&coetmy3qme&rusK_;wER-@Y>~yim zCI^2;aGauoN0p5M;>g>>x0jpBGQE5M0N3=R1;z;60%{#XDDG_Jg}^&yN$f>xgX1J} zar2>mLb>qci2>?B z88xSpdZSZ+O%vH(Y4b3X#+ue$hl>|beZ^?)?ltJ46WZ#c`VszIGXd^DSJ(NhTfkWi z%M*A*W-7f8txu=_0Ek)4jR=vIw_a0&^As*Ag74{?X*i#V2Ef}kJC$Mgp&H*3aW8@c zTp*3VbR(zC_M$>(xIoi|n?L4KtSLVSX26j&u^!$~!}!GvT3$8{%lKDA>05okeM#ARc)GBflwEr3@5sVCI>QA$=xPm;6|(qmj7pb~8zGfTI}pZTK5r215LadN2JwOLM5bLR}Fe@s^B#*s`<4`6y9 zN_2Z1VwHK!iWgz;Qk((~I|?cw)sKE)Kqu5vq)Xxsah!BDA^=VZr0C*ry@sO@bvvY>4tUS1ni25Jg&^UrKIX~hTd90<#!$G*-~c_g{#!yQg)<-Z%~x2edt1~xvvwNE}Ns!~I^HM${&E6YtiW0qeQ zL>Tc^c|rPipt_Ci%TJixw}v;##T~!BF9>LPSZ8yd)snotM4h56a@+1J7G(NNBCoDIORYr3z4aW{(qPIqCk131PzAM~bb=u?`#m~A=j zTI5^W!E>nGO4~yaAxZY`YohSa!%igBl_k3{X!h;7jTfFmJ^d@LaK8iSJU+ktvrL8= z2*XLacKMT9h++tVNaZ4$puWJCM*0D8w-5gSgjmOA;z=+-0G31MVejgF=-K2&&I=LI zRCTG-mmM>Xl;#M_f|;R|6WLLdK#Th})K%iSMO$JBXxn~q?^%s+;gJ~e<-Jw z(Ys-W&Gg_&h;h%{-EwAaGC8ntjtp5PI-r>Y@51~8!#YwJ@9y4SJZZsrK2wgIQ}WTU@iZHrBeO>Yj1Mw_ z>zZ|xWm`PiOl~~~uUc;;!t|Q<{W7E$Qq6uK0O|!~nNf8cghx5%$O<F#xh1eMRkaJ)=7r-d=bK`B z16?YLj>KC`<#usG*9R_D)lPTmf;Sbf&>rO4$dXEuMq4qS_^hGRrF~`MiCsW)8NC-Z zu+sv@;vtLyipLrM0MuM@amwUao)$6V_XCkkwz`!F87j(Z`Y~;>mGs3?zqcIa)2Dn@ z$u+cTTMSz3ml3BgK5_3}plN`EU_N!~uUjYVz9{gABgvEMYM!MaNb%B%hf<(|2qUqo zcc~nw2YssBq$aG%Ur6yl_aYf49fm6} ztEQUQGNH4ITs8wT4ClQBqZX5D%9QI((lO#yIB<3&H5~pVk(G^tA5w8wwJ2kbKw^YM zoq*|7)nsN0k%uR2A4+2Vn6#dX#@gQDS}Tjm(U)O0V0A=MT)REHeML0ohc zONjLmZVDj<&e*K7!Q+;aQgV7?n+1DeVaDaQ9<;t)R>_h#FkGO>0lWH-YA0(mq7-%x z>Nhz3LbJL9#bvPg zEu=?14=xYhhEqw^5_wb}(e#fGaihJmM)C$sY)H@8*3V7W?JlDXBntkWE90#%UDh~W z;ZYdfSdNJy+z&u{is&3Q@i$7j$Bgq>HgWmNc~8lP-+WWC`4V017Zoj|>C1UmU^!cH zy-uiG0QIgzqH%DNHImx(Bty}oe2=)TJ(n5CvGTb|2dj1a)|lpmyA%6k_?A9X;P1D3;hz&UmO9Luotoh%Zf6OwSMGkblgnyRrLxvZW7;{d9Z$qs z2CsE1M|LcvlQBxld@-KcA6=+spT~NYzbu6du6l+dyC#jOS?c<5(Y16*t_)=1*CEhj za(#EMeeoNDTEGjPFvlIE{{XyR>AykkSp66{+eWB)kL*35d{?_oHH<-?LFGXwKz)8y zW8zm3y6IY0qoQgpG?V^a%R&{(k_K3f@whe3QrKJR?2y9F;9(RI=Jli8IUGDZ%KEmO za}=@w(KIs-Roiif2M4E0ymF+|=uS+jy9ZySm-j+T+sUW9NmaRJ>~`qAt4Q-(*~Z_B zhr)hC=NaY)vHQ^eB)nO5IJH^ysUnOJV!1`ixa=5#*KUTBRlko>wPciaOcT)d`%pHn z?9Ald1vS}tWo?q`^~{$ND9c)aWNo%2bo=M^0F&w~A;g>;rRpqa@DeMWf4oHlKR;UEHK|tRY;WGZa|WFREcX-g zs2L|BhFH0(V{v4ZB%Dv0wXF``!ujkk;fWucA(yy44P|wG5?c|?84|+HvoC7te-f{B zt{~Pw`DtW^6ftif_`c}fjOoH=IQ6l6K z)b^!I&z#y&U4fSzaV|}Z!WvwD8HNr(pkN&16{&*GYjyts>YE;!%|oMETIqJp%0rXg zjR@j?E7SDR;mJA%KeTRs!j2f}T)R0_$t;rBMXn;8EtIjN`SFa3%4zQ`XacSuCw}xM zJ}q0@j}5Kl<#KRCeYUMH4YikzBj5O-k>yzN{cA=T%2K8dM57f)t>m6Y@~g2XjV+wM z7d(dYu{O%P`J*4@&hR#aP4uyzunc zylAi5)lS@x=2rO*wNBHB?Io9zc@-PE8Rb8E&+%pRY6~1Nu?ZQ^HaeQmD%~UUvh(lP zrYb0C=So#CY1Wn1)0jH4V`c`kTuWyRF}?hA0k|bkf0bpR)io;yS*>P~26tYd{V46U zBU+3}sp!QE5BJfqjGv*Xzp|TiTSjv4Q%QhUT#V;90;#S40EHtoaRvlqb6RHM%_dnK zTk0?+stcB`W~?Z^Zx*bU0`*@Ww!cOuFHobj=@~OM9;bAUDw)&E?15=m71}~6{K?c zboWGAZd)wJ0ChDFfSx0!2m_()4R0^>HHKMM-qKc;z!|~Xy=}vbDt>jH%E(6S$WH$N zN>B4DDYJek!dJ!gVCS`#EDWjk$6Bi;w1X!jJ#mcIpIYF}Y~LAl`x~iOVUAKiuGIZM zhB$>-t<{`J02|417(Y?Xn%4>3RFH|}#mT8UF+j@{z?_U8qiQnyy$lbM+(&x#dl0%P%7w9=2y;wu%@;p&7ZxTWXfu zh<^^^IpS#}8wUNu=j&Q2u5`ASt8oGx{+JU#%>+HqW+=Z> zUgRBu{{T(CPDGU$k@{O>_N23lCW+&8P>4w6BRQ-sl9?nIDGbs^jh13I_pMfiF}l>= z6BvdjK+wngV*vaO+hUt3=QwJY4 zrJC9~EgsxEN6b93Dcw)jfhDERn2#OQ?Q;`0RfyaZ+Lal<*rhl7HnyJ-?qY%Eywm0U ztaErT&PeqD;)qy$Q{m~97rtnZqsGJgS1HtWw6~PoMuoa$^ueHdq;|28*2?Vi9Cg?q zTG5Ta`woJ?k@QOZM9>rx+P$yVO3iUc#G5%3S!npZxR=TpFOf<0HO6f?cUHQ$d!GQR zfsxMGE%Fth;Y|{2DBk+*9dJCU{mm9hr58as!F`(;wVSOrYi&Y6CAf(B*+$L?+<)4W zi8!M7T93e%2%&?YnN^^`d$*t2%9+mDF*!;bZWSf~5!&M#DYSkNWLd-Fr-1DVkXA zri;XExE^T6+mXIN_Q%_$YCaz7+C|DmZ>?NU1^T&YZr)Zfxg+#QgKT?^^Xt;Kd`-g^ z+LCx-zrybdp9HB_f_=KF9e$hoiq^5iBrYP>IUHs#9D`DcTS~oEx?FhHl8_j6^CA7i zZkCrmdG2a^%b4L$^QUi zye#c<@$>wb{@3j5JSD|fHx{o9@|S3E1Ltxv-`=$L`tcick6yL&PM39YcdE;WBHxq) zhAP9{QO6psqUH@=@De4@2`#J(VTnF>A5Ma@njNo;F}a#70(pSt>qOv{ zqPt)sZcsh3T>k(g%acwiozD~T(1*A={uC0>Nkol ztgVQVx{})p9R`Z?O4m1XG}F2B6TN6HH0U6}L;#cNMj^C>E(ko>`d3L~OQSQ&{*3je zj1&io6a;Os#T?V^TsnyXU#(sN5b~+{RN8kZj;&EgVDfCRf^Q8PCLMZatR|?+{sfZm zo`4Mf>f_ri(cu|G<2XUMq2kIot~ttvkbdHGPjQrbB5Uk!qcE3nS%x?4%+t#2E#_i4=F{-{OmOzp2epKa#XpfX& zbtm47m6ll|RRKWgJ1u&ZUg&3-cVBFR5|^uNA#=z0ED>&D3@<)Ygyeh za`^Z?sFOmav^wHxtZn3*$CQZFwh8p05ph-B+X!No;Z=@#k+-7PmKW`7Dm>mKZlp4v z^_t<^SuAxGwLVm4=G^+tVNB9EdR)~ybr$b-sv6we>aj#o&~{B;C^P$V`wLPi%Va#)^&+J=60g`(QIcI(86zDxtv!ylVSWo*HW&{w z6XqX7S@SMCiZRX!yN^Jt{uNuB#G8^x$UbHm86Nqf*1SJq0a-Am&}>TNW{5>OZdFm7 z_RmVa1-z5QLMg{{>sjOEWSdb!BvZFBO!AYq!mCLHk_K?6m3mf;aEjYDMky7glK=q6-kKAi&ZjkM8%|eVeg6Qp zEVhcEn91Dsr`j}dbX?Ij+pRWqNhC5`XAK!S!1W&Wsk->1tXo_D2T8lQSmJEL^0rld zaHrO}?2)iOVNXCXHq8&G8?j!RZs_Wle-(EEPZkextD>v@px3i*XnR99Lsot)UrkIHr!#SD$_wD$pnsq{S$%8=A%wb=Yv z^Z3%dOtjM6L2@FJITA%Z2*=i?*X|zbdw9c;LV5B0Q5!u{&io5&(c#I_Se#({8mX%2 zdWETJtyQkzBh1VCfcF#-isU+ebh71Mr?s#Blv01e$gZk6cF9q>qws4sR~BrN86)K! z$&~BuwF1+ld%@wiG37fb8K&N(*0%*b!9d0_wKr0gKEU!kIA!;;#pa`NGXf$D5Cjfj z4t{iNMA0oS(g{2z4#T1S-%89zP(oq_kDDXgHPWoC<%dkQHlYiuDFf8wde7y_!Wtik z6k!z=q8O|eIfzs!M%e5qcC-Hg%ZkY7Jk87Vt#nY$G;4D(2yx0rDh*ppg8u+cF_h;$ z@%^ihiz9hzT^kmD5!sZ{?xeK2p6sH{6qqUj!3P-Hk7;~Ub8)CgY_<|4U}cy#`NaaU z;oJD-@KNRw^B>v1E28kX3$4AsjViEhwj*;}X9XvvY({L@(z!DK01fK*G8nvmWE1|F z&+Vhygt@hKa2OHL(CbTJml<@&hx$z}qjDA^q~z0lSvW%5IeF@H_Mx#?GQ$cK)udS{`b$toE+ zGro4CT2w6~f-^-0av*hLR*RLT2ng(I8MMh}h!t{*Hs@i~RHY+<<5}(&F#8Vps|?|z z3j;HQ+}7?kwm>D$kn0{Jljg_043@_pNf>&Z9<{0<1?G{to6vNi_leBq-}L9wk&_gA zK_&%`)GkI@zx3@+GhIYNLJu=~(P&_PQqch9^aHh4Hg}J3!bo2}$9fv2psc9xbnTaC z=I_0Fi(BcB$a%z->K+qiaxo#m8)xfY@rw4|pk2uvy*e6x+4B*fdd{TEXmiTJNdS{e zhbjob2i};`qp1h(E6PM^$O%2_(*}tE-^@lU(V%DM&fPJZj1!(-UZ;ARJ%)3Nv{OP( z2m}FH^@%^kTqwhp%J$zirSh;R%ee2}gX*?&Nr`QMStH#}dixrz*!@^IhvQ{ZHgl^sftcO_s*# zgu|5y!klbqrw8cwQr;}_KnjkBrf7Va;>iwDG{sW>jm72kv;JG#NZ^my1!k@|Rj#i5 zQ5?ZZ>fNiU=+-0fiQ>i)@!e|7w#rqoi__Auc=&Ry#nqVdc~FDYPD!nB_MK&8`Q<|a zkTY2+{{Y?xQRGwQ7{+T&#rhVr4gAy16xRyQO1K#q{?z^#;Vb*Q*xu^h(k`bXYUyMD z02FFY+04y3c@n>*W^RPC*uOgBKuZDZw)LErDWjZRLo-DnK2i;I9yilu()ALl3nVY* zMgwg36_uLJByw2trgO3FTOloM%@1p6GsF6o@rhRD7sMlG2dMSMX>_ruNZv9}%N$Rf zvu&SYSedUp2!lYN@~8!f_UlA=4^x_EypJr(tQ;{rWcU6l5yZJUfjoSbnqDc!qO6Pp zb1#>dvGuHk5H^==>fkhpGD+@hS9ZXuZ$qEIS_`hk_cltAFE=xck=Rux+o5oiN`MyD zPj@3q<7VBDbN>J;wRddEX~>a*jlkvaMInvQLv0)-jzDss&{d66`r0^xO$@4fH!|)$ zDLFIAO(d-A_*gwpdohpz%vM3>2YspQ5^O*Op0#Rcj5ZMGn|g}fTgL$d5Kl_i&sKC+ zG*P;?SAJpBi>#j47v?nwuf3T?L!Yd2AswbO1S1JN)O*qB_(kS`LR84ge5a_z6XCrA^2Q}uA!K9Jo~F7M znP#^3%0E*b$u-Yvd1dX;yxw02qmXJ`A9Ej(ZG^tSZYtJ;Z9T6nP|GJepU~%}b{TEZ zo^DaMwP*G11}m2Fq4H1aqpe9{&Bsy@{HSHr;%BX`^r>!nt}N2p=bOy&s2u0t*XdC4 zKM2}t0Vae35AIXmiRtMYOxBu;0(%p+Sd_k85zOLBKcJAwV^BCIk>AzK7Yi+zjETM zFBWNB$1_8o{%TfV5>lTe%g3Fl@uOF!7|)z?up1FX8ffvb+PUn!XQf+yi5rxi`4>5= z^ZY}z5f!zvxsi^;oP{6Ww|MZJVNA`IJf&vh{^=n`e1*qTT>A5lEG4;;C?l3~tXG&| zE`7adb>6M3@dFs8Cfd~gq>m$*dzyWZ4%?=}Lu8Hj=|v)jFfzoqagLR)7?MIID|QHm97;KqlaET( z=+Op6!lI0Mi8K|U22ev_b9}LXl+7ak1H(Y%NrBNtSC({V>@)YrHM$=4ra~?8`P1`*DZ)GK|NbEI@x?_2h(?-o$hnb`8`H3_Rj0QK2ZLn~uRJ#)G5O)JX5f#2Sp`rl;(YI#!F>w)P|l|v&1n>&-9m1S2s zEC8=YhnFM)OA7gkWdu>A3p`ywxOOhOQyJy3vxCT4wazNbax&hRCKL&&F$4<2oupxXp|Rd#6O6B zRHuncY$uj!arz4{DvSY-T57s85V;4^s@vQvG4pLxDaHjLz!jk%zXi;Me@=zMqH&v zcT#ytF${?MoOd*9fRRxL*nM&4NEU(@xi zo~y#vv%tl|$gaJ;D-{&5?Hj0dKgDSD4Qfp`B!cIf>cH#|R*U^bCV1lA{hIuLDp1n} zL&27jT@~h)*Rr)}bnXnYmLZ#9q;HX0`v~;=*b;koNh4v9!+h23#~Sqt2Ts(#ODx~I zS~@cF+f<4gXAjxI0;!37zSL41TX;u@9BQNGOsqRq?Sn%JIP&%T)KGBL$P~#F5!Yqd)`v>55dg9$BA&Z%M;viX zxn$Og{2h0y>9T<=hFD3@DcyngHK^8jS4!eozZQ;`H@L}_SIGYW`iHN$r&`%sA_s&F zf!yTPnN`x-K?@aD8-e`QP8@yFGCSqTXu!e3@}%V?l}-;SDsm{5zYf|emS>QK*p8K; zw6iMQgy40e5x{|YLV>>fQ6`4D$jY4t*`om!&i?>5clDwQ(%6E?Jv@eAOK_l%^g%hh6^wwNG(# z8lATEQP=HHjGb+iHB#nGf&m%W4XVsGbGY(=6!m5p6;=z2*(C{Vyrs_&CkZDEcP&ZCt_cRQN$KaU|;fgm5% zjt3QE^Xyqc%bmJZfsPcPTyNf^P0yGQy*@LB zI0pi_DA38W*vC&=nF(0(*e0RQeW~i)#B*c{C7@o>AS}ZtrAmkfPxq)ym>j!eo6g4@ z?deCz9wn0Fumsn!ka@GW^HB|s4(6pO!~>t^rLw3@0p(%L4{Czq#tVh;+;WWM5wQlO zku(-08KT3BdmVO08{Xu{nh|-*!FCYAo!9oq)Me1F*tpzq$6S z;+B!h&y~ttPzPJPI%T1>g|l-o%aDIS{{ULZ2>Bh|vfSNCtt`5Hw|ArmX-hFJCMwO> z3`rzvU;~>TU`=Sp8dNqo;~3Z3Q-SA+ZyMF)!I$*p?V2$>Kuq~LJjZ&@NucUBvnzPq}NwDmQH44l22M|!)(~Rb;YS0eJ@hFvvVzkrXt_2EcsfBHx`_q#dwhc`j0L` z{RL-q{W56bZ6aAvrrN;J_(nc+2d$8-4 zC^>n3j%vGnKvDW_WjO3eq1PHbB4!U7FN?5{FG@t=US>I%efs>Vkc=j@Ysa24ME5@s zwI?UQwnQDdpENyq!(A6*c{~!J=ffy@PxG2BXP{d|XqIP!a8irx!#Z4Njpe0Q@CRS{aNFJkV zY+#WG91s^9uS%8_E4djxsfc9QD`X>OW)FZ4J!ov$R`U=K zpxTbf2Zo_ku`D;=r3$=>5aSsn`c#~BTu33gJp77II}mF1vY>YylQW7@Q<09cl3 z&!3pDx!loPVv#5V2r=KSQz;-&RkAvA(_~qJ8Oi?uhdWWnMKaaJ=?{d?1$u`|a1epY zg!cordascY#E|E33HsEk$2cGZUP%)tnjpU7yd43_HN&G#*&@l=mmAZv0RI3=Xu~dh zQ**xc84@Sv9H(rNPE3ptDUpIf-viXtyxgE{K4PpEJd>S)`_!@LBp;+=QtkW+SBsztnYYHgC*W?jSuIlNtL_b7)-BM6IJ)T13|^9Fmmt4ra|V_n!Ms zj$1R4`eaV&{{Sk2M3q%JsEOIMW%wfeS+HB z7RQ_nlTt^_Pd_%@#b4xEAguB54<)48{an4R&k^`>*7)}*-!c2q*#;kkNkSe;^C zX~o@{liQh<8qtJ+84 zGe^uuPI^^`Af31Qn$IrG*%eH=VZ*V`i#T;5&ci+H*PJ|I^G3rXrYP2o6)cl-N!-zO zQ0tW#QPdjO8gVp6axs zsCidmw5Eb{>8%oTM7}IXIgIxCSFPiZm&!|^?0Tv6HDW8E_W2LWa0oS6v&P_{Cp(kt zNt#i25k8Yn(Q@4(0QpGUxvN4LoB{_a#aE2Qa~~rfR~-nbCO39+DzPkwaC?2|)=dW& zdiyOp2*^}ij^tCaa2KI8^p#~*WgwC%2;2}z`P6R1q1MHMVpawFkTLvJ?5l!K)dx3| zVT_7q7@oON{8d?WNbkygyBdu%D{qf-25EUq5;5AJ3?v^nbDFDcH56EeA=RWA&w2e_+tvS5WGq&q68B@}Gf1dWcvHDy--epvcdNaSET z522}Hy9y6DB=p*~ssyyKhkjzCZR+f6DxeD=C>w87=$5F$(o2->dctQonpnq|^? zcLW38qPN+G0R!C9mZTqO(nWacm_=hqmyONLc~^a~YK5}PFy%wd^s9aWL;1bBiqM;4 z*+1hs7&9ZWJLmp&9pt;QQ1! z4GXIzz&P|Gq-O)5AXHMqk|87zPW5g6f#SZv`j(fc6f(km7X$XTL7@>hAt9Tm?)9x4 zx^zysE`2JTx-y*dIr@qR6v37Za$6+ObpVI(%)^n7mA}f>o!2fkOFdcPzjwnok&|V| zwGfid>dm?F&WEWKNG-m*XqNXI%NWdW{$c4>x}yy7%M-8qvD`ky*@E2(&h>soR$@Tw z+M~6L!a)+RFD~2Egdf$6k<)s(x;3b((UjJc!M_iJqdVfFUCwu-dgZs`A?8K%<2c0! z(;&FGnIR}bsT{0b9Qk`^ zJJM5Wl30|sUAK{9k;FlY=Q+;Uq5+G<9B+~Kps@Iv0bNJ661I>O3Rq+f{V3xi+$j^5 zI2i3uCt-oPJt{EC%jL#Ty*M1>KD1!bG(Zpz^*8}v1f2FX+f^(voOi2&GE^LGOpHq; zgl&LuJJri#*$Qw0sz?uB-74f{2*Dd3yHlV>T6nomMm_4h@w1bReJapk@qjz}RErXY z^7p4TWgs+=@{^IV>%BwB5=<_{ccSyd+XDuu%9+Li+K}T+F3GK%Y;EppK&Lq$r`Ht? zux@dX6b`xSYC=J7=O>`1u7DJ>ub-dI+zO1jY>-P-puGGI79)qUd6KtUU4 z9cj^7sxgqL59(^1TVW$UQCnwbkCjk__7wOn z0LDRO3aDvLJ#aeJrBnlz7nFLQ^u#i;!lvG&RQ>}I=5oi-bf+YMv5H+rBZv`Rsp5~3 zaL1SHUZSE~K5`unK&jvZYJdz3fDJuQQcZ9Tg`l`NJx@xJ5NCb2^{VLE86+R2O&J`d zV}DAz1(S1f^u<3s-3Qj8&UWklsp`ZW4gJMk0!nr`#(USW4}JU7dGZc=(hhF8s$@ip z#~h>A(!4<#{c1Eo_6tWbHjrDMnkFJEeCI~~C%YH`Lh)}aSN?gmczuPb15 z&N|WpF}cksBPRrt?N*9o`LL^nAmW%#NXb7SYs8U)2+w`1*(Y-N%0jT+{<)w`yMj$BOq$Cr#r9uY80%*daSE#@_?rH6ipq%5{kT)l4@osaweCk;!QgCuU zxUUSpai6UxFPLEO>}hh!H#ijuN0~_*im7*P8^p{(2OX;DAodtEt;>vW=soC&zoQ_- z!){i}_u8-8I?IFrpaZUY(rQ-ukc2yvpOr@f6aiZ&+)^4eCup@ORUu;|eaRhZywZN$ zD|&xo|+=u%PI&{gkErjCbu<<0ByN_N@K9r5h(~8Z&7znjrk8MK%lx zAho|LuIg&qF(U+wQ0U)bkVqYBMU{t5y)#;)B#;ylRv5t>)6|f-1bd339IQ^~BAl#w z@q@p;5|MNruy4s3!1t?Y3G*IP^`Sa>RZ-?Ey%${I9P8jzs2XpBz0gk)no(4HmY zZ3jn;{x0e$M@-4AL~vS z17oqOY`Pua1d4Ecf#2m(?7Qts5BWhO)`Ww{E_sTnVbId-NYB%1Zb;gc9A_KntwP5F zGC-$uZU(}bpmOJ>BMxnV6*>j%kh2V&b?;tR8Q-s|rVh9pA6j<6?@)t)$6nRtImSEt z(gHrdw5zz~7~9sNO^8M}29)AKj)3}8Sdw~orzezTjF*;!PfDo)w;s}ZpDIQJD4 zm=iF-9`z(d5rf*66GX@xn;;C+o2EhjX`#3Er=C^VQKv%M95P3nu%uuBzyq#xP0JC1 z*WQzrurrR8c1k2x0CdTuFN}blKBAfC9jVB24r;F1DDY?LoC8v#k?%}F%tc#?SD1F* zjclq1-rEIl5k?1m(CJAVWPK|~DhE=gf!{=^ETE`4&S<<>(Gs}k867<-@SXN9QT-Rx1siSbYDi8P4qW;gtYwcm zE)I9t^s7-0VyvSejMJh81nmKA0;3{|+qgv;8T6qxugX8&eQNYCmg$eJYKDcf*Mu31 zwl?SmL3I*J-fVsPRLDXh4B4oXXxNq@5D$8`h?zw^NaZVnN3D8ik|qwPW7@1-Iy8q2 zqdoIb$_Z9XgSN-sl$|;a?6GUBIxj1;W510E&8C0h3RN-Abbz-=%Y0 zs`~EpQjomzypkS-^fWx__gvtRK_-^`-BJx=OR)a{5PU+{^(S;U2Hr9-5-qb?$!4DG zEh9U#Z*mC8+maO05`=*yxGaX7^qRe z7(3I0f;oE+N+QWuB%I*(6)@?_27RgkcI&l0eUG(KWTCrnigRoL1bnkmDIk-zJwW9( zK8a(=>Drymj1HuVX!bOLff>Qxs))y&or&7Kq>Oc>X%wBo#dwqd0D2lA{G5y&14@5S z?#TXWp@}&E0HIF{zU{SD63=asPC3Tjw8uEudeesECmkv@PQ>QvlfR`sSYtS*1HMMa zo;iI%z~2=pf)>ffI`rC~%t0Q8n}O6*uyLGJqJ$?0JlUiniP-H+vERKR>AzgnG+G%j zAR*tTDd=)G&)Syka`${6prN@B8{Pjz>n!rFEHCRAO|_xtum;2DhE(I*NbGF1GO}-ru2%q7|lv#EJxE}k}ARz zjDh^sSO5n&+|dXXP6aXuril5-+zjMZJIiq^W%3ww_M&A86$HvKe4?&VvMm5^;C0(O z8m!7Oz6qnZHtQ;2js0j%%w8K1F}JN|lsJuytfK6yHu};o=f3@_Sy4GgH`}Emqh}y( z=}T_Lqr;Rb%IrO9=IO}_ibYBIQo|ho06Ouq!wt?qcKs?Q6%MzaR&G-Kp!cnAklfIq z3?Cb2vNK7i!GP0q5IO^zWAQ}x_Qu}IB#dKcBPO4URQ4`$zK(?Vaa$oQ%7prw4XN>U zjhQ@zODCf5y>pArQu6WnrkUNk5Kh99IHa5aP~)>2e6zLCwFUNUFZky6c=2rIDvPOzmjk}yj)AezO6p8foS)ii>`$;8D|exjhLa3GQ0ebb-)hilwnkgV9Q_ps z>Ti`2jlC6NT}F59C}iyWs{AU80$}sgDJq@+Mo=^RZQ$^bUg>sjcfzJ<0Ou4szH^(AY_g4 zO!Yp7ozx$tLJ}iylDXgQQgv*cR1uu0`E;ol{ooz3L=6(C&f={?Tx5)Vs;@CnSalVC z5HZr36=ifdNhStC`ihQlP6vLt0;j+rk9vuE6VrM&T0|xyMtQN1ezj8S-DOf+^$N8s zw=mw7R59L_D5hH0z;fD3r^z2MK9vR4+E_!)I-w_`_o(=*QoFUd7S`?~QZh&z{p&ie z^C2>^VtVBDtnz}6$Ei9DuMmfBSnbgdV^wdjCXi>uV!p@tpzy-KjAYAWuU?g=(%_Cr zz;y>AhHHzoPI>_ao!iR3Q_z~fW2UvomB<7gy}hW+&_x<$5Dn@}06DXPwN6%rxw3-j zm^|PGb@i#C@L}?lIS0%=D3tpIe&pc$il=yrQ=cASarCQS*bYsXAd)HL4H$F!hV@NTB9SHRUOq|?MmHXm5=MJT8CyK3qZ%b;G>*&| z!j{fGyLuswpERBWcBP3CAwvh<+{bt)ojgm4XxNp*#{U_AdI@EOu?=Bu` z 'my_cloud_name', + 'api_key' => 'my_api_key', + 'api_secret' => 'my_api_secret' +)); diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api.php new file mode 100644 index 0000000..3e8f864 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api.php @@ -0,0 +1,1589 @@ + "\Cloudinary\Api\BadRequest", + 401 => "\Cloudinary\Api\AuthorizationRequired", + 403 => "\Cloudinary\Api\NotAllowed", + 404 => "\Cloudinary\Api\NotFound", + 409 => "\Cloudinary\Api\AlreadyExists", + 420 => "\Cloudinary\Api\RateLimited", + 500 => "\Cloudinary\Api\GeneralError", + ); + + /** + * Tests the reachability of the Cloudinary API + * + * @see https://cloudinary.com/documentation/admin_api#ping_cloudinary + * + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function ping($options = array()) + { + return $this->call_api("get", array("ping"), array(), $options); + } + + /** + * Gets account usage details + * + * Get a report on the status of your Cloudinary account usage details, including + * storage, bandwidth, requests, number of resources, and add-on usage. + * Note that numbers are updated periodically. + * + * @see https://cloudinary.com/documentation/admin_api#usage_report + * + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function usage($options = array()) + { + return $this->call_api("get", array("usage"), array(), $options); + } + + /** + * Lists available resource types + * + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resource_types($options = array()) + { + return $this->call_api("get", array("resources"), array(), $options); + } + + /** + * Lists all uploaded resources optionally filtered by the specified options + * + * @see https://cloudinary.com/documentation/admin_api#browse_resources + * + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: all. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var string prefix Find resources with a public ID that starts with the given prefix + * @var string|array public_ids List resources with the given public IDs (up to 100) + * @var int max_results Max number of resources to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * @var string start_at List resources that were created since the given timestamp(ISO). + * Supported if no prefix or public IDs were specified. + * @var string|int direction Control the order of returned resources. + * Valid values: "asc" (or 1), "desc" (or -1). Default: "desc". + * Note that if a prefix is specified, this parameter is ignored + * and the results are sorted by public ID. + * @var boolean tags Include the list of tag names assigned each resource. Default: false + * @var boolean context Include key-value pairs of context associated with each resource. + * Default: false + * @var boolean moderations Include image moderation status of each listed resource. + * Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resources($options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type"); + $uri = array("resources", $resource_type); + if ($type) { + array_push($uri, $type); + } + $params = $this->only( + $options, + array( + "next_cursor", + "max_results", + "prefix", + "tags", + "context", + "moderations", + "direction", + "start_at", + ) + ); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Lists resources by tag + * + * Retrieve a list of resources with a specified tag. + * This method does not return deleted resources even if they have been backed up. + * + * @see https://cloudinary.com/documentation/admin_api#list_resources_by_tag + * + * @param string $tag The tag name of the resources + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var int max_results Max number of resources to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * @var string|int direction Control the order of returned resources. + * Valid values: "asc" (or 1), "desc" (or -1). Default: "desc". + * Note that if a prefix is specified, this parameter is ignored + * and the results are sorted by public ID. + * @var boolean tags Include the list of tag names assigned each resource. Default: false + * @var boolean context Include key-value pairs of context associated with each resource. + * Default: false + * @var boolean moderations Include image moderation status of each listed resource. + * Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resources_by_tag($tag, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $uri = array("resources", $resource_type, "tags", $tag); + $params = $this->only( + $options, + array("next_cursor", "max_results", "tags", "context", "moderations", "direction") + ); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Lists resources by context + * + * Retrieve a list of resources with a specified context key. + * This method does not return deleted resources even if they have been backed up. + * + * @see https://cloudinary.com/documentation/admin_api#list_resources_by_context + * + * @param string $key Only resources with this context key are returned + * @param string $value Only resources with this value for the context key are returned. + * If this parameter is not provided, all resources with the given context key are returned, + * regardless of the actual value of the key. + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var int max_results Max number of resources to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * @var string|int direction Control the order of returned resources. + * Valid values: "asc" (or 1), "desc" (or -1). Default: "desc". + * Note that if a prefix is specified, this parameter is ignored + * and the results are sorted by public ID. + * @var boolean tags Include the list of tag names assigned each resource. Default: false + * @var boolean context Include key-value pairs of context associated with each resource. + * Default: false + * @var boolean moderations Include image moderation status of each listed resource. + * Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resources_by_context($key, $value = null, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $uri = array("resources", $resource_type, "context"); + $params = $this->only( + $options, + array("next_cursor", "max_results", "tags", "context", "moderations", "direction") + ); + $params["key"] = $key; + $params["value"] = $value; + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Lists resources in moderation queues + * + * @see https://cloudinary.com/documentation/admin_api#list_resources_in_moderation_queues + * + * @param string $kind Type of image moderation queue to list. + * Valid values: "manual", "webpurify", "aws_rek", or "metascan" + * @param string $status Moderation status of resources. + * Valid values: "pending", "approved", "rejected" + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var int max_results Max number of resources to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * @var string|int direction Control the order of returned resources. + * Valid values: "asc" (or 1), "desc" (or -1). Default: "desc". + * Note that if a prefix is specified, this parameter is ignored + * and the results are sorted by public ID. + * @var boolean tags Include the list of tag names assigned each resource. Default: false + * @var boolean context Include key-value pairs of context associated with each resource. + * Default: false + * @var boolean moderations Include image moderation status of each listed resource. + * Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resources_by_moderation($kind, $status, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $uri = array("resources", $resource_type, "moderations", $kind, $status); + $params = $this->only( + $options, + array("next_cursor", "max_results", "tags", "context", "moderations", "direction") + ); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Lists resources by public IDs + * + * @see https://cloudinary.com/documentation/admin_api#list_all_uploaded_images_with_the_given_ids + * + * @param string|array public_ids List resources with the given public IDs (up to 100) + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: all. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var boolean tags Include the list of tag names assigned each resource. Default: false + * @var boolean context Include key-value pairs of context associated with each resource. + * Default: false + * @var boolean moderations Include image moderation status of each listed resource. + * Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resources_by_ids($public_ids, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type); + $params = array_merge($options, array("public_ids" => $public_ids)); + $params = $this->only($params, array("public_ids", "tags", "moderations", "context")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Details of a single resource + * + * Return details of the requested resource as well as all its derived resources. + * Note that if you only need details about the original resource, + * you can also use the Uploader::upload or Uploader::explicit methods, which are not rate limited. + * + * @see https://cloudinary.com/documentation/admin_api#details_of_a_single_resource + * + * @param string $public_id The public ID of the resource. + * @param array $options { + * + * @var string resource_type The type of file. Default: image. Valid values: image, raw, video. + * @var string type The storage type. Default: all. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var boolean colors Include color information: predominant colors and histogram of 32 + * leading colors. Default: false + * @var boolean image_metadata Include IPTC, XMP, and detailed Exif metadata. + * Supported for images, video, and audio. Default: false + * @var boolean exif Deprecated. Use image_metadata instead + * @var boolean faces Include a list of coordinates of detected faces. Default: false + * @var boolean quality_analysis Include quality analysis information. Default: false + * @var boolean pages Report the number of pages in multi-page documents (e.g., PDF). Default: false + * @var boolean phash Include the perceptual hash (pHash) of the uploaded photo for image similarity + * detection. Default: false + * @var boolean coordinates Include previously specified custom cropping coordinates and faces + * coordinates. Default: false + * @var int max_results The number of derived images to return. Default: 10. Maximum: 100 + * @var string derived_next_cursor If there are more derived images than max_results, + * the derived_next_cursor value is returned as part of the response. You can then specify this value + * as the derived_next_cursor parameter of the following listing request. + * @var boolean cinemagraph_analysis Include cinemagraph analysis information. Default: false + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function resource($public_id, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type, $public_id); + $params = $this->only( + $options, + array( + "exif", + "colors", + "faces", + "quality_analysis", + "cinemagraph_analysis", + "image_metadata", + "phash", + "pages", + "coordinates", + "max_results", + "derived_next_cursor" + ) + ); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Restores a deleted resource + * + * Reverts to the latest backed up version of the resource. + * + * @see https://cloudinary.com/documentation/admin_api#restore_a_deleted_resource + * + * @param string|array $public_ids The public IDs of (deleted or existing) backed up resources to restore. + * @param array $options { + * + * @var string resource_type The type of file. Default: image. Valid values: image, raw, video. + * @var string type The storage type: upload, private, or authenticated. Default: upload. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function restore($public_ids, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type, "restore"); + $params = array_merge($options, array("public_ids" => $public_ids)); + + return $this->call_api("post", $uri, $params, $options); + } + + /** + * Updates details of an existing resource + * + * + * Update one or more of the attributes associated with a specified resource. Note that you can also update + * many attributes of an existing resource using the Uploader::explicit method, which is not rate limited. + * + * @see https://cloudinary.com/documentation/admin_api#update_details_of_an_existing_resource + * + * @param string|array $public_id The public ID of the resource to update. + * @param array $options { + * + * @var string resource_type The type of file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: upload. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var string|array tags Tag names to assign to the uploaded image. + * @var string|array context Array of key-value pairs of general textual context metadata + * to attach to an uploaded resource. + * @var string|array face_coordinates Array of coordinates of faces contained in an uploaded image. + * Each face is specified by the X & Y coordinates of the top left corner + * and the width & height of the face. + * For example: array(array(10,20,150,130), array(213, 345, 82, 61)) + * @var string|array custom_coordinates Coordinates of an interesting region contained in an image. + * The given coordinates are used for cropping uploaded images using the custom gravity mode. + * The region is specified by the X & Y coordinates of the top left corner + * and the width & height of the region. For example: array(85, 120, 220, 310). + * @var string moderation_status Manually set image moderation status or override previously + * automatically moderated images by approving or rejecting. Valid values: approved, rejected + * @var float auto_tagging Whether to assign tags to an image according to detected scene + * categories with confidence score higher than the given value. Valid values: 0.0 to 1.0 + * @var string detection Set to 'adv_face' to automatically extract advanced face + * attributes of photos using the Advanced Facial Attributes Detection add-on + * @var string ocr Set to 'adv_ocr' to extract all text elements in an image + * as well as the bounding box coordinates of each detected elementusing the + * OCR Text Detection and Extraction add-on. + * @var string raw_convert Set to 'aspose' to automatically convert Office documents to + * PDF files and other image formats using the Aspose Document Conversion add-on. + * @var string categorization Set to 'imagga_tagging' to automatically detect scene categories + * of photos using the Imagga Auto Tagging add-on. + * @var string background_removal Set to 'remove_the_background' + * (or 'pixelz' - the new name of the company) to automatically clear the background of an uploaded + * photo using the Remove-The-Background Editing add-on. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function update($public_id, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type, $public_id); + + $tags = \Cloudinary::option_get($options, "tags"); + $context = \Cloudinary::option_get($options, "context"); + $face_coordinates = \Cloudinary::option_get($options, "face_coordinates"); + $custom_coordinates = \Cloudinary::option_get($options, "custom_coordinates"); + $access_control = \Cloudinary::option_get($options, "access_control"); + + $primitive_options = $this->only( + $options, + array( + "moderation_status", + "raw_convert", + "ocr", + "categorization", + "detection", + "similarity_search", + "auto_tagging", + "background_removal", + "quality_override", + "notification_url", + ) + ); + + $array_options = array( + "tags" => $tags ? implode(",", \Cloudinary::build_array($tags)) : $tags, + "context" => $context ? \Cloudinary::encode_assoc_array($context) : $context, + "face_coordinates" => $face_coordinates ? \Cloudinary::encode_double_array( + $face_coordinates + ) : $face_coordinates, + "custom_coordinates" => $custom_coordinates ? \Cloudinary::encode_double_array( + $custom_coordinates + ) : $custom_coordinates, + "access_control" => \Cloudinary::encode_array_to_json($access_control), + ); + + $update_options = array_merge($primitive_options, $array_options); + + return $this->call_api("post", $uri, $update_options, $options); + } + + /** + * Deletes resources by public IDs + * + * Delete all resources with the given public IDs (up to 100). + * + * @see https://cloudinary.com/documentation/admin_api#delete_uploaded_images_by_public_ids + * + * @param string|array $public_ids The public IDs of the resources + * @param array $options { + * + * @var string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: upload. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var boolean keep_original Delete only the derived resources. Default: false + * @var boolean invalidate Whether to also invalidate the copies of the resource on the CDN + * Default: false + * @var string next_cursor When a deletion request has more than 1000 resources to delete, + * the response includes the partial boolean parameter set to true, as well as a next_cursor value. + * Use this returned next_cursor value as the next_cursor parameter of the following deletion request + * @var string|array transformations Only the derived resources matching this array of + * transformation parameters will be deleted. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_resources($public_ids, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type); + $params = $this->prepare_delete_resource_params($options, ["public_ids" => $public_ids]); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Deletes resources by prefix. + * + * Delete all resources, including derived resources, where the public ID starts with the given prefix + * (up to a maximum of 1000 original resources). + * + * @see https://cloudinary.com/documentation/admin_api#delete_uploaded_images_by_prefix + * + * @param string $prefix The prefix of the public IDs + * @param array $options { + * + * @option string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @option string type The storage type. Default: upload. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @option boolean keep_original Delete only the derived resources. Default: false + * @option boolean invalidate Whether to also invalidate the copies of the resource on the CDN + * Default: false + * @option string next_cursor When a deletion request has more than 1000 resources to delete, + * the response includes the partial boolean parameter set to true, as well as a next_cursor value. + * Use this returned next_cursor value as the next_cursor parameter of the following deletion request + * @option string|array transformations Only the derived resources matching this array of + * transformation parameters will be deleted. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_resources_by_prefix($prefix, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type); + $params = $this->prepare_delete_resource_params($options, ["prefix" => $prefix]); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Deletes all resources + * + * Delete all resources (of the relevant resource type and type), including derived resources + * (up to a maximum of 1000 original resources) + * + * @see https://cloudinary.com/documentation/admin_api#delete_all_or_selected_resources + * + * @param array $options { + * + * @var string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: upload. + * Valid values: upload, private, authenticated, facebook, twitter, gplus, instagram_name, gravatar, + * youtube, hulu, vimeo, animoto, worldstarhiphop or dailymotion + * @var boolean keep_original Delete only the derived resources. Default: false + * @var boolean invalidate Whether to also invalidate the copies of the resource on the CDN + * Default: false + * @var string next_cursor When a deletion request has more than 1000 resources to delete, + * the response includes the partial boolean parameter set to true, as well as a next_cursor value. + * Use this returned next_cursor value as the next_cursor parameter of the following deletion request + * @var string|array transformations Only the derived resources matching this array of + * transformation parameters will be deleted. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_all_resources($options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = array("resources", $resource_type, $type); + $params = $this->prepare_delete_resource_params($options, ["all" => true]); + + return $this->call_api("delete", $uri, $params, $options); + } + /** + * Deletes resources by tag + * + * Delete all resources (and their derivatives) with the given tag name + * (up to a maximum of 1000 original resources). + * + * @see https://cloudinary.com/documentation/admin_api#delete_resources_by_tags + * + * @param string $tag The tag name of the resources to delete + * @param array $options { + * + * @var string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @var boolean keep_original Delete only the derived resources. Default: false + * @var boolean invalidate Whether to also invalidate the copies of the resource on the CDN + * Default: false + * @var string next_cursor When a deletion request has more than 1000 resources to delete, + * the response includes the partial boolean parameter set to true, as well as a next_cursor value. + * Use this returned next_cursor value as the next_cursor parameter of the following deletion request + * @var string|array transformations Only the derived resources matching this array of + * transformation parameters will be deleted. + * } + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_resources_by_tag($tag, $options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $uri = array("resources", $resource_type, "tags", $tag); + $params = $this->prepare_delete_resource_params($options); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Deletes derived resources + * + * Delete all derived resources with the given IDs (an array of up to 100 derived_resource_ids). + * The derived resource IDs are returned when calling the Details of a single resource method. + * + * @see https://cloudinary.com/documentation/admin_api#delete_derived_resources + * + * @param string|array $derived_resource_ids The derived resource IDs + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_derived_resources($derived_resource_ids, $options = array()) + { + $uri = array("derived_resources"); + $params = array("derived_resource_ids" => $derived_resource_ids); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Deletes derived resources identified by transformation for the provided public_ids + * + * @param string|array $public_ids The resources the derived resources belong to + * @param string|array $transformations The transformation(s) associated with the derived resources + * @param array $options { + * + * @var string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @var string type The storage type. Default: upload. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_derived_by_transformation( + $public_ids, + $transformations = array(), + $options = array() + ) { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $type = \Cloudinary::option_get($options, "type", "upload"); + $uri = ["resources", $resource_type, $type]; + $params = [ + "public_ids" => \Cloudinary::build_array($public_ids), + "keep_original" => true, + ]; + $params["transformations"] = \Cloudinary::build_eager($transformations); + $params = array_merge($params, $this->only($options, ["invalidate"])); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Lists tags + * + * @see https://cloudinary.com/documentation/admin_api#list_tags + * + * @param array $options { + * + * @var string resource_type The type of the file. Default: image. + * Valid values: image, raw, video. + * @var string prefix Find all tags that start with the given prefix. + * @var int max_results Max number of tags to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function tags($options = array()) + { + $resource_type = \Cloudinary::option_get($options, "resource_type", "image"); + $uri = array("tags", $resource_type); + $params = $this->only($options, array("next_cursor", "max_results", "prefix")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Lists transformations + * + * @see https://cloudinary.com/documentation/admin_api#list_transformations + * + * @param array $options { + * + * @var int max_results Max number of transformations to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as + * the next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function transformations($options = array()) + { + $uri = array("transformations"); + $params = $this->only($options, array("named", "next_cursor", "max_results")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Details of a single transformation + * + * @see https://cloudinary.com/documentation/admin_api#details_of_a_single_transformation + * + * @param string|array $transformation The transformation. Can be either a string or an array of parameters. + * For example: "w_150,h_100,c_fill" or array("width" => 150, "height" => 100,"crop" => "fill") + * @param array $options { + * + * @var int max_results Max number of transformations to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as the + * next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function transformation($transformation, $options = array()) + { + $uri = array("transformations"); + $params = $this->only($options, array("next_cursor", "max_results")); + $params["transformation"] = \Cloudinary::build_single_eager($transformation); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Deletes transformation + * + * Note: Deleting a transformation also deletes all the derived images based on this transformation (up to 1000) + * The method returns an error if there are more than 1000 derived images based on this transformation. + * + * @see https://cloudinary.com/documentation/admin_api#delete_transformation + * + * @param string|array $transformation The transformation. Can be either a string or an array of parameters + * For example: "w_150,h_100,c_fill" or array("width" => 150, "height" => 100,"crop" => "fill") + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_transformation($transformation, $options = array()) + { + $uri = array("transformations"); + $params = array("transformation" => \Cloudinary::build_single_eager($transformation)); + if (isset($options["invalidate"])) { + $params["invalidate"] = $options["invalidate"]; + } + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Updates transformation + * + * @see https://cloudinary.com/documentation/admin_api#update_transformation + * + * @param string|array $transformation The transformation. Can be either a string or an array of parameters. + * For example: "w_150,h_100,c_fill" or array("width" => 150, "height" => 100,"crop" => "fill") + * @param array $updates { + * + * @var boolean allowed_for_strict Whether this transformation is allowed when + * Strict Transformations are enabled. + * @var boolean unsafe_update Allows updating an existing named transformation without updating + * all associated derived images (the new settings of the named transformation only take effect from + * now on). + * } + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function update_transformation($transformation, $updates = array(), $options = array()) + { + $uri = array("transformations"); + $params = $this->only($updates, array("allowed_for_strict")); + if (isset($updates["unsafe_update"])) { + $params["unsafe_update"] = $this->transformation_string($updates["unsafe_update"]); + } + $params["transformation"] = \Cloudinary::build_single_eager($transformation); + + return $this->call_api("put", $uri, $params, $options); + } + + /** + * Creates named transformation + * + * @see https://cloudinary.com/documentation/admin_api#create_named_transformation + * + * @param string $name The name of the transformation + * @param string|array $definition The transformation. Can be either a string or an array of parameters. + * For example: "w_150,h_100,c_fill" or array("width" => 150, "height" => 100,"crop" => "fill") + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function create_transformation($name, $definition, $options = array()) + { + $uri = array("transformations"); + $params = array("transformation" => \Cloudinary::build_single_eager($definition), "name" => $name); + + return $this->call_api("post", $uri, $params, $options); + } + + /** + * Lists upload presets + * + * @see https://cloudinary.com/documentation/admin_api#list_upload_presets + * + * @param array $options { + * + * @var int max_results Max number of upload presets to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as the + * next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function upload_presets($options = array()) + { + $uri = array("upload_presets"); + $params = $this->only($options, array("next_cursor", "max_results")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Details of a single upload preset + * + * @see https://cloudinary.com/documentation/admin_api#details_of_a_single_upload_preset + * + * @param string $name The name of the upload preset + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function upload_preset($name, $options = array()) + { + $uri = array("upload_presets", $name); + + return $this->call_api("get", $uri, $this->only($options, array("max_results")), $options); + } + + /** + * Deletes an upload preset + * + * @see https://cloudinary.com/documentation/admin_api#delete_an_upload_preset + * + * @param string $name The name of the upload preset + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_upload_preset($name, $options = array()) + { + $uri = array("upload_presets", $name); + + return $this->call_api("delete", $uri, array(), $options); + } + + /** + * Updates an upload preset + * + * @see https://cloudinary.com/documentation/admin_api#update_an_upload_preset + * + * @param string $name The name of the upload preset + * + * @see \Cloudinary\Uploader::upload() + * + * @param array $options { + * In addition to the options below, any Uploader::upload() actions to apply to assets uploaded with this + * preset. + * + * @var boolean unsigned Whether this upload preset allows unsigned uploading to Cloudinary. + * @var boolean disallow_public_id Whether this upload preset disables assigning a public_id in the + * image upload call + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function update_upload_preset($name, $options = array()) + { + $uri = array("upload_presets", $name); + $params = \Cloudinary\Uploader::build_upload_params($options); + $params = array_merge($params, $this->only($options, array("unsigned", "disallow_public_id", "live"))); + + return $this->call_api("put", $uri, $params, $options); + } + + /** + * Creates an upload preset + * + * @see https://cloudinary.com/documentation/admin_api#create_an_upload_preset + * + * @see \Cloudinary\Uploader::upload() + * + * @param array $options { + * In addition to the options below, any Uploader::upload() parameters to apply to assets uploaded with + * this preset. + * + * @var string name The name to assign to the new upload preset. If not provided, random + * name is generated + * @var boolean unsigned Whether this upload preset allows unsigned uploading to Cloudinary. + * @var boolean disallow_public_id Whether this upload preset disables assigning a public_id in the + * image upload call + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function create_upload_preset($options = array()) + { + $params = \Cloudinary\Uploader::build_upload_params($options); + $params = array_merge( + $params, + $this->only($options, array("name", "unsigned", "disallow_public_id", "live")) + ); + + return $this->call_api("post", array("upload_presets"), $params, $options); + } + + /** + * Lists all root folders + * + * @see https://cloudinary.com/documentation/admin_api#list_all_root_folders + * + * @param array $options { + * + * @var int max_results Max number of root folders to return. Default: 2000. Maximum: 2000 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as the + * next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function root_folders($options = array()) + { + $params = $this->only($options, array("next_cursor", "max_results")); + + return $this->call_api("get", array("folders"), $params, $options); + } + + /** + * Lists subfolders + * + * Lists the name and path of all the subfolders of a given root folder + * + * @see https://cloudinary.com/documentation/admin_api#list_subfolders + * + * @param string $of_folder_path The root folder + * @param array $options { + * + * @var int max_results Max number of sub-folders to return. Default: 2000. Maximum: 2000 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as the + * next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function subfolders($of_folder_path, $options = array()) + { + $uri = array("folders", $of_folder_path); + $params = $this->only($options, array("next_cursor", "max_results")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Creates folder + * + * Creates an empty folder + * + * @param string $path The folder path to create + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\BadRequest + * @throws Api\GeneralError + */ + public function create_folder($path, $options = array()) + { + $uri = array("folders", $path); + + return $this->call_api("post", $uri, array(), $options); + } + + /** + * Deletes folder + * + * Deleted folder must be empty, but can have descendant empty sub folders + * + * @param string $path The folder to delete + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\BadRequest + * @throws Api\GeneralError + */ + public function delete_folder($path, $options = array()) + { + $uri = array("folders", $path); + + return $this->call_api("delete", $uri, array(), $options); + } + + /** + * Lists upload mappings + * + * List all upload mappings by folder and its mapped template (URL). + * + * @see https://cloudinary.com/documentation/admin_api#list_upload_mappings + * + * @param array $options { + * + * @var int max_results Max number of upload presets to return. Default: 10. Maximum: 500 + * @var string next_cursor When a listing request has more results to return than max_results, + * the next_cursor value is returned as part of the response. You can then specify this value as the + * next_cursor parameter of the following listing request. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function upload_mappings($options = array()) + { + $uri = array("upload_mappings"); + $params = $this->only($options, array("next_cursor", "max_results")); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Details of a single upload mapping + * + * Retrieve the mapped template (URL) of a given upload mapping folder. + * + * @see https://cloudinary.com/documentation/admin_api#details_of_a_single_upload_mapping + * + * @param string $name The name of the folder + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function upload_mapping($name, $options = array()) + { + $uri = array("upload_mappings"); + $params = array("folder" => $name); + + return $this->call_api("get", $uri, $params, $options); + } + + /** + * Deletes an upload mapping + * + * Delete an upload mapping by folder name. + * + * @see https://cloudinary.com/documentation/admin_api#delete_an_upload_mapping + * + * @param string $name The name of the folder + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_upload_mapping($name, $options = array()) + { + $uri = array("upload_mappings"); + $params = array("folder" => $name); + + return $this->call_api("delete", $uri, $params, $options); + } + + /** + * Updates an upload mapping + * + * Update an existing upload mapping folder with a new template (URL). + * + * @see https://cloudinary.com/documentation/admin_api#update_an_upload_mapping + * + * @param string $name The name of the folder + * @param array $options { + * + * @var string template The new URL to be mapped to the folder. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function update_upload_mapping($name, $options = array()) + { + $uri = array("upload_mappings"); + $params = array_merge(array("folder" => $name), $this->only($options, array("template"))); + + return $this->call_api("put", $uri, $params, $options); + } + + /** + * Creates an upload mapping + * + * Create a new upload mapping folder and its template (URL). + * + * @see https://cloudinary.com/documentation/admin_api#create_an_upload_mapping + * + * @param string $name The name of the folder to map. + * @param array $options { + * + * @var string template The URL to be mapped to the folder. + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function create_upload_mapping($name, $options = array()) + { + $uri = array("upload_mappings"); + $params = array_merge(array("folder" => $name), $this->only($options, array("template"))); + + return $this->call_api("post", $uri, $params, $options); + } + + /** + * Lists streaming profiles + * + * List streaming profiles associated with the current customer, including built-in and custom profiles. + * + * @see https://cloudinary.com/documentation/admin_api#list_streaming_profiles + * + * @param array $options Additional options + * + * @return Api\Response An array with a "data" key for results + * + * @throws Api\GeneralError + */ + public function list_streaming_profiles($options = array()) + { + return $this->call_api("get", array("streaming_profiles"), array(), $options); + } + + /** + * Gets details of a single streaming profile + * + * Retrieve the details of a single streaming profile by name. + * + * @see https://cloudinary.com/documentation/admin_api#get_details_of_a_single_streaming_profile + * + * @param string $name The identification name of the streaming profile + * @param array $options Additional options + * + * @return Api\Response An array with a "data" key for results + * + * @throws Api\GeneralError + */ + public function get_streaming_profile($name, $options = array()) + { + $uri = array("streaming_profiles/" . $name); + return $this->call_api("get", $uri, array(), $options); + } + + /** + * Deletes or reverts the specified streaming profile + * + * For custom streaming profiles, delete the specified profile. + * For built-in streaming profiles, if the built-in profile was modified, revert the profile to the original + * settings. + * For built-in streaming profiles that have not been modified, the Delete method returns an error. + * + * @see https://cloudinary.com/documentation/admin_api#delete_or_revert_the_specified_streaming_profile + * + * @param string $name The identification name of the streaming profile + * @param array $options Additional options + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function delete_streaming_profile($name, $options = array()) + { + $uri = array("streaming_profiles/" . $name); + return $this->call_api("delete", $uri, array(), $options); + } + + /** + * Updates an existing streaming profile + * + * Update the specified existing streaming profile. You can update both custom and built-in profiles. + * The specified list of representations replaces the previous list. + * + * @param string $name The identification name of the streaming profile + * @param array $options { + * + * @var string display_name A descriptive name for the profile. + * @var array representations An array of structures that defines a custom streaming profile. + * @var string|array transformation Specifies the transformation parameters for the representation. + * All video transformation parameters except video_sampling are supported. Common transformation + * parameters for representations include: width, height (or aspect_ratio), bit_rate, video_codec, + * audio_codec, sample_rate (or fps), etc. + * @see self::create_transformation() + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function update_streaming_profile($name, $options = array()) + { + $uri = array("streaming_profiles/" . $name); + $params = $this->prepare_streaming_profile_params($options); + return $this->call_api("put", $uri, $params, $options); + } + + /** + * Creates a new, custom streaming profile. + * + * @see https://cloudinary.com/documentation/admin_api#create_a_streaming_profile + * + * @param string $name The identification name to assign to the new streaming profile. + * The name is case-insensitive and can contain alphanumeric characters, underscores (_) and hyphens (-). + * If the name is of a predefined profile, the profile will be modified. + * @param array $options { + * + * @var string display_name A descriptive name for the profile. + * @var array representations An array of structures that defines a custom streaming profile. + * @var string|array transformation Specifies the transformation parameters for the representation. + * All video transformation parameters except video_sampling are supported. Common transformation + * parameters for representations include: width, height (or aspect_ratio), bit_rate, video_codec, + * audio_codec, sample_rate (or fps), etc. + * @see self::create_transformation() + * } + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function create_streaming_profile($name, $options = array()) + { + $uri = array("streaming_profiles"); + $params = $this->prepare_streaming_profile_params($options); + $params["name"] = $name; + + return $this->call_api("post", $uri, $params, $options); + } + + /** + * The core function that performs the API call + * + * Function validates configuration, builds query string/request body, performs request and returns result + * + * @param string $method The HTTP method. Valid methods: get, post, put, delete + * @param array $uri REST endpoint of the API + * @param array $params Query/body parameters passed to the method + * @param array $options Additional options. Can be an override of the configuration, headers, etc. + * + * @return Api\Response + * + * @throws Api\GeneralError + */ + public function call_api($method, $uri, $params, &$options) + { + $prefix = \Cloudinary::option_get( + $options, + "upload_prefix", + \Cloudinary::config_get("upload_prefix", "https://api.cloudinary.com") + ); + $cloud_name = \Cloudinary::option_get($options, "cloud_name", \Cloudinary::config_get("cloud_name")); + if (!$cloud_name) { + throw new \InvalidArgumentException("Must supply cloud_name"); + } + $api_key = \Cloudinary::option_get($options, "api_key", \Cloudinary::config_get("api_key")); + if (!$api_key) { + throw new \InvalidArgumentException("Must supply api_key"); + } + $api_secret = \Cloudinary::option_get($options, "api_secret", \Cloudinary::config_get("api_secret")); + if (!$api_secret) { + throw new \InvalidArgumentException("Must supply api_secret"); + } + + $api_url = implode("/", array_merge(array($prefix, "v1_1", $cloud_name), array_map('rawurlencode', $uri))); + + $params = array_filter( + $params, + function ($v) { + return !is_null($v) && ($v !== ""); + } + ); + if ($method == "get") { + $api_url .= "?" . preg_replace("/%5B\d+%5D/", "%5B%5D", http_build_query($params)); + } + + $ch = curl_init($api_url); + + if ($method != "get") { + $post_params = array(); + if (array_key_exists("content_type", $options) && $options["content_type"] == 'application/json') { + $headers = array( + "Content-type: application/json", + "Accept: application/json", + ); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + $post_params = json_encode($params); + } else { + foreach ($params as $key => $value) { + if (is_array($value)) { + $i = 0; + foreach ($value as $item) { + $post_params[$key . "[$i]"] = $item; + $i++; + } + } else { + $post_params[$key] = $value; + } + } + } + curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); + } + curl_setopt($ch, CURLOPT_HEADER, 1); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 60); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + curl_setopt($ch, CURLOPT_USERPWD, "{$api_key}:{$api_secret}"); + curl_setopt($ch, CURLOPT_CAINFO, realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "cacert.pem"); + curl_setopt($ch, CURLOPT_USERAGENT, \Cloudinary::userAgent()); + curl_setopt( + $ch, + CURLOPT_PROXY, + \Cloudinary::option_get($options, "api_proxy", \Cloudinary::config_get("api_proxy")) + ); + $response = $this->execute($ch); + $curl_error = null; + if (curl_errno($ch)) { + $curl_error = curl_error($ch); + } + curl_close($ch); + if ($curl_error != null) { + throw new \Cloudinary\Api\GeneralError("Error in sending request to server - " . $curl_error); + } + if ($response->responseCode == 200) { + return new \Cloudinary\Api\Response($response); + } else { + $exception_class = \Cloudinary::option_get( + self::$CLOUDINARY_API_ERROR_CLASSES, + $response->responseCode + ); + if (!$exception_class) { + throw new \Cloudinary\Api\GeneralError( + "Server returned unexpected status code - {$response->responseCode} - {$response->body}" + ); + } + $json = $this->parse_json_response($response); + throw new $exception_class($json["error"]["message"]); + } + } + + + /** + * Executes HTTP request, parses response headers, leaves body as a string + * + * Based on http://snipplr.com/view/17242/ + * + * @param resource $ch cURL handle + * + * @return \stdClass Containing headers, body, responseCode properties + */ + protected function execute($ch) + { + $string = curl_exec($ch); + $headers = array(); + $content = ''; + $str = strtok($string, "\n"); + $h = null; + while ($str !== false) { + if ($h and trim($str) === '') { + $h = false; + continue; + } + if ($h !== false and false !== strpos($str, ':')) { + $h = true; + list($headername, $headervalue) = explode(':', trim($str), 2); + $headervalue = ltrim($headervalue); + if (isset($headers[$headername])) { + $headers[$headername] .= ',' . $headervalue; + } else { + $headers[$headername] = $headervalue; + } + } + if ($h === false) { + $content .= $str . "\n"; + } + $str = strtok("\n"); + } + $result = new \stdClass; + $result->headers = $headers; + $result->body = trim($content); + $result->responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + return $result; + } + + /** + * Parses JSON string from response body. + * + * @param \stdClass $response Class representing response + * @see \Cloudinary\Api::execute() + * + * @return mixed Decoded JSON object + * + * @throws Api\GeneralError + */ + public static function parse_json_response($response) + { + $result = json_decode($response->body, true); + if ($result == null) { + $error = json_last_error(); + throw new \Cloudinary\Api\GeneralError( + "Error parsing server response ({$response->responseCode}) - {$response->body}. Got - {$error}" + ); + } + + return $result; + } + + /** + * Filters associative array using provided keys + * + * @param array $hash Array to filter + * @param array $keys Keys to keep + * + * @return array Filtered associative array + * + * @todo Replace with array_intersect_key($hash, array_flip($hash)) + */ + protected function only(&$hash, $keys) + { + $result = array(); + foreach ($keys as $key) { + if (isset($hash[$key])) { + $result[$key] = $hash[$key]; + } + } + + return $result; + } + + /** + * Alias for \Cloudinary::generate_transformation_string() + * + * @see \Cloudinary::generate_transformation_string() + * + * @param string|array $transformation + * + * @return string Resulting transformation string + */ + protected function transformation_string($transformation) + { + if (is_string($transformation)) { + return $transformation; + } + + return \Cloudinary::generate_transformation_string($transformation); + } + + /** + * Prepares streaming profile parameters for API calls + * + * @param array $options The options passed to the API + * + * @return array A single profile parameters + */ + protected function prepare_streaming_profile_params($options) + { + $params = $this->only($options, array("display_name")); + if (isset($options['representations'])) { + $array_map = array_map( + function ($representation) { + return array("transformation" => \Cloudinary::generate_transformation_string($representation)); + }, + $options['representations'] + ); + $params["representations"] = json_encode($array_map); + } + + return $params; + } + + /** + * Prepares delete resource parameters for API calls + * + * @param array $options Additional options + * @param array $params The parameters passed to the API + * + * @return array Updated parameters + */ + protected function prepare_delete_resource_params($options, $params = []) + { + $filtered = $this->only($options, ["keep_original", "next_cursor", "invalidate"]); + if (isset($options["transformations"])) { + $filtered["transformations"] = \Cloudinary::build_eager($options["transformations"]); + } + return array_merge($params, $filtered); + } + } + +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/AlreadyExists.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/AlreadyExists.php new file mode 100644 index 0000000..c6da55a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Api/AlreadyExists.php @@ -0,0 +1,11 @@ +rate_limit_reset_at = strtotime($response->headers["X-FeatureRateLimit-Reset"]); + $this->rate_limit_allowed = intval($response->headers["X-FeatureRateLimit-Limit"]); + $this->rate_limit_remaining = intval($response->headers["X-FeatureRateLimit-Remaining"]); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/AuthToken.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/AuthToken.php new file mode 100644 index 0000000..3979ea5 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/AuthToken.php @@ -0,0 +1,92 @@ +?@\[\]^`{\|}~\\\\])/'; + + /** + * Generate an authorization token. + * Options: + * string key - the secret key required to sign the token + * string ip - the IP address of the client + * number start_time - the start time of the token in seconds from epoch + * string expiration - the expiration time of the token in seconds from epoch + * string duration - the duration of the token (from start_time) + * string acl - the ACL for the token + * string url - the URL to authentication in case of a URL token + * + * @param array $options token configuration + * + * @return string the authorization token + * @throws Error if both expiration and duration were not provided + */ + public static function generate($options = array()) + { + $key = \Cloudinary::option_get($options, "key"); + if (!isset($key)) { + throw new \Cloudinary\Error("Missing authentication token key configuration"); + } + $name = \Cloudinary::option_get($options, "token_name", "__cld_token__"); + $start = \Cloudinary::option_get($options, "start_time"); + $expiration = \Cloudinary::option_get($options, "expiration"); + $ip = \Cloudinary::option_get($options, "ip"); + $acl = \Cloudinary::option_get($options, "acl"); + $url = \Cloudinary::option_get($options, "url"); + $duration = \Cloudinary::option_get($options, "duration"); + + if (!strcasecmp($start, "now")) { + $start = time(); + } elseif (is_numeric($start)) { + $start = 0 + $start; + } + if (!isset($expiration)) { + if (isset($duration)) { + $expiration = (isset($start) ? $start : time()) + $duration; + } else { + throw new \Cloudinary\Error("Must provide 'expiration' or 'duration'."); + } + } + $token = array(); + if (isset($ip)) { + array_push($token, "ip=$ip"); + } + if (isset($start)) { + array_push($token, "st=$start"); + } + array_push($token, "exp=$expiration"); + if (isset($acl)) { + array_push($token, "acl=" . self::escape_to_lower($acl)); + } + $to_sign = $token; + if (isset($url) && !isset($acl)) { + array_push($to_sign, "url=" . self::escape_to_lower($url)); + } + $auth = self::digest(join("~", $to_sign), $key); + array_push($token, "hmac=$auth"); + + return "$name=" . join("~", $token); + } + + private static function digest($message, $key = null) + { + if (!isset($key)) { + $key = \Cloudinary::config_get("akamai_key"); + } + $bin_key = pack("H*", $key); + + return hash_hmac("sha256", $message, $bin_key); + } + + private static function escape_to_lower($url) + { + return preg_replace_callback(self::UNSAFE, function ($match) { + return '%'.bin2hex($match[0]); + }, $url); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php new file mode 100644 index 0000000..896cc4c --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php @@ -0,0 +1,56 @@ +setKeyValueStorage($storage); + } + + /** + * Set the storage interface + * @param object $storage KeyValueStorage or PSR-16 compliant cache + * + * @return bool true if successful + */ + private function setKeyValueStorage($storage) + { + if (!is_object($storage)) { + throw new InvalidArgumentException("An instance of valid storage must be provided"); + } + + $storageClasses = class_implements($storage); + $validStorages = ['Cloudinary\Cache\Storage\KeyValueStorage', 'Psr\SimpleCache\CacheInterface']; + + $found = count(\Cloudinary::array_subset($storageClasses, $validStorages)) > 0; + + if (!$found) { + throw new InvalidArgumentException("An instance of valid storage must be provided"); + } + + $this->keyValueStorage = $storage; + + return true; + } + + /** + * {@inheritdoc} + */ + public function get($publicId, $type, $resourceType, $transformation, $format) + { + return json_decode( + $this->keyValueStorage->get( + self::generateCacheKey($publicId, $type, $resourceType, $transformation, $format) + ) + ); + } + + /** + * {@inheritdoc} + */ + public function set($publicId, $type, $resourceType, $transformation, $format, $value) + { + return $this->keyValueStorage->set( + self::generateCacheKey($publicId, $type, $resourceType, $transformation, $format), + json_encode($value) + ); + } + + /** + * {@inheritdoc} + */ + public function delete($publicId, $type, $resourceType, $transformation, $format) + { + return $this->keyValueStorage->delete( + self::generateCacheKey($publicId, $type, $resourceType, $transformation, $format) + ); + } + + /** + * {@inheritdoc} + */ + public function flushAll() + { + return $this->keyValueStorage->clear(); + } + + /** + * Generates key-value storage key from parameters + * + * @param string $publicId The public ID of the resource + * @param string $type The storage type + * @param string $resourceType The type of the resource + * @param string $transformation The transformation string + * @param string $format The format of the resource + * + * @return string Resulting cache key + */ + public static function generateCacheKey($publicId, $type, $resourceType, $transformation, $format) + { + return sha1(implode("/", array_filter([$publicId, $type, $resourceType, $transformation, $format]))); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php new file mode 100644 index 0000000..a7eed0b --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php @@ -0,0 +1,156 @@ +init(); + } + + /** + * Initialize the cache + * @param array $cacheOptions Cache configuration options. + */ + public function init($cacheOptions = array()) + { + $cacheAdapter = \Cloudinary::option_get($cacheOptions, "cache_adapter"); + + $this->setCacheAdapter($cacheAdapter); + } + + /** + * Assigns cache adapter + * + * @param CacheAdapter $cacheAdapter The cache adapter used to store and retrieve values. + * + * @return bool Returns true if the $cacheAdapter is valid + */ + public function setCacheAdapter($cacheAdapter) + { + if (is_null($cacheAdapter) || ! $cacheAdapter instanceof CacheAdapter) { + return false; + } + + $this->cacheAdapter = $cacheAdapter; + + return true; + } + + /** + * Indicates whether cache is enabled or not + * + * @return bool true if a $cach adapter has been set. + */ + public function enabled() + { + return !is_null($this->cacheAdapter); + } + + /** + * Extract the parameters required in order to calculate the key of the cache. + * + * @param array $options Input options + * + * @return array A list of values used to calculate the cache key. + */ + private static function optionsToParameters($options) + { + $optionsCopy = \Cloudinary::array_copy($options); + $transformation = \Cloudinary::generate_transformation_string($optionsCopy); + $format = \Cloudinary::option_get($options, "format", ""); + $type = \Cloudinary::option_get($options, "type", "upload"); + $resourceType = \Cloudinary::option_get($options, "resource_type", "image"); + + return [$type, $resourceType, $transformation, $format]; + } + + /** + * Retrieve the breakpoints of a particular derived resource identified by the $publicId and $options + * + * @param string $publicId The public ID of the resource + * @param array $options Additional options + * + * @return array|null Array of responsive breakpoints, null if not found + */ + public function get($publicId, $options = []) + { + if (!$this->enabled()) { + return null; + } + + list($type, $resourceType, $transformation, $format) = self::optionsToParameters($options); + + return $this->cacheAdapter->get($publicId, $type, $resourceType, $transformation, $format); + } + + /** + * Sets responsive breakpoints identified by public ID and options + * + * @param string $publicId The public ID of the resource + * @param array $options Additional options + * @param array $value Array of responsive breakpoints to set + * + * @return bool true on success or false on failure + */ + public function set($publicId, $options = [], $value = []) + { + if (!$this->enabled()) { + return false; + } + + if (! is_array($value)) { + throw new InvalidArgumentException("An array of breakpoints is expected"); + } + + list($type, $resourceType, $transformation, $format) = self::optionsToParameters($options); + + return $this->cacheAdapter->set($publicId, $type, $resourceType, $transformation, $format, $value); + } + + /** + * Delete responsive breakpoints identified by public ID and options + * + * @param string $publicId The public ID of the resource + * @param array $options Additional options + * + * @return bool true on success or false on failure + */ + public function delete($publicId, $options = []) + { + if (!$this->enabled()) { + return false; + } + + list($type, $resourceType, $transformation, $format) = self::optionsToParameters($options); + + return $this->cacheAdapter->delete($publicId, $type, $resourceType, $transformation, $format); + } + + /** + * Flushe all entries from cache + * + * @return bool true on success or false on failure + */ + public function flushAll() + { + if (!$this->enabled()) { + return false; + } + + return $this->cacheAdapter->flushAll(); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php new file mode 100644 index 0000000..1989e70 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php @@ -0,0 +1,123 @@ +rootPath = $rootPath; + } + + /** + * {@inheritdoc} + */ + public function get($key) + { + if (!$this->exists($key)) { + return null; + } + + return file_get_contents($this->getKeyFullPath($key)); + } + + /** + * {@inheritdoc} + */ + public function set($key, $value) + { + $bytesWritten = file_put_contents($this->getKeyFullPath($key), $value); + + if ($bytesWritten === false) { + return false; + } + + return true; + } + + /** + * {@inheritdoc} + */ + public function delete($key) + { + if (!$this->exists($key)) { + return true; + } + + return unlink($this->getKeyFullPath($key)); + } + + /** + * {@inheritdoc} + */ + public function clear() + { + $success = true; + + $cacheItems = new GlobIterator($this->rootPath . DIRECTORY_SEPARATOR . "*" . self::$itemExt); + + if (!$cacheItems->count()) { + return true; + } + + foreach ($cacheItems as $itemPath) { + if (!unlink($itemPath)) { + $success = false; + } + } + + return $success; + } + + /** + * Generate the file path for the $key. + * + * @param string $key + * + * @return string The absolute path of the value file associated with the $key. + */ + private function getKeyFullPath($key) + { + return $this->rootPath . DIRECTORY_SEPARATOR . $key . self::$itemExt; + } + + /** + * Indicate whether key exists + * + * @param string $key + * + * @return bool True if the file for the given $key exists. + */ + private function exists($key) + { + return file_exists($this->getKeyFullPath($key)); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php new file mode 100644 index 0000000..b02e167 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php @@ -0,0 +1,43 @@ +(\d+\.)?\d+)(?P[%pP])?$/'; + const RANGE_RE = '/^(\d+\.)?\d+[%pP]?\.\.(\d+\.)?\d+[%pP]?$/'; + + const VERSION = "1.16.0"; + + /** + * @internal + * @var array a list of keys used by the cloudinary_url function + */ + public static $URL_KEYS = array( + 'api_secret', + 'auth_token', + 'cdn_subdomain', + 'cloud_name', + 'cname', + 'format', + 'private_cdn', + 'resource_type', + 'secure', + 'secure_cdn_subdomain', + 'secure_distribution', + 'shorten', + 'sign_url', + 'ssl_detected', + 'type', + 'url_suffix', + 'use_root_path', + 'version' + ); + + /** + * Contains information about SDK user agent. Passed to the Cloudinary servers. + * + * Initialized on the first call to {@see self::userAgent()} + * + * Sample value: CloudinaryPHP/1.2.3 (PHP 5.6.7) + * + * @internal + * Do not change this value + */ + private static $USER_AGENT = ""; + + /** + * Additional information to be passed with the USER_AGENT, e.g. "CloudinaryMagento/1.0.1". + * This value is set in platform-specific + * implementations that use cloudinary_php. + * + * The format of the value should be /Version[ (comment)]. + * @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + * + * @internal + * Do not set this value in application code! + * + * @var string + */ + public static $USER_PLATFORM = ""; + + public static $DEFAULT_RESPONSIVE_WIDTH_TRANSFORMATION = array("width" => "auto", "crop" => "limit"); + + private static $config = null; + + public static $JS_CONFIG_PARAMS = array( + "api_key", + "cloud_name", + "private_cdn", + "secure_distribution", + "cdn_subdomain", + ); + + /** + * Provides the {@see self::$USER_AGENT} string that is passed to the Cloudinary servers. + * + * Prepends {@see self::$USER_PLATFORM} if it is defined. + * + * @return string + */ + public static function userAgent() + { + if (empty(self::$USER_AGENT)) { + self::$USER_AGENT = 'CloudinaryPHP/' . self::VERSION . ' (PHP ' . PHP_VERSION. ')'; + } + + if (empty(self::$USER_PLATFORM)) { + return self::$USER_AGENT; + } + + return self::$USER_PLATFORM . ' ' . self::$USER_AGENT; + } + + public static function is_not_null($var) + { + return !is_null($var); + } + + /** + * @internal + * When upload type is fetch, remove the format options. + * In addition, set the fetch_format options to the format value unless it was already set. + * Mutates the $options parameter! + * @param array $options URL and transformation options + */ + public static function patch_fetch_format(&$options) + { + $type = Cloudinary::option_get($options, "type", "upload"); + if ($type != "fetch") return; + + // format does not apply to fetch resources since they are identified by a URL + $format = Cloudinary::option_consume($options, "format"); + if (!isset($options["fetch_format"])) { + $options["fetch_format"] = $format; + } + } + + public static function config($values = null) + { + if (self::$config == null) { + self::reset_config(); + } + if ($values != null) { + self::$config = array_merge(self::$config, $values); + } + + return self::$config; + } + + public static function reset_config() + { + self::config_from_url(getenv("CLOUDINARY_URL")); + } + + public static function config_from_url($cloudinary_url) + { + self::$config = array(); + if ($cloudinary_url) { + $uri = parse_url($cloudinary_url); + + if (!isset($uri["scheme"]) || strtolower($uri["scheme"]) !== "cloudinary") { + throw new InvalidArgumentException("Invalid CLOUDINARY_URL scheme. Expecting to start with 'cloudinary://'"); + } + + $q_params = array(); + + if (isset($uri["query"])) { + parse_str($uri["query"], $q_params); + } + + $private_cdn = isset($uri["path"]) && $uri["path"] != "/"; + $config = array_merge( + $q_params, + array( + "cloud_name" => $uri["host"], + "api_key" => $uri["user"], + "api_secret" => $uri["pass"], + "private_cdn" => $private_cdn, + ) + ); + if ($private_cdn) { + $config["secure_distribution"] = substr($uri["path"], 1); + } + self::$config = array_merge(self::$config, $config); + } + } + + public static function config_get($option, $default = null) + { + return Cloudinary::option_get(self::config(), $option, $default); + } + + public static function option_get($options, $option, $default = null) + { + if (isset($options[$option])) { + return $options[$option]; + } else { + return $default; + } + } + + public static function option_consume(&$options, $option, $default = null) + { + $value = self::option_get($options, $option, $default); + unset($options[$option]); + + return $value; + } + + public static function build_array($value) + { + if (is_null($value)) { + return array(); + } + + if (is_array($value) && !Cloudinary::is_assoc($value)) { + return $value; + } + + return array($value); + } + + + /** + * Converts a value that can be presented as an array of associative arrays. + * + * In case top level item is not an array, it is wrapped with an array + * + * @param array|string $value The value to be converted + * + * Valid values examples: + * - Valid assoc array: array("k" => "v", "k2"=> "v2") + * - Array of assoc arrays: array(array("k" => "v"), array("k2" =>"v2")) + * - JSON decodable string: '{"k": "v"}', or '[{"k": "v"}]' + * + * Invalid values examples: + * - array("not", "an", "assoc", "array") + * - array(123, None), + * - array(array("another", "array")) + * + * @return array|mixed Converted(or original) array of associative arrays + * + * @throws InvalidArgumentException in case value cannot be converted to an array of associative arrays + */ + private static function build_array_of_assoc_arrays($value) + { + if (is_string($value)) { + $value = Cloudinary::json_decode_cb($value, 'Cloudinary::ensure_assoc'); + if (is_null($value)) { + throw new InvalidArgumentException("Failed parsing JSON string value"); + } + } + $value = Cloudinary::build_array($value); + if (!self::is_array_of_assoc($value)) { + throw new InvalidArgumentException("Expected an array of associative arrays"); + } + return $value; + } + + static function ensure_assoc($item) + { + if (is_string($item)) { + $item = json_decode($item, true); + if (is_null($item)) { + throw new InvalidArgumentException("Failed parsing JSON string item"); + } + } + + if (!Cloudinary::is_assoc($item)) { + throw new InvalidArgumentException("Expected an array of associative arrays"); + } + return $item; + } + /** + * Encodes an array of associative arrays to JSON. + * + * This is a wrapper around json_encode with additional preprocessing (DateTime formatting, etc) + * + * @param array $array An array of associative arrays + * + * @return string Resulting JSON string + * + * @throws InvalidArgumentException in case the value is not an array of associative arrays + */ + private static function json_encode_array_of_assoc_arrays($array) + { + return self::json_encode_cb($array, 'Cloudinary::encode_dates'); + } + + static function encode_dates($value) + { + if ($value instanceof DateTime) { + $value = $value->format(DateTime::ISO8601); + } + return $value; + } + + static function is_array_of_assoc($array) + { + if (!is_array($array)) { + return false; + } + + foreach ($array as &$item) { + if (!Cloudinary::is_assoc($item)) { + return false; + } + } + return true; + } + + /** + * Returns the JSON representation of a value + * @param mixed $array

+ * The value being encoded. Can be any type except + * a resource. + *

+ * @param callable $encoder [optional]

+ * An encoder that will be invoked for each value. + *

+ * @param int $options [optional]

+ * Bitmask consisting of JSON_HEX_QUOT, + * JSON_HEX_TAG, + * JSON_HEX_AMP, + * JSON_HEX_APOS, + * JSON_NUMERIC_CHECK, + * JSON_PRETTY_PRINT, + * JSON_UNESCAPED_SLASHES, + * JSON_FORCE_OBJECT, + * JSON_UNESCAPED_UNICODE. The behaviour of these + * constants is described on + * the JSON constants page. + *

+ * @param int $depth [optional]

+ * Set the maximum depth. Must be greater than zero. + *

+ * @return string a JSON encoded string on success or FALSE on failure. + */ + + public static function json_encode_cb($array, $encoder = null, $options = 0, $depth = 512) + { + if (!is_array($array)) { + throw new InvalidArgumentException("Expected an array of associative arrays"); + } + + foreach ($array as &$item) { + $is_assoc = Cloudinary::is_assoc($item); + if (!$is_assoc) { + throw new InvalidArgumentException("Expected an array of associative arrays"); + } + if (!is_null($encoder)) { + foreach ($item as $key => $value) { + $item[$key] = call_user_func($encoder, $value); + } + } + } + + return \json_encode($array); + } + + public static function json_decode_cb($json, $decoder) + { + if (!is_string($json)) { + throw new InvalidArgumentException("Expected an string"); + } + $array = json_decode($json, true); + if (!is_null($decoder) && !is_null($array)) { + foreach ($array as $key => $value) { + try { + $array[$key] = call_user_func($decoder, $value); + } catch (Exception $e) { + } + + } + } + + return $array; + } + + /** + * Wrapper for calling build_array_of_assoc_arrays and json_encode_array_of_assoc_arrays with null value handling. + * + * @see Cloudinary::json_encode_array_of_assoc_arrays + * @see Cloudinary::build_array_of_assoc_arrays + * + * @param array|string $value The value to be converted + * + * @return string Resulting JSON string + * + * @throws InvalidArgumentException in case value cannot be converted and encoded + */ + public static function encode_array_to_json($value) + { + if (is_null($value)) { + return null; + } + $array = Cloudinary::build_array_of_assoc_arrays($value); + return Cloudinary::json_encode_cb($array, 'Cloudinary::encode_dates'); + } + + public static function encode_array($array) + { + return implode(",", Cloudinary::build_array($array)); + } + + public static function encode_double_array($array) + { + $array = Cloudinary::build_array($array); + if (count($array) > 0 && !is_array($array[0])) { + return Cloudinary::encode_array($array); + } else { + $array = array_map('Cloudinary::encode_array', $array); + } + + return implode("|", $array); + } + + public static function encode_assoc_array($array) + { + if (Cloudinary::is_assoc($array)) { + $encoded = array(); + foreach ($array as $key => $value) { + if (!empty($value)) { + $value = preg_replace('/([\|=])/', '\\\$1', $value); + } + array_push($encoded, $key . '=' . $value); + } + + return implode("|", $encoded); + } else { + return $array; + } + } + + /** + * Encodes data with URL safe base64 + * + * @see https://tools.ietf.org/html/rfc4648#section-5 + * + * @param mixed $data The data to encode. + * + * @return string The encoded data, as a string. + */ + private static function base64url_encode($data) + { + return strtr(base64_encode($data), '+/', '-_'); + } + + /** + * Helper function for making a recursive array copy while cloning objects on the way. + * + * @param array $array Source array + * + * @return array Recursive copy of the source array + */ + public static function array_copy($array) + { + if (!is_array($array)) { + return $array; + } + + $result = array(); + foreach ($array as $key => $val) { + if (is_array($val)) { + $result[$key] = self::array_copy($val); + } elseif (is_object($val)) { + $result[$key] = clone $val; + } else { + $result[$key] = $val; + } + } + return $result; + } + + /** + * Returns subset of associative array specified by array of keys + * + * @param array $array Source associative array + * @param array $keys Simple array of keys + * + * @return array Resulting array + */ + public static function array_subset($array, $keys) + { + return array_intersect_key($array, array_flip($keys)); + } + + private static function is_assoc($array) + { + if (!is_array($array)) { + return false; + } + + return $array != array_values($array); + } + + /** @internal + * Prepends associative element to the beginning of an array + * + * @param array $arr The input array. + * @param mixed $key The prepended key + * @param mixed $val The prepended value + * + * @return array The resulting array + */ + public static function array_unshift_assoc(&$arr, $key, $val) + { + $arr = array_reverse($arr, true); + $arr[$key] = $val; + $arr = array_reverse($arr, true); + return $arr; + } + + private static function generate_base_transformation($base_transformation) + { + $options = is_array( + $base_transformation + ) ? $base_transformation : array("transformation" => $base_transformation); + + return Cloudinary::generate_transformation_string($options); + } + + // Warning: $options are being destructively updated! + public static function generate_transformation_string(&$options = array()) + { + $generate_base_transformation = "Cloudinary::generate_base_transformation"; + if (is_string($options)) { + return $options; + } + if ($options == array_values($options)) { + return implode("/", array_map($generate_base_transformation, $options)); + } + + $responsive_width = Cloudinary::option_consume( + $options, + "responsive_width", + Cloudinary::config_get("responsive_width") + ); + + $size = Cloudinary::option_consume($options, "size"); + if ($size) { + list($options["width"], $options["height"]) = preg_split("/x/", $size); + } + + $width = Cloudinary::option_get($options, "width"); + $height = Cloudinary::option_get($options, "height"); + + $has_layer = Cloudinary::option_get($options, "underlay") || Cloudinary::option_get($options, "overlay"); + $angle = implode(".", Cloudinary::build_array(Cloudinary::option_consume($options, "angle"))); + $crop = Cloudinary::option_consume($options, "crop"); + + $no_html_sizes = $has_layer || !empty($angle) || $crop == "fit" || $crop == "limit" || $responsive_width; + + if (strlen($width) == 0 || $width && + (substr($width, 0, 4) == "auto" || floatval($width) < 1 || $no_html_sizes)) { + unset($options["width"]); + } + if (strlen($height) == 0 || $height && (floatval($height) < 1 || $no_html_sizes)) { + unset($options["height"]); + } + + $background = Cloudinary::option_consume($options, "background"); + if ($background) { + $background = preg_replace("/^#/", 'rgb:', $background); + } + $color = Cloudinary::option_consume($options, "color"); + if ($color) { + $color = preg_replace("/^#/", 'rgb:', $color); + } + + $base_transformations = Cloudinary::build_array(Cloudinary::option_consume($options, "transformation")); + if (count(array_filter($base_transformations, "is_array")) > 0) { + $base_transformations = array_map($generate_base_transformation, $base_transformations); + $named_transformation = ""; + } else { + $named_transformation = implode(".", $base_transformations); + $base_transformations = array(); + } + + $effect = Cloudinary::option_consume($options, "effect"); + if (is_array($effect)) { + $effect = implode(":", $effect); + } + + $border = Cloudinary::process_border(Cloudinary::option_consume($options, "border")); + + $flags = implode(".", Cloudinary::build_array(Cloudinary::option_consume($options, "flags"))); + $dpr = Cloudinary::option_consume($options, "dpr", Cloudinary::config_get("dpr")); + + $duration = Cloudinary::norm_range_value(Cloudinary::option_consume($options, "duration")); + $start_offset = Cloudinary::norm_auto_range_value(Cloudinary::option_consume($options, "start_offset")); + $end_offset = Cloudinary::norm_range_value(Cloudinary::option_consume($options, "end_offset")); + $offset = Cloudinary::split_range(Cloudinary::option_consume($options, "offset")); + if (!empty($offset)) { + $start_offset = Cloudinary::norm_auto_range_value($offset[0]); + $end_offset = Cloudinary::norm_range_value($offset[1]); + } + + $video_codec = Cloudinary::process_video_codec_param(Cloudinary::option_consume($options, "video_codec")); + $fps = Cloudinary::process_fps(Cloudinary::option_consume($options, "fps")); + $keyframe_interval = Cloudinary::process_keyframe_interval(Cloudinary::option_consume($options, "keyframe_interval")); + + $overlay = Cloudinary::process_layer(Cloudinary::option_consume($options, "overlay"), "overlay"); + $underlay = Cloudinary::process_layer(Cloudinary::option_consume($options, "underlay"), "underlay"); + $if = Cloudinary::process_if(Cloudinary::option_consume($options, "if")); + $custom_function = Cloudinary::process_custom_function(Cloudinary::option_consume($options, "custom_function")); + $custom_pre_function = Cloudinary::process_custom_pre_function(Cloudinary::option_consume($options, "custom_pre_function")); + $aspect_ratio = Cloudinary::option_consume($options, "aspect_ratio"); + $opacity = Cloudinary::option_consume($options, "opacity"); + $quality = Cloudinary::option_consume($options, "quality"); + $radius = Cloudinary::process_radius(Cloudinary::option_consume($options, "radius")); + $x = Cloudinary::option_consume($options, "x"); + $y = Cloudinary::option_consume($options, "y"); + $zoom = Cloudinary::option_consume($options, "zoom"); + + $params = array( + "a" => self::normalize_expression($angle), + "ar" => self::normalize_expression($aspect_ratio), + "b" => $background, + "bo" => $border, + "c" => $crop, + "co" => $color, + "dpr" => self::normalize_expression($dpr), + "du" => $duration, + "e" => self::normalize_expression($effect), + "eo" => $end_offset, + "fl" => $flags, + "fn" => $custom_function ?: $custom_pre_function, + "fps" => $fps, + "ki" => $keyframe_interval, + "h" => self::normalize_expression($height), + "l" => $overlay, + "o" => self::normalize_expression($opacity), + "q" => self::normalize_expression($quality), + "r" => $radius, + "so" => $start_offset, + "t" => $named_transformation, + "u" => $underlay, + "vc" => $video_codec, + "w" => self::normalize_expression($width), + "x" => self::normalize_expression($x), + "y" => self::normalize_expression($y), + "z" => self::normalize_expression($zoom), + ); + + $simple_params = array( + "ac" => "audio_codec", + "af" => "audio_frequency", + "br" => "bit_rate", + "cs" => "color_space", + "d" => "default_image", + "dl" => "delay", + "dn" => "density", + "f" => "fetch_format", + "g" => "gravity", + "p" => "prefix", + "pg" => "page", + "sp" => "streaming_profile", + "vs" => "video_sampling", + ); + + foreach ($simple_params as $param => $option) { + $params[$param] = Cloudinary::option_consume($options, $option); + } + + $variables = !empty($options["variables"]) ? $options["variables"] : []; + + $var_params = []; + foreach ($options as $key => $value) { + if (preg_match('/^\$/', $key)) { + $var_params[] = $key . '_' . self::normalize_expression((string)$value); + } + } + + sort($var_params); + + if (!empty($variables)) { + foreach ($variables as $key => $value) { + $var_params[] = $key . '_' . self::normalize_expression((string)$value); + } + } + + $variables = join(',', $var_params); + + + $param_filter = function ($value) { + return $value === 0 || $value === '0' || trim($value) == true; + }; + $params = array_filter($params, $param_filter); + ksort($params); + if (isset($if)) { + $if = 'if_' . $if; + } + $join_pair = function ($key, $value) { + return $key . "_" . $value; + }; + $transformation = implode(",", array_map($join_pair, array_keys($params), array_values($params))); + $raw_transformation = Cloudinary::option_consume($options, "raw_transformation"); + $transformation = implode(",", array_filter(array($if, $variables, $transformation, $raw_transformation))); + array_push($base_transformations, $transformation); + if ($responsive_width) { + $responsive_width_transformation = Cloudinary::config_get( + "responsive_width_transformation", + Cloudinary::$DEFAULT_RESPONSIVE_WIDTH_TRANSFORMATION + ); + array_push( + $base_transformations, + Cloudinary::generate_transformation_string($responsive_width_transformation) + ); + } + if (substr($width, 0, 4) == "auto" || $responsive_width) { + $options["responsive"] = true; + } + if (substr($dpr, 0, 4) == "auto") { + $options["hidpi"] = true; + } + + return implode("/", array_filter($base_transformations)); + } + + /** + * Helper function, allows chaining transformations to the end of transformations list + * + * The result of this function is an updated $options parameter + * + * @param array $options Original options + * @param array $transformations Transformations to chain at the end + * + * @return array Resulting options + */ + public static function chain_transformations($options, $transformations) + { + $transformations = \Cloudinary::build_array($transformations); + // preserve url options + $url_options = self::array_subset($options, self::$URL_KEYS); + array_unshift($transformations, $options); + $url_options["transformation"] = $transformations; + return $url_options; + } + + private static $LAYER_KEYWORD_PARAMS = array( + "font_weight" => "normal", + "font_style" => "normal", + "text_decoration" => "none", + "text_align" => null, + "stroke" => "none", + ); + + private static function text_style($layer, $layer_parameter) + { + $font_family = Cloudinary::option_get($layer, "font_family"); + $font_size = Cloudinary::option_get($layer, "font_size"); + $keywords = array(); + + foreach (Cloudinary::$LAYER_KEYWORD_PARAMS as $attr => $default_value) { + $attr_value = Cloudinary::option_get($layer, $attr, $default_value); + if ($attr_value != $default_value) { + array_push($keywords, $attr_value); + } + } + + $letter_spacing = Cloudinary::option_get($layer, "letter_spacing"); + if ($letter_spacing != null) { + array_push($keywords, "letter_spacing_$letter_spacing"); + } + + $line_spacing = Cloudinary::option_get($layer, "line_spacing"); + if ($line_spacing != null) { + array_push($keywords, "line_spacing_$line_spacing"); + } + + $font_antialiasing = Cloudinary::option_get($layer, "font_antialiasing"); + if ($font_antialiasing != null) { + array_push($keywords, "antialias_$font_antialiasing"); + } + + $font_hinting = Cloudinary::option_get($layer, "font_hinting"); + if ($font_hinting != null) { + array_push($keywords, "hinting_$font_hinting"); + } + + $has_text_options = $font_size != null || $font_family != null || !empty($keywords); + if (!$has_text_options) { + return null; + } + if ($font_family == null) { + throw new InvalidArgumentException("Must supply font_family for text in $layer_parameter"); + } + if ($font_size == null) { + throw new InvalidArgumentException("Must supply font_size for text in $layer_parameter"); + } + array_unshift($keywords, $font_size); + array_unshift($keywords, $font_family); + + return implode("_", array_filter($keywords, 'Cloudinary::is_not_null')); + } + + + /** + * Handle overlays. + * Overlay properties can came as array or as string. + * @param $layer + * @param $layer_parameter + * @return string + */ + private static function process_layer($layer, $layer_parameter) + { + // When overlay is array. + if (is_array($layer)) { + $resource_type = Cloudinary::option_get($layer, "resource_type"); + $type = Cloudinary::option_get($layer, "type"); + $text = Cloudinary::option_get($layer, "text"); + $fetch = Cloudinary::option_get($layer, "fetch"); + $text_style = null; + $public_id = Cloudinary::option_get($layer, "public_id"); + $format = Cloudinary::option_get($layer, "format"); + $components = array(); + + if ($public_id != null) { + $public_id = str_replace("/", ":", $public_id); + if ($format != null) { + $public_id = $public_id . "." . $format; + } + } + + // Fetch overlay. + if (!empty($fetch) || $resource_type === "fetch") { + $public_id = null; + $resource_type = "fetch"; + $fetch = self::base64url_encode($fetch); + } // Text overlay. + elseif (!empty($text) || $resource_type === "text") { + $resource_type = "text"; + $type = null; // type is ignored for text layers + $text_style = Cloudinary::text_style($layer, $layer_parameter); #FIXME duplicate + if ($text != null) { + if (!($public_id != null xor $text_style != null)) { + throw new InvalidArgumentException( + "Must supply either style parameters or a public_id when providing text parameter in a text $layer_parameter" + ); + } + $escaped = Cloudinary::smart_escape($text); + $escaped = str_replace("%2C", "%252C", $escaped); + $escaped = str_replace("/", "%252F", $escaped); + # Don't encode interpolation expressions e.g. $(variable) + preg_match_all('/\$\([a-zA-Z]\w+\)/', $text, $matches); + foreach ($matches[0] as $match) { + $escaped_match = Cloudinary::smart_escape($match); + $escaped = str_replace($escaped_match, $match, $escaped); + } + + $text = $escaped; + } + } else { + if ($public_id == null) { + throw new InvalidArgumentException("Must supply public_id for $resource_type $layer_parameter"); + } + if ($resource_type == "subtitles") { + $text_style = Cloudinary::text_style($layer, $layer_parameter); + } + } + + // Build a components array. + if ($resource_type != "image") { + array_push($components, $resource_type); + } + if ($type != "upload") { + array_push($components, $type); + } + array_push($components, $text_style); + array_push($components, $public_id); + array_push($components, $text); + array_push($components, $fetch); + + // Build a valid overlay string. + $layer = implode(":", array_filter($components, 'Cloudinary::is_not_null')); + } // Handle fetch overlay from string definition. + elseif (substr($layer, 0, strlen('fetch:')) === 'fetch:') { + $url = substr($layer, strlen('fetch:')); + $b64 = self::base64url_encode($url); + $layer = 'fetch:' . $b64; + } + + return $layer; + } + + private static $CONDITIONAL_OPERATORS = array( + "=" => 'eq', + "!=" => 'ne', + "<" => 'lt', + ">" => 'gt', + "<=" => 'lte', + ">=" => 'gte', + "&&" => 'and', + "||" => 'or', + "*" => 'mul', + "/" => 'div', + "+" => 'add', + "-" => 'sub', + "^" => 'pow', + ); + private static $PREDEFINED_VARS = array( + "aspect_ratio" => "ar", + "current_page" => "cp", + "duration" => "du", + "face_count" => "fc", + "height" => "h", + "initial_aspect_ratio" => "iar", + "initial_duration" => "idu", + "initial_height" => "ih", + "initial_width" => "iw", + "page_count" => "pc", + "page_x" => "px", + "page_y" => "py", + "tags" => "tags", + "width" => "w", + ); + + private static function translate_if($source) + { + if (isset(self::$CONDITIONAL_OPERATORS[$source[0]])) { + return self::$CONDITIONAL_OPERATORS[$source[0]]; + } elseif (isset(self::$PREDEFINED_VARS[$source[0]])) { + return self::$PREDEFINED_VARS[$source[0]]; + } else { + return $source[0]; + } + } + + private static $IF_REPLACE_RE; + + private static function process_if($if) + { + $if = self::normalize_expression($if); + + return $if; + } + + private static function float_to_string($value) { + if (!is_float($value)) { + return $value; + } + + $locale = localeconv(); + $string = strval($value); + $string = str_replace($locale['decimal_point'], '.', $string); + + return $string; + } + + private static function normalize_expression($exp) + { + if (is_float($exp)) { + return self::float_to_string($exp); + } + if (preg_match('/^!.+!$/', $exp)) { + return $exp; + } else { + if (empty(self::$IF_REPLACE_RE)) { + self::$IF_REPLACE_RE = '/((\|\||>=|<=|&&|!=|>|=|<|\/|\-|\+|\*|\^)(?=[ _])|(?= 2) { + return array($range[0], end($range)); + } else { + if (is_string($range) && preg_match(Cloudinary::RANGE_RE, $range) == 1) { + return explode("..", $range, 2); + } else { + return null; + } + } + } + + private static function norm_range_value($value) + { + if (is_null($value)) { + return null; + } + + // Ensure that trailing decimal(.0) part is not cropped when float is provided + // e.g. float 1.0 should be returned as "1.0" and not "1" as it happens by default + if (is_float($value) && $value - (int)$value == 0) { + $value = sprintf("%.1f", $value); + } + + preg_match(Cloudinary::RANGE_VALUE_RE, $value, $matches); + + if (empty($matches)) { + return null; + } + + $modifier = ''; + if (!empty($matches['modifier'])) { + $modifier = 'p'; + } + + return $matches['value'] . $modifier; + } + + private static function norm_auto_range_value($value) + { + if ($value == 'auto') { + return $value; + } + return self::norm_range_value($value); + } + + private static function process_video_codec_param($param) + { + $out_param = $param; + if (is_array($out_param)) { + $out_param = $param['codec']; + if (array_key_exists('profile', $param)) { + $out_param = $out_param . ':' . $param['profile']; + if (array_key_exists('level', $param)) { + $out_param = $out_param . ':' . $param['level']; + } + } + } + + return $out_param; + } + + /** + * Serializes fps transformation parameter + * + * @param mixed $fps A single number, an array of mixed type, a string, including open-ended and closed range values + * Examples: '24-29.97', 24, 24.973, '-24', [24, 29.97] + * + * @return string + */ + private static function process_fps($fps) + { + if (!is_array($fps)) { + return strval($fps); + } + + return implode("-", array_map("self::normalize_expression", $fps)); + } + + /** + * Serializes keyframe_interval transformation parameter + * + * @param float|int|string $keyframe_interval A positive number or a string + * + * @return string + */ + private static function process_keyframe_interval($keyframe_interval) + { + if (is_string($keyframe_interval) || $keyframe_interval == null) { + return $keyframe_interval; + } + if (!is_numeric($keyframe_interval)) { + throw new InvalidArgumentException("Keyframe interval should be a number or a string"); + } + if ($keyframe_interval < 0) { + throw new InvalidArgumentException("Keyframe interval should be greater than zero"); + } + if (is_int($keyframe_interval)) { + return $keyframe_interval . ".0"; + } + return $keyframe_interval; + } + + // Warning: $options are being destructively updated! + public static function cloudinary_url($source, &$options = array()) + { + $source = self::check_cloudinary_field($source, $options); + self::patch_fetch_format($options); + $type = Cloudinary::option_consume($options, "type", "upload"); + $transformation = Cloudinary::generate_transformation_string($options); + + $resource_type = Cloudinary::option_consume($options, "resource_type", "image"); + $version = Cloudinary::option_consume($options, "version"); + $force_version = Cloudinary::option_consume( + $options, + "force_version", + Cloudinary::config_get("force_version", true) + ); + $format = Cloudinary::option_consume($options, "format"); + + $cloud_name = Cloudinary::option_consume($options, "cloud_name", Cloudinary::config_get("cloud_name")); + if (!$cloud_name) { + throw new InvalidArgumentException("Must supply cloud_name in tag or in configuration"); + } + $secure = Cloudinary::option_consume($options, "secure", Cloudinary::config_get("secure")); + $private_cdn = Cloudinary::option_consume($options, "private_cdn", Cloudinary::config_get("private_cdn")); + $secure_distribution = Cloudinary::option_consume( + $options, + "secure_distribution", + Cloudinary::config_get("secure_distribution") + ); + $cdn_subdomain = Cloudinary::option_consume( + $options, + "cdn_subdomain", + Cloudinary::config_get("cdn_subdomain") + ); + $secure_cdn_subdomain = Cloudinary::option_consume( + $options, + "secure_cdn_subdomain", + Cloudinary::config_get("secure_cdn_subdomain") + ); + $cname = Cloudinary::option_consume($options, "cname", Cloudinary::config_get("cname")); + $shorten = Cloudinary::option_consume($options, "shorten", Cloudinary::config_get("shorten")); + $sign_url = Cloudinary::option_consume($options, "sign_url", Cloudinary::config_get("sign_url")); + $api_secret = Cloudinary::option_consume($options, "api_secret", Cloudinary::config_get("api_secret")); + $url_suffix = Cloudinary::option_consume($options, "url_suffix", Cloudinary::config_get("url_suffix")); + $use_root_path = Cloudinary::option_consume($options, "use_root_path", Cloudinary::config_get("use_root_path")); + $auth_token = Cloudinary::option_consume($options, "auth_token"); + if (is_array($auth_token)) { + $auth_token = array_merge(self::config_get("auth_token", array()), $auth_token); + } elseif (is_null($auth_token)) { + $auth_token = self::config_get("auth_token"); + } + + if (!$source) { + return $source; + } + + if (preg_match("/^https?:\//i", $source)) { + if ($type == "upload") { + return $source; + } + } + + $resource_type_and_type = Cloudinary::finalize_resource_type( + $resource_type, + $type, + $url_suffix, + $use_root_path, + $shorten + ); + $sources = Cloudinary::finalize_source($source, $format, $url_suffix); + $source = $sources["source"]; + $source_to_sign = $sources["source_to_sign"]; + + if (empty($version) && $force_version && strpos($source_to_sign, "/") && + !preg_match("/^https?:\//", $source_to_sign) && !preg_match("/^v[0-9]+/", $source_to_sign)) { + $version = "1"; + } + $version = $version ? "v" . $version : null; + + $signature = null; + if ($sign_url && !$auth_token) { + $to_sign = implode("/", array_filter(array($transformation, $source_to_sign))); + $signature = self::base64url_encode(sha1($to_sign . $api_secret, true)); + $signature = 's--' . substr($signature, 0, 8) . '--'; + } + + $prefix = Cloudinary::unsigned_download_url_prefix( + $source, + $cloud_name, + $private_cdn, + $cdn_subdomain, + $secure_cdn_subdomain, + $cname, + $secure, + $secure_distribution + ); + + $source = preg_replace( + "/([^:])\/+/", + "$1/", + implode( + "/", + array_filter( + array( + $prefix, + $resource_type_and_type, + $signature, + $transformation, + $version, + $source, + ) + ) + ) + ); + + if ($sign_url && $auth_token) { + $path = parse_url($source, PHP_URL_PATH); + $token = \Cloudinary\AuthToken::generate(array_merge($auth_token, array("url" => $path))); + $source = $source . "?" . $token; + } + + return $source; + } + + private static function finalize_source($source, $format, $url_suffix) + { + $source = preg_replace('/([^:])\/\//', '$1/', $source); + if (preg_match('/^https?:\//i', $source)) { + $source = Cloudinary::smart_escape($source); + $source_to_sign = $source; + } else { + $source = Cloudinary::smart_escape(rawurldecode($source)); + $source_to_sign = $source; + if (!empty($url_suffix)) { + if (preg_match('/[\.\/]/i', $url_suffix)) { + throw new InvalidArgumentException("url_suffix should not include . or /"); + } + $source = $source . '/' . $url_suffix; + } + if (!empty($format)) { + $source = $source . '.' . $format; + $source_to_sign = $source_to_sign . '.' . $format; + } + } + + return array("source" => $source, "source_to_sign" => $source_to_sign); + } + + private static function finalize_resource_type($resource_type, $type, $url_suffix, $use_root_path, $shorten) + { + if (empty($type)) { + $type = "upload"; + } + + if (!empty($url_suffix)) { + if ($resource_type == "image" && $type == "upload") { + $resource_type = "images"; + $type = null; + } elseif ($resource_type == "image" && $type == "private") { + $resource_type = "private_images"; + $type = null; + } elseif ($resource_type == "image" && $type == "authenticated") { + $resource_type = "authenticated_images"; + $type = null; + } elseif ($resource_type == "video" && $type == "upload") { + $resource_type = "videos"; + $type = null; + } elseif ($resource_type == "raw" && $type == "upload") { + $resource_type = "files"; + $type = null; + } else { + throw new InvalidArgumentException( + "URL Suffix only supported for image/upload, image/private, image/authenticated, " . + "video/upload and raw/upload" + ); + } + } + + if ($use_root_path) { + if (($resource_type == "image" && $type == "upload") || ($resource_type == "images" && empty($type))) { + $resource_type = null; + $type = null; + } else { + throw new InvalidArgumentException("Root path only supported for image/upload"); + } + } + if ($shorten && $resource_type == "image" && $type == "upload") { + $resource_type = "iu"; + $type = null; + } + $out = ""; + if (!empty($resource_type)) { + $out = $resource_type; + } + if (!empty($type)) { + $out = $out.'/'.$type; + } + + return $out; + } + + // cdn_subdomain and secure_cdn_subdomain + // 1) Customers in shared distribution (e.g. res.cloudinary.com) + // if cdn_domain is true uses res-[1-5].cloudinary.com for both http and https. Setting secure_cdn_subdomain to false disables this for https. + // 2) Customers with private cdn + // if cdn_domain is true uses cloudname-res-[1-5].cloudinary.com for http + // if secure_cdn_domain is true uses cloudname-res-[1-5].cloudinary.com for https (please contact support if you require this) + // 3) Customers with cname + // if cdn_domain is true uses a[1-5].cname for http. For https, uses the same naming scheme as 1 for shared distribution and as 2 for private distribution. + private static function unsigned_download_url_prefix( + $source, + $cloud_name, + $private_cdn, + $cdn_subdomain, + $secure_cdn_subdomain, + $cname, + $secure, + $secure_distribution + ) { + $shared_domain = !$private_cdn; + $prefix = null; + if ($secure) { + if (empty($secure_distribution) || $secure_distribution == Cloudinary::OLD_AKAMAI_SHARED_CDN) { + $secure_distribution = $private_cdn ? $cloud_name . '-res.cloudinary.com' : Cloudinary::SHARED_CDN; + } + + if (empty($shared_domain)) { + $shared_domain = ($secure_distribution == Cloudinary::SHARED_CDN); + } + + if (is_null($secure_cdn_subdomain) && $shared_domain) { + $secure_cdn_subdomain = $cdn_subdomain; + } + + if ($secure_cdn_subdomain) { + $secure_distribution = str_replace( + 'res.cloudinary.com', + "res-" . Cloudinary::domain_shard($source) . ".cloudinary.com", + $secure_distribution + ); + } + + $prefix = "https://".$secure_distribution; + } else { + if ($cname) { + $subdomain = $cdn_subdomain ? "a" . Cloudinary::domain_shard($source) . '.' : ""; + $prefix = "http://" . $subdomain . $cname; + } else { + $host = implode( + array( + $private_cdn ? $cloud_name."-" : "", + "res", + $cdn_subdomain ? "-".Cloudinary::domain_shard($source) : "", + ".cloudinary.com", + ) + ); + $prefix = "http://".$host; + } + } + if ($shared_domain) { + $prefix = $prefix . '/' . $cloud_name; + } + + return $prefix; + } + + private static function domain_shard($source) + { + return (((crc32($source) % 5) + 5) % 5 + 1); + } + + // Warning: $options are being destructively updated! + public static function check_cloudinary_field($source, &$options = array()) + { + // [/][/][v/][.][#] + $IDENTIFIER_RE = "~" . + "^" . + "(?:([^/]+)/)??" . // resource type + "(?:([^/]+)/)??" . // type + "(?:(?:v(\\d+)/)(?:([^#]+)/)?)?" . // version + "([^#/]+?)" . // public ID + "(?:\\.([^.#/]+))?" . //format + "(?:#([^/]+))?" . // signature + "$" . + "~"; + if (!is_object($source) || !method_exists($source, 'identifier')) { + // $source doesn't look like a CloudinaryField, so just return it + return $source; + } + + // $source is a CloudinaryField, parse its identifier + $matches = array(); + $identifier = $source->identifier(); + if (!$identifier || strstr(':', $identifier) !== false || !preg_match($IDENTIFIER_RE, $identifier, $matches)) { + return $source; + } + $optionNames = array('resource_type', 'type', 'version', 'folder', 'public_id', 'format'); + foreach ($optionNames as $index => $optionName) { + if (@$matches[$index + 1]) { + $options[$optionName] = $matches[$index + 1]; + } + } + + return Cloudinary::option_consume($options, 'public_id'); + } + + // Based on http://stackoverflow.com/a/1734255/526985 + private static function smart_escape($str) + { + $revert = array('%3A' => ':', '%2F' => '/'); + + return strtr(rawurlencode($str), $revert); + } + + public static function cloudinary_api_url($action = 'upload', $options = array()) + { + $cloudinary = Cloudinary::option_get( + $options, + "upload_prefix", + Cloudinary::config_get("upload_prefix", "https://api.cloudinary.com") + ); + $cloud_name = Cloudinary::option_get($options, "cloud_name", Cloudinary::config_get("cloud_name")); + if (!$cloud_name) { + throw new InvalidArgumentException("Must supply cloud_name in options or in configuration"); + } + $resource_type = Cloudinary::option_get($options, "resource_type", "image"); + + return implode("/", array($cloudinary, "v1_1", $cloud_name, $resource_type, $action)); + } + + public static function random_public_id() + { + return substr(sha1(uniqid(Cloudinary::config_get("api_secret", "") . mt_rand())), 0, 16); + } + + public static function signed_preloaded_image($result) + { + return $result["resource_type"] . "/upload/v" . $result["version"] . "/" . $result["public_id"] . + (isset($result["format"]) ? "." . $result["format"] : "") . "#" . $result["signature"]; + } + + /** + * Generates a cloudinary url scaled to specified width. + * + * In case transformation parameter is provided, it is used instead of transformations specified in $options + * + * @param string $source Public ID of the resource + * @param int $width Width in pixels of the srcset item + * @param array|string $transformation Custom transformation that overrides transformations provided in $options + * @param array $options Additional options + * + * @return null|string + */ + public static function cloudinary_scaled_url($source, $width, $transformation, $options) + { + if (!empty($transformation)) { + // Replace transformation parameters in $options with those in $transformation + + if(is_string($transformation)){ + $transformation = array("raw_transformation"=> $transformation); + } + $options = self::array_subset($options, self::$URL_KEYS); + $options = array_merge($options, $transformation); + } + + $scale_transformation = ["crop" => "scale", "width" => $width]; + + self::check_cloudinary_field($source, $options); + self::patch_fetch_format($options); + $options = self::chain_transformations($options, $scale_transformation); + + return cloudinary_url_internal($source, $options); + } + + # Utility method that uses the deprecated ZIP download API. + # @deprecated Replaced by {download_zip_url} that uses the more advanced and robust archive generation and download API + public static function zip_download_url($tag, $options = array()) + { + $params = array( + "timestamp" => time(), + "tag" => $tag, + "transformation" => \Cloudinary::generate_transformation_string($options), + ); + $params = Cloudinary::sign_request($params, $options); + return Cloudinary::cloudinary_api_url("download_tag.zip", $options) . "?" . http_build_query($params); + } + + + # Returns a URL that when invokes creates an archive and returns it. + # @param options [Hash] + # @option options [String] resource_type The resource type of files to include in the archive. Must be one of image | video | raw + # @option options [String] type (upload) The specific file type of resources upload|private|authenticated + # @option options [String|Array] tags (nil) list of tags to include in the archive + # @option options [String|Array] public_ids (nil) list of public_ids to include in the archive + # @option options [String|Array] prefixes (nil) Optional list of prefixes of public IDs (e.g., folders). + # @option options [String|Array] transformations Optional list of transformations. + # The derived images of the given transformations are included in the archive. Using the string representation of + # multiple chained transformations as we use for the 'eager' upload parameter. + # @option options [String] mode (create) return the generated archive file or to store it as a raw resource and + # return a JSON with URLs for accessing the archive. Possible values download, create + # @option options [String] target_format (zip) + # @option options [String] target_public_id Optional public ID of the generated raw resource. + # Relevant only for the create mode. If not specified, random public ID is generated. + # @option options [boolean] flatten_folders (false) If true, flatten public IDs with folders to be in the root of the archive. + # Add numeric counter to the file name in case of a name conflict. + # @option options [boolean] flatten_transformations (false) If true, and multiple transformations are given, + # flatten the folder structure of derived images and store the transformation details on the file name instead. + # @option options [boolean] use_original_filename Use the original file name of included images (if available) instead of the public ID. + # @option options [boolean] async (false) If true, return immediately and perform the archive creation in the background. + # Relevant only for the create mode. + # @option options [String] notification_url Optional URL to send an HTTP post request (webhook) when the archive creation is completed. + # @option options [String|Array \Cloudinary::option_get($options, "allow_missing"), + "async" => \Cloudinary::option_get($options, "async"), + "expires_at" => \Cloudinary::option_get($options, "expires_at"), + "flatten_folders" => \Cloudinary::option_get($options, "flatten_folders"), + "flatten_transformations" => \Cloudinary::option_get($options, "flatten_transformations"), + "keep_derived" => \Cloudinary::option_get($options, "keep_derived"), + "mode" => \Cloudinary::option_get($options, "mode"), + "notification_url" => \Cloudinary::option_get($options, "notification_url"), + "phash" => \Cloudinary::option_get($options, "phash"), + "prefixes" => \Cloudinary::build_array(\Cloudinary::option_get($options, "prefixes")), + "public_ids" => \Cloudinary::build_array(\Cloudinary::option_get($options, "public_ids")), + "fully_qualified_public_ids" => \Cloudinary::build_array( + \Cloudinary::option_get($options, "fully_qualified_public_ids") + ), + "skip_transformation_name" => \Cloudinary::option_get($options, "skip_transformation_name"), + "tags" => \Cloudinary::build_array(\Cloudinary::option_get($options, "tags")), + "target_format" => \Cloudinary::option_get($options, "target_format"), + "target_public_id" => \Cloudinary::option_get($options, "target_public_id"), + "target_tags" => \Cloudinary::build_array(\Cloudinary::option_get($options, "target_tags")), + "timestamp" => time(), + "transformations" => \Cloudinary::build_eager(\Cloudinary::option_get($options, "transformations")), + "type" => \Cloudinary::option_get($options, "type"), + "use_original_filename" => \Cloudinary::option_get($options, "use_original_filename"), + ); + array_walk( + $params, + function (&$value, $key) { + $value = (is_bool($value) ? ($value ? "1" : "0") : $value); + } + ); + + return array_filter( + $params, + function ($v) { + return !is_null($v) && ($v !== ""); + } + ); + } + + public static function build_eager($transformations) + { + $eager = array(); + foreach (\Cloudinary::build_array($transformations) as $trans) { + $single_eager = \Cloudinary::build_single_eager($trans); + array_push($eager, $single_eager); + } + + return implode("|", $eager); + } + + /** + * Builds a single eager transformation which consists of transformation and (optionally) format joined by "/" + * + * @param array|string $options Options containing transformation parameters and (optionally) a "format" key + * format can be a string value (jpg, gif, etc) or can be set to "" (empty string). + * The latter leads to transformation ending with "/", which means "No extension, use original format" + * If format is not provided or set to null, only transformation is used (without the trailing "/") + * + * @return string + */ + public static function build_single_eager($options) + { + if (is_string($options)) { + return $options; + } + + $trans_str = \Cloudinary::generate_transformation_string($options); + + if (empty($trans_str)) { + return ""; + } + + $file_format_str = ""; + if (isset($options["format"])) { + $file_format_str = "/" . $options["format"]; + } + + return $trans_str . $file_format_str; + } + + public static function private_download_url($public_id, $format, $options = array()) + { + $cloudinary_params = Cloudinary::sign_request( + array( + "timestamp" => time(), + "public_id" => $public_id, + "format" => $format, + "type" => Cloudinary::option_get($options, "type"), + "attachment" => Cloudinary::option_get($options, "attachment"), + "expires_at" => Cloudinary::option_get($options, "expires_at"), + ), + $options + ); + + return Cloudinary::cloudinary_api_url("download", $options) . "?" . http_build_query($cloudinary_params); + } + + public static function sign_request($params, &$options) + { + $api_key = Cloudinary::option_get($options, "api_key", Cloudinary::config_get("api_key")); + if (!$api_key) { + throw new \InvalidArgumentException("Must supply api_key"); + } + $api_secret = Cloudinary::option_get($options, "api_secret", Cloudinary::config_get("api_secret")); + if (!$api_secret) { + throw new \InvalidArgumentException("Must supply api_secret"); + } + + # Remove blank parameters + $params = array_filter( + $params, + function ($v) { + return isset($v) && $v !== ""; + } + ); + + $params["signature"] = Cloudinary::api_sign_request($params, $api_secret); + $params["api_key"] = $api_key; + + return $params; + } + + public static function api_sign_request($params_to_sign, $api_secret) + { + $params = array(); + foreach ($params_to_sign as $param => $value) { + if (isset($value) && $value !== "") { + if (!is_array($value)) { + $params[$param] = $value; + } else { + if (count($value) > 0) { + $params[$param] = implode(",", $value); + } + } + } + } + ksort($params); + $join_pair = function ($key, $value) { + return $key . "=" . $value; + }; + $to_sign = implode("&", array_map($join_pair, array_keys($params), array_values($params))); + return sha1($to_sign . $api_secret); + } + + public static function html_attrs($options, $only = null) + { + $attrs = array(); + foreach ($options as $k => $v) { + $key = $k; + $value = $v; + if (is_int($k)) { + $key = $v; + $value = ""; + } + if (is_array($only) && array_search($key, $only) !== false || !is_array($only)) { + $attrs[$key] = $value; + } + } + ksort($attrs); + + $join_pair = function ($key, $value) { + $out = $key; + if (!empty($value)) { + $out .= '=\'' . htmlspecialchars($value, ENT_QUOTES) . '\''; + } + + return $out; + }; + + return implode(" ", array_map($join_pair, array_keys($attrs), array_values($attrs))); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/CloudinaryField.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/CloudinaryField.php new file mode 100644 index 0000000..d247fab --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/CloudinaryField.php @@ -0,0 +1,63 @@ +identifier = $identifier; + } + + public function __toString() + { + return (string)explode('#', $this->identifier())[0]; + } + + public function identifier() + { + return $this->identifier; + } + + public function url($options = array()) + { + if (!$this->identifier) { + // TODO: Error? + return null; + } + + return cloudinary_url($this, $options); + } + + public function upload($file, $options = array()) + { + $options['return_error'] = false; + $ret = Uploader::upload($file, $options); + $preloaded = new PreloadedFile(\Cloudinary::signed_preloaded_image($ret)); + $this->identifier = $preloaded->extended_identifier(); + } + + public function delete() + { + $options['return_error'] = false; + Uploader::destroy($this->identifier); + unset($this->identifier); + } + + public function verify() + { + $preloaded = new PreloadedFile($this->identifier); + return $preloaded->is_valid(); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Error.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Error.php new file mode 100644 index 0000000..e0b0461 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Error.php @@ -0,0 +1,11 @@ + "mp4", + "codecs" => "hev1", + "transformations" => ["video_codec" => "h265"] + ], + [ + "type" => "webm", + "codecs" => "vp9", + "transformations" => ["video_codec" => "vp9"] + ], + [ + "type" => "mp4", + "transformations" => ["video_codec" => "auto"] + ], + [ + "type" => "webm", + "transformations" => ["video_codec" => "auto"] + ], + ]; + } + + function cl_upload_url($options = array()) + { + $options['resource_type'] = Cloudinary::option_get($options, 'resource_type', 'auto'); + $endpoint = array_key_exists('chunk_size', $options) ? 'upload_chunked' : 'upload'; + + return Cloudinary::cloudinary_api_url($endpoint, $options); + } + + function cl_upload_tag_params($options = array()) + { + $params = Cloudinary\Uploader::build_upload_params($options); + if (Cloudinary::option_get($options, "unsigned")) { + $params = array_filter( + $params, + function ($v) { + return !is_null($v) && ($v !== ""); + } + ); + } else { + $params = Cloudinary::sign_request($params, $options); + } + + return json_encode($params); + } + + function cl_unsigned_image_upload_tag($field, $upload_preset, $options = array()) + { + return cl_image_upload_tag( + $field, + array_merge($options, array("unsigned" => true, "upload_preset" => $upload_preset)) + ); + } + + function cl_image_upload_tag($field, $options = array()) + { + return cl_upload_tag($field, $options); + } + + function cl_upload_tag($field, $options = array()) + { + $html_options = Cloudinary::option_get($options, "html", array()); + + $classes = array("cloudinary-fileupload"); + if (isset($html_options["class"])) { + array_unshift($classes, Cloudinary::option_consume($html_options, "class")); + } + $tag_options = array_merge( + $html_options, + array( + "type" => "file", + "name" => "file", + "data-url" => cl_upload_url($options), + "data-form-data" => cl_upload_tag_params($options), + "data-cloudinary-field" => $field, + "class" => implode(" ", $classes), + ) + ); + if (array_key_exists('chunk_size', $options)) { + $tag_options['data-max-chunk-size'] = $options['chunk_size']; + } + + return ''; + } + + function cl_form_tag($callback_url, $options = array()) + { + $form_options = Cloudinary::option_get($options, "form", array()); + + $options["callback_url"] = $callback_url; + + $params = Cloudinary\Uploader::build_upload_params($options); + $params = Cloudinary::sign_request($params, $options); + + $api_url = Cloudinary::cloudinary_api_url("upload", $options); + + $form = "
\n"; + foreach ($params as $key => $value) { + $attributes = array( + "name" => $key, + "value" => $value, + "type" => "hidden", + ); + $form .= "\n"; + } + $form .= "
\n"; + + return $form; + } + + /** + * Generates an HTML meta tag that enables Client-Hints + * + * @return string Resulting meta tag + */ + function cl_client_hints_meta_tag() + { + return ""; + } + /** + * @internal + * Helper function. Validates src_data parameters + * + * @param array $srcset_data { + * + * @var array breakpoints An array of breakpoints. + * @var int min_width Minimal width of the srcset images. + * @var int max_width Maximal width of the srcset images. + * @var int max_images Number of srcset images to generate. + * } + * + * @return bool true on success or false on failure + */ + function validate_srcset_data($srcset_data) + { + foreach (array('min_width', 'max_width', 'max_images') as $arg) { + if (empty($srcset_data[$arg]) || !is_numeric($srcset_data[$arg]) || is_string($srcset_data[$arg])) { + error_log('Either valid (min_width, max_width, max_images) or breakpoints must be provided ' . + 'to the image srcset attribute'); + return false; + } + } + + if ($srcset_data['min_width'] > $srcset_data['max_width']) { + error_log('min_width must be less than max_width'); + return false; + } + + if ($srcset_data['max_images'] <= 0) { + error_log('max_images must be a positive integer'); + return false; + } + + return true; + } + + /** + * @internal + * Helper function. Calculates static srcset breakpoints using provided parameters + * + * Either the breakpoints or min_width, max_width, max_images must be provided. + * + * @param array $srcset_data { + * + * @var array breakpoints An array of breakpoints. + * @var int min_width Minimal width of the srcset images. + * @var int max_width Maximal width of the srcset images. + * @var int max_images Number of srcset images to generate. + * } + * + * @return array Array of breakpoints + * + * @throws InvalidArgumentException In case of invalid or missing parameters + */ + function generate_breakpoints($srcset_data) + { + $breakpoints = Cloudinary::option_get($srcset_data, "breakpoints", array()); + + if (!empty($breakpoints)) { + return $breakpoints; + } + + if (!validate_srcset_data($srcset_data)) { + return null; + } + + $min_width = $srcset_data['min_width']; + $max_width = $srcset_data['max_width']; + $max_images = $srcset_data['max_images']; + + if ($max_images == 1) { + // if user requested only 1 image in srcset, we return max_width one + $min_width = $max_width; + } + + $step_size = (int)ceil(($max_width - $min_width) / ($max_images > 1 ? $max_images - 1 : 1)); + + $curr_breakpoint = $min_width; + + while ($curr_breakpoint < $max_width) { + array_push($breakpoints, $curr_breakpoint); + $curr_breakpoint += $step_size; + } + + array_push($breakpoints, $max_width); + + return $breakpoints; + } + + /** + * @internal + * Helper function. Retrieves responsive breakpoints list from cloudinary server + * + * When passing special string to transformation `width` parameter of form `auto:breakpoints{parameters}:json`, + * the response contains JSON with data of the responsive breakpoints + * + * @param string $public_id The public ID of the image + * @param array $srcset_data { + * + * @var int min_width Minimal width of the srcset images + * @var int max_width Maximal width of the srcset images + * @var int bytes_step Minimal bytes step between images + * @var int max_images Number of srcset images to generate + * } + * @param array $options Cloudinary url options + * + * @return array Resulting breakpoints + * + * @throws \Cloudinary\Error + */ + function fetch_breakpoints($public_id, $srcset_data = array(), $options = array()) + { + $min_width = \Cloudinary::option_get($srcset_data, 'min_width', 50); + $max_width = \Cloudinary::option_get($srcset_data, 'max_width', 1000); + $bytes_step = \Cloudinary::option_get($srcset_data, 'bytes_step', 20000); + $max_images = \Cloudinary::option_get($srcset_data, 'max_images', 20); + $transformation = \Cloudinary::option_get($srcset_data, 'transformation'); + + $kbytes_step = (int)ceil($bytes_step / 1024); + + $width_param = "auto:breakpoints_${min_width}_${max_width}_${kbytes_step}_${max_images}:json"; + // We use Cloudinary::cloudinary_scaled_url function, passing special `width` parameter + $breakpoints_url = Cloudinary::cloudinary_scaled_url($public_id, $width_param, $transformation, $options); + + $client = new HttpClient(); + + return $client->getJSON($breakpoints_url)["breakpoints"]; + } + + /** + * @internal + * Helper function. Gets from cache or calculates srcset breakpoints using provided parameters + * + * @param string $public_id Public ID of the resource + * @param array $srcset_data { + * + * @var array breakpoints An array of breakpoints. + * @var int min_width Minimal width of the srcset images. + * @var int max_width Maximal width of the srcset images. + * @var int max_images Number of srcset images to generate. + * } + * + * @param array $options Additional options + * + * @return array|null Array of breakpoints, null if failed + */ + function get_or_generate_breakpoints($public_id, $srcset_data, $options = array()) + { + $breakpoints = Cloudinary::option_get($srcset_data, "breakpoints", null); + + if (!empty($breakpoints)) { + # User might provide explicit breakpoints, in this case we omit calculation and cache + return $breakpoints; + } + + if (Cloudinary::option_get($srcset_data, "use_cache", false)) { + $breakpoints = ResponsiveBreakpointsCache::instance()->get($public_id, $options); + + if (is_null($breakpoints)) { + // Cache miss, let's bring breakpoints from Cloudinary + try { + $breakpoints = fetch_breakpoints($public_id, $srcset_data, $options); + } catch (\Cloudinary\Error $e) { + error_log("Failed getting responsive breakpoints: $e"); + } + + if (!is_null($breakpoints)) { + ResponsiveBreakpointsCache::instance()->set($public_id, $options, $breakpoints); + } + } + } + + if (empty($breakpoints)) { + // Static calculation if cache is not enabled or we failed to fetch breakpoints + $breakpoints = generate_breakpoints($srcset_data); + } + + return $breakpoints; + } + + /** + * @internal + * Helper function. Generates srcset attribute value of the HTML img tag + * + * @param array $srcset_data { + * + * @var array breakpoints An array of breakpoints. + * @var int min_width Minimal width of the srcset images. + * @var int max_width Maximal width of the srcset images. + * @var int max_images Number of srcset images to generate. + * } + * + * @param array $options Additional options. + * + * @return string Resulting srcset attribute value + * + * @throws InvalidArgumentException In case of invalid or missing parameters + */ + function generate_srcset_attribute($public_id, $breakpoints, $transformation = null, $options = array()) + { + if (empty($breakpoints)) { + return null; + } + + $items = array(); + foreach ($breakpoints as $breakpoint) { + array_push( + $items, + Cloudinary::cloudinary_scaled_url($public_id, $breakpoint, $transformation, $options) . " {$breakpoint}w" + ); + } + + return implode(", ", $items); + } + + /** + * @internal + * Helper function. Generates a sizes attribute for HTML tags + * + * @var array breakpoints An array of breakpoints. + * + * @return string Resulting sizes attribute value + * + */ + function generate_sizes_attribute($breakpoints) + { + if (empty($breakpoints)) { + return null; + } + + $sizes_items = array(); + foreach ($breakpoints as $breakpoint) { + array_push($sizes_items, "(max-width: {$breakpoint}px) {$breakpoint}px"); + } + + return implode(", ", $sizes_items); + } + + /** + * @internal + * Helper function. Generates srcset and sizes attributes of the image tag + * + * Generated attributes are added to $attributes argument + * + * @param string $public_id The public ID of the resource + * @param array $attributes Existing attributes + * @param array $srcset_data { + * + * @var array breakpoints An array of breakpoints. + * @var int min_width Minimal width of the srcset images. + * @var int max_width Maximal width of the srcset images. + * @var int max_images Number of srcset images to generate. + * } + * + * @param array $options Additional options. + * + * @return array The responsive attributes + */ + function generate_image_responsive_attributes($public_id, $attributes, $srcset_data, $options) + { + // Create both srcset and sizes here to avoid fetching breakpoints twice + + $responsive_attributes = array(); + if (empty($srcset_data)) { + return $responsive_attributes; + } + + $breakpoints = null; + + if (!array_key_exists("srcset", $attributes)) { + $breakpoints = get_or_generate_breakpoints($public_id, $srcset_data, $options); + $transformation = Cloudinary::option_get($srcset_data, "transformation"); + $srcset_attr = generate_srcset_attribute($public_id, $breakpoints, $transformation, $options); + if (!is_null($srcset_attr)) { + $responsive_attributes["srcset"] = $srcset_attr; + } + } + + if (!array_key_exists("sizes", $attributes) && Cloudinary::option_get($srcset_data, "sizes") === true) { + if (is_null($breakpoints)) { + $breakpoints = get_or_generate_breakpoints($public_id, $srcset_data, $options); + } + + $sizes_attr = generate_sizes_attribute($breakpoints); + if (!is_null($sizes_attr)) { + $responsive_attributes["sizes"] = $sizes_attr; + } + } + + return $responsive_attributes; + } + /** + * Generates HTML img tag + * + * @api + * + * @param string $public_id Public ID of the resource + * + * @param array $options Additional options + * + * Examples: + * + * W/H are not sent to cloudinary + * cl_image_tag("israel.png", array("width"=>100, "height"=>100, "alt"=>"hello") + * + * W/H are sent to cloudinary + * cl_image_tag("israel.png", array("width"=>100, "height"=>100, "alt"=>"hello", "crop"=>"fit") + * + * @return string Resulting img tag + * + */ + function cl_image_tag($public_id, $options = array()) + { + $original_options = $options; + + $attributes = Cloudinary::option_consume($options, 'attributes', array()); + + $srcset_option = Cloudinary::option_consume($options, 'srcset', []); + + $srcset_data = []; + + if (!is_array($srcset_option)) { + $attributes = array_merge(["srcset" => $srcset_option], $attributes); + } + else { + $srcset_data = array_merge(Cloudinary::config_get("srcset", []), $srcset_option); + } + + $source = cloudinary_url_internal($public_id, $options); + if (isset($options["html_width"])) { + $options["width"] = Cloudinary::option_consume($options, "html_width"); + } + if (isset($options["html_height"])) { + $options["height"] = Cloudinary::option_consume($options, "html_height"); + } + + $client_hints = Cloudinary::option_consume($options, "client_hints", Cloudinary::config_get("client_hints")); + $responsive = Cloudinary::option_consume($options, "responsive"); + $hidpi = Cloudinary::option_consume($options, "hidpi"); + if (($responsive || $hidpi) && !$client_hints) { + $options["data-src"] = $source; + $classes = array($responsive ? "cld-responsive" : "cld-hidpi"); + $current_class = Cloudinary::option_consume($options, "class"); + if ($current_class) { + array_unshift($classes, $current_class); + } + $options["class"] = implode(" ", $classes); + $source = Cloudinary::option_consume( + $options, + "responsive_placeholder", + Cloudinary::config_get("responsive_placeholder") + ); + if ($source == "blank") { + $source = Cloudinary::BLANK; + } + } + + $responsive_attrs = generate_image_responsive_attributes( + $public_id, + $attributes, + $srcset_data, + $original_options + ); + if (!empty($responsive_attrs)) { + $size_attributes = array("width", "height"); + foreach ($size_attributes as $key) { + unset($options[$key]); + } + } + + // Explicitly provided attributes override options + $attributes = array_merge($options, $responsive_attrs, $attributes); + + $html = ""; + + return $html; + } + + function fetch_image_tag($url, $options = array()) + { + $options["type"] = "fetch"; + + return cl_image_tag($url, $options); + } + + function facebook_profile_image_tag($profile, $options = array()) + { + $options["type"] = "facebook"; + + return cl_image_tag($profile, $options); + } + + function gravatar_profile_image_tag($email, $options = array()) + { + $options["type"] = "gravatar"; + $options["format"] = "jpg"; + + return cl_image_tag(md5(strtolower(trim($email))), $options); + } + + function twitter_profile_image_tag($profile, $options = array()) + { + $options["type"] = "twitter"; + + return cl_image_tag($profile, $options); + } + + function twitter_name_profile_image_tag($profile, $options = array()) + { + $options["type"] = "twitter_name"; + + return cl_image_tag($profile, $options); + } + + function cloudinary_js_config() + { + $params = array(); + foreach (Cloudinary::$JS_CONFIG_PARAMS as $param) { + $value = Cloudinary::config_get($param); + if ($value) { + $params[$param] = $value; + } + } + + return "\n"; + } + + function cloudinary_url($source, $options = array()) + { + return cloudinary_url_internal($source, $options); + } + + function cloudinary_url_internal($source, &$options = array()) + { + if (!isset($options["secure"])) { + $options["secure"] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || + (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'); + } + + return Cloudinary::cloudinary_url($source, $options); + } + + function cl_sprite_url($tag, $options = array()) + { + if (substr($tag, -strlen(".css")) != ".css") { + $options["format"] = "css"; + } + $options["type"] = "sprite"; + + return cloudinary_url_internal($tag, $options); + } + + function cl_sprite_tag($tag, $options = array()) + { + return ""; + } + + function default_poster_options() + { + return array('format' => 'jpg', 'resource_type' => 'video'); + } + + function default_source_types() + { + return array('webm', 'mp4', 'ogv'); + } + + # Returns a url for the given source with +options+ + function cl_video_path($source, $options = array()) + { + $options = array_merge(array('resource_type' => 'video'), $options); + + return cloudinary_url_internal($source, $options); + } + + # Returns an HTML img tag with the thumbnail for the given video +source+ and +options+ + function cl_video_thumbnail_tag($source, $options = array()) + { + return cl_image_tag($source, array_merge(default_poster_options(), $options)); + } + + # Returns a url for the thumbnail for the given video +source+ and +options+ + function cl_video_thumbnail_path($source, $options = array()) + { + $options = array_merge(default_poster_options(), $options); + + return cloudinary_url_internal($source, $options); + } + + /** + * @internal + * Helper function for cl_video_tag, collects remaining options and returns them as attributes + * + * @param array $video_options Remaining options + * + * @return array Resulting attributes + */ + function collect_video_tag_attributes($video_options) + { + $attributes = $video_options; + + if (isset($attributes["html_width"])) { + $attributes['width'] = Cloudinary::option_consume($attributes, 'html_width'); + } + + if (isset($attributes['html_height'])) { + $attributes['height'] = Cloudinary::option_consume($attributes, 'html_height'); + } + + if (empty($attributes['poster'])) { + unset($attributes['poster']); + } + + return $attributes; + } + + /** + * @internal + * Helper function for cl_video_tag, generates video poster URL + * + * @param string $source The public ID of the resource + * @param array $video_options Additional options + * + * @return string Resulting video poster URL + */ + function generate_video_poster_attr($source, $video_options) + { + if (!array_key_exists('poster', $video_options)) { + return cl_video_thumbnail_path($source, $video_options); + } + + if (!is_array($video_options['poster'])) { + return $video_options['poster']; + } + + if (!array_key_exists('public_id', $video_options['poster'])) { + return cl_video_thumbnail_path($source, $video_options['poster']); + } + + return cloudinary_url_internal($video_options['poster']['public_id'], $video_options['poster']); + } + + /** + * @internal + * Helper function for cl_video_tag, generates video mime type from source_type and codecs + * + * @param string $source_type The type of the source + * + * @param string|array $codecs Codecs + * + * @return string Resulting mime type + */ + function video_mime_type($source_type, $codecs = null) + { + $video_type = (($source_type == 'ogv') ? 'ogg' : $source_type); + + if (empty($source_type)) { + return null; + } + + $codecs_str = is_array($codecs) ? implode(', ', $codecs) : $codecs; + $codecs_str = !empty($codecs_str) ? "codecs=$codecs_str" : $codecs_str; + + return implode('; ', array_filter(["video/$video_type", $codecs_str])); + } + + /** + * @internal + * Helper function for cl_video_tag, populates source tags from provided options. + * + * source_types and sources are mutually exclusive, only one of them can be used. + * If both are not provided, source types are used (for backwards compatibility) + * + * @param string $source The public ID of the video + * @param array $options Additional options + * + * @return array Resulting source tags (may be empty) + */ + function populate_video_source_tags($source, &$options) + { + $source_tags = []; + // Consume all relevant options, otherwise they are left and passed as attributes + $sources = Cloudinary::option_consume($options, 'sources', null); + $source_types = Cloudinary::option_consume($options, 'source_types', null); + $source_transformation = Cloudinary::option_consume($options, 'source_transformation', array()); + + if (is_array($sources) && !empty($sources)) { + foreach ($sources as $source_data) { + $transformations = Cloudinary::option_get($source_data, "transformations", array()); + $transformation = array_merge($options, $transformations); + $source_type = Cloudinary::option_get($source_data, "type"); + $src = cl_video_path($source . '.' . $source_type, $transformation); + $codecs = Cloudinary::option_get($source_data, "codecs"); + $attributes = ['src' => $src, 'type' => video_mime_type($source_type, $codecs)]; + array_push($source_tags, ''); + } + + return $source_tags; + } + + if (empty($source_types)) { + $source_types = default_source_types(); + } + + if (!is_array($source_types)) { + return $source_tags; + } + + foreach ($source_types as $source_type) { + $transformation = Cloudinary::option_consume($source_transformation, $source_type, array()); + $transformation = array_merge($options, $transformation); + $src = cl_video_path($source . '.' . $source_type, $transformation); + $attributes = ['src' => $src, 'type' => video_mime_type($source_type)]; + array_push($source_tags, ''); + } + + return $source_tags; + } + + /** + * @api + * Creates an HTML video tag for the provided source + * + * @param string $source The public ID of the video + * @param array $options Additional options + * + * @return string Resulting video tag + */ + function cl_video_tag($source, $options = array()) + { + $source = preg_replace('/\.(' . implode('|', default_source_types()) . ')$/', '', $source); + + $attributes = Cloudinary::option_consume($options, 'attributes', array()); + + $fallback = Cloudinary::option_consume($options, 'fallback_content', ''); + + # Save source types for a single video source handling (it can be a single type) + $source_types = Cloudinary::option_get($options, 'source_types', ""); + + if (!array_key_exists("poster", $attributes)) { + $options['poster'] = generate_video_poster_attr($source, $options); + } + + $options = array_merge(['resource_type' => 'video'], $options); + + $source_tags = populate_video_source_tags($source, $options); + + if (empty($source_tags)) { + $source .= '.' . $source_types; + } + + $src = cloudinary_url_internal($source, $options); + + if (empty($source_tags)) { + $attributes['src'] = $src; + } + + $attributes = array_merge(collect_video_tag_attributes($options), $attributes); + + $html = ''; + + return $html; + } + + /** + * @internal + * Generates `media` attribute of the `source` tag + * + * @param array $attributes Attributes + * @param array $media_options Currently only supported `min_width` and `max_width` + * + * @return null|string Media attribute + */ + function generate_media_attr($media_options) + { + $media_query_conditions = []; + + if (!empty($media_options['min_width'])) { + array_push($media_query_conditions, "(min-width: ${media_options['min_width']}px)"); + } + + if (!empty($media_options['max_width'])) { + array_push($media_query_conditions, "(max-width: ${media_options['max_width']}px)"); + } + + if (empty($media_query_conditions)) { + return null; + } + + return implode(' and ', $media_query_conditions); + } + + /** + * @api Generates HTML `source` tag that can be used by `picture` tag + * + * @param $public_id + * @param $options + * + * @return string + */ + function cl_source_tag($public_id, $options = []) + { + $srcset_data = array_merge( + Cloudinary::config_get("srcset", []), + Cloudinary::option_consume($options, 'srcset', []) + ); + + $attributes = Cloudinary::option_get($options, 'attributes', []); + + $responsive_attrs = generate_image_responsive_attributes( + $public_id, + $attributes, + $srcset_data, + $options + ); + + $attributes = array_merge($responsive_attrs, $attributes); + + // `source` tag under `picture` tag uses `srcset` attribute for both `srcset` and `src` urls + if (!array_key_exists("srcset", $attributes)) { + $attributes["srcset"] = cloudinary_url($public_id, $options); + } + + $media_attr = generate_media_attr(Cloudinary::option_get($options, "media")); + if (!empty($media_attr)) { + $attributes["media"] = $media_attr; + } + + return ''; + } + + /** + * @api Generates HTML `picture` tag + * + * @param string $public_id Public ID of the source image + * @param array $options Common options for all sources and `img` tag + * @param array $sources Definitions of each source which contains min_width, max_width and transformation + * + * @return string + */ + function cl_picture_tag($public_id, $options = [], $sources = []) + { + $tag = ''; + + $public_id = Cloudinary::check_cloudinary_field($public_id, $options); + Cloudinary::patch_fetch_format($options); + foreach ($sources as $source) { + $source_options = $options; + $source_options = Cloudinary::chain_transformations( + $source_options, + Cloudinary::option_get($source, "transformation") + ); + $source_options["media"] = Cloudinary::array_subset($source, ['min_width', 'max_width']); + + $tag .= cl_source_tag($public_id, $source_options); + } + + $tag .= cl_image_tag($public_id, $options); + + $tag .= ''; + + return $tag; + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/HttpClient.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/HttpClient.php new file mode 100644 index 0000000..bc621d1 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/HttpClient.php @@ -0,0 +1,106 @@ +timeout = \Cloudinary::option_get($options, "timeout", self::DEFAULT_HTTP_TIMEOUT); + } + + /** + * Get JSON as associative array from specified URL + * + * @param string $url URL of the JSON + * + * @return array Associative array that represents JSON object + * + * @throws Error + */ + public function getJSON($url) + { + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); + curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, \Cloudinary::userAgent()); + + $response = $this->execute($ch); + + $curl_error = null; + if (curl_errno($ch)) { + $curl_error = curl_error($ch); + } + + curl_close($ch); + + if ($curl_error != null) { + throw new Error("Error in sending request to server - " . $curl_error); + } + + if ($response->responseCode != 200) { + throw new Error("Server returned unexpected status code - {$response->responseCode} - {$response->body}"); + } + + return self::parseJSONResponse($response); + } + + /** + * Executes HTTP request, parses response headers, leaves body as a string + * + * Based on http://snipplr.com/view/17242/ + * + * @param resource $ch cURL handle + * + * @return \stdClass Containing headers, body, responseCode properties + */ + protected static function execute($ch) + { + $content = curl_exec($ch); + $result = new \stdClass; + $result->body = trim($content); + $result->responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + return $result; + } + + /** + * Parses JSON string from response body. + * + * @param \stdClass $response Class representing response + * + * @return mixed Decoded JSON object + * + * @throws Error + */ + protected static function parseJSONResponse($response) + { + $result = json_decode($response->body, true); + if ($result == null) { + $error = json_last_error(); + throw new Error( + "Error parsing server response ({$response->responseCode}) - {$response->body}. Got - {$error}" + ); + } + + return $result; + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/PreloadedFile.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/PreloadedFile.php new file mode 100644 index 0000000..e511c62 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/PreloadedFile.php @@ -0,0 +1,81 @@ +resource_type = $matches[1]; + $this->type = $matches[2]; + $this->version = $matches[3]; + $this->filename = $matches[4]; + $this->signature = $matches[5]; + $public_id_and_format = $this->split_format($this->filename); + $this->public_id = $public_id_and_format[0]; + $this->format = $public_id_and_format[1]; + } + + public function is_valid() + { + $public_id = $this->resource_type == 'raw' ? $this->filename : $this->public_id; + $expected_signature = \Cloudinary::api_sign_request( + array( + "public_id" => $public_id, + "version" => $this->version, + ), + \Cloudinary::config_get("api_secret") + ); + + return $this->signature == $expected_signature; + } + + protected function split_format($identifier) + { + $last_dot = strrpos($identifier, '.'); + + if ($last_dot === false) { + return array($identifier, null); + } + $public_id = substr($identifier, 0, $last_dot); + $format = substr($identifier, $last_dot + 1); + + return array($public_id, $format); + } + + public function identifier() + { + return "v{$this->version}/{$this->filename}"; + } + + public function extended_identifier() + { + return "{$this->resource_type}/{$this->type}/{$this->identifier()}"; + } + + public function __toString() + { + return "{$this->resource_type}/{$this->type}/v{$this->version}/{$this->filename}#{$this->signature}"; + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Search.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Search.php new file mode 100644 index 0000000..9d9bcd6 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Search.php @@ -0,0 +1,82 @@ +query_hash = array( + 'sort_by' => array(), + 'aggregate' => array(), + 'with_field' => array(), + ); + } + + public function expression($value) + { + $this->query_hash['expression'] = $value; + + return $this; + } + + public function max_results($value) + { + $this->query_hash['max_results'] = $value; + + return $this; + } + + public function next_cursor($value) + { + $this->query_hash['next_cursor'] = $value; + + return $this; + } + + public function sort_by($field_name, $dir = 'desc') + { + array_push($this->query_hash['sort_by'], array($field_name => $dir)); + + return $this; + } + + public function aggregate($value) + { + array_push($this->query_hash['aggregate'], $value); + + return $this; + } + + public function with_field($value) + { + array_push($this->query_hash['with_field'], $value); + + return $this; + } + + public function as_array() + { + return array_filter( + $this->query_hash, + function ($value) { + return ((is_array($value) && !empty($value)) || ($value != null)); + } + ); + } + + public function execute($options = array()) + { + $api = new Api(); + $uri = array('resources/search'); + $options = array_merge($options, array('content_type' => 'application/json')); + $method = 'post'; + + return $api->call_api($method, $uri, $this->as_array(), $options); + } + } + +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/SignatureVerifier.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/SignatureVerifier.php new file mode 100644 index 0000000..80fa3fd --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/SignatureVerifier.php @@ -0,0 +1,169 @@ + allowed_types for notification signature validator + */ + private static $NOTIFICATION_VALIDATOR_ALLOWED_TYPES = [ + 'body' => 'string', + 'timestamp' => 'int|string', + 'signature' => 'string', + 'validFor' => 'int|string' + ]; + + /** + * @var array of parameter => allowed_types for API response signature validator + */ + private static $API_RESPONSE_VALIDATOR_ALLOWED_TYPES = [ + 'publicId' => 'string', + 'version' => 'int|string', + 'signature' => 'string', + ]; + + /** + * Verifies the authenticity of a notification signature + * + * @param string $body Json of the request's body + * @param int|string $timestamp Unix timestamp. Can be retrieved from the X-Cld-Timestamp header + * @param string $signature Actual signature. Can be retrieved from the X-Cld-Signature header + * @param int|string $validFor The desired time in seconds for considering the request valid + * + * @return boolean + * + * @throws \InvalidArgumentException In case a mandatory parameter is empty or of wrong type + */ + public static function verifyNotificationSignature($body, $timestamp, $signature, $validFor = 7200) + { + $paramsArray = [ + 'body' => $body, + 'timestamp' => $timestamp, + 'signature' => $signature, + 'validFor' => $validFor + ]; + + self::validateParams($paramsArray, self::$NOTIFICATION_VALIDATOR_ALLOWED_TYPES); + + if (time() - $timestamp > $validFor) { + return false; + } + + $apiSecret = \Cloudinary::config_get('api_secret'); + self::validateApiSecret($apiSecret); + + $payloadToSign = $body . $timestamp; + $hmac = self::generateHmac($payloadToSign, $apiSecret); + + if ($hmac !== $signature) { + return false; + } + + return true; + } + + /** + * Verifies the authenticity of an API response signature + * + * @param string $publicId The public id of the asset as returned in the API response + * @param int|string $version The version of the asset as returned in the API response + * @param string $signature Actual signature. Can be retrieved from the X-Cld-Signature header + * + * @return boolean + * + * @throws \InvalidArgumentException in case a mandatory parameter is empty or of wrong type + */ + public static function verifyApiResponseSignature($publicId, $version, $signature) + { + $paramsArray = ['publicId' => $publicId, 'version' => $version, 'signature' => $signature]; + + self::validateParams($paramsArray, self::$API_RESPONSE_VALIDATOR_ALLOWED_TYPES); + + $apiSecret = \Cloudinary::config_get('api_secret'); + self::validateApiSecret($apiSecret); + + $payloadToSign = 'public_id=' . $publicId . '&version=' . $version; + $hmac = self::generateHmac($payloadToSign, $apiSecret); + + if ($hmac !== $signature) { + return false; + } + + return true; + } + + /** + * Validates parameters + * + * @param array $params Parameters to validate + * @param array $allowedTypes The allowed type/s of the parameters. Pipe delimiter for multiple values + * + * @throws \InvalidArgumentException In case a mandatory parameter is empty or of wrong type + */ + private static function validateParams($params, $allowedTypes) + { + foreach ($allowedTypes as $param => $types) { + if (empty($params[$param])) { + throw new \InvalidArgumentException("$param parameter cannot be empty"); + } + + if (!self::paramValidator($params[$param], $types)) { + throw new \InvalidArgumentException("$param must be one of the following types: $types"); + } + } + } + + /** + * Validates the type of a single parameter + * + * @param mixed $param Parameter to validate + * @param string $type The allowed type/s of the parameter. Pipe delimiter for multiple values + * + * @return boolean + */ + private static function paramValidator($param, $type) + { + $allowedTypes = explode('|', $type); + + foreach ($allowedTypes as $allowedType) { + $validationFunction = 'is_' . $allowedType; + if ($validationFunction($param)) { + return true; + } + } + + return false; + } + + /** + * Validates API secret + * + * @param string $apiSecret The API secret + * + * @throws \InvalidArgumentException In case API secret is missing or invalid + */ + private static function validateApiSecret($apiSecret) + { + if (empty($apiSecret) || !is_string($apiSecret)) { + throw new \InvalidArgumentException('API Secret is invalid'); + } + } + + /** + * Generates hmac to compare against signature + * + * @param string $payloadToSign The payload to sign + * @param string $apiSecret The API secret + * + * @return string + */ + public static function generateHmac($payloadToSign, $apiSecret) + { + return sha1($payloadToSign . $apiSecret); + } +} diff --git a/lib/Cloudinary/Uploader.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Uploader.php similarity index 52% rename from lib/Cloudinary/Uploader.php rename to lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Uploader.php index 0d686df..a96ef15 100644 --- a/lib/Cloudinary/Uploader.php +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Uploader.php @@ -1,12 +1,24 @@ time(), + $params = array( + "timestamp" => time(), + "access_control" => \Cloudinary::encode_array_to_json( + \Cloudinary::option_get($options, "access_control") + ), "allowed_formats" => \Cloudinary::encode_array(\Cloudinary::option_get($options, "allowed_formats")), "async" => \Cloudinary::option_get($options, "async"), "auto_tagging" => \Cloudinary::option_get($options, "auto_tagging"), @@ -14,22 +26,28 @@ public static function build_upload_params(&$options) "backup" => \Cloudinary::option_get($options, "backup"), "callback" => \Cloudinary::option_get($options, "callback"), "categorization" => \Cloudinary::option_get($options, "categorization"), + "cinemagraph_analysis" => \Cloudinary::option_get($options, "cinemagraph_analysis"), "colors" => \Cloudinary::option_get($options, "colors"), "context" => \Cloudinary::encode_assoc_array(\Cloudinary::option_get($options, "context")), - "custom_coordinates" => \Cloudinary::encode_double_array(\Cloudinary::option_get($options, "custom_coordinates")), + "custom_coordinates" => \Cloudinary::encode_double_array( + \Cloudinary::option_get($options, "custom_coordinates") + ), "detection" => \Cloudinary::option_get($options, "detection"), "discard_original_filename" => \Cloudinary::option_get($options, "discard_original_filename"), "eager" => Uploader::build_eager(\Cloudinary::option_get($options, "eager")), "eager_async" => \Cloudinary::option_get($options, "eager_async"), "eager_notification_url" => \Cloudinary::option_get($options, "eager_notification_url"), "exif" => \Cloudinary::option_get($options, "exif"), - "face_coordinates" => \Cloudinary::encode_double_array(\Cloudinary::option_get($options, "face_coordinates")), + "face_coordinates" => \Cloudinary::encode_double_array( + \Cloudinary::option_get($options, "face_coordinates") + ), "faces" => \Cloudinary::option_get($options, "faces"), "folder" => \Cloudinary::option_get($options, "folder"), "format" => \Cloudinary::option_get($options, "format"), "headers" => Uploader::build_custom_headers(\Cloudinary::option_get($options, "headers")), "image_metadata" => \Cloudinary::option_get($options, "image_metadata"), "invalidate" => \Cloudinary::option_get($options, "invalidate"), + "metadata" => \Cloudinary::encode_assoc_array(\Cloudinary::option_get($options, "metadata")), "moderation" => \Cloudinary::option_get($options, "moderation"), "notification_url" => \Cloudinary::option_get($options, "notification_url"), "ocr" => \Cloudinary::option_get($options, "ocr"), @@ -37,6 +55,8 @@ public static function build_upload_params(&$options) "phash" => \Cloudinary::option_get($options, "phash"), "proxy" => \Cloudinary::option_get($options, "proxy"), "public_id" => \Cloudinary::option_get($options, "public_id"), + "quality_analysis" => \Cloudinary::option_get($options, "quality_analysis"), + "quality_override" => \Cloudinary::option_get($options, "quality_override"), "raw_convert" => \Cloudinary::option_get($options, "raw_convert"), "return_delete_token" => \Cloudinary::option_get($options, "return_delete_token"), "similarity_search" => \Cloudinary::option_get($options, "similarity_search"), @@ -46,29 +66,65 @@ public static function build_upload_params(&$options) "unique_filename" => \Cloudinary::option_get($options, "unique_filename"), "upload_preset" => \Cloudinary::option_get($options, "upload_preset"), "use_filename" => \Cloudinary::option_get($options, "use_filename"), - "responsive_breakpoints" => Uploader::build_responsive_breakpoints(\Cloudinary::option_get($options, "responsive_breakpoints")) + "responsive_breakpoints" => Uploader::build_responsive_breakpoints( + \Cloudinary::option_get($options, "responsive_breakpoints") + ), + ); + array_walk( + $params, + function (&$value, $key) { + $value = (is_bool($value) ? ($value ? "1" : "0") : $value); + } + ); + + return array_filter( + $params, + function ($v) { + return !is_null($v) && ($v !== ""); + } ); - array_walk($params, function (&$value, $key){ $value = (is_bool($value) ? ($value ? "1" : "0") : $value);}); - return array_filter($params,function($v){ return !is_null($v) && ($v !== "" );}); } public static function unsigned_upload($file, $upload_preset, $options = array()) { - return Uploader::upload($file, array_merge($options, array("unsigned"=>TRUE, "upload_preset"=>$upload_preset))); + return Uploader::upload( + $file, + array_merge($options, array("unsigned" => true, "upload_preset" => $upload_preset)) + ); } public static function upload($file, $options = array()) { $params = Uploader::build_upload_params($options); - return Uploader::call_api("upload", $params, $options, $file); + + return Uploader::call_cacheable_api("upload", $params, $options, $file); } - // Upload large raw files. Note that public_id should include an extension for best results. - public static function upload_large($file, $options=array()) + /** + * Upload large files. Note that public_id should include an extension for best results. + * + * @param string $file The file to upload + * @param array $options Additional options + * + * @return mixed|null + * @throws \Exception + */ + public static function upload_large($file, $options = array()) { + if (preg_match(self::REMOTE_URL_REGEX, $file)) { + return self::upload($file, $options); + } + $src = fopen($file, 'r'); - $temp_file_name = tempnam(sys_get_temp_dir(), 'cldupload.' . pathinfo($file, PATHINFO_EXTENSION)); - $upload = $upload_id = NULL; + + // If not provided, preserve original file name in the upload + $options["filename"] = \Cloudinary::option_get($options, 'filename', $file); + + $file_extension = pathinfo($file, PATHINFO_EXTENSION); + $temp_file_name = tempnam(sys_get_temp_dir(), 'cldupload.') . + (!empty($file_extension) ? "." . $file_extension : ""); + $upload = null; + $upload_id = \Cloudinary::random_public_id(); $chunk_size = \Cloudinary::option_get($options, "chunk_size", 20000000); $public_id = \Cloudinary::option_get($options, "public_id"); $index = 0; @@ -78,26 +134,29 @@ public static function upload_large($file, $options=array()) if ($current_loc >= $file_size) { break; } + $dest = fopen($temp_file_name, 'w'); stream_copy_to_stream($src, $dest, $chunk_size); fclose($dest); - if (phpversion() >= "5.3.0") { - clearstatcache(TRUE, $temp_file_name); - } else { - clearstatcache(); - } + + clearstatcache(true, $temp_file_name); $temp_file_size = filesize($temp_file_name); - $range = "bytes ". $current_loc . "-" . ($current_loc + $temp_file_size - 1) . "/" . $file_size; + $range = "bytes " . $current_loc . "-" . ($current_loc + $temp_file_size - 1) . "/" . $file_size; try { - $upload = Uploader::upload_large_part($temp_file_name, array_merge($options, - array("public_id"=>$public_id, "content_range"=>$range))); - } catch(\Exception $e) { + $upload = Uploader::upload_large_part( + $temp_file_name, + array_merge($options, array( + "public_id" => $public_id, + "content_range" => $range, + "x_unique_upload_id" => $upload_id + )) + ); + } catch (\Exception $e) { unlink($temp_file_name); fclose($src); - throw $e; + throw $e; } - $upload_id = \Cloudinary::option_get($upload, "upload_id"); $public_id = \Cloudinary::option_get($upload, "public_id"); $index += 1; } @@ -105,13 +164,15 @@ public static function upload_large($file, $options=array()) fclose($src); return $upload; } - - // Upload large raw files. Note that public_id should include an extension for best results. - public static function upload_large_part($file, $options=array()) + + // Upload large files. Note that public_id should include an extension for best results. + public static function upload_large_part($file, $options = array()) { $params = Uploader::build_upload_params($options); - return Uploader::call_api("upload_chunked", $params, array_merge(array("resource_type" => "raw"), $options), $file); + $full_options = array_merge(array("resource_type" => "raw"), $options); + + return Uploader::call_cacheable_api("upload_chunked", $params, $full_options, $file); } public static function destroy($public_id, $options = array()) @@ -120,8 +181,9 @@ public static function destroy($public_id, $options = array()) "timestamp" => time(), "type" => \Cloudinary::option_get($options, "type"), "invalidate" => \Cloudinary::option_get($options, "invalidate"), - "public_id" => $public_id + "public_id" => $public_id, ); + return Uploader::call_api("destroy", $params, $options); } @@ -136,27 +198,62 @@ public static function rename($from_public_id, $to_public_id, $options = array() "overwrite" => \Cloudinary::option_get($options, "overwrite"), "to_type" => \Cloudinary::option_get($options, "to_type"), ); + return Uploader::call_api("rename", $params, $options); } - + + /** + * Populates metadata fields with the given values. Existing values will be overwritten. + * + * Any metadata-value pairs given are merged with any existing metadata-value pairs + * (an empty value for an existing metadata field clears the value) + * + * @param array $metadata A list of custom metadata fields (by external_id) and the values to assign to each + * of them. + * @param array $public_ids An array of Public IDs of assets uploaded to Cloudinary. + * @param array $options { + * + * @var string resource_type The type of file. Default: image. Valid values: image, raw, video. + * @var string type The storage type. Default: upload. + * Valid values: upload, private, authenticated + * } + * + * @return mixed a list of public IDs that were updated + * + * @throws Error + */ + public static function update_metadata($metadata, $public_ids, $options = array()) + { + $params = array( + "timestamp" => time(), + "metadata" => \Cloudinary::encode_assoc_array($metadata), + "public_ids" => \Cloudinary::build_array($public_ids), + "type" => \Cloudinary::option_get($options, "type"), + ); + + return Uploader::call_api("metadata", $params, $options); + } + public static function explicit($public_id, $options = array()) { $options["public_id"] = $public_id; $params = Uploader::build_upload_params($options); - return Uploader::call_api("explicit", $params, $options); + + return Uploader::call_cacheable_api("explicit", $params, $options); } public static function generate_sprite($tag, $options = array()) { - $transformation = \Cloudinary::generate_transformation_string( - array_merge(array("fetch_format"=>\Cloudinary::option_get($options, "format")), $options)); + $transOptions = array_merge(array("fetch_format" => \Cloudinary::option_get($options, "format")), $options); + $transformation = \Cloudinary::generate_transformation_string($transOptions); $params = array( "timestamp" => time(), "tag" => $tag, "async" => \Cloudinary::option_get($options, "async"), "notification_url" => \Cloudinary::option_get($options, "notification_url"), - "transformation" => $transformation + "transformation" => $transformation, ); + return Uploader::call_api("sprite", $params, $options); } @@ -169,8 +266,9 @@ public static function multi($tag, $options = array()) "format" => \Cloudinary::option_get($options, "format"), "async" => \Cloudinary::option_get($options, "async"), "notification_url" => \Cloudinary::option_get($options, "notification_url"), - "transformation" => $transformation + "transformation" => $transformation, ); + return Uploader::call_api("multi", $params, $options); } @@ -183,8 +281,9 @@ public static function explode($public_id, $options = array()) "format" => \Cloudinary::option_get($options, "format"), "type" => \Cloudinary::option_get($options, "type"), "notification_url" => \Cloudinary::option_get($options, "notification_url"), - "transformation" => $transformation + "transformation" => $transformation, ); + return Uploader::call_api("explode", $params, $options); } @@ -198,6 +297,18 @@ public static function remove_tag($tag, $public_ids = array(), $options = array( return Uploader::call_tags_api($tag, "remove", $public_ids, $options); } + /** + * Remove all tags from the specified public IDs. + * + * @param array|string $public_ids the public IDs of the resources to update + * @param array $options additional options passed to the request + * @return mixed list of public IDs that were updated + */ + public static function remove_all_tags($public_ids, $options = array()) + { + return Uploader::call_tags_api(null, "remove_all", $public_ids, $options); + } + public static function replace_tag($tag, $public_ids = array(), $options = array()) { return Uploader::call_tags_api($tag, "replace", $public_ids, $options); @@ -210,17 +321,20 @@ public static function call_tags_api($tag, $command, $public_ids = array(), &$op "tag" => $tag, "public_ids" => \Cloudinary::build_array($public_ids), "type" => \Cloudinary::option_get($options, "type"), - "command" => $command + "command" => $command, ); + return Uploader::call_api("tags", $params, $options); } - public static function add_context($context, $public_ids = array(), $options = array()) { - return Uploader::call_context_api($context, 'add', $public_ids, $options); + public static function add_context($context, $public_ids = array(), $options = array()) + { + return Uploader::call_context_api($context, 'add', $public_ids, $options); } - public static function remove_all_context($public_ids = array(), $options = array()) { - return Uploader::call_context_api(null, 'remove_all', $public_ids, $options); + public static function remove_all_context($public_ids = array(), $options = array()) + { + return Uploader::call_context_api(null, 'remove_all', $public_ids, $options); } public static function call_context_api($context, $command, $public_ids = array(), &$options = array()) @@ -230,12 +344,24 @@ public static function call_context_api($context, $command, $public_ids = array( "context" => $context, "public_ids" => \Cloudinary::build_array($public_ids), "type" => \Cloudinary::option_get($options, "type"), - "command" => $command + "command" => $command, ); + return Uploader::call_api("context", $params, $options); } - private static $TEXT_PARAMS = array("public_id", "font_family", "font_size", "font_color", "text_align", "font_weight", "font_style", "background", "opacity", "text_decoration"); + private static $TEXT_PARAMS = array( + "public_id", + "font_family", + "font_size", + "font_color", + "text_align", + "font_weight", + "font_style", + "background", + "opacity", + "text_decoration", + ); public static function text($text, $options = array()) { @@ -243,16 +369,18 @@ public static function text($text, $options = array()) foreach (Uploader::$TEXT_PARAMS as $key) { $params[$key] = \Cloudinary::option_get($options, $key); } + return Uploader::call_api("text", $params, $options); } # Creates a new archive in the server and returns information in JSON format - public static function create_archive($options = array(), $target_format = NULL) + public static function create_archive($options = array(), $target_format = null) { $params = \Cloudinary::build_archive_params($options); - if ($target_format != NULL) { + if ($target_format != null) { $params["target_format"] = $target_format; } + return Uploader::call_api("generate_archive", $params, $options); } @@ -262,7 +390,42 @@ public static function create_zip($options = array()) return Uploader::create_archive($options, "zip"); } - public static function call_api($action, $params, $options = array(), $file = NULL) + /** + * Calls Upload API and saves results to cache (if enabled) + * + * @param string $action Action to call + * @param array $params Array of parameters + * @param array|null $options Optional. Additional options + * @param string|null $file Optional. File to upload + * + * @return mixed + * + * @throws Error + */ + public static function call_cacheable_api($action, $params, $options = array(), $file = null) + { + $result = self::call_api($action, $params, $options, $file); + + if (\Cloudinary::option_get($options, "use_cache", \Cloudinary::config_get("use_cache", false))) { + self::save_responsive_breakpoints_to_cache($result); + } + + return $result; + } + + /** + * Perform API call + * + * @param string $action Action to call + * @param array $params Array of parameters + * @param array|null $options Optional. Additional options + * @param string|null $file Optional. File to upload + * + * @return mixed + * + * @throws Error + */ + public static function call_api($action, $params, $options = array(), $file = null) { $return_error = \Cloudinary::option_get($options, "return_error"); if (!\Cloudinary::option_get($options, "unsigned")) { @@ -286,12 +449,14 @@ public static function call_api($action, $params, $options = array(), $file = NU } } if ($file) { - if (!preg_match('/^@|^ftp:|^https?:|^s3:|^data:[^;]*;base64,([a-zA-Z0-9\/+\n=]+)$/', $file)) { + $filename = \Cloudinary::option_get($options, 'filename', $file); + + if (!preg_match(self::REMOTE_URL_REGEX, $file)) { if (function_exists("curl_file_create")) { $post_params['file'] = curl_file_create($file); - $post_params['file']->setPostFilename($file); + $post_params['file']->setPostFilename($filename); } else { - $post_params["file"] = "@" . $file; + $post_params["file"] = "@{$file};filename={$filename}"; } } else { $post_params["file"] = $file; @@ -301,25 +466,43 @@ public static function call_api($action, $params, $options = array(), $file = NU curl_setopt($ch, CURLOPT_POST, true); $timeout = \Cloudinary::option_get($options, "timeout", \Cloudinary::config_get("timeout", 60)); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); - $connection_timeout = \Cloudinary::option_get($options, "connection_timeout", \Cloudinary::config_get("connection_timeout")); - if ($connection_timeout != NULL) { + $connection_timeout = \Cloudinary::option_get( + $options, + "connection_timeout", + \Cloudinary::config_get("connection_timeout") + ); + if ($connection_timeout != null) { curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connection_timeout); } curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); - curl_setopt($ch, CURLOPT_CAINFO,realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR."cacert.pem"); + curl_setopt($ch, CURLOPT_CAINFO, realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "cacert.pem"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # no effect since PHP 5.1.3 curl_setopt($ch, CURLOPT_USERAGENT, \Cloudinary::userAgent()); - curl_setopt($ch, CURLOPT_PROXY, \Cloudinary::option_get($options, "api_proxy", \Cloudinary::config_get("api_proxy"))); + curl_setopt( + $ch, + CURLOPT_PROXY, + \Cloudinary::option_get($options, "api_proxy", \Cloudinary::config_get("api_proxy")) + ); + $headers = array(); $range = \Cloudinary::option_get($options, "content_range"); - if ($range != NULL){ - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Range: '.$range)); + if ($range != null) { + $headers[] = 'Content-Range: ' . $range; + } + $x_unique_upload_id = \Cloudinary::option_get($options, "x_unique_upload_id"); + if ($x_unique_upload_id != null) { + $headers[] = 'X-Unique-Upload-Id: ' . $x_unique_upload_id; + } + if (!empty($headers)) { + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } - + $response = curl_exec($ch); - $curl_error = NULL; - if(curl_errno($ch)) - { + + $errno = curl_errno($ch); + + $curl_error = null; + if ($errno != CURLE_OK) { $curl_error = curl_error($ch); } @@ -327,58 +510,136 @@ public static function call_api($action, $params, $options = array(), $file = NU $response_data = $response; curl_close($ch); - if ($curl_error != NULL) { - throw new \Cloudinary\Error("Error in sending request to server - " . $curl_error); + + if ($errno != CURLE_OK) { + $message = "Error in sending request to server"; + + // Provide user a better error message + if ($errno === CURLE_READ_ERROR) { + // Note: race condition can happen here, not that critical, it's only for a message string + if (!file_exists($file)) { + $message .= " - file '{$file}' does not exist"; + } else { + $message .= " - failed reading file '{$file}'"; + } + } else { + $message .= " - $curl_error, errno - $errno"; + } + + throw new Error($message); } + if ($code != 200 && $code != 400 && $code != 500 && $code != 401 && $code != 404) { - throw new \Cloudinary\Error("Server returned unexpected status code - " . $code . " - " . $response_data, $code); + throw new Error( + "Server returned unexpected status code - " . $code . " - " . $response_data, + $code + ); } - $result = json_decode($response_data, TRUE); - if ($result == NULL) { - throw new \Cloudinary\Error("Error parsing server response (" . $code . ") - " . $response_data); + + $result = json_decode($response_data, true); + if ($result == null) { + throw new Error("Error parsing server response (" . $code . ") - " . $response_data); } + if (isset($result["error"])) { if ($return_error) { $result["error"]["http_code"] = $code; } else { - throw new \Cloudinary\Error($result["error"]["message"], $code); + $message = ""; + + if (isset($result["error"]["message"])) { + if (is_array($result["error"]["message"])) { + $message = $result["error"]["message"]["message"]; + } else { + $message = $result["error"]["message"]; + } + } + + throw new Error($message, $code); } } + return $result; } - protected static function build_eager($transformations) { + protected static function build_eager($transformations) + { return \Cloudinary::build_eager($transformations); } - protected static function build_responsive_breakpoints($breakpoints) { + protected static function build_responsive_breakpoints($breakpoints) + { if (!$breakpoints) { - return NULL; + return null; } $breakpoints_params = array(); foreach (\Cloudinary::build_array($breakpoints) as $breakpoint_settings) { if ($breakpoint_settings) { $transformation = \Cloudinary::option_consume($breakpoint_settings, "transformation"); if ($transformation) { - $breakpoint_settings["transformation"] = \Cloudinary::generate_transformation_string($transformation); + $breakpoint_settings["transformation"] = \Cloudinary::generate_transformation_string( + $transformation + ); } array_push($breakpoints_params, $breakpoint_settings); } } + return json_encode($breakpoints_params); } - protected static function build_custom_headers($headers) { - if ($headers == NULL) { - return NULL; + /** + * Saves responsive breakpoints parsed from upload result to cache + * + * @param array $result Upload result + */ + protected static function save_responsive_breakpoints_to_cache($result) + { + if (!array_key_exists("responsive_breakpoints", $result)) { + return; + } + + $public_id = \Cloudinary::option_get($result, "public_id"); + + if (empty($public_id)) { + // We have some faulty result, nothing to cache + return; + } + + $options = \Cloudinary::array_subset($result, ['type', 'resource_type']); + + foreach ($result["responsive_breakpoints"] as $transformation) { + $options["raw_transformation"] = \Cloudinary::option_get($transformation, "transformation", ""); + $options["format"] = pathinfo($transformation["breakpoints"][0]["url"], PATHINFO_EXTENSION); + + // TODO: When updating minimum PHP version to at least 5.5, replace `array_map` with the line below + // $breakpoints = array_column($transformation["breakpoints"], 'width'); + $breakpoints = array_map( + function ($e) { + return $e['width']; + }, + $transformation["breakpoints"] + ); + + ResponsiveBreakpointsCache::instance()->set($public_id, $options, $breakpoints); + } + } + + protected static function build_custom_headers($headers) + { + if ($headers == null) { + return null; } elseif (is_string($headers)) { return $headers; } elseif ($headers == array_values($headers)) { return implode("\n", $headers); } else { - $join_pair = function($key, $value) { return $key . ": " . $value; }; + $join_pair = function ($key, $value) { + return $key . ": " . $value; + }; + return implode("\n", array_map($join_pair, array_keys($headers), array_values($headers))); } - } + } } } diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Utils/Singleton.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Utils/Singleton.php new file mode 100644 index 0000000..320e0a9 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/src/Utils/Singleton.php @@ -0,0 +1,54 @@ + 'crop', 'width' => 100); + protected static $crop_transformation_str = 'c_crop,w_100'; + protected static $encoded_crop_transformation_str = 'c_crop%2Cw_100'; + protected static $scale_transformation = array('crop' => 'scale', 'width' => 100); + protected static $scale_transformation_str = 'c_scale,w_100'; + protected static $encoded_scale_transformation_str = 'c_scale%2Cw_100'; + protected static $transformations; + protected static $arr_of_transformation_str; + protected static $transformations_str; + protected static $encoded_transformations_str; + + protected static $streaming_profile_1; + protected static $streaming_profile_2; + + + + const URL_QUERY_REGEX = "\??(\w+=\w*&?)*"; + + /** @var \Cloudinary\Api $api */ + private $api; + + public static function setUpBeforeClass() + { + if (!Cloudinary::config_get("api_secret")) { + self::markTestSkipped('Please setup environment for Api test to run'); + } + + Curl::$instance = new Curl(); + + self::$api_test_tag = UNIQUE_TEST_TAG; + + self::$api_test = "api_test" . SUFFIX; + self::$api_test_2 = "api_test2" . SUFFIX; + self::$api_test_3 = "api_test,3" . SUFFIX; + self::$api_test_4 = "api_test4" . SUFFIX; + self::$api_test_5 = "api_test5" . SUFFIX; + + self::$api_test_transformation = "api_test_transformation" . SUFFIX; + self::$api_test_transformation_2 = "api_test_transformation2" . SUFFIX; + self::$api_test_transformation_3 = "api_test_transformation3" . SUFFIX; + + self::upload_sample_resources(); + + self::$transformations = array(self::$crop_transformation, self::$scale_transformation); + self::$arr_of_transformation_str = array(self::$crop_transformation_str, self::$scale_transformation_str); + self::$transformations_str = implode("|", self::$arr_of_transformation_str); + $arr_of_encoded_transformation_str = array( + self::$encoded_crop_transformation_str, + self::$encoded_scale_transformation_str + ); + self::$encoded_transformations_str = implode("|", $arr_of_encoded_transformation_str); + + self::$streaming_profile_1 = self::$api_test . "_streaming_profile_1"; + self::$streaming_profile_2 = self::$api_test . "_streaming_profile_2"; + } + + public function tearDown() + { + Curl::$instance = new Curl(); + } + + public static function tearDownAfterClass() + { + if (!Cloudinary::config_get("api_secret")) { + self::fail("You need to configure the cloudinary api for the tests to work."); + } + + $api = new Cloudinary\Api(); + + self::delete_resources($api); + self::delete_transformations($api); + self::delete_streaming_profiles($api); + } + + + /** + * Delete all test related resources + * + * @param \Cloudinary\Api $api an initialized api object + */ + protected static function delete_resources($api) + { + try { + $api->delete_resources(array(self::$api_test, self::$api_test_2, self::$api_test_3, self::$api_test_5)); + $api->delete_resources_by_tag(UNIQUE_TEST_TAG); + } catch (Exception $e) { + } + } + + /** + * Delete all test related transformations + * + * @param \Cloudinary\Api $api an initialized api object + */ + protected static function delete_transformations($api) + { + $transformations = array( + self::$api_test_transformation, + self::$api_test_transformation_2, + self::$api_test_transformation_3, + ); + + foreach ($transformations as $t) { + try { + $api->delete_transformation($t); + } catch (Exception $e) { + } + + } + } + + /** + * Delete all test related streaming profiles + * + * @param \Cloudinary\Api $api + */ + protected static function delete_streaming_profiles($api) + { + $profiles = array( + self::$streaming_profile_1, + self::$streaming_profile_2 + ); + foreach ($profiles as $p) { + try { + $api->delete_streaming_profile($p); + } catch (Exception $e) { + } + } + } + /** + * Upload sample resources. These resources need to be present for some of the tests to work. + */ + protected static function upload_sample_resources() + { + Uploader::upload( + TEST_IMG, + array( + "public_id" => self::$api_test, + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + "context" => "key=value", + "eager" => array("transformation" => self::$crop_transformation), + ) + ); + Uploader::upload( + TEST_IMG, + array( + "public_id" => self::$api_test_2, + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + "context" => "key=value", + "eager" => array("transformation" => self::$scale_transformation), + ) + ); + } + + + protected function setUp() + { + if (!Cloudinary::config_get("api_secret")) { + $this->markTestSkipped('Please setup environment for API test to run'); + } + if (!isset($this->api)) { + $this->api = new Api(); + } + } + + /** + * Finds element by name and value in an array of arrays + * + * @param array $elements Array to search in + * @param string $attr Attribute name + * @param mixed $value Attribute value + * + * @return null if not found, otherwise found element + */ + protected function find_by_attr($elements, $attr, $value) + { + foreach ($elements as $element) { + if ($element[$attr] == $value) { + return $element; + } + } + return null; + } + + /** + * Should allow listing resource_types + * + * @throws Api\GeneralError + */ + public function test01_resource_types() + { + $result = $this->api->resource_types(); + $this->assertContains("image", $result["resource_types"]); + } + + /** + * Should allow listing resources + * + * @throws Api\GeneralError + */ + public function test02_resources() + { + Curl::mockApi($this); + $this->api->resources(); + Curl::$instance->fields(); + assertUrl($this, "/resources/image"); + } + + /** + * Should allow listing resources with cursor + * + * @throws Api\GeneralError + */ + public function test03_resources_cursor() + { + $result = $this->api->resources(array("max_results" => 1)); + $this->assertNotEquals($result["resources"], null); + $this->assertEquals(count($result["resources"]), 1); + $this->assertNotEquals($result["next_cursor"], null); + + $result2 = $this->api->resources(array("max_results" => 1, "next_cursor" => $result["next_cursor"])); + $this->assertNotEquals($result2["resources"], null); + $this->assertEquals(count($result2["resources"]), 1); + $this->assertNotEquals($result2["resources"][0]["public_id"], $result["resources"][0]["public_id"]); + } + + /** + * Should allow listing resources by type + * + * @throws Api\GeneralError + */ + public function test04_resources_by_type() + { + Curl::mockApi($this); + $this->api->resources(array("type" => "upload", "context" => true, "tags" => true)); + assertUrl($this, "/resources/image/upload"); + assertParam($this, "context", 1); + assertParam($this, "tags", 1); + } + + /** + * Should allow listing resources by prefi + * + * @throws Api\GeneralError + */ + public function test05_resources_by_prefix() + { + Curl::mockApi($this); + $this->api->resources(array("type" => "upload", "prefix" => "api_test", "context" => true, "tags" => true)); + assertUrl($this, "/resources/image/upload"); + assertParam($this, "prefix", "api_test"); + assertParam($this, "context", 1); + assertParam($this, "tags", 1); + } + + /** + * Should allow listing resources by public ids + * + * @throws Api\GeneralError + */ + public function test_resources_by_public_ids() + { + Curl::mockApi($this); + $public_ids = array(self::$api_test, self::$api_test_2, self::$api_test_3); + $this->api->resources_by_ids($public_ids, array("context" => true, "tags" => true)); + assertParam($this, "public_ids", $public_ids); + assertParam($this, "context", 1); + assertParam($this, "tags", 1); + } + + /** + * Should allow listing resources and specify direction + * + * @throws Api\GeneralError + */ + public function test_resources_direction() + { + Curl::mockApi($this); + $this->api->resources_by_tag( + "foobar", + array("type" => "upload", "direction" => "asc") + ); + assertGet($this); + assertUrl($this, "/resources/image/tags/foobar"); + assertParam($this, "direction", "asc"); + $this->api->resources_by_tag( + "foobar", + array("type" => "upload", "direction" => "desc") + ); + assertGet($this); + assertUrl($this, "/resources/image/tags/foobar"); + assertParam($this, "direction", "desc"); + } + + /** + * Should allow listing resources by tag + * + * @throws Api\GeneralError + */ + public function test06_resources_tag() + { + Curl::mockApi($this); + $this->api->resources_by_tag("foobar"); + assertUrl($this, "/resources/image/tags/foobar"); + assertGet($this); + } + + /** + * Should allow listing resources by context + * + * @throws Api\GeneralError + */ + public function test_resources_by_context() + { + Curl::mockApi($this); + $this->api->resources_by_context("k"); + assertGet($this); + assertUrl($this, "/resources/image/context"); + assertParam($this, "key", "k"); + assertNoParam($this, "value"); + + $this->api->resources_by_context("k", ""); + assertGet($this); + assertUrl($this, "/resources/image/context"); + assertParam($this, "key", "k"); + assertNoParam($this, "value"); + + $this->api->resources_by_context("k", "v"); + assertGet($this); + assertUrl($this, "/resources/image/context"); + assertParam($this, "key", "k"); + assertParam($this, "value", "v"); + } + + /** + * Should allow getting resource metadata + * + * @throws Api\GeneralError + */ + public function test07_resource_metadata() + { + $resource = $this->api->resource(self::$api_test); + $this->assertNotEquals($resource, null); + $this->assertEquals($resource["public_id"], self::$api_test); + $this->assertEquals($resource["bytes"], LOGO_SIZE); + $this->assertEquals(count($resource["derived"]), 1); + } + + /** + * Should allow getting resource quality analysis + * + * @throws Api\GeneralError + */ + public function test_resource_quality_analysis() + { + $resource = $this->api->resource(self::$api_test, ["quality_analysis" => true]); + $this->assertArrayHasKey("quality_analysis", $resource); + $this->assertInternalType("double", $resource["quality_analysis"]["focus"]); + } + + /** + * Should allow cinemagraph_analysis parameter + * + * @throws Api\GeneralError + */ + public function test_resource_cinemagraph_analysis() + { + Curl::mockApi($this); + + $this->api->resource(self::$api_test, ["type" => "upload", "cinemagraph_analysis" => true]); + assertParam($this, "cinemagraph_analysis", 1); + } + + /** + * Should allow derived_next_cursor parameter + * + * @throws Api\GeneralError + */ + public function test_resource_derived_next_cursor() + { + Curl::mockApi($this); + + $this->api->resource(self::$api_test, ["derived_next_cursor" => "foo"]); + assertGet($this); + assertParam($this, "derived_next_cursor", "foo"); + } + /** + * Should allow deleting derived resource + * + * @throws Api\GeneralError + */ + public function test08_delete_derived() + { + $derived_resource_id = "foobar"; + Curl::mockApi($this); + $this->api->delete_derived_resources(array($derived_resource_id)); + assertDelete($this); + assertUrl($this, "/derived_resources"); + assertParam($this, "derived_resource_ids[0]", $derived_resource_id); + } + + /** + * Should allow deleting derived resources by transformation + * + * @throws Api\GeneralError + */ + public function test08a_delete_derived_by_transformation() + { + $public_id = "public_id"; + Curl::mockApi($this); + $this->api->delete_derived_by_transformation($public_id, self::$crop_transformation); + assertUrl($this, "/resources/image/upload"); + assertDelete($this); + assertParam($this, "keep_original", true); + assertParam($this, "public_ids[0]", $public_id); + assertParam($this, "transformations", self::$crop_transformation_str); + + $options = ["resource_type" => "raw", "type" => "fetch", "invalidate" => true]; + $this->api->delete_derived_by_transformation(array($public_id), self::$crop_transformation, $options); + assertDelete($this); + assertUrl($this, "/resources/raw/fetch"); + assertParam($this, "public_ids[0]", $public_id); + assertParam($this, "invalidate", true); + assertParam($this, "transformations", self::$crop_transformation_str); + + $this->api->delete_derived_by_transformation(array($public_id), self::$transformations); + assertDelete($this); + assertParam($this, "public_ids[0]", $public_id); + assertParam($this, "transformations", self::$transformations_str); + } + + /** + * Should allow deleting resources + * + * @throws Api\GeneralError + */ + public function test09_delete_resources() + { + Curl::mockApi($this); + $this->api->delete_resources( + array("apit_test", self::$api_test_2, self::$api_test_3) + ); + assertUrl($this, "/resources/image/upload"); + $this->assertEquals("DELETE", Curl::$instance->http_method(), "http method should be DELETE"); + assertParam($this, "public_ids[0]", "apit_test"); + } + + /** + * Should allow deleting resources by public id prefix + * + * @throws Api\GeneralError + */ + public function test09a_delete_resources_by_prefix() + { + Curl::mockApi($this); + $this->api->delete_resources_by_prefix("fooba"); + assertUrl($this, "/resources/image/upload"); + assertDelete($this); + assertParam($this, "prefix", "fooba"); + } + + /** + * Should allow deleting resources by tag + * + * @throws Api\GeneralError + */ + public function test09b_delete_resources_by_tag() + { + Curl::mockApi($this); + $this->api->delete_resources_by_tag("api_test_tag_for_delete"); + assertUrl($this, "/resources/image/tags/api_test_tag_for_delete"); + assertDelete($this); + } + + /** + * Should allow deleting resources by transformations + * + * @throws Api\GeneralError + */ + public function test09c_delete_resources_by_transformations() + { + Curl::mockApi($this); + $this->api->delete_resources(["api_test", "api_test2"], ["transformations" => self::$crop_transformation]); + $this->assertEquals("DELETE", Curl::$instance->http_method(), "http method should be DELETE"); + assertParam($this, "transformations", self::$crop_transformation_str); + + $this->api->delete_all_resources(["transformations" => self::$transformations]); + + $this->assertEquals("DELETE", Curl::$instance->http_method(), "http method should be DELETE"); + assertParam($this, "transformations", self::$transformations_str); + + $this->api->delete_resources_by_prefix("api_test_by", ["transformations" => self::$crop_transformation]); + $this->assertEquals("DELETE", Curl::$instance->http_method(), "http method should be DELETE"); + assertParam($this, "transformations", self::$crop_transformation_str); + + $this->api->delete_resources_by_tag("api_test_tag", ["transformations" => self::$crop_transformation]); + $this->assertEquals("DELETE", Curl::$instance->http_method(), "http method should be DELETE"); + assertParam($this, "transformations", self::$crop_transformation_str); + } + + /** + * Should allow listing tags + * + * @throws Api\GeneralError + */ + public function test10_tags() + { + Curl::mockApi($this); + $this->api->tags(); + assertUrl($this, "/tags/image"); + assertGet($this); + } + + /** + * Should allow listing tag by prefix + * + * @throws Api\GeneralError + */ + public function test11_tags_prefix() + { + Curl::mockApi($this); + $this->api->tags(array("prefix" => "fooba")); + assertUrl($this, "/tags/image"); + assertGet($this); + assertParam($this, "prefix", "fooba"); + } + + /** + * Should allow listing transformations + * + * @throws Api\GeneralError + */ + public function test12_transformations() + { + $result = $this->api->transformations(); + $this->assertArrayHasKey('transformations', $result); + $this->assertGreaterThan(0, count($result["transformations"])); + $transformation = $result["transformations"][0]; + + $this->assertNotNull($transformation); + $this->assertArrayHasKey('used', $transformation); + } + + /** + * Should allow listing of named transformations + * + * @throws Api\GeneralError + */ + public function test_transformations_named() + { + Curl::mockApi($this); + $this->api->transformations(array("named" => true)); + assertParam( + $this, + "named", + true, + "api->transformations should pass the named paramter" + ); + } + + /** + * Should allow listing transformations with cursor + * + * @throws Api\GeneralError + */ + public function test_transformation_cursor() + { + Curl::mockApi($this); + $this->api->transformation(self::$scale_transformation_str, array("next_cursor" => "234123132345")); + assertUrl($this, "/transformations"); + assertParam( + $this, + "next_cursor", + "234123132345", + "api->transformation should pass the next_cursor paramter" + ); + assertParam( + $this, + "transformation", + self::$scale_transformation_str + ); + } + + /** + * Should allow getting transformation cursor result + * + * @throws Api\GeneralError + */ + public function test_transformation_cursor_results() + { + Uploader::upload( + TEST_IMG, + array( + "public_id" => self::$api_test_4, + "eager" => array("transformation" => self::$scale_transformation) + ) + ); + + $result = $this->api->transformation(self::$scale_transformation_str, array("max_results" => 1)); + $this->assertEquals(count($result["derived"]), 1); + $this->assertNotEmpty($result["next_cursor"]); + + $result2 = $this->api->transformation( + self::$scale_transformation_str, + array("max_results" => 1, "next_cursor" => $result["next_cursor"]) + ); + $this->assertEquals(count($result2["derived"]), 1); + $this->assertNotEquals($result["derived"][0]["id"], $result2["derived"][0]["id"]); + } + + /** + * Should allow getting transformation metadata + * + * @throws Api\GeneralError + */ + public function test13_transformation_metadata() + { + $transformation = $this->api->transformation(self::$scale_transformation_str); + $this->assertNotEquals($transformation, null); + $this->assertEquals($transformation["info"], array(self::$scale_transformation)); + $transformation = $this->api->transformation(self::$scale_transformation); + $this->assertNotEquals($transformation, null); + $this->assertEquals($transformation["info"], array(self::$scale_transformation)); + } + + /** + * Should allow updating transformation allowed_for_strict + * + * @throws Api\GeneralError + */ + public function test14_transformation_update() + { + Curl::mockApi($this); + $this->api->update_transformation(self::$scale_transformation_str, array("allowed_for_strict" => true)); + assertUrl($this, "/transformations"); + assertPut($this); + assertParam($this, "allowed_for_strict", 1); + assertParam($this, "transformation", self::$scale_transformation_str); + } + + /** + * Should allow creating named transformation + * + * @throws Api\GeneralError + */ + public function test15_transformation_create() + { + Curl::mockApi($this); + $this->api->create_transformation(self::$api_test_transformation, self::$scale_transformation); + assertUrl($this, "/transformations"); + assertPost($this); + assertParam($this, "name", self::$api_test_transformation); + assertParam($this, "transformation", self::$scale_transformation_str); + } + + /** + * Should allow unsafe update of named transformation + * + * @throws Api\GeneralError + */ + public function test15a_transformation_unsafe_update() + { + $updated_transformation = array("crop" => "scale", "width" => 103); + + $this->api->create_transformation( + self::$api_test_transformation_3, + self::$scale_transformation + ); + $this->api->update_transformation( + self::$api_test_transformation_3, + array("unsafe_update" => $updated_transformation) + ); + $transformation = $this->api->transformation(self::$api_test_transformation_3); + $this->assertNotEquals($transformation, null); + $this->assertEquals($transformation["info"], array($updated_transformation)); + $this->assertEquals($transformation["used"], false); + } + + /** + * Should allow creating unnamed transformation with specified format + * + * @throws Api\GeneralError + */ + public function test15b_transformation_create_unnamed_with_format() + { + Curl::mockApi($this); + + $with_extension = self::$scale_transformation; + $with_extension["format"] = "jpg"; + $with_extension_str = self::$scale_transformation_str . "/jpg"; + $this->api->create_transformation($with_extension_str, $with_extension); + assertUrl($this, "/transformations"); + assertPost($this); + assertParam($this, "name", $with_extension_str); + assertParam($this, "transformation", $with_extension_str); + } + + /** + * Should allow creating unnamed extensionless transformation + * + * @throws Api\GeneralError + */ + public function test15c_transformation_create_unnamed_with_empty_format() + { + Curl::mockApi($this); + + $with_extension = self::$scale_transformation; + $with_extension["format"] = ""; + $with_extension_str = self::$scale_transformation_str . "/"; + $this->api->create_transformation($with_extension_str, $with_extension); + assertUrl($this, "/transformations"); + assertPost($this); + assertParam($this, "name", $with_extension_str); + assertParam($this, "transformation", $with_extension_str); + } + + /** + * Should allow deleting named transformation + * + * @throws Api\GeneralError + */ + public function test16a_transformation_delete() + { + + $this->api->create_transformation( + self::$api_test_transformation_2, + self::$scale_transformation + ); + $this->api->transformation(self::$api_test_transformation_2); + $this->api->delete_transformation(self::$api_test_transformation_2); + assertDelete($this); + } + + /** + * Should allow deleting implicit transformation + * + * @throws Api\GeneralError + */ + public function test17a_transformation_delete_implicit() + { + Curl::mockApi($this); + $this->api->delete_transformation(self::$scale_transformation_str); + assertUrl($this, "/transformations"); + assertParam($this, "transformation", self::$scale_transformation_str); + assertDelete($this); + } + + /** + * Should allow deleting and invalidating transformation + * + * @throws Api\GeneralError + */ + public function test_transformation_delete_with_invalidate() + { + Curl::mockApi($this); + + $transformation = self::$scale_transformation_str . ",a_90"; + $expected_url = '/transformations'; + + // should pass 'invalidate' param when 'invalidate' is set to true + $this->api->delete_transformation($transformation, array("invalidate" => true)); + assertUrl($this, $expected_url); + assertDelete($this); + assertParam($this, "invalidate", "1"); + assertParam($this, "transformation", self::$scale_transformation_str . ',a_90'); + + // should pass 'invalidate' param when 'invalidate' is set to false + $this->api->delete_transformation($transformation, array("invalidate" => false)); + assertUrl($this, $expected_url); + assertDelete($this); + assertParam($this, "invalidate", ""); + assertParam($this, "transformation", self::$scale_transformation_str . ',a_90'); + + // should not pass 'invalidate' param if not set + $this->api->delete_transformation($transformation); + assertUrl($this, $expected_url); + assertDelete($this); + assertNoParam($this, "invalidate"); + assertParam($this, "transformation", self::$scale_transformation_str . ',a_90'); + } + + /** + * Should allow listing resource_types + * + * @throws Api\GeneralError + */ + public function test18_usage() + { + $result = $this->api->usage(); + $this->assertNotEquals($result["last_updated"], null); + } + + /** + * Should allow deleting all resources + * + * @throws Api\GeneralError + */ + public function test19_delete_derived() + { + $this->markTestSkipped("Not enabled by default - remove this line to test"); + $options = array( + "public_id" => self::$api_test_5, + "eager" => array("transformation" => array("width" => 101, "crop" => "scale")), + ); + Uploader::upload(TEST_IMG, $options); + $resource = $this->api->resource(self::$api_test_5); + $this->assertNotEquals($resource, null); + $this->assertEquals(count($resource["derived"]), 1); + $this->api->delete_all_resources(array("keep_original" => true)); + $resource = $this->api->resource(self::$api_test_5); + $this->assertNotEquals($resource, null); + $this->assertEquals(count($resource["derived"]), 0); + } + + + /** + * Should support setting manual moderation status + * + * @throws Api\GeneralError + */ + public function test20_manual_moderation() + { + $resource = Uploader::upload(TEST_IMG, array("moderation" => "manual")); + $this->assertEquals($resource["moderation"][0]["status"], "pending"); + $this->assertEquals($resource["moderation"][0]["kind"], "manual"); + + $api_result = $this->api->update($resource["public_id"], array("moderation_status" => "approved")); + $this->assertEquals($api_result["moderation"][0]["status"], "approved"); + $this->assertEquals($api_result["moderation"][0]["kind"], "manual"); + } + + public function test21_notification_url() + { + Curl::mockApi($this); + $this->api->update("foobar", array("notification_url" => "http://example.com")); + assertParam($this, "notification_url", "http://example.com"); + } + + /** + * Should support requesting raw_convert + * + * @expectedException \Cloudinary\Api\BadRequest + * @expectedExceptionMessage Illegal value + * + * @throws Api\GeneralError + */ + public function test22_raw_conversion() + { + $resource = Uploader::upload(RAW_FILE, array("resource_type" => "raw")); + $this->api->update($resource["public_id"], array("raw_convert" => "illegal", "resource_type" => "raw")); + } + + /** + * Should support requesting categorization + * + * @expectedException \Cloudinary\Api\BadRequest + * @expectedExceptionMessage Illegal value + * + * @throws Api\GeneralError + */ + public function test23_categorization() + { + $this->api->update(self::$api_test, array("categorization" => "illegal")); + } + + /** + * Should support requesting detection + * + * @expectedException \Cloudinary\Api\BadRequest + * @expectedExceptionMessage Illegal value + * + * @throws Api\GeneralError + */ + public function test24_detection() + { + $this->api->update(self::$api_test, array("detection" => "illegal")); + } + + /** + * Should support requesting background_removal + * + * @expectedException \Cloudinary\Api\BadRequest + * @expectedExceptionMessage Illegal value + * + * @throws Api\GeneralError + */ + public function test25_background_removal() + { + $this->api->update(self::$api_test, array("background_removal" => "illegal")); + } + + /** + * Should support requesting auto_tagging + * + * @throws Api\GeneralError + */ + public function test26_auto_tagging() + { + Curl::mockApi($this); + $this->api->update("foobar", array("auto_tagging" => 0.5)); + assertUrl($this, "/resources/image/upload/foobar"); + assertPost($this); + assertParam($this, "auto_tagging", 0.5); + } + + /** + * Should support updating ocr + * + * @throws Api\GeneralError + */ + public function test26_1_ocr() + { + Curl::mockApi($this); + $this->api->update("foobar", array("ocr" => "adv_ocr")); + assertParam($this, "ocr", "adv_ocr"); + } + + /** + * Should support updating quality override + * + * @throws Api\GeneralError + */ + public function test26_2_quality_override() + { + Curl::mockApi($this); + $values = ['auto:advanced', 'auto:best', '80:420', 'none']; + foreach ($values as $value) { + $this->api->update("api_test", array("quality_override" => $value)); + assertParam($this, "quality_override", $value); + } + } + + /** + * Should allow listing resources by start date + * + * @throws Api\GeneralError + */ + public function test27_start_at() + { + Curl::mockApi($this); + $dateTime = new \DateTime(); + $start_at = $dateTime->format(\DateTime::ISO8601); + $this->api->resources(array("type" => "upload", "start_at" => $start_at, "direction" => "asc")); + assertUrl($this, "/resources/image/upload"); + assertParam($this, "start_at", $start_at); + assertParam($this, "direction", "asc"); + } + + /** + * Should allow creating upload_presets + * + * @throws Api\GeneralError + */ + public function test28_create_upload_presets() + { + Curl::mockApi($this); + $this->api->create_upload_preset(array("name" => TEST_PRESET_NAME, "folder" => "folder", "live" => true)); + assertUrl($this, "/upload_presets"); + assertPost($this); + assertParam($this, "name", TEST_PRESET_NAME); + assertParam($this, "folder", "folder"); + assertParam($this, "live", 1); + } + + /** + * Should allow listing upload_presets + * + * @throws Api\GeneralError + */ + public function test28a_list_upload_presets() + { + Curl::mockApi($this); + $this->api->upload_presets(); + assertUrl($this, "/upload_presets"); + assertGet($this); + } + + /** + * Should allow getting a single upload_preset + * + * @throws Api\GeneralError + */ + public function test29_get_upload_presets() + { + Curl::mockApi($this); + $this->api->upload_preset(TEST_PRESET_NAME); + assertUrl($this, "/upload_presets/" . TEST_PRESET_NAME); + assertGet($this); + } + + /** + * Should allow deleting upload_presets + * + * @throws Api\GeneralError + */ + public function test30_delete_upload_presets() + { + Curl::mockApi($this); + $this->api->delete_upload_preset(TEST_PRESET_NAME); + assertUrl($this, "/upload_presets/" . TEST_PRESET_NAME); + assertDelete($this); + } + + /** + * Should allow updating upload_presets + * + * @throws Api\GeneralError + */ + public function test31_update_upload_presets() + { + Curl::mockApi($this); + $this->api->update_upload_preset( + TEST_PRESET_NAME, + array("colors" => true, "unsigned" => true, "disallow_public_id" => true, "live" => true) + ); + assertPut($this); + assertUrl($this, "/upload_presets/" . TEST_PRESET_NAME); + assertParam($this, "colors", 1); + assertParam($this, "unsigned", 1); + assertParam($this, "disallow_public_id", 1); + assertParam($this, "live", 1); + } + + /** + * Should allow listing folder + * + * @throws Api\GeneralError + */ + public function test32_folder_listing() + { + $this->markTestSkipped("For this test to work, 'Auto-create folders' should be enabled" . + "in the Upload Settings, and the account should be empty of folders. " . + "Comment out this line if you really want to test it."); + + Uploader::upload(TEST_IMG, array("public_id" => "test_folder1/item")); + Uploader::upload(TEST_IMG, array("public_id" => "test_folder2/item")); + Uploader::upload(TEST_IMG, array("public_id" => "test_folder1/test_subfolder1/item")); + Uploader::upload(TEST_IMG, array("public_id" => "test_folder1/test_subfolder2/item")); + $result = $this->api->root_folders(); + $this->assertContains(array("name" => "test_folder1", "path" => "test_folder1"), $result["folders"]); + $this->assertContains(array("name" => "test_folder2", "path" => "test_folder2"), $result["folders"]); + $result = $this->api->subfolders("test_folder1"); + $this->assertContains( + array("name" => "test_subfolder1", "path" => "test_folder1/test_subfolder1"), + $result["folders"] + ); + $this->assertContains( + array("name" => "test_subfolder2", "path" => "test_folder1/test_subfolder2"), + $result["folders"] + ); + } + + /** + * Should allow max_results and next_cursor in root_folders and subfolders + * + * @throws Api\GeneralError + */ + public function test_root_folder_and_subfolders_allow_max_results_and_next_cursor() + { + Curl::mockApi($this); + $next_cursor = '72410bbc4bfa1a135d9df56d91c072ba3356570d333450b286'. + 'aec30af27dbe3b6b51054047a65b007c8363900c3fe6ae'; + + $this->api->root_folders([ + 'max_results' => 3, + 'next_cursor' => $next_cursor, + ]); + + assertGet($this); + assertParam($this, "max_results", 3); + assertParam($this, "next_cursor", $next_cursor); + + $this->api->subfolders('folder1', [ + 'max_results' => 3, + 'next_cursor' => $next_cursor, + ]); + + assertGet($this); + assertParam($this, "max_results", 3); + assertParam($this, "next_cursor", $next_cursor); + } + + /** + * Should throw exception on non-existing folder + * + * @expectedException \Cloudinary\Api\NotFound + * + * @throws Api\GeneralError + */ + public function test33_folder_listing_error() + { + $this->api->subfolders("I-do-not-exist"); + } + + /** + * Should create folder + * + * @throws Api\GeneralError + * @throws Exception + */ + public function test_create_folder() + { + $folderPath = 'folder7'; + + Curl::mockApi($this); + + $this->api->create_folder($folderPath); + + assertPost($this); + assertUrl($this, "/folders/$folderPath"); + } + + /** + * Should delete folder + * + * @throws Api\GeneralError + * @throws Exception + */ + public function test_delete_folder() + { + $folderPath = UNIQUE_TEST_FOLDER; + + Curl::mockApi($this); + + $this->api->delete_folder($folderPath); + + assertDelete($this); + assertUrl($this, "/folders/$folderPath"); + } + + /** + * Should allow restoring resources + * + * @throws Api\GeneralError + */ + public function test34_restore() + { + Curl::mockApi($this); + $this->api->restore(array("api_test_restore")); + assertPost($this); + assertUrl($this, "/resources/image/upload/restore"); + assertParam($this, "public_ids[0]", "api_test_restore"); + } + + /** + * Should allow upload mapping + * @throws Api\GeneralError + */ + public function test35_upload_mapping() + { + Curl::mockApi($this); + + $this->api->create_upload_mapping("api_test_upload_mapping", array("template" => "http://cloudinary.com")); + assertUrl($this, "/upload_mappings"); + assertPost($this); + assertParam($this, "folder", "api_test_upload_mapping"); + assertParam($this, "template", "http://cloudinary.com"); + + $this->api->upload_mapping("api_test_upload_mapping"); + assertUrl($this, "/upload_mappings"); + assertGet($this); + assertParam($this, "folder", "api_test_upload_mapping"); + + $this->api->update_upload_mapping( + "api_test_upload_mapping", + array("template" => "http://res.cloudinary.com") + ); + assertUrl($this, "/upload_mappings"); + assertPut($this); + assertParam($this, "folder", "api_test_upload_mapping"); + assertParam($this, "template", "http://res.cloudinary.com"); + + $this->api->delete_upload_mapping("api_test_upload_mapping"); + assertUrl($this, "/upload_mappings"); + assertDelete($this); + assertParam($this, "folder", "api_test_upload_mapping"); + } + + private static $predefined_profiles = array( + "4k", + "full_hd", + "hd", + "sd", + "full_hd_wifi", + "full_hd_lean", + "hd_lean", + ); + + /** + * Should allow creating streaming profile + * + * @throws Api\GeneralError + */ + public function test_create_streaming_profile() + { + $options = array( + "representations" => array( + array( + "transformation" => array( + "bit_rate" => "5m", + "height" => 1200, + "width" => 1200, + "crop" => "limit", + ), + ), + ), + ); + $result = $this->api->create_streaming_profile(self::$streaming_profile_1, $options); + $this->assertArrayHasKey("representations", $result["data"]); + $reps = $result["data"]["representations"]; + $this->assertTrue(is_array($reps)); + // transformation is returned as an array + $this->assertTrue(is_array($reps[0]["transformation"])); + + $tr = $reps[0]["transformation"][0]; + $expected = array("bit_rate" => "5m", "height" => 1200, "width" => 1200, "crop" => "limit"); + $this->assertEquals($expected, $tr); + } + + /** + * Should allow updating and deleting streaming profile + * + * @throws Api\GeneralError + */ + public function test_update_delete_streaming_profile() + { + $options = array( + "representations" => array( + array( + "transformation" => array( + "bit_rate" => "5m", + "height" => 1200, + "width" => 1200, + "crop" => "limit", + ), + ), + ), + ); + try { + $this->api->create_streaming_profile(self::$streaming_profile_2, $options); + } catch (Cloudinary\Api\AlreadyExists $e) { + } + + $options = array( + "representations" => array( + array( + "transformation" => array( + "bit_rate" => "5m", + "height" => 1000, + "width" => 1000, + "crop" => "scale", + ), + ), + ), + ); + $result = $this->api->update_streaming_profile(self::$streaming_profile_2, $options); + + $this->assertArrayHasKey("representations", $result["data"]); + $reps = $result["data"]["representations"]; + $this->assertTrue(is_array($reps)); + // transformation is returned as an array + $this->assertTrue(is_array($reps[0]["transformation"])); + + $tr = $reps[0]["transformation"][0]; + $expected = array("bit_rate" => "5m", "height" => 1000, "width" => 1000, "crop" => "scale"); + $this->assertEquals($expected, $tr); + + $this->api->delete_streaming_profile(self::$streaming_profile_2); + $result = $this->api->list_streaming_profiles(); + $this->assertArrayNotHasKey(self::$streaming_profile_2, array_map(function ($profile) { + return $profile["name"]; + }, $result["data"])); + } + + /** + * Should allow getting streaming profile + * + * @throws Api\GeneralError + */ + public function test_get_streaming_profile() + { + + $result = $this->api->get_streaming_profile(self::$predefined_profiles[0]); + $this->assertArrayHasKey("representations", $result["data"]); + $reps = $result["data"]["representations"]; + $this->assertTrue(is_array($reps)); + // transformation is returned as an array + $this->assertTrue(is_array($reps[0]["transformation"])); + + $tr = $reps[0]["transformation"][0]; + $this->assertArrayHasKey("bit_rate", $tr); + $this->assertArrayHasKey("height", $tr); + $this->assertArrayHasKey("width", $tr); + $this->assertArrayHasKey("crop", $tr); + } + + /** + * Should allow listing streaming profiles + * + * @throws Api\GeneralError + */ + public function test_list_streaming_profile() + { + $result = $this->api->list_streaming_profiles(); + $names = array_map(function ($profile) { + return $profile["name"]; + }, $result["data"]); + $this->assertEmpty(array_diff(self::$predefined_profiles, $names)); + } + + /** + * Should allow updating resources + * + * @throws Api\GeneralError + */ + public function test_update_parameters() + { + Curl::mockApi($this); + + $this->api->update(self::$api_test, array("auto_tagging" => 0.5)); + assertUrl($this, '/resources/image/upload/' . self::$api_test); + assertParam($this, "auto_tagging", 0.5); + $fields = Curl::$instance->fields(); + $this->assertArrayNotHasKey("face_coordinates", $fields, "update() should not send empty parameters"); + $this->assertArrayNotHasKey("tags", $fields, "update() should not send empty parameters"); + $this->assertArrayNotHasKey("context", $fields, "update() should not send empty parameters"); + $this->assertArrayNotHasKey("face_coordinates", $fields, "update() should not send empty parameters"); + $this->assertArrayNotHasKey("custom_coordinates", $fields, "update() should not send empty parameters"); + $this->assertArrayNotHasKey("access_control", $fields, "update() should not send empty parameters"); + } + + /** + * Should allow the user to define ACL in the update parameters + * + * @throws Api\GeneralError + */ + public function test_update_access_control() + { + Curl::mockApi($this); + + $acl = array("access_type" => "anonymous", + "start" => "2018-02-22 16:20:57 +0200", + "end"=> "2018-03-22 00:00 +0200" + ); + $exp_acl = '[{"access_type":"anonymous",' . + '"start":"2018-02-22 16:20:57 +0200",' . + '"end":"2018-03-22 00:00 +0200"}]'; + + $this->api->update(self::$api_test, array("access_control" => $acl)); + + assertParam($this, "access_control", $exp_acl); + } + + /** + * Should correctly encode url + * + * @throws Api\GeneralError + */ + public function test_url_encoding() + { + Curl::mockApi($this); + + $public_ids = array("with space", "special!@#$%^&*(){}|?characters"); + $expected_public_ids = array("with%20space", "special%21%40%23%24%25%5E%26%2A%28%29%7B%7D%7C%3Fcharacters"); + + foreach ($public_ids as $index => $public_id) { + $this->api->update($public_id); + assertUrl($this, "/resources/image/upload/" . $expected_public_ids[$index]); + } + + $tags = array("tag1,tag2", 'with space,another space', 'spec!@l_t@g$%^&*_)(*>?<>||}{'); + $expected_tags = array( + "tag1%2Ctag2", + 'with%20space%2Canother%20space', + 'spec%21%40l_t%40g%24%25%5E%26%2A_%29%28%2A%3E%3F%3C%3E%7C%7C%7D%7B'); + + foreach ($tags as $index => $tag) { + $this->api->resources_by_tag($tag); + assertUrl($this, "/resources/image/tags/" . $expected_tags[$index]); + } + } + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ArchiveTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ArchiveTest.php new file mode 100644 index 0000000..6865bdf --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ArchiveTest.php @@ -0,0 +1,112 @@ +tag = "archive_test_" . SUFFIX; + $this->tags = array($this->tag, TEST_TAG, UNIQUE_TEST_TAG); + \Cloudinary::reset_config(); + if (!\Cloudinary::config_get("api_secret")) { + $this->markTestSkipped('Please setup environment for Upload test to run'); + } + + Uploader::upload("tests/logo.png", array("tags" => $this->tags)); + Uploader::upload("tests/logo.png", array("tags" => $this->tags, "width" => 10, "crop" => "scale")); + } + + public function tearDown() + { + Curl::$instance = new Curl(); + $api = new \Cloudinary\Api(); + $api->delete_resources_by_tag($this->tag); + } + + public function test_create_zip() + { + $result = Uploader::create_zip(array("tags" => $this->tag)); + $this->assertEquals(2, $result["file_count"]); + } + + public function test_expires_at() + { + Uploader::create_zip(array("tags" => $this->tag, "expires_at" => time() + 3600)); + assertUrl($this, '/image/generate_archive'); + assertParam($this, "target_format", "zip"); + assertParam($this, "tags[0]", $this->tag); + assertParam($this, "expires_at", null, "should support the 'expires_at' parameter"); + } + + public function test_skip_transformation_name() + { + Curl::mockUpload($this); + Uploader::create_zip(array("tags" => $this->tag, "skip_transformation_name" => true)); + assertUrl($this, '/image/generate_archive'); + assertParam($this, "tags[0]", $this->tag); + assertParam( + $this, + "skip_transformation_name", + 1, + "should support the 'skip_transformation_name' parameter" + ); + } + + public function test_allow_missing() + { + Curl::mockUpload($this); + Uploader::create_zip(array("tags" => $this->tag, "allow_missing" => true)); + assertUrl($this, '/image/generate_archive'); + assertParam($this, "tags[0]", $this->tag); + assertParam($this, "allow_missing", 1, "should support the 'allow_missing' parameter"); + } + + public function test_download_zip_url() + { + $result = \Cloudinary::download_zip_url(array("tags" => $this->tag)); + $file = tempnam(".", "zip"); + file_put_contents($file, file_get_contents($result)); + $zip = new \ZipArchive(); + $zip->open($file); + $this->assertEquals(2, $zip->numFiles); + unlink($file); + } + + public function test_create_archive_multiple_resource_types() + { + Curl::mockUpload($this); + + $testIds = [ + "image/upload/" . UNIQUE_TEST_ID, + "video/upload/" . UNIQUE_TEST_ID, + "raw/upload/" . UNIQUE_TEST_ID, + ]; + + Uploader::create_zip( + array( + "resource_type" => "auto", + "fully_qualified_public_ids" => $testIds + ) + ); + + assertUrl($this, '/auto/generate_archive'); + + assertParam($this, "fully_qualified_public_ids[0]", $testIds[0]); + assertParam($this, "fully_qualified_public_ids[1]", $testIds[1]); + assertParam($this, "fully_qualified_public_ids[2]", $testIds[2]); + } + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/AuthTokenTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/AuthTokenTest.php new file mode 100644 index 0000000..3c6581a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/AuthTokenTest.php @@ -0,0 +1,193 @@ +url_backup = getenv("CLOUDINARY_URL"); + \Cloudinary::config_from_url("cloudinary://a:b@test123?auth_token[duration]=300&auth_token[start_time]=11111111&auth_token[key]=" . AuthTokenTest::KEY); + \Cloudinary::config(array("private_cdn" => true)); + } + + protected function tearDown() + { + parent::tearDown(); + putenv("CLOUDINARY_URL=" . $this->url_backup); + \Cloudinary::config_from_url($this->url_backup); + } + + public function test_generate_with_start_time_and_duration() + { + $message = "should generate with start and duration"; + $token = \Cloudinary::generate_auth_token(array( + "start_time" => 1111111111, + "acl" => "/image/*", + "duration" => 300, + )); + $this->assertEquals( + '__cld_token__=st=1111111111~exp=1111111411~acl=%2fimage%2f*~hmac=1751370bcc6cfe9e03f30dd1a9722ba0f2cdca283fa3e6df3342a00a7528cc51', + $token, + $message + ); + } + + public function test_should_add_token_if_authToken_is_globally_set_and_signed_is_True() + { + $message = "should add token if authToken is globally set and signed = true"; + $options = array( + "sign_url" => true, + "resource_type" => "image", + "type" => "authenticated", + "version" => "1486020273", + ); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/authenticated/v1486020273/sample.jpg?__cld_token__=st=11111111~exp=11111411~hmac=8db0d753ee7bbb9e2eaf8698ca3797436ba4c20e31f44527e43b6a6e995cfdb3", + $url, + $message + ); + } + + public function test_should_add_token_for_public_resource() + { + $message = "should add token for 'public' resource"; + $options = array( + "sign_url" => true, + "resource_type" => "image", + "type" => "public", + "version" => "1486020273", + ); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/public/v1486020273/sample.jpg?__cld_token__=st=11111111~exp=11111411~hmac=c2b77d9f81be6d89b5d0ebc67b671557e88a40bcf03dd4a6997ff4b994ceb80e", + $url, + $message + ); + } + + public function test_should_not_add_token_if_signed_is_false() + { + $message = "should not add token if signed is null"; + $options = array("type" => "authenticated", "version" => "1486020273"); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/authenticated/v1486020273/sample.jpg", $url, + $message + ); + } + + public function test_null_token() + { + $message = "should not add token if authToken is globally set but null auth token is explicitly set and signed = true"; + $options = array( + "auth_token" => false, + "sign_url" => true, + "type" => "authenticated", + "version" => "1486020273", + ); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/authenticated/s--v2fTPYTu--/v1486020273/sample.jpg", + $url, + $message + ); + } + + public function test_explicit_authToken_should_override_global_setting() + { + $message = "explicit authToken should override global setting"; + $options = array( + "sign_url" => true, + "auth_token" => array( + "key" => AuthTokenTest::ALT_KEY, + "start_time" => 222222222, + "duration" => 100, + ), + "type" => "authenticated", + "transformation" => array( + "crop" => "scale", + "width" => 300, + ), + ); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/authenticated/c_scale,w_300/sample.jpg?__cld_token__=st=222222222~exp=222222322~hmac=55cfe516530461213fe3b3606014533b1eca8ff60aeab79d1bb84c9322eebc1f", + $url, + $message + ); + } + + public function test_should_compute_expiration_as_start_time_plus_duration() + { + $message = "should compute expiration as start time + duration"; + $token = array("key" => AuthTokenTest::KEY, "start_time" => 11111111, "duration" => 300); + $options = array( + "sign_url" => true, + "auth_token" => $token, + "resource_type" => "image", + "type" => "authenticated", + "version" => "1486020273", + ); + $url = \Cloudinary::cloudinary_url("sample.jpg", $options); + $this->assertEquals( + "http://test123-res.cloudinary.com/image/authenticated/v1486020273/sample.jpg?__cld_token__=st=11111111~exp=11111411~hmac=8db0d753ee7bbb9e2eaf8698ca3797436ba4c20e31f44527e43b6a6e995cfdb3", + $url, + $message + ); + } + + /** + * @expectedException \Cloudinary\Error + */ + public function test_must_provide_expiration_or_duration() + { + + $message = "should throw if expiration and duration are not provided"; + $token = array("key" => AuthTokenTest::KEY, "expiration" => null, "duration" => null); + AuthToken::generate($token); + $this->fail($message); + } + + /** + * @throws \Cloudinary\Error + */ + public function test_should_ignore_url_if_acl_is_provided() + { + $acl_opts = ["key" => AuthTokenTest::KEY, "start_time" => 1111111111, "duration" => 300, "acl" => "/image/*"]; + $acl_token = AuthToken::generate($acl_opts); + + $acl_opts["url"] = "sample.jpg"; + + $acl_token_url_ignored = AuthToken::generate($acl_opts); + + $this->assertEquals( + $acl_token, + $acl_token_url_ignored + ); + } + + /** + * @throws ReflectionException + */ + public function test_escape_to_lower() + { + $method = new ReflectionMethod('Cloudinary\\AuthToken', 'escape_to_lower'); + $method->setAccessible(true); + + $this->assertEquals( + 'Encode%20these%20%3a%7e%40%23%25%5e%26%7b%7d%5b%5d%5c%22%27%3b%2f%22,%20but%20not%20those%20$!()_.*', + $method->invoke(null, 'Encode these :~@#%^&{}[]\\"\';/", but not those $!()_.*') + ); + } +} + diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Adapter/KeyValueCacheAdapterTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Adapter/KeyValueCacheAdapterTest.php new file mode 100644 index 0000000..6832f42 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Adapter/KeyValueCacheAdapterTest.php @@ -0,0 +1,155 @@ +storage = new DummyCacheStorage(); + $this->adapter = new KeyValueCacheAdapter($this->storage); + } + + /** + * Should be successfully initialized with a valid storage + */ + public function testInitialization() + { + $validStorage = new DummyCacheStorage(); + $validAdapter = new KeyValueCacheAdapter($validStorage); + Assert::assertAttributeEquals($validStorage, 'keyValueStorage', $validAdapter); + } + + /** + * Data provider of invalid storage types for testInvalidInitialization + * + * @return array of invalid storage types + */ + public function invalidStorageProvider() + { + return [ + [null], + ['notAStorage'], + [''], + [5375], + [[]], + [true], + [new \StdClass] + ]; + } + + /** + * Should throw InvalidArgumentException in case of initialization with an invalid storage + * + * @dataProvider invalidStorageProvider + * + * @param mixed $invalidStorage Invalid storage type provided by invalidStorages data provider + * + * @expectedException InvalidArgumentException + */ + public function testInvalidInitialization($invalidStorage) + { + new KeyValueCacheAdapter($invalidStorage); // Boom! + } + + public function testGenerateCacheKey() + { + list($publicId, $type, $resourceType, $transformation, $format) = $this->parameters; + + $values = [ + [ // valid values + "467d06e5a695b15468f9362e5a58d44de523026b", + $this->parameters + ], + [ // allow empty values + "1576396c59fc50ac8dc37b75e1184268882c9bc2", + [$publicId, $type, $resourceType, "", null] + ], + [ // allow empty values + "d8d824ca4e9ac735544ff3c45c1df67749cc1520", + [$publicId, false, [], $transformation, $format] + ] + ]; + foreach ($values as $v) { + $p = $v[1]; + // Unfortunately no `...` in PHP before 5.6, so just pass all parameters one by one + Assert::assertEquals($v[0], $this->adapter->generateCacheKey($p[0], $p[1], $p[2], $p[3], $p[4])); + } + } + + public function testGetSet() + { + list($publicId, $type, $resourceType, $transformation, $format) = $this->parameters; + $value = $this->value; + + $this->adapter->set($publicId, $type, $resourceType, $transformation, $format, $value); + $actual_value = $this->adapter->get($publicId, $type, $resourceType, $transformation, $format); + + Assert::assertEquals($value, $actual_value); + } + + public function testDelete() + { + list($publicId, $type, $resourceType, $transformation, $format) = $this->parameters; + + $this->adapter->set($publicId, $type, $resourceType, $transformation, $format, $this->value); + $actual_value = $this->adapter->get($publicId, $type, $resourceType, $transformation, $format); + + Assert::assertEquals($this->value, $actual_value); + + $this->adapter->delete($publicId, $type, $resourceType, $transformation, $format); + $deleted_value = $this->adapter->get($publicId, $type, $resourceType, $transformation, $format); + + Assert::assertNull($deleted_value); + + // delete non-existing key + $result = $this->adapter->delete($publicId, $type, $resourceType, $transformation, $format); + Assert::assertTrue($result); + } + + public function testFlushAll() + { + list($publicId, $type, $resourceType, $transformation, $format) = $this->parameters; + $value = $this->value; + + list($publicId2, $type2, $resourceType2, $transformation2, $format2) = $this->parameters2; + $value2 = $this->value2; + + $this->adapter->set($publicId, $type, $resourceType, $transformation, $format, $value); + $this->adapter->set($publicId2, $type2, $resourceType2, $transformation2, $format2, $value2); + + $actual_value = $this->adapter->get($publicId, $type, $resourceType, $transformation, $format); + $actual_value2 = $this->adapter->get($publicId2, $type2, $resourceType2, $transformation2, $format2); + + Assert::assertEquals($value, $actual_value); + Assert::assertEquals($value2, $actual_value2); + + $this->adapter->flushAll(); + + $deleted_value = $this->adapter->get($publicId, $type, $resourceType, $transformation, $format); + $deleted_value2 = $this->adapter->get($publicId2, $type2, $resourceType2, $transformation2, $format2); + + Assert::assertNull($deleted_value); + Assert::assertNull($deleted_value2); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/ResponsiveBreakpointsCacheTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/ResponsiveBreakpointsCacheTest.php new file mode 100644 index 0000000..66706ab --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/ResponsiveBreakpointsCacheTest.php @@ -0,0 +1,116 @@ +cache = ResponsiveBreakpointsCache::instance(); + $this->cache->setCacheAdapter(new KeyValueCacheAdapter(new DummyCacheStorage())); + } + + public function testRBCacheInstance() + { + $instance = ResponsiveBreakpointsCache::instance(); + $instance2 = ResponsiveBreakpointsCache::instance(); + + $this::assertEquals($instance, $instance2); + } + + public function testRBCacheSetGet() + { + $this->cache->set(self::$publicId, [], self::$breakpoints); + + $res = $this->cache->get(self::$publicId); + + $this::assertEquals(self::$breakpoints, $res); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testRBCacheSetInvalidBreakpoints() + { + $this->cache->set(self::$publicId, [], "Not breakpoints at all"); + } + + public function testRBCacheDelete() + { + $this->cache->set(self::$publicId, [], self::$breakpoints); + + $this->cache->delete(self::$publicId); + + $res = $this->cache->get(self::$publicId); + + $this::assertNull($res); + } + + + public function testRBCacheFlushAll() + { + $this->cache->set(self::$publicId, [], self::$breakpoints); + + $this->cache->flushAll(); + + Assert::assertNull($this->cache->get(self::$publicId)); + } + + public function testRBCacheDisabled() + { + $disabledCache = ResponsiveBreakpointsCache::instance(); + + $disabledCacheReflection = new \ReflectionClass($disabledCache); + + $cacheAdapterProperty = $disabledCacheReflection->getProperty('cacheAdapter'); + $cacheAdapterProperty->setAccessible(true); + $cacheAdapterProperty->setValue($disabledCache, null); + + Assert::assertFalse($disabledCache->enabled()); + + Assert::assertFalse($disabledCache->set(self::$publicId, [], self::$breakpoints)); + Assert::assertNull($disabledCache->get(self::$publicId)); + Assert::assertFalse($disabledCache->delete(self::$publicId)); + Assert::assertFalse($disabledCache->flushAll()); + } + + public function testRBCacheFileSystemStorage() + { + $this->cache->init(["cache_adapter" => new KeyValueCacheAdapter(new FileSystemKeyValueStorage(null))]); + + try { + $this->cache->set(self::$publicId, [], self::$breakpoints); + $res = $this->cache->get(self::$publicId); + } catch (Exception $e) { + unset($e); + } + // No `finally` in PHP 5.4 + $this->cache->delete(self::$publicId); + + $this::assertEquals(self::$breakpoints, $res); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Storage/DummyCacheStorage.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Storage/DummyCacheStorage.php new file mode 100644 index 0000000..bd33b8d --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/Cache/Storage/DummyCacheStorage.php @@ -0,0 +1,59 @@ +rootPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . uniqid(UNIQUE_TEST_ID . '_'); + mkdir($this->rootPath); + + $this->storage = new FileSystemKeyValueStorage($this->rootPath); + } + + public function tearDown() + { + self::rmTree($this->rootPath); + } + + /** + * Helper Method, removes directory recursively + * + * @param string $dir Directory to remove + * + * @return bool + */ + public static function rmTree($dir) + { + $files = array_diff(scandir($dir), array('.','..')); + foreach ($files as $file) { + (is_dir("$dir/$file")) ? self::rmTree("$dir/$file") : unlink("$dir/$file"); + } + return rmdir($dir); + } + + /** + * Helper method for getting key full path + * + * @param $key + * + * @return mixed key full path + */ + private function getTestPath($key) + { + $getKeyFullPath = new ReflectionMethod('Cloudinary\Cache\Storage\FileSystemKeyValueStorage', 'getKeyFullPath'); + $getKeyFullPath->setAccessible(true); + + return $getKeyFullPath->invoke($this->storage, $key); + } + + + /** + * Helper method for setting value for the key + * + * @param $key + * @param $value + */ + private function setTestValue($key, $value) + { + $bytesWritten = file_put_contents($this->getTestPath($key), $value); + + self::assertNotFalse($bytesWritten); + } + + /** + * Helper method for getting value of the key + * + * @param $key + * + * @return bool|string value + */ + private function getTestValue($key) + { + return file_get_contents($this->getTestPath($key)); + } + + public function testInitWithNonExistingPath() + { + $nonExistingRootPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . uniqid(UNIQUE_TEST_ID . '_'); + + $success = true; + + try { + $this->storage = new FileSystemKeyValueStorage($nonExistingRootPath); + } catch (\Exception $e) { + $success = false; + } + + Assert::assertFileExists($nonExistingRootPath); // works with directories too + + self::rmTree($nonExistingRootPath); + + Assert::assertTrue($success); + } + + public function testSet() + { + $this->storage->set($this->key, $this->value); + + Assert::assertEquals($this->value, $this->getTestValue($this->key)); + + // Should set empty value + $this->storage->set($this->key, ''); + + Assert::assertEquals("", $this->getTestValue($this->key)); + } + + public function testGet() + { + $this->setTestValue($this->key, $this->value); + + Assert::assertEquals($this->value, $this->storage->get($this->key)); + + Assert::assertNull($this->storage->get('non-existing-key')); + + $this->setTestValue($this->key, ''); + + Assert::assertEquals('', $this->storage->get($this->key)); + } + + public function testDelete() + { + $this->storage->set($this->key, $this->value); + $this->storage->set($this->key2, $this->value2); + + Assert::assertEquals($this->value, $this->storage->get($this->key)); + Assert::assertEquals($this->value2, $this->storage->get($this->key2)); + + Assert::assertTrue($this->storage->delete($this->key)); + Assert::assertNull($this->storage->get($this->key)); + + // Should delete only one value (opposed to clear) + Assert::assertEquals($this->value2, $this->storage->get($this->key2)); + + // Should not crash on non-existing keys + Assert::assertTrue($this->storage->delete($this->key)); + } + + public function testClear() + { + $this->storage->set($this->key, $this->value); + $this->storage->set($this->key2, $this->value2); + + Assert::assertEquals($this->value, $this->storage->get($this->key)); + Assert::assertEquals($this->value2, $this->storage->get($this->key2)); + + Assert::assertTrue($this->storage->clear()); + + Assert::assertNull($this->storage->get($this->key)); + Assert::assertNull($this->storage->get($this->key2)); + // Should clear empty cache + Assert::assertTrue($this->storage->clear()); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryFieldTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryFieldTest.php new file mode 100644 index 0000000..d9f7d8c --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryFieldTest.php @@ -0,0 +1,40 @@ + "test123", + "secure_distribution" => null, + "private_cdn" => false, + "cname" => null)); + } + + public function testCloudinaryUrlFromCloudinaryField() + { + // [/][/][v/][.][#] + + // should use cloud_name from config + $result = Cloudinary::cloudinary_url(new CloudinaryField('test')); + $this->assertEquals('http://res.cloudinary.com/test123/image/upload/test', $result); + + // should ignore signature + $result = Cloudinary::cloudinary_url(new CloudinaryField('test#signature')); + $this->assertEquals('http://res.cloudinary.com/test123/image/upload/test', $result); + + $result = Cloudinary::cloudinary_url(new CloudinaryField('rss/imgt/v123/test.jpg')); + $this->assertEquals('http://res.cloudinary.com/test123/rss/imgt/v123/test.jpg', $result); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryTest.php new file mode 100644 index 0000000..1c6f94a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/CloudinaryTest.php @@ -0,0 +1,1913 @@ + 'crop', 'width' => 100]; + protected static $crop_transformation_str = 'c_crop,w_100'; + protected static $raw_transformation = "c_fill,e_grayscale,q_auto"; + protected static $sepia_transformation = ['crop' => 'lfill', 'width' => 400, 'effect' => 'sepia']; + protected static $sepia_transformation_str = 'c_lfill,e_sepia,w_400'; + + private static $custom_function_wasm = ['function_type' => 'wasm', 'source' => 'blur.wasm']; + private static $custom_function_wasm_str = 'wasm:blur.wasm'; + + private static $custom_function_remote = [ + 'function_type' => 'remote', + 'source' => 'https://df34ra4a.execute-api.us-west-2.amazonaws.com/default/cloudinaryFn', + ]; + private static $custom_function_remote_str = + 'remote:aHR0cHM6Ly9kZjM0cmE0YS5leGVjdXRlLWFwaS51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9kZWZhdWx0L2Nsb3VkaW5hcnlGbg=='; + + private $range_test_pairs = [ + // integer values + ["200", "200"], [200, "200"], [0, "0"], + // float values + ["200.0", "200.0"], [200.0, "200.0"], [200.123, "200.123"], [200.123000, "200.123"], [0.0, "0.0"], + //percent values + ["20p", "20p"], ["20P", "20p"], ["20%", "20p"], ["20.5%", "20.5p"], + // invalid values + ["p", null], ["", null], [null, null], ["non_auto", null], + ]; + + private $original_user_platform; + + public function setUp() + { + Cloudinary::reset_config(); + Cloudinary::config( + array( + "cloud_name" => "test123", + "api_key" => "a", + "api_secret" => "b", + "secure_distribution" => null, + "private_cdn" => false, + "cname" => null + ) + ); + + $this->original_user_platform = \Cloudinary::$USER_PLATFORM; + } + + public function tearDown() + { + parent::TearDown(); + \Cloudinary::$USER_PLATFORM = $this->original_user_platform; + } + + public function test_cloud_name() + { + // should use cloud_name from config + $result = Cloudinary::cloudinary_url("test"); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "test", $result); + } + + public function test_cloud_name_options() + { + // should allow overriding cloud_name in $options + $options = array("cloud_name" => "test321"); + $this->cloudinary_url_assertion("test", $options, "http://res.cloudinary.com/test321/image/upload/test"); + } + + public function test_user_agent() + { + $user_agent = \Cloudinary::userAgent(); + + $this->assertRegExp("/^CloudinaryPHP\/\d+\.\d+\.\d+ \(PHP \d+\.\d+\.\d+\)$/", $user_agent); + + $platform_information = 'TestPlatformInformation (From \"CloudinaryTest.php\")'; + \Cloudinary::$USER_PLATFORM = $platform_information; + $full_user_agent = \Cloudinary::userAgent(); + + $this->assertEquals( + $platform_information . ' ' . $user_agent, + $full_user_agent, + "USER_AGENT should include platform information if set" + ); + } + + public function test_secure_distribution() + { + // should use default secure distribution if secure=TRUE + $options = array("secure" => true); + $this->cloudinary_url_assertion("test", $options, "https://res.cloudinary.com/test123/image/upload/test"); + } + + public function test_secure_distribution_from_config() + { + // should use default secure distribution if secure=true set in config + Cloudinary::config(array("secure" => true)); + $this->cloudinary_url_assertion("test", array(), "https://res.cloudinary.com/test123/image/upload/test"); + } + + public function test_secure_distribution_overwrite() + { + // should allow overwriting secure distribution if secure=TRUE + $options = array("secure" => true, "secure_distribution" => "something.else.com"); + $this->cloudinary_url_assertion("test", $options, "https://something.else.com/test123/image/upload/test"); + } + + public function test_secure_distibution() + { + // should take secure distribution from config if secure=TRUE + Cloudinary::config(array("secure_distribution" => "config.secure.distribution.com")); + $options = array("secure" => true); + $this->cloudinary_url_assertion( + "test", + $options, + "https://config.secure.distribution.com/test123/image/upload/test" + ); + } + + public function test_secure_akamai() + { + // should default to akamai if secure is given with private_cdn and no secure_distribution + $options = array("secure" => true, "private_cdn" => true); + $this->cloudinary_url_assertion("test", $options, "https://test123-res.cloudinary.com/image/upload/test"); + } + + public function test_secure_non_akamai() + { + // should not add cloud_name if private_cdn and secure non akamai secure_distribution + $options = array("secure" => true, "private_cdn" => true, "secure_distribution" => "something.cloudfront.net"); + $this->cloudinary_url_assertion("test", $options, "https://something.cloudfront.net/image/upload/test"); + } + + public function test_http_private_cdn() + { + // should not add cloud_name if private_cdn and not secure + $options = array("private_cdn" => true); + $this->cloudinary_url_assertion("test", $options, "http://test123-res.cloudinary.com/image/upload/test"); + } + + public function test_secure_shared_subdomain() + { + // should support cdn_subdomain with secure on if using shared_domain + $options = array("cdn_subdomain" => true, "secure" => true); + $this->cloudinary_url_assertion("test", $options, "https://res-2.cloudinary.com/test123/image/upload/test"); + } + + public function test_secure_shared_subdomain_false() + { + // should support secure_cdn_subdomain false override with secure + $options = array("cdn_subdomain" => true, "secure" => true, "secure_cdn_subdomain" => false); + $this->cloudinary_url_assertion("test", $options, "https://res.cloudinary.com/test123/image/upload/test"); + } + + public function test_secure_subdomain_true() + { + // should support secure_cdn_subdomain true override with secure + $options = array( + "cdn_subdomain" => true, + "secure" => true, + "secure_cdn_subdomain" => true, + "private_cdn" => true, + ); + $this->cloudinary_url_assertion("test", $options, "https://test123-res-2.cloudinary.com/image/upload/test"); + } + + public function test_format() + { + // should use format from $options + $options = array("format" => "jpg"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "test.jpg"); + } + + public function test_crop() + { + // should use width and height from $options even if crop is not given + $options = array("width" => 100, "height" => 100); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "h_100,w_100/test", $result); + $this->assertEquals(array("width" => 100, "height" => 100), $options); + $options = array("width" => 100, "height" => 100, "crop" => "crop"); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(array("width" => 100, "height" => 100), $options); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_crop,h_100,w_100/test", $result); + } + + public function test_various_options() + { + // should use x, y, radius, prefix, gravity and quality from $options + $options = array( + "x" => 1, + "y" => 2, + "radius" => 3, + "gravity" => "center", + "quality" => 0.4, + "prefix" => "a", + "opacity" => 20, + ); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "g_center,o_20,p_a,q_0.4,r_3,x_1,y_2/test" + ); + $options = array("gravity" => "auto", "crop" => "crop", "width" => 0.5); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_crop,g_auto,w_0.5/test" + ); + $options = array("gravity" => "auto:ocr_text", "crop" => "crop", "width" => 0.5); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_crop,g_auto:ocr_text,w_0.5/test" + ); + $options = array("gravity" => "ocr_text", "crop" => "crop", "width" => 0.5); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_crop,g_ocr_text,w_0.5/test" + ); + } + + public function test_quality() + { + $this->cloudinary_url_assertion( + "test", + array("x" => 1, "y" => 2, "radius" => 3, "gravity" => "center", "quality" => 80, "prefix" => "a"), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "g_center,p_a,q_80,r_3,x_1,y_2/test" + ); + $this->cloudinary_url_assertion( + "test", + array("x" => 1, "y" => 2, "radius" => 3, "gravity" => "center", "quality" => "80:444", "prefix" => "a"), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "g_center,p_a,q_80:444,r_3,x_1,y_2/test" + ); + $this->cloudinary_url_assertion( + "test", + array("x" => 1, "y" => 2, "radius" => 3, "gravity" => "center", "quality" => "auto", "prefix" => "a"), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "g_center,p_a,q_auto,r_3,x_1,y_2/test" + ); + $this->cloudinary_url_assertion( + "test", + array("x" => 1, "y" => 2, "radius" => 3, "gravity" => "center", "quality" => "auto:good", "prefix" => "a"), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "g_center,p_a,q_auto:good,r_3,x_1,y_2/test" + ); + } + + /** + * should support a string, integer and array of mixed types + */ + + public function test_radius() + { + $radius_test_values = [ + [10, "r_10"], + ['10', 'r_10'], + ['$v', 'r_$v'], + [[10, 20, 30], 'r_10:20:30'], + [[10, 20, '$v'], 'r_10:20:$v'], + [[10, 20, '$v', 40], 'r_10:20:$v:40'], + [['10:20'], 'r_10:20'], + [['10:20:$v:40'], 'r_10:20:$v:40'] + ]; + + foreach ($radius_test_values as $value) { + $this->cloudinary_url_assertion( + CloudinaryTest::TEST_ID, + array("radius" => $value[0]), + CloudinaryTest::DEFAULT_UPLOAD_PATH . $value[1] . '/' . CloudinaryTest::TEST_ID + ); + } + } + + + public function test_no_empty_options() + { + // should use x, y, width, height, crop, prefix and opacity from $options + $options = array( + "x" => 0, + "y" => '0', + "width" => '', + "height" => "", + "crop" => ' ', + "prefix" => false, + "opacity" => null, + ); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "x_0,y_0/test"); + } + + public function test_transformation_simple() + { + // should support named transformation + $options = array("transformation" => "blip"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "t_blip/test"); + } + + public function test_transformation_array() + { + // should support array of named transformations + $options = array("transformation" => array("blip", "blop")); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "t_blip.blop/test"); + } + + public function test_base_transformations() + { + // should support base transformation + $options = array( + "transformation" => array("x" => 100, "y" => 100, "crop" => "fill"), + "crop" => "crop", + "width" => 100, + ); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(array("width" => 100), $options); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_fill,x_100,y_100/c_crop,w_100/test", $result); + } + + public function test_base_transformation_array() + { + // should support array of base transformations + $options = array( + "transformation" => array( + array("x" => 100, "y" => 100, "width" => 200, "crop" => "fill"), + array("radius" => 10), + ), + "crop" => "crop", + "width" => 100, + ); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(array("width" => 100), $options); + $this->assertEquals( + CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_fill,w_200,x_100,y_100/r_10/c_crop,w_100/test", + $result + ); + } + + public function test_no_empty_transformation() + { + // should not include empty transformations + $options = array("transformation" => array(array(), array("x" => 100, "y" => 100, "crop" => "fill"), array())); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_fill,x_100,y_100/test" + ); + } + + /** + * Should support chaining transformations at the end + */ + public function test_chain_transformations() + { + $options = ["effect" => "art:incognito", "format" => "png"]; + + $chained_transformations = [ + ["x" => 100, "y" => 100, "width" => 200, "crop" => "fill"], + ["radius" => 10], + ["raw_transformation" => self::$raw_transformation] + ]; + + $actual_options = Cloudinary::chain_transformations($options, $chained_transformations); + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $this->assertEquals( + "e_art:incognito/c_fill,w_200,x_100,y_100/r_10/" . self::$raw_transformation, + $actual_transformation_str, + "it should chain an array of transformations" + ); + + $message = "Should support chaining transformations, when default options have no transformations"; + $actual_options = Cloudinary::chain_transformations([], $chained_transformations); + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $this->assertEquals( + "c_fill,w_200,x_100,y_100/r_10/" . self::$raw_transformation, + $actual_transformation_str, + $message + ); + + $message = "Should handle empty list of chained transformations"; + $actual_options = Cloudinary::chain_transformations($options, []); + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $this->assertEquals("e_art:incognito", $actual_transformation_str, $message); + + $message = "Should handle empty options and empty list of chained transformations"; + $actual_options = Cloudinary::chain_transformations([], []); + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $this->assertEquals("", $actual_transformation_str, $message); + + $message = "Should remove transformation options from resulting options"; + $actual_options = Cloudinary::chain_transformations( + ["width" => 200, "height" => 100], + $chained_transformations + ); + + $this->assertArrayNotHasKey("width", $actual_options, $message); + $this->assertArrayNotHasKey("height", $actual_options, $message); + + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $this->assertEquals( + "h_100,w_200/c_fill,w_200,x_100,y_100/r_10/c_fill,e_grayscale,q_auto", + $actual_transformation_str, + $message + ); + + $message = "Should chain transformations with a fetch option"; + $options["type"] = "fetch"; + + Cloudinary::patch_fetch_format($options); + $actual_options = Cloudinary::chain_transformations($options, $chained_transformations); + + // format should be removed when we use fetch + $this->assertArrayNotHasKey("format", $actual_options, $message); + + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + $message = "should use url format as a fetch_format"; + $this->assertEquals( + "e_art:incognito,f_png/c_fill,w_200,x_100,y_100/r_10/" . self::$raw_transformation, + $actual_transformation_str, + $message + ); + + $message = "should use fetch_format"; + $options["fetch_format"] = "gif"; + + $actual_options = Cloudinary::chain_transformations($options, $chained_transformations); + $actual_transformation_str = Cloudinary::generate_transformation_string($actual_options); + + // should use fetch_format + $this->assertEquals( + "e_art:incognito,f_gif/c_fill,w_200,x_100,y_100/r_10/" . self::$raw_transformation, + $actual_transformation_str, + $message + ); + } + + public function test_size() + { + // should support size + $options = array("size" => "10x10", "crop" => "crop"); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(array("width" => "10", "height" => "10"), $options); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "c_crop,h_10,w_10/test", $result); + } + + public function test_type() + { + // should use type from $options + $options = array("type" => "facebook"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_ROOT_PATH . "image/facebook/test"); + } + + public function test_resource_type() + { + // should use resource_type from $options + $options = array("resource_type" => "raw"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_ROOT_PATH . "raw/upload/test"); + } + + public function test_ignore_http() + { + // should ignore http links only if type is not given + $options = array(); + $this->cloudinary_url_assertion("http://test", $options, "http://test"); + $options = array("type" => "fetch"); + $this->cloudinary_url_assertion( + "http://test", + $options, + CloudinaryTest::DEFAULT_ROOT_PATH . "image/fetch/http://test" + ); + } + + public function test_fetch() + { + // should escape fetch urls + $options = array("type" => "fetch"); + $this->cloudinary_url_assertion( + "http://blah.com/hello?a=b", + $options, + CloudinaryTest::DEFAULT_ROOT_PATH . "image/fetch/http://blah.com/hello%3Fa%3Db" + ); + } + + public function test_cname() + { + // should support extenal cname + $options = array("cname" => "hello.com"); + $this->cloudinary_url_assertion("test", $options, "http://hello.com/test123/image/upload/test"); + } + + public function test_cname_subdomain() + { + // should support extenal cname with cdn_subdomain on + $options = array("cname" => "hello.com", "cdn_subdomain" => true); + $this->cloudinary_url_assertion("test", $options, "http://a2.hello.com/test123/image/upload/test"); + } + + public function test_http_escape() + { + // should escape http urls + $options = array("type" => "youtube"); + $this->cloudinary_url_assertion( + "http://www.youtube.com/watch?v=d9NF2edxy-M", + $options, + CloudinaryTest::DEFAULT_ROOT_PATH . "image/youtube/http://www.youtube.com/watch%3Fv%3Dd9NF2edxy-M" + ); + } + + public function test_background() + { + // should support background + $options = array("background" => "red"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "b_red/test"); + $options = array("background" => "#112233"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "b_rgb:112233/test"); + } + + public function test_default_image() + { + // should support default_image + $options = array("default_image" => "default"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "d_default/test"); + } + + public function test_angle() + { + // should support angle + $options = array("angle" => 12); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "a_12/test"); + $options = array("angle" => array("auto", 12)); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "a_auto.12/test"); + } + + public function test_overlay() + { + // should support overlay + $options = array("overlay" => "text:hello"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "l_text:hello/test"); + // should not pass width/height to html if overlay + $options = array("overlay" => "text:hello", "width" => 100, "height" => 100); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "h_100,l_text:hello,w_100/test" + ); + } + + public function test_underlay() + { + // should support underlay + $options = array("underlay" => "text:hello"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "u_text:hello/test"); + // should not pass width/height to html if underlay + $options = array("underlay" => "text:hello", "width" => 100, "height" => 100); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "h_100,u_text:hello,w_100/test" + ); + } + + public function test_overlay_fetch() + { + // should support overlay from a fetch url + $options = array("overlay" => "fetch:http://cloudinary.com/images/old_logo.png"); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "l_fetch:aHR0cDovL2Nsb3VkaW5hcnkuY29tL2ltYWdlcy9vbGRfbG9nby5wbmc=/test" + ); + } + + public function test_underlay_fetch() + { + // should support underlay from a fetch url + $options = array("underlay" => "fetch:http://cloudinary.com/images/old_logo.png"); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "u_fetch:aHR0cDovL2Nsb3VkaW5hcnkuY29tL2ltYWdlcy9vbGRfbG9nby5wbmc=/test" + ); + } + + public function test_fetch_format() + { + // should support format for fetch urls + $options = array("format" => "jpg", "type" => "fetch"); + $this->cloudinary_url_assertion( + "http://cloudinary.com/images/logo.png", + $options, + CloudinaryTest::DEFAULT_ROOT_PATH . "image/fetch/f_jpg/http://cloudinary.com/images/logo.png" + ); + } + + public function test_streaming_profile() + { + // should support streaming profile + $options = array("streaming_profile" => "some-profile"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "sp_some-profile/test"); + } + + public function test_effect() + { + // should support effect + $options = array("effect" => "sepia"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "e_sepia/test"); + } + + public function test_effect_with_array() + { + // should support effect with array + $options = array("effect" => array("sepia", -10)); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "e_sepia:-10/test"); + } + + public function test_density() + { + // should support density + $options = array("density" => 150); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "dn_150/test"); + } + + public function test_custom_function() + { + $test_id = self::TEST_ID; + $wasm_str = self::$custom_function_wasm_str; + + // should support custom function from string + $options = array('custom_function' => self::$custom_function_wasm_str); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_$wasm_str/$test_id" + ); + + // should support custom function from array + $options = array('custom_function' => self::$custom_function_wasm); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_$wasm_str/$test_id" + ); + + $remote_str = self::$custom_function_remote_str; + // should encode custom function source for remote function + $options = array('custom_function' => self::$custom_function_remote); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_$remote_str/$test_id" + ); + } + + public function test_custom_pre_function_string() + { + $test_id = self::TEST_ID; + $wasm_str = self::$custom_function_wasm_str; + + // should support custom pre function from string + $options = array('custom_pre_function' => self::$custom_function_wasm_str); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_pre:$wasm_str/$test_id" + ); + } + + public function test_custom_pre_function_wasm_array() + { + $test_id = self::TEST_ID; + $wasm_str = self::$custom_function_wasm_str; + + // should support custom pre function from array + $options = array('custom_pre_function' => self::$custom_function_wasm); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_pre:$wasm_str/$test_id" + ); + } + + public function test_custom_pre_function_remote() + { + $test_id = self::TEST_ID; + $remote_str = self::$custom_function_remote_str; + + // should encode custom pre function source for remote pre function + $options = array('custom_pre_function' => self::$custom_function_remote); + $this->cloudinary_url_assertion( + $test_id, + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "fn_pre:$remote_str/$test_id" + ); + } + + public function test_page() + { + // should support page + $options = array("page" => 5); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "pg_5/test"); + } + + public function test_border() + { + // should support border + $options = array("border" => array("width" => 5)); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "bo_5px_solid_black/test" + ); + $options = array("border" => array("width" => 5, "color" => "#ffaabbdd")); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "bo_5px_solid_rgb:ffaabbdd/test" + ); + $options = array("border" => "1px_solid_blue"); + $this->cloudinary_url_assertion( + "test", + $options, + CloudinaryTest::DEFAULT_UPLOAD_PATH . "bo_1px_solid_blue/test" + ); + } + + public function test_flags() + { + // should support flags + $options = array("flags" => "abc"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "fl_abc/test"); + $options = array("flags" => array("abc", "def")); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "fl_abc.def/test"); + } + + public function test_aspect_ratio() + { + // should support background + $options = array("aspect_ratio" => "1.0"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "ar_1.0/test"); + $options = array("aspect_ratio" => "3:2"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_UPLOAD_PATH . "ar_3:2/test"); + } + + public function test_e_art_incognito() + { + $options = array("effect" => "art:incognito", "format" => "png"); + $tag = Cloudinary::generate_transformation_string($options); + $this->assertEquals( + "e_art:incognito", + $tag + ); + } + + public function test_folder_version() + { + // should add version if public_id contains / + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array(), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::DEFAULT_VERSION_STR . '/' . self::TEST_FOLDER + ); + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array('version' => self::IMAGE_VERSION), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::IMAGE_VERSION_STR . '/' . self::TEST_FOLDER + ); + $this->cloudinary_url_assertion( + self::IMAGE_VERSION_STR . '/' . self::TEST_ID, + array(), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::IMAGE_VERSION_STR . '/' . self::TEST_ID + ); + } + + /** + * Should not set default version v1 to resources stored in folders if force_version is set to false + */ + public function test_force_version() + { + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array(), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::DEFAULT_VERSION_STR . '/' . self::TEST_FOLDER + ); + + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array('force_version' => false), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::TEST_FOLDER + ); + + // Explicitly set version is always passed + $this->cloudinary_url_assertion( + self::TEST_ID, + array( + 'version' => self::IMAGE_VERSION, + 'force_version' => false + ), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::IMAGE_VERSION_STR . '/' . self::TEST_ID + ); + + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array( + 'version' => self::IMAGE_VERSION, + 'force_version' => false + ), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::IMAGE_VERSION_STR . '/' . self::TEST_FOLDER + ); + + // Should use force_version from config + Cloudinary::config(array('force_version' => false)); + + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array(), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::TEST_FOLDER + ); + + // Should override config with options + $this->cloudinary_url_assertion( + self::TEST_FOLDER, + array('force_version' => true), + CloudinaryTest::DEFAULT_UPLOAD_PATH . self::DEFAULT_VERSION_STR . '/' . self::TEST_FOLDER + ); + } + + public function test_shorten() + { + $options = array("shorten" => true); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_ROOT_PATH . "iu/test"); + + $options = array("shorten" => true, "type" => "private"); + $this->cloudinary_url_assertion("test", $options, CloudinaryTest::DEFAULT_ROOT_PATH . "image/private/test"); + } + + public function test_signed_url() + { + // should correctly sign a url + $this->cloudinary_url_assertion( + "image.jpg", + array( + "version" => 1234, + "transformation" => array("crop" => "crop", "width" => 10, "height" => 20), + "sign_url" => true, + ), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "s--Ai4Znfl3--/c_crop,h_20,w_10/v1234/image.jpg" + ); + $this->cloudinary_url_assertion( + "image.jpg", + array("version" => 1234, "sign_url" => true), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "s----SjmNDA--/v1234/image.jpg" + ); + $this->cloudinary_url_assertion( + "image.jpg", + array("transformation" => array("crop" => "crop", "width" => 10, "height" => 20), "sign_url" => true), + CloudinaryTest::DEFAULT_UPLOAD_PATH . "s--Ai4Znfl3--/c_crop,h_20,w_10/image.jpg" + ); + $this->cloudinary_url_assertion( + "image.jpg", + array( + "transformation" => array("crop" => "crop", "width" => 10, "height" => 20), + "type" => "authenticated", + "sign_url" => true, + ), + CloudinaryTest::DEFAULT_ROOT_PATH . "image/authenticated/s--Ai4Znfl3--/c_crop,h_20,w_10/image.jpg" + ); + $this->cloudinary_url_assertion( + "http://google.com/path/to/image.png", + array("type" => "fetch", "version" => 1234, "sign_url" => true), + CloudinaryTest::DEFAULT_ROOT_PATH . "image/fetch/s--hH_YcbiS--/v1234/http://google.com/path/to/image.png" + ); + } + + public function test_escape_public_id() + { + //should escape public_ids + $tests = array( + "a b" => "a%20b", + "a+b" => "a%2Bb", + "a%20b" => "a%20b", + "a-b" => "a-b", + "a??b" => "a%3F%3Fb", + "parentheses(interject)" => "parentheses%28interject%29", + ); + foreach ($tests as $source => $target) { + $url = Cloudinary::cloudinary_url($source); + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . "$target", $url); + } + } + + /** + * Should support url_suffix in shared distribution + */ + public function test_allow_url_suffix_in_shared() + { + $options = array("url_suffix" => "hello"); + $url = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals(CloudinaryTest::DEFAULT_ROOT_PATH . "images/test/hello", $url); + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_disallow_url_suffix_with_non_upload_types() + { + //should disallow url_suffix in non upload types + $options = array("url_suffix" => "hello", "private_cdn" => true, "type" => "facebook"); + Cloudinary::cloudinary_url("test", $options); + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_disallow_suffix_with_dot() + { + //should disallow url_suffix with . + $options = array("url_suffix" => "hello/world", "private_cdn" => true); + Cloudinary::cloudinary_url("test", $options); + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_disallow_suffix_with_slash() + { + //should disallow url_suffix with / + $options = array("url_suffix" => "hello/world", "private_cdn" => true); + Cloudinary::cloudinary_url("test", $options); + } + + + public function test_url_suffix_for_private_cdn() + { + //should support url_suffix for private_cdn + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true), + "http://test123-res.cloudinary.com/images/test/hello" + ); + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "transformation" => array("angle" => 0), "private_cdn" => true), + "http://test123-res.cloudinary.com/images/a_0/test/hello" + ); + } + + public function test_format_after_url_suffix() + { + //should put format after url_suffix + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true, "format" => "jpg"), + "http://test123-res.cloudinary.com/images/test/hello.jpg" + ); + } + + public function test_dont_sign_the_url_suffix() + { + //should not sign the url_suffix + $options = array("format" => "jpg", "sign_url" => true); + preg_match('/s--[0-9A-Za-z_-]{8}--/', Cloudinary::cloudinary_url("test", $options), $matches); + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true, "format" => "jpg", "sign_url" => true), + "http://test123-res.cloudinary.com/images/" . $matches[0] . "/test/hello.jpg" + ); + + $options = array("format" => "jpg", "angle" => 0, "sign_url" => true); + preg_match('/s--[0-9A-Za-z_-]{8}--/', Cloudinary::cloudinary_url("test", $options), $matches); + $this->cloudinary_url_assertion( + "test", + array( + "url_suffix" => "hello", + "private_cdn" => true, + "format" => "jpg", + "transformation" => array("angle" => 0), + "sign_url" => true, + ), + "http://test123-res.cloudinary.com/images/" . $matches[0] . "/a_0/test/hello.jpg" + ); + } + + public function test_url_suffix_for_raw() + { + //should support url_suffix for raw uploads + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true, "resource_type" => "raw"), + "http://test123-res.cloudinary.com/files/test/hello" + ); + } + + /** + * Should support url_suffix for video uploads + */ + public function test_url_suffix_for_videos() + { + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true, "resource_type" => "video"), + "http://test123-res.cloudinary.com/videos/test/hello" + ); + } + + /** + * Should support url_suffix for private images + */ + public function test_url_suffix_for_private() + { + $this->cloudinary_url_assertion( + "test", + array("url_suffix" => "hello", "private_cdn" => true, "resource_type" => "image", "type" => "private"), + "http://test123-res.cloudinary.com/private_images/test/hello" + ); + + $this->cloudinary_url_assertion( + "test", + array( + "url_suffix" => "hello", + "private_cdn" => true, + "format" => "jpg", + "resource_type" => "image", + "type" => "private", + ), + "http://test123-res.cloudinary.com/private_images/test/hello.jpg" + ); + } + + /** + * Should support url_suffix for authenticated images + */ + public function test_url_suffix_for_authenticated() + { + $this->cloudinary_url_assertion( + "test", + array( + "url_suffix" => "hello", + "private_cdn" => true, + "resource_type" => "image", + "type" => "authenticated" + ), + "http://test123-res.cloudinary.com/authenticated_images/test/hello" + ); + } + + public function test_allow_use_root_path_in_shared() + { + + $this->cloudinary_url_assertion( + "test", + array("use_root_path" => true, "private_cdn" => false), + CloudinaryTest::DEFAULT_ROOT_PATH . "test" + ); + $this->cloudinary_url_assertion( + "test", + array("use_root_path" => true, "private_cdn" => false, "transformation" => array("angle" => 0)), + CloudinaryTest::DEFAULT_ROOT_PATH . "a_0/test" + ); + } + + public function test_use_root_path_for_private_cdn() + { + //should support use_root_path for private_cdn + $this->cloudinary_url_assertion( + "test", + array("use_root_path" => true, "private_cdn" => true), + "http://test123-res.cloudinary.com/test" + ); + $this->cloudinary_url_assertion( + "test", + array("use_root_path" => true, "private_cdn" => true, "transformation" => array("angle" => 0)), + "http://test123-res.cloudinary.com/a_0/test" + ); + } + + public function test_use_root_path_with_url_suffix_for_private_cdn() + { + //should support use_root_path together with url_suffix for private_cdn + $this->cloudinary_url_assertion( + "test", + array("use_root_path" => true, "url_suffix" => "hello", "private_cdn" => true), + "http://test123-res.cloudinary.com/test/hello" + ); + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_disallow_use_root_path_if_not_image_upload_1() + { + //should disallow use_root_path if not image/upload + $options = array("use_root_path" => true, "private_cdn" => true, "type" => "facebook"); + Cloudinary::cloudinary_url("test", $options); + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_disallow_use_root_path_if_not_image_upload_2() + { + //should disallow use_root_path if not image/upload + $options = array("use_root_path" => true, "private_cdn" => true, "resource_type" => "raw"); + Cloudinary::cloudinary_url("test", $options); + } + + public function test_norm_range_value() + { + $method = new ReflectionMethod('Cloudinary', 'norm_range_value'); + $method->setAccessible(true); + foreach ($this->range_test_pairs as $pair) { + $this->assertEquals($method->invoke(null, $pair[0]), $pair[1]); + } + $this->assertNull($method->invoke(null, "auto"), "Shouldn't support 'auto' value"); + } + + public function test_norm_auto_range_value() + { + $method = new ReflectionMethod('Cloudinary', 'norm_auto_range_value'); + $method->setAccessible(true); + foreach ($this->range_test_pairs as $pair) { + $this->assertEquals($method->invoke(null, $pair[0]), $pair[1]); + } + $this->assertEquals($method->invoke(null, "auto"), "auto", "Should support 'auto' value"); + } + + public function test_video_codec() + { + // should support a string value + $this->cloudinary_url_assertion("video_id", array('resource_type' => 'video', 'video_codec' => 'auto'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "vc_auto/video_id"); + // should support a hash value + $this->cloudinary_url_assertion( + "video_id", + array( + 'resource_type' => 'video', + 'video_codec' => array('codec' => 'h264', 'profile' => 'basic', 'level' => '3.1'), + ), + CloudinaryTest::VIDEO_UPLOAD_PATH . "vc_h264:basic:3.1/video_id"); + } + + /** + * Should support a single number, an array of mixed type and a string, including open-ended and closed range values + */ + public function test_fps() + { + $fps_test_values = [ + ['24-29.97', 'fps_24-29.97'], + [24, 'fps_24'], + [24.973, 'fps_24.973'], + ['24', 'fps_24'], + ['-24', 'fps_-24'], + ['$v', 'fps_$v'], + [[24, 29.97], 'fps_24-29.97'], + [['24', '$v'], 'fps_24-$v'] + ]; + + foreach ($fps_test_values as $value) { + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'fps' => $value[0]), + CloudinaryTest::VIDEO_UPLOAD_PATH . $value[1] . "/video_id" + ); + } + } + + /** + * Should support a positive number or a string + */ + public function test_keyframe_interval() + { + $test_values = [ + [10, 'ki_10.0'], + [0.05, 'ki_0.05'], + [3.45, 'ki_3.45'], + [300, 'ki_300.0'], + ['10', 'ki_10'], + ]; + + foreach ($test_values as $value) { + $this->cloudinary_url_assertion( + 'video_id', + array('resource_type' => 'video', 'keyframe_interval' => $value[0]), + CloudinaryTest::VIDEO_UPLOAD_PATH . $value[1] . "/video_id" + ); + } + } + + /** + * @expectedException InvalidArgumentException + */ + public function test_keyframe_interval_positive() { + $options = array('resource_type' => 'video', 'keyframe_interval' => -1); + Cloudinary::cloudinary_url('video_id', $options); + } + + public function test_audio_codec() + { + // should support a string value + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'audio_codec' => 'acc'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "ac_acc/video_id" + ); + } + + public function test_bit_rate() + { + // should support an integer value + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'bit_rate' => 2048), + CloudinaryTest::VIDEO_UPLOAD_PATH . "br_2048/video_id" + ); + // should support "k" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'bit_rate' => '44k'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "br_44k/video_id" + ); + // should support "m" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'bit_rate' => '1m'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "br_1m/video_id" + ); + } + + public function test_audio_frequency() + { + // should support an integer value + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'audio_frequency' => 44100), + CloudinaryTest::VIDEO_UPLOAD_PATH . "af_44100/video_id" + ); + } + + public function test_video_sampling() + { + // should support an integer value + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'video_sampling' => 20), + CloudinaryTest::VIDEO_UPLOAD_PATH . "vs_20/video_id" + ); + // should support an string value in the a form of 's' + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'video_sampling' => "2.3s"), + CloudinaryTest::VIDEO_UPLOAD_PATH . "vs_2.3s/video_id" + ); + } + + public function test_start_offset() + { + // should support decimal seconds + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'start_offset' => 2.63), + CloudinaryTest::VIDEO_UPLOAD_PATH . "so_2.63/video_id" + ); + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'start_offset' => '2.63'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "so_2.63/video_id" + ); + // should support percents of the video length as "p" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'start_offset' => '35p'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "so_35p/video_id" + ); + // should support percents of the video length as "%" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'start_offset' => '35%'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "so_35p/video_id" + ); + // should support auto select of a suitable frame from the first few seconds of a video + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'start_offset' => 'auto'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "so_auto/video_id" + ); + } + + public function test_end_offset() + { + // should support decimal seconds + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'end_offset' => 2.63), + CloudinaryTest::VIDEO_UPLOAD_PATH . "eo_2.63/video_id" + ); + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'end_offset' => '2.63'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "eo_2.63/video_id" + ); + // should support percents of the video length as "p" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'end_offset' => '35p'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "eo_35p/video_id" + ); + // should support percents of the video length as "%" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'end_offset' => '35%'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "eo_35p/video_id" + ); + } + + public function test_duration_parameter() + { + // should support decimal seconds + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'duration' => 2.63), + CloudinaryTest::VIDEO_UPLOAD_PATH . "du_2.63/video_id" + ); + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'duration' => '2.63'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "du_2.63/video_id" + ); + // should support percents of the video length as "p" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'duration' => '35p'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "du_35p/video_id" + ); + // should support percents of the video length as "%" + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'duration' => '35%'), + CloudinaryTest::VIDEO_UPLOAD_PATH . "du_35p/video_id" + ); + } + + public function test_offset() + { + foreach (array( + 'eo_3.21,so_2.66' => '2.66..3.21', + 'eo_3.22,so_2.67' => array(2.67, 3.22), + 'eo_70p,so_35p' => array('35%', '70%'), + 'eo_71p,so_36p' => array('36p', '71p'), + 'eo_70.5p,so_35.5p' => array('35.5p', '70.5p'), + ) as $transformation => $offset + ) { + $this->cloudinary_url_assertion( + "video_id", + array('resource_type' => 'video', 'offset' => $offset), + CloudinaryTest::VIDEO_UPLOAD_PATH . $transformation . "/video_id" + ); + } + } + + public function layers_options() + { + return array( + "public_id" => array(array("public_id" => "logo"), "logo"), + "public_id with folder" => array(array("public_id" => "folder/logo"), "folder:logo"), + "private" => array(array("public_id" => "logo", "type" => "private"), "private:logo"), + "format" => array(array("public_id" => "logo", "format" => "png"), "logo.png"), + "video" => array(array("resource_type" => "video", "public_id" => "cat"), "video:cat"), + "text" => array( + array("public_id" => "logo", "text" => "Hello World, Nice to meet you?"), + "text:logo:Hello%20World%252C%20Nice%20to%20meet%20you%3F", + ), + "text with slash" => array( + array( + "text" => "Hello World, Nice/ to meet you?", + "font_family" => "Arial", + "font_size" => "18", + ), + "text:Arial_18:Hello%20World%252C%20Nice%252F%20to%20meet%20you%3F", + ), + "text with font family and size" => array( + array( + "text" => "Hello World, Nice to meet you?", + "font_family" => "Arial", + "font_size" => "18", + ), + "text:Arial_18:Hello%20World%252C%20Nice%20to%20meet%20you%3F", + ), + "text with style" => array( + array( + "text" => "Hello World, Nice to meet you?", + "font_family" => "Arial", + "font_size" => "18", + "font_weight" => "bold", + "font_style" => "italic", + "letter_spacing" => 4, + ), + "text:Arial_18_bold_italic_letter_spacing_4:Hello%20World%252C%20Nice%20to%20meet%20you%3F", + ), + "text with antialiasing and hinting" => array( + array( + "text" => "Hello World, Nice to meet you?", + "font_family" => "Arial", + "font_size" => "18", + "font_antialiasing" => "best", + "font_hinting" => "medium" + ), + "text:Arial_18_antialias_best_hinting_medium:Hello%20World%252C%20Nice%20to%20meet%20you%3F", + ), + "subtitles" => array( + array("resource_type" => "subtitles", "public_id" => "sample_sub_en.srt"), + "subtitles:sample_sub_en.srt", + ), + "subtitles with font family and size" => array( + array( + "resource_type" => "subtitles", + "public_id" => "sample_sub_he.srt", + "font_family" => "Arial", + "font_size" => "40", + ), + "subtitles:Arial_40:sample_sub_he.srt", + ), + "fetch" => array( + array("public_id" => "logo", 'fetch' => 'https://cloudinary.com/images/old_logo.png'), + 'fetch:aHR0cHM6Ly9jbG91ZGluYXJ5LmNvbS9pbWFnZXMvb2xkX2xvZ28ucG5n', + ), + + ); + } + + /** + * @dataProvider layers_options + */ + public function test_overlay_options($options, $expected) + { + $reflector = new ReflectionClass('Cloudinary'); + $process_layer = $reflector->getMethod('process_layer'); + $process_layer->setAccessible(true); + $result = $process_layer->invoke(null, $options, "overlay"); + $this->assertEquals($expected, $result); + } + + public function test_ignore_default_values_in_overlay_options() + { + $options = array("public_id" => "logo", "type" => "upload", "resource_type" => "image"); + $expected = "logo"; + $reflector = new ReflectionClass('Cloudinary'); + $process_layer = $reflector->getMethod('process_layer'); + $process_layer->setAccessible(true); + $result = $process_layer->invoke(null, $options, "overlay"); + $this->assertEquals($expected, $result); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Must supply either style parameters or a public_id + * when providing text parameter in a text overlay + */ + public function test_text_require_public_id_or_style() + { + $options = array("overlay" => array("text" => "text")); + Cloudinary::cloudinary_url("test", $options); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Must supply font_family for text in overlay + */ + public function test_overlay_style_requires_font_family() + { + $options = array("overlay" => array("text" => "text", "font_style" => "italic")); + Cloudinary::cloudinary_url("test", $options); + } + + public function resource_types() + { + return array( + "image" => array("image"), + "video" => array("video"), + "raw" => array("raw"), + "subtitles" => array("subtitles"), + ); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessageRegExp #Must supply public_id for .* underlay# + * @dataProvider resource_types + */ + public function test_underlay_require_public_id_for_non_text($resource_type) + { + $options = array("underlay" => array("resource_type" => $resource_type)); + Cloudinary::cloudinary_url("test", $options); + } + + /** + * should support and translate operators: '=', '!=', '<', '>', '<=', '>=', '&&', '||' + * and variables: width, height, pages, faces, aspect_ratio + */ + public function test_translate_if() + { + $allOperators = + 'if_' . + 'w_eq_0_and' . + '_h_ne_0_or' . + '_ar_lt_0_and' . + '_pc_gt_0_and' . + '_fc_lte_0_and' . + '_w_gte_0' . + ',e_grayscale'; + $condition = "width = 0 && height != 0 || aspect_ratio < 0 && page_count > 0 and face_count <= 0 and width >= 0"; + $options = array("if" => $condition, "effect" => "grayscale"); + $transformation = Cloudinary::generate_transformation_string($options); + $this->assertEquals($allOperators, $transformation); + $this->assertEquals(array(), $options); + $options = array("if" => "aspect_ratio > 0.3 && aspect_ratio < 0.5", "effect" => "grayscale"); + $transformation = Cloudinary::generate_transformation_string($options); + $this->assertEquals("if_ar_gt_0.3_and_ar_lt_0.5,e_grayscale", $transformation); + $this->assertEquals(array(), $options); + } + + public function test_normalize_expression_should_not_convert_user_variables() + { + $options = array( + 'transformation' => array( + array('$width' => 10), + array('width' => '$width + 10 + width'), + ), + ); + + $t = Cloudinary::generate_transformation_string($options); + + $this->assertEquals('$width_10/w_$width_add_10_add_w', $t); + } + + public function test_array_should_define_set_of_variables() + { + $options = array( + 'if' => "face_count > 2", + 'crop' => "scale", + 'width' => '$foo * 200', + 'variables' => array( + '$z' => 5, + '$foo' => '$z * 2', + ), + ); + + $t = Cloudinary::generate_transformation_string($options); + $this->assertEquals('if_fc_gt_2,$z_5,$foo_$z_mul_2,c_scale,w_$foo_mul_200', $t); + } + + public function test_duration_variable() + { + $options = array('if' => "duration > 30", 'width' => '100', 'crop' => "scale"); + $t = Cloudinary::generate_transformation_string($options); + + $this->assertEquals('if_du_gt_30,c_scale,w_100', $t); + + $options = array('if' => "initial_duration > 30", 'width' => '100', 'crop' => "scale"); + $t = Cloudinary::generate_transformation_string($options); + + $this->assertEquals('if_idu_gt_30,c_scale,w_100', $t); + } + + public function test_key_should_define_variable() + { + $options = array( + 'transformation' => array( + array('$foo' => 10), + array('if' => "face_count > 2"), + array('crop' => "scale", 'width' => '$foo * 200 / face_count'), + array('if' => "end"), + ), + ); + + $t = Cloudinary::generate_transformation_string($options); + $this->assertEquals('$foo_10/if_fc_gt_2/c_scale,w_$foo_mul_200_div_fc/if_end', $t); + } + + public function test_url_should_convert_operators() + { + $options = array( + 'transformation' => array( + array('width' => 'initial_width ^ 2','height' => 'initial_height * 2', 'crop' => 'scale'), + ), + ); + + $result = Cloudinary::cloudinary_url("test", $options); + + $this->assertEquals(CloudinaryTest::DEFAULT_UPLOAD_PATH . 'c_scale,h_ih_mul_2,w_iw_pow_2/test', $result); + } + + public function test_should_support_streaming_profile() + { + $options = array( + 'streaming_profile' => 'some_profile', + ); + + $t = Cloudinary::generate_transformation_string($options); + $this->assertEquals('sp_some_profile', $t); + } + + public function test_should_sort_defined_variable() + { + $options = array( + '$second' => 1, + '$first' => 2, + ); + + $t = Cloudinary::generate_transformation_string($options); + $this->assertEquals('$first_2,$second_1', $t); + } + + public function test_should_place_defined_variables_before_ordered() + { + $options = array( + 'variables' => array( + '$z' => 5, + '$foo' => '$z * 2', + ), + '$second' => 1, + '$first' => 2, + ); + + $t = Cloudinary::generate_transformation_string($options); + $this->assertEquals('$first_2,$second_1,$z_5,$foo_$z_mul_2', $t); + } + + public function test_should_support_text_values() + { + $e = array( + 'effect' => '$efname:100', + '$efname' => '!blur!', + ); + $t = Cloudinary::generate_transformation_string($e); + + $this->assertEquals('$efname_!blur!,e_$efname:100', $t); + } + + public function test_should_support_string_interpolation() + { + $this->cloudinary_url_assertion( + "sample", + array( + 'crop' => 'scale', + 'overlay' => array( + 'text' => '$(start)Hello $(name)$(ext), $(no ) $( no)$(end)', + 'font_family' => "Arial", + 'font_size' => "18", + ), + ), + CloudinaryTest::DEFAULT_UPLOAD_PATH . 'c_scale,l_text:Arial_18:$(start)Hello%20$(name)$(ext)%252C%20%24%28no%20%29%20%24%28%20no%29$(end)/sample' + ); + } + + /** + * Test build_array_of_assoc_arrays function + */ + public function test_build_array_of_assoc_arrays() + { + $assoc_array_data = array("one" => 1, "two" => 2, "three" => 3); + $array_of_assoc_array = array($assoc_array_data); + $method = new ReflectionMethod('Cloudinary', 'build_array_of_assoc_arrays'); + $method->setAccessible(true); + # should convert an assoc array to an array of assoc arrays + $this->assertEquals(array($assoc_array_data), $method->invoke(null, $assoc_array_data)); + + # should leave as is + $this->assertEquals($array_of_assoc_array, $method->invoke(null, $array_of_assoc_array)); + + # should convert a JSON string representing an assoc array to an array of assoc arrays + $string_data = '{"one": 1, "two": 2, "three": 3}'; + $this->assertEquals($array_of_assoc_array, $method->invoke(null, $string_data)); + + # should convert a JSON string representing an array of assoc arrays to an array of assoc arrays + $string_array_data = '[{"one": 1, "two": 2, "three": 3}]'; + $this->assertEquals($array_of_assoc_array, $method->invoke(null, $string_array_data)); + + # should return an empty array on null + $this->assertEquals(array(), $method->invoke(null, null)); + + # should return an empty array on array() + $this->assertEquals(array(), $method->invoke(null, array())); + + # should throw InvalidArgumentException on invalid value + $invalid_values = array("", array(array()), array("not_an_array"), array(7357)); + foreach ($invalid_values as $value) { + try { + $method->invoke(null, $value); + $this->fail('InvalidArgumentException was not thrown'); + } catch (\InvalidArgumentException $e) { + } + } + } + + /** + * Test json_encode_array_of_assoc_arrays function + */ + public function test_json_encode_array_of_assoc_arrays() + { + $method = new ReflectionMethod('Cloudinary', 'json_encode_array_of_assoc_arrays'); + $method->setAccessible(true); + # should encode simple values + $this->assertEquals('[]', $method->invoke(null, (array()))); + $this->assertEquals('[{"k":"v"}]', $method->invoke(null, array(array("k" =>"v")))); + + # should encode DateTime to ISO format + $this->assertEquals( + '[{"k":"2019-02-22T00:00:00+0000"}]', + $method->invoke(null, array(array("k" =>new \DateTime("2019-02-22")))) + ); + $this->assertEquals( + '[{"k":"2019-02-22T16:20:57+0000"}]', + $method->invoke(null, array(array("k" =>new \DateTime("2019-02-22 16:20:57Z")))) + ); + + # should throw InvalidArgumentException on invalid value + try { + $method->invoke(null, "not_valid"); + $this->fail('InvalidArgumentException was not thrown'); + } catch (\InvalidArgumentException $e) { + } + } + + /** + * Test encode_array_to_json function + * + * @see test_json_encode_array_of_assoc_arrays + * @see test_build_array_of_assoc_arrays + */ + public function test_encode_array_to_json() + { + $method = new ReflectionMethod('Cloudinary', 'json_encode_array_of_assoc_arrays'); + $method->setAccessible(true); + # should handle null value + $this->assertEquals(null, Cloudinary::encode_array_to_json(null)); + + # should handle regular case + $this->assertEquals('[{"k":"v"}]', Cloudinary::encode_array_to_json('[{"k":"v"}]')); + $this->assertEquals('[{"k":"v"}]', $method->invoke(null, array(array("k" =>"v")))); + } + + /** + * Should safely encode string to base64url format (with _ instead of / and - instead of +) + * + * @throws ReflectionException + */ + public function test_base64url_encode() + { + $base64url_encode = new ReflectionMethod('Cloudinary', 'base64url_encode'); + $base64url_encode->setAccessible(true); + + $this->assertEquals("YWQ_Lix4MDl-IUAh", $base64url_encode->invoke(null, "ad?.,x09~!@!")); + } + + /** + * Test array_copy function + */ + public function test_array_copy() + { + // Should return non array values as is + $this->assertEquals(null, Cloudinary::array_copy(null)); + $this->assertEquals('null', Cloudinary::array_copy('null')); + + // Should copy simple array + $orig_array = array('a', array('b' =>'c'), 'd'); + $same_orig_array = array('a', array('b' =>'c'), 'd'); + $copied_array = Cloudinary::array_copy($orig_array); + $orig_array[1]['b'] = 'e'; + + $this->assertNotEquals($same_orig_array, $orig_array); + $this->assertEquals($same_orig_array, $copied_array); + + // Should copy objects in an array + $o = new stdClass(); + $o->key = 'original_value'; + + $orig_array = array('o' =>$o); + + $shallow_copied_array = $orig_array; + $copied_array = Cloudinary::array_copy($orig_array); + + $o->key = 'new_value'; + + $this->assertEquals('new_value', $orig_array['o']->key); + $this->assertEquals('new_value', $shallow_copied_array['o']->key); + $this->assertEquals('original_value', $copied_array['o']->key); + } + + /** + * Should correctly handle format and fetch_format with and without custom transformation + */ + public function test_cloudinary_scaled_url() + { + $image_format = "jpg"; + $fetch_format = "gif"; + $resp_w = 99; + $resp_trans = "c_scale,w_$resp_w"; + $effect = "sepia"; + + $options = array("format" => $image_format, "type" => "fetch", "fetch_format" => $fetch_format); + + // Without custom transformation + $actual_url = Cloudinary::cloudinary_scaled_url(self::FETCH_URL, $resp_w, [], $options); + + $this->assertEquals( + self::DEFAULT_FETCH_PATH . "f_$fetch_format/$resp_trans/" . self::FETCH_URL, + $actual_url + ); + + // With custom transformation + $actual_url = Cloudinary::cloudinary_scaled_url(self::FETCH_URL, $resp_w, self::$crop_transformation, $options); + + $this->assertEquals( + self::DEFAULT_FETCH_PATH . "c_crop,f_$image_format,w_100/$resp_trans/" . self::FETCH_URL, + $actual_url + ); + + // Add base transformation + $options["effect"] = $effect; + $actual_url = Cloudinary::cloudinary_scaled_url(self::FETCH_URL, $resp_w, [], $options); + + $this->assertEquals( + self::DEFAULT_FETCH_PATH . "e_$effect,f_$fetch_format/$resp_trans/" . self::FETCH_URL, + $actual_url + ); + + // Should ignore base transformation + $actual_url = Cloudinary::cloudinary_scaled_url(self::FETCH_URL, $resp_w, self::$crop_transformation, $options); + + $this->assertEquals( + self::DEFAULT_FETCH_PATH . "c_crop,f_$image_format,w_100/$resp_trans/" . self::FETCH_URL, + $actual_url + ); + + $options["raw_transformation"] = self::$raw_transformation; + + // Should include raw transformation from base options + $actual_url = Cloudinary::cloudinary_scaled_url(self::FETCH_URL, $resp_w, [], $options); + + $this->assertEquals( + self::DEFAULT_FETCH_PATH . "e_$effect,f_$fetch_format," . self::$raw_transformation. "/$resp_trans/". + self::FETCH_URL, + $actual_url + ); + } + + public function test_build_eager() + { + $test_data = [ + ['should support strings', + [self::$sepia_transformation_str, self::$sepia_transformation_str . '/jpg'], + self::$sepia_transformation_str . '|' . self::$sepia_transformation_str . '/jpg'], + ['should concatenate transformations using pipe', + [self::$crop_transformation, self::$sepia_transformation], + self::$crop_transformation_str . '|' . self::$sepia_transformation_str], + ['should support transformations with multiple components', + [['transformation' => [self::$crop_transformation, self::$sepia_transformation]], + self::$sepia_transformation], + self::$crop_transformation_str . '/' . self::$sepia_transformation_str . '|' . + self::$sepia_transformation_str], + ['should concatenate format at the end of the transformation', + [array_merge(self::$crop_transformation, ['format' => 'gif']), self::$sepia_transformation], + self::$crop_transformation_str . '/gif|' . self::$sepia_transformation_str], + ['should support an empty format', + [array_merge(self::$crop_transformation, ['format' => '']), self::$sepia_transformation], + self::$crop_transformation_str . '/|' . self::$sepia_transformation_str], + ['should treat a null format as none', + [array_merge(self::$crop_transformation, ['format' => null]), self::$sepia_transformation], + self::$crop_transformation_str . '|' . self::$sepia_transformation_str], + ['should concatenate format at the end of the transformation', + [array_merge(self::$crop_transformation, ['format' => 'gif']), + array_merge(self::$sepia_transformation, ['format' => 'jpg'])], + self::$crop_transformation_str . '/gif|' . self::$sepia_transformation_str . '/jpg'], + ['should support transformations with multiple components and format', + [['transformation' => [self::$crop_transformation, self::$sepia_transformation], 'format' => 'gif'], + self::$sepia_transformation], + self::$crop_transformation_str . '/' . self::$sepia_transformation_str . '/gif|' . + self::$sepia_transformation_str] + ]; + + foreach ($test_data as $single_test) { + $this->assertEquals($single_test[2], Cloudinary::build_eager($single_test[1]), $single_test[0]); + } + } + + private function cloudinary_url_assertion($source, $options, $expected, $expected_options = array()) + { + $url = Cloudinary::cloudinary_url($source, $options); + $this->assertEquals($expected_options, $options); + $this->assertEquals($expected, $url); + } + +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ConfigTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ConfigTest.php new file mode 100644 index 0000000..e527de8 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/ConfigTest.php @@ -0,0 +1,42 @@ +assertArrayHasKey('foo', \Cloudinary::config()); + $this->assertArrayHasKey('bar', \Cloudinary::config()['foo']); + $this->assertEquals('value', \Cloudinary::config()['foo']['bar']); + } + + public function test_cloudinary_url_valid_scheme() + { + $cloudinary_url = 'cloudinary://123456789012345:ALKJdjklLJAjhkKJ45hBK92baj3@test'; + + \Cloudinary::config_from_url($cloudinary_url); + } + + public function test_cloudinary_url_invalid_scheme() + { + $cloudinary_urls = [ + 'CLOUDINARY_URL=cloudinary://123456789012345:ALKJdjklLJAjhkKJ45hBK92baj3@test', + 'https://123456789012345:ALKJdjklLJAjhkKJ45hBK92baj3@test', + '://123456789012345:ALKJdjklLJAjhkKJ45hBK92baj3@test', + ' ' + ]; + + foreach ($cloudinary_urls as $cloudinary_url) { + try { + \Cloudinary::config_from_url($cloudinary_url); + $this->fail('InvalidArgumentException was not thrown'); + } catch (\InvalidArgumentException $e) { + } + } + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HelpersTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HelpersTest.php new file mode 100644 index 0000000..bf792f2 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HelpersTest.php @@ -0,0 +1,106 @@ + 'crop', 'width' => 100]; + protected static $crop_transformation_str = 'c_crop,w_100'; + + + public static function setUpBeforeClass() + { + \Cloudinary::reset_config(); + + if (!Cloudinary::config_get("api_secret")) { + self::markTestSkipped('Please setup environment for Helpers test to run'); + } + + self::$helpers_test_id = "helpers_test_" . UNIQUE_TEST_ID; + + Uploader::upload(TEST_IMG, ["public_id" => self::$helpers_test_id, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG)]); + } + + public static function tearDownAfterClass() + { + if (!Cloudinary::config_get("api_secret")) { + self::fail("You need to configure the cloudinary api for the tests to work."); + } + + $api = new Cloudinary\Api(); + + try { + $api->delete_resources([self::$helpers_test_id]); + } catch (\Exception $e) { + } + } + + public function setUp() + { + Curl::$instance = new Curl(); + } + + /** + * Should retrieve responsive breakpoints from cloudinary resource (mocked) + * + * @throws \Cloudinary\Error + */ + public function test_fetch_breakpoints() + { + Curl::mockRequest($this, self::$mocked_response); + + $actual_breakpoints = fetch_breakpoints(self::$helpers_test_id); + + $this->assertEquals(self::$mocked_breakpoints, $actual_breakpoints); + + $this->assertContains(self::$expected_transformation, Curl::$instance->url_path()); + } + + /** + * Should retrieve responsive breakpoints from cloudinary resource with custom transformation (mocked) + * + * @throws \Cloudinary\Error + */ + public function test_fetch_breakpoints_with_transformation() + { + Curl::mockRequest($this, self::$mocked_response); + + $srcset = ["transformation" => self::$crop_transformation]; + $actual_breakpoints = fetch_breakpoints(self::$helpers_test_id, $srcset); + + $this->assertEquals(self::$mocked_breakpoints, $actual_breakpoints); + + $this->assertContains( + self::$crop_transformation_str . '/' .self::$expected_transformation, + Curl::$instance->url_path() + ); + } + + /** + * Should retrieve responsive breakpoints from cloudinary resource (real request) + * + * @throws \Cloudinary\Error + */ + public function test_fetch_breakpoints_real() + { + $actual_breakpoints = fetch_breakpoints(self::$helpers_test_id); + + $this->assertContains(self::$expected_transformation, Curl::$instance->url_path()); + + $this->assertTrue(is_array($actual_breakpoints)); + $this->assertGreaterThan(0, count($actual_breakpoints)); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HttpClientTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HttpClientTest.php new file mode 100644 index 0000000..fb08500 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/HttpClientTest.php @@ -0,0 +1,104 @@ + self::$http_client_test_id]); + } + + public static function tearDownAfterClass() + { + if (!Cloudinary::config_get("api_secret")) { + self::fail("You need to configure the cloudinary api for the tests to work."); + } + + $api = new Cloudinary\Api(); + + try { + $api->delete_resources([self::$http_client_test_id]); + } catch (\Exception $e) { + } + } + + public function setUp() + { + $this->httpClient = new HttpClient(); + } + + + /** + * @throws Error + */ + public function testHttpClientGetJSON() + { + $json_options = ['width'=> 'auto:breakpoints:json']; + $json_url = Cloudinary::cloudinary_url(self::$http_client_test_id, $json_options); + $json = $this->httpClient->getJSON($json_url); + + $this->assertArrayHasKey('breakpoints', $json); + $this->assertTrue(is_array($json['breakpoints'])); + } + + /** + * Should throw Cloudinary\Error on invalid or non JSON reponse + */ + public function testHttpClientGetJSONNonJSON() + { + $url = Cloudinary::cloudinary_url(self::$http_client_test_id); + + $message = ""; + + try { + $this->httpClient->getJSON($url); + $this->fail("Cloudinary\Error expected"); + } catch (Cloudinary\Error $e) { + $message = $e->getMessage(); + } + + self::assertStringStartsWith("Error parsing server response", $message); + } + + /** + * Should throw Cloudinary\Error on invalid or non existing URL + */ + public function testHttpClientGetJSONInvalidURL() + { + $url = Cloudinary::cloudinary_url(self::$http_client_test_id . '_non_existing'); + + $message = ""; + + try { + $this->httpClient->getJSON($url); + $this->fail("Cloudinary\Error expected"); + } catch (Cloudinary\Error $e) { + $message = $e->getMessage(); + } + + self::assertStringStartsWith("Server returned unexpected status code", $message); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SearchTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SearchTest.php new file mode 100644 index 0000000..ca50e59 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SearchTest.php @@ -0,0 +1,175 @@ + UNIQUE_TEST_TAG . "_" . $i, + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + "context" => "stage=value", + "eager" => array( + "transformation" => array( + "width" => 100, + "crop" => "scale", + ), + ), + ) + ); + } + sleep(3); + } + + public function setUp() + { + \Cloudinary::reset_config(); + if (!\Cloudinary::config_get("api_secret")) { + $this->markTestSkipped("Please setup environment for Search test to run"); + } + $this->search = new Search(); + } + + public function tearDown() + { + Curl::$instance = new Curl(); + } + + public static function tearDownAfterClass() + { + Curl::$instance = new Curl(); + (new Api())->delete_resources_by_tag(UNIQUE_TEST_TAG); + } + + public function test_empty_query() + { + $result = $this->search->as_array(); + $this->assertEquals(count($result), 0, "Should generate an empty query JSON"); + } + + public function test_should_add_expression_as_array() + { + + $query = $this->search->expression('format:jpg')->as_array(); + $this->assertEquals($query, array("expression" => 'format:jpg')); + } + + public function test_should_add_sort_by_as_array() + { + $query = $this->search->sort_by('created_at', 'asc')->sort_by('updated_at', 'desc')->as_array(); + $this->assertEquals( + $query, + array( + "sort_by" => array( + array('created_at' => 'asc'), + array('updated_at' => 'desc'), + ), + ) + ); + } + + public function test_should_add_max_results_as_array() + { + $query = $this->search->max_results('10')->as_array(); + $this->assertEquals($query, array("max_results" => '10')); + } + + public function test_should_add_next_cursor_as_array() + { + + $query = $this + ->search + ->next_cursor('ec471a97ba510904ab57460b3ba3150ec29b6f8563eb1c10f6925ed0c6813f33cfa62ec6cf5ad96be6d6fa3ac3a76ccb') + ->as_array(); + + $this->assertEquals( + $query, + array("next_cursor" => 'ec471a97ba510904ab57460b3ba3150ec29b6f8563eb1c10f6925ed0c6813f33cfa62ec6cf5ad96be6d6fa3ac3a76ccb') + ); + } + + public function test_should_add_aggregations_arguments_as_array_as_array() + { + $query = $this->search->aggregate('format')->aggregate('size_category')->as_array(); + $this->assertEquals($query, array("aggregate" => ["format", "size_category"])); + } + + public function test_should_add_with_field_as_array() + { + $query = $this->search->with_field('context')->with_field('tags')->as_array(); + $this->assertEquals($query, array("with_field" => ["context", "tags"])); + } + + public function test_should_return_all_images_tagged() + { + + $results = $this->search->expression("tags:" . UNIQUE_TEST_TAG)->execute(); + $this->assertEquals(count($results['resources']), 3); + } + + public function test_should_return_resource() + { + $results = $this->search->expression("public_id:" . UNIQUE_TEST_TAG . "_1")->execute(); + $this->assertEquals(count($results['resources']), 1); + } + + public function test_execute_with_params() + { + Curl::mockApi($this); + $result = $this + ->search + ->expression("format:jpg") + ->max_results(10) + ->next_cursor("abcd") + ->sort_by("created_at", "asc") + ->sort_by("updated_at") + ->aggregate("format") + ->aggregate("resource_type") + ->with_field("tags") + ->with_field("image_metadata") + ->execute(); + + assertJson( + $this, + json_encode( + array( + "sort_by" => array( + array("created_at" => "asc"), + array("updated_at" => "desc"), + ), + "aggregate" => array("format", "resource_type"), + "with_field" => array("tags", "image_metadata"), + "expression" => "format:jpg", + "max_results" => 10, + "next_cursor" => "abcd", + ) + ), + Curl::$instance->fields(), "Should correctly encode JSON into the HTTP request" + ); + + assertJson( + $this, + json_encode(array("Content-type: application/json", "Accept: application/json")), + json_encode(Curl::$instance->getopt(CURLOPT_HTTPHEADER)), + "Should use right headers for execution of advanced search api" + ); + } + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SignatureVerifierTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SignatureVerifierTest.php new file mode 100644 index 0000000..01c1991 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/SignatureVerifierTest.php @@ -0,0 +1,231 @@ + self::API_SECRET]); + } + + public function tearDown() + { + \Cloudinary::reset_config(); + } + + public function testSuccessfulNotificationSignatureVerification() + { + $signatureTestValues = [ + ['timestamp' => self::$timestamp, 'validFor' => self::$validFor], + ['timestamp' => (string)self::$timestamp, 'validFor' => (string)self::$validFor] + ]; + + foreach ($signatureTestValues as $value) { + $result = SignatureVerifier::verifyNotificationSignature( + self::$notificationBody, + $value['timestamp'], + self::$notificationSignature, + $value['validFor'] + ); + + self::assertTrue($result); + } + } + + public function testFailedNotificationSignatureVerification() + { + $signatureTestValues = [ + ['body' => '{' . self::$notificationBody . '}', 'timestamp' => self::$timestamp, + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => self::$timestamp - 1, + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => self::$timestamp, + 'signature' => self::$notificationSignature . 'a'] + ]; + + foreach ($signatureTestValues as $value) { + $result = SignatureVerifier::verifyNotificationSignature( + $value['body'], + $value['timestamp'], + $value['signature'] + ); + + self::assertFalse($result); + } + } + + public function testDefaultValidFor() + { + $result = SignatureVerifier::verifyNotificationSignature( + self::$notificationBody, + self::$timestamp, + self::$notificationSignature + ); + + self::assertTrue($result); + } + + public function testExpiredTimestamp() + { + $reducedValidFor = self::$validFor - 1; + + $result = SignatureVerifier::verifyNotificationSignature( + self::$notificationBody, + self::$timestamp, + self::$notificationSignature, + $reducedValidFor + ); + + self::assertFalse($result); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage API Secret is invalid + */ + public function testNotificationMissingApiSecret() + { + \Cloudinary::config(['api_secret' => null]); + + SignatureVerifier::verifyNotificationSignature( + self::$notificationBody, + self::$timestamp, + self::$notificationSignature + ); + } + + public function testNotificationInvalidParameter() + { + $invalidValues = [ + ['body' => null, 'timestamp' => self::$timestamp, + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => null, + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => self::$timestamp, + 'signature' => null], + ['body' => [self::$notificationBody], 'timestamp' => self::$timestamp, + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => [self::$timestamp], + 'signature' => self::$notificationSignature], + ['body' => self::$notificationBody, 'timestamp' => self::$timestamp, + 'signature' => [self::$notificationSignature]] + ]; + + foreach ($invalidValues as $value) { + $success = false; + try { + SignatureVerifier::verifyNotificationSignature( + $value['body'], + $value['timestamp'], + $value['signature'] + ); + } catch (\InvalidArgumentException $e) { + $success = true; + } + self::assertTrue($success); + } + } + + public function testSuccessfulApiResponseSignatureVerification() + { + $signatureTestValues = [self::TEST_VERSION, (string)self::TEST_VERSION]; + + foreach ($signatureTestValues as $value) { + $result = SignatureVerifier::verifyApiResponseSignature( + self::$publicId, + $value, + self::$apiResponseSignature + ); + + self::assertTrue($result); + } + } + + public function testFailedApiResponseSignatureVerification() + { + $signatureTestValues = [ + ['publicId' => self::$publicId . 'a', 'version' => self::TEST_VERSION, + 'signature' => self::$apiResponseSignature], + ['publicId' => self::$publicId, 'version' => self::TEST_VERSION + 1, + 'signature' => self::$apiResponseSignature], + ['publicId' => self::$publicId, 'version' => self::TEST_VERSION, + 'signature' => self::$apiResponseSignature . 'a'] + ]; + + foreach ($signatureTestValues as $value) { + $result = SignatureVerifier::verifyApiResponseSignature( + $value['publicId'], + $value['version'], + $value['signature'] + ); + + self::assertFalse($result); + } + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage API Secret is invalid + */ + public function testApiResponseMissingApiSecret() + { + \Cloudinary::config(['api_secret' => null]); + + SignatureVerifier::verifyApiResponseSignature( + self::$publicId, + self::TEST_VERSION, + self::$apiResponseSignature + ); + } +} + +namespace Cloudinary; + +/** + * Mock for time() function + * + * @return int With test timestamp associated with the signature in the notifications test + */ +function time() +{ + return Test\SignatureVerifierTest::$mockedNow ?: \time(); +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TagTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TagTest.php new file mode 100644 index 0000000..bcd5cc9 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TagTest.php @@ -0,0 +1,1217 @@ + 'custom_value1', 'custom_attr2' => 'custom_value2'); + private static $common_image_options = array( + 'effect' => 'sepia', + 'cloud_name' => 'test123', + 'client_hints' => false, + ); + private static $fill_transformation; + private static $fill_trans_str; + private static $common_srcset; + private static $breakpoints_arr; + private static $sizes_attr; + + public static function setUpBeforeClass() + { + self::$breakpoints_arr = array(self::$min_width, 200, 300, self::$max_width); + self::$max_images = count(self::$breakpoints_arr); + self::$common_srcset = array('breakpoints' => self::$breakpoints_arr); + + self::$fill_transformation = ['width' => self::$max_width, 'height' => self::$max_width, 'crop' => 'fill']; + self::$fill_trans_str = "c_fill,h_" . self::$max_width . ",w_" . self::$max_width; + + self::$sizes_attr = implode( + ', ', + array_map( + function ($w) { + return "(max-width: ${w}px) ${w}px"; + }, + self::$breakpoints_arr + ) + ); + + Curl::$instance = new Curl(); + } + + public function setUp() + { + Cloudinary::reset_config(); + Cloudinary::config( + array( + "cloud_name" => "test123", + "api_key" => "a", + "api_secret" => "b", + "secure_distribution" => null, + "private_cdn" => false, + "cname" => null + ) + ); + } + + public function test_cl_image_tag() + { + $tag = cl_image_tag("test", array("width" => 10, "height" => 10, "crop" => "fill", "format" => "png")); + $this->assertEquals( + "", + $tag + ); + } + + /** + * Should create a meta tag with client hints + */ + public function test_cl_client_hints_meta_tag() + { + $doc = new DOMDocument(); + $doc->loadHTML(cl_client_hints_meta_tag()); + $tags = $doc->getElementsByTagName('meta'); + $this->assertEquals($tags->length, 1); + $this->assertEquals($tags->item(0)->getAttribute('content'), 'DPR, Viewport-Width, Width'); + $this->assertEquals($tags->item(0)->getAttribute('http-equiv'), 'Accept-CH'); + } + + /** + * Check that cl_image_tag encodes special characters. + */ + public function test_cl_image_tag_special_characters_encoding() + { + $tag = cl_image_tag( + "test's special < \"characters\" >", + array("width" => 10, "height" => 10, "crop" => "fill", "format" => "png", "alt" => "< test's > special \"") + ); + $expected = "< test's > special ""; + + $this->assertEquals($expected, $tag); + } + + public function test_responsive_width() + { + // should add responsive width transformation + $tag = cl_image_tag("hello", array("responsive_width" => true, "format" => "png")); + $this->assertEquals( + "", + $tag + ); + + $options = array("width" => 100, "height" => 100, "crop" => "crop", "responsive_width" => true); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals($options, array("responsive" => true)); + $this->assertEquals($result, TagTest::DEFAULT_UPLOAD_PATH . "c_crop,h_100,w_100/c_limit,w_auto/test"); + Cloudinary::config( + array( + "responsive_width_transformation" => array( + "width" => "auto:breakpoints", + "crop" => "pad", + ), + ) + ); + $options = array("width" => 100, "height" => 100, "crop" => "crop", "responsive_width" => true); + $result = Cloudinary::cloudinary_url("test", $options); + $this->assertEquals($options, array("responsive" => true)); + $this->assertEquals( + $result, + TagTest::DEFAULT_UPLOAD_PATH . "c_crop,h_100,w_100/c_pad,w_auto:breakpoints/test" + ); + } + + public function test_width_auto() + { + // should support width=auto + $tag = cl_image_tag("hello", array("width" => "auto", "crop" => "limit", "format" => "png")); + $this->assertEquals( + "", + $tag + ); + $tag = cl_image_tag("hello", array("width" => "auto:breakpoints", "crop" => "limit", "format" => "png")); + $this->assertEquals( + "", + $tag + ); + $this->cloudinary_url_assertion( + "test", + array("width" => "auto:20", "crop" => 'fill'), + TagTest::DEFAULT_UPLOAD_PATH . "c_fill,w_auto:20/test", + array('responsive' => true) + ); + $this->cloudinary_url_assertion( + "test", + array("width" => "auto:20:350", "crop" => 'fill'), + TagTest::DEFAULT_UPLOAD_PATH . "c_fill,w_auto:20:350/test", + array('responsive' => true) + ); + $this->cloudinary_url_assertion( + "test", + array("width" => "auto:breakpoints", "crop" => 'fill'), + TagTest::DEFAULT_UPLOAD_PATH . "c_fill,w_auto:breakpoints/test", + array('responsive' => true) + ); + $this->cloudinary_url_assertion( + "test", + array("width" => "auto:breakpoints_100_1900_20_15", "crop" => 'fill'), + TagTest::DEFAULT_UPLOAD_PATH . "c_fill,w_auto:breakpoints_100_1900_20_15/test", + array('responsive' => true) + ); + $this->cloudinary_url_assertion( + "test", + array("width" => "auto:breakpoints:json", "crop" => 'fill'), + TagTest::DEFAULT_UPLOAD_PATH . "c_fill,w_auto:breakpoints:json/test", + array('responsive' => true) + ); + } + + public function test_initial_width_and_height() + { + $options = array("crop" => "crop", "width" => "iw", "height" => "ih"); + $this->cloudinary_url_assertion( + "test", + $options, + TagTest::DEFAULT_UPLOAD_PATH . "c_crop,h_ih,w_iw/test" + ); + } + + /** + * @param $options + * @param string $message + */ + public function shared_client_hints($options, $message = '') + { + $tag = cl_image_tag('sample.jpg', $options); + $this->assertEquals( + "", + $tag, + $message + ); + $tag = cl_image_tag('sample.jpg', array_merge(array("responsive" => true), $options)); + $this->assertEquals( + "", + $tag, + $message + ); + } + + public function test_client_hints_as_option() + { + $this->shared_client_hints( + array( + "dpr" => "auto", + "cloud_name" => "test", + "width" => "auto", + "crop" => "scale", + "client_hints" => true, + ), + "support client_hints as an option" + ); + } + + public function test_client_hints_as_global() + { + Cloudinary::config(array("client_hints" => true)); + $this->shared_client_hints( + array( + "dpr" => "auto", + "cloud_name" => "test", + "width" => "auto", + "crop" => "scale", + ), + "support client hints as global configuration" + ); + } + + public function test_client_hints_false() + { + Cloudinary::config(array("responsive" => true)); + $tag = cl_image_tag( + 'sample.jpg', + array( + "width" => "auto", + "crop" => "scale", + "cloud_name" => "test123", + "client_hints" => false, + ) + ); + $this->assertEquals( + "", + $tag, + "should use normal responsive behaviour" + ); + } + + /** + * @internal + * Helper method for generating expected `img` and `source` tags + * + * @param string $tag_name Expected tag name(img or source) + * @param string $public_id Public ID of the image + * @param string $common_trans_str Default transformation string to be used in all resources + * @param string $custom_trans_str Optional custom transformation string to be be used inside srcset resources + * If not provided, $common_trans_str is used + * @param array $srcset_breakpoints Optional list of breakpoints for srcset. If not provided srcset is omitted + * @param array $attributes Associative array of custom attributes to be added to the tag + * + * @param bool $is_void Indicates whether tag is an HTML5 void tag (does not need to be self-closed) + * + * @return string Resulting tag + */ + private function common_image_tag_helper( + $tag_name, + $public_id, + $common_trans_str, + $custom_trans_str = '', + $srcset_breakpoints = array(), + $attributes = array(), + $is_void = false + ) { + if (empty($custom_trans_str)) { + $custom_trans_str = $common_trans_str; + } + + if (!empty($srcset_breakpoints)) { + $single_srcset_image = function ($w) use ($custom_trans_str, $public_id) { + return self::DEFAULT_UPLOAD_PATH . "{$custom_trans_str}/c_scale,w_{$w}/{$public_id} {$w}w"; + }; + $attributes['srcset'] = implode(', ', array_map($single_srcset_image, $srcset_breakpoints)); + } + + $tag = "<$tag_name"; + + $attributes_str = implode( + ' ', + array_map( + function ($k, $v) { + return "$k='$v'"; + }, + array_keys($attributes), + array_values($attributes) + ) + ); + + if (!empty($attributes_str)) { + $tag .= " {$attributes_str}"; + } + + $tag .= $is_void ? ">" : "/>"; // HTML5 void elements do not need to be self closed + + if (getenv('DEBUG')) { + echo preg_replace('/([,\']) /', "$1\n ", $tag) . "\n\n"; + } + + return $tag; + } + + /** + * @internal + * Helper method for test_cl_image_tag_srcset for generating expected image tag + * + * @param string $public_id Public ID of the image + * @param string $common_trans_str Default transformation string to be used in all resources + * @param string $custom_trans_str Optional custom transformation string to be be used inside srcset resources + * If not provided, $common_trans_str is used + * @param array $srcset_breakpoints Optional list of breakpoints for srcset. If not provided srcset is omitted + * @param array $attributes Associative array of custom attributes to be added to the tag + * + * @return string Resulting image tag + */ + private function get_expected_cl_image_tag( + $public_id, + $common_trans_str, + $custom_trans_str = '', + $srcset_breakpoints = array(), + $attributes = array() + ) { + + Cloudinary::array_unshift_assoc( + $attributes, + 'src', + self::DEFAULT_UPLOAD_PATH . "{$common_trans_str}/{$public_id}" + ); + + return $this->common_image_tag_helper( + "img", + $public_id, + $common_trans_str, + $custom_trans_str, + $srcset_breakpoints, + $attributes + ); + } + + /** + * @internal + * Helper method for for generating expected `source` tag + * + * @param string $public_id Public ID of the image + * @param string $common_trans_str Default transformation string to be used in all resources + * @param string $custom_trans_str Optional custom transformation string to be be used inside srcset resources + * If not provided, $common_trans_str is used + * @param array $srcset_breakpoints Optional list of breakpoints for srcset. If not provided srcset is omitted + * @param array $attributes Associative array of custom attributes to be added to the tag + * + * @return string Resulting `source` tag + */ + private function get_expected_cl_source_tag( + $public_id, + $common_trans_str, + $custom_trans_str = '', + $srcset_breakpoints = array(), + $attributes = array() + ) { + + $attributes['srcset'] = self::DEFAULT_UPLOAD_PATH . "{$common_trans_str}/{$public_id }"; + + ksort($attributes); // Used here to produce output similar to Cloudinary::html_attrs + + return $this->common_image_tag_helper( + "source", + $public_id, + $common_trans_str, + $custom_trans_str, + $srcset_breakpoints, + $attributes, + true + ); + } + + /** + * Should create srcset attribute with provided breakpoints + */ + public function test_cl_image_tag_srcset() + { + $expected_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + self::$breakpoints_arr + ); + + $tag_with_breakpoints = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array('srcset' => self::$common_srcset) + ) + ); + + $this->assertEquals( + $expected_tag, + $tag_with_breakpoints, + 'Should create img srcset attribute with provided breakpoints' + ); + } + + public function test_support_srcset_attribute_defined_by_min_width_max_width_and_max_images() + { + $tag_min_max_count = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array( + 'srcset' => array( + 'min_width' => self::$min_width, + 'max_width' => $x = self::$max_width, + 'max_images' => count(self::$breakpoints_arr) + ) + ) + ) + ); + + $expected_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + self::$breakpoints_arr + ); + + $this->assertEquals( + $expected_tag, + $tag_min_max_count, + 'Should support srcset attribute defined by min_width, max_width, and max_images' + ); + + // Should support 1 image in srcset + $tag_one_image_by_params = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array( + 'srcset' => array( + 'min_width' => self::$breakpoints_arr[0], + 'max_width' => self::$max_width, + 'max_images' => 1 + ) + ) + ) + ); + + $expected_1_image_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(self::$max_width) + ); + + $this->assertEquals($expected_1_image_tag, $tag_one_image_by_params); + + $tag_one_image_by_breakpoints = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array('srcset' => array('breakpoints' => array(self::$max_width))) + ) + ); + $this->assertEquals($expected_1_image_tag, $tag_one_image_by_breakpoints); + + // Should support custom transformation for srcset items + $custom_transformation = array("transformation" => array("crop" => "crop", "width" => 10, "height" => 20)); + + $tag_custom_transformation = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array( + 'srcset' => array_merge( + self::$common_srcset, + $custom_transformation + ) + ) + ) + ); + + $custom_transformation_str = 'c_crop,h_20,w_10'; + $custom_expected_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + $custom_transformation_str, + self::$breakpoints_arr + ); + + $this->assertEquals($custom_expected_tag, $tag_custom_transformation); + + // Should populate sizes attribute + $tag_with_sizes = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array( + 'srcset' => array_merge( + self::$common_srcset, + array('sizes' => true) + ) + ) + ) + ); + + $expected_tag_with_sizes = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + self::$breakpoints_arr, + array('sizes' => self::$sizes_attr) + ); + $this->assertEquals($expected_tag_with_sizes, $tag_with_sizes); + + // Should support srcset string value + $raw_srcset_value = "some srcset data as is"; + $tag_with_raw_srcset = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array('attributes' => array('srcset' => $raw_srcset_value)) + ) + ); + + $expected_raw_srcset = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(), + array('srcset' => $raw_srcset_value) + ); + + $this->assertEquals($expected_raw_srcset, $tag_with_raw_srcset); + + // Should remove width and height attributes in case srcset is specified, but passed to transformation + $tag_with_sizes = cl_image_tag( + self::$public_id, + array_merge( + array_merge( + self::$common_image_options, + array('width' => 500, 'height' => 500) + ), + array('srcset' => self::$common_srcset) + ) + ); + + $expected_tag_without_width_and_height = self::get_expected_cl_image_tag( + self::$public_id, + 'e_sepia,h_500,w_500', + '', + self::$breakpoints_arr + ); + $this->assertEquals($expected_tag_without_width_and_height, $tag_with_sizes); + } + + /** + * Should omit srcset attribute on invalid values + * + * @throws \Exception + */ + public function test_srcset_invalid_values() + { + $invalid_breakpoints = array( + array('sizes' => true), // srcset data not provided + array('max_width' => 300, 'max_images' => 3), // no min_width + array('min_width' => '1', 'max_width' => 300, 'max_images' => 3), // invalid min_width + array('min_width' => 100, 'max_images' => 3), // no max_width + array('min_width' => '1', 'max_width' => '3', 'max_images' => 3), // invalid max_width + array('min_width' => 200, 'max_width' => 100, 'max_images' => 3), // min_width > max_width + array('min_width' => 100, 'max_width' => 300), // no max_images + array('min_width' => 100, 'max_width' => 300, 'max_images' => 0), // invalid max_images + array('min_width' => 100, 'max_width' => 300, 'max_images' => -17), // invalid max_images + array('min_width' => 100, 'max_width' => 300, 'max_images' => '3'), // invalid max_images + array('min_width' => 100, 'max_width' => 300, 'max_images' => null), // invalid max_images + ); + + + $err_log_original_destination = ini_get('error_log'); + // Suppress error messages in error log + ini_set('error_log', '/dev/null'); + + try { + foreach ($invalid_breakpoints as $value) { + $tag = cl_image_tag( + self::$public_id, + array_merge(self::$common_image_options, array('srcset' => $value)) + ); + + self::assertNotContains("srcset", $tag); + } + } catch (\Exception $e) { + ini_set('error_log', $err_log_original_destination); + throw $e; + } + + ini_set('error_log', $err_log_original_destination); + } + + public function test_cl_image_tag_responsive_breakpoints_cache() + { + $cache = ResponsiveBreakpointsCache::instance(); + $cache->setCacheAdapter(new KeyValueCacheAdapter(new DummyCacheStorage())); + + $cache->set(self::$public_id, self::$common_image_options, self::$breakpoints_arr); + + $expected_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + self::$breakpoints_arr + ); + + $image_tag = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + ["srcset"=> ["use_cache" => true]] + ) + ); + + $this->assertEquals($expected_tag, $image_tag); + } + + public function test_create_a_tag_with_custom_attributes_legacy_approach() + { + $tag_with_custom_legacy_attribute = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + self::$custom_attributes + ) + ); + + $expected_custom_attributes_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(), + self::$custom_attributes + ); + + $this->assertEquals($expected_custom_attributes_tag, $tag_with_custom_legacy_attribute); + } + + public function test_create_a_tag_with_legacy_srcset_attribute() + { + $srcset_attribute = ['srcset' =>'http://custom.srcset.attr/sample.jpg 100w']; + $tag_with_custom_srcset_attribute = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + $srcset_attribute + ) + ); + + $expected_custom_attributes_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(), + $srcset_attribute + ); + + $this->assertEquals($expected_custom_attributes_tag, $tag_with_custom_srcset_attribute); + } + + + public function test_consume_custom_attributes_from_attributes_key() + { + $tag_with_custom_attribute = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array('attributes' => self::$custom_attributes) + ) + ); + $expected_custom_attributes_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(), + self::$custom_attributes + ); + $this->assertEquals($expected_custom_attributes_tag, $tag_with_custom_attribute); + } + + public function test_override_existing_attributes_with_specified_by_custom_ones() + { + $updated_attributes = array('alt' => 'updated alt'); + $tag_with_custom_overriden_attribute = cl_image_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array('alt' => 'original alt', 'attributes' => $updated_attributes) + ) + ); + + $expected_overriden_attributes_tag = self::get_expected_cl_image_tag( + self::$public_id, + self::$common_transformation_str, + '', + array(), + $updated_attributes + ); + $this->assertEquals($expected_overriden_attributes_tag, $tag_with_custom_overriden_attribute); + } + + public function test_dpr_auto() + { + // should support width=auto + $tag = cl_image_tag("hello", array("dpr" => "auto", "format" => "png")); + $this->assertEquals( + "", + $tag + ); + } + + public function test_cl_sprite_tag() + { + $url = cl_sprite_tag("mytag", array("crop" => "fill", "width" => 10, "height" => 10)); + $this->assertEquals( + "", + $url + ); + } + + public function test_cl_video_thumbnail_path() + { + $this->assertEquals(cl_video_thumbnail_path('movie_id'), TagTest::VIDEO_UPLOAD_PATH . "movie_id.jpg"); + $this->assertEquals( + cl_video_thumbnail_path('movie_id', array('width' => 100)), + TagTest::VIDEO_UPLOAD_PATH . "w_100/movie_id.jpg" + ); + } + + public function test_cl_video_thumbnail_tag() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie_id.jpg"; + $this->assertEquals( + cl_video_thumbnail_tag('movie_id'), + "" + ); + + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "w_100/movie_id.jpg"; + $this->assertEquals( + cl_video_thumbnail_tag('movie_id', array('width' => 100)), + "" + ); + } + + public function test_cl_video_tag() + { + //default + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie"; + $this->assertEquals( + cl_video_tag('movie'), + "" + ); + } + + public function test_cl_video_tag_with_attributes() + { + //test video attributes + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie"; + $this->assertEquals( + cl_video_tag( + 'movie', + array('autoplay' => true, 'controls', 'loop', 'muted' => "true", 'preload', 'style' => 'border: 1px') + ), + "" + ); + } + + public function test_cl_video_tag_with_transformation() + { + //test video attributes + $options = array( + 'source_types' => "mp4", + 'html_height' => "100", + 'html_width' => "200", + 'video_codec' => array('codec' => 'h264'), + 'audio_codec' => 'acc', + 'start_offset' => 3, + ); + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "ac_acc,so_3,vc_h264/movie"; + $this->assertEquals( + cl_video_tag('movie', $options), + "" + ); + + unset($options['source_types']); + $this->assertEquals( + cl_video_tag('movie', $options), + "" + ); + + unset($options['html_height']); + unset($options['html_width']); + $options['width'] = 250; + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "ac_acc,so_3,vc_h264,w_250/movie"; + $this->assertEquals( + cl_video_tag('movie', $options), + "" + ); + + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "ac_acc,c_fit,so_3,vc_h264,w_250/movie"; + $options['crop'] = 'fit'; + $this->assertEquals( + cl_video_tag('movie', $options), + "" + ); + } + + public function test_cl_video_tag_with_fallback() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie"; + $fallback = "Cannot display video"; + $this->assertEquals( + cl_video_tag('movie', array('fallback_content' => $fallback)), + "" + ); + $this->assertEquals( + cl_video_tag('movie', array('fallback_content' => $fallback, 'source_types' => "mp4")), + "" + ); + } + + public function test_cl_video_tag_with_source_types() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie"; + $this->assertEquals( + cl_video_tag('movie', array('source_types' => array('ogv', 'mp4'))), + "" + ); + } + + public function test_cl_video_tag_with_source_transformation() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "q_50/w_100/movie"; + $expected_ogv_url = TagTest::VIDEO_UPLOAD_PATH . "q_50/q_70,w_100/movie"; + $expected_mp4_url = TagTest::VIDEO_UPLOAD_PATH . "q_50/q_30,w_100/movie"; + $this->assertEquals( + cl_video_tag( + 'movie', + array( + 'width' => 100, + 'transformation' => array(array('quality' => 50)), + 'source_transformation' => array( + 'ogv' => array('quality' => 70), + 'mp4' => array('quality' => 30), + ), + ) + ), + "" + ); + + $this->assertEquals( + cl_video_tag( + 'movie', + array( + 'width' => 100, + 'transformation' => array(array('quality' => 50)), + 'source_transformation' => array( + 'ogv' => array('quality' => 70), + 'mp4' => array('quality' => 30), + ), + 'source_types' => array('webm', 'mp4'), + ) + ), + "" + ); + } + + public function test_cl_video_tag_with_poster() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie"; + + $expected_poster_url = 'http://image/somewhere.jpg'; + $this->assertEquals( + cl_video_tag('movie', array('poster' => $expected_poster_url, 'source_types' => "mp4")), + "" + ); + + $expected_poster_url = TagTest::VIDEO_UPLOAD_PATH . "g_north/movie.jpg"; + $this->assertEquals( + cl_video_tag( + 'movie', + array('poster' => array('gravity' => 'north'), 'source_types' => "mp4") + ), + "" + ); + + $expected_poster_url = TagTest::DEFAULT_UPLOAD_PATH . "g_north/my_poster.jpg"; + $this->assertEquals( + cl_video_tag( + 'movie', + array( + 'poster' => array('gravity' => 'north', 'public_id' => 'my_poster', 'format' => 'jpg'), + 'source_types' => "mp4", + ) + ), + "" + ); + + $this->assertEquals( + cl_video_tag('movie', array('poster' => null, 'source_types' => "mp4")), + "" + ); + + $this->assertEquals( + cl_video_tag('movie', array('poster' => false, 'source_types' => "mp4")), + "" + ); + } + + /** + * Check that cl_video_tag encodes special characters. + */ + public function test_cl_video_tag_special_characters_encoding() + { + $expected_url = TagTest::VIDEO_UPLOAD_PATH . "movie%27s%20id%21%40%23%24%25%5E%26%2A%28"; + + $this->assertEquals( + "", + cl_video_tag("movie's id!@#$%^&*(", array('source_types' => "mp4")) + ); + } + + public function test_cl_video_tag_default_sources() + { + $expected_url = self::VIDEO_UPLOAD_PATH . "%smovie.%s"; + + $this->assertEquals( + "", + cl_video_tag('movie', array('sources' => default_video_sources())) + ); + } + + public function test_cl_video_tag_custom_sources() + { + $custom_sources = [ + [ + "type" => "mp4", + "codecs" => "vp8, vorbis", + "transformations" => ["video_codec" => "auto"] + ], + [ + "type" => "webm", + "codecs" => "avc1.4D401E, mp4a.40.2", + "transformations" => ["video_codec" => "auto"] + ] + ]; + $expected_url = self::VIDEO_UPLOAD_PATH . "%smovie.%s"; + + $this->assertEquals( + "", + cl_video_tag('movie', array('sources' => $custom_sources)) + ); + } + + public function test_cl_video_tag_sources_codecs_array() + { + $custom_sources = [ + [ + "type" => "mp4", + "codecs" => ["vp8", "vorbis"], + "transformations" => ["video_codec" => "auto"] + ], + [ + "type" => "webm", + "codecs" => ["avc1.4D401E", "mp4a.40.2"], + "transformations" => ["video_codec" => "auto"] + ] + ]; + $expected_url = self::VIDEO_UPLOAD_PATH . "%smovie.%s"; + + $this->assertEquals( + "", + cl_video_tag('movie', array('sources' => $custom_sources)) + ); + } + + public function test_cl_video_tag_sources_with_transformation() + { + $options = array( + 'source_types' => "mp4", + 'html_height' => "100", + 'html_width' => "200", + 'video_codec' => array('codec' => 'h264'), + 'audio_codec' => 'acc', + 'start_offset' => 3, + 'sources' => default_video_sources() + ); + $expected_url = self::VIDEO_UPLOAD_PATH . "ac_acc,so_3,%smovie.%s"; + + $this->assertEquals( + "", + cl_video_tag('movie', $options) + ); + } + + public function test_upload_tag() + { + $pattern = "//"; + $this->assertRegExp($pattern, cl_upload_tag('image')); + $this->assertRegExp($pattern, cl_image_upload_tag('image')); + + $pattern = "//"; + $this->assertRegExp( + $pattern, + cl_upload_tag('image', array('chunk_size' => 5000000)) + ); + + $pattern = "//"; + $this->assertRegExp( + $pattern, + cl_upload_tag('image', array("html" => array('class' => 'classy'))) + ); + } + + public function test_cl_source_tag() + { + $expected_tag = self::get_expected_cl_source_tag( + self::$public_id, + self::$common_transformation_str, + '', + self::$breakpoints_arr, + array('sizes' => self::$sizes_attr, "media" => generate_media_attr(["max_width" =>self::$max_width])) + ); + + $source_tag_with_srcset = cl_source_tag( + self::$public_id, + array_merge( + self::$common_image_options, + array( + 'srcset' => array_merge( + self::$common_srcset, + array('sizes' => true) + ) + ), + array( + 'media' => array("max_width" =>self::$max_width) + ) + ) + ); + + $this->assertEquals( + $expected_tag, + $source_tag_with_srcset, + 'Should create source tag with srcset and sizes attributes with provided breakpoints' + ); + } + + public function test_cl_picture_tag() + { + $tag = cl_picture_tag( + self::$public_id, + self::$fill_transformation, + [ + [ + "max_width" =>self::$min_width, + "transformation" => ["effect" => "sepia", "angle" => 17, "width" => self::$min_width] + ], + [ + "min_width" => self::$min_width, + "max_width" => self::$max_width, + "transformation" => ["effect" => "colorize", "angle" => 18, "width" => self::$max_width] + + ], + [ + "min_width" => self::$max_width, + "transformation" => ["effect" => "blur", "angle" => 19, "width" => self::$max_width] + ] + ] + ); + + + $expected_source1 = self::get_expected_cl_source_tag( + self::$public_id, + self::$fill_trans_str . "/" . "a_17,e_sepia,w_" . self::$min_width, + '', + [], + ["media" => generate_media_attr(["max_width" =>self::$min_width])] + ); + + $expected_source2 = self::get_expected_cl_source_tag( + self::$public_id, + self::$fill_trans_str . "/" . "a_18,e_colorize,w_" . self::$max_width, + '', + [], + ["media" => generate_media_attr(["min_width" => self::$min_width, "max_width" =>self::$max_width])] + + ); + + $expected_source3 = self::get_expected_cl_source_tag( + self::$public_id, + self::$fill_trans_str . "/" . "a_19,e_blur,w_" . self::$max_width, + '', + [], + ["media" => generate_media_attr(["min_width" => self::$max_width])] + ); + + $expected_img = self::get_expected_cl_image_tag( + self::$public_id, + self::$fill_trans_str, + '', + [], + ['height' => self::$max_width, 'width' => self::$max_width] + ); + + $exp = "" . $expected_source1 . $expected_source2 . $expected_source3 . $expected_img . ""; + + $this->assertEquals($exp, $tag); + } + + private function cloudinary_url_assertion($source, $options, $expected, $expected_options = array()) + { + $url = Cloudinary::cloudinary_url($source, $options); + $this->assertEquals($expected_options, $options); + $this->assertEquals($expected, $url); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TestHelper.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TestHelper.php new file mode 100644 index 0000000..371ba01 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/TestHelper.php @@ -0,0 +1,270 @@ +parameters = array(); + $this->apiResponse = <<apiResponse = str_replace("\n", "\r\n", $this->apiResponse); + + $this->uploadResponse = '{"public_id":"oej8n7ezhwmk1fp1xqfd"}'; + } + + public static function mockApi($test) + { + self::mockRequest($test, Curl::$instance->apiResponse); + } + + public static function mockUpload($test) + { + self::mockRequest($test, Curl::$instance->uploadResponse); + } + + /** + * @param \PHPUnit\Framework\TestCase $test Test case to mock + * @param $mocked_response + */ + public static function mockRequest($test, $mocked_response) + { + Curl::$instance = $test + ->getMockBuilder("\\Cloudinary\\Curl") + ->setMethods(array("exec", "getinfo")) + ->getMock(); + + Curl::$instance + ->method("exec") + ->will($test->returnValue($mocked_response)); + + Curl::$instance + ->method("getinfo") + ->will($test->returnValue(200)); + } + + public function exec($ch) + { + $this->result = \curl_exec($ch); + return $this->result; + } + + public function setopt($ch, $option, $value) + { + $this->parameters[$option] = $value; + return $this->globalSetopt($ch, $option, $value); + } + + public function globalSetopt($ch, $option, $value) + { + return \curl_setopt($ch, $option, $value); + } + + /** + * When stubbing exec() this function must be stubbed too to return code + * + * @inheritdoc + */ + public function getinfo($ch, $opt) + { + return \curl_getinfo($ch, $opt); + } + + public function init($url = null) + { + $this->url = $url; + return \curl_init($url); + } + + /** + * Returns the option that was set in the curl object + * @param string $option the name of the option + * @return mixed the value of the option + */ + public function getopt($option) + { + return $this->parameters[$option]; + } + + public function http_method() + { + if (array_key_exists(CURLOPT_CUSTOMREQUEST, $this->parameters)) { + return Curl::$instance->getopt(CURLOPT_CUSTOMREQUEST); + } else { + $method_array = array_keys( + array_intersect_key( + $this->parameters, + array("CURLOPT_POST" => 0, "CURLOPT_PUT" => 0, "CURLOPT_HTTPGET" => 0) + ) + ); + if (count($method_array) > 0) { + return preg_replace("/CURLOPT_(HTTP)?/", "", $method_array[0]); + } else { + return "POST"; + } + } + } + + public function url_path() + { + return parse_url($this->url, PHP_URL_PATH); + } + + /** + * Returns the POST fields that were meant to be sent to the server + * @return array an array of field name => value + */ + public function fields() + { + if ($this->http_method() == "GET") { + parse_str(parse_url($this->url, PHP_URL_QUERY), $params); + return $params; + } else { + return $this->parameters[CURLOPT_POSTFIELDS]; + } + } + } + + Curl::$instance = new Curl(); + + // Override global curl functions + + function curl_init($url = null) + { + return Curl::$instance->init($url); + } + + function curl_exec($ch) + { + $result = Curl::$instance->exec($ch); + return $result; + } + + function curl_setopt($ch, $option, $value) + { + return Curl::$instance->setopt($ch, $option, $value); + } + + function curl_getinfo($ch, $opt) + { + return Curl::$instance->getinfo($ch, $opt); + } + + + /** + * @param $test + * @param $name + * @param $expectedValue + * @param string $message + */ + function assertParam($test, $name, $expectedValue = null, $message = '') + { + $fields = Curl::$instance->fields(); + if (strlen($message) == 0) { + $message = "should support the '$name' parameter"; + } + $test->assertArrayHasKey($name, $fields, $message); + if ($expectedValue != null) { + $test->assertEquals($expectedValue, $fields[$name]); + } + } + + function assertJson($test, $actualValue, $expectedValue = null, $message = '') + { + if (strlen($message) == 0) { + $message = "should coorectly encode JSON parameters"; + } + $test->assertJsonStringEqualsJsonString($actualValue, $expectedValue, $message); + } + + function assertNoParam($test, $name, $message = '') + { + $fields = Curl::$instance->fields(); + $test->assertArrayNotHasKey($name, $fields, $message); + } + + function assertPost($test, $message = "http method should be POST") + { + $test->assertEquals("POST", Curl::$instance->http_method(), $message); + } + + function assertPut($test, $message = "http method should be PUT") + { + $test->assertEquals("PUT", Curl::$instance->http_method(), $message); + } + + function assertGet($test, $message = "http method should be GET") + { + $test->assertEquals("GET", Curl::$instance->http_method(), $message); + } + + function assertDelete($test, $message = "http method should be DELETE") + { + $test->assertEquals("DELETE", Curl::$instance->http_method(), $message); + } + + function assertUrl($test, $path, $message = '') + { + $cloud_name = \Cloudinary::config_get("cloud_name"); + $test->assertEquals("/v1_1/" . $cloud_name . $path, Curl::$instance->url_path(), $message); + } + + function assertHasHeader($test, $header, $message = '') + { + $headers = Curl::$instance->getopt(CURLOPT_HTTPHEADER); + $test->assertTrue(is_array($headers), $message); + $names = array(); + foreach ($headers as $h) { + $chunks = explode(":", $h); + // header names are case-insensitive according to rfc7230 + $names[] = strtolower(trim($chunks[0])); + } + $test->assertContains(strtolower($header), $names, $message); + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/UploaderTest.php b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/UploaderTest.php new file mode 100644 index 0000000..704c526 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/UploaderTest.php @@ -0,0 +1,860 @@ + 45, "crop" => "scale"]; + protected static $rbp_format = "png"; + protected static $rbp_values = [206, 50]; + protected static $rbp_params; + + public static function setUpBeforeClass() + { + Curl::$instance = new Curl(); + + self::$rbp_params = [ + "use_cache" => true, + "responsive_breakpoints" => [ + [ + "create_derived" => false, + "transformation" => [ + "angle" => 90 + ], + "format" => 'gif' + ], + [ + "create_derived" => false, + "transformation" => self::$rbp_trans, + "format" => self::$rbp_format + ], + [ + "create_derived" => false + ] + ], + "type" => "upload", + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + ]; + } + + public function setUp() + { + \Cloudinary::reset_config(); + if (!Cloudinary::config_get("api_secret")) { + $this->markTestSkipped('Please setup environment for Upload test to run'); + } + $this->url_prefix = Cloudinary::config_get("upload_prefix", "https://api.cloudinary.com"); + } + + public function tearDown() + { + Curl::$instance = new Curl(); + } + + public static function tearDownAfterClass() + { + if (!Cloudinary::config_get("api_secret")) { + self::fail("You need to configure the cloudinary api for the tests to work."); + } + + $api = new Cloudinary\Api(); + + self::delete_resources($api); + } + + /** + * Delete all test related resources + * + * @param \Cloudinary\Api $api an initialized api object + */ + protected static function delete_resources($api) + { + try { + $api->delete_resources_by_tag(UNIQUE_TEST_TAG); + $api->delete_resources_by_tag(UNIQUE_TEST_SPRITE_TAG); + } catch (Exception $e) { + } + } + + public function test_upload() + { + $result = Uploader::upload(TEST_IMG, ["tags" => array(TEST_TAG, UNIQUE_TEST_TAG)]); + $this->assertEquals($result["width"], 241); + $this->assertEquals($result["height"], 51); + $expected_signature = Cloudinary::api_sign_request( + array( + "public_id" => $result["public_id"], + "version" => $result["version"], + ), + Cloudinary::config_get("api_secret") + ); + $this->assertEquals($result["signature"], $expected_signature); + Curl::mockUpload($this); + + Uploader::upload(TEST_IMG, array("ocr" => "adv_ocr", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("ocr" => "adv_ocr"), $fields); + + // Test upload with metadata + Uploader::upload( + TEST_IMG, + array("metadata" => array("metadata_color" => "red", "metadata_shape" => "dodecahedron")) + ); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("metadata" => "metadata_color=red|metadata_shape=dodecahedron"), $fields); + } + + public function test_upload_responsive_breakpoints_cache() + { + $cache = ResponsiveBreakpointsCache::instance(); + $cache->setCacheAdapter(new KeyValueCacheAdapter(new DummyCacheStorage())); + + $result = Uploader::upload(\Cloudinary\TEST_IMG, self::$rbp_params); + + $res = $cache->get( + $result["public_id"], + ["transformation" => self::$rbp_trans, "format" => self::$rbp_format] + ); + + $this::assertEquals(self::$rbp_values, $res); + } + + /* + * Should use filename passed in options as original_filename and not the actual filesystem file name + */ + public function test_upload_custom_filename() + { + $custom_filename = UNIQUE_TEST_ID . '_' . basename(TEST_IMG); + $result = Uploader::upload( + TEST_IMG, + [ + 'filename' => $custom_filename, + 'tags' => array(TEST_TAG, UNIQUE_TEST_TAG) + ] + ); + + // Note that original_filename strips extension + $this->assertEquals(pathinfo($custom_filename, PATHINFO_FILENAME), $result["original_filename"]); + } + + public function test_rename() + { + Curl::mockUpload($this); + Uploader::rename("foobar", "foobar2", array("overwrite" => true)); + assertUrl($this, "/image/rename"); + assertParam($this, "overwrite", 1); + assertParam($this, "from_public_id", "foobar"); + assertParam($this, "to_public_id", "foobar2"); + } + + public function test_rename_to_type() + { + Curl::mockUpload($this); + Uploader::rename("foobar", "foobar", array("to_type" => "private")); + assertUrl($this, "/image/rename"); + assertParam($this, "to_type", "private"); + assertParam($this, "from_public_id", "foobar"); + assertParam($this, "to_public_id", "foobar"); + } + + public function test_explicit() + { + Curl::mockUpload($this); + + Uploader::explicit( + "cloudinary", + array("type" => "twitter_name", "eager" => array("crop" => "scale", "width" => "2.0")) + ); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("type" => "twitter_name", "eager" => "c_scale,w_2.0"), $fields); + Uploader::explicit("cloudinary", array("ocr" => "adv_ocr")); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("ocr" => "adv_ocr"), $fields); + + // Test explicit with metadata + Uploader::explicit( + "cloudinary", + array("metadata" => array("metadata_color" => "red", "metadata_shape" => "dodecahedron")) + ); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("metadata" => "metadata_color=red|metadata_shape=dodecahedron"), $fields); + } + + public function test_explicit_responsive_breakpoints_cache() + { + $cache = ResponsiveBreakpointsCache::instance(); + $cache->setCacheAdapter(new KeyValueCacheAdapter(new DummyCacheStorage())); + + $upload_result = Uploader::upload(\Cloudinary\TEST_IMG, ["tags" => array(TEST_TAG, UNIQUE_TEST_TAG),]); + + $result = Uploader::explicit($upload_result["public_id"], self::$rbp_params); + + $res = $cache->get( + $result["public_id"], + ["transformation" => self::$rbp_trans, "format" => self::$rbp_format] + ); + + $this::assertEquals(self::$rbp_values, $res); + } + + public function test_update_metadata() + { + Curl::mockUpload($this); + + Uploader::update_metadata( + array("metadata_color" => "red", "metadata_shape" => ""), + array("test_id_1", "test_id_2") + ); + $fields = Curl::$instance->fields(); + $this->assertArraySubset( + array("metadata" => "metadata_color=red|metadata_shape=", + "public_ids[0]" => "test_id_1", + "public_ids[1]" => "test_id_2", + ), + $fields + ); + } + + public function test_build_eager() + { + $eager = array( + "0" => array( + "0" => array("width" => 3204, "crop" => "scale"), + ), + "1" => array( + "angle" => array("0" => 127), + "format" => "jpg", + ), + ); + $this->assertEquals("c_scale,w_3204|a_127/jpg", Cloudinary::build_eager($eager)); + } + + public function test_eager() + { + Curl::mockUpload($this); + Uploader::upload(TEST_IMG, array("eager" => array("crop" => "scale", "width" => "2.0"), "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("eager" => "c_scale,w_2.0"), $fields); + } + + public function test_upload_async() + { + Curl::mockUpload($this); + Uploader::upload( + TEST_IMG, + array( + "transformation" => array("crop" => "scale", "width" => "2.0"), + "async" => true, + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),) + ); + $fields = Curl::$instance->fields(); + $this->assertArraySubset(array("async" => true), $fields); + } + + public function test_quality_override() + { + Curl::mockUpload($this); + $values = ['auto:advanced', 'auto:best', '80:420', 'none']; + foreach ($values as $value) { + Uploader::upload(TEST_IMG, [ + "quality_override" => $value, + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + ]); + assertParam($this, "quality_override", $value); + Uploader::explicit( + "api_test", + array("quality_override" => $value, "type" => "upload") + ); + assertParam($this, "quality_override", $value); + } + } + + public function test_headers() + { + Curl::mockUpload($this); + Uploader::upload(TEST_IMG, array("headers" => array("Link: 1"), "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + assertParam($this, "headers", "Link: 1"); + Uploader::upload(TEST_IMG, array("headers" => array("Link" => "1"), "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + assertParam($this, "headers", "Link: 1"); + } + + public function test_text() + { + $result = Uploader::text("hello world"); + $this->assertGreaterThan(1, $result["width"]); + $this->assertGreaterThan(1, $result["height"]); + } + + public function test_tags() + { + $api = new \Cloudinary\Api(); + $result = Uploader::upload(TEST_IMG, ["tags" => array(TEST_TAG, UNIQUE_TEST_TAG),]); + Curl::mockUpload($this); + Uploader::add_tag("tag1", "foobar"); + assertUrl($this, "/image/tags"); + assertPost($this); + assertParam($this, "public_ids[0]", "foobar"); + assertParam($this, "command", "add"); + assertParam($this, "tag", "tag1"); + + Uploader::remove_tag("tag1", "foobar"); + assertUrl($this, "/image/tags"); + assertPost($this); + assertParam($this, "public_ids[0]", "foobar"); + assertParam($this, "command", "remove"); + assertParam($this, "tag", "tag1"); + + Uploader::replace_tag("tag3", "foobar"); + assertUrl($this, "/image/tags"); + assertPost($this); + assertParam($this, "public_ids[0]", "foobar"); + assertParam($this, "command", "replace"); + assertParam($this, "tag", "tag3"); + } + + /** + * Should successfully remove all tags for specified public IDs + */ + public function test_remove_all_tags() + { + Curl::mockUpload($this); + $public_id = UNIQUE_TEST_ID; + Uploader::remove_all_tags($public_id); + assertPost($this); + assertUrl($this, '/image/tags'); + assertParam($this, "command", "remove_all"); + } + + + /** + * Test issue #33 - HTTP 502 when providing a large public ID list + */ + public function test_huge_public_id_list() + { + $ids = array(); + for ($i = 1; $i < 200; $i++) { + $ids[] = "foobarfoobarfoobarfoobarfoobar"; + } + Uploader::add_tag("huge_list", $ids); + assertParam($this, "public_ids[0]", $ids[0]); + } + + public function test_use_filename() + { + $result = Uploader::upload(TEST_IMG, array("use_filename" => true, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertRegExp('/logo_[a-zA-Z0-9]{6}/', $result["public_id"]); + $result = Uploader::upload(TEST_IMG, array("use_filename" => true, "unique_filename" => false, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertEquals("logo", $result["public_id"]); + } + + public function test_allowed_formats() + { + //should allow whitelisted formats if allowed_formats + $formats = array("png"); + $result = Uploader::upload(TEST_IMG, array("allowed_formats" => $formats, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertEquals($result["format"], "png"); + } + + public function test_allowed_formats_with_illegal_format() + { + //should prevent non whitelisted formats from being uploaded if allowed_formats is specified + $error_found = false; + $formats = array("jpg"); + try { + Uploader::upload(TEST_IMG, array("allowed_formats" => $formats, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + } catch (Exception $e) { + $error_found = true; + } + $this->assertTrue($error_found); + } + + public function test_allowed_formats_with_format() + { + //should allow non whitelisted formats if type is specified and convert to that type + $formats = array("jpg"); + $result = Uploader::upload(TEST_IMG, array("allowed_formats" => $formats, "format" => "jpg", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertEquals("jpg", $result["format"]); + } + + public function test_face_coordinates() + { + //should allow sending face and custom coordinates + $face_coordinates = array(array(120, 30, 109, 51), array(121, 31, 110, 51)); + $result = Uploader::upload(TEST_IMG, array("face_coordinates" => $face_coordinates, "faces" => true, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertEquals($face_coordinates, $result["faces"]); + + $different_face_coordinates = array(array(122, 32, 111, 152)); + $custom_coordinates = array(1, 2, 3, 4); + Uploader::explicit( + $result["public_id"], + array( + "face_coordinates" => $different_face_coordinates, + "custom_coordinates" => $custom_coordinates, + "faces" => true, + "type" => "upload", + ) + ); + $api = new \Cloudinary\Api(); + $info = $api->resource($result["public_id"], array("faces" => true, "coordinates" => true)); + $this->assertEquals($info["faces"], $different_face_coordinates); + $this->assertEquals( + $info["coordinates"], + array("faces" => $different_face_coordinates, "custom" => array($custom_coordinates)) + ); + } + + public function test_quality_analysis() + { + //should return quality analysis information + $result = Uploader::upload(TEST_IMG, ["quality_analysis" => true, "tags" => [TEST_TAG, UNIQUE_TEST_TAG]]); + + $this->assertArrayHasKey("quality_analysis", $result); + $this->assertInternalType("double", $result["quality_analysis"]["focus"]); + + $explicitRes = Uploader::explicit($result["public_id"], ["quality_analysis" => true, "type" => "upload"]); + + $this->assertArrayHasKey("quality_analysis", $explicitRes); + $this->assertInternalType("double", $explicitRes["quality_analysis"]["focus"]); + } + + public function test_cinemagraph_analysis() + { + //Should allow cinemagraph_analysis parameter + + Curl::mockUpload($this); + + Uploader::upload(TEST_IMG, ["cinemagraph_analysis" => true]); + + assertParam($this, "cinemagraph_analysis", "1"); + + Uploader::explicit("Cloudinary", ["cinemagraph_analysis" => true, "type" => "upload"]); + + assertParam($this, "cinemagraph_analysis", "1"); + } + + public function test_context() + { + //should allow sending context + $context = array("caption" => "cap=caps", "alt" => "alternative|alt=a"); + $result = Uploader::upload(TEST_IMG, array("context" => $context, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + + $api = new \Cloudinary\Api(); + $info = $api->resource($result["public_id"]); + $this->assertEquals($context, $info["context"]["custom"]); + + $fields = Curl::$instance->parameters[CURLOPT_POSTFIELDS]; + $this->assertEquals('caption=cap\=caps|alt=alternative\|alt\=a', $fields['context']); + } + + public function test_context_api() + { + $api = new \Cloudinary\Api(); + $result = Uploader::upload(TEST_IMG, ["tags" => array(TEST_TAG, UNIQUE_TEST_TAG),]); + Uploader::add_context('alt=testAlt|custom=testCustom', $result['public_id']); + assertUrl($this, "/image/context"); + assertPost($this); + assertParam($this, "public_ids[0]", $result['public_id']); + assertParam($this, "command", "add"); + assertParam($this, "context", "alt=testAlt|custom=testCustom"); + + $info = $api->resource($result["public_id"]); + $this->assertEquals( + array("custom" => array("alt" => "testAlt", "custom" => "testCustom")), + $info["context"] + ); + + Uploader::remove_all_context($result['public_id']); + assertUrl($this, "/image/context"); + assertGet($this); + + $info = $api->resource($result["public_id"]); + $this->assertEquals(false, isset($info["context"])); + } + + public function test_cl_form_tag() + { + Cloudinary::config( + array( + "cloud_name" => "test123", + "secure_distribution" => null, + "private_cdn" => false, + "api_key" => "1234", + ) + ); + + $form = cl_form_tag( + "http://callback.com", + array("public_id" => "hello", "form" => array("class" => "uploader")) + ); + $this->assertRegExp( + << + + + + +<\/form># +TAG + , + $form + ); + } + + public function test_cl_image_upload_tag() + { + Cloudinary::config( + array( + "cloud_name" => "test123", + "secure_distribution" => null, + "private_cdn" => false, + "api_key" => "1234", + ) + ); + + $tag = cl_image_upload_tag("image", array("public_id" => "hello", "html" => array("class" => "uploader"))); + + $pattern = "##"; + + $this->assertRegExp($pattern, $tag); + } + + public function test_manual_moderation() + { + // should support setting manual moderation status + $resource = Uploader::upload(TEST_IMG, array("moderation" => "manual", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + $this->assertEquals($resource["moderation"][0]["status"], "pending"); + $this->assertEquals($resource["moderation"][0]["kind"], "manual"); + } + + /** + * @expectedException \Cloudinary\Error + * @expectedExceptionMessage Raw convert is invalid + */ + public function test_raw_conversion() + { + // should support requesting raw_convert + Uploader::upload("tests/docx.docx", array("resource_type" => "raw", "raw_convert" => "illegal", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + } + + /** + * @expectedException \Cloudinary\Error + * @expectedExceptionMessage is not valid + */ + public function test_categorization() + { + // should support requesting categorization + Uploader::upload(TEST_IMG, array("categorization" => "illegal", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + } + + /** + * @expectedException \Cloudinary\Error + * @expectedExceptionMessage Detection is invalid + */ + public function test_detection() + { + // should support requesting detection + Uploader::upload(TEST_IMG, array("detection" => "illegal", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + } + + /** + * @expectedException \Cloudinary\Error + * @expectedExceptionMessage Background removal is invalid + */ + public function test_background_removal() + { + // should support requesting background_removal + Uploader::upload(TEST_IMG, array("background_removal" => "illegal", "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + } + + public function test_large_upload() + { + $filename = UNIQUE_TEST_ID . '_cld_upload_large'; + $temp_file_name = tempnam(sys_get_temp_dir(), $filename . ".") . ".bmp"; + $temp_file = fopen($temp_file_name, 'w'); + fwrite( + $temp_file, + "BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\x00\x18\x00" . + "\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF" . + "\x00\x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E" . + "\xFC\x00\x00\x00\x00\x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + ); + for ($i = 1; $i <= 588000; $i++) { + fwrite($temp_file, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + } + fclose($temp_file); + $this->assertEquals(5880138, filesize($temp_file_name)); + + $resource = Uploader::upload_large( + $temp_file_name, + array( + "chunk_size" => 5243000, + "tags" => array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG), + "allowed_formats" => ["bmp"] + ) + ); + $this->assertEquals($resource["tags"], array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG)); + $this->assertEquals($resource["resource_type"], "raw"); + $this->assertEquals($resource["original_filename"], pathinfo($temp_file_name, PATHINFO_FILENAME)); + + assertHasHeader($this, 'X-Unique-Upload-Id'); + + $resource = Uploader::upload_large( + $temp_file_name, + array("chunk_size" => 5243000, + "tags" => array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG), + "resource_type" => "image", + "use_filename" => true, + "unique_filename" => false, + "filename" => $filename + ) + ); + + $this->assertEquals($resource["tags"], array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG)); + $this->assertEquals($resource["resource_type"], "image"); + $this->assertEquals($filename, $resource["original_filename"]); + $this->assertEquals($resource["original_filename"], $resource["public_id"]); + $this->assertEquals($resource["width"], 1400); + $this->assertEquals($resource["height"], 1400); + + assertHasHeader($this, 'X-Unique-Upload-Id'); + + #where chunk size equals file size + $resource = Uploader::upload_large( + $temp_file_name, + array("chunk_size" => 5880138, + "tags" => array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG), "resource_type" => "image") + ); + + $this->assertEquals($resource["tags"], array("upload_large_tag", TEST_TAG, UNIQUE_TEST_TAG)); + $this->assertEquals($resource["resource_type"], "image"); + $this->assertEquals($resource["width"], 1400); + $this->assertEquals($resource["height"], 1400); + + assertHasHeader($this, 'X-Unique-Upload-Id'); + } + + public function test_upload_large_url() + { + $file = "http://cloudinary.com/images/old_logo.png"; + Curl::mockUpload($this); + Uploader::upload_large($file, ["tags" => array(TEST_TAG, UNIQUE_TEST_TAG),]); + // we can't mock "upload" method due to static modifier, + // so we check that file is passed as url + assertParam($this, "file", $file); + } + + public function test_upload_non_local_file() + { + $files = [ + "ftp://ftp.cloudinary.com/images/old_logo.png", + "http://cloudinary.com/images/old_logo.png", + "https://cloudinary.com/images/old_logo.png", + "s3://s3-us-west-2.amazonaws.com/cloudinary/images/old_logo.png", + "gs://cloudinary/images/old_logo.png", + "data:image/gif;charset=utf-8;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", + "data:image/gif;param1=value1;param2=value2;". + "base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", + "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg", + Cloudinary::BLANK + ]; + + Curl::mockUpload($this); + + foreach ($files as $file) { + Uploader::upload($file); + + assertParam($this, "file", $file); + } + } + + /** + * @expectedException Cloudinary\Error + * @expectedExceptionMessage does not exist + */ + public function test_upload_non_existing_file() + { + Uploader::upload(TEST_IMG . '_non_existing'); + } + + public function test_upload_preset() + { + // should support unsigned uploading using presets + Curl::mockUpload($this); + Uploader::unsigned_upload(TEST_IMG, TEST_PRESET_NAME); + assertUrl($this, "/image/upload"); + assertPost($this); + assertParam($this, "file"); + assertNoParam($this, "signature"); + assertParam($this, "upload_preset", TEST_PRESET_NAME); + } + + /** + * @expectedException Cloudinary\Error + * @expectedExceptionMessage timed out + */ + public function test_upload_timeout() + { + $timeout = Cloudinary::config_get("timeout"); + Cloudinary::config(array("timeout" => 1)); + $this->assertEquals(Cloudinary::config_get("timeout"), 1); + try { + // Use a lengthy PNG transformation + $transformation = array("crop" => "scale", "width" => "2.0", "angle" => 33); + Uploader::upload( + TEST_IMG, + array("eager" => array("transformation" => array($transformation, $transformation)), + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),) + ); + } catch (Exception $e) { + // Finally not supported in PHP 5.3 + Cloudinary::config(array("timeout", $timeout)); + throw $e; + } + } + + public function test_upload_responsive_breakpoints() + { + $response = Uploader::upload( + TEST_IMG, + array("responsive_breakpoints" => array(array("create_derived" => false)), + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),) + ); + $this->assertArrayHasKey( + "responsive_breakpoints", + $response, + "Should return responsive_breakpoints information" + ); + $this->assertEquals(2, count($response["responsive_breakpoints"][0]["breakpoints"])); + } + + /** + * Should allow the user to define ACL in the upload parameters + */ + public function test_access_control() + { + Curl::mockUpload($this); + + # Should accept an array of strings + $acl = array("access_type" => "anonymous", + "start" => "2018-02-22 16:20:57 +0200", + "end"=> "2018-03-22 00:00 +0200" + ); + $exp_acl = '[{"access_type":"anonymous",' . + '"start":"2018-02-22 16:20:57 +0200",' . + '"end":"2018-03-22 00:00 +0200"}]'; + + Uploader::upload(TEST_IMG, array("access_control" => $acl, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG))); + + assertParam($this, "access_control", $exp_acl); + + # Should accept an array of datetime objects + $acl_2 = array("access_type" => "anonymous", + "start" => new \DateTime("2019-02-22 16:20:57Z"), + "end"=> new \DateTime("2019-03-22T00:00:00+02:00") + ); + $exp_acl_2 = '[{"access_type":"anonymous",' . + '"start":"2019-02-22T16:20:57+0000",' . + '"end":"2019-03-22T00:00:00+0200"}]'; + + Uploader::upload(TEST_IMG, array("access_control" => $acl_2, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + + assertParam($this, "access_control", $exp_acl_2); + + # Should accept a JSON string + $acl_str = '{"access_type":"anonymous",' . + '"start":"2019-02-22 16:20:57 +0200",' . + '"end":"2019-03-22 00:00 +0200"}'; + + $exp_acl_str = '[{"access_type":"anonymous",' . + '"start":"2019-02-22 16:20:57 +0200",' . + '"end":"2019-03-22 00:00 +0200"}]'; + + Uploader::upload(TEST_IMG, array("access_control" => $acl_str, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG),)); + + assertParam($this, "access_control", $exp_acl_str); + + # Should accept an array of all the above values + $array_of_acl = array($acl, $acl_2); + $exp_array_of_acl = '[' . implode( + ",", + array_map( + function ($v) { + return substr($v, 1, -1); + }, + array($exp_acl, $exp_acl_2) + ) + ) . ']'; + + Uploader::upload(TEST_IMG, array("access_control" => $array_of_acl, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG))); + + assertParam($this, "access_control", $exp_array_of_acl); + + # Should throw InvalidArgumentException on invalid values + $invalid_values = array(array(array()), array("not_an_array"), array(7357)); + foreach ($invalid_values as $value) { + try { + Uploader::upload(TEST_IMG, array("access_control" => $value, "tags" => array(TEST_TAG, UNIQUE_TEST_TAG))); + $this->fail('InvalidArgumentException was not thrown'); + } catch (\InvalidArgumentException $e) { + } + } + } + + /** + * Should support `format` parameter in responsive breakpoints settings + */ + public function test_responsive_breakpoints_format() + { + $result = Uploader::upload(TEST_IMG, array( + "tags" => array(TEST_TAG, UNIQUE_TEST_TAG), + "responsive_breakpoints" => array( + "create_derived" => true, + "transformation" => array( + "angle" => 90 + ), + "format" => 'gif' + ) + )); + $this->assertNotNull($result["responsive_breakpoints"]); + $this->assertEquals($result["responsive_breakpoints"][0]["transformation"], "a_90"); + $this->assertRegExp('/\.gif$/', $result["responsive_breakpoints"][0]["breakpoints"][0]["url"]); + } + + /** + * Should generate a sprite from all images associated with a tag + */ + public function test_sprite_generation() + { + for ($i=0; $i<2; $i++) { + Uploader::upload(TEST_IMG, array("tags" => array(UNIQUE_TEST_SPRITE_TAG))); + } + $response = Uploader::generate_sprite(UNIQUE_TEST_SPRITE_TAG); + try { + Uploader::destroy($response['public_id'], array('type' => 'sprite')); + } catch (Exception $e) { + error_log("Failed to delete generated sprite: $e"); + } + + $this->assertEquals(2, count($response["image_infos"])); + } + } +} diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/docx.docx b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..d179509837c5687f4f30a6c9d9b75b0665c1f1b3 GIT binary patch literal 20453 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 literal 0 HcmV?d00001 diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/logo.png b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tests/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..10d58c4b80281d2bacb3e8c5439111a242c43972 GIT binary patch literal 3381 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 LNkvXXu0mjfH5q86 literal 0 HcmV?d00001 diff --git a/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tools/update_version.sh b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tools/update_version.sh new file mode 100644 index 0000000..e6be39f --- /dev/null +++ b/lib/CloudinaryExtension/vendor/cloudinary/cloudinary_php/tools/update_version.sh @@ -0,0 +1,197 @@ +#!/usr/bin/env bash + +# Update version number and prepare for publishing the new version + +set -e + +# Empty to run the rest of the line and "echo" for a dry run +CMD_PREFIX= + +# Add a quote if this is a dry run +QUOTE= + +NEW_VERSION= + +function echo_err +{ + echo "$@" 1>&2; +} + +function usage +{ + echo "Usage: $0 [parameters]" + echo " -v | --version " + echo " -d | --dry-run print the commands without executing them" + echo " -h | --help print this information and exit" + echo + echo "For example: $0 -v 1.2.3" +} + +function process_arguments +{ + while [ "$1" != "" ]; do + case $1 in + -v | --version ) + shift + NEW_VERSION=${1:-} + if ! [[ "${NEW_VERSION}" =~ [0-9]+\.[0-9]+\.[0-9]+(\-.+)? ]]; then + echo_err "You must supply a new version after -v or --version" + echo_err "For example:" + echo_err " 1.2.3" + echo_err " 1.2.3-rc1" + echo_err "" + usage; return 1 + fi + ;; + -d | --dry-run ) + CMD_PREFIX=echo + echo "Dry Run" + echo "" + ;; + -h | --help ) + usage; return 0 + ;; + * ) + usage; return 1 + esac + shift || true + done +} + +# Intentionally make pushd silent +function pushd +{ + command pushd "$@" > /dev/null +} + +# Intentionally make popd silent +function popd +{ + command popd "$@" > /dev/null +} + +# Check if one version is less than or equal than other +# Example: +# ver_lte 1.2.3 1.2.3 && echo "yes" || echo "no" # yes +# ver_lte 1.2.3 1.2.4 && echo "yes" || echo "no" # yes +# ver_lte 1.2.4 1.2.3 && echo "yes" || echo "no" # no +function ver_lte +{ + [ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ] +} + +# Extract the last entry or entry for a given version +# The function is not currently used in this file. +# Examples: +# changelog_last_entry +# changelog_last_entry 1.10.0 +# +function changelog_last_entry +{ + sed -e "1,/^${1}/d" -e '/^=/d' -e '/^$/d' -e '/^[0-9]/,$d' CHANGELOG.md +} + +function verify_dependencies +{ + # Test if the gnu grep is installed + if ! grep --version | grep -q GNU + then + echo_err "GNU grep is required for this script" + echo_err "You can install it using the following command:" + echo_err "" + echo_err "brew install grep --with-default-names" + return 1 + fi + + if [[ -z "$(type -t git-changelog)" ]] + then + echo_err "git-extras packages is not installed." + echo_err "You can install it using the following command:" + echo_err "" + echo_err "brew install git-extras" + return 1 + fi +} + +# Replace old string only if it is present in the file, otherwise return 1 +function safe_replace +{ + local old=$1 + local new=$2 + local file=$3 + + grep -q "${old}" "${file}" || { echo_err "${old} was not found in ${file}"; return 1; } + + ${CMD_PREFIX} sed -E -i '.bak' "${QUOTE}s/${old}/${new}/${QUOTE}" "${file}" +} + +function update_version +{ + if [ -z "${NEW_VERSION}" ]; then + usage; return 1 + fi + + # Enter git root + pushd $(git rev-parse --show-toplevel) + + local current_version=`grep -oiP '(?<="version": ")([0-9.]+)(?=")' composer.json` + + if [ -z "${current_version}" ]; then + echo_err "Failed getting current version, please check directory structure and/or contact developer" + return 1 + fi + + # Use literal dot character in regular expression + local current_version_re=${current_version//./\\.} + + echo "# Current version is: ${current_version}" + echo "# New version is: ${NEW_VERSION}" + + ver_lte "${NEW_VERSION}" "${current_version}" && { echo_err "New version is not greater than current version"; return 1; } + + # Add a quote if this is a dry run + QUOTE=${CMD_PREFIX:+"'"} + + safe_replace "\"version\": \"${current_version_re}\""\ + "\"version\": \"${NEW_VERSION}\""\ + composer.json\ + || return 1 + safe_replace "const VERSION = \"${current_version_re}\""\ + "const VERSION = \"${NEW_VERSION}\""\ + src/Cloudinary.php\ + || return 1 + + ${CMD_PREFIX} git changelog -t ${NEW_VERSION} || true + + echo "" + echo "# After editing CHANGELOG.md, optionally review changes and issue these commands:" + echo git add composer.json src/Cloudinary.php CHANGELOG.md + echo git commit -m "\"Version ${NEW_VERSION}\"" + echo sed -e "'1,/^${NEW_VERSION//./\\.}/d'" \ + -e "'/^=/d'" \ + -e "'/^$/d'" \ + -e "'/^[0-9]/,\$d'" \ + CHANGELOG.md \ + \| git tag -a "'${NEW_VERSION}'" --file=- + + # Don't run those commands on dry run + [ -n "${CMD_PREFIX}" ] && { popd; return 0; } + + echo "" + read -p "Run the above commands automatically? (y/N): " confirm && [[ ${confirm} == [yY] || ${confirm} == [yY][eE][sS] ]] || { popd; return 0; } + + git add composer.json src/Cloudinary.php CHANGELOG.md + git commit -m "Version ${NEW_VERSION}" + sed -e "1,/^${NEW_VERSION//./\\.}/d" \ + -e "/^=/d" \ + -e "/^$/d" \ + -e "/^[0-9]/,\$d" \ + CHANGELOG.md \ + | git tag -a "${NEW_VERSION}" --file=- + + popd +} + +verify_dependencies +process_arguments $* +update_version diff --git a/lib/CloudinaryExtension/vendor/composer/ClassLoader.php b/lib/CloudinaryExtension/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..fce8549 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/ClassLoader.php @@ -0,0 +1,445 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/lib/CloudinaryExtension/vendor/composer/LICENSE b/lib/CloudinaryExtension/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/lib/CloudinaryExtension/vendor/composer/autoload_classmap.php b/lib/CloudinaryExtension/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..18cbffc --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/autoload_classmap.php @@ -0,0 +1,34 @@ + $vendorDir . '/cloudinary/cloudinary_php/src/Cloudinary.php', + 'CloudinaryField' => $vendorDir . '/cloudinary/cloudinary_php/src/CloudinaryField.php', + 'Cloudinary\\Api' => $vendorDir . '/cloudinary/cloudinary_php/src/Api.php', + 'Cloudinary\\Api\\AlreadyExists' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/AlreadyExists.php', + 'Cloudinary\\Api\\AuthorizationRequired' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/AuthorizationRequired.php', + 'Cloudinary\\Api\\BadRequest' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/BadRequest.php', + 'Cloudinary\\Api\\Error' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/Error.php', + 'Cloudinary\\Api\\GeneralError' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/GeneralError.php', + 'Cloudinary\\Api\\NotAllowed' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/NotAllowed.php', + 'Cloudinary\\Api\\NotFound' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/NotFound.php', + 'Cloudinary\\Api\\RateLimited' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/RateLimited.php', + 'Cloudinary\\Api\\Response' => $vendorDir . '/cloudinary/cloudinary_php/src/Api/Response.php', + 'Cloudinary\\AuthToken' => $vendorDir . '/cloudinary/cloudinary_php/src/AuthToken.php', + 'Cloudinary\\Cache\\Adapter\\CacheAdapter' => $vendorDir . '/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php', + 'Cloudinary\\Cache\\Adapter\\KeyValueCacheAdapter' => $vendorDir . '/cloudinary/cloudinary_php/src/Cache/Adapter/KeyValueCacheAdapter.php', + 'Cloudinary\\Cache\\ResponsiveBreakpointsCache' => $vendorDir . '/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php', + 'Cloudinary\\Cache\\Storage\\FileSystemKeyValueStorage' => $vendorDir . '/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php', + 'Cloudinary\\Cache\\Storage\\KeyValueStorage' => $vendorDir . '/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php', + 'Cloudinary\\Error' => $vendorDir . '/cloudinary/cloudinary_php/src/Error.php', + 'Cloudinary\\HttpClient' => $vendorDir . '/cloudinary/cloudinary_php/src/HttpClient.php', + 'Cloudinary\\PreloadedFile' => $vendorDir . '/cloudinary/cloudinary_php/src/PreloadedFile.php', + 'Cloudinary\\Search' => $vendorDir . '/cloudinary/cloudinary_php/src/Search.php', + 'Cloudinary\\SignatureVerifier' => $vendorDir . '/cloudinary/cloudinary_php/src/SignatureVerifier.php', + 'Cloudinary\\Uploader' => $vendorDir . '/cloudinary/cloudinary_php/src/Uploader.php', + 'Cloudinary\\Utils\\Singleton' => $vendorDir . '/cloudinary/cloudinary_php/src/Utils/Singleton.php', +); diff --git a/lib/CloudinaryExtension/vendor/composer/autoload_files.php b/lib/CloudinaryExtension/vendor/composer/autoload_files.php new file mode 100644 index 0000000..ff62b44 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/autoload_files.php @@ -0,0 +1,10 @@ + $vendorDir . '/cloudinary/cloudinary_php/src/Helpers.php', +); diff --git a/lib/CloudinaryExtension/vendor/composer/autoload_namespaces.php b/lib/CloudinaryExtension/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..b7fc012 --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInit5c25c0b3ade6fd5d8c71f7583081bcfe::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInit5c25c0b3ade6fd5d8c71f7583081bcfe::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire5c25c0b3ade6fd5d8c71f7583081bcfe($fileIdentifier, $file); + } + + return $loader; + } +} + +function composerRequire5c25c0b3ade6fd5d8c71f7583081bcfe($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/lib/CloudinaryExtension/vendor/composer/autoload_static.php b/lib/CloudinaryExtension/vendor/composer/autoload_static.php new file mode 100644 index 0000000..0bcd46e --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/autoload_static.php @@ -0,0 +1,48 @@ + __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Helpers.php', + ); + + public static $classMap = array ( + 'Cloudinary' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cloudinary.php', + 'CloudinaryField' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/CloudinaryField.php', + 'Cloudinary\\Api' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api.php', + 'Cloudinary\\Api\\AlreadyExists' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/AlreadyExists.php', + 'Cloudinary\\Api\\AuthorizationRequired' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/AuthorizationRequired.php', + 'Cloudinary\\Api\\BadRequest' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/BadRequest.php', + 'Cloudinary\\Api\\Error' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/Error.php', + 'Cloudinary\\Api\\GeneralError' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/GeneralError.php', + 'Cloudinary\\Api\\NotAllowed' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/NotAllowed.php', + 'Cloudinary\\Api\\NotFound' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/NotFound.php', + 'Cloudinary\\Api\\RateLimited' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/RateLimited.php', + 'Cloudinary\\Api\\Response' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Api/Response.php', + 'Cloudinary\\AuthToken' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/AuthToken.php', + 'Cloudinary\\Cache\\Adapter\\CacheAdapter' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cache/Adapter/CacheAdapter.php', + 'Cloudinary\\Cache\\Adapter\\KeyValueCacheAdapter' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cache/Adapter/KeyValueCacheAdapter.php', + 'Cloudinary\\Cache\\ResponsiveBreakpointsCache' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cache/ResponsiveBreakpointsCache.php', + 'Cloudinary\\Cache\\Storage\\FileSystemKeyValueStorage' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cache/Storage/FileSystemKeyValueStorage.php', + 'Cloudinary\\Cache\\Storage\\KeyValueStorage' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Cache/Storage/KeyValueStorage.php', + 'Cloudinary\\Error' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Error.php', + 'Cloudinary\\HttpClient' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/HttpClient.php', + 'Cloudinary\\PreloadedFile' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/PreloadedFile.php', + 'Cloudinary\\Search' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Search.php', + 'Cloudinary\\SignatureVerifier' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/SignatureVerifier.php', + 'Cloudinary\\Uploader' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Uploader.php', + 'Cloudinary\\Utils\\Singleton' => __DIR__ . '/..' . '/cloudinary/cloudinary_php/src/Utils/Singleton.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->classMap = ComposerStaticInit5c25c0b3ade6fd5d8c71f7583081bcfe::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/lib/CloudinaryExtension/vendor/composer/installed.json b/lib/CloudinaryExtension/vendor/composer/installed.json new file mode 100644 index 0000000..cf78d3f --- /dev/null +++ b/lib/CloudinaryExtension/vendor/composer/installed.json @@ -0,0 +1,56 @@ +[ + { + "name": "cloudinary/cloudinary_php", + "version": "1.16.0", + "version_normalized": "1.16.0.0", + "source": { + "type": "git", + "url": "https://github.com/cloudinary/cloudinary_php.git", + "reference": "e33619e48ea8fa0350c007d640777091bfa4fdbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cloudinary/cloudinary_php/zipball/e33619e48ea8fa0350c007d640777091bfa4fdbc", + "reference": "e33619e48ea8fa0350c007d640777091bfa4fdbc", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*" + }, + "time": "2019-11-28T15:57:33+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src" + ], + "files": [ + "src/Helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cloudinary", + "homepage": "https://github.com/cloudinary/cloudinary_php/graphs/contributors" + } + ], + "description": "Cloudinary PHP SDK", + "homepage": "https://github.com/cloudinary/cloudinary_php", + "keywords": [ + "cdn", + "cloud", + "cloudinary", + "image management", + "sdk" + ] + } +] diff --git a/modman b/modman index f9cb469..d35e6e6 100644 --- a/modman +++ b/modman @@ -6,5 +6,4 @@ app/design/frontend/base/default/template/cloudinary app/design/frontend/base/de app/etc/modules/Cloudinary_Cloudinary.xml app/etc/modules/Cloudinary_Cloudinary.xml js/cloudinary js/cloudinary lib/CloudinaryExtension lib/CloudinaryExtension -lib/Cloudinary lib/Cloudinary skin/adminhtml/default/default/images/cloudinary skin/adminhtml/default/default/images/cloudinary diff --git a/var/connect/Cloudinary_Cloudinary-3.0.3.tgz b/var/connect/Cloudinary_Cloudinary-3.0.3.tgz deleted file mode 100644 index 009e1513b0614e1a834e7c0e0638a5dae435e058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239833 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

tp^@y1}4Yj=ltsO1m3(&}Mb;aM?`}#@!0UYCA^Z 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ℜ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 diff --git a/var/connect/Cloudinary_Cloudinary-3.1.0.tgz b/var/connect/Cloudinary_Cloudinary-3.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..17aa30f848c6fba9ac0b5af0ae488ccb2efaff67 GIT binary patch literal 530326 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

6#(H7sI`uZA{x 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
|20$Szh)A&i0dCVb0wHRuJ6sA+f%Y4!fu9j$hI* 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 literal 0 HcmV?d00001 diff --git a/var/connect/Cloudinary_Cloudinary.xml b/var/connect/Cloudinary_Cloudinary.xml index 4b8002c..ad10470 100644 --- a/var/connect/Cloudinary_Cloudinary.xml +++ b/var/connect/Cloudinary_Cloudinary.xml @@ -1,5 +1,5 @@ <_> - iuUHd46ajY36y3ji + ZofwnBi0rpAQDBbY Cloudinary_Cloudinary community @@ -9,7 +9,7 @@ Cloudinary supercharges your images! Upload images to the cloud, deliver optimized via a fast CDN, perform smart resizing and apply effects. MIT License (MITL) - 3.0.3 + 3.1.0 stable - Match MEQP1 coding standards @@ -41,7 +41,7 @@ - + @@ -62,7 +62,6 @@ magecommunity mageetc magelib - magelib magedesign magedesign mageskin @@ -72,7 +71,6 @@ Cloudinary/Cloudinary modules/Cloudinary_Cloudinary.xml CloudinaryExtension - Cloudinary adminhtml/default/default/layout/cloudinary adminhtml/default/default/template/cloudinary adminhtml/default/default/images/cloudinary @@ -85,7 +83,6 @@ dir dir dir - dir @@ -95,7 +92,6 @@ - @@ -105,7 +101,6 @@ - diff --git a/var/connect/package.xml b/var/connect/package.xml index 92cdb4b..c8b7ad5 100644 --- a/var/connect/package.xml +++ b/var/connect/package.xml @@ -1,7 +1,7 @@ Cloudinary_Cloudinary - 3.0.3 + 3.1.0 stable MIT License (MITL) community @@ -11,9 +11,9 @@ - Match MEQP1 coding standards Cloudinarycloudinaryaccounts+magento@cloudinary.com - 2019-10-10 - -

+ 2019-12-11 + + 5.4.07.2.2 From d68a2d0e1a3bf0964accab2a8b39dc6c02332497 Mon Sep 17 00:00:00 2001 From: pini-girit Date: Wed, 8 Jan 2020 16:27:17 +0200 Subject: [PATCH 2/2] CLOUDINARY-201: Fixed strict transformations issue by removing the trailing slash from the image path before generating the CLD URL on retrieveTransformed() --- .../Cloudinary/Cloudinary/etc/config.xml | 2 +- .../CloudinaryImageProvider.php | 2 +- var/connect/Cloudinary_Cloudinary-3.1.0.tgz | Bin 530326 -> 530300 bytes var/connect/Cloudinary_Cloudinary.xml | 4 ++-- var/connect/package.xml | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/code/community/Cloudinary/Cloudinary/etc/config.xml b/app/code/community/Cloudinary/Cloudinary/etc/config.xml index 07ac329..97f999a 100644 --- a/app/code/community/Cloudinary/Cloudinary/etc/config.xml +++ b/app/code/community/Cloudinary/Cloudinary/etc/config.xml @@ -2,7 +2,7 @@ - 3.0.3 + 3.1.0 diff --git a/lib/CloudinaryExtension/CloudinaryImageProvider.php b/lib/CloudinaryExtension/CloudinaryImageProvider.php index f932f71..37f2cbe 100644 --- a/lib/CloudinaryExtension/CloudinaryImageProvider.php +++ b/lib/CloudinaryExtension/CloudinaryImageProvider.php @@ -61,7 +61,7 @@ public function upload(Image $image) public function retrieveTransformed(Image $image, Transformation $transformation) { - $imagePath = \cloudinary_url($image->getId(), [ + $imagePath = \cloudinary_url(ltrim($image->getId(), '/'), [ 'transformation' => $transformation->build(), 'secure' => true, 'sign_url' => $this->configuration->getUseSignedUrls() diff --git a/var/connect/Cloudinary_Cloudinary-3.1.0.tgz b/var/connect/Cloudinary_Cloudinary-3.1.0.tgz index 17aa30f848c6fba9ac0b5af0ae488ccb2efaff67..8e85e116fbcecd1ed5ea8554de1baa8beefc2f7b 100644 GIT binary patch delta 443617 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�H% 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
    |`+@Ryz$pZfwo+xh3AlLI)p$*D^4gltJ34({-T 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

    8X#*Xd|0oVeCWal+rR!pP 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 z zPF7bLxiBgRyeK^=kT1m31X<_;hGU2=%@5t(c z02}OCxn^hs?3qA(I(Tmm^3NR442Ue;>>%;<5uDL~QB!uBs#J-SjRn^sR$F}z;YaK& z*t}G{&WEbhyr0Bg*p>nZ0+J>W=aKW3kCQ4t7#p^3>(VBirC=0i>ZG4UhF!xtlHi1< zb?E9eSx@dY({U!~_!0U?(Y`SgbeNZ(#yeQ;j;8#^u@KF!Rai5GyJZ^A8|!9m{rT|x zq?M6>uqlu|>(KlJw^+jyXimx%s8~tVM=?K^$M-wb@SCvvBdzfWdLEC&;_+FLO+kPXxZ-l$tjWpA2GCY+<;uO^ zLVxBTjQCcEj~9_@Lb^K*nZW}|r2sC;0a09kvV294CJeFx>p=_X!7{+^om2fj~^RDbjuH-dcnE?&4w2VPh;?vQpRgBpoyZHhA_-`ScveJ8xqggPBI(JM zWM`dAxlArGj;47yX+TROncM;yK^kW~j|`Eb%6AMlM?%e!NGOT~a#+6t;tGhW3d$VS z<)AW$YrEAo)@qI@Ig~R1r042?pumgG5jfC_h%xxr0WN^NE1HZQ0q7oecMpHEL==d6 z^w@2O0cK`$`bI)EpbpVaTGF7>_CchA0#nn7`yzDHv_oCZp0s4SSNpXSM45dCQ z7X!SMS43ie@j<&rB^wzTsW1)#)jzJ}^KvpE^rmI7dQoeoJSS%-ltM0l3(6UXXVb(H zPxs)|SSVTje$8%a+axwo1g=^h!8zEPRm%@w(<2V_^bd&37gMOM!GS&HLPrM)@fjdR zRxS;3gSN1s?B>ANLmH)n-(d&?-3S8RDtZuP+iiBH6=kWg7|m(jsiIt9vu&CT!BZ=L zbgsl@Wh8Wn$fSO$AmgonP;;{%=85J<@#+mEAbd{P&S8eqT}4WajCI7)Ke(r3gvx&uE=>X)wm0u&~P8* zE>?>HYW>h|*A;z`#8PPg5(i3dp1BH?tP*hRBJnobz zx4ogIaAGSL2F9dp09m;>;*=MFjayFwk+RRj>ts>WK+l(Y6ghhxVR8JT_afP6Gx=42zV1=-j%XWe^rGYSCl*X|30_ z&Q`asSF2yIx>Iw;)~uT4V2&jXFLU@&YgflW)hsuE)|v@&sa%BcDbCK|o5iMQ#-O(I z1$$xktv0;5CeUU-u3Xk>!=2V4Yx_YPXt=*%Cl=14f>AMAcQxp&Cx0d)g4V8^IcGBj zq3EEc{&3lU#U{D2Z#S>$oBHS*Tm!{HZ3;48mQ~KrRkynqY+Vd~VAp^B$m&XrP0Rl)+7yjB&wpdFt?R${dHsj9 zNu3eZqB`d=zR@svt8xG0)j|U9EL+{bcq25)bYSXBliEQ<)_U!Lk%8p_kB31=7ImbQ zHZ7HZU7|xFvg9@guXDL=omsV+xn9LJs0pyL1+o>WzXL8`OKQ5H;Yn1GvS_M{hPZeT zI}s^ChL@0Ih01h=HQ$FVR<@FKci3AuyteYooZ1Ch&2Cx_@gDihB{ z-lGn7vggYL^fi0wJYVrq4Ohj>GG22?2$e5?59b)XYjzbMxoOM13OXYKce=P~Vbdus z%lSZ@ZC81%o1H_#x1i(gjG=1wGbq#3zKO(pZXywlLGK~)o@CJ)A!-N!fbXEXf;7y#MbCX6KnG(?;4A@7oPr5)LHn=b-t}V%hDc8w*F@?Nh}AG+JTRj$|1x>V1gp6K0Q{td4Uo42e1423UJY)okMOXDwmeoNeVq{ zcS&;&^h_WD?Gjc8+#?HChB$$41X4ADV%1{-Tpg}BsRI%OCZc}u)Br%*7&xOtP$BDv zAgKw!)p%RVC#kndnY^xq6ix*~Xj4&thI6eyer5(E8;*e%COJkdRIV0E$y*p zIT=Z`v_<2ocs!AkT4HjdC6Q{DlI<-ca!ax$CB>ygTxxAeBu0cFqX#s-YduJK3O&M+ zO^jl7%$G(-3-TzrX^V(MT-r@3uU_1Bz_PBhvA~-TA!maKcc@2mkd}N}gTVlc2|uVu z(Sj8i-3mWk8Yx*%P45mp56P!j0eW9Q`l~zLnvP~#T z>9mN$^Qd6!j2bz3SV}@uO`dZ(?ofyQ%n{5cC?+RLMY&>wMjaFkqYOt&h*yoS4yT+s zRt8C9!N|fCFBqeIEfJ1ZVsw&5iG1S>^yMsN@Mi-f828KGSF3qi$<#n-6U;Qkc$N;Q zr_pF6SZ1E#rIAFE2}d`lc+)C@L4s@&@8YI8!YpTMI9&^sDP_&R%_>Z(2r`Dt6(TXT zGICLZO-^QUO5Cg&gRr0-s@n4l8M5e{{-}7*fvUDtDljCe>6T)fmi#!um-`C`QGZ*^ zVJD1b0|ULfwO4W=-@!2`R+3GldJybA`sTW}C# zR4(T7#lWI9eJfV?4v2v2vYzh6J$)=lI=x_)k9sp9<|GQ@Gr{S+r9C!m2O zr)}Rzd4+ek9=9I#eJIcWl+mn&On)Ew2)Ur3QCVOe1(rGgYiVhU+t2@EO)bq^&;K^r z`5)`}51$!1d_adB9Iw}Q!{knDI>w0^;8}i*tm!{STOjl6tlE$jsq<`*g8eSx2 z;U+kV@`W$eKsa;ls4ZWBRK&$82yu=`#m(oM8(Ts!H5KqF8K)G{^ppYLe<%{=(n?l# z@pwh8AOesnV__~iMQ*dwPl@@^p`G4@w7(sL8|)`E9lV+sQzf)W8%u^W`6g6$WD1RJ zz9SlGZVvHiszGJInWZBfMt^gEqp1WM6S+({DQ9xw2_-4#!sPfYOu?IoHpk=9SaYnk zEu74aHWK(MnqdmEXhK$N1bX9eh&pNO;L&qH2fSs-gZ7bVG$lov+Y&A4Z*yyFs!2{X zM_WcxEwbF&+#)4nlAMxLk@jXO)!vRiN8^!Lv?-QIL|fXMBz~jNiGTQv#!Eu&AaQkF zI8;>7a4Jffe5Vf<8iEacOs3?vSW=EA+aqo9lpGmpm8F)pNNc2}sXf&$MVm+3+FF~E zlIsO!>>RZu2X}N^BCZ#O37wXMLoatL7N5=$wnqty8;1-zBK0!HGA*3TT zQQX5EGIgapNP~RCp36Mi*Ae?eTNBln^?e5!Tp}rH7}ql-e70%Hy`!{mJ zMmW?fBd*SL&3{HO=n70~JA~Qjnj6Q|vV?B8 zxyZ`%ppn1))JxLRZQgS$?&B6VmtrY&ZFbP5-Qmrh6@&Kv3~y=v&^J7`>)ON^8F8)V1Z%yNxiAEKqHRd;(Mo&hFnJ2kDEO)N(4|VB5%F)K8F~c2a#ko6(vF9CED=!s#asa?)}h6vOlAr{ z(w>k?i&w8)oJ(LWU8%EzCf}4Fg7(DQ^M623l8Mt}8b4hm7(e^GTgw_DbTYuK>0Pn9 zd$A795126a0@P2=EkKW0zPM+#4Wv(?mg9KiFjq^YWIbDkkQ($4g0CXgnwA^kwp1sx zCTc1J&I`m((6v9h)QoyBaDJ7kDmk<*NE`J<;>F;zYq^wcu6_GbXHi;8IyICgy z3%x9|NQZi&RuoQ%c90ByQZcnCPzGK|tjA<Q)2p zR(}UqzhQD?eqB)e%R3X2Y;@gVuraQV?O#pv(|25PpJB><+*oHUN9ufd{PU(}BEICB zW@5OL<16pu@|5Ot?p8v(6pssyunK7&YDq;Us$6%GXYaG~ntl-zNm7hbi&jJo8~~6z zlgj5F(sVss9(M-clSV;P&}A^mcB89!+u1W5{Dc$(kMzzQ(Hz*Akjo`9d_v!i^l zObRIrYW#d9Gs+<))Fqh1k!9C3Qezr*1QJVNyQ2{`DR88hU6*?l2P1zUFB(yro*41H z3pQtxxr8>(D0`G1AyA@W0oYc{23D>JxI?zkUmC@i$#C6Kx!9AI@omh7Q^-(V1yOng zs3??62MKUc<8pQs)N<5caiu6{0+AqYxLY@Tw5y8Qq7X!Sb8&B9h&w`&Cm~I1!;wVm z<3GZ*+5ls<0pj6I;AVfwZHk6P%LG@hFB+2*<7nkB6)nR0&2F>cBaXczdVH9XN^}=*S(owv;P&dZ?Q+5&Y?_s)(aLw7D7gp4cZ2K?#RB zE!VM>OwwWUiKSz;#=Pf&F*%*inG=D%Y0PpsUaF1G$IIm|v}{N=m@Nq$?4dOH6^*o# zQHoktq%iJ2=52pjy>Ir_o|M-XXvj7|tRn<}BDeC`grbRJ?2~(hpVVh!zd3r1q`nT0 znO!IcgY+w;?^}2f8z*#vaYzPYBy6KU?tBd_Iy*VV%ECrb9OUgGeBG`tnmo-*tec3o zi*jrQ_hA<$*13?CZdJ(`;s_(}8IiV1>|!EI0LMdz>iK`-iBgBc6{$>{=(YtVp*HEvq_PdPtKLH!|rmLRTQ0+N#1IT@yZxqOV${sRCT70 zGKPq)OnTZkv=0gnv14!B_LjKO8G+Y5w=Gn(UY3)VttHAjq(a6Ef}cGL`c%)iHR`rQ z=zRidJ=4@v<|gw6EW5g)L-mJa&e|bnjC{WakQIMl?HoWZj2e+YScWx4m@S_&-h0#3 zhNYxx$B}L+VpyW+YXylgqm6KXhX$;24tu_?ia^6Wjexm{Qs=S2{rF*~h7eP~c#HDfJhVcDCuq&bzxqzNTgD)_Mi z5Rv3UR!Zv+NZ@}sxf;tQv8$sNh#BkvV<-MNM2F*$PC=hYT(RTem`k;1OSKviaFPKG zw6d#5hY6C0vp)chQM&|i&;=OV8K{?xm*szpA@g>@vCOXG`tsyLCeNf#ntHVKZo2n$AS+yI^;-2!0NICLuPbRoc=&-#)+4+A#j&Z%bGtFVFO@ban}J&?d)`j z;seX2M;8gNUB(R#s2juP>QQE=-}rYf@(PqHG8A6k?l)Woh#Ki>gYr{cdGjFE}?!x@aH>4+8vjt z(DK*pdeE&P_QA9k_2Fkl%czw;PWc4tHX`yO)?15i6 zL&9*73nRhf>!U;X!VIq+hQlxz$_{1O=x9uYlGCt)7)}{v>T)xYh#qjAXSUigTkV*c zv18oq2)jVKSQBV)in~-K~WIPxq0(0q0G;ArWjwz|4h%a9S+-85ekZqY;NC+YS zXMGzS_*Q=b_b+eSOGaM;Vqd*+6kV&8FR1d?x#pqMF#lUpbA-9n>@W&zMzQq8>M&=rjZwO-x z{6WG2VVSsGshBSnIaPnjC~2txZ)kl#R?MXFg$s3hI+ieLvs1GnTQrlBT&YXCHna?o z#4+6%c~mDV^-#uuo#!!z=#wQL5gH#RhU4D1gY4GJNY1N$w)vbnnY&(av3Pm{emFCN zbwE|yar$V_?cxpV>YZDzCw)*-_n<5{wEQe5%X{U~jC5{KJLrF7qrO!NwZliBk|6j6ie0wZX)VOmWnIB~ek4X`WVA)8%Tb%rsIy+GHZD&49(GIwL#{IGuq`ZQHh&w#<*v62 z6@$U*&fR?zl|EkZ)Gq8*wYd=G;6k9vUS-j@()FxZZg)#Oy$J1pSLb4pphF(q8s4%r zom+!m!35kD6q_5h)Kbg_^wqWDWEmsZON35G#m&X0a7U!3wgwCBkca%T$7Vj4FQxIq z6k;Wq76xPSMM`|QM}e-4ffNkq=o(wbR=RKIMl#ct+$5AEBu5n!k(DGNyKH*TKH40k z?IhwuU+P|-G^wwDSn(S;3|Dg*W4{Jm%fNL|QTa~B&@iiSP9}r7Z$+C8)Btgy9jr`5 zEog6M)?|<^k6y@EVQ-o+LQHXBi)2C0!T2)#RwR$vK9m8q?Ge33n+!0`Yo z!sVeyWar%dp7dzu|jTA<%aChS3New zb@wL%S9k1jOA)|4o~bK8+lRPHe&B*KHHXmWY^=7Z4FuF44k%{d8i>300JW9PnHxe( z_~sr5+$+O>(dm4*iQwxztDuo+RY>T4stySuF8D#he1s9X-0q+=_AMS-kaNcPQt;R2j?u?yP|hHO#oLOD+CpM3&9rWnQqXK9-$ppY5%^A#>!aToE#V zLmJlrPXO|kP(Y^Rqw&ee3E`Clg2@z5xv({eCrVUf`ZxX=NJ0}ynL6`2^na0Cqw1g)EWCeVOG@;nV!AAvPL z5NBNUal!k)t{v0|9%QrOOR7wy%(zE4JY3~Td%bNF&A`*oV8BP}qGaw)IN}A1X?avi zOoGw$NHXG7DI+u5NENK#$K|Q=>U8rGIQI6en~L#seET8LuCEMUa#_~aQz@T>+%qD>^H-44S_prw5JWWP` zA}s1CR~ja;%%WM%7nGt)boWvrO~^!l72-2f=#NP!XM|_3kkAzpEv;n7xq_VT64c^U zT2{woF#U>CdAUm{%Ik{Zgo?(iBlhxGK~AwKs*_R+U_`JAJ3>NZ3>yKogT9C&719?c zu@Q@7rOZfHQqp2xDvr5DD6){kt*(&CO(-%_1+aT)1QcfCBYEpE1`UU`L;vO zBQa!Y2i?NKF}p`XvRXPhP2w`8*w9KuoGT#N^eBeocTvo83$|tHAdZz)W^VC=2ZOe? z#Ks@{-H|k+oZ~R()p4D{>u@+pF6B*!`_&Q3Adi#NxCEEasYSV9qXdrav%sOi=99Zd z4AM1D$|D(F1(F0=_(?@DGWjNdD+qW{5ro|6gcU+=l!*t);Z;3{iK$>35e$ywWQv5u z43lM3^523Gu=W=;`W{6NC>0Nm!g(g`ck7mW3 z1Ot&wjl`-Q$rX}vp@WO&*9k$-IAoeo>ODY1QQ-8ZIcS%|jiPB5H7Iz02rsAggu~tF zvUFjqV3!eWtHoZqaNA>*+HR|Bw@MKa@Z^y0pE_K{8)ITlbK~qP0z=iMF?V$ z+9W|cc9{=^u~CR*{PQu=vWJmkIM;Af;u2@y3FQgdQF zG?5UYbK#n3e=7JUd&rr8$vz^U@2p`abaKR!e z3x0%2MFo43*evtI@OHuU6@+F@=sghily7*eR(~4YDoRdX`4zF5W=_b>9Ic#dZiEFY z(3sb3K+zqq^`M#-$sH8co`aCUvJnv_IK!jDuWFnAn5Zo;y%%1UF?FqoCQfR@jb|BJ zh*184trc7Kj8*P`5D}d!ff#p%IHQ{!>>F`bM^<(jD~~Ao)}$PIsuZWR+ZVy03m7KH zecipsvTcqky1mv&(Cgkjh%~!m+^r(xv9BGR^2Tv=Q!lJE!JOu7rwy1I8Od8^eDjoX z_C}R{xBz0OPh=n7@ll(Zj}W3p_6wsrfv-W)ee<+~)?7w^o`j%nnC`W*en^AF%w+VU z1{S9Y%-!hpyEwOy$D7EbVm4POj**GF`lGvQP9!LrYEMQB(u6*+1>7&30o#SN)s4uR zr?ZPsg+b{lt==Z3Hd`6`VgZ~0=`KO!xq$+_BXa<+- zbDMkS##-jay648)_)1tdja>8VN@l6K>a^&IeYNrhC0k4dEUkxsz-v)cVq7C%&dBnDLpHjb!-ho( z{dX8(og6-mRJ+FHiRd(&o5;80*06cVXbzqm?V-ZcYz}(|dSh3s7Q8U>GGRlNZf+5Q z*9Df8HpF%sLqNX=;5GuR@8RZ&rRRgr1Y3^MVK&H9=kAods`bv9EjXaxz5_3PcV3!EL>rqHH$|d7Ar4_JH8w>WV>QOZ_%_`6 z!Piyx(QJj}uD2*Ls`Y61>Vid=v87=K6oYM?PD3GR5Qqrk+o#gh=Aae^K`($?wWb+{ zw=~r-Nb3eb#MBPMTh+r>^{{2B2S09mhFczg83Hx(&GX}&$N6&4tJXiS8V5ZJSx-~W zk4K-!*ri>Rra6w8ZfoV&6-{Bw;I6={ZR?t4%U`n?-b|G!7?MDpeQ6~x6(Kbe_}YZ$ zD_KZyV%#3nQ=2rTl(bBMFfKvit7VqLayr>1;2n9l;-J$S;8T~dVd%iMrChPIsAN!o zU!_c5``$5>oEOqQtIB9rDwYbe@s9i*nw+P73OU-*UPyTbu1VV}O4{FzZXHBiCE4i* zj}?aJ4TUG7Vst31rF|X>1Fwg|t|WmZl3fB&O_u=tc__Rf?6&FKCy(~5%LjCRgn<7P z-!yW%UTb4jCwC6nK(-1%83D*h>lzY&W2NkP14O{<5}G6Urv~yOVz6>;<;IpPNRtA) zLUGE1Va?!9;h2Vclu7srx?Df@5*qYpircC@-UsC|T_NDX#N%nJ4VX!+Ho{k-@~to` zDeXOcvJb2g*G zFIPvdt?|h#!vr&tIy?1dWR>C2r;}udEh3(Yu{2v3#v)FKrH8G}ChY<8)f(l?LgJcN z5}=#e`oRdFK$ogq3Ba{`n+hnm9W}^gJDbbinW|W+ItF<;l|q~&TTD36F>F{#kjI<^ zFle>JH?X%f>}ZLx!{vs84utoApKZ&Ex6jNzT^?&|U@y2MR7bjJANO`gkWpH99kMra4@20uqR0!Q;IT5s9T9mwQq)!(OVOc69OWENxyUH)0&xsgW@h8yO8;LYUt$!oY*4B8-tZ2NswJF*fX^ltF^LQlI9G?~0 z6a*;2VF}00nw*@(dnIn=%Dvx0f94;I_*Pd3dnsyOLaQ2681(di;t*!D$n|v}DK1&Q zq6gF&;e9ffSl0-@wA~g`ZlI@sKwQ3ZsaYoma3FsjwacZ$NGJ>j3 z$OTZ0dLO8zI%=SZ{?zMDbvpZl=fM-eeJIFl zOAu?u*RY+#@_9Bquk zT`vxjGAP-STxULxp~tHatHXi+8y1m3OC6AkqX9`?S0tp{MIkPOrig}ujI&vw2X%|c zb?SzJsl435N%=fN5DRtqcr};p#7@{qF?E%SsfMa= z(?5Zki^Hl^jBx{Mv^%c^>Opt84IHv4fub5KNbwNXYG}2hYbZNTm33nc#x5mL&k|D2{!(C@UsfXu~q)+Ps ze^n&xhZ;8g?BLu8WTOL;84SR&-_@`H87nIh%!MTd=3XSCL*}%IJ|j4MkWmed*p+f| zESFTZtE)U{dysAfP|2opd@$(VTEH&pw*E3|W^ij-Gc3@PXkkvs)Uco+BMpxEtN)F2F2MpBO7Me{UI+=a4bU;#yW+M7m(D4fTtA&(4tb5EHWsSB3cxAsS%SRL|jc|d{Mwzf6Ev7 z(HxJ+Ms{9s4l-|HAq9yw=h_tmrZ3X>;i|+GC7dHy+9oBH!}&|Iruj=uaE89tQuEdu z0Avmpue$A=%Ud&!qk3A8Gs-&PB`QOb_qtW^WEU1aQl$*9+{c_RZh=>XsHru#mXs7n zbUXN7ki-LOV9}bs6{~v(#6@fRe+O2t?CU{mxc-5VvpYdn3O23pj!9a>oC({W*^HCZ zXu@TrcO%#kM}FO+hn}kekNj;)7CMVW0q5{=Pdsl&uiWW3ujA6Yx_|kV=(Fa#1QH}AKGK{)ziR|2k8B_%oX5DqnX0+OM4KhmGlotd0?PK_aKR|rV97cBBV2(gIdGh zq64_DE{+HJW620198!$|e{T|^0o!+UFr;lEs0_)_wHGPib7;G&JbI8VS>Cf^asRMu z9z^;~!f72trapLT7^dMcw_3|op;;DW;?U`=l49nmhGo98%z-9CZu-wY&uwG@x0;94 zX@_ADI^Z&FL!FkiMaXQftQ}Y$t@5@Mvt<{vrF?sCmW!U{iP}%pe^+PbqR4y(W6u6e zKgBu19ET2*LCbq;*-JDqBZor0P{CNsK|>)MY)x`P1~^#m3l5%ZDu=;yef*m&har#p zn3l5v9Vi~|j_H7ElD8#Q0qrH=4h!avBHvl(9BA4Sh~V1|+H9Gm9)>1Y9bM8v6G2-~ zZRD7(jUe`>=ujg|&+!^6Q&wl1)7=uj0-A~gm{i6VlmgR6p1(;7za5(=5$174^(Si`2&svJ|AYbLf%L0Xk7`jaJghkJAM zK8i_imW> zB;CAOigz1KIy%@P9y|EZup9N>IQLQwJKHCQXtXYqCD>Nf@f^cn%VA1NG4+IPsR&Dx zWj)=Cd-~jve;p{4Gnez`;E6n2{Gw-O-tl>mJqIv%E7afv9OUwS?_Mjuh@@ z#h!Hu882+iNAAZ)Zf*^ce5c8zipU?O;;WF(s+%C8;(U4oT9dBHFO)%_W8w$=pP)JR2yC9AW;YyhLa_h3Ggmw#97e&AR*|~RL7d&0+i8QY zJCVGWiW|uX0+-~?5OeNTSU&cyrEv{YFxn%oeU%m_}>s7hT&)Lpimo@3U!!+y^j*W_JCp~cL_4tXLm zcJ018u+pCGW)s8xQB_9NEAq^932kRFBNfI$dG?Ph`MjJA2)$_;PWMr(r94`NPbh_4 ze>MaAxrnQp?#0et*gz{~g`nH+qxIlR)4p~WWvav4-B3~v_T6E9p>~AB2$M$BQff@( zGQ7XzxuPr;7Uw3jRq8wcE*yG8-6=FJd#l)K@r;bIl%%8s{L#4*>McG>E>YI+Lj^o3GRD^Y$VYqSivR%A3`WsM2L=SgQLt|@RH`F>hf3zyP zA9D!VR=)M?u#1DDWfzpRIjCKG8xC=?rf4PgwEWGeVzZ;3d1XYu%x_a-c+{eIqUK*3 zsN^;;<AtPwU8v6|SUcQh?JLcJ%Cw-!Ub>JakGqP*uMzg{%k+*8f1M-_QsBz? zppo7T2*6a$+9kj*9IJVVD{FVWbywWh#}beQ5geYh9)oIe&TqaH-k`5_iuZbC z*e;Py2}8P^R%H|jvN#Xn?z)*Zv~{9IH-Nnnh@gTunezY~UzpHu^GT|4OF}e?LCgcl zG6yyrIkCbZ)G4(nXYfbPe>|-%;}}7Usum_tZ^uJAtp!0KEZ1kaMotg~^m_y?6fh`V zChVf>E>RU|DE8V=(7R`efv7)p%S40b0m08aQ09(2LsPFpHYD+eadH$6%kwJPt5PkV zaV~Qx95`sF`Zl~c@Yq?tYRPJRaSZNm1w-Z-ax~2kSD?}g-g4nOe?haSA`KcElDQEH z&%)$Wj5nuhWUWl%%Tq?g6dO4D& z{j^ogv1-QnikToHNU%#W)66h=p*2V*Q0<-$KLhO0+X+#vydO-dgeP#Wr6iPM<=k*# zhXIfgUD%juc~@i2e`Hh<8HJF21XCa3CL?APXdBMHXKe`$!p9mTo7z(I(|0~0;@(2K zUg#mqK64?cg?_F}g3Zy&*HQ3g=TB3Bwp#lYTKhV^KT!6*xrC|6?5|+&CN%74kzok4 zwMW(^!PeD=pEYTc#FQb@U$g1T4!4|I@u@=ip!*C5=qO1se~Nc+v@bD!6RDZx0D?(~po1Tbphn?K zTco2Y7J*OMTvirrSA|RuPYobAc#^v+jH67i^E@^~f9+V4vnt%cv_*jJ|G_vxW$g(# zI>xx~T*<17$ar26f!Qu|w2ho=%Ik_1o!;XLsL^y9`;MfOyqEr5iv6_;17lJ)5T*8} zwWIlJf2!)I^OYcp2=0!g>D)5p^lq6+XNJ(Q-&1e42uev3JRe$&mfHqp?9<|ovL%dM z6mmAs527%&R zK7lYol~E|p`|?Ta*Dr!560)kMO6l|zM;Jo+__G^px0ukG|6GDiC*h-!FD$%{bAi%^Z&L!WG%a$^Tv{rO$|k3{w4xUMb8Dx1$jN5whsgkv?D*Nz1 z@H6LXb`}lLTwP9U_kfYxM!@k_#X+fIeRsn#k%so+4J{iX-5P5rw5i7@M3F4H>No_0Ke_gYM!`huxTmg+(r6_|;B893|1%GK9G}~HV zE2ob(eAQ+eJg_xJR%hCmnv>fgv$lsg9OCT#uaMLv;fj(@%cI~1f*+PAf4(43fQx?? zL1i%kj^DWv8Pq7D8@Mq!7=zTXIV0M(gA0XR0hKFdVS2){+gXN>u-R!NA=|_He|_Ys zFVAWQ0bpGFxHdsu=A{8lS33Mk1sRlXGJ*IHn-vzOW8bwzE;}I?wD><#5tpi**EJlo zjt%;nYfS>xF`6r2R0?c!h<*WU(W2~IWvX%(TQ^XjP#-&taTF*U?QIPiOd!9bu}FxE zqyN!JJ9dWGi5!ig6?q)}k47W-f5kNTW$%N=Fxyk$9D1bAz`U-jUuTmh4{_7Z^XsIN zO34MJEXA^vj3I)>fM7ti=9r^Lnr|Nq1gZhGLtImNmzOFJxxG#R*bH(<-DNY^i6Boq zYnBIKCPbI#UaxrB&qgiX7ms9d}i; z{b%n8Q)3OfDy!jPml)X2cv8-$43*`@^yLuo5!Hb3>H$8PL)4V%3CjU>7$z~qD~1Bp z^-dpFS1d0c=5Q!OCHokje%oNdV#iI^F5w34~qv>mvM-+H?~PsSt+!o?z&bQ2Rp+-@TgdahQ$*Q3URk za;Vzc4l*~>&|&hKmk>S&Ab;ADT-)+hRB%nQlcf^BzXaJCr1Bm!4xJoV!z;ViPKD$% zxEzheU3_DBRZc*T<)osLG|&3PhvSX9T%0G@hr~oOTQ1TKcFh@=r!<$0SiH&4BGI{N zMG`_Av~&8GLdcSia5#a)ZbV9q<5(rGt0?Quf8t=lYx`9euR91RLVsI0kS@&sy?pHu z!_kZR^XDVATsLPv#!N;6f()rHA%i4SL33VlC=4%ffHnaxqQVp=Y;Z($**JtlDh`D; z4iAwLGZZF$6}0G+T>?y+0*T?(CFqC<3+m=8*?g&p@3eLaMJ0p4NSVCAk?xEs$)ubW zNHFj&VJJCI7z*1enSbM%T?tdxS zX8_AH84>Z_FriWaO0WW|J0^xh?M zWT`b|LnknGi5x-29z7;-@?1Ndu3m071zQj+AO=T;%zsFr8EZ6GP}WyEYAI$|VN~df zY^}Tn(R;C6l(n2%RSbfpUb{My8`UeMwoz{jBJ@JEEEz3eKLor)Msq|p6dy6bh#Hvc zNbiJGArG7YYR?QN1+X_^*8&L4X$>n97`h#vK#0isjx6Kp|p~5&eG^#RgTP|FA z=+L@_?MDx-i$t9N+q&uRC(vKkppJIqmO{iRRz}{=0WM=+v zs+_)5!(Q7Q4p-VPuDPu(;^j`O$uT9in1Dz?m-74 zf5)2Qh`|1C@9}iMMB;^C>5V?7bJrjbdTqEuKM(JP0q(o$w^32oD{IMWD-RPJxx!@( zBhpuhGsA}26}mHO82gNrPF_M>`HyN?gT0R%h_p2(KdzL zYOp=IT}!+Ace~ZF6g4LPiZ{JB+W|qyf9uPI&xnlYJvwSIyr}mT9!Q%NjR3{brbwi+ zs%DI0t!}Nx@0`goNZ^Tw8V5s-lX2rD)+9W5--f$3KhDf>_ZZk8f`PNy$z+8AG_>_s zA?>~R(vzUUshlN;06C^o!#T7DgIh0+)*LNWUuf5cKs_-or{f=i7S5B9A}cEte>v!c z;ozhvbW4_G@UqvU)@O1_aKbNy9INjfhBGE35ZEIh(*?Vb;efP~3fY9q$6!>5bDYh# z^~tVmE{n*V&{V27&s=iJq%arJ??xY-47nf9R$W=Gy0#ieRn>SyNo|;fBxJEhDI=}V zWu-|KgQ0SQ`Gh!X?Tp`Qa2(P>e_R?yl~iY9400P6yGq4WLt7`r^KEGg^+nQ4S1(SF zbsyfnuzPto`RNUZ!&A$e7k2mHuPeyYh28l3@`Zif-K{>_!@g9}E__ZJCEsG?Tdb33 zEHP)cN9x4rymgs0n+mh8)TG%vluK#s(B)j zNldIfzI$@zqW1O4OhV~p(VRYOUAUrq)nWF8F;)0)nt@x$c!9VrcwG9qAEl3AUtvUC zM!jp~kn$Us)$Lm*b28bIm)BKvZI@C%xTcaF_0~YHTaI|gj)qgkq?O0%d@9%~EoI@P z6e(!}0N=n<;WvS#PHVo>e_)G_y;c0Fx38zaXF$ZOMW0?$dd!+>d)Hy9W0o^B@RE{d zmI)tVEnMI|@!SL=4F~K=E?25tnxQ7D=RS*S1w67XX(jAbV>pKBAsMv_I2xWGJGE@f z&UoDH3!Z3HtWjmSz%OSgI-zQs*J40*hcex=M}MS39O;hQ&?|n8jU1C=v~&!H8;k6 zB&4y6U&s*dAcHf-u|jSV^`~=Mxs6<+{CY+#fb#M*GaZ;`>2B!|=?jLgnep5tp=R;* z+^*vI&g>Xs-dV&Xe`Hu}{g%sHY>@O7F22%T;8=)DrCt@j&;g^CkmS!IIk7$YPrIT#Q6xlv_nCuESb61jpv)1cqAe0@#<6Js?L zF?_flH1hCfVg;A_l0Bs_u;WMD) zGY|5Emjz(RAOnrsN}(8=-W{`w1W}BY6-DmQ{?)5A?dFs{^c+}I1J%$zE!EJ@QVjy* zrmjf!x@v)%e%JkUzlJh}5Z;thg_^5G#o-8YklSknf8xoJz`Hh4gQ8+CCDIcr(b@I7 z7&|#_tt1RWhAt(8NS92Y0%L*-Moe}tjM~gR6%94KZ#^cs_b89f@7EapMf@fH1_M*Rfo*AK(D`6I^ zd2OkH(=7|Gw4RhyEnOdCi6b4hWyL(?3WU9a-dOQ=Yrl2(@Hnz2I?h~6z#79`+Hmv= zO1n8wQ2=wX-J*Y4<`au)Y|d#X4f1a zf4i`winl zPV^~|#)YaQ_mQ}J>D*|5UxFqA#9F*(gLBsF7$!A==s+->PNG$9Kap#Qu&L$PVIsdb z*3H`bvw8lcm65Qyk=>(beGN~b1yHU)e;?YLAI1DwK5V;P<<$mS#kaJy;J=YbQ`Gu5 z($w18)I2MSOthwGYos+ELC<68Pi$6XQxKp8t3{5RH90wn@07ZgEBAg2{pmeyyY2Uw zwZp6((dXH-7OW1ve#bVmX6=iwb< z+&S;Qy?%H1PG7s{&K=MF)z{v>?drDIURe5vJ>NR_p&i6Ce|`Lcb+2}O>V-di|KC4( z_t?+w^^q_CYf0&6iyD4#;H z|K!MqfwR8$$Qc(6JiXzyuOD{1`mNgv7oB{=+3SAxsfGI&|F-n<*2f-sfA7za){lSV zwl$}JHgNB!{x!RP&dP`Oy?6Xu$6nBW*QYP}&cca(dAFTC~c zgN1*eJ=p#1{STkK;&(^ycy;EZ>(-xi_*=`~IrxGnF1==(-wKUC4es*mJ70Tb?4MV+ zyt2dMr(Q{{`0snW-v87Cf6uLIKl9aD*NLN7t>Z8Mh_aA7;BWhFIC%N!?7J?FM_)Yu zmK_@c+x`7tr>SqF+zQoxj6Pf6~#9eB-f8k6Zf8_`1vw&-`fb(Z3qJ+ZPo-q(-Z?vjhI zdE)4umC;uY`To5}wTO@IGTge)XX{e0Jof9;_x#mIrQG9Y559In>9XyPId<3L<5y1IdsF8DvyTq# zwQ<8ci%z~JJhosP))=`k{HAz3db4bYS+n+=wc|FExk55b1`4u$@b(ByjryS31`V2R zKI}qs{a1gsf9mHEBs9x@yy*PSm7T|JcWZX#-v>*>qWk34Zs z=JB}~9y&4bKk>7jmp|}1`7;|&{_gole0uqFUs(K&+a8#=Ci&;Y+v{IDgg+bDXLlcV zT>GbvJn!OdAA01eUnnnfJ9XXgxeZIiBc2+&?jye(I_!x6{bx`$~L2Vg8*jZuhMrrFg@OmpwLm!j4y+yW>lL*>GaZoA+Hi`!A0i zbK_mN1z*|ej<4=Ivfu6t$IkxWe;)eg3A-u1^B(Ft;%}M9PAR_i#)7lnId|2&cm3lt zyA2<_L%e<2`akA7=RI}CZpZxJmv8vT=jROHf4_9?-n-wu|I~LM{P%AAFXGc5U3=R> zPu_Ovj_Ys!-{|LNv1Ik`l}|nUI{MhqHfz==z-|RurKR-6V}6}|vTct)?i%^uA!7&p z^rZurymaN-%dR`L}QW?0rLhyB>DISAV&7 zf1lr6y-i*HC+>S^!G(X8#Gk(X?1r&LU%2|Rv#+1HN}hdp`sLmq>~r+z9tf{q)lk1@ zYL_?L=FAyC?CLjC@4l0}>8dM!{?bFjirKsU?9Y+97tj04L3@7u(v`}O?z#7S|JOg5 zzwg5DNa|1TyYR5%zmmG=l!sru^@)bpe+IeRR$jgR#!vpH<)~v$Z~JNJ?2mro^Eb}j zd%+Rk``ItP^Y_GecRBf!=k9-8&)&bk>iCa+Z}8-Sj~{UK703Pjo^O2RH{4H>pW64U z?=Cy?v@h?y=lbW)-+TG?XZ`XTZvV&by11y^tUhSCwzUsp&j?@K4@aw!=63pr2o6;%oD=roczEmjn}=i`;#~P=(6RpD|?bHPu=^4 zDZuM;7nb|I91f?|SlYE<165;iay@(eE`ycD?!f=E$#p{i6eS z-M#mum(M!_nD>5m>mOS0K51M^{_$HkEIsax z9X8AvUv>V{>;L-i(kE}d=aYL~c2nup+YUb}aM9Aw>~{4ju@_JN{MVoUf2W$h>5Y9d z$IYL-|FZNopN@Rz_y0cV_2{BFKNa|fbj7Y0o$}bj_kZ>9ogTjR*)Mr+Zx% ze(vf^azFa>J_lTQd3^16XZ`HH+-sRx7Z0DiCwK7C*Q|_wCHR#?e{o#tC{^Sc+K6%sMS{8St9>2fok<;(lf9H)aZ-3Nr=O1y^ z;V+*g-F;Ph=O2uuezf07uPP6`^yYC7y;R)cYe#l;G@gIPnGNZCF8J;~3*_S-|MiNY zWnanu@7dQwm+yD#iaicld;alf$NSH@w(*&_R_yfh7k=>ckL&i__KA6+$OSJwFYL1< zxwhvsr`|mDgB3gffBE73^|xJe;)Snmy#C72bN^}UJAB?Ba?h+BefY3}Wmhy_a!295 zeYZdRrq4a`+tC{?`_#8O`dgQde&fL8n&$PlHa5RJe`1?QE?RxjEkAF)=b)31T)FSl zi&o!w)7&|CeCN8i&KF)DzgXyvt~q<#UH<&W+0TCBM|Yp~e;9vt-KvxSw(IV*A6sjcRJ#^iMPJB z#~+S*^M#Y%eDU-{-g)%%Kl<^N|LHjUPnVzdr&TZYe)JqZeC}t84_w}y?0j$UU;Sg= zskg6x>bd{Ee|qx9y>6^ueanNX-FjMoz@VlNd-DCpX~t{*+|!8dRD<@0|!c<(u0I;s5-rf9_M=kG=Ns$=ecd^>wtY{^LGF z!tXPmZ{KeFx#`nS{pKZ~-)`}4&+l{7uWskoWxn{z)wlO$9zN^c-~Q(RUHP%A-}uam zg%{tt>e(w!xw_+D`+xe2oo@zK-~Ef^@EymE4hZ{4?z?Vw^!Y<(^Z)+gGhhAJ>;32a z^IPZff6sko>GCt)Ty*yT&3^TrAAYWGpW?IkpLftbSM?tFkqaLG>hi|EU;gxzSzkF{ zQny=n^_%mry64tw{lr!KwYKfgKr<(1dA-}C76i_YGa zd-DFw6_=iP)me8v{f&n&x#+@=ymr>PiLNu}f1JPL^?%>Fz5mm%p7gs{PkLzWH|G8A z+5`Wx`=8ZspZn6tgL6K<|H!lNoW*@&uR9)|6WZ=?;hRTx+WTt_Crviby6xZpeJOYP zg4cQyKYiiqU7p`}G`IK5U+cR4sO$c@--}0m<%X9}IpeCir#x`u%E8?tJ0JVC`bSnL ze_s7n_D8R-?8*N#_S~yquZvtI{&vxw-#zUU&n{DEKm6;zT(bVycZE}g=5?KCy!TMz z)xT!;yK3K)PCH=T35PAa>Y=%lm)>>bwQqg4?_Vos{kQJhKUwmzpUv5!_|V?3x4*vK zX`T7SzdU-^&;5}<^`?Dx{Cobr|E2c6e{%5gUCt<7{>;f|%z0$Tbvs=-b#3^I|CoE) zo;&`h{rs_2H~!+`QR$PvzV^y>jW=BXy!d?b^)Q}!UOei_b1seS_THZN>>9fH^Fz0C zrH5bo%N4uVy>n;b=GlQ0&s+QDYgWH^$!CxH>D7sSPx|`~bAR-cW%FkDeB!%Zf0tkU z+&@3P>a3ribill4FWvLd)2BZ9)F1cTD|FlVorQtd_6$a)?N7b=PnUn<)>C>;{lz6` zU$E_|M{?Wmc;wx;ZoB=_U;DrFbH_Y->Nj7wV z&~-rghD-K8?R&>JeJlCfvyMC}`p0=UzWR&nq9gBIbMwZ(|K%U&y&+!nXJzTp`^)RC^}5+RUHQ+{_nz#=|ehp{{g?# zvj4{RI-~Est`pDans+|1H0PbOF1_Zm-urKgkM&;vyT9$5-tg+mC)XbMuRzPIFFx?6 zqjwnorg-jY7e8G0f6M>R-dh02v83C&EoNqBCX2yhW@fOMnI#J>W@ctt%*@OzSLfY7pWh>*fK`v{$=>32vP&zZjZ(jhe-@~hEnVcLlS;eBF6jKR zmZ&m1eqY2sB=HEK>cxA(f0eVL@rv&f3lbiRl1I%LyEyZ$KF09czEf~uIDDaeSzYK^d`k zL8qp5Bz8VGqH*6qEy5_Rg^By#~MQKe*mPl{dKYqG{E>>d^2>5IpT|lzubrb2}OEl$x!7@e^&x-~k zROca;o8S6K@Ti$o>PfUS=BTQwH04>a4LP5#_Ty;qYkc~lF^ojsh>T^*Y;Ectd(-cg ze?qknuTwsC{E=o?d-52+vZx#GO@SrKy0H3WlZ@1Jp|C-vM7ibKxU{%z5Eidp>76xE zN8gr%Q^Zooq1*)_mI{SvyKClpH;jPdlVXm|mp!G+k7(@8%xecA_w~Deq7~4H zGf@9}?Arkkf9GFEe^Jt=eE&Oize_pq(Bk{qY3xF{z*6x2Dgh+Lju`gpBR1QSgY$Dp zyklsk)>VaN-=p_@@3SYnU2v+3TwzHluG8Wr1A1lqSST*-Bj*^xvyS4fQH4I606aj$ zzke_gq{}feQMx9OeH3KUL&x4pSPM%+-^vV9rh+YN!?UKK=b3!b%=?^nBrU03ICYE> zsr6(+4|}2u{V-}cM6kN|JuXCCI4rqvaifEIjbd@bSKSQ#IK=BmzVzX;|CAjM{O6+j zIGbScF2x4&RcKrLP1yINdx9HN2u;Gy78}p7vhW+tZkl=|_UX=|a8%^BF6iTOzZw&*z;lUp9IGflEFNt?}gZq<@|t zK($|$APafAV=@F1Wbfr8OXZ)}f@wd(~mbZA1S^e4P0yTw_`ES~8qu4m@`V}!^rsd~^! z!ms+GC)LfC^Sr*)D<8de#wT{)&h4pe!h)en1)3(jBuW$&+zeKo#?wnrzFO*lH#900 znuP-IWc2*`*+!iTmE~83BmaAaXIlNE!d3sQaEM5)_pF$~E{qReJGEb9Tz|OuKIg|H zdmmb`-`hpFiLtj3C8vY8?|$g2P=1s%Xs93zq$#5(&(0eoE@hT#4ro`fHLAVK)0~khB)53B zxK}`||04QVqNKWt=9@ba=TD$f()YzX;t7(G2bK^Pk6t+Fi`S-KIwe`Q*?(2|aF84o zLd!-Wg`t!wP5R(DH=3^q>v)bz|H_M8XQvJa)mm}zq^H`?uIvz-On<}PxyPtxYeTm4 zPHUA=QE2d*JgbVk!xCb*h@8L!vbBJd_kfEB(E@t5Z9pMQq?AI)23 z(z@OHuRAkPX9Vz@RLzlW*ik%UbCuRikl?oWfT+qrZC6l=k%{%#W@D=C$b!&KO&C+( zXQ_mL(h*~t*% z2e#ho?{gYhz*C3nj*4e@O0=CCx9s|pbO_d`#GO!;ffJU7TR3aAvY)Y%@*Ewtp%#Yl8fx)g(J_V9slY zIudKoEk|a8jzQLfY?vC|vUWIio?zjDI$D|DOR8fzVa0N>N29}qBZ9N&IfalO#mZ_3 zg{!|yF{;3MzPv(YVcS^ajpFl|^%y?SJTWAKef$-#S&e8Q8`xLlVr~XTgaPyJOCk$8 z&QZr3=f?N9Y=5;G>E5CBCR_4bmR7HNesjnCNju?l!=#lMH029gU%caOguMF2 zT*aS?TW7Qq$d7I>8=RLi)!CfL_LXh&lnuQbc$k|GFq%h1R_KIA2}-jzVX49ETiYI| zyy!}_&Z}11cB9$*7T|W;ic)m*!853|Z8U~+UyoD^E`RESt50xLq!EJU-Sgs&GY=b* za8cfvb+dzqY>WFu@B7zbEq%lV`c(69De@N<%dB!63$Q-@?QP9>n<6x&z-vYk9sq#x zuLH%!!qnFEpTGZUhO`vy*E!I8kXGD@UF?mi+;E{>BUb7%8RYN=?LrAH!&6oi3k2t- zeDK!x{eM6P+6_Z7R%}BJb^I|`il5k4d29$~YicEw6NWTDByg-mRPmFeKJGug5fYVE zEMJVk6QGjND6D;Waheh#zxEVNtUcc(ykn~Jl%&l9PrD9k?4pU^YKp$!?ub}c6EzAj z@F87xT#rnWUQSIZLK@Kg@Rdf&z;0433ZpZ^fqw@10s45@#7DKzuoK1e9n=s1;CQ&0kDLuRrN`0~CK~B8{f5p>RjPw3rqK#w< zPD+1PwW$k91s;dF@c#7iz9vUNYy>HXK;YrzVRv93Ngs4y; z$M^PT4r|dvYxwQw09DWPvnM<9ygB7`BvbD5-Pu@V4gbqahXlrzoWF$WL)@@vL4W1} z^!Y6|I;*-P1r?cNH^u<;!cD{!c@kG&h780@P6Yn>Eu|7$fz>RBAYGYebd!X z;9uQr8oZ!fxhm#AM&h?ij>1mT1`(ltO}pmFp~lyU$KOj!M(_ozD3u=VQ++ViRiM3c zk;Inh@{`nR`kDgpk&)l-Q>>%i?4I~s7l|H0s5;l_&&@>E@*u?7@2DM2Fn>!eY~!p-Eu{~ zN*0HFtMjE}@41@G>+Nx`lYcswshfPJ{2jW*X5@7#LH*#Eu6*aGJ3Vrt8~Z00)Omk1}dwAd01Q8 zQKrzvLUr=%IqJBR0>|JM4QgvC+1R1ANosFsvmV*4xy}s4L2cc?6>cyL!(p9};_UjF z@Xvpoc`CKbN*Wo@BGpF1ga5hX5wR$}p`CGt=kPu zJq;C=%&gM7HG66%;eUnFM2*a*gb`-HX<|(f!jnqks>$PIW|b~8C(NnC z55sf*l3EogWs*hAlz0RL*5qJ-3>y{Qn-kjPMw1_2>nxDWI?DCzQ;xjswNUt&ts8JX z)d3Cj>a*kXuk2!6N9xveOIgDcQ@UJNd!57YG}%OHHh)M+UZCy-XuZvP+>Q}kNAL5S zNgq7&!-ZA^RrTwmq2?jx5o7Wk>jOE`*l4WRDqZK*Cpf>sUAVw?Q$>GEn46dHd-$QolV&0V&2S@{ObmO4ICyJb8j9^zf3A1P7O?7bFc{N7yi9&A zk$+It5v}?lwy!bS0GpgZF^7vfnC_lRM*G1a;RG))RWVnvRO0m_J{a@|x!b4g!;G%E z%dzH}J$G&DBJYfRKqW?}Yz?O{t?E1Ka>{h^BSj^F;)6iSsxVp-Da9B^{AhZxtoUym z#3FuON?{^63O zc{iEpu%LGQ#M~A>420~Or$No&tFK&fsO(H(JfCsDZTsVYjz}8TvFtdKe=dcS=<2Obz9B|eWfwAD; z?Ysk;NySvZ?b;nOu&~-6Zcq(xhWhbQ#3~|duO$<@rY2G9oT@Zs)es@CFPjs2qU|pI zR)cF_7hj+K%Hb@-_7_cjlPkUH>09;(8y**3mL{|)8x#`xr@3Uk*6bO3*X$vA7%|exFHEVVW!7oH1o)JmD|d za(!5)m)A`8lFP6Lau3lX+^L9;V0RV)!H|P_YAGeQg9V<0eZWpt6WNQ8$S2~Q_J$*y z-s@mHsUqv@Dz$`|vPs-@;(wq6vnUg+bbk&paY0w`s$O6HY>NPIs~@%7Zo*@GUHWdD z2FXPa%X1dBmQugY%Ky@B95kl=iml9l8H1ijP{;_)Dkf~#*iJ0pEq(kPE@~sMJiri^ zbcj+*G|H}dINBAA3Z9ACotk4mg|k`CYRAO$!cY1ej%15~dhc6+>VMP19Hl?UiN)3Q zmD55D2VA3;L?#q&CwQg{T%rgwZH@tNh`x-z%&>{b)v}rU%js6N}} zFHk941mE^n!mW~M*2Af)$31xKRG#3K;)d9z96amx9)DW034bCRB_flo>vS-sh!!Bt zrY;}^oa_6(q!0F?%|uETMa~^;dZ1sip;u7*Xh!*N=o9#0Lx_#dV?>ILV-=czi1K~; zKJ)3hJ{#-Mc`_0Jm^bR4>L0RDNm+eDU2hs7whK9 ziJ>xnPB|n!5Pt({(5wF*jzNZys>l|9js8_TlGo7mTK)iO1ZIM$;tYD0Rb707I%eFw zmoRtfoe^{SjY~C_iwP#V*jFo|pM@!-;g|%sv|}@*m8dx>T>FmG#+reWk#b4wR`?N+ zw05Tyd~Hb{(t95_I5M;19;3!Zysx;;bsWUNBzJhC>VK4lr7F*eU)DXEqPcK7lI95G zk&`M#3IWf zd}&?J9@NzqrxP@LoZEba29H$={JAhs&ib)TiJ^%^NU*(C#S$&5e|cNdYvQ`0WuV2J6NkIP)r&ymk*pagtT?L{Xf~^M92Wk6P;J`JEyv+RvC^UB?F;w+A5&;;gp4 zBjrI-eGSL+1vjp&wt`V;clmFyGaTHdI$W=WmaE$DUp$b^l2z|Qs&2@t^`$q zh{$Hjqdb|PEFk|T$-fwuY^etB9YRHIe!k77^cgq!tTN2OCi)LhlEa8ZfoUQX23Rsn(fct9Ap0q4gB^yNRlfbN6;pc>zMT@DoM2nGs=YuH49ux{N&41oP?c}el zf=m5tf!nQny(*>3tKGyW-z~2#zJZpR?}r|rI(lD-Qu{O(S!#(0vSsGRbQF*KYS(E@YC!J_ z`+9G<19L(q`CUWR;a0st5$sw)SN$Ck2+-OugZ%eTX z-+dg*$3ysr=N$SB`#H`WJjwA02;VDDBpPJ zI}iVqK5Gc(RDL~FHGdolnzuXjOqhfBqDDiVi`XtX66IQA?$2r4^)nJLiWwC>sSv*W zHyhZ7pIJ2xpPdU9I?jpMPlI36?|w?u?5e%6;^k)Pb3G@jheyahIN3f&Kwy4nb1$3t zOw}bn5O5Y)43BGp?0s?PO_A?7||j^^fV<9#DUJG z?^S&>zW2%XbPIJcUY^@pNMQH{?YwT3!4Vx%YTEux%Vm>vI-5SFR@bLgDoze>2_x5+ z^r@!R=vr^HX@51Qj-YvC*mw)tiZV(mq$jB}bx);O0D4m<@s}j&@0rN+`w2(wsbwSC zoWge5;b8gMur*H}Hs)Z)rL663GT;1pJRo&Q z6nm!bXoMyTi^XbtM0tLcCZ1Yjeq~xKxe!$9qzGU6AaZ}x^Rbl zXM+%K%Dm2 zjH}}%ZhwGuzoW#&^a9kRTr>D3TCFU{(NLA9RmdJX-Wk9O%(Bdif~e(C`1t61XZPH% z8SZi{^CuDlk9J2WDLz__ScR*0$^nP_2}N_)aMWwpQQZwTVnr8X-@L$5E2V;LtOz|F zbYS7$M;V!wX@IWXSa4M>9{SKd3&2rvjpUag6n{hKE4k)=_Mt+kq#bfc^rGQ{5{z0J zuAdR^CV`MC!O>y#c|+W9O0}B~<8cZuij@L0uNFly?$?e|FF<*4fQ`;F5PK&dZQGzM z&_A%r=hd7&f{AvjzpKg+dYd63JpNT)1KWjvXQ!9{C__$`dcE}wi8q?-F$}(ppAo!-5;1qDIG;llORM8X-l~KffsQfTORjj@ll*AzB~094d}mqWjc7 z@T|Xol9bIZ77XB!FwzT!5Q!aZ7dgh1hw?)8f@}em9KP~fOqUH2pIaQcPn>`wK*sKv zLeslGvHx4AsOu`hWe0SMFWdkC(!V>!|9@o=s63H%A+9~ST(;W!`Eu@P|YSOmQt%(}W*ZX0b5xV-*&quEek8RBlgS?qfh07w_ z##*C=TwZBU`j<8OT|c@C;OnU+J%+!&qR~C)ZofSYD6DHK@l#Y@0f_0$EV=HNO@G_c z5g^4{%`6o=zv89zO<~L|Uj9A^$9-L58@0(@~9xfR0;^#cVQeFo3YgBNV z5P4`8)6*&W#x;N=d#YFN%PAGwKIPeZ652Wu))xSZ7ex1pg|aNu=8^!#j%l|6HRH>9 zlY-S2#Cd|=Y=icedtR1Y9iF2egn#sC@3!37eryLGk`nqFROCsI3qMa@I{i?2>5sL} zNe*twh7iLZaem{M?^|iH`R22039w$D)>KTw62ouY($zN+>(JCx^!HC=fvJb`d%+}k z&NZ#+X1t@COHFYE9~FAFa@-Bv0kD?}AjolOGjW&ab8x|Lw8SZaiyKzV@PB%n%oPOT zITMkhF!^@1O&I5h6rEKwXySf~C=3&tJat^RM z!{>`fpBuR(Sr41_KdC1UPPY#RaM{0qsz@P#0U9&gfn|DRmuvB9RAck-@P@%JT6@uP z)bMbHMrs3{7i*wn`r!A^!G8`Uw_T$jx3jT1;oo^HM13Smg+WW};;Jo8Db5s3zdg(6 zd>wIVK#ag<@tT3yq!1ci;tkil*lf5o?Qq@Gv+}&37QWWGVBipfrpMw+CRxgb%-s)l zJz-c%qtAF}E;4bZeB-Q}hxzr)yt$Kn$aic%Y?7mS@{TTYkG2Ynwtr!5D=YD}KW*nO zs3bHvxPW1y`-Dd7i1$4`P30GsBToe>o}=}ggtXavdXvZjq}oq6YoNOum;xHSyN~74 zR=FGlz-MCGt*+WS#Fk^t$h<9LbA)Q0k?(?hgd^Q;crLjX80=NNBy#LLGjHTDT?<#> z=LB)w3%`F=;|z*6(0^ZP(c~o!o6Xk&BO}sYpk{eu91RTRU8&48tdx14Y zU@%j1+@1p5I)4&spre|CMToEjW|c{TOPx`QK9mmhNWT+aD*8+fOrzs%m6HA|E96CF zO5k=g@au#}P>s(3y;RFTywrN-Y+f2AtympSfqwyTJF|d0^B(}cR4mX-)eV)HrAw*8 z8p0_d82;MMy@uq{hlsB@zxGo^u|WA(@u4pOi-kjkO@EOMXysUcE4Kf>=pr<%VQwcm z4Jbtj%X*Y`iM|(6Zsg5h z?36W%k@%tjHPb=$aF^bVe`$x+`gT74M6LsgSXk&x!{Z4D%ZF|DKKNLz_YNOhlixP4 z#LzgWU4Nt^*n;2Rmq^$DxVP0m24?Y|I7o~PeAI|8tUU^s25isW;-rx{yf9w-!BAG6W{Z@-)w zm<8ga-1m>jn=Br38*ZClaDEmQe4KRP@^-#+EPq#SSN;)SH^l&uf`dRhV=?dBr_hG1 z!5Gv%bqUunMKwRWZ4p%<-XcMz`x-r*7s;D4MO(fv@rLQce-rve_qB`m>Nfsx4H_-E z5B5B_O#1Tkr-M@SpXM7UL`@-yKh0UPKIm#cC#sc20i9Xl%P(j41?bF%7vxI}g*-`0 zaDNb$Z!-~b3m0-u@}x=vRii(C4qUSkCL;>m9g1#^^dkG0GoyqXW9(_BFS^<4F%orI ziNu+Er!~_Gx2zc0pKw@k?2<&h$XB|J5~(Xes*G^+of;|B@WXmnR!HvV1)Z44XH$av zz3wK$k6fZ|o@a8f81Ct#jiCB=Eb$t7D1R9Gv=iF+K1fCQ8$Cu+H`Z~HEE+d*_p?D& zqCjsphm5y?t0?m!h4(z=mp4NLdNW4xS9EEYe|WRQa*FbS>=s>{KfGCohmAd0;Y7Dz zTV+Df+%Io-u`7x>UshSf`ugFQH|qv^Gv0rAvz95uU*0S~*u7O$``vF}6Dt~NG z;ub$eK;cxhbrylm=}fxyMQ1mM(W;3r$fq`7kmdfKARjkzcc0wrv)z?+D-qD-NlUJ;FOBw{vp8A%z-NqgyB3JQu2b0zO&cd-eshzL@qaqg4>Rp} zY$-A(Vxh`cWVtLQqL};)7ubcK1x74xY`khpvK$vsyb#5Z;_DIWcv}38wID^8~~V2#;^%%wG*YbsoQ<;&0Ji|KtYY&??p8_-=O}^nyGhA$)~UbI5QbKIQ%h%_J5`b0pp8$->-ovT}Uee*xfBL=U;3=#fD~$CJc4J25n;lDe1!B z>7bHRSi7w)pAFnm6w*^EEfGe65-brzB@~p6+*`;T-{hASA}oZ+Fo!QJ2;nmenGOv( zp>C&KDlqPiYLe0_%YXDyUZzZ0&;;EhX2eslwvH<8F}N_fnmTash<}80&Mih*2s6}%ES?>3`7~vop3;<#SYe_OK5$&VCgcVK@kI%sLJr1f$0RbhSnGx&0#*U7}U0=H2fHVeH=dXzeNq=q`_uvb7oIP?TX_^u1ep0NI0vEik?+ zsL#kS+l-KClk&^t%ZfVZ#%Y9Sx(vk&e-ur2+}1FHW1SdD+k?fUI^6#HV?G)zL6yI< zx_^U1MQH2dQWc$f8=#lndhyYca%zrJdOE7{U^;-|85#@CjUYH0Lq68Rs{{jvO+mmu z%9UPYv^oZr<+2aL)hbQ=di}$Zdeg_DCcs+w@tvE;_{lIeixoLm84kKTjOSs^Z43S(TQUlr(j|%<^?BGMRhLru4KZF}#iLWR zN?tUjRMuST3mp}ydzVwZWXEgiEsng2Khvobi_uRIZgR;T2fYChD;NhgmJbK-UVn-3 zQ)G|A_Vx(F*U4SNEfV}^-gr^id^5s|Jln>UxG6wm=iSU-NKo8u>qDrF#*#$Qnc_5? zyb7d5o!G-UO$xa2rzPoAuq5GE@M;o{V-eEc{&rfmLQ~-rBk+(>VEM~oW9MpXWcq8h z#(xZ~(%G~-6-Vx_`Qk2^GHu%b6Mt$wPb3C-X@7;iP-3}R zSl~wEy6~{W=TlQX!^ZaGZaotT%ACE>u?|;+-^`cq&1U4}XB#SZzJ7cj%i~CTtTBWy zSA~}uyUTJ{fDJI#W~^r85wD%-FGl_>(%>IQ!AZ%3wwm4m3X9kwQ@&AXc% z>#!C$??lf0;JdM^&Uf;}Re$XA_INNXb&3a!<5zO-2z*O+Db87ef z>P$qd2ONm+_%wf{6^4~3Nzn^yny~1S3SVcJkyl%K;bfZ49`psrwGQ`uf_;&T3rAa7 zcJ#XLHtUo$S&D-%W4pO27i+@K3c6TdgRh-+u9}+&JqrEW4-)QHFn>=*NW&}C{0>VA zKSTX_efS*X^`lk{glLIJd{*-ohAm=f3^w3e`2U*K1^Q zz2gl4G8Ot?j^!e5B^EnDMbfF3Mt9IrVR4EUp346Bu zBNz^~=$P|y4ulRpnAfn0J)oJ(Q~hgVOkfo?&Brn=ScAmfyS|k1-W*QIC#@887#g(U zyuzI5@6xqn4o?OXrUrP?eJN%UMKk2Z6t#gZ9+xICXNxhC{C`2T(&G;;xu$GoOcAjqrBZ(2xL!k9GUiID?6l?A!!^n^;fnY+67w_)9qlO{j(;~&AN1R8`@6&BF zqUi40t=7S7H-F%2nskt|vNUL2olUDy;VbLQpl9A?v-`Yk1&aYc=; z!8$+(tpk@QBfye%hotTcT{Kf2-6tt)s<{tMMXr72AJf%b&5|J17opZvnWJYPyB_gw|5h^?d!(J)&;wkKPETIU)Hkb@FcbsZBxT%-^oB5{L<= zbx^b=MSt-Xt7cJY%SZ2qj?^k$l!8n2H)B$Z%x|0)$p$=sAeNO1^EI#X)@*4}5j5tL zhGk_0m5>rtSCOu#=#?4;CzkUfSidhL)o4aPcK9$9nU!Q~FkPW}QiQ9}(=N{=xEP)U zf3(;!Dy2p6=|fk8e0fVjfqJ?bq)BUYL}h80;(rh<6~PT#<#|!La=O*898jr(C$%fu zeAo0+5k{d^e0o!&e-?*QPP-0a9Op319wrXiKsRNG2Jj`$~sA{YHe2#Rh)1bSB>1Dr6VrmZfh!HRW<3wGd_g{E} z&4lSFCi1PARzEK?`H2Z9^ycT02=B%5`{NloFx$Xs7`g_v7RKx}Q#hH(rZ|xcEK=ox@I&uP1}z(0y+;(RRY^B{LoY=(2po$~&;7x_3ts zo?kdcWm&5K+8zBtkDA2TiWW#F^Q8fl`#R;)VP^h0Ve9 zkuBbn&uNcL%T$-;WQz6J+DZz^rGLcOXSUcn*N=7S^rFd{p&#DE&qlD4*L~m% zUk7zAlT}j^w(7JTis9x^rfdMKSwJTXy5T1FoH~>){GM?a%Ef$KXtu6p{z$K%lo4qk zLa5|`UFpxs28HBr|B}#)fg-ZDnƟ`LQQ__OCxIWh1ea0HkH~r%s(tphoG9|u; zc1rwx_(3x5c~g6KCt5P+)Dw1`%aL?ITTZxII1-tTJyWgFM~X=p$q%_&3(%eH;K+I5PjY#P!@sE<^Si&%ea>)3UL2mLQOmkO2I;lNzw9`Ykw-jgp(q_pYXM1FdC_sTe#ptfZ8Wtk;2vPgB`;&{~B%n zwK&brG@8Sp(n2+SfvXQ1-MUq=0#$&)Y>q;FNomM(lbZS(kv>PggbHGT+ZvuXO+3&M zl>SC~{HtuL$9dK?Oq~rv!rBUJ5>#q*{FlcHEfl#`JUx)Hgo6M{hkqm$2`S{L@1e=Po1Og4?nK8;!qHH&HUPjRbwk15%q?S z5v@)%=I8DVs5?I|O@F=ErGP&Cu-l0}*baJUY(UoUR8dJBs`2KqEb+$UaDevJhsf)| z)5*CbZI@PNo*eebJHFV{DTQjx`pS)s2=$)mVCQN(!ppzh+50(F?azr?AfOC@|7tO= z-{WtV=K4K@e_z_?uW<_o0Q_a4pWlW5zTU}S0}JYpi_L$r`hUsqIsLvG#h)<%^EYc# z{4W1}rskjV74<*oZT_zQeXiS|v4`<@Gv9vK|2}i-FLy4m{$?K4@ABX0;rtmxIR7~- z=Xdq*lQaH|3%vhgs>bhG{5}Zw&ln^9n<25k%YPq>_GkE0{dXhNe$VIkZz}(c3g-X# z-tu?xzu!yyYk!Ep2LOJ*v-Z3C_s;vDfhO>GUHRYjzxU$)3~8ai>(l+N|Gl05GfE}? zzSaIchktLU{u-x}f7$ z$HL6X@gM6y0-ycQ`j7ud0tEPjjQs177+?WBWH5oRQGWyedA1P){`vYp0{9*(+&}qO zyuH2sU!}_x@C%}LSAZN-;8F=?;O59L$P*9w@an%W1GxpVsW5q?W43ZVXTEef?K!$! zR-EL7@P`%^NOYX1tprf_2;>dO9YN)_B2f4C3xbC4LqKgJkhfn1^o(W#HTFP2fy4k& z18T5={D1t5Uin{o`u5uypswRzdLSi0jT;aLAcH_qfEqF&Pk-ni2&%5V{-p=9VX%0k z{};UkP(ub}2*?@`44{VjFQ0!;5wSxH)J^=MR|IMRKvIGD|N1{rg9l_A$Q%%7pauZs z!ykGLpauZsR~{aJXn#Qggy0XoE|4Q2vOr#eIDY}bl=17)20n5Ef&Qa>LH_tGz+a#P zaswptkLU70W`HaLDFs6RTY8FLbp#|FNF9(jAWcAEeoKc1#P7G){sjh*5g^_`ME{F4 zzsUc~cKr)TAVolY{u|w2KW7!lCXiGh*?*MNz+cMb{|#6mAAt-5=>uX71nlq9{@*_T zfPeq~f#2`lBys?N)C73#0NTDlKLFrp0O&bm0e~xD`~N@$_+PsJiT|Ik|NO5%-wgQQ zU;p_X2OGzKuK&!;!tp=t|NnsqSCp4PfW`f_Ks$nzq^L6R@frv#^e-DJ{_Ua}_<-Xg zrs<+$Z|34|=wu2IGO;%@C6@ZN=DRYm`+wr;IA#j$Aiyt6i3+KDtexrg*zb>G5W+?7 zIP}_D97O1%WJN*P#akWn`_T}Kl{ajB4x=FMDi$y>gjpVO>hU{4w`73QC_;Nd8f2?p z+cN;QtR8nlBNhYQFw42yzwlt|;VLr8=0hT;k34W-W8L=J_PRA|9l8+m_5I$0_|E4Je~3}B<2Wq*VQ${DwvK{Ad#5Ig05 z60MW=9THbsA3-=f;QQZek&In{e*g(Vur35770aQpdx@ zAcOZv2CxR<-&>=}0Nj#sPXK19D}R_b)<(a(tgcud^AIPaS979qVwR+31dtkF@+pus zKhEVW$~-x5K6G6abF=UVnQeN3>7| zP&23?CMXN(l=dDGRZv&tj-2ShV9}ov;7RU{5lkKj{K!{SxLm4lH*(Ap^pKN0`8t8T zl$P|hLkv6by(hVA-IgB79vZ@jw^L@!FOTv}Nd$P{78HdDGkCRx(i6P^S18op;61t+ zJ3PZbOq!TPQZ(Wu?8EC=%72L0=*c~1-`1@`?ZFKY`67uU`JmH32oXYr8J<%cG%`JQ z*H@aR=Naa#NQ{!kf=(gc5DURyB{Y50pib;{7>_-n^~;x{E~AT<5B0g*yD#o9yrXkx zq`AU30%#Onz53jy3OftveF}KOIv=a?afkvrcM1AbCimGW^Xis)Eq@;jjCt?q7N8@6 z>|6^EVxVumtXWwffWI8-^3Aw`K*ShQ4E2>t4pmf|8TMSir%<3hMRaJia5q=cf z^)`Kr^pJTckQHs*tAC{R!cU*oOOTk5?kCw%k0aDkXl;M}S%fWyD6_&D^iJ@l48l0n zONvL_P#y@BexjgTfEb)B0KX4(!I?(jqwbKA@>TSO(55UHakchx2EeSFhadJygh=2W*(XPXu|Xa*C^8U4%s4-1 zO%(is4L0r?IEX~eq>xCA3s#@TZa+{m{S@qRj+IDxm>;`Pkh=j~eT-|h@KyvtDO#A! ztNTUry`eh0j(<3Ud%5;GUEX{c48+O)28l?=37dYB)eJ7kP5Zl-mOb@ry??yaDrf(_d-d{{isz}wyX^ps zB?uHF?VK)jNmXjX zRLezS1Apk?Vz~(ncc-(W-g~|=VsrzC-~!*9>AJ)Oc_K?%&mF*ylfnswetd3)EYjQU zvi^r#V+JAoXO2xf;?R`!dzbDkIhp-V*(xZWb8AINa|_o;mitRvfPH8fPsdUW7F zWr@Sm`4;4Vn8j&+l&>s}JYO}{abbhK&S;yOOn<_>R^NprD9b4e%TCe?mB^@9`;j=o zWka(B@=35YT3(qLE|7Zuc@$1}A9lwn@R9oszY1oQhJHZVd_Xx9GEjP&z=yv;cD;5@ zhZLg{uv6YAeAA(T{!&!%qkCR7Z$^wK5#mk=tz+~ z`^1e3&H6kanJyKPPExltQWMDHnvAzg?wB?$8CJzAy7)oC6uGBc>rhO<2yCspK|0-7 z&xg0Vfmm*VEIbS?Q!z2*Z-Q+xo|DFbOn>rY$a*FmC%VCf7>hDT0gCEt9M7w^Q+c+^ zlK$uYJr}s>8PSg9S8^R(ZadBmxW*J%N&V39XY+ZL6Eg&IK1@30$C(VcQG)8pFO~8S ze07k$wjzF|Gc)&efYu@o<_iAH46D*Uh11Ch5H{l!!J~wEo$E&k-uRi=}vNiUrEl82ytZ7X?;25u-EOYA1Olai%|# z9crL=!d5lNvelqn!oPRV2e5voC&A9Z*leXo@}cRG(0A1@+1g z)Er1U=4c}{L7|aDzYgMwv=@iGOMlT!iW)!Hd#+Yb?z4e0;f4Sd2`-248`ML#a~Y_8 ze+~L{dHTkl5Ze(F6y0n_e1PF|;aco?y7t3LY-R#aQQW+fXuI}aMb{ZS!|A-8DR7Lw zIweBcJ?Q$&0?jcM27}|~a$<`5vmmTV8?_&IV-ajG<;PEbGnf26uj5N?!GHVidplpm zB%PsZx204KLW;xba9gb%G2p`~@shzd1rd2~vGv_oKx;(ukFktE+d`zxd1NXZ`fW8& zc-AjxyExyTZ)<)M@>j6Tiuu#S4TS?ta)mNIv);SVd&O{YiNAak-Cws68S0hgVA$G$ z-SG}~Rh)bE`JB`8w!^^{_$({)%sbE9!5v@t-@Pvwr!Xx zM$XTkhR4|ycb+-U6peXSEqH4kRL_aKjY7xPEKd@vJc<}Tjh~f?t$!{Y(fcK0lDNib zHF(2DeeQlq&fIqXb%zJwj*|bm)Ctzz+_VzPHjVCTMd@L=4SLTe8YGqj|6%a<6+MY} z3B2CM2-c;`A&EBxT~R@ogyrX5f=PP4h#N z$hpSiSq)6?ozhPkHL@Z8pzN7Bj`P`IpO;|qW8`?SEsTh^lRkF_x$3RkDtO>!4V*{$ zmaAa^!ssX9P=BeRG^bGGTvZ4E-B5Y=|6%W4pykTav#>F+7FYwp3 zJ^Ou*TGEVKy4@|0T9PGokB9C?a~}KX)^y!l*H!nbTkUQh&LWV&3O4ZrFWcZnVw?bu zU%|_P@N@_)oWLT%#=u&3STTZ~DXs|LX4>|MQPMoBW#J`ZNFek9_H; zK6s({>W_cC{NBIveZS(L{#XCqzxcWje%;PRrqQ6hrt&jiskAKlOe&3(^%D2AxLtpmt-~OpT`#*liop1jK zfB5`&{*fQP^p}6^;wS&rFS@_=lmF&B{s|=X5B!tAeC~f|zvWB5{p)W3>fe6(XYboz z@xOlYU;Ok>eDQaD{V#sk?|tE?zxhMo{hhz(jUWEfpZ!n%%I+Wf`pO!->aYFS&B=ckf8cK(d@#BH@4xcLzvn}juMa-? zfm;WE@FRfCe?zF}f9TI#`M*E(`@iph8h>ig+_AfvA*>ivV z`X7J$g>Sxk^}(uW!HlVCO6LfBuX9@n87Y-}PPJ^Hsm_ z1OM{vkN(*o{~vy1@^>beetPrDFaG@R`>X%&ANu+~^N)Vu6VE*U`Cs_a!5{pV!GG{i zzvO@UBR}yafBIjoZT-C;y#AyA?92YQpZtHVzx0DY_s`D#(hvQgKV*LS*M0Ec`zi6S z|G@Cvm;Uu%{((>bhX3e|U-uP%?pI&g`?_EG;aC2G%l_7%{`J51i~iAf{J{VIC7VC- zhyU?czw;aZ%ky9SozMKz&;0A}`TpPbyME@SAN{#=-~8vR9;w|xD_{s09_H@0qF|F56@%-24R{}KOBCga)WvD!e4@0?p1|I>f%_}^%) zK46~4|DW&kf3Qa{L4WYbPwA=QZ2RQ-A0f37t@&31|9hJMc@O^k$cHx%X4B1Vw7cnd z9}Ti}wteQzM+PtPybh{)9fU>BLArli4ECmeFP(aRts}q9aJD_#eaJ6~rZ>x1Pn2#q=@VedgMW*B{)u zyY<|SuewZ>t`-G;{OW@Vx;CQcN3#L`x48c+U%GvN3%B0d`qYD$x9;A%ar=K3KF!}; zNliTP)9IP;>O}fDSUdZPwSlN2WxAC*Pa;^lleO#^K|A1X9fDyc-Lf$W8L>= zL(Izk&bP}GefDd_#f^75w?I%nJa~nA^fgO&zq2;D{5uD)L>tL#AA5gw*!=hWs~f|Q zUHJImHS`>u-tBpzZ7oTIwNFnD20Jh!{2t@+V+iAt8Vu5s-eZixfvNM+tsP2mng561 zIjAS*7&mQ9b8+~MeZR66JX60UU3Bg!N1d;pX}(glCEeY5T~hHSQEYZ_uy!2^e)ph< zbK&Q;BfGJr7~MWJhZ%nzMeL&;607*+XK8+>A;E*U-{vJ0U7{iXUbXI@A{L8EP zeC%gy#HsLU7k=R*1AN!}m_F%a`Z%raP8PhW9_pAhw!HiyI zzVR}ysJ3gcu`50U3mCWtbTv)$VBE(kOa^8Ea!st_i{Senj)1-9e)J=Q`?!1Fl~H(q zdwwvT;u*~7!OVXb^qzFK^Cc#AxM1^)_>B3)3_SGX$-@WK=mTzRzls==J%b=VvRnZ+x#7uH;Z%C<=Mq0+t9QTg~m;r9SR{cb+;wQm702sw-ba(K9VFn9h*%aQSrdf@N@W4jl%k*Hpzp)D(GFv>^FhMZSHACP4H{ODvo~O4> z4>tB8X8V5|^O?N>8GY?AuF&0{#CJB>OY_(H4dRt7&Urt4-`Fzm+-g3s0^ap|<23h! z$ruK3pNjTiz@S9n5Bi1i0Nl(hELUT=(MenE6Dth2QA52k@^C8gs@4zq_Q zE}s=kUjP+cJ}Z~LAmW$LsxU*fZ~~;@Nq`ev&<%g@uwnX|rICjl25+Q+`{m?dmkmID z|H2DBQ@_vq?AI)u>^nhcw+0)d!MS0UzJ88KGH!lnwi$@yAM}>~3EwaEriqao!Cy6e zlC>aeEx6SNQ++?&+*}-%&3Ait~xwGf_OaEvC7#wr5u`%18ys@!Afx&y^ z#}|LjEU~yUlXVX-e15AOkI;L>aWe|Bz)F8`qaeqzostUzYaudI|L|a(651rW=Q&)- zI|%vZ&Y(9phnugyI;_MjxKDtC=J23bh$FiEYCLmm2{Y6EL2MfW6dI`=c}Ki@rvxs3 zS$CSPu>L?IQep?gl-9)b>C!QRP`WJyqRWbR@ndV})+!>)R%5XCYAuGZLJnW;jst&p zzVqtZ+N)iB-hFhLC;iVf<+|?%7@USQHG2yggb%LT017%;hx?vBMxSTXd?`yc+}qwe zs^dL|kLdDnDfPmwRjo8z)9@QK{jmD2!a-xnsLBAn#~S8 zS%=votiQNKoVu1mt{QXGGwLR4YCL~VWbx0&4oSt!m5_IsyLhICZs!7aTe`2-YQVO& zL5t7)L_l||emi@}Zx#M~^=!{A%R^iK?bWw=eETWpECrS3m_TP^gI(!Ht)SN@yXW?+ zWYc7c;qdhh9fc*|C9|<4BQWB@W>D<22ngrezbq9~#`k-JwYybXE6pa4mRf&H5B4XN zbID04K0Y}Ac=Of;_!%u(fO!v#PeP1r5Wcjxq`DjW;+aomPf&*MIsV}_f zB(nx*KYFHxZvGvu|E$Dl^WA^6af@cgYKQVvv<6@Zct#tQu zoMoYG7lQhHviEp8dbqvM0BStSA((!7C1V~oG1{W%Zr-@Ib?e?1k>WuB)9-VjT#P8% z&kpwCwu=E8NAwQ^wp)d&R=+D>B-Gairz3R zJk8X7SSA|GhcIh3vT+5l;QYCJk9W$+?&HwbE_!}$eemGH^&58|JQ$t}>dxPCYpb8f zQ;Yu=&zH0+_QquT`nh&*5p<3o(UKw~rD}YB+G(U7RcE;SlYxKVrG1(}AL%roFFKBP z^YKC9A+8wxdH-<8$+|mRSMSa!MUwG6XPao*#} z!GQ9k=*IzsF0CfD$`p0jN@Nz|gdS0*d_sAq86tzxxIn-(INx~;SG%*xI4rMnerq@P z7uJbdlW~~sG39@drU<9TlgaBJK5zKhV^7_F6AV^iQNg0E@YlEkA^)Zt!Y9I_GrL?3dE&?rj@I!+oq8@#kT zB9N7imwik{<`Wq4Hb(YbnvKxKI|#Z7vP}nEmLXrP zv^@0tcPd_-56gXDb7pBt`TU1Hl{K6{ONL_O$}-z7Tv)nwDK|%f-~%vZ`hXgF5c+kF z|9PL-9YMAhy#_f(0%0Zi6I=-r=3z;anK~I#0wUxG2EYN;Gn>6#f_I&FsYR_% z{94^>i(KpHS`C7nwI5zzYHCT?1|HgVB;B)34h1gt^XhKp+X*aDc@W$oTcEjnK`h=_ z1Py<(xIXYBUO%qLq%KXEyL#v>;g8uM+#W_n3m3~nYdxM#CgTNPt8olIwe4xFG?@A;8dR6e zN+~*jwq{%C)B1vVWiflrS@l#~kXY8L=i7h3EeXUbk5CC*PqKC}2x5Mr?q=^jE68{5 zz0j=C=#|}f+1(Y7t{-D;M|Ss2kH6?O`)32l^#)$UTJq{&R`P8vLx!|ZgPcA-AAO! zRXvBS2$4dBOgv@cW-GLT0e*igS$&k)wHA#v`W`ypPiudLxU5?E=qIv@ ztM|4i2jgPC3O#xKU=M5@jjP4HMGZMKq^g0PGv?!`6_L@bp99BBxF2g|SMOXqsD-0i zm?dFPbKYElQEg&;8)1Bve5}`Moa0a|RVeya0zdkrezp=v6)ot}^>{R27J zUDRzH*7c?PR(5`6XK58Zc(;I%gN5Qc2@ot-W8EdN8w@9lHLuE5yU_XDJ_8qY{yw-# zqRy-+)`RHJw*`M4%9;7VD#PEqmdDjfm*+rqv|BufZ|WyHOESTahFj>-3%xmbmVu)| z)N`ZVimNqNsCPaM-oOC;l9z;h6i~3;BkbgHn7qOwu<(a4ggOJ}uQ}c|PSefl?taf%(42V3JYd3j`fG6re7?0Ye87pC0V)hRuM37hZVz#RkiQ@Z$Mb<846^qZrC!Cv zR{(%;OK(c9Uz)+Dwz)d9T3p^~RvC3Pzn{ftf%tliK?s#whT!aY@{o3JP_R-Z17M=| zr;GVQ2){nKe&g=ewfnd4e)_?^tvgrmUd82w!H|DjdZusDmLKk{+4iLK8!>iR5A4d< z>>#V7NG9CWrEn5QHJdCtw0--|WERFU-J8HCRV2cAF7&SAELy?Uj94&#C|aKrZK;2F zGN|3<1&txM^Gx3v9p?{S)Ci+NC4V1fJ=1E`)kLA!O|Tl2aYz~Ey8(K86%PC1!+ z;M;$}5uGEqshT+g>H8o#75E`?Oll>qpVu2P;h1(QAJ*R9C$*9=+~QGN7j6d~lTAT;Z0EENtn_ zK)>ELA7a6*g4@eiSng(h;zT`&*ePN-%X436c~@!dq7y{=3D}5Z=|uE-YeAyZS&-;+ zX+feVYC)EBud`tv?r&v*0V(TVL%4jpgAji<89(w5DpC*jIKzBYr~5nHMN&&4!aIMo zC9>Msaxb6k(axXAINj$%Ww`CS5+4}yQP}8`=RVZ7@@O_^evB|}I@zh8DCVhl1ZazF zU?*y=4~(eTRdxHFe_MB2{{MUbU$wXDwEI5~eg9WvI`97y&OAN;@xA!(%(eMGyUxbG z_0}$$GiUDLhtaG~np1ixdpvkJO?Q9yDJ@n`JtuqUkdcReolFF+RPXsI?LnVp`{{_o z?36e6otc#NKD_W|5nkSbPo3l=HbC`@A=4_hqnQ0XC6dr2}T z*9o;%dlc8}(^_B{$7eu+7O1KeSlzp@`-*bM#L)eUMQl{x*oGx-jD+@N!fc~SUr^7A z30TH0e%8}zVw28UO1pGK1?XKobLRfi!36b0BS0VJf!(1dWHGDNPqS@0S1I!glRl#A zo5gUZ0j6T&N9lO5H<@yK?O}fo(f$itgL}81yZ@=Hcee&N?hWqTz5Viy>s!|cYgg~# z^V<60Q#bCvaQmhE1Ke@<>aF{q9^8IzaP`)w2cNug>-zd&>#OeE-MV*gaQp6=8!z6u zd1DLT-MDq_=1bRa+c-YRBKCjc)?GR~;QrNT zZ`{0b|I_Pdp1X1X7SVhTSm5dasNnvMYcJirdUtT=rMq`--`hg-*FpByja$#%MJrn` zZr!>+M6392u=O%N4DP*f_2x}#>de)b(EGd8zrnTJcRqdh#`7=SAG~n;=JhRn`Ro>Y zcJe|h#H(q}P{=NF*)#tbPsoS7(_YB<@dN=sg3tRLRwRaW&yLO*WO2II$ z-M)4IECARvg&5VauGqC~*?`rii+p1W~#>%jwB%R5Wu zU(MSV&r+Vgv6GP_f^!RjJjX%#qOIZJ+#zR@caOO_x8A1s+{llMcSDv5^wWOz)vJ4> zlhejShtR{HQ1*Yi#R2ZA$Zs}C9Nt)1i+YPO(cS6*%u_bnN9xeVpG^z850LG2EiRrv zw3)5xbTU0%3;gJz#Ghw{8NZ7*mMI+C)UC<>RYHBIouI|@M>X>tEyJF=5q|p6Cho$* z+$1P|+Mz5FIJ_Z0+XGVdr);HqdSw%k`1_OB{q8Bq*N=a$qJ533n$Sd%?(O?&^||_V z3VTLRZ&r_QF4H=0`=9iWUrxsd{z>+ukLD5msitJ~$Uh4c_xj#sw7Wm!-%i_^)fA8D z%Dw%`G<}E*N^;$MJlpp>^?<6MPTQsG@y(TlkK3~++@E9i;*_@VPy_hF{{G&z@rcf< zIWghIv#Woo-_Z$sc>|5dSG5tU5>8G$JhzhS=;3ZkhsM542i=WMqmvyHtJ->L zFBFHJyovhBm6Z2K;~5QR_u<&@PflS^nZo9rK-CZc=hK+)UB!PPw|}A|;Ess@BGrBW zv(`_~e|x{;zxfQmKfzxvjMOSOCe3s%BVU#-E`&#yI`c9r()<+W-j6B4`qTtG3H@Ij zFn4StaFqT_X}a%!vrqN^ebWEt48P|_;HiFoUhDtfY^qOq0_>6cFI>m}OC_J`|NEEW zw+9#*+*AF3fAqhe;g$MdoorftzB=C{c4K$6ZFCM9aKek@nXe?6@`6`dwL7}4%;Vq?sOA&Zh3cJ z#lZOn!}`?Zy7}b}@-YA>Jm30Qdj_B6K$bTO(N_F>JbO3mZr^#~PQAb9!Hw&KE0+f* zvQb18n;(B(u?vWPJOAO%2Hv+|PalNNJ_zNiyL9k)fd}4xd+^~^KcByFp}AM2-N_XK z{9r@X9@?4qD{XX(^y&XPY zv`-;dL@KR)C5wV$qD0lhi*qk1gFrR4y&GPZ4herhe|G5{l<>r%CpR9a(>1*M9CSCF zgmS_zFP-IjXup@s0?zep_FHunZTk%Q`6;)3ht96v1lTzszOp?h(vGuBRmilFneZrWjFOs*9`A8+W?q`U~WaQ6zWD=DL+~M^ww5qMe?Sxs!jF z&7Hz_9;bHh^!0P^wnIl0(Veo8?zFu+RyEzbtf)I}-%e6icdF95ciXWObm!fe+aqmk ztJv-opsKIp?if{fCvRz0>D^)FcPDS9Q-gQRI=oY~bVxDY;RSgoZ>y&&?|7AYr)a9T zJa0AHUe2d4rxTao##pBo`_Bn{6{CNcfsYq2W~1HW{G8zV3w&HBa4NJD85?7kU-r?BeDo?$|!a=q-?|?ar`=%+!~D>UX*EHLoCciPy1D z<1&quiSj6Nh1K->>L?Lend-90^0g%eUJQbEgRdUKTcf=rhL9pyUK+;KL-7tVq9B+- zAvcfR=_fMs7LnO@Iy=}Q3jKdPsnV%kw)i*qH}Z-BA8k{mAIZw}{zwvt@2^}oLk%f9 ztl5piKk7CO0tc|zo7KNWOb_GXNBc?bkAgbLNF*CVY{>Y&Fc*!xsMN=z=wj56<9f1T zRHvAy<)141$@zhexx5FVS-P!G!gae{FTdcIS32t}YjCM+jc;3TsaSvGEZWLvmy=#C zI=x(>V*<)i9!ArWwjTTdSB%@0WcHTpR76bAz397yr-^9UZ$+ zyuLJz6_R=FX?54<-+$FRvWIW(j6Y{>9FG5tlB!+*DHJZB;=lJ~{RcBYsG!I?7tL`PTs8<#i>%rpk62B;>x~-yeMGZmb(q{cJ{0K@mXQT0G|M3;N8v9F| zi*Ldml~cF^A27HXt_SDw;pT-)oAqzu&U`!F-Sy)uu!TG1!_kfUt8fFK?GK+*w|%g) zgU&7uVX!f{!Ir)U7=HtJ&2Ze&jNTAG9k6AbeRvQ;>FQ&BMh_d*^+Dms^v3hS1oUU9DiqC+6)f`0+p}5Qe9kW z&wn-Pm#9?eO1|_pe{sq0q@(ebG|wjoyZf_`5eIhnC!bi{NIvY+X1MLrX5GkU-E772 zbl+bIs7nHPVW9Ly_>Dl>6`?Nb2>-jZ$sa4pfLEqd>aJYcr%4I#F1)-(eV7Z&+LcRm zHemQ=2_zij>wjm*ll=9@H&=_D(eC#C&bawF48?fzu<_lU>7+Qw_Z#1B6(jnB5C03_ zJWoM(SoB*P09|iiUW?-_%UzMDMiqszP8u1NSs95uAS(Q3tyw)7?~nGzjSgGwRpxDJrI(SCnbvuncoo62L`j~dEn5=uvyHB5s}qrdy_mc# z^?%+-1)+-yRpwb{I_kRUWC$^vU0hV~F1MkrEToKK3am{t;hauf5~YO{xH6_}b@EyA zaM!CivqdS2U55W|f0=Ya-GF8M)#aM0XmRbw8u3=%lPja2bq7+3AOD*FF z_5f{UGR?9$Z?j~HSP;6#1myy1Rv1`-%zvS$u?2Al7Z4?~D5Y+V9Ry~R<_x(!i7=&7 z+T4gdGKDQ*;A~l9ezP)9+7zZC`##tG$Qa|4i=gw7#Vl*BGnZPK!3$Z_mXPc4bdCPY zNJp?fP(h{OvWiH0oeQh2C^WRP^*D30@qFx+$z&XZl`@wyGEt7%S04YEq9|I=zkle9 zQF=3^TY`W!SfNt|c~3Hk=Auok^3atF?vg7r7scMg*g_;BoQ2XR z&IN|&;z(p|N6Z$nIW}#fXpl!68}vYWIB`W4OfIrXR`gk_7bifAEu|sIQT6q92FUfO z+09%F>*J&_CWoRz7NS^bWebm(OMl0~sxAQ-s9>-kF9KRZ-`9F1^kB-Vp5<23B$r+Y zXML`0?%}NsraY4xlLc5&^qRi;y6@b8=9q>;O9>51U_HUnQo@wWJQ7Bltfiob!m7i> zDo;xjXWEtCc@x7B00SiWF11Fc(nl@VO;WXXl%{3^fT{!n$cj>w3UVHsxPR2LR3-Rt z`h7Q1UZw(L0k`kd+_NwDWD4CKAX zyZJUO)M(Zbz+5}15JcN%k$)FuR0@|QDuIpi0syyYPU&&`YNA9$5}N7(d#ph3AR$y- zC}}}2?HB7lTx(%&Vq+BaFH@#)0C*%K4vGo$E^V`Whob6bek=+B=8A}^gqe$BphawD z2{4+nzlb7}dZYWnLqoJ-?|3cr8bxf)VPwt}n5$G;z+8Y;ol0p8{C|M4K$b<>^+)~Y zLRk@~c_NjU0N;SQ-bt+y#zro&up>u!r9!0?!5Ecc!o7n-N>uFN5uhyyihPrs^OvHo zwSWQ_1O>rC^a-K1Cj@}#lL0l zveW@X7rASX6fwrbmVXE))}d8hy2t@Q0360Z$uR{Rse&xEU0{f>pPP&!f%m8B?rh9& zbX^`;niN`PDd4I|1>99C3RMUXtevJl?@$~)>`oxey^=Zj?tx594(?lomO`qG5JsM_ zqA{;6nR`)0b|wc{H;`GGmyrQP^CcX$bvn~|b1G{G*N+<;)_*R}q>8fwejYlO*(ges zz;_5)G{T8~No`D=Obeh5ptzVoa-`tc0UpY%01|g)(vKDz6b!~AwEq`!4R2ax zcv>g$0w#+i_};9W$rWdyhvdc!5Oa$D6@iz)%j|7 z)a#G?nkbDf03!fK98fdVHZutPrOZl;z+Lsmf^$hd)))}0Mt~*?VH4y7ZaU52-C)~N zwjTXXzfYfRk{S(oY^95YP0Kt|K8+I0mPp~NlNKUrsDIOOdJ0(SOSm661t?YFpaLo4 z;Vi}nRcLW|Pdi%cfghz#W5{!a$t$c+5p?G^Nq{a)5Tth{9nJxsIi+L@PiZq4d7lZH z5h5(CE&7e`A@IOtPC}C*5U`v{mMbM91g}(&;~gfj1rNw>Qp)w%{mo4Zm+w>=c^DjU z1kJ!qz<xO{zF=*8X?I?1wtz-n!}wFQpLpqvEo@$-a7meQdFkU-BtudB zHF^VelOV8)P4Fz$`#6~)W=Tz%#VI(Nmd?4hOnah z3xCy0a@_0M_UqHh9<9?i8F_uLIavTSWnmzo7JdXy-@#_X*~ZdpnBAz={pY9YqtSjN zj}5lRxlJ>eV-v|Dg+H=+u8R!OQ-%<_Md2$C(s7#tkdYNdo|Gzz6C4M~B=1^z z#1cy6K#$rw;|gyQgyP1DSPO5xUP0>K{^Mp+r-%#;4)p}H8%yVt$V=lbV01>2V>_*~ zTTpezWIDUIo$fU#Wg^ifFcLsc6#G0+BLu*h6GYtTRR@UQ!ZbeY467uk0(CHDiGKkl znAoyF*g@}dNphvz-MPPgu#@ekqw$Pw%e}`t*<{@5nS-&?fF>daaLNq{M-n3(qr56n zUP*M(#}3URbpr7rW`XJqbqQ~hmSqOmfnY4pij_3)d9wMwcy=-ctiCgujoLi$nIo?X zA7u(4>P#r5Bba{(cwUy)9Z9+~$$tnMeC9E!=w<=Y14_%&oRU@eYde`cb|#}Pt}wRr zxiU$rDbLKy+$iLCg?9_`Q(J7DzB9=lHP=BRFW+JCR zOGlYGY?bI({uhX#C?gH4UO)+QKrtzjBr6h_ygX4^pK0L|AOZ)|)!C9|<({u8UYkGI z;CZ2CfpEoH*a;OIk0~>yMhpqqBD%I>PA>gy`er{#%47hNl$3dOm^(Ub%PNa72?|_v zlDP|#7G!gd+xExz1g-?BnP>z;SXq#-Oz1zZ@)!Cq5l==P0+Jz}8p!f!-WSHXWp z16bq;?*PRTgd$K9i}(-@F;z)iX5_C{cgFAM&F0cta;Y9@KIOuc0#Uk6fP#|9C7CJV zzKc?&LYSx>SmzEdxC18@HNn(OlNv(oJV{ev za1UYz@Kxp{+)!Ku$HuOtW|*37Qp;3aq>xL1tF?0~%mwRkA`Z$sX+^v0wRtvCau@{}Eem64#V zseB_|Ni7*#{_7exAOFFFBS1-Dt^n%+5;Dk4q?Li&)rU}vHx$W9)7k^n()z2hsTG+> z3xA5QWC2u`meQ4n0ffy^E7Vgn6b$6Ti0r_JjoUf--om(L^Oax@$kJIAWu;GWZ5`N! z5Z%N!R?FUEWlzSVY(;_6e9z9>36}M)?u{1P@#Z|tsRT1M3RWpkq=^!z04EbCU7o8V zIc}~$%4M7gT5L}#y$3x=qEg0)gJPSewtwublk)C$1ZwnR(N?lJDbx zv7#kS#L!0d7sxPgni+L?MxT`l>6P=^#}ZnaP&5t^EW}DEz{&kkZ_~spaIrE%>?Jfn zX|7X5WIhrirF=b{+u;N;(nq7#a#0*1y3-y&C_&6_Gbp}^b8lj}J-7yU81J7w7=Mk6 zHu#AZqPmD+vW$U#pjtG$P+K^MTpvd62CV^=Y2HBdT1c?U%UG5fRqbXj2Gl4cOmFIR zly}x|>MYF5h~kU(f<$6X7G*^wbqTu;uH_ul`%-$9%T6+3MNY>7m1qyBQz8h~a9vSM zg;+X4Ojcw8Fdw-n1Wo89I}7+cL4WW&O)R2Ok1#X>+>0!5IW6O~lSQ~(oIA1b^_JGC zazgW%0Qf@}=d}2l6w)SXrxIfK5pin8P*XVi+$uwk1(9H!*xW`YErj&~L6$rA>PsSh z>Y#)OEIiDTjckeN+7(K{w-zeuRj9+(mP7(aZ_>PUMikb;#XteHjb&mny?;q-Wu4`} zXRZFZGzZ;gvWM2?tyS>#F~W6~Cb{-`1TMO=u-B9e%x`1Ve-efQW&}bP64Ge`4_~@*qRB3DgT@wKtpO@Bau+>l+u5{>+KjBIN z?b36xDoY7%6IKDWOT?f6d2nwqpvPOKR#6h=2&Ph%Nvc#dzJwP`VV;DA=MjB%TK$e8 zb-9BxEufWYltm?#BY%`YzqyNj9`_b}^*KPGHj`^7^CFK^n-&hyl>>S!GG%gU<%;#N zwQeb3Uo}PyM_A+~MAwzD0L}o8z*51>ItTSlj$D+tn#zZ$GSeX3$`KJMs7MYOfUAZH z?1+IsXd0pdo;U`&hv-EKqDh(Li6~1?QL*xVrTwVZWA4&+(0@_eM$$SNMkI|&(*k<0 zO>W}?fiXaXMqt?~4WGT<=u|F55kbur73XDaePSwJD&au$6{WL2KbVFp`lc71A5_px zlq9(;GA^ir9@)G!h@gF$7qp~pRwJ*i-A5ygpEhQ^oK8n=bF2k)892Y7&GltMl_(NE zRXc!cElk#5CV%@So5UaFLuZr*-= zxKk`@el#p-0t(zTvHjc z%>g|lL`<+|bRtWVuAqQE40$JhjTU5~$bT&x6_`$(avxA*}!EY5=qCJ;u_+G?@K#CD1ya^qou>#g?)dGdB{0*|h?fo>T?8&0s zLHXEg1lEX(;n`BKwn%lB#eg3eNS|j9DW>H~UMN#Ona+m1q*YrtVhV^<2I+K*+#X6b6Iz+0qFD4JeYh?ixIy|TIx)5lR%@A4v}WPp9Sp63LWJL z?mR4hfsi|+!ZPW!*1cY8JZhTM!YPDGuE)k4F|h_b(0uVbN8$T;w! zklJKGCz7H`z*_4Rt^T=Iq@Ja-QEOF=ziL*RdJG1ZE-f^a6G5^~%1k-9(J1#F^g2#o z_ruTbJzUgwxroYLES023LVwZnF6?eZ`9c8A_FV6c-g+xtejaWH;7%uzPZ0UhuB9>+ z3MQkV97~xUUuqF~z{Zo6ai2t#R62ktz<8S1R>O`EBCL?Eq@q32g z2dVGm&Kt*?&L<|Z7)g@h8EpU*bIM8!;t1^;O_KITseIeFYJXDr9MHAycC4inLKmr5 ztqQ3UrBjzDj5~1X&j7ojjZqde>;0te{Vhyljqr8YU z+^jW5m^dpFNQX0iWr}5f@b?@&r%q5xN(dls7^E21!+I*B&k#{0_9z>KS&jhJrN|@L zGG`E}MiF`H(#Xhl*8G>xoSN@t@-ei;+WWW*?7k>%jsU*+htg{N%JXLfNMr64L z)`jt){2aiC1-A0eKw*vPr0O~chAz%s&^f$>DGQyzY{4uRLKzXMED|YDdM71Q9|=0o zv8Hh(93&i|6vW^XTuPe}G~8u^sJSO4(>dvLk&~g7HrOs{bZSyT3oMcnt_lDPn6)?0 z(JHq#d4Fy&PMvx9Xc1`*`-rhv45>7(RVT~`bguR62H$V(GoYh-5UawRCCafjv4h+Oq$mxPK$9bkJElL({Jrhg&@tO{&yQs%Oc zBE>E>a-0-nINT5nHAbJ}i!a zsS53jMfBW4y4*=BJu$=@8( zpM|9Y^fk0=2ym6Q^#e$2N>ReEdfiz@F4IS&9IgR>ma-!WZF(_?-&3V>j|ek~ZOm{5 zA$&W`ojjZj_jVsH;woSoCuN~6LVq?Ztd1jvV9g=w&f=u)KA%VqY=1Iod%c4_%F92f zPBRQ3t8mH}37 z0p>u^N>RP{>L9#M1Gfv}8ZXRTgaI*pT;b?w6i&((hze4p5t*g5FRwq>J_o196nMzM zekuV|Rsvik5s-(9RR-p*$dfl-TemoGC!;EG@S95fO`hotJ#mT8m3B%Nt7y$%%eL5- zQ|cHv#U;W5^hlpmbu&Z_Q;7Z=Xw!FT~*2Gs|CMf9rxWJ`ls55`s|X|jr1 z{YJsXMgo;mbu8ej&t&4zlY;W!uFyH~YqW|^{o>cflA;CB^)UEp@4{@TiAs@~N4@&X9l4D`1wyn^W# z4ALCsaWb15U!;c|uC%{6-s0#rvYt~^_WDjyc{o3dZYlAv(=xIGDAr_=H#$z?8cmj2 zAgI#$%pC%l#(bRG5`Qh)eCF~pF$k!Dt6fo~2L8_EK-7qlL?`=R9elP#0&#Ad8l_}x zEC5`hGMfk|5v7(rN45idlDyYu>ZPwG337QK(@S~lSV$WNfP-CCb^Un&>_vG&)~ijTOPW@>Lgk> zdwujIb#Bx>dhlqSdq7C#K{=T|cw>8)j@<`Ee>i>2ziw3Hh|Kcb1UEfLI1VS ze}ATZs~<2=&wqYz=6`O2H$PwIUpXtE&i{Kq|CNi~e81=4=*T{u|MzeHpQs$1V*XvE zp6dVS!Tbk!z4>0xzeHT{CwF^Vy|q7~jJyXTI>#Ub??MC`aS*<+YE%B#LX7s^14e1ZTeR3zzTT2R?sj zFLfn0Xqe7XG0M@m%H(usl2CKd_0TH4M{gJ<7!`VKboB`XS3{K;G$hSX$#r}yk_{CN zm2>No21=9@BQa2=%$SbkkklQ`!`;BROibO7LTyO!EmG^rFphNn0sknM+-643b1Bj?sUVvvwU*feFHAyKaVp*)E4vXh6+8D;F*kxJ+b2`*&beaZ#qIkD@}x-vsp)^+ezxOiP97`|LrP%v79RYM~Z<`#c?u8AXP zUB@ZQ9S{6FUh(SLtc70L1PhsBM}2ey0f zJ*1Cf-u4mn*P|Yy>xUAZtr~xDgVGDc&`M&D>}RtN%QRQDHRt|eQ?z>c-FthwAiB-+ zU%kwSo*#}JwQS64zUud$@vi8RYB#)UntNrpr<==NGYS2b^ox*8K+!-&9P_mc_ewNg zUG?_?Mw9rzz9fQu;<%D2{oWA&d2)BEcxpVgm#tvh<-BEw+Row1vq_?f5 zf7uDcEsztAgdoqS`Pd<{^)EXOm$nV>V;!3mk~d-|{!PNaLJ>>h%@luf_-ie(O2P`( z*H*_lwJ04=sI}xbS%5T4haGRgEx}{KZyT+vK}w!@Vdy?1%>3FZN1{cJ%vpFiI;nwf zhs7r1)C8O+IcY-;!3%%mn$Gq?2f0(|#`@wO?k4*OT+>)%QsFQa3TVXXJd6`Plrj4| z1(zyujlWjX-#Dgwq+`x7Ck+3Mh&W>xTyDc#=~y(l=qfIvLxI7c>*MW=2wD&Q((z<7gls_K4^6u;_4{k$CHq{(PM&wLwwx| zhdVpmm3AQAY5o6EuKO@-F>C*@y&7I0v$@VFj|Ub^1s0aD0-yroyEtG43OorQER;jo z#kI7xt5YUslMQr0ra75k9uqFa0WBN}6>h>9Bb<$iu&aNu#ghUHHm;xoLRdtgl^ujX zC$x|-TF`_L7&2JCjF~^ghdEfN{5Jh{0WIkF3@zAqffkPT@Z&>WcDQ@h{qrVPgOYs7 z7Ik`h2zu!IZjOIW4kS*CBGBZum;}SkfdoE^3OW#wXrO~WBq6WIR@eD80^F{;dHkMX zhZXi>bsB%+xUI|%A$SxTIZmv8V#u=6GJXz{4)Qoj2em5ca18&yBJcCA(Z~2WK%z%F z)ruxN(4(THdQsC+II>R%WDH94ChdhoOz_rs+IR@+3MY&Uk^$ zlx}1wkBKmnp|b3BojNQPVS^V-R;41i=@Y^Wam;^A#IdkN<=2h_FPy621<-&=lBG;U zz!rwFg;)j`74>(CFOCKmAehi}{frYXZ9b$wvquk~mKVRf_5a>-^b@cDYo{aCUH=!+)Aj$S>;Lb^`oFR; z>_UGH5;1h<(AEFeou^s*r?p_X9tZcXc;#QxIy$Y{C*)>aLa$+nXyHGirF8PhR1siw z!tRkkfP`r!pGVhDasX=JE$O8kv5MDe!If5S;fcc~+_F({nHvuNYr_l^V`$-By6PWY zeG09GW&g;q+oacqI7xm?NK4D_aZI^=<#d0Aw6)OuEf0m3rwK6_7ut+z8QwZetNUS1 z9v^UH<>xmbLIxKWuEA|cMILos7<8PM{T<)~Mnn)<3=_=`RE2f_c$g>~N)foeATsN2 zXciyvk51raK^iU}T%wg|Nek^@iKXm&<&Dr#-JS7N>u@txfvx?n_v@JeUOZoXwjdjAetS<+H#RX64UZ}M3f~a zfl$jerD@nSiX;J;!Q=ulfoq&jcQ)qhTxiS|dcQ8+P(CQA z#eVI;&UL2<6de(J^@mK`(E@zTm(Z(BP!pzaFMjO>*-K=$+ps45ybO-&e>)k-anxv? z{%;obHI)D=9Umbgi)8S2)RnH4!(-a6EljP4yVAGaNx=2r&VB<* z&VEDEo1)0PQe6@K73O8Ffr9Nem3`$^?9vEq=Beip7g59r1H}5JrCrzKNY#xHeQlMt56;VipFnUe^{e`xV0>AzdrOkpnNG z8_Qve<=Bv8SZUY=a`32KxL?o^lMt7zOR7NPr(i9)9*S(Uf+45XX+<$1{;Fsm8CC%g zJ36t546UpqLrsk~7-*`0;}99Dxrz>X91%yZDny3lbDKikj|OvJL8Xf%0P-naW0$Kzc_&!k{4qB)k==25@3T$b5K(W7X-uH3k@`sx~V zB(Z`#fdt#|Db|wx0(|nalQ?4C*v6y-)xFo2KdE*8BpaXVJM&fca4Cf+x7&7oyvqDG z?8t)Wy{@LmBZwYXBjYo!2b3~K<{-e)zuf{;jxyXgLkqd8AIU7S|z>+O-zU*X{GEB87gO252 z+2~7MT^-NY$Yc7Nn;J+KxEas5C+uosQTrN#)FF?Tu(NUOY&3s68~)q!HA}8$k&moW zlb?G>qfhH-x=yC;ImSy(%Ko*?emC(XoK8c47k=jur(-EQZEB~3PY4uir_=BcN31c% zh(Y7I*IE9g*7=icd^(=jQ7z-t0|XBX1^RI2_-GH*ze>35EV}+|+@W%WwO-+LS{CR% zaXLLAOYfpwXDol6H7$8OyZoLyo4%i4h-rVo3OCyui99*Kvuc6s3HTigD;t6wb7+(! z;~)|4v{8;cQIumi%27|+^_a@_&=wQ3h;rOKUG;Cd<2fwCk%vb(@3+&56UwjFP6wZa znLC|^dsteq>SmF*|k+SqoW@&#}K{$OZXg^kLD4}e%qnivb z)>=*?D@!a-tfh>fBRNi72+ZlxAT@Mf%(|jfxQ|2#_c1X>ZQC3 zsuCCI0VSp>wQ4DUs*I!DYAh=SG0O4NBwaDYj(1K~*BbXx8b#nKPWV!WmUpCSL3i>y zUm*B|!6bk8)P<6>n0llHwWLi|qh%7>(G@AWS@AwD%S*_d_H`PEvU-X=yX-9xSEh9n6~>j}CUa{|FS2AqN-*^Qt?c-Zk;xTU*TZEzP8ViUuS8*SLS zCEOOXi#tPB$q{#)q8n@y`b$&l!WKACi#Y#7Sz&+L7suQ5c ztYUw=<|4W&?BR2C6E6pcIiS~qQwNwi39sh6sE!O`Hu@M5iFCv-HfIiz`k=kAr6N>C zIG6AaK$?k|U(YT{`qA|;KFdl({U4N4N; zKO(6MFd8|pa!I-LeBasYz7>dNC6k)Ey zwbh!UeHB-MKI0xn1u=C2S)s z`y%s*b{1D4n8+urHG;Ogq8~hNMM7i$0=@#)*r!i%c8?en6A!v8^aJZVqeYE z8q>aPQcBhn-s$ZaF0t-|3U!lhTg25=nxHvxIu3nf%g9{UWFVa4!mY$q4LatfW%ExB zh3(~5k#P-pHXu32j5cJCtqXrwlE`#tTP@8t!zG)9*{(TTyR{9j-C{#EpKlrG^B-5w zHuuXVOOqWhW}9IEX1kUghALsgZ4&c@vz6wFq|-)u-dHu+53?3FCR-^U_sN^4D$Vgv5|k_C1ZlYz#rTW zOI0Gmz{u7lq4G`e!bTi&XV*j$0~k3nW|Y7XNrJiKkBlK2rtS#42xkOk#ONsB!OQ;I z@{}+JOA^C!!IHw>QdLI~&@#~mBRZN7E;z7kz0`aE;xD&GQ_9|n8N+hJJ75B!OH^&oBoou@*ZBD)m?hePNJ2aYUR64r@nFq1 zcQqcfv$l-I61snbPQRc^5y!wyaQ=nKFbtQ9x))Jd%u*O{I5PutLw9g$8}h?unI}`~ zaFd){t%wDZxuHW$A1Z7#`!30X=GX_A;Ac4`i9}tFENwssn%OLQtlR|}spIlcKFEP$ zd^Q(h*^)WzgypmXx5Niz2rhj!Y?MMdCX7$z@_DbvJTN+71Kp@WJ;M%`A{T|Qk-ZUXpbNFdDkLc!J0dn0f*o7T zC<)g*jlu2dG0RC3@^HqwP_q$@{^IpxW40T*!a!1=Z+V5sVqdDpfIsGXVO z*eohV=0JZYoRov`FnVVein%pXQDrAW{zeDG#l3LSF;Hi59v@+^$pZ4x|dXeW5=04Fswif{wPv?P3z*Cq^OJ~|Xx5uH>nH;k8D8eMaRq5ObHl~y9MQT^bY6j=uq%?K zOmjRZqFUX#XqhmEQ!g7TpVIR@vE#T+Rdgg7mx?mH^}KR!Bfx2zY-)@uZyO>J!?_?OLRezCJT74y zLiKS1o3w3bCd|)Kb_j3pp1Q+^93L@iq?l=xx9ysU~0lv_? z&mf~o@R%X_KvT?dcf{r+j;p5F1!)ekL)O8u+mbm|-hl64N=- zB4AV*WZr(ksxPYjo{nQNDcK?h_{Rq(u>}gVqT?zA;$}n$d#d?^ESPu^bUC&noL!O=X`Vz_Vs~Lar(o`_*b9c3H6*GG2Uglio^6(SjvfJ|1Ne?P5@cf)(lC4} z=oBgy&o`9>sLZZIICc(PyDAN*FDVb88FR+L)o5NB;NDn1stVdpP?xcUafW|?<%yAe zzLukFrK;wVsL}yqIl~JZvZUdfg$M4J@(l!?C3wiQC3y{kEvvE#XB0R=z?qG(wi0o6 z%Y@mj@?up^C92#?kU93GD(q;c)eptV2`b#BUpW$G76?u%MmEIFtfRD)00YbxJFvsn zhLX=TV{=$3W)jjN;RrAGl3ah{>p0~m6B;XHb(o$pFQW*`P|qvKEC>IT(HC53791Pz z0na!-!c5D_p>RQPsBb+M@AoA-Ck% zU}@%k7$p!V^(Z8U0^VW9+kj;Zr!_^rD#mP8Rhc&@ve?0hn+>1)78-vZyeJWnQbn+( z>~VlfVX2H)0kjAUY7`*jE>>S*=5`*urh#itny^)HYzT}CD|PH1L+H+V(1kvIovEhH%4)Px&968@KXM#0ie-N&nw9N95HIO0g!FI?ph=8Qkvl~KB zmLeAQq=woYN0Oj85uhRQJ!qMU$VM0!+^8OtVdHp+%Oxd4$%x~r02xD0HVL~tE8DKZ z&NueWtZ#x7(2)#LAN#>5m;e@co>$49*Rek9m=%eoP^*`NoE(3ZsgMavyjJK<%+`j- z!^#n?Ni1oF#@5%l;Ji*)e35**9d&h{$9EsILd+DLb|6an&8}K9K1n#vRh()! zoYqnatv*E}o+p2L16L_~NyB81kyOSszzD;wkyEPiUT{!SCoF6x4jULlys!}#7AUFD z@*4C~bCksQ7zWCu2$EK^>kK3B2zEyDZ#u+Yl!+9ClcSiIVj{K#Hk2m^t~=A&ybePp!|^;h9WxBl?6-{}pB&M?4&YWg@(TCmRXju|f^uTO(z2fk zpcU7KTt6olX^n$JY-rFros7h*kf4*0;}1)R6bJKp8YHq5A(5{Bf9#!0uUp4*h5yP$ z#-!2j$5?-p405NQ2Sfk`&?pJcz`s7b)>qw|lqK;7obt{Yy8KZVa;%DJS3|OetxZKsR%3q-xlJ&2%K_%HlQ06S0!ospsno1g zVcm&+C*zgnaM@d}3zZR9W_0RtiAue26XI~8HPxT*QsRj`;iLsSWcg!22kb3Z>o{`{ z?NkWFawBvq^g>Z;(0Pc0JL;AOC92O%l03t}yx5sizH=BQk3f5C?x2kJ0a|IB-0{audztbmVi`rgW|^}Un>nSo>#`B@ zvRVG7s6ue$epb@o3z&<}cUhh+X|ZWhJ1#qJ%UeQZvCOssm>ws;>V9$~WlU5P^It{v zGFvJt^fNUjYNh^i9IMoi`*|saaP`3>JS%?y8hm;znPaa(yGbspJJ2Wm2H2G%?!2y; zvo>6nwzkMC^OS*ARjH`vl7Z#a{gtpy$)13lO?BqEvmL{KSUJww+kLivio(NH&fi0DMRE@7kq7Cre|avmrQ zs@O00f7~587{?O4Xyyq;64!#eW+idL^<_55pSp^_1|39U^+`BuT5x48WcV^J@+yfa zHJHgQsBckW;&+xH3XE*AJwG;kOiOcZ0Q;4?Q%F`;JGrri?W6R4*sxMSDw8N`!JP~*x0`;}$O9z=ws@g(X62Akq ztbn}>i;mz*00Xl2pcb6CP^o_r9_|138GAfC`(DD}&vu#}|VhGuc9W+z^o?jA4=J<0jXqC$< zt0nCMn6+e>A;Lz>*`;d?IgtfyV((~UE*IA;xt(00_(?&&`nc_)NCAJ?D75RkJ44t` z)n6MXVPvj`Wt3^4w5JGXDmt|17B|%;ze3qMDD|eC9TlcWWd#&Ly3nemw6e&i)v_YA zmB4k-Ae|wF9|5STIt)P|V1F(wQ4BeSR>!Zs1-}tlMuf9&1x|^iW9~jWd((23urn2> z@^qHj0FuPsiAx!6q|JXjjow;^fu6oNVa4<$Ks25UNAWExBcNqfX+5;L)LAT|V|OcU zhUU5eCAKh_=LI-ZNCxQMrUU;l1mr+)i_SER>MmE{EcQSXXeL`GheaYk^}Umri9>(&_75p%k@_03sJ*n? zVN9uLFYhhSvl@!&?;k&`TK?OdGH3ygS6icZNS4eo7^^H|Mr?X$VQspv+g z#2J>2M7>CVZcKk?of)OpaAQDxMWPYBm#NwoP^@|yxZIWm_h{wQhRV!CDIm#rb$LV3YuaqHCJv@{%+qed=L=WWwN;b0YwHMx{nBDNkaj8YN6RQ`%ID zdu7VH)@V4Kl$MKat_o$_N(&t0<)nM5AmNvc?vP`VKP9QuJBpkW1+5OKpyNAwy53!k z2p1gQ1LJwwOtx|?;xJ<&`sS3W6S=yAG9*JOsG;Z|5Ytc9301Qq9$$5!E+~}v5xC9x z(@8V{J^z0cy>5k6lQGT0jwmvcU?+%X)b{)xZ7Aas6+n zOTCIYU8V&R3WcwPXqF2qF;>Rb6u=d)X+j-Ra58nfi;`7{gw6o4qmy@lUZ5ll%Uet4 z9P(L|5u=hAl`=GU1iEl(P6L$5#l+}Pb_MiPQQm*-gfm(rMTSb9@;a;QP&!9bs8ppU zarIgkUbaF1L%?dqdnANH8u9L9^9#~-aeyX>gb09Se8=c=)_3S1I5$&YW}YHyLZyO3z3j4TM=|APoOKitUKh$JGr5jpy*rAs>^0vVMddcB zEb4#LWpV83{t!SvDim@d&a^NImMq{qeiYLW9z{jJ>nOs;Lk4I3TJ0=?r(G9^E-G2W z^D4iq;*U|==ul@B_T)wZNO^K!a4FGvz+F!#MCd09(l@i!^yl1#3>Qd+Iz79^73eCh z3W_@uRV3~2wovDu+*hd-NEJwwL-8&q)ntFwJ}G=8vQK}0d|WsdS(N*)EpofJw~Mmz z#N=v`^WvlgNLJr8x9x6?$9d2fuO{h=&Mi~fUCS55IYBs*!Ysf9kce^7^sTM4>j?6| z488F|A8PPyR0*XU9Rfn;hvPn~a8l6>vX@3VKdhL2`$wbp3@|FgkQs>)II#ObO)h_T zWYv66O+Et?NH5A6+-+@^GsAZX)lJ zuYYWJ$2{I0^Xt0SGjIDH6mu>Av9d>8c{!HO;9Pr|j}uddlsq0+^c~B8B=JV9EWZ4e zo8P=yN{P1Yx9XYXpS7KVX@EUY{7rw48=yMQuV z=eegPN{*njPX3_K$C_fTpX)#7Bi4QCKfd%I|0(kytCdmP`v14*KYsq+ zADaJ|lBh6q8tU*G|M-^~|A@9_XaWRu$IW+}*kmp1RcgjW{R_;0Oi(3^_I3PxQN)vP z>C58|e(xkAHuB{NwK?*!=7Pknf!<@nZuZzc>NlduBj>&j83TUhGF_ zK)!DPgM zrnTC|K94m=)gf(iKu)nur;q zO}cmwmurYWIJH7E%S1m?n`Z8tn3!ma74H$9x#Z7HxrRP{)zE?%>a-xMNk<_bJRX#& z;IxY-D4E}|6r|{yZ&c9kNbh+4 zc9(ml_{adRF7?|NrQJ= z>j_t`4kMLcVz!Q8ov7(zD-y-@{sUv_(GV@N8G3(e+E)X*yMIeskCOy12l7UU>y|9h z6?NyNncmd-B&(H?2=xXJu`avwrPVhzcaIVZugIVva*=PVuPy52R@#J6ib<5nmq1kC z9-9^^Vg>AIQg0?&iBSzrFu`dtuL}O9?*eO;DY9oC4bSvr@M2jilrTW4*Gx0)Z)&PAI~AZY_k^U*j-J{X^zM@q66A# zXGP*cYuG2U77I$#7eWD-4)Lje(yWhfM;K#lox8Pe=UQ_E^{L+9n7lg*eRl8VTT5NG zIOhD_a;LlHZuFI=yS46jYd!DQn*IrIq>)MxeY)tEY(i`F1&?1|@%lD?iF-y;KxKbU zR2flRi-ayj2}Y)c-Us9I8es(m1sS)#nu0pAZwhLr%LgeYDhepno7~AW)YB!eg$6oZ z3>u-M~LCYyCA8ati{(2@*C)H+lgp*Jj4p1aD* z1-F&xbkrNr0Lpt=8$zPCoe;I#tm=Q-5jdvl8A(V)sn{~e(8c%`yK7=$$siVoQ*+$k z8OCa!+{QEKc3G;WaQQ3pdfG@ayU6zLhMYdkMA|r=iBQPY1#!uyj(H01)sSwE8FG4G zAuG+-Rhse079g!f&e@npqIfGrGoJSI9CV<;UZ#`KtY7zg_4_^;ABwdyE1Z9&YO9yV zpMG4)XZl1or_e0c@dXBXu8`wMV2XsWBBV6Y&_$s#w=I>O>86W_LCMsW-8q^2)?z?} zH%fe5&)`bsbPiXkgW!kR4Yb61rY_@+xP@$YqIFZPMk`mKhdb5kjV{u&rDItH{vrb2 z)C}dCKa#$k0uL$b4aXjyN8o=%_Y|$^49k%-qG`J6bLWUVOKCo!!D24iLpte@pQg~2 zm$-(EUfezDgI*yNcu~!b^c^)Um*Rh&i9LCgZ~|_Brk(n_T9OAzQOt3(I1=s6=uFFK z`}k?yZZxxwyUoUmxKQtXkSS0Kh*HF)WmN)mF|piq5L!%i6sXFN}3{R!I?SH)40Xc{K+r z7YCZu^rd@)Ffmlo;xT`g4!fzPe%=QS|0 z<*-hsw`|FyhQ^zwpArMYK%I|TS%N; z$LU8?H;y+WnU1l;Lb{Qwe~f7nyXVt@`A*7M&Y>&}Od%H?=y%_?de4ziD@T3sNzf=_o66!ez+RAt6pTv#n&8VOe}9UV?0 z3j7&u3?^5kzNCM{1D@Drn$QD?s6fc^BDX|`9Wul;mTFT^&IVgfQlBxOQ3ct`@YFT9 z&>CrMOk>9ioNm-L3+mSc-Akp^I`5GNKE-uNTC4fo0AN1@vK_n`4H2Ygn7gHnjaBma zL~f3NK|xWZdx+k7A`%xK%$F7I*0e5``zfu2WHR!w>e+v5r1`98K_4h@`SM7Uexy-N zVT*UeU6)ikt)Q{5VlQeqE^r-B(OpoIB&@n&TlG5`j7lRYs;5BU{M(8SFrf29rdfzs z9^88m(TXdY)dk>Xw8`$)CgGXTJD1IDv->JqU+X**F*5TQ=-uiBEHo6Z4Rcu;Mrowe zc}ta5nx%i!V1o-aqgNm!o24x>6+a-HfrIPVEGeL&fSS}hj)X{A;X!l67^On}0;#Ta z&`IP(L9TM5qjH|&IY^88kS1>t##ibuz(W&#yJ!AwH|v7i(pZQKTG56L`nZS77Bj{* zPr!$|)gwz}HiqsgTAu2U7GSX&f@}5@fI>1Yu|j`MX^&Jv!7d<)mMoW*-GCMplNI3I zRHs!PZiN zb3dVz7J=so($IZ%xiwnk-6jAk&VT#N@1nMAF58yPu(~uGlL;tCN!5d~PRX@QiNFRr zqI-5mmn$5SCp=6H3V*JG?qXd*GXtYEH0^(8ZSUb#vqFdTW$V5LY!m?{u`K@B1?K@^ z5$$0RR6t(`b;MM63OBoNMIC$7$C^fy7D4?68Y4lcV2!lf zGoT#IsEO^$C?G95qx)G(?i7ENvE%wea=;{oX>R@9gfLd{p(8pb3*59{nNdA- zpjZJ##uz9J?(MPySDU;OlzhdVX?1oZ!p$hdu}(q)7=PpEz&>CL!}%;V{;rXWNzh*B zl!9g1^MtZ2SyRO-k#+-Q4$hPs&_|g5<<`83T$ju}A_PGN&lUa|`M`Z&(Exvlfa09= zGO$0Yc6FiqHMpv&l5lj+G@+?P-fuO&w0rDoViEOSB|ncQt15xmi6n?HFr!r^!dU$2 znxn`(!%T1!Ow%?AdOSX++TaD3!8vRv{!yUz8urDuNd&N!1@2Do) z#PeI+nKNIc``it5f_40s&U}BoE{*ptQC$Nbtq)NKN8%q#97y^g4VhUc21;}SRBa&3 zqXa;@3YiMvM5VIrTxw4;CZ)tLp+DeKc1(t#fZ;pK(<<#kfR~7NAjnN+c=6KTj5F`@ zVm*;46cMzBecnOr$wP;6^-@+=q)&v`ToaWs4cxrK=|)w(Abr1_5YB(9l(P)Md0>7b z8i_uk0)f1|r!8TE7y#vBGb&0lP#`l1?;LF*C9$%r0}I2Id@Tb%D8=GZGg9)TV9N26 zK9GSFb%`2NNRAGBP6D=%5BM@lmivgVlqy-7+pbmMfGdM(vg^raE1KQbeVpiy z^RuE7DWe}SYpkfy63u_^TS2@~U^)IjHG1sc8$59x!$Ps+y_y$iI+O_9n--6|$aor!V}nP6xBd%m9W^@4v0!XQ`Vll8uW;!|Gu zHmCLoLO(4b-hjMY=+y;u)@XC5?J*5KA*0#3VBKIM3GCdzHu!z?FDBQKy{3)wr3-7P zbs(pAtb0ze>fSIYIw~T2+;5>4B!e)JFw#L}rcJ|Ym+T;}k<>zEt>e2$ohU0oo#YE5u=I+%H(Q+>V!Whts$I)@1m%5G z@phg|2~zuwnM6RDMFu~+F3VWaj_!^UHb&PlmWR2mBz2fU!b7U(Iyr0V*eVX7PRQ@>+Wso39Wy$sBHbsiD0=9gR~?`cj3KZ zlcY@(=bfxfagd|>5p$Zw%KR6MOzMya;LY^s8d~tHo0{ML_V?Z`JA%AWme#b+{vP4R zNFyAuN`N15;b5KSgF`!tH0r<&a(*``- zIOTak+KPXpszCF%odX1n!;GiuE_1)UbWq0$LArz~AKTGRT}MMkWb=7jaC;b~D=sxFlPH zB?5>}n|=s+w+eFe3bT(3Vd*bhs!^_{$((;U?27?z$y7w<<#^RBcSu#TvX92+S$>_9 z^!<$DS42i69;S8)49?sH7sPGjERE!a%;|qk5U8~i$9CZea$@%YM;cS16N4B})?MUU zgcKY*j1O|0rPR;4BFJQ-BzaEPyif*R=&gr63H7&b2dx@@{)*6?AhH zP)G2TSQtS)&0LDjJM<3U%^w3=8yUbDekT`zJe?R6Enfurr;CzjH|lH90AJoUArvf@tPb9hz(KaJ-3r|Z$R{s|zy;A+8~cjD2SG!TsQu|J zsqVs7NxRxyVQp+mc-&k#%FvTy0eXMwZzgC|#hgXtIViD_X~gR5ySaSEBpHj0~bY%H43 z&b0xxPYgjwND>)uor;K$Q1JY^ZOUvNFi|H{(I6B94`2h}=<4axDq30#h;e^2*USI{ zCS@WK4c#|Fn5(;@Sarw-Dx;+}pYLjCy1TlcSer!CXI$g7%`3dk>k|0av2^C9qNch3 z3cv%0I|nDyw^P|*g=d9Kia2{!&ygk^6&>8^WE9Mtfmc_roOpOU!52xAfcqRhg6@=D z3sw_DH_)!IAdb25TNK z4S)K~tUZH_I;ob)qtSm6@Kx4whP8a!q!pUXHTRnwCha*UPFn8QrGM)@Rwpf&dlGB9 zBeCXt6005Uncw4Vzhmit+}S>?J-l$vH=qrqKBor1$J^@XrRS`3TlrxPRYNPAj{M?y znL95{|N3z$pRIdi3~H3xJtac+@pVm6b3Jv=JM?8YtHCE(URHl7>_+`ucxM6U>nb|o zznG5QJaKeA-ksF1%W64ey?tiP2Sa`!#q*xBhoWz|Bdb4vi=LNrOV1^1_WhM+-DTy%qR#U{7u!DT&-Wx vu)At&oFZh|V;=}TF5*jR_w{&}Ko;uMe06-o9wesWg diff --git a/var/connect/Cloudinary_Cloudinary.xml b/var/connect/Cloudinary_Cloudinary.xml index ad10470..61938f5 100644 --- a/var/connect/Cloudinary_Cloudinary.xml +++ b/var/connect/Cloudinary_Cloudinary.xml @@ -1,5 +1,5 @@ <_> - ZofwnBi0rpAQDBbY + 3F4BbWrCQHzufos5 Cloudinary_Cloudinary community @@ -41,7 +41,7 @@ - + diff --git a/var/connect/package.xml b/var/connect/package.xml index c8b7ad5..85e1bb9 100644 --- a/var/connect/package.xml +++ b/var/connect/package.xml @@ -11,9 +11,9 @@ - Match MEQP1 coding standards Cloudinarycloudinaryaccounts+magento@cloudinary.com - 2019-12-11 - -

    + 2020-01-16 + + 5.4.07.2.2

    xqts960un9Z}DIEzdr~5 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 delta 443432 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 *AcYx@CPmw{uiXGqMF>M8vgA&9OB5 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