From c267c07f6bfd2c9eefdf40f181625c9e75c584cd Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 29 Oct 2016 21:48:05 -0400 Subject: [PATCH 01/27] Fix Travis CI build (#42) * Corrected dependency definitions. * Simplified and fixed Travis CI build. --- .travis.yml | 13 +- .travis/application.config.php | 23 - .travis/composer.json | 8 - composer.json | 25 +- composer.lock | 2150 ++++++++++++++++++++ src/DOMPDFModule/Service/DOMPDFFactory.php | 9 +- tests/Bootstrap.php | 31 +- tests/TestConfiguration.php.dist | 3 + 8 files changed, 2183 insertions(+), 79 deletions(-) delete mode 100644 .travis/application.config.php delete mode 100644 .travis/composer.json create mode 100644 composer.lock diff --git a/.travis.yml b/.travis.yml index caa853f..37316fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,11 @@ language: php php: - - 5.3 + - 5.3.29 before_script: - - cd .. - - git clone git://github.com/zendframework/ZendSkeletonApplication.git - - cd ZendSkeletonApplication - - rm .gitmodules - - git rm --cached vendor/ZF2 - - cp ../DOMPDFModule/.travis/composer.json ./ - curl -s http://getcomposer.org/installer | php - php composer.phar install - - rm -rf vendor/dino/dompdf-module - - cp -r ../DOMPDFModule vendor/dino/dompdf-module script: - - cd vendor/dino/dompdf-module/tests - - phpunit + - vendor/bin/phpunit tests -v -c tests/phpunit.xml diff --git a/.travis/application.config.php b/.travis/application.config.php deleted file mode 100644 index 4571013..0000000 --- a/.travis/application.config.php +++ /dev/null @@ -1,23 +0,0 @@ - array( - 'Application', - 'DOMPDFModule', - ), - 'module_listener_options' => array( - 'config_glob_paths' => array( - 'config/autoload/{,*.}{global,local}.php', - ), - 'config_cache_enabled' => false, - 'cache_dir' => 'data/cache', - 'module_paths' => array( - './module', - './vendor', - ), - ), - 'service_manager' => array( - 'use_defaults' => true, - 'factories' => array( - ), - ), -); diff --git a/.travis/composer.json b/.travis/composer.json deleted file mode 100644 index 77a7285..0000000 --- a/.travis/composer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "minimum-stability": "dev", - "require": { - "php": ">=5.3.3", - "zendframework/zendframework": "dev-master", - "dino/dompdf-module": "dev-master" - } -} diff --git a/composer.json b/composer.json index 861727b..0c4093f 100644 --- a/composer.json +++ b/composer.json @@ -7,17 +7,34 @@ "license": "MIT", "authors": [ { - "name": "Raymond Kolbe", - "email": "raymond.kolbe@maine.edu" + "name": "Raymond J. Kolbe", + "email": "rkolbe@gmail.com" } ], "require": { - "php": ">=5.3.0", - "dompdf/dompdf": "0.6.*" + "php": ">=5.3.29", + "zendframework/zend-loader": "^2.1.6", + "zendframework/zend-servicemanager": "^2.1.6", + "zendframework/zend-modulemanager": "^2.1.6", + "zendframework/zend-mvc": "^2.1.6", + "zendframework/zend-view": "^2.1.6", + "zendframework/zend-serializer": "^2.1.6", + "zendframework/zend-log": "^2.1.6", + "zendframework/zend-i18n": "^2.1.6", + "zendframework/zend-http": "^2.1.6", + "dompdf/dompdf": "^0.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.27" }, "autoload": { "psr-0": { "DOMPDFModule": "src/" } + }, + "autoload-dev": { + "psr-0": { + "DOMPDFModuleTest": "tests/" + } } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..6358f30 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2150 @@ +{ + "_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": "2a3bf33837c16d2510f970ad7e6d1dac", + "packages": [ + { + "name": "dompdf/dompdf", + "version": "v0.6.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "cc06008f75262510ee135b8cbb14e333a309f651" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/cc06008f75262510ee135b8cbb14e333a309f651", + "reference": "cc06008f75262510ee135b8cbb14e333a309f651", + "shasum": "" + }, + "require": { + "phenx/php-font-lib": "0.2.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "include/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + }, + { + "name": "Brian Sweeney", + "email": "eclecticgeek@gmail.com" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "time": "2015-12-07T04:07:13+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.2.2", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-font-lib.git", + "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", + "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "classes/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "time": "2014-02-01T15:22:28+00:00" + }, + { + "name": "zendframework/zend-escaper", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-escaper.git", + "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73", + "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-escaper", + "keywords": [ + "escaper", + "zf2" + ], + "time": "2015-06-03T14:05:37+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "d94a16039144936f107f906896349900fd634443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/d94a16039144936f107f906896349900fd634443", + "reference": "d94a16039144936f107f906896349900fd634443", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "eventmanager", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-filter", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/93e6990a198e6cdd811064083acac4693f4b29ae", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-crypt": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed data filters", + "homepage": "https://github.com/zendframework/zend-filter", + "keywords": [ + "filter", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-form", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-form.git", + "reference": "a3b9151013e419e4401f66726746abdba174ed21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-form/zipball/a3b9151013e419e4401f66726746abdba174ed21", + "reference": "a3b9151013e419e4401f66726746abdba174ed21", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-captcha": "~2.5", + "zendframework/zend-code": "~2.5", + "zendframework/zend-di": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-session": "~2.5", + "zendframework/zend-text": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-view": "~2.5", + "zendframework/zendservice-recaptcha": "*" + }, + "suggest": { + "zendframework/zend-captcha": "Zend\\Captcha component", + "zendframework/zend-code": "Zend\\Code component", + "zendframework/zend-eventmanager": "Zend\\EventManager component", + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "Zend\\Validator component", + "zendframework/zend-view": "Zend\\View component", + "zendframework/zendservice-recaptcha": "ZendService\\ReCaptcha component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Form\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-form", + "keywords": [ + "form", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-http", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-http.git", + "reference": "6cc6dee9a27fc07e0167d8779ab2258747108ed5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-http/zipball/6cc6dee9a27fc07e0167d8779ab2258747108ed5", + "reference": "6cc6dee9a27fc07e0167d8779ab2258747108ed5", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-stdlib": "~2.5", + "zendframework/zend-uri": "~2.5", + "zendframework/zend-validator": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Http\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", + "homepage": "https://github.com/zendframework/zend-http", + "keywords": [ + "http", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-i18n", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-i18n.git", + "reference": "509271eb7947e4aabebfc376104179cffea42696" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/509271eb7947e4aabebfc376104179cffea42696", + "reference": "509271eb7947e4aabebfc376104179cffea42696", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-view": "~2.5" + }, + "suggest": { + "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", + "zendframework/zend-filter": "You should install this package to use the provided filters", + "zendframework/zend-resources": "Translation resources", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "You should install this package to use the provided validators", + "zendframework/zend-view": "You should install this package to use the provided view helpers" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\I18n\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-i18n", + "keywords": [ + "i18n", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-inputfilter", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-inputfilter.git", + "reference": "b96ca3c3fb7894c36f440516f3be56d35772de92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/b96ca3c3fb7894c36f440516f3be56d35772de92", + "reference": "b96ca3c3fb7894c36f440516f3be56d35772de92", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-stdlib": "~2.5", + "zendframework/zend-validator": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\InputFilter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-inputfilter", + "keywords": [ + "inputfilter", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-json", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-http": "~2.5", + "zendframework/zend-server": "~2.5", + "zendframework/zendxml": "~1.0" + }, + "suggest": { + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-server": "Zend\\Server component", + "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "homepage": "https://github.com/zendframework/zend-json", + "keywords": [ + "json", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-loader", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-loader.git", + "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/c5fd2f071bde071f4363def7dea8dec7393e135c", + "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Loader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-loader", + "keywords": [ + "loader", + "zf2" + ], + "time": "2015-06-03T14:05:47+00:00" + }, + { + "name": "zendframework/zend-log", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-log.git", + "reference": "89cd787661796f360c2686a8f3e8dbc42d5f115f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-log/zipball/89cd787661796f360c2686a8f3e8dbc42d5f115f", + "reference": "89cd787661796f360c2686a8f3e8dbc42d5f115f", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-console": "~2.5", + "zendframework/zend-db": "~2.5", + "zendframework/zend-escaper": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-mail": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-validator": "~2.5" + }, + "suggest": { + "ext-mongo": "*", + "zendframework/zend-console": "Zend\\Console component", + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML formatter", + "zendframework/zend-mail": "Zend\\Mail component", + "zendframework/zend-validator": "Zend\\Validator component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Log\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "component for general purpose logging", + "homepage": "https://github.com/zendframework/zend-log", + "keywords": [ + "log", + "logging", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-math", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-math.git", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-math/zipball/9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "ircmaxell/random-lib": "~1.1", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "ext-bcmath": "If using the bcmath functionality", + "ext-gmp": "If using the gmp functionality", + "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable", + "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-math", + "keywords": [ + "math", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-modulemanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-modulemanager.git", + "reference": "80592b9ba35a5f91978235c458851cc3e914ae90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/80592b9ba35a5f91978235c458851cc3e914ae90", + "reference": "80592b9ba35a5f91978235c458851cc3e914ae90", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-console": "~2.5", + "zendframework/zend-di": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-console": "Zend\\Console component", + "zendframework/zend-loader": "Zend\\Loader component", + "zendframework/zend-mvc": "Zend\\Mvc component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ModuleManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-modulemanager", + "keywords": [ + "modulemanager", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-mvc", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mvc.git", + "reference": "a22422d1d17f3afa031de2be5453f45109e4b7f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/a22422d1d17f3afa031de2be5453f45109e4b7f4", + "reference": "a22422d1d17f3afa031de2be5453f45109e4b7f4", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-form": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-authentication": "~2.5", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-console": "~2.5", + "zendframework/zend-di": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-http": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-log": "~2.5", + "zendframework/zend-modulemanager": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-session": "~2.5", + "zendframework/zend-text": "~2.5", + "zendframework/zend-uri": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-version": "~2.5", + "zendframework/zend-view": "~2.5" + }, + "suggest": { + "zendframework/zend-authentication": "Zend\\Authentication component for Identity plugin", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-console": "Zend\\Console component", + "zendframework/zend-di": "Zend\\Di component", + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-i18n": "Zend\\I18n component for translatable segments", + "zendframework/zend-inputfilter": "Zend\\Inputfilter component", + "zendframework/zend-json": "Zend\\Json component", + "zendframework/zend-log": "Zend\\Log component", + "zendframework/zend-modulemanager": "Zend\\ModuleManager component", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-session": "Zend\\Session component for FlashMessenger, PRG, and FPRG plugins", + "zendframework/zend-stdlib": "Zend\\Stdlib component", + "zendframework/zend-text": "Zend\\Text component", + "zendframework/zend-uri": "Zend\\Uri component", + "zendframework/zend-validator": "Zend\\Validator component", + "zendframework/zend-version": "Zend\\Version component", + "zendframework/zend-view": "Zend\\View component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mvc\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-mvc", + "keywords": [ + "mvc", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-serializer", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-serializer.git", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-json": "~2.5", + "zendframework/zend-math": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Serializer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", + "homepage": "https://github.com/zendframework/zend-serializer", + "keywords": [ + "serializer", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/3b22c403e351d92526c642cba0bd810bc22e1c56", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-di": "~2.5", + "zendframework/zend-mvc": "~2.5" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", + "zendframework/zend-di": "Zend\\Di component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-servicemanager", + "keywords": [ + "servicemanager", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-filter": "To support naming strategy hydrator usage", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-stdlib", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2015-06-03T15:32:03+00:00" + }, + { + "name": "zendframework/zend-uri", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-uri.git", + "reference": "fe6c7f4c8d9037fe551898a538a2b6d39483f572" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/fe6c7f4c8d9037fe551898a538a2b6d39483f572", + "reference": "fe6c7f4c8d9037fe551898a538a2b6d39483f572", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-escaper": "~2.5", + "zendframework/zend-validator": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", + "homepage": "https://github.com/zendframework/zend-uri", + "keywords": [ + "uri", + "zf2" + ], + "time": "2015-06-03T15:32:03+00:00" + }, + { + "name": "zendframework/zend-validator", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-validator.git", + "reference": "f2c1a1fc786ff4533003cb7fac477495dc007120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/f2c1a1fc786ff4533003cb7fac477495dc007120", + "reference": "f2c1a1fc786ff4533003cb7fac477495dc007120", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-db": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-http": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-math": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-session": "~2.5", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", + "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators", + "zendframework/zend-math": "Zend\\Math component", + "zendframework/zend-resources": "Translations of validator messages", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", + "zendframework/zend-session": "Zend\\Session component", + "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Validator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed validators", + "homepage": "https://github.com/zendframework/zend-validator", + "keywords": [ + "validator", + "zf2" + ], + "time": "2015-06-03T15:32:03+00:00" + }, + { + "name": "zendframework/zend-view", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-view.git", + "reference": "d74c7c90df6372154cdc10c2aecf7f4c0175ad73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-view/zipball/d74c7c90df6372154cdc10c2aecf7f4c0175ad73", + "reference": "d74c7c90df6372154cdc10c2aecf7f4c0175ad73", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-authentication": "~2.5", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-console": "~2.5", + "zendframework/zend-escaper": "~2.5", + "zendframework/zend-feed": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-http": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-log": "~2.5", + "zendframework/zend-modulemanager": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-navigation": "~2.5", + "zendframework/zend-paginator": "~2.5", + "zendframework/zend-permissions-acl": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-session": "dev-master", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-authentication": "Zend\\Authentication component", + "zendframework/zend-escaper": "Zend\\Escaper component", + "zendframework/zend-feed": "Zend\\Feed component", + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-json": "Zend\\Json component", + "zendframework/zend-mvc": "Zend\\Mvc component", + "zendframework/zend-navigation": "Zend\\Navigation component", + "zendframework/zend-paginator": "Zend\\Paginator component", + "zendframework/zend-permissions-acl": "Zend\\Permissions\\Acl component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-uri": "Zend\\Uri component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\View\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a system of helpers, output filters, and variable escaping", + "homepage": "https://github.com/zendframework/zend-view", + "keywords": [ + "view", + "zf2" + ], + "time": "2015-06-03T15:32:03+00:00" + } + ], + "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.3,<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.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "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": "2015-02-03T12:10:50+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", + "reference": "58a8137754bc24b25740d4281399a4a3596058e0", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.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": "2016-06-07T08:13:47+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.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "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": "2015-06-21T13:08:43+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.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, + "type": "library", + "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": "2016-05-12T18:03:57+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "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": "2015-09-15T10:49:45+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.27", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90", + "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90", + "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.1", + "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": "2016-07-21T06:48:14+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.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "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": "2015-07-26T15:48:44+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "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": "2015-12-08T07:14:41+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.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "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": "2015-11-11T19:50:13+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.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "396784cd06b91f3db576f248f2402d547a077787" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/396784cd06b91f3db576f248f2402d547a077787", + "reference": "396784cd06b91f3db576f248f2402d547a077787", + "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": "2016-10-21T20:59:10+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.3.29" + }, + "platform-dev": [] +} diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index be78f48..a90ce9f 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -64,21 +64,21 @@ class DOMPDFFactory implements FactoryInterface * Creates an instance of DOMPDF. * * @param ServiceLocatorInterface $serviceLocator - * @return PdfRenderer + * @return DOMPDF */ public function createService(ServiceLocatorInterface $serviceLocator) { $config = $serviceLocator->get('config'); $config = $config['dompdf_module']; - + if (defined('DOMPDF_DIR') === false) { define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf'); } - + if (defined('DOMPDF_INC_DIR') === false) { define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include"); } - + if (defined('DOMPDF_LIB_DIR') === false) { define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib"); } @@ -94,7 +94,6 @@ public function createService(ServiceLocatorInterface $serviceLocator) if (defined('DOMPDF_ADMIN_PASSWORD') === false) { define("DOMPDF_ADMIN_PASSWORD", false); } - foreach ($config as $key => $value) { if (! array_key_exists($key, static::$configCompatMapping)) { diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index d38d4e4..d17298f 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -3,42 +3,17 @@ use DOMPDFModuleTest\Framework\TestCase; use Zend\ServiceManager\ServiceManager; use Zend\Mvc\Service\ServiceManagerConfig; -use Zend\Loader\StandardAutoloader; +ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); -chdir(__DIR__); - -$previousDir = '.'; -while (!file_exists('config/application.config.php')) { - $dir = dirname(getcwd()); - if ($previousDir === $dir) { - throw new RuntimeException( - 'Unable to locate "config/application.config.php": ' . - 'is DOMPDFModule in a subdir of your application skeleton?' - ); - } - $previousDir = $dir; - chdir($dir); -} - if (is_readable(__DIR__ . '/TestConfiguration.php')) { $configuration = include_once __DIR__ . '/TestConfiguration.php'; } else { $configuration = include_once __DIR__ . '/TestConfiguration.php.dist'; } -// Assumes PHP Composer autoloader w/compiled classmaps, etc. -require_once 'vendor/autoload.php'; - -// This namespace is not in classmap. -$loader = new StandardAutoloader( - array( - StandardAutoloader::LOAD_NS => array( - 'DOMPDFModuleTest' => __DIR__ . '/DOMPDFModuleTest' - ), - )); -$loader->register(); +require_once __DIR__ . '/../vendor/autoload.php'; $serviceManager = new ServiceManager(new ServiceManagerConfig($configuration['service_manager'])); $serviceManager->setService('ApplicationConfig', $configuration); @@ -47,4 +22,4 @@ $moduleManager = $serviceManager->get('ModuleManager'); $moduleManager->loadModules(); -TestCase::setServiceManager($serviceManager); \ No newline at end of file +TestCase::setServiceManager($serviceManager); diff --git a/tests/TestConfiguration.php.dist b/tests/TestConfiguration.php.dist index 2d96f37..2e8cfd9 100644 --- a/tests/TestConfiguration.php.dist +++ b/tests/TestConfiguration.php.dist @@ -1,4 +1,7 @@ array( 'DOMPDFModule', From dd47b9a4ca7d8e8eb74946c41b3c8f918e774e3a Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 29 Oct 2016 22:17:11 -0400 Subject: [PATCH 02/27] Update copyright/license (#43) * Updated copyright information for 2016. --- LICENSE.md | 20 +++++++++++++++++++ Module.php | 17 ++++++++++++++++ config/module.compat.php | 17 ++++++++++++++++ config/module.config.php | 17 ++++++++++++++++ src/DOMPDFModule/Module.php | 4 ++-- .../Mvc/Service/ViewPdfRendererFactory.php | 4 ++-- .../Mvc/Service/ViewPdfStrategyFactory.php | 4 ++-- src/DOMPDFModule/Service/DOMPDFFactory.php | 4 ++-- src/DOMPDFModule/View/Model/PdfModel.php | 4 ++-- .../View/Renderer/PdfRenderer.php | 4 ++-- .../View/Strategy/PdfStrategy.php | 4 ++-- tests/Bootstrap.php | 17 ++++++++++++++++ tests/DOMPDFModuleTest/Framework/TestCase.php | 17 ++++++++++++++++ .../View/Service/DOMPDFTest.php | 17 ++++++++++++++++ .../View/Strategy/PdfStrategyTest.php | 17 ++++++++++++++++ tests/TestConfiguration.php.dist | 17 ++++++++++++++++ 16 files changed, 170 insertions(+), 14 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..b276459 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,20 @@ +Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + +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. \ No newline at end of file diff --git a/Module.php b/Module.php index c11177c..56290ac 100644 --- a/Module.php +++ b/Module.php @@ -1,3 +1,20 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ require_once __DIR__ . '/src/DOMPDFModule/Module.php'; \ No newline at end of file diff --git a/config/module.compat.php b/config/module.compat.php index f13095b..6f55c35 100644 --- a/config/module.compat.php +++ b/config/module.compat.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ /** * Ensure that PHP is working with text internally using UTF8 character encoding. diff --git a/config/module.config.php b/config/module.config.php index 70f1d51..ce461ac 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ namespace DOMPDFModule; diff --git a/src/DOMPDFModule/Module.php b/src/DOMPDFModule/Module.php index 7d0e6ad..bdd0df2 100644 --- a/src/DOMPDFModule/Module.php +++ b/src/DOMPDFModule/Module.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php index 7096e1e..629f99b 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php index c1ce0e2..01c7473 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index a90ce9f..ace417f 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index 1f90bd9..e0a6b73 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/View/Renderer/PdfRenderer.php b/src/DOMPDFModule/View/Renderer/PdfRenderer.php index 4947219..ee68736 100644 --- a/src/DOMPDFModule/View/Renderer/PdfRenderer.php +++ b/src/DOMPDFModule/View/Renderer/PdfRenderer.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index ece0ecb..9261c78 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -12,8 +12,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * @author Raymond J. Kolbe - * @copyright Copyright (c) 2012 University of Maine + * @author Raymond J. Kolbe + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index d17298f..40f9e65 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ use DOMPDFModuleTest\Framework\TestCase; use Zend\ServiceManager\ServiceManager; diff --git a/tests/DOMPDFModuleTest/Framework/TestCase.php b/tests/DOMPDFModuleTest/Framework/TestCase.php index 3e891f4..6e11ceb 100644 --- a/tests/DOMPDFModuleTest/Framework/TestCase.php +++ b/tests/DOMPDFModuleTest/Framework/TestCase.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ namespace DOMPDFModuleTest\Framework; diff --git a/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php b/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php index 9c3a2c3..eac28bc 100644 --- a/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php +++ b/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ namespace DOMPDFModuleTest\Service; diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index df88d9f..7c0d0e7 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ namespace DOMPDFModuleTest\View\Strategy; diff --git a/tests/TestConfiguration.php.dist b/tests/TestConfiguration.php.dist index 2e8cfd9..1035b1f 100644 --- a/tests/TestConfiguration.php.dist +++ b/tests/TestConfiguration.php.dist @@ -1,4 +1,21 @@ + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ define('DOMPDF_DIR', __DIR__ . '/../vendor/dompdf/dompdf'); From d0fae1172179c8a26f7f683c71dc0eb5c98bba4f Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 29 Oct 2016 22:21:32 -0400 Subject: [PATCH 03/27] Added Code Climate badge to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c599cb..40678c9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ DOMPDFModule ============ -Master: [![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) +[![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal effort on the consumer's end. From 263d399121d385c82369ea6c482a7096631feb43 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 29 Oct 2016 23:36:40 -0400 Subject: [PATCH 04/27] Code coverage report (#44) * Add Code Climate code coverage reporting. --- .travis.yml | 3 + README.md | 2 +- composer.json | 3 +- composer.lock | 649 +++++++++++++++++++++++++++++++++++++++++++++- tests/phpunit.xml | 3 + 5 files changed, 657 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 37316fc..fc3d8cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,3 +9,6 @@ before_script: script: - vendor/bin/phpunit tests -v -c tests/phpunit.xml + +after_script: + - vendor/bin/test-reporter \ No newline at end of file diff --git a/README.md b/README.md index 40678c9..ef51621 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ DOMPDFModule ============ -[![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) +[![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) [![Test Coverage](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/coverage.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule/coverage) The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal effort on the consumer's end. diff --git a/composer.json b/composer.json index 0c4093f..6e0c5cc 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,8 @@ "dompdf/dompdf": "^0.6.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.27" + "phpunit/phpunit": "^4.8.27", + "codeclimate/php-test-reporter": "^0.3.2" }, "autoload": { "psr-0": { diff --git a/composer.lock b/composer.lock index 6358f30..b84dd9e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "2a3bf33837c16d2510f970ad7e6d1dac", + "content-hash": "d2e7610511edafcd2b5588c4ba576bc5", "packages": [ { "name": "dompdf/dompdf", @@ -1180,6 +1180,64 @@ } ], "packages-dev": [ + { + "name": "codeclimate/php-test-reporter", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/codeclimate/php-test-reporter.git", + "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/codeclimate/php-test-reporter/zipball/3a2d3ebdc1df5acf372458c15041af240a6fc016", + "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3", + "satooshi/php-coveralls": "1.0.*", + "symfony/console": ">=2.0" + }, + "require-dev": { + "ext-xdebug": "*", + "phpunit/phpunit": "3.7.*@stable" + }, + "bin": [ + "composer/bin/test-reporter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "CodeClimate\\Component": "src/", + "CodeClimate\\Bundle": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Code Climate", + "email": "hello@codeclimate.com", + "homepage": "https://codeclimate.com" + } + ], + "description": "PHP client for reporting test coverage to Code Climate", + "homepage": "https://github.com/codeclimate/php-test-reporter", + "keywords": [ + "codeclimate", + "coverage" + ], + "time": "2016-04-19T16:54:33+00:00" + }, { "name": "doctrine/instantiator", "version": "1.0.5", @@ -1234,6 +1292,102 @@ ], "time": "2015-06-14T21:17:01+00:00" }, + { + "name": "guzzle/guzzle", + "version": "v3.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "abandoned": "guzzlehttp/guzzle", + "time": "2015-03-18T18:23:50+00:00" + }, { "name": "phpdocumentor/reflection-docblock", "version": "2.0.4", @@ -1716,6 +1870,111 @@ ], "time": "2015-10-02T06:51:40+00:00" }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "satooshi/php-coveralls", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/satooshi/php-coveralls.git", + "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/da51d304fe8622bf9a6da39a8446e7afd432115c", + "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "guzzle/guzzle": "^2.8|^3.0", + "php": ">=5.3.3", + "psr/log": "^1.0", + "symfony/config": "^2.1|^3.0", + "symfony/console": "^2.1|^3.0", + "symfony/stopwatch": "^2.0|^3.0", + "symfony/yaml": "^2.0|^3.0" + }, + "suggest": { + "symfony/http-kernel": "Allows Symfony integration" + }, + "bin": [ + "bin/coveralls" + ], + "type": "library", + "autoload": { + "psr-4": { + "Satooshi\\": "src/Satooshi/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kitamura Satoshi", + "email": "with.no.parachute@gmail.com", + "homepage": "https://www.facebook.com/satooshi.jp" + } + ], + "description": "PHP client library for Coveralls API", + "homepage": "https://github.com/satooshi/php-coveralls", + "keywords": [ + "ci", + "coverage", + "github", + "test" + ], + "time": "2016-01-20T17:35:46+00:00" + }, { "name": "sebastian/comparator", "version": "1.2.0", @@ -2088,6 +2347,394 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21T13:59:46+00:00" }, + { + "name": "symfony/config", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "f8b1922bbda9d2ac86aecd649399040bce849fde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/f8b1922bbda9d2ac86aecd649399040bce849fde", + "reference": "f8b1922bbda9d2ac86aecd649399040bce849fde", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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 Config Component", + "homepage": "https://symfony.com", + "time": "2016-09-14T20:31:12+00:00" + }, + { + "name": "symfony/console", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "7350016c8abcab897046f1aead2b766b84d3eff8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/7350016c8abcab897046f1aead2b766b84d3eff8", + "reference": "7350016c8abcab897046f1aead2b766b84d3eff8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "~2.7,>=2.7.2|~3.0.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/process": "~2.1|~3.0.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "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 Console Component", + "homepage": "https://symfony.com", + "time": "2016-10-06T01:43:09+00:00" + }, + { + "name": "symfony/debug", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "8c29235936a47473af16fb91c7c4b7b193c5693c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/8c29235936a47473af16fb91c7c4b7b193c5693c", + "reference": "8c29235936a47473af16fb91c7c4b7b193c5693c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.2|~3.0.0", + "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "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 Debug Component", + "homepage": "https://symfony.com", + "time": "2016-09-06T10:55:00+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "25c576abd4e0f212e678fe8b2bd9a9a98c7ea934" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/25c576abd4e0f212e678fe8b2bd9a9a98c7ea934", + "reference": "25c576abd4e0f212e678fe8b2bd9a9a98c7ea934", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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 EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2016-10-13T01:43:15+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "a3784111af9f95f102b6411548376e1ae7c93898" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/a3784111af9f95f102b6411548376e1ae7c93898", + "reference": "a3784111af9f95f102b6411548376e1ae7c93898", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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 Filesystem Component", + "homepage": "https://symfony.com", + "time": "2016-10-18T04:28:30+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "dff51f72b0706335131b00a7f49606168c582594" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", + "reference": "dff51f72b0706335131b00a7f49606168c582594", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2016-05-18T14:26:46+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "35bae476693150728b0eb51647faac82faf9aaca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/35bae476693150728b0eb51647faac82faf9aaca", + "reference": "35bae476693150728b0eb51647faac82faf9aaca", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2016-06-29T05:29:29+00:00" + }, { "name": "symfony/yaml", "version": "v2.8.13", diff --git a/tests/phpunit.xml b/tests/phpunit.xml index f9d2ff7..c8da547 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -8,4 +8,7 @@ ./ + + + From 40cc4b88682c6fb89583d8a8ebbe532cf7105faa Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 29 Oct 2016 23:51:24 -0400 Subject: [PATCH 05/27] Ensured a whitelist for code coverage results. (#45) --- tests/phpunit.xml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/phpunit.xml b/tests/phpunit.xml index c8da547..8d59b01 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -1,13 +1,18 @@ ./ + + + ../src + + From 0b94ed63682df1c497f924d77390324478dc1644 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 30 Oct 2016 11:09:26 -0400 Subject: [PATCH 06/27] Fixed 2 risky tests that did not properly flush output buffers. (#46) --- tests/DOMPDFModuleTest/Framework/TestCase.php | 18 +++-- .../View/Strategy/PdfStrategyTest.php | 72 ++++++++++++++----- 2 files changed, 66 insertions(+), 24 deletions(-) diff --git a/tests/DOMPDFModuleTest/Framework/TestCase.php b/tests/DOMPDFModuleTest/Framework/TestCase.php index 6e11ceb..60dd9e5 100644 --- a/tests/DOMPDFModuleTest/Framework/TestCase.php +++ b/tests/DOMPDFModuleTest/Framework/TestCase.php @@ -19,18 +19,26 @@ namespace DOMPDFModuleTest\Framework; -use PHPUnit_Framework_TestCase; use Zend\ServiceManager\ServiceManager; -class TestCase extends PHPUnit_Framework_TestCase +class TestCase extends \PHPUnit_Framework_TestCase { - protected static $serviceManager = null; - + /** + * @var ServiceManager + */ + protected static $serviceManager; + + /** + * @param ServiceManager $sm + */ public static function setServiceManager(ServiceManager $sm) { self::$serviceManager = $sm; } - + + /** + * @return ServiceManager + */ public function getServiceManager() { return self::$serviceManager; diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 7c0d0e7..7de5bd3 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -30,23 +30,30 @@ class PdfStrategyTest extends TestCase { - public function setUp() - { - $this->renderer = new PdfRenderer(); - $this->strategy = new PdfStrategy($this->renderer); - $this->event = new ViewEvent(); - $this->response = new HttpResponse(); - - $this->resolver = new TemplatePathStack(); - $this->resolver->addPath(dirname(__DIR__) . '/_templates'); - - $this->renderer->setResolver($this->resolver); - - $htmlRenderer = new PhpRenderer(); - $htmlRenderer->setResolver($this->resolver); - $this->renderer->setHtmlRenderer($htmlRenderer); - $this->renderer->setEngine($this->getServiceManager()->get('dompdf')); - } + /** + * @var ViewEvent + */ + private $event; + + /** + * @var PdfRenderer + */ + private $renderer; + + /** + * @var TemplatePathStack + */ + private $resolver; + + /** + * @var PdfStrategy + */ + private $strategy; + + /** + * @var HttpResponse + */ + private $response; public function testPdfModelSelectsPdfStrategy() { @@ -70,8 +77,10 @@ public function testContentTypeResponseHeader() $headers = $this->event->getResponse()->getHeaders(); $contentTypeHeader = $headers->get('content-type'); - $this->assertInstanceof('Zend\Http\Header\ContentType', $contentTypeHeader); + $this->assertInstanceOf('Zend\Http\Header\ContentType', $contentTypeHeader); $this->assertEquals($contentTypeHeader->getFieldValue(), 'application/pdf'); + + ob_end_flush(); // Clear out any buffers held by renderers. } public function testResponseHeadersWithFileName() @@ -90,7 +99,32 @@ public function testResponseHeadersWithFileName() $headers = $this->event->getResponse()->getHeaders(); $contentDispositionHeader = $headers->get('Content-Disposition'); - $this->assertInstanceof('Zend\Http\Header\ContentDisposition', $contentDispositionHeader); + $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDispositionHeader); $this->assertEquals($contentDispositionHeader->getFieldValue(), 'attachment; filename=testPdfFileName.pdf'); + + ob_end_flush(); // Clear out any buffers held by renderers. + } + + /** + * {@inheritdoc} + */ + protected function setUp() + { + parent::setUp(); + + $this->renderer = new PdfRenderer(); + $this->strategy = new PdfStrategy($this->renderer); + $this->event = new ViewEvent(); + $this->response = new HttpResponse(); + + $this->resolver = new TemplatePathStack(); + $this->resolver->addPath(dirname(__DIR__) . '/_templates'); + + $this->renderer->setResolver($this->resolver); + + $htmlRenderer = new PhpRenderer(); + $htmlRenderer->setResolver($this->resolver); + $this->renderer->setHtmlRenderer($htmlRenderer); + $this->renderer->setEngine($this->getServiceManager()->get('dompdf')); } } From 69c17a7b53403c9bdc001d7b087ad4d997e971f3 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 30 Oct 2016 12:10:25 -0400 Subject: [PATCH 07/27] Increase code quality support (#47) * Added PHPCS and CS Fixer to increase code quality support. * Applied code quality fixes. * Added fast fail builds forTravis CI. --- .travis.yml | 7 +- composer.json | 4 +- composer.lock | 237 +++++++++++++++++- config/module.compat.php | 2 +- config/module.config.php | 5 +- .../Mvc/Service/ViewPdfRendererFactory.php | 4 +- .../Mvc/Service/ViewPdfStrategyFactory.php | 2 +- src/DOMPDFModule/Service/DOMPDFFactory.php | 9 +- src/DOMPDFModule/View/Model/PdfModel.php | 8 +- .../View/Strategy/PdfStrategy.php | 5 +- tests/DOMPDFModuleTest/Framework/TestCase.php | 4 +- 11 files changed, 263 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index fc3d8cc..4e6bd29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ language: php +matrix: + fast_finish: true + php: - 5.3.29 @@ -8,7 +11,7 @@ before_script: - php composer.phar install script: - - vendor/bin/phpunit tests -v -c tests/phpunit.xml + - vendor/bin/phpcs --standard=PSR2 src && vendor/bin/phpcs --standard=PSR2 config && vendor/bin/phpcs --standard=PSR2 tests && vendor/bin/phpunit tests -v -c tests/phpunit.xml -after_script: +after_success: - vendor/bin/test-reporter \ No newline at end of file diff --git a/composer.json b/composer.json index 6e0c5cc..2f9390d 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,9 @@ }, "require-dev": { "phpunit/phpunit": "^4.8.27", - "codeclimate/php-test-reporter": "^0.3.2" + "codeclimate/php-test-reporter": "^0.3.2", + "fabpot/php-cs-fixer": "^1.12", + "squizlabs/php_codesniffer": "^2.7" }, "autoload": { "psr-0": { diff --git a/composer.lock b/composer.lock index b84dd9e..2e5f0ca 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "d2e7610511edafcd2b5588c4ba576bc5", + "content-hash": "ef736c9d955791a5c1d93d0b9c01ba99", "packages": [ { "name": "dompdf/dompdf", @@ -1292,6 +1292,65 @@ ], "time": "2015-06-14T21:17:01+00:00" }, + { + "name": "fabpot/php-cs-fixer", + "version": "v1.12.3", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "78a820c16d13f593303511461eefa939502fb2de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/78a820c16d13f593303511461eefa939502fb2de", + "reference": "78a820c16d13f593303511461eefa939502fb2de", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^5.3.6 || >=7.0 <7.2", + "sebastian/diff": "^1.1", + "symfony/console": "^2.3 || ^3.0", + "symfony/event-dispatcher": "^2.1 || ^3.0", + "symfony/filesystem": "^2.1 || ^3.0", + "symfony/finder": "^2.1 || ^3.0", + "symfony/process": "^2.3 || ^3.0", + "symfony/stopwatch": "^2.5 || ^3.0" + }, + "conflict": { + "hhvm": "<3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.5|^5", + "satooshi/php-coveralls": "^1.0" + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "Symfony\\CS\\": "Symfony/CS/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "abandoned": "friendsofphp/php-cs-fixer", + "time": "2016-10-30T12:07:10+00:00" + }, { "name": "guzzle/guzzle", "version": "v3.9.3", @@ -2347,6 +2406,84 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21T13:59:46+00:00" }, + { + "name": "squizlabs/php_codesniffer", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", + "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Fixer.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2016-09-01T23:53:02+00:00" + }, { "name": "symfony/config", "version": "v2.8.13", @@ -2627,6 +2764,55 @@ "homepage": "https://symfony.com", "time": "2016-10-18T04:28:30+00:00" }, + { + "name": "symfony/finder", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/bc24c8f5674c6f6841f2856b70e5d60784be5691", + "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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 Finder Component", + "homepage": "https://symfony.com", + "time": "2016-09-28T00:10:16+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.2.0", @@ -2686,6 +2872,55 @@ ], "time": "2016-05-18T14:26:46+00:00" }, + { + "name": "symfony/process", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", + "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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 Process Component", + "homepage": "https://symfony.com", + "time": "2016-09-29T14:03:54+00:00" + }, { "name": "symfony/stopwatch", "version": "v2.8.13", diff --git a/config/module.compat.php b/config/module.compat.php index 6f55c35..1b14449 100644 --- a/config/module.compat.php +++ b/config/module.compat.php @@ -57,4 +57,4 @@ * @var array */ global $_DOMPDF_DEBUG_TYPES; -$_DOMPDF_DEBUG_TYPES = array(); //array("page-break" => 1); \ No newline at end of file +$_DOMPDF_DEBUG_TYPES = array(); //array("page-break" => 1); diff --git a/config/module.config.php b/config/module.config.php index ce461ac..eabd466 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -79,7 +79,7 @@ * should be an absolute path. * This is only checked on command line call by dompdf.php, but not by * direct class use like: - * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); + * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); */ 'chroot' => realpath(__DIR__ . '/../../../dompdf/dompdf/'), @@ -273,8 +273,7 @@ * Use the more-than-experimental HTML5 Lib parser */ 'enable_html5parser' => false, - - 'debug_png' => false, + 'debug_png' => false, 'debug_keep_temp' => false, 'debug_css' => false, 'debug_layout' => false, diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php index 629f99b..ac1e55e 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php @@ -28,7 +28,7 @@ class ViewPdfRendererFactory implements FactoryInterface /** * Create and return the PDF view renderer * - * @param ServiceLocatorInterface $serviceLocator + * @param ServiceLocatorInterface $serviceLocator * @return PdfRenderer */ public function createService(ServiceLocatorInterface $serviceLocator) @@ -42,4 +42,4 @@ public function createService(ServiceLocatorInterface $serviceLocator) return $pdfRenderer; } -} \ No newline at end of file +} diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php index 01c7473..d6ab9fd 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php @@ -31,7 +31,7 @@ class ViewPdfStrategyFactory implements FactoryInterface * Retrieves the ViewPdfRenderer service from the service locator, and * injects it into the constructor for the PDF strategy. * - * @param ServiceLocatorInterface $serviceLocator + * @param ServiceLocatorInterface $serviceLocator * @return PdfStrategy */ public function createService(ServiceLocatorInterface $serviceLocator) diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index ace417f..39e800a 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -28,7 +28,7 @@ class DOMPDFFactory implements FactoryInterface /** * An array of keys that map DOMPDF define keys to DOMPDFModule config's * keys. - * + * * @var array */ private static $configCompatMapping = array( @@ -62,8 +62,8 @@ class DOMPDFFactory implements FactoryInterface /** * Creates an instance of DOMPDF. - * - * @param ServiceLocatorInterface $serviceLocator + * + * @param ServiceLocatorInterface $serviceLocator * @return DOMPDF */ public function createService(ServiceLocatorInterface $serviceLocator) @@ -106,7 +106,7 @@ public function createService(ServiceLocatorInterface $serviceLocator) define(static::$configCompatMapping[$key], $value); } - + require_once DOMPDF_LIB_DIR . '/html5lib/Parser.php'; require_once DOMPDF_INC_DIR . '/functions.inc.php'; require_once __DIR__ . '/../../../config/module.compat.php'; @@ -114,4 +114,3 @@ public function createService(ServiceLocatorInterface $serviceLocator) return new DOMPDF(); } } - diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index e0a6b73..c2e9146 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -35,17 +35,17 @@ class PdfModel extends ViewModel ); /** - * PDF probably won't need to be captured into a + * PDF probably won't need to be captured into a * a parent container by default. - * + * * @var string */ protected $captureTo = null; /** * PDF is usually terminal - * + * * @var bool */ protected $terminate = true; -} \ No newline at end of file +} diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index 9261c78..ebed590 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -125,8 +125,9 @@ public function injectResponse(ViewEvent $e) } $response->getHeaders()->addHeaderLine( - 'Content-Disposition', - 'attachment; filename=' . $fileName); + 'Content-Disposition', + 'attachment; filename=' . $fileName + ); } } } diff --git a/tests/DOMPDFModuleTest/Framework/TestCase.php b/tests/DOMPDFModuleTest/Framework/TestCase.php index 60dd9e5..6acd3ab 100644 --- a/tests/DOMPDFModuleTest/Framework/TestCase.php +++ b/tests/DOMPDFModuleTest/Framework/TestCase.php @@ -41,6 +41,6 @@ public static function setServiceManager(ServiceManager $sm) */ public function getServiceManager() { - return self::$serviceManager; + return self::$serviceManager; } -} \ No newline at end of file +} From 557fcfcc1d49b600aea6e98808db093718c6297e Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 30 Oct 2016 13:01:52 -0400 Subject: [PATCH 08/27] Added all other versions of PHP to Travis CI build (#48) --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4e6bd29..a0a022a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,11 @@ matrix: fast_finish: true php: - - 5.3.29 + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 before_script: - curl -s http://getcomposer.org/installer | php From eab21be604ed5ff688cbead0cef692859201f61f Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 30 Oct 2016 13:48:21 -0400 Subject: [PATCH 09/27] Added mess detection to Travis CI build (#49) * Added PHP mess detection to Travis CI build. * Updated code that failed mess detection checks. --- .travis.yml | 2 +- composer.json | 3 +- composer.lock | 170 +++++++++++++++++- src/DOMPDFModule/Service/DOMPDFFactory.php | 53 +++--- .../View/Strategy/PdfStrategy.php | 18 +- tests/DOMPDFModuleTest/Framework/TestCase.php | 6 +- .../View/Strategy/PdfStrategyTest.php | 8 +- 7 files changed, 210 insertions(+), 50 deletions(-) diff --git a/.travis.yml b/.travis.yml index a0a022a..e8a5477 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ before_script: - php composer.phar install script: - - vendor/bin/phpcs --standard=PSR2 src && vendor/bin/phpcs --standard=PSR2 config && vendor/bin/phpcs --standard=PSR2 tests && vendor/bin/phpunit tests -v -c tests/phpunit.xml + - vendor/bin/phpcs --standard=PSR2 src && vendor/bin/phpcs --standard=PSR2 config && vendor/bin/phpcs --standard=PSR2 tests && vendor/bin/phpunit tests -v -c tests/phpunit.xml && vendor/bin/phpmd config,src,tests text cleancode,codesize,controversial,design,naming,unusedcode after_success: - vendor/bin/test-reporter \ No newline at end of file diff --git a/composer.json b/composer.json index 2f9390d..ec3e507 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,8 @@ "phpunit/phpunit": "^4.8.27", "codeclimate/php-test-reporter": "^0.3.2", "fabpot/php-cs-fixer": "^1.12", - "squizlabs/php_codesniffer": "^2.7" + "squizlabs/php_codesniffer": "^2.7", + "phpmd/phpmd": "^2.4" }, "autoload": { "psr-0": { diff --git a/composer.lock b/composer.lock index 2e5f0ca..7e9981b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "ef736c9d955791a5c1d93d0b9c01ba99", + "content-hash": "a0fe32f2cdc65dd20a3d482cf18ea7b0", "packages": [ { "name": "dompdf/dompdf", @@ -1447,6 +1447,46 @@ "abandoned": "guzzlehttp/guzzle", "time": "2015-03-18T18:23:50+00:00" }, + { + "name": "pdepend/pdepend", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/pdepend/pdepend.git", + "reference": "b086687f3a01dc6bb92d633aef071d2c5dd0db06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/b086687f3a01dc6bb92d633aef071d2c5dd0db06", + "reference": "b086687f3a01dc6bb92d633aef071d2c5dd0db06", + "shasum": "" + }, + "require": { + "php": ">=5.3.7", + "symfony/config": "^2.3.0|^3", + "symfony/dependency-injection": "^2.3.0|^3", + "symfony/filesystem": "^2.3.0|^3" + }, + "require-dev": { + "phpunit/phpunit": "^4.4.0,<4.8", + "squizlabs/php_codesniffer": "^2.0.0" + }, + "bin": [ + "src/bin/pdepend" + ], + "type": "library", + "autoload": { + "psr-4": { + "PDepend\\": "src/main/php/PDepend" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Official version of pdepend to be handled with Composer", + "time": "2016-03-10T15:15:04+00:00" + }, { "name": "phpdocumentor/reflection-docblock", "version": "2.0.4", @@ -1496,6 +1536,71 @@ ], "time": "2015-02-03T12:10:50+00:00" }, + { + "name": "phpmd/phpmd", + "version": "2.4.3", + "source": { + "type": "git", + "url": "https://github.com/phpmd/phpmd.git", + "reference": "2b9c2417a18696dfb578b38c116cd0ddc19b256e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/2b9c2417a18696dfb578b38c116cd0ddc19b256e", + "reference": "2b9c2417a18696dfb578b38c116cd0ddc19b256e", + "shasum": "" + }, + "require": { + "pdepend/pdepend": "^2.0.4", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.0" + }, + "bin": [ + "src/bin/phpmd" + ], + "type": "project", + "autoload": { + "psr-0": { + "PHPMD\\": "src/main/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Manuel Pichler", + "email": "github@manuel-pichler.de", + "homepage": "https://github.com/manuelpichler", + "role": "Project Founder" + }, + { + "name": "Other contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", + "role": "Contributors" + }, + { + "name": "Marc Würth", + "email": "ravage@bluewin.ch", + "homepage": "https://github.com/ravage84", + "role": "Project Maintainer" + } + ], + "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", + "homepage": "http://phpmd.org/", + "keywords": [ + "mess detection", + "mess detector", + "pdepend", + "phpmd", + "pmd" + ], + "time": "2016-04-04T11:52:04+00:00" + }, { "name": "phpspec/prophecy", "version": "v1.6.1", @@ -2655,6 +2760,69 @@ "homepage": "https://symfony.com", "time": "2016-09-06T10:55:00+00:00" }, + { + "name": "symfony/dependency-injection", + "version": "v2.8.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "3d61c765daa1a5832f1d7c767f48886b8d8ea64c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3d61c765daa1a5832f1d7c767f48886b8d8ea64c", + "reference": "3d61c765daa1a5832f1d7c767f48886b8d8ea64c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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 DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2016-10-24T15:52:36+00:00" + }, { "name": "symfony/event-dispatcher", "version": "v2.8.13", diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index 39e800a..afac712 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -68,33 +68,30 @@ class DOMPDFFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $config = $serviceLocator->get('config'); - $config = $config['dompdf_module']; - - if (defined('DOMPDF_DIR') === false) { - define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf'); - } - - if (defined('DOMPDF_INC_DIR') === false) { - define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include"); - } - - if (defined('DOMPDF_LIB_DIR') === false) { - define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib"); - } + defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf'); + defined('DOMPDF_INC_DIR') || define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include"); + defined('DOMPDF_LIB_DIR') || define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib"); + defined('DOMPDF_AUTOLOAD_PREPEND') || define("DOMPDF_AUTOLOAD_PREPEND", false); + defined('DOMPDF_ADMIN_USERNAME') || define("DOMPDF_ADMIN_USERNAME", false); + defined('DOMPDF_ADMIN_PASSWORD') || define("DOMPDF_ADMIN_PASSWORD", false); - if (defined('DOMPDF_AUTOLOAD_PREPEND') === false) { - define("DOMPDF_AUTOLOAD_PREPEND", false); - } - - if (defined('DOMPDF_ADMIN_USERNAME') === false) { - define("DOMPDF_ADMIN_USERNAME", false); - } + $config = $serviceLocator->get('config'); + $this->applyCompatGlobals($config['dompdf_module']); - if (defined('DOMPDF_ADMIN_PASSWORD') === false) { - define("DOMPDF_ADMIN_PASSWORD", false); - } + require_once DOMPDF_LIB_DIR . '/html5lib/Parser.php'; + require_once DOMPDF_INC_DIR . '/functions.inc.php'; + require_once __DIR__ . '/../../../config/module.compat.php'; + return new DOMPDF(); + } + + /** + * Declares global constants supported by DOMPDF lib. + * + * @param array $config + */ + private function applyCompatGlobals(array $config) + { foreach ($config as $key => $value) { if (! array_key_exists($key, static::$configCompatMapping)) { continue; @@ -103,14 +100,8 @@ public function createService(ServiceLocatorInterface $serviceLocator) if (defined(static::$configCompatMapping[$key])) { continue; } - + define(static::$configCompatMapping[$key], $value); } - - require_once DOMPDF_LIB_DIR . '/html5lib/Parser.php'; - require_once DOMPDF_INC_DIR . '/functions.inc.php'; - require_once __DIR__ . '/../../../config/module.compat.php'; - - return new DOMPDF(); } } diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index ebed590..2da2030 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -79,18 +79,18 @@ public function detach(EventManagerInterface $events) /** * Detect if we should use the PdfRenderer based on model type * - * @param ViewEvent $e + * @param ViewEvent $event * @return null|PdfRenderer */ - public function selectRenderer(ViewEvent $e) + public function selectRenderer(ViewEvent $event) { - $model = $e->getModel(); + $model = $event->getModel(); if ($model instanceof Model\PdfModel) { return $this->renderer; } - return; + return null; } /** @@ -99,26 +99,26 @@ public function selectRenderer(ViewEvent $e) * @param ViewEvent $e * @return void */ - public function injectResponse(ViewEvent $e) + public function injectResponse(ViewEvent $event) { - $renderer = $e->getRenderer(); + $renderer = $event->getRenderer(); if ($renderer !== $this->renderer) { // Discovered renderer is not ours; do nothing return; } - $result = $e->getResult(); + $result = $event->getResult(); if (!is_string($result)) { // @todo Potentially throw an exception here since we should *always* get back a result. return; } - $response = $e->getResponse(); + $response = $event->getResponse(); $response->setContent($result); $response->getHeaders()->addHeaderLine('content-type', 'application/pdf'); - $fileName = $e->getModel()->getOption('filename'); + $fileName = $event->getModel()->getOption('filename'); if (isset($fileName)) { if (substr($fileName, -4) != '.pdf') { $fileName .= '.pdf'; diff --git a/tests/DOMPDFModuleTest/Framework/TestCase.php b/tests/DOMPDFModuleTest/Framework/TestCase.php index 6acd3ab..c36a290 100644 --- a/tests/DOMPDFModuleTest/Framework/TestCase.php +++ b/tests/DOMPDFModuleTest/Framework/TestCase.php @@ -29,11 +29,11 @@ class TestCase extends \PHPUnit_Framework_TestCase protected static $serviceManager; /** - * @param ServiceManager $sm + * @param ServiceManager $serviceManager */ - public static function setServiceManager(ServiceManager $sm) + public static function setServiceManager(ServiceManager $serviceManager) { - self::$serviceManager = $sm; + self::$serviceManager = $serviceManager; } /** diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 7de5bd3..18fc896 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -96,11 +96,11 @@ public function testResponseHeadersWithFileName() $this->strategy->injectResponse($this->event); - $headers = $this->event->getResponse()->getHeaders(); - $contentDispositionHeader = $headers->get('Content-Disposition'); + $headers = $this->event->getResponse()->getHeaders(); + $contentDisposition = $headers->get('Content-Disposition'); - $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDispositionHeader); - $this->assertEquals($contentDispositionHeader->getFieldValue(), 'attachment; filename=testPdfFileName.pdf'); + $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDisposition); + $this->assertEquals($contentDisposition->getFieldValue(), 'attachment; filename=testPdfFileName.pdf'); ob_end_flush(); // Clear out any buffers held by renderers. } From 1ca8fd83693517aba3e27cb25dfa7a6b050c8354 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Mon, 31 Oct 2016 07:03:16 -0400 Subject: [PATCH 10/27] Added basic integration tests (#50) * Added basic integration tests while simplifying bootstrap. Added missing dependency. * Added missing tests. --- composer.json | 3 +- composer.lock | 54 +++++++++++++++++- .../Mvc/Service/ViewPdfRendererFactory.php | 2 +- tests/Bootstrap.php | 9 +-- tests/DOMPDFModuleTest/ModuleTest.php | 55 +++++++++++++++++++ .../Service/ViewPdfRendererFactoryTest.php | 36 ++++++++++++ .../Service/ViewPdfStrategyFactoryTest.php | 36 ++++++++++++ 7 files changed, 185 insertions(+), 10 deletions(-) create mode 100644 tests/DOMPDFModuleTest/ModuleTest.php create mode 100644 tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php create mode 100644 tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php diff --git a/composer.json b/composer.json index ec3e507..2cb095b 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,8 @@ "zendframework/zend-log": "^2.1.6", "zendframework/zend-i18n": "^2.1.6", "zendframework/zend-http": "^2.1.6", - "dompdf/dompdf": "^0.6.0" + "dompdf/dompdf": "^0.6.0", + "zendframework/zend-console": "2.5.0" }, "require-dev": { "phpunit/phpunit": "^4.8.27", diff --git a/composer.lock b/composer.lock index 7e9981b..28bda2b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "a0fe32f2cdc65dd20a3d482cf18ea7b0", + "content-hash": "a99474b87097d42c8c7700cdbe796094", "packages": [ { "name": "dompdf/dompdf", @@ -81,6 +81,58 @@ "homepage": "https://github.com/PhenX/php-font-lib", "time": "2014-02-01T15:22:28+00:00" }, + { + "name": "zendframework/zend-console", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-console.git", + "reference": "59b467b36c40b767e3c1bac1310031073f00ce28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-console/zipball/59b467b36c40b767e3c1bac1310031073f00ce28", + "reference": "59b467b36c40b767e3c1bac1310031073f00ce28", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-filter": "~2.5.0", + "zendframework/zend-json": "~2.5.0", + "zendframework/zend-validator": "~2.5.0" + }, + "suggest": { + "zendframework/zend-filter": "To support DefaultRouteMatcher usage", + "zendframework/zend-validator": "To support DefaultRouteMatcher usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Console\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-console", + "keywords": [ + "console", + "zf2" + ], + "time": "2015-06-03T14:05:33+00:00" + }, { "name": "zendframework/zend-escaper", "version": "2.5.1", diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php index ac1e55e..19ff595 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php @@ -34,7 +34,7 @@ class ViewPdfRendererFactory implements FactoryInterface public function createService(ServiceLocatorInterface $serviceLocator) { $viewManager = $serviceLocator->get('ViewManager'); - + $pdfRenderer = new PdfRenderer(); $pdfRenderer->setResolver($viewManager->getResolver()); $pdfRenderer->setHtmlRenderer($viewManager->getRenderer()); diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index 40f9e65..4da6ea4 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -32,11 +32,6 @@ require_once __DIR__ . '/../vendor/autoload.php'; -$serviceManager = new ServiceManager(new ServiceManagerConfig($configuration['service_manager'])); -$serviceManager->setService('ApplicationConfig', $configuration); -$serviceManager->setAllowOverride(true); - -$moduleManager = $serviceManager->get('ModuleManager'); -$moduleManager->loadModules(); - +$application = \Zend\Mvc\Application::init($configuration); +$serviceManager = $application->getServiceManager(); TestCase::setServiceManager($serviceManager); diff --git a/tests/DOMPDFModuleTest/ModuleTest.php b/tests/DOMPDFModuleTest/ModuleTest.php new file mode 100644 index 0000000..1320c61 --- /dev/null +++ b/tests/DOMPDFModuleTest/ModuleTest.php @@ -0,0 +1,55 @@ + + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModuleTest; + +use DOMPDFModule\Module; + +class ModuleTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var Module + */ + private $module; + + public function testHasConfig() + { + $config = $this->module->getConfig(); + + // Test the obvious required keys. + $this->assertArrayHasKey('dompdf_module', $config, 'dompdf_module'); + $this->assertArrayHasKey('service_manager', $config, 'service_manager'); + } + + public function testHasAutoloaderConfig() + { + $config = $this->module->getAutoloaderConfig(); + $this->assertInternalType('array', $config, 'config is array'); + } + + /** + * {@inheritDoc} + */ + protected function setUp() + { + parent::setUp(); + + $this->module = new Module(); + } +} diff --git a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php new file mode 100644 index 0000000..192ee00 --- /dev/null +++ b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php @@ -0,0 +1,36 @@ + + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModuleTest\Mvc\Service; + +use DOMPDFModule\Mvc\Service\ViewPdfRendererFactory; +use DOMPDFModuleTest\Framework\TestCase; + +class ViewPdfRendererFactoryTest extends TestCase +{ + public function testCreatesService() + { + $factory = new ViewPdfRendererFactory(); + + /* @var $renderer \DOMPDFModule\View\Renderer\PdfRenderer */ + $instance = $factory->createService($this->getServiceManager()); + + $this->assertInstanceOf('\DOMPDFModule\View\Renderer\PdfRenderer', $instance); + } +} diff --git a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php new file mode 100644 index 0000000..f024abc --- /dev/null +++ b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php @@ -0,0 +1,36 @@ + + * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModuleTest\Mvc\Service; + +use DOMPDFModule\Mvc\Service\ViewPdfStrategyFactory; +use DOMPDFModuleTest\Framework\TestCase; + +class ViewPdfStrategyFactoryTest extends TestCase +{ + public function testCreatesService() + { + $factory = new ViewPdfStrategyFactory(); + + /* @var $renderer \DOMPDFModule\View\Strategy\PdfStrategy */ + $instance = $factory->createService($this->getServiceManager()); + + $this->assertInstanceOf('\DOMPDFModule\View\Strategy\PdfStrategy', $instance); + } +} From 471e8b5159710c4c9b6db8485f6ed22eeb9131e3 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Tue, 1 Nov 2016 20:11:28 -0400 Subject: [PATCH 11/27] Expanded test coverage (#52) --- .../Service/ViewPdfRendererFactoryTest.php | 2 +- .../Service/ViewPdfStrategyFactoryTest.php | 2 +- .../View/Strategy/PdfStrategyTest.php | 56 +++++++++++++++++-- 3 files changed, 53 insertions(+), 7 deletions(-) diff --git a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php index 192ee00..761e33d 100644 --- a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php +++ b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfRendererFactoryTest.php @@ -28,7 +28,7 @@ public function testCreatesService() { $factory = new ViewPdfRendererFactory(); - /* @var $renderer \DOMPDFModule\View\Renderer\PdfRenderer */ + /* @var $instance \DOMPDFModule\View\Renderer\PdfRenderer */ $instance = $factory->createService($this->getServiceManager()); $this->assertInstanceOf('\DOMPDFModule\View\Renderer\PdfRenderer', $instance); diff --git a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php index f024abc..a4735b0 100644 --- a/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php +++ b/tests/DOMPDFModuleTest/Mvc/Service/ViewPdfStrategyFactoryTest.php @@ -28,7 +28,7 @@ public function testCreatesService() { $factory = new ViewPdfStrategyFactory(); - /* @var $renderer \DOMPDFModule\View\Strategy\PdfStrategy */ + /* @var $instance \DOMPDFModule\View\Strategy\PdfStrategy */ $instance = $factory->createService($this->getServiceManager()); $this->assertInstanceOf('\DOMPDFModule\View\Strategy\PdfStrategy', $instance); diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 18fc896..79868e1 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -19,6 +19,8 @@ namespace DOMPDFModuleTest\View\Strategy; +use Zend\EventManager\EventManager; +use Zend\View\Model\ViewModel; use Zend\View\Resolver\TemplatePathStack; use Zend\View\Renderer\PhpRenderer; use Zend\View\ViewEvent; @@ -46,21 +48,65 @@ class PdfStrategyTest extends TestCase private $resolver; /** - * @var PdfStrategy + * @var HttpResponse */ - private $strategy; + private $response; /** - * @var HttpResponse + * System under test. + * + * @var PdfStrategy */ - private $response; + private $strategy; - public function testPdfModelSelectsPdfStrategy() + public function testEventSubscribers() + { + $manager = new EventManager(); + + $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener before attach'); + $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener before attach'); + + $this->strategy->attach($manager); + + $this->assertCount(1, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener after attach'); + $this->assertCount(1, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener after attach'); + + $this->strategy->detach($manager); + + $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener after detach'); + $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener after detach'); + } + + public function testSelectsRendererWhenProvidedPdfModel() { $this->event->setModel(new PdfModel()); $result = $this->strategy->selectRenderer($this->event); $this->assertSame($this->renderer, $result); } + + public function testDoesNotSelectRendererWhenNotProvidedPdfModel() + { + $this->event->setModel(new ViewModel()); + $result = $this->strategy->selectRenderer($this->event); + $this->assertNull($result); + } + + public function testDoesNotRenderPdfWhenRenderMismatch() + { + $this->event->setRenderer(new PhpRenderer()); + $result = $this->strategy->injectResponse($this->event); + $this->assertNull($result); + } + + public function testDoesNotRenderPdfWhenResultIsNotString() + { + $this->event->setRenderer($this->renderer); + $this->event->setResult(new \stdClass()); + + $result = $this->strategy->injectResponse($this->event); + + $this->assertNull($result); + } public function testContentTypeResponseHeader() { From 47191ac24fcf9b1929412d013256429ec150669e Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Tue, 1 Nov 2016 22:02:14 -0400 Subject: [PATCH 12/27] Limit zend-mvc version to avoid BC breaks. (#53) Limit allowing unsupported versions of zend-mvc. Fixed typo with required zend-console version. --- composer.json | 6 +++--- composer.lock | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 2cb095b..746456c 100644 --- a/composer.json +++ b/composer.json @@ -16,14 +16,14 @@ "zendframework/zend-loader": "^2.1.6", "zendframework/zend-servicemanager": "^2.1.6", "zendframework/zend-modulemanager": "^2.1.6", - "zendframework/zend-mvc": "^2.1.6", + "zendframework/zend-mvc": "^2.1.6 <2.7", "zendframework/zend-view": "^2.1.6", "zendframework/zend-serializer": "^2.1.6", "zendframework/zend-log": "^2.1.6", "zendframework/zend-i18n": "^2.1.6", "zendframework/zend-http": "^2.1.6", - "dompdf/dompdf": "^0.6.0", - "zendframework/zend-console": "2.5.0" + "zendframework/zend-console": "^2.1.6", + "dompdf/dompdf": "^0.6.0" }, "require-dev": { "phpunit/phpunit": "^4.8.27", diff --git a/composer.lock b/composer.lock index 28bda2b..9989e68 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "a99474b87097d42c8c7700cdbe796094", + "content-hash": "816379d996fa6452c7087bc49d24371a", "packages": [ { "name": "dompdf/dompdf", @@ -83,28 +83,28 @@ }, { "name": "zendframework/zend-console", - "version": "2.5.0", + "version": "2.5.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-console.git", - "reference": "59b467b36c40b767e3c1bac1310031073f00ce28" + "reference": "ad425c45444a76d6559df45df14291940c6883f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-console/zipball/59b467b36c40b767e3c1bac1310031073f00ce28", - "reference": "59b467b36c40b767e3c1bac1310031073f00ce28", + "url": "https://api.github.com/repos/zendframework/zend-console/zipball/ad425c45444a76d6559df45df14291940c6883f1", + "reference": "ad425c45444a76d6559df45df14291940c6883f1", "shasum": "" }, "require": { "php": ">=5.3.23", - "zendframework/zend-stdlib": "~2.5.0" + "zendframework/zend-stdlib": "~2.5" }, "require-dev": { "fabpot/php-cs-fixer": "1.7.*", "phpunit/phpunit": "~4.0", - "zendframework/zend-filter": "~2.5.0", - "zendframework/zend-json": "~2.5.0", - "zendframework/zend-validator": "~2.5.0" + "zendframework/zend-filter": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-validator": "~2.5" }, "suggest": { "zendframework/zend-filter": "To support DefaultRouteMatcher usage", @@ -131,7 +131,7 @@ "console", "zf2" ], - "time": "2015-06-03T14:05:33+00:00" + "time": "2015-06-03T15:32:00+00:00" }, { "name": "zendframework/zend-escaper", From 38ccd51f24e5fb98431296b9ce7cd3ab61213e12 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Tue, 1 Nov 2016 22:09:44 -0400 Subject: [PATCH 13/27] Added badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef51621..df0efbb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ DOMPDFModule ============ -[![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) [![Test Coverage](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/coverage.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule/coverage) +[![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) [![Test Coverage](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/coverage.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule/coverage) [![Total Downloads](https://poser.pugx.org/dino/dompdf-module/downloads)](https://packagist.org/packages/dino/dompdf-module) [![License](https://poser.pugx.org/dino/dompdf-module/license)](https://packagist.org/packages/dino/dompdf-module) The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal effort on the consumer's end. From 9ec2c5847b8a6e56eae03619655daaf165f6eb96 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 23 Sep 2017 13:19:59 -0400 Subject: [PATCH 14/27] Fixed TravisCI build to properly use PHP53 nodes. (#59) --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index e8a5477..e635df1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,17 +2,18 @@ language: php matrix: fast_finish: true + include: + - php: 5.3 + dist: precise php: - - 5.3 - 5.4 - 5.5 - 5.6 - 7.0 -before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install +install: + - composer install --prefer-dist script: - vendor/bin/phpcs --standard=PSR2 src && vendor/bin/phpcs --standard=PSR2 config && vendor/bin/phpcs --standard=PSR2 tests && vendor/bin/phpunit tests -v -c tests/phpunit.xml && vendor/bin/phpmd config,src,tests text cleancode,codesize,controversial,design,naming,unusedcode From f8013c81c3ede943ebec556b896f312ce1ce3b20 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 23 Sep 2017 14:47:21 -0400 Subject: [PATCH 15/27] Set minimum ZF2 version to 2.4 to align with ZF LTS. (#60) * Set minimum ZF2 version to 2.4 to align with ZF LTS. * Fix support for zend-mvc 2.7+ --- .travis.yml | 15 + composer.json | 20 +- composer.lock | 294 +++++++++++------- .../Mvc/Service/ViewPdfRendererFactory.php | 10 +- .../View/Strategy/PdfStrategyTest.php | 18 -- 5 files changed, 219 insertions(+), 138 deletions(-) diff --git a/.travis.yml b/.travis.yml index e635df1..c5f084d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,22 @@ language: php +env: + - ZF_VERSION=^2.4 + - ZF_VERSION=2.4.* + - ZF_VERSION=2.5.* + matrix: fast_finish: true include: - php: 5.3 dist: precise + env: ZF_VERSION=^2.4 + - php: 5.3 + dist: precise + env: ZF_VERSION=2.4.* + - php: 5.3 + dist: precise + env: ZF_VERSION=2.5.* php: - 5.4 @@ -12,6 +24,9 @@ php: - 5.6 - 7.0 +before_install: + - composer require --update-with-dependencies zendframework/zend-loader:${ZF_VERSION} zendframework/zend-servicemanager:${ZF_VERSION} zendframework/zend-modulemanager:${ZF_VERSION} zendframework/zend-mvc:${ZF_VERSION} zendframework/zend-view:${ZF_VERSION} zendframework/zend-serializer:${ZF_VERSION} zendframework/zend-log:${ZF_VERSION} zendframework/zend-i18n:${ZF_VERSION} zendframework/zend-http:${ZF_VERSION} zendframework/zend-console:${ZF_VERSION} + install: - composer install --prefer-dist diff --git a/composer.json b/composer.json index 746456c..9ffe59c 100644 --- a/composer.json +++ b/composer.json @@ -13,16 +13,16 @@ ], "require": { "php": ">=5.3.29", - "zendframework/zend-loader": "^2.1.6", - "zendframework/zend-servicemanager": "^2.1.6", - "zendframework/zend-modulemanager": "^2.1.6", - "zendframework/zend-mvc": "^2.1.6 <2.7", - "zendframework/zend-view": "^2.1.6", - "zendframework/zend-serializer": "^2.1.6", - "zendframework/zend-log": "^2.1.6", - "zendframework/zend-i18n": "^2.1.6", - "zendframework/zend-http": "^2.1.6", - "zendframework/zend-console": "^2.1.6", + "zendframework/zend-loader": "^2.4", + "zendframework/zend-servicemanager": "^2.4", + "zendframework/zend-modulemanager": "^2.4", + "zendframework/zend-mvc": "^2.4", + "zendframework/zend-view": "^2.4", + "zendframework/zend-serializer": "^2.4", + "zendframework/zend-log": "^2.4", + "zendframework/zend-i18n": "^2.4", + "zendframework/zend-http": "^2.4", + "zendframework/zend-console": "^2.4", "dompdf/dompdf": "^0.6.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 9989e68..d253050 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,39 @@ "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": "816379d996fa6452c7087bc49d24371a", + "content-hash": "2cbd61031a822403d4f58e17be8e0edc", "packages": [ + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "time": "2017-02-14T19:40:03+00:00" + }, { "name": "dompdf/dompdf", "version": "v0.6.2", @@ -81,6 +112,102 @@ "homepage": "https://github.com/PhenX/php-font-lib", "time": "2014-02-01T15:22:28+00:00" }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, { "name": "zendframework/zend-console", "version": "2.5.1", @@ -354,35 +481,35 @@ }, { "name": "zendframework/zend-http", - "version": "2.5.1", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-http.git", - "reference": "6cc6dee9a27fc07e0167d8779ab2258747108ed5" + "reference": "09f4d279f46d86be63171ff62ee0f79eca878678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-http/zipball/6cc6dee9a27fc07e0167d8779ab2258747108ed5", - "reference": "6cc6dee9a27fc07e0167d8779ab2258747108ed5", + "url": "https://api.github.com/repos/zendframework/zend-http/zipball/09f4d279f46d86be63171ff62ee0f79eca878678", + "reference": "09f4d279f46d86be63171ff62ee0f79eca878678", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-loader": "~2.5", - "zendframework/zend-stdlib": "~2.5", - "zendframework/zend-uri": "~2.5", - "zendframework/zend-validator": "~2.5" + "php": "^5.5 || ^7.0", + "zendframework/zend-loader": "^2.5", + "zendframework/zend-stdlib": "^2.5 || ^3.0", + "zendframework/zend-uri": "^2.5", + "zendframework/zend-validator": "^2.5" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-config": "~2.5" + "phpunit/phpunit": "^4.0", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" } }, "autoload": { @@ -400,7 +527,7 @@ "http", "zf2" ], - "time": "2015-06-03T15:32:01+00:00" + "time": "2017-01-31T14:41:02+00:00" }, { "name": "zendframework/zend-i18n", @@ -617,20 +744,21 @@ }, { "name": "zendframework/zend-log", - "version": "2.5.1", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-log.git", - "reference": "89cd787661796f360c2686a8f3e8dbc42d5f115f" + "reference": "75bcfb813571705032571e2b471519b924b86fde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-log/zipball/89cd787661796f360c2686a8f3e8dbc42d5f115f", - "reference": "89cd787661796f360c2686a8f3e8dbc42d5f115f", + "url": "https://api.github.com/repos/zendframework/zend-log/zipball/75bcfb813571705032571e2b471519b924b86fde", + "reference": "75bcfb813571705032571e2b471519b924b86fde", "shasum": "" }, "require": { - "php": ">=5.3.23", + "php": ">=5.5", + "psr/log": "~1.0", "zendframework/zend-servicemanager": "~2.5", "zendframework/zend-stdlib": "~2.5" }, @@ -646,18 +774,18 @@ "zendframework/zend-validator": "~2.5" }, "suggest": { - "ext-mongo": "*", - "zendframework/zend-console": "Zend\\Console component", - "zendframework/zend-db": "Zend\\Db component", - "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML formatter", - "zendframework/zend-mail": "Zend\\Mail component", - "zendframework/zend-validator": "Zend\\Validator component" + "ext-mongo": "mongodb extetension to use MongoDB writer", + "zendframework/zend-console": "Zend\\Console component to use the RequestID log processor", + "zendframework/zend-db": "Zend\\Db component to use the database log writer", + "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML log formatter", + "zendframework/zend-mail": "Zend\\Mail component to use the email log writer", + "zendframework/zend-validator": "Zend\\Validator component to block invalid log messages" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" } }, "autoload": { @@ -676,7 +804,7 @@ "logging", "zf2" ], - "time": "2015-06-03T15:32:02+00:00" + "time": "2015-07-20T17:41:08+00:00" }, { "name": "zendframework/zend-math", @@ -732,22 +860,22 @@ }, { "name": "zendframework/zend-modulemanager", - "version": "2.5.1", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-modulemanager.git", - "reference": "80592b9ba35a5f91978235c458851cc3e914ae90" + "reference": "afaf873a3b420ba017933c15eb2a93dff433a7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/80592b9ba35a5f91978235c458851cc3e914ae90", - "reference": "80592b9ba35a5f91978235c458851cc3e914ae90", + "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/afaf873a3b420ba017933c15eb2a93dff433a7d1", + "reference": "afaf873a3b420ba017933c15eb2a93dff433a7d1", "shasum": "" }, "require": { - "php": ">=5.3.23", + "php": ">=5.5", "zendframework/zend-eventmanager": "~2.5", - "zendframework/zend-stdlib": "~2.5" + "zendframework/zend-stdlib": ">=2.5.0,<2.7.0" }, "require-dev": { "fabpot/php-cs-fixer": "1.7.*", @@ -787,28 +915,28 @@ "modulemanager", "zf2" ], - "time": "2015-06-03T15:32:02+00:00" + "time": "2015-09-22T17:21:13+00:00" }, { "name": "zendframework/zend-mvc", - "version": "2.5.1", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-mvc.git", - "reference": "a22422d1d17f3afa031de2be5453f45109e4b7f4" + "reference": "bae0da8318323da7dd71d64aa8054f91f782951b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/a22422d1d17f3afa031de2be5453f45109e4b7f4", - "reference": "a22422d1d17f3afa031de2be5453f45109e4b7f4", + "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/bae0da8318323da7dd71d64aa8054f91f782951b", + "reference": "bae0da8318323da7dd71d64aa8054f91f782951b", "shasum": "" }, "require": { - "php": ">=5.3.23", + "php": ">=5.5", "zendframework/zend-eventmanager": "~2.5", "zendframework/zend-form": "~2.5", "zendframework/zend-servicemanager": "~2.5", - "zendframework/zend-stdlib": "~2.5" + "zendframework/zend-stdlib": ">=2.5.0,<2.7.0" }, "require-dev": { "fabpot/php-cs-fixer": "1.7.*", @@ -846,7 +974,6 @@ "zendframework/zend-modulemanager": "Zend\\ModuleManager component", "zendframework/zend-serializer": "Zend\\Serializer component", "zendframework/zend-session": "Zend\\Session component for FlashMessenger, PRG, and FPRG plugins", - "zendframework/zend-stdlib": "Zend\\Stdlib component", "zendframework/zend-text": "Zend\\Text component", "zendframework/zend-uri": "Zend\\Uri component", "zendframework/zend-validator": "Zend\\Validator component", @@ -874,7 +1001,7 @@ "mvc", "zf2" ], - "time": "2015-06-03T15:32:02+00:00" + "time": "2015-09-22T21:12:14+00:00" }, { "name": "zendframework/zend-serializer", @@ -930,22 +1057,24 @@ }, { "name": "zendframework/zend-servicemanager", - "version": "2.5.1", + "version": "2.7.8", "source": { "type": "git", "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56" + "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/3b22c403e351d92526c642cba0bd810bc22e1c56", - "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/2ae3b6e4978ec2e9ff52352e661946714ed989f9", + "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9", "shasum": "" }, "require": { - "php": ">=5.3.23" + "container-interop/container-interop": "~1.0", + "php": "^5.5 || ^7.0" }, "require-dev": { + "athletic/athletic": "dev-master", "fabpot/php-cs-fixer": "1.7.*", "phpunit/phpunit": "~4.0", "zendframework/zend-di": "~2.5", @@ -958,8 +1087,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.7-dev", + "dev-develop": "3.0-dev" } }, "autoload": { @@ -976,7 +1105,7 @@ "servicemanager", "zf2" ], - "time": "2015-06-03T15:32:02+00:00" + "time": "2016-12-19T19:14:29+00:00" }, { "name": "zendframework/zend-stdlib", @@ -1149,20 +1278,20 @@ }, { "name": "zendframework/zend-view", - "version": "2.5.1", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-view.git", - "reference": "d74c7c90df6372154cdc10c2aecf7f4c0175ad73" + "reference": "f1b682652045b126e0eb0852a1c9fb76b21dfcdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-view/zipball/d74c7c90df6372154cdc10c2aecf7f4c0175ad73", - "reference": "d74c7c90df6372154cdc10c2aecf7f4c0175ad73", + "url": "https://api.github.com/repos/zendframework/zend-view/zipball/f1b682652045b126e0eb0852a1c9fb76b21dfcdd", + "reference": "f1b682652045b126e0eb0852a1c9fb76b21dfcdd", "shasum": "" }, "require": { - "php": ">=5.3.23", + "php": "^5.5 || ^7.0", "zendframework/zend-eventmanager": "~2.5", "zendframework/zend-loader": "~2.5", "zendframework/zend-stdlib": "~2.5" @@ -1228,7 +1357,7 @@ "view", "zf2" ], - "time": "2015-06-03T15:32:03+00:00" + "time": "2016-01-19T20:49:13+00:00" } ], "packages-dev": [ @@ -2086,53 +2215,6 @@ ], "time": "2015-10-02T06:51:40+00:00" }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, { "name": "satooshi/php-coveralls", "version": "v1.0.1", diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php index 19ff595..b9e5fc2 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php @@ -13,6 +13,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author Raymond J. Kolbe + * @author Márcio Dias * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe * @license http://www.opensource.org/licenses/mit-license.php MIT License */ @@ -33,13 +34,14 @@ class ViewPdfRendererFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $viewManager = $serviceLocator->get('ViewManager'); + $resolver = $serviceLocator->get('ViewResolver'); + $renderer = $serviceLocator->get('ViewRenderer'); $pdfRenderer = new PdfRenderer(); - $pdfRenderer->setResolver($viewManager->getResolver()); - $pdfRenderer->setHtmlRenderer($viewManager->getRenderer()); + $pdfRenderer->setResolver($resolver); + $pdfRenderer->setHtmlRenderer($renderer); $pdfRenderer->setEngine($serviceLocator->get('dompdf')); - + return $pdfRenderer; } } diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 79868e1..55968a0 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -59,24 +59,6 @@ class PdfStrategyTest extends TestCase */ private $strategy; - public function testEventSubscribers() - { - $manager = new EventManager(); - - $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener before attach'); - $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener before attach'); - - $this->strategy->attach($manager); - - $this->assertCount(1, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener after attach'); - $this->assertCount(1, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener after attach'); - - $this->strategy->detach($manager); - - $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RENDERER), 'Renderer listener after detach'); - $this->assertCount(0, $manager->getListeners(ViewEvent::EVENT_RESPONSE), 'Response listener after detach'); - } - public function testSelectsRendererWhenProvidedPdfModel() { $this->event->setModel(new PdfModel()); From 3abac04ffe57ef53688e24aa037ddab7319e1811 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 23 Sep 2017 16:11:53 -0400 Subject: [PATCH 16/27] Added initial versions of issue and pull request templates for GitHub. (#61) --- .github/ISSUE_TEMPLATE.md | 10 ++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 14 ++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..5229d9b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,10 @@ +## Observed Behavior +Provide a clear and concise description of observed behavior. Provide any logs or screenshots that could be helpful. + +## Expected Behavior +Provide a clear and concise description of expected or desired behavior. + +## Steps to Reproduce +* Step 1 +* Step 2 +* Step n diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..370228e --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ +## Change Profile + +| Question | Answer +| ------------- | --- +| New feature | yes/no +| Bug fix | yes/no +| BC breaks | yes/no +| Passing tests | yes/no + +## Description +Provide a clear and concise description of change. + +## Reason +Provide a clear and concise reason for the change. From ec58503c63c7725b1dc8a25e5b5d9257f7feeb95 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 23 Sep 2017 16:13:57 -0400 Subject: [PATCH 17/27] Added initial .gitignore file. --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a182b7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Composer files +composer.phar +vendor/ + +# Local configs +config/autoload/*.local.php From 8090ab387080778beca3ab9a7f02d0ce691ffc3d Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Thu, 28 Sep 2017 22:22:26 -0400 Subject: [PATCH 18/27] Create consistent build system for both local and CI build environments (#62) * Introduced consistent local build environment based on Docker and a simple staged build script. * Fixed minimum PHP version in TravisCI build. --- .gitattributes | 9 ++++ .gitignore | 3 ++ .travis.yml | 12 ++--- Dockerfile | 17 +++++++ README.md | 31 +++++++++++- build.sh | 131 +++++++++++++++++++++++++++++++++++++++++++++++++ build/.gitkeep | 0 7 files changed, 193 insertions(+), 10 deletions(-) create mode 100644 .gitattributes create mode 100644 Dockerfile create mode 100755 build.sh create mode 100644 build/.gitkeep diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1e7f0a4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +.github export-ignore +.gitattributes export-ignore +.gitignore export-ignore +.travis.yml export-ignore +build export-ignore +build.sh export-ignore +composer.lock export-ignore +Dockerfile export-ignore +tests export-ignore diff --git a/.gitignore b/.gitignore index a182b7b..d85f061 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ vendor/ # Local configs config/autoload/*.local.php + +# Build directories +build/* \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index c5f084d..43c099c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,13 +8,13 @@ env: matrix: fast_finish: true include: - - php: 5.3 + - php: 5.3.29 dist: precise env: ZF_VERSION=^2.4 - - php: 5.3 + - php: 5.3.29 dist: precise env: ZF_VERSION=2.4.* - - php: 5.3 + - php: 5.3.29 dist: precise env: ZF_VERSION=2.5.* @@ -27,11 +27,7 @@ php: before_install: - composer require --update-with-dependencies zendframework/zend-loader:${ZF_VERSION} zendframework/zend-servicemanager:${ZF_VERSION} zendframework/zend-modulemanager:${ZF_VERSION} zendframework/zend-mvc:${ZF_VERSION} zendframework/zend-view:${ZF_VERSION} zendframework/zend-serializer:${ZF_VERSION} zendframework/zend-log:${ZF_VERSION} zendframework/zend-i18n:${ZF_VERSION} zendframework/zend-http:${ZF_VERSION} zendframework/zend-console:${ZF_VERSION} -install: - - composer install --prefer-dist - -script: - - vendor/bin/phpcs --standard=PSR2 src && vendor/bin/phpcs --standard=PSR2 config && vendor/bin/phpcs --standard=PSR2 tests && vendor/bin/phpunit tests -v -c tests/phpunit.xml && vendor/bin/phpmd config,src,tests text cleancode,codesize,controversial,design,naming,unusedcode +script: ./build.sh after_success: - vendor/bin/test-reporter \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0470888 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +ARG PHP_VERSION=7.0 +FROM php:${PHP_VERSION} + +ENV COMPOSER_HOME=/var/lib/composer +WORKDIR /opt/app + +RUN apt-get update -y && \ + apt-get install -y git zlib1g-dev && \ + docker-php-ext-install zip && \ + pecl install xdebug-2.5.0 && \ + docker-php-ext-enable xdebug && \ + php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');" && \ + php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); exit(1); } echo PHP_EOL;" && \ + php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer && \ + rm -rf /tmp/composer-setup.php + +ENTRYPOINT ["./build.sh" ] diff --git a/README.md b/README.md index df0efbb..fee9401 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ DOMPDFModule [![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) [![Code Climate](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/gpa.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule) [![Test Coverage](https://codeclimate.com/github/raykolbe/DOMPDFModule/badges/coverage.svg)](https://codeclimate.com/github/raykolbe/DOMPDFModule/coverage) [![Total Downloads](https://poser.pugx.org/dino/dompdf-module/downloads)](https://packagist.org/packages/dino/dompdf-module) [![License](https://poser.pugx.org/dino/dompdf-module/license)](https://packagist.org/packages/dino/dompdf-module) -The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal -effort on the consumer's end. +The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal effort on the consumer's end. ## Requirements - [Zend Framework 2](http://www.github.com/zendframework/zf2) @@ -64,6 +63,34 @@ class ReportController extends AbstractActionController } } ``` +## Development +So you want to contribute? Fantastic! Don't worry, it's easy. Local builds, tests, and code quality checks can be executed using [Docker](https://www.docker.com/). + +### Quick Start +1. Install [Docker CE](https://www.docker.com/community-edition). +2. Run the following from your terminal: + +``` +docker build -t dino/dompdf-module . +docker run -v composer-cache:/var/lib/composer -v ${PWD}:/opt/app dino/dompdf-module +``` + +Super easy, right? Here's a quick walk through as to what's going on. + +* `docker build -t dino/dompdf-module .` builds a docker image that will be used for each run (i.e. each time `docker run` is executed) and tags it with the name `dino/dompdf-module`. +* `docker run -v composer-cache:/var/lib/composer -v ${PWD}:/opt/app dino/dompdf-module` runs the default build in a new Docker container derived from the image tagged `dino/dompdf-module`. The root of the project and PHP Composer cache volume are mounted so that artifacts generated during the build process are available to you on your local machine. + +**Note:** You only need to run the first command once in order to build the image. The second command is what executes the build (build, tests, code quality checks, etc.). + +### Other Supported PHP Versions +By default, builds executed using Docker are done so using the [latest stable version of PHP](http://php.net/supported-versions.php). If you're adventurous you can execute builds against other [supported versions](http://php.net/supported-versions.php) of PHP. + +**PHP 5.6** + +``` +docker build --build-arg PHP_VERSION=5.6 --tag dino/dompdf-module-php56 . +docker run -v composer-cache:/var/lib/composer -v ${PWD}:/opt/app dino/dompdf-module-php56 +``` ## To-do - Add command line support. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..a0e0ee1 --- /dev/null +++ b/build.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +# ------------------------------------------------------------------ +# [Raymond J Kolbe] Build Tools +# Simple build tools pipeline inspired by ABC +# http://abc.tools.qafoo.com/ and Ant Maven +# https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference +# ------------------------------------------------------------------ + +set -euo pipefail + +readonly PROJECT_ROOT=${PWD} +readonly BUILD_LOGS=${PROJECT_ROOT}/build/logs +readonly BUILD_DIST=${PROJECT_ROOT}/build/dist +readonly VENDOR_BIN=${PROJECT_ROOT}/vendor/bin + +echo "Starting new build..." + +# ------------------------------------------------------------------ +# Clean +# +# Remove all files generated by the previous build +# ------------------------------------------------------------------ +echo "Cleaning project space..."; + +rm -rf ${PROJECT_ROOT}/vendor +rm -rf ${BUILD_LOGS} +rm -rf ${BUILD_DIST} + +# ------------------------------------------------------------------ +# Validate +# +# Validate the project is correct and all necessary information is available. +# ------------------------------------------------------------------ +echo "Validating project space..."; + +# Ensure PHP interpreter exists. +which php &> /dev/null || { + echo 'PHP interpreter not found. Aborting build.' + exit 1 +} + +# Ensure supported PHP version (5.3.29+) +php -r 'exit((int) !(PHP_VERSION_ID >= 50329));' || { + echo 'Unsupported version of PHP. Aborting build.' + exit 1 +} + +# Ensure PHP Composer exists. +which composer &> /dev/null || { + echo 'PHP Composer not found. Aborting build.' + exit 1 +} + +composer validate --strict + +# ------------------------------------------------------------------ +# Initialize +# +# Initialize build state, e.g. set properties or create directories. +# ------------------------------------------------------------------ +echo "Initializing project space..."; + +mkdir ${BUILD_LOGS} +mkdir ${BUILD_DIST} + +# ------------------------------------------------------------------ +# Compile +# +# Compiles the project source code. For PHP this means, that a lint check will be run on the source files. +# ------------------------------------------------------------------ +echo "Compiling project..."; + +composer --prefer-dist install + +php -l ${PROJECT_ROOT}/src +php -l ${PROJECT_ROOT}/config +php -l ${PROJECT_ROOT}/tests +php -l ${PROJECT_ROOT}/Module.php + +# ------------------------------------------------------------------ +# Test +# +# Run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed. +# ------------------------------------------------------------------ +echo "Executing tests..."; + +${VENDOR_BIN}/phpunit ${PROJECT_ROOT}/tests -v -c ${PROJECT_ROOT}/tests/phpunit.xml + +# ------------------------------------------------------------------ +# Package +# +# Package the code in its distributable format (i.e. zip, phar, etc.). +# ------------------------------------------------------------------ +echo "Packaging artifacts..."; + +# PHP Composer relies on git archives so we mimic what a dist looks like. +git archive --format=tar.gz -o ${BUILD_DIST}/SNAPSHOT.tar.gz HEAD + +# ------------------------------------------------------------------ +# Integration test +# +# Process and deploy the package if necessary into an environment where integration tests can be run. +# ------------------------------------------------------------------ +echo "Executing integration tests..."; +# TODO Placeholder for integration test suite. + +# ------------------------------------------------------------------ +# Verify +# +# Static analysis and code quality checks. +# ------------------------------------------------------------------ +echo "Verifying source..."; + +${VENDOR_BIN}/phpcs --standard=PSR2 src +${VENDOR_BIN}/phpcs --standard=PSR2 config +${VENDOR_BIN}/phpcs --standard=PSR2 tests +${VENDOR_BIN}/phpmd config,src,tests text cleancode,codesize,controversial,design,naming,unusedcode + +# ------------------------------------------------------------------ +# Install +# ------------------------------------------------------------------ +echo "Installing package..."; +# TODO Placeholder for local installation. + +# ------------------------------------------------------------------ +# Deploy +# ------------------------------------------------------------------ +echo "Deploying package..."; +# TODO Placeholder for automatic publishing of artifact. + +echo "Build complete..."; diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 0000000..e69de29 From 6666286dd10458075552da039340080892c6b767 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 30 Sep 2017 09:49:23 -0400 Subject: [PATCH 19/27] Added missing tests specific to PdfModel and DOMPDFFactory. Removed duplicate service locator test. (#63) --- README.md | 2 +- src/DOMPDFModule/View/Model/PdfModel.php | 2 +- .../Service/DOMPDFFactoryTest.php | 91 +++++++++++++++++++ .../View/Model/PdfModelTest.php | 72 +++++++++++++++ .../View/Service/DOMPDFTest.php | 33 ------- 5 files changed, 165 insertions(+), 35 deletions(-) create mode 100644 tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php create mode 100644 tests/DOMPDFModuleTest/View/Model/PdfModelTest.php delete mode 100644 tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php diff --git a/README.md b/README.md index fee9401..422d9b0 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ class ReportController extends AbstractActionController public function monthlyReportPdfAction() { $pdf = new PdfModel(); - $pdf->setOption('filename', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf" + $pdf->setOption('fileName', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf" $pdf->setOption('paperSize', 'a4'); // Defaults to "8x11" $pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait" diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index c2e9146..9e39ec4 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -33,7 +33,7 @@ class PdfModel extends ViewModel 'basePath' => '/', 'fileName' => null ); - + /** * PDF probably won't need to be captured into a * a parent container by default. diff --git a/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php b/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php new file mode 100644 index 0000000..bba483c --- /dev/null +++ b/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php @@ -0,0 +1,91 @@ + + * @copyright Copyright (c) 2017 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModule\Service; + +use \DOMPDF; +use DOMPDFModuleTest\Framework\TestCase; + +class DOMPDFFactoryTest extends TestCase +{ + /** + * System under test. + * + * @var DOMPDFFactory + */ + private $factory; + + public function testItCreatesAValidInstance() + { + $dompdf = $this->factory->createService($this->getServiceManager()); + + $this->assertInstanceOf('\DOMPDF', $dompdf); + $this->assertNotNullOptions($dompdf); + } + + public function testItCreatesUniqueInstances() + { + $firstInstance = $this->factory->createService($this->getServiceManager()); + $secondInstance = $this->factory->createService($this->getServiceManager()); + + $this->assertNotSame($firstInstance, $secondInstance); + } + + /** + * {@inheritdoc} + */ + protected function setUp() + { + parent::setUp(); + + $this->factory = new DOMPDFFactory(); + } + + /** + * Asserts that the given DOMPDF instance contains not null options for has options set. + * + * @param Dompdf $dompdf + */ + private function assertNotNullOptions(Dompdf $dompdf) + { + $this->assertNotNull($dompdf->get_option('temp_dir'), 'temp_dir'); + $this->assertNotNull($dompdf->get_option('font_dir'), 'font_dir'); + $this->assertNotNull($dompdf->get_option('font_cache'), 'font_cache'); + $this->assertNotNull($dompdf->get_option('chroot'), 'chroot'); + $this->assertNotNull($dompdf->get_option('log_output_file'), 'log_output_file'); + $this->assertNotNull($dompdf->get_option('default_media_type'), 'default_media_type'); + $this->assertNotNull($dompdf->get_option('default_paper_size'), 'default_paper_size'); + $this->assertNotNull($dompdf->get_option('default_font'), 'default_font'); + $this->assertNotNull($dompdf->get_option('dpi'), 'dpi'); + $this->assertNotNull($dompdf->get_option('font_height_ratio'), 'font_height_ratio'); + $this->assertNotNull($dompdf->get_option('enable_php'), 'enable_php'); + $this->assertNotNull($dompdf->get_option('enable_remote'), 'enable_remote'); + $this->assertNotNull($dompdf->get_option('enable_javascript'), 'enable_javascript'); + $this->assertNotNull($dompdf->get_option('enable_html5_parser'), 'enable_html5_parser'); + $this->assertNotNull($dompdf->get_option('enable_font_subsetting'), 'enable_font_subsetting'); + $this->assertNotNull($dompdf->get_option('debug_png'), 'debug_png'); + $this->assertNotNull($dompdf->get_option('debug_keep_temp'), 'debug_keep_temp'); + $this->assertNotNull($dompdf->get_option('debug_css'), 'debug_css'); + $this->assertNotNull($dompdf->get_option('debug_layout'), 'debug_layout'); + $this->assertNotNull($dompdf->get_option('debug_layout_lines'), 'debug_layout_lines'); + $this->assertNotNull($dompdf->get_option('debug_layout_blocks'), 'debug_layout_blocks'); + $this->assertNotNull($dompdf->get_option('debug_layout_inline'), 'debug_layout_inline'); + $this->assertNotNull($dompdf->get_option('debug_layout_padding_box'), 'debug_layout_padding_box'); + } +} diff --git a/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php new file mode 100644 index 0000000..6acbc6c --- /dev/null +++ b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php @@ -0,0 +1,72 @@ + + * @copyright Copyright (c) 2017 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModuleTest\View\Model; + +use DOMPDFModule\View\Model\PdfModel; + +class PdfModelTest extends \PHPUnit_Framework_TestCase +{ + /** + * System under test. + * + * @var PdfModel + */ + private $model; + + public function testItHasDefaultPaperSize() + { + $this->assertEquals('8x11', $this->model->getOption('paperSize')); + } + + public function testItHasDefaultPaperOrientation() + { + $this->assertEquals('portrait', $this->model->getOption('paperOrientation')); + } + + public function testItHasDefaultBasePath() + { + $this->assertEquals('/', $this->model->getOption('basePath')); + } + + public function testItHasDefaultFileName() + { + $this->assertNull($this->model->getOption('fileName')); + } + + public function testItIsTerminal() + { + $this->assertTrue($this->model->terminate()); + } + + public function testItDoesNotHaveCaptureToVariable() + { + $this->assertNull($this->model->captureTo()); + } + + /** + * {@inheritdoc} + */ + protected function setUp() + { + parent::setUp(); + + $this->model = new PdfModel(); + } +} diff --git a/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php b/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php deleted file mode 100644 index eac28bc..0000000 --- a/tests/DOMPDFModuleTest/View/Service/DOMPDFTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe - * @license http://www.opensource.org/licenses/mit-license.php MIT License - */ - -namespace DOMPDFModuleTest\Service; - -use DOMPDFModuleTest\Framework\TestCase; - -class PdfStrategyTest extends TestCase -{ - public function testUniqueInstancesFromFactory() - { - $dompdfInstance1 = $this->getServiceManager()->get('dompdf'); - $dompdfInstance2 = $this->getServiceManager()->get('dompdf'); - - $this->assertNotSame($dompdfInstance1, $dompdfInstance2); - } -} From 3450e7bf4811bb32c6ed459f043f311a6f174760 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sat, 30 Sep 2017 13:37:32 -0400 Subject: [PATCH 20/27] Added default PDF file name. (#64) --- src/DOMPDFModule/View/Model/PdfModel.php | 2 +- tests/DOMPDFModuleTest/View/Model/PdfModelTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index 9e39ec4..755b1a6 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -31,7 +31,7 @@ class PdfModel extends ViewModel 'paperSize' => '8x11', 'paperOrientation' => 'portrait', 'basePath' => '/', - 'fileName' => null + 'fileName' => 'untitled.pdf' ); /** diff --git a/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php index 6acbc6c..7698abc 100644 --- a/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php +++ b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php @@ -47,7 +47,7 @@ public function testItHasDefaultBasePath() public function testItHasDefaultFileName() { - $this->assertNull($this->model->getOption('fileName')); + $this->assertEquals('untitled.pdf', $this->model->getOption('fileName')); } public function testItIsTerminal() From 2ede51bcfd64ad4becfbbb8c085a656305bfbb5f Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 1 Oct 2017 11:23:30 -0400 Subject: [PATCH 21/27] Fixed filename option to correctly be fileName. (#65) --- src/DOMPDFModule/View/Strategy/PdfStrategy.php | 2 +- tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index 2da2030..7121551 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -118,7 +118,7 @@ public function injectResponse(ViewEvent $event) $response->setContent($result); $response->getHeaders()->addHeaderLine('content-type', 'application/pdf'); - $fileName = $event->getModel()->getOption('filename'); + $fileName = $event->getModel()->getOption('fileName'); if (isset($fileName)) { if (substr($fileName, -4) != '.pdf') { $fileName .= '.pdf'; diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 55968a0..e9e3e9f 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -115,7 +115,7 @@ public function testResponseHeadersWithFileName() { $model = new PdfModel(); $model->setTemplate('basic.phtml'); - $model->setOption('filename', 'testPdfFileName'); + $model->setOption('fileName', 'testPdfFileName'); $this->event->setModel($model); $this->event->setResponse($this->response); From 5eb45e635a619941d3439ae0ad4888ee009915e9 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 1 Oct 2017 11:47:11 -0400 Subject: [PATCH 22/27] Added safeguard to PdfRenderer to enforce PdfModel support only. (#66) --- .../View/Renderer/PdfRenderer.php | 17 ++- .../View/Renderer/PdfRendererTest.php | 116 ++++++++++++++++++ 2 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php diff --git a/src/DOMPDFModule/View/Renderer/PdfRenderer.php b/src/DOMPDFModule/View/Renderer/PdfRenderer.php index ee68736..64b9568 100644 --- a/src/DOMPDFModule/View/Renderer/PdfRenderer.php +++ b/src/DOMPDFModule/View/Renderer/PdfRenderer.php @@ -19,6 +19,8 @@ namespace DOMPDFModule\View\Renderer; +use DOMPDFModule\View\Model\PdfModel; +use Zend\View\Exception\InvalidArgumentException; use Zend\View\Renderer\RendererInterface as Renderer; use Zend\View\Resolver\ResolverInterface as Resolver; use DOMPDF; @@ -45,7 +47,12 @@ public function setEngine(DOMPDF $dompdf) $this->dompdf = $dompdf; return $this; } - + + /** + * {@inheritdoc} + * + * @return DOMPDF + */ public function getEngine() { return $this->dompdf; @@ -60,6 +67,14 @@ public function getEngine() */ public function render($nameOrModel, $values = null) { + if (!($nameOrModel instanceof PdfModel)) { + throw new InvalidArgumentException(sprintf( + '%s expects a PdfModel as the first argument; received "%s"', + __METHOD__, + (is_object($nameOrModel) ? get_class($nameOrModel) : gettype($nameOrModel)) + )); + } + $html = $this->getHtmlRenderer()->render($nameOrModel, $values); $paperSize = $nameOrModel->getOption('paperSize'); diff --git a/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php b/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php new file mode 100644 index 0000000..7a1019b --- /dev/null +++ b/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php @@ -0,0 +1,116 @@ + + * @copyright Copyright (c) 2017 Raymond J. Kolbe + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + +namespace DOMPDFModuleTest\View\Strategy; + +use Zend\View\Model\JsonModel; +use DOMPDFModuleTest\Framework\TestCase; +use DOMPDFModule\View\Model\PdfModel; +use DOMPDFModule\View\Renderer\PdfRenderer; + +class PdfRendererTest extends TestCase +{ + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $htmlRenderer; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $engine; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $resolver; + + /** + * System under test. + * + * @var PdfRenderer + */ + private $renderer; + + public function testItHasAnHtmlRenderer() + { + $this->assertInstanceOf('Zend\View\Renderer\RendererInterface', $this->renderer->getHtmlRenderer()); + } + + public function testItHasAnEngine() + { + $this->assertInstanceOf('DOMPDF', $this->renderer->getEngine()); + } + + public function testItRendersAPdfModel() + { + $this->htmlRenderer->expects($this->once())->method('render'); + + $this->engine->expects($this->once())->method('set_paper'); + $this->engine->expects($this->once())->method('set_base_path'); + $this->engine->expects($this->once())->method('load_html'); + $this->engine->expects($this->once())->method('render'); + $this->engine->expects($this->once())->method('output'); + + $this->renderer->render(new PdfModel()); + } + + /** + * @expectedException \Zend\View\Exception\InvalidArgumentException + */ + public function testItDoesNotRenderOtherModels() + { + $this->htmlRenderer->expects($this->never())->method('render'); + + $this->engine->expects($this->never())->method('render'); + $this->engine->expects($this->never())->method('output'); + + $this->renderer->render(new JsonModel()); + } + + /** + * @expectedException \Zend\View\Exception\InvalidArgumentException + */ + public function testItDoesNotRenderNamedModels() + { + $this->htmlRenderer->expects($this->never())->method('render'); + + $this->engine->expects($this->never())->method('render'); + $this->engine->expects($this->never())->method('output'); + + $this->renderer->render('named-model'); + } + + /** + * {@inheritdoc} + */ + protected function setUp() + { + parent::setUp(); + + $this->htmlRenderer = $this->getMock('Zend\View\Renderer\RendererInterface'); + $this->resolver = $this->getMock('Zend\View\Resolver\ResolverInterface'); + $this->engine = $this->getMockBuilder('DOMPDF')->disableOriginalConstructor()->getMock(); + + $this->renderer = new PdfRenderer(); + $this->renderer->setHtmlRenderer($this->htmlRenderer); + $this->renderer->setResolver($this->resolver); + $this->renderer->setEngine($this->engine); + } +} From 7f11506a22ebabb3aac5e800eada1d8e85e22916 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Sun, 8 Oct 2017 17:57:16 -0400 Subject: [PATCH 23/27] Added the ability to control how PDF is streamed to browser. (#67) --- README.md | 7 ++-- src/DOMPDFModule/View/Model/PdfModel.php | 7 +++- .../View/Strategy/PdfStrategy.php | 29 ++++++++-------- .../View/Model/PdfModelTest.php | 5 +++ .../View/Strategy/PdfStrategyTest.php | 34 ++++++++++++++++--- 5 files changed, 59 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 422d9b0..46ca935 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,10 @@ class ReportController extends AbstractActionController public function monthlyReportPdfAction() { $pdf = new PdfModel(); - $pdf->setOption('fileName', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf" - $pdf->setOption('paperSize', 'a4'); // Defaults to "8x11" - $pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait" + $pdf->setOption('fileName', 'monthly-report'); // "pdf" extension is automatically appended + $pdf->setOption('display', PdfModel::DISPLAY_ATTACHMENT); // Triggers browser to prompt "save as" dialog + $pdf->setOption('paperSize', 'a4'); // Defaults to "8x11" + $pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait" // To set view variables $pdf->setVariables(array( diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index 755b1a6..b424194 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -23,6 +23,10 @@ class PdfModel extends ViewModel { + const DISPLAY_INLINE = 'inline'; + const DISPLAY_ATTACHMENT = 'attachment'; + const DEFAULT_FILE_NAME = 'untitled.pdf'; + /** * Renderer options * @var array @@ -31,7 +35,8 @@ class PdfModel extends ViewModel 'paperSize' => '8x11', 'paperOrientation' => 'portrait', 'basePath' => '/', - 'fileName' => 'untitled.pdf' + 'fileName' => self::DEFAULT_FILE_NAME, + 'display' => self::DISPLAY_INLINE ); /** diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index 7121551..42f9f25 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -108,26 +108,27 @@ public function injectResponse(ViewEvent $event) } $result = $event->getResult(); - if (!is_string($result)) { - // @todo Potentially throw an exception here since we should *always* get back a result. + // No output to display. Good bye! return; } $response = $event->getResponse(); $response->setContent($result); - $response->getHeaders()->addHeaderLine('content-type', 'application/pdf'); - - $fileName = $event->getModel()->getOption('fileName'); - if (isset($fileName)) { - if (substr($fileName, -4) != '.pdf') { - $fileName .= '.pdf'; - } - - $response->getHeaders()->addHeaderLine( - 'Content-Disposition', - 'attachment; filename=' . $fileName - ); + + $model = $event->getModel(); + $options = $model->getOptions(); + + $fileName = $options['fileName']; + $dispositionType = $options['display']; + + if (substr($fileName, -4) != '.pdf') { + $fileName .= '.pdf'; } + + $headerValue = sprintf('%s; filename="%s"', $dispositionType, $fileName); + + $response->getHeaders()->addHeaderLine('Content-Type', 'application/pdf'); + $response->getHeaders()->addHeaderLine('Content-Disposition', $headerValue); } } diff --git a/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php index 7698abc..eece70a 100644 --- a/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php +++ b/tests/DOMPDFModuleTest/View/Model/PdfModelTest.php @@ -50,6 +50,11 @@ public function testItHasDefaultFileName() $this->assertEquals('untitled.pdf', $this->model->getOption('fileName')); } + public function testItHasDefaultDisplayOption() + { + $this->assertEquals(PdfModel::DISPLAY_INLINE, $this->model->getOption('display')); + } + public function testItIsTerminal() { $this->assertTrue($this->model->terminate()); diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index e9e3e9f..ac024b2 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -90,7 +90,7 @@ public function testDoesNotRenderPdfWhenResultIsNotString() $this->assertNull($result); } - public function testContentTypeResponseHeader() + public function testItAddsApplicationPdfContentType() { $model = new PdfModel(); $model->setTemplate('basic.phtml'); @@ -103,7 +103,7 @@ public function testContentTypeResponseHeader() $this->strategy->injectResponse($this->event); $headers = $this->event->getResponse()->getHeaders(); - $contentTypeHeader = $headers->get('content-type'); + $contentTypeHeader = $headers->get('Content-Type'); $this->assertInstanceOf('Zend\Http\Header\ContentType', $contentTypeHeader); $this->assertEquals($contentTypeHeader->getFieldValue(), 'application/pdf'); @@ -111,11 +111,12 @@ public function testContentTypeResponseHeader() ob_end_flush(); // Clear out any buffers held by renderers. } - public function testResponseHeadersWithFileName() + public function testItAddsAttachmentDispositionType() { $model = new PdfModel(); $model->setTemplate('basic.phtml'); $model->setOption('fileName', 'testPdfFileName'); + $model->setOption('display', PdfModel::DISPLAY_ATTACHMENT); $this->event->setModel($model); $this->event->setResponse($this->response); @@ -124,11 +125,34 @@ public function testResponseHeadersWithFileName() $this->strategy->injectResponse($this->event); - $headers = $this->event->getResponse()->getHeaders(); + $headers = $this->event->getResponse()->getHeaders(); $contentDisposition = $headers->get('Content-Disposition'); $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDisposition); - $this->assertEquals($contentDisposition->getFieldValue(), 'attachment; filename=testPdfFileName.pdf'); + $this->assertEquals($contentDisposition->getFieldValue(), 'attachment; filename="testPdfFileName.pdf"'); + + ob_end_flush(); // Clear out any buffers held by renderers. + } + + public function testItAddsInlineDispositionType() + { + $model = new PdfModel(); + $model->setTemplate('basic.phtml'); + $model->setOption('fileName', 'testPdfFileName'); + $model->setOption('display', PdfModel::DISPLAY_INLINE); + + $this->event->setModel($model); + $this->event->setResponse($this->response); + $this->event->setRenderer($this->renderer); + $this->event->setResult($this->renderer->render($model)); + + $this->strategy->injectResponse($this->event); + + $headers = $this->event->getResponse()->getHeaders(); + $contentDisposition = $headers->get('Content-Disposition'); + + $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDisposition); + $this->assertEquals($contentDisposition->getFieldValue(), 'inline; filename="testPdfFileName.pdf"'); ob_end_flush(); // Clear out any buffers held by renderers. } From a2e2e154ffc84c724ba6a2c1ae63a948d8fc0e1d Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Thu, 23 Nov 2017 09:23:41 -0500 Subject: [PATCH 24/27] Add support for Content-Length header in HTTP response. (#68) --- .../View/Strategy/PdfStrategy.php | 3 +- .../View/Strategy/PdfStrategyTest.php | 101 +++++++++++------- 2 files changed, 66 insertions(+), 38 deletions(-) diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index 42f9f25..adf10e4 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -128,7 +128,8 @@ public function injectResponse(ViewEvent $event) $headerValue = sprintf('%s; filename="%s"', $dispositionType, $fileName); - $response->getHeaders()->addHeaderLine('Content-Type', 'application/pdf'); $response->getHeaders()->addHeaderLine('Content-Disposition', $headerValue); + $response->getHeaders()->addHeaderLine('Content-Length', strlen($result)); + $response->getHeaders()->addHeaderLine('Content-Type', 'application/pdf'); } } diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index ac024b2..4fe04d6 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -19,7 +19,7 @@ namespace DOMPDFModuleTest\View\Strategy; -use Zend\EventManager\EventManager; +use Zend\Stdlib\ResponseInterface; use Zend\View\Model\ViewModel; use Zend\View\Resolver\TemplatePathStack; use Zend\View\Renderer\PhpRenderer; @@ -89,24 +89,21 @@ public function testDoesNotRenderPdfWhenResultIsNotString() $this->assertNull($result); } - + public function testItAddsApplicationPdfContentType() { $model = new PdfModel(); $model->setTemplate('basic.phtml'); - - $this->event->setModel($model); - $this->event->setResponse($this->response); - $this->event->setRenderer($this->renderer); - $this->event->setResult($this->renderer->render($model)); - - $this->strategy->injectResponse($this->event); - - $headers = $this->event->getResponse()->getHeaders(); - $contentTypeHeader = $headers->get('Content-Type'); - - $this->assertInstanceOf('Zend\Http\Header\ContentType', $contentTypeHeader); - $this->assertEquals($contentTypeHeader->getFieldValue(), 'application/pdf'); + + $this->execute($this->strategy, $this->event, $model); + + $response = $this->event->getResponse(); + $this->assertHeaderEqualTo( + $response, + 'Content-Type', + 'application/pdf', + 'content type' + ); ob_end_flush(); // Clear out any buffers held by renderers. } @@ -117,19 +114,16 @@ public function testItAddsAttachmentDispositionType() $model->setTemplate('basic.phtml'); $model->setOption('fileName', 'testPdfFileName'); $model->setOption('display', PdfModel::DISPLAY_ATTACHMENT); - - $this->event->setModel($model); - $this->event->setResponse($this->response); - $this->event->setRenderer($this->renderer); - $this->event->setResult($this->renderer->render($model)); - - $this->strategy->injectResponse($this->event); - - $headers = $this->event->getResponse()->getHeaders(); - $contentDisposition = $headers->get('Content-Disposition'); - - $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDisposition); - $this->assertEquals($contentDisposition->getFieldValue(), 'attachment; filename="testPdfFileName.pdf"'); + + $this->execute($this->strategy, $this->event, $model); + + $response = $this->event->getResponse(); + $this->assertHeaderEqualTo( + $response, + 'Content-Disposition', + 'attachment; filename="testPdfFileName.pdf"', + 'content disposition' + ); ob_end_flush(); // Clear out any buffers held by renderers. } @@ -141,18 +135,33 @@ public function testItAddsInlineDispositionType() $model->setOption('fileName', 'testPdfFileName'); $model->setOption('display', PdfModel::DISPLAY_INLINE); - $this->event->setModel($model); - $this->event->setResponse($this->response); - $this->event->setRenderer($this->renderer); - $this->event->setResult($this->renderer->render($model)); + $this->execute($this->strategy, $this->event, $model); + + $response = $this->event->getResponse(); + $this->assertHeaderEqualTo( + $response, + 'Content-Disposition', + 'inline; filename="testPdfFileName.pdf"', + 'content disposition' + ); + + ob_end_flush(); // Clear out any buffers held by renderers. + } - $this->strategy->injectResponse($this->event); + public function testItAddsContentLength() + { + $model = new PdfModel(); + $model->setTemplate('basic.phtml'); - $headers = $this->event->getResponse()->getHeaders(); - $contentDisposition = $headers->get('Content-Disposition'); + $this->execute($this->strategy, $this->event, $model); - $this->assertInstanceOf('Zend\Http\Header\ContentDisposition', $contentDisposition); - $this->assertEquals($contentDisposition->getFieldValue(), 'inline; filename="testPdfFileName.pdf"'); + $response = $this->event->getResponse(); + $this->assertHeaderEqualTo( + $response, + 'Content-Length', + 989, + 'content length' + ); ob_end_flush(); // Clear out any buffers held by renderers. } @@ -179,4 +188,22 @@ protected function setUp() $this->renderer->setHtmlRenderer($htmlRenderer); $this->renderer->setEngine($this->getServiceManager()->get('dompdf')); } + + private function execute(PdfStrategy $strategy, ViewEvent $event, PdfModel $model) + { + $event->setModel($model); + $event->setResponse($this->response); + $event->setRenderer($this->renderer); + $event->setResult($this->renderer->render($model)); + + $strategy->injectResponse($this->event); + } + + private function assertHeaderEqualTo(ResponseInterface $response, $name, $expected, $message = '') + { + $headers = $response->getHeaders(); + $header = $headers->get($name); + + $this->assertEquals($header->getFieldValue(), $expected, $message); + } } From b6dfb3b484ec9036507cd1cbe9dd134d7dbb734b Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Thu, 23 Nov 2017 13:27:55 -0500 Subject: [PATCH 25/27] Upgrade minimum Dompdf version to 0.8.0. (#70) --- Dockerfile | 5 +- composer.json | 2 +- composer.lock | 144 +++++++++++++++--- config/module.compat.php | 60 -------- config/module.config.php | 23 +-- src/DOMPDFModule/Service/DOMPDFFactory.php | 103 ++++--------- .../View/Renderer/PdfRenderer.php | 64 +++++--- .../Service/DOMPDFFactoryTest.php | 54 ++++--- .../View/Renderer/PdfRendererTest.php | 10 +- .../View/Strategy/PdfStrategyTest.php | 10 +- 10 files changed, 242 insertions(+), 233 deletions(-) delete mode 100644 config/module.compat.php diff --git a/Dockerfile b/Dockerfile index 0470888..5994523 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,9 +5,10 @@ ENV COMPOSER_HOME=/var/lib/composer WORKDIR /opt/app RUN apt-get update -y && \ - apt-get install -y git zlib1g-dev && \ - docker-php-ext-install zip && \ + apt-get install -y git zlib1g-dev libfreetype6-dev libjpeg62-turbo-dev && \ pecl install xdebug-2.5.0 && \ + docker-php-ext-install -j$(nproc) zip gd && \ + docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ docker-php-ext-enable xdebug && \ php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');" && \ php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); exit(1); } echo PHP_EOL;" && \ diff --git a/composer.json b/composer.json index 9ffe59c..6f60a41 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "zendframework/zend-i18n": "^2.4", "zendframework/zend-http": "^2.4", "zendframework/zend-console": "^2.4", - "dompdf/dompdf": "^0.6.0" + "dompdf/dompdf": "^0.8.0" }, "require-dev": { "phpunit/phpunit": "^4.8.27", diff --git a/composer.lock b/composer.lock index d253050..7d44be1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "2cbd61031a822403d4f58e17be8e0edc", + "content-hash": "bfcb3d52ce43335b8bfd9590b6bd61c8", "packages": [ { "name": "container-interop/container-interop", @@ -39,30 +39,47 @@ }, { "name": "dompdf/dompdf", - "version": "v0.6.2", + "version": "v0.8.1", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "cc06008f75262510ee135b8cbb14e333a309f651" + "reference": "9ea852c4bdc74fac5def165e6cd52353f7ca3b3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/cc06008f75262510ee135b8cbb14e333a309f651", - "reference": "cc06008f75262510ee135b8cbb14e333a309f651", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/9ea852c4bdc74fac5def165e6cd52353f7ca3b3f", + "reference": "9ea852c4bdc74fac5def165e6cd52353f7ca3b3f", "shasum": "" }, "require": { - "phenx/php-font-lib": "0.2.*" + "ext-dom": "*", + "ext-gd": "*", + "ext-mbstring": "*", + "phenx/php-font-lib": "0.5.*", + "phenx/php-svg-lib": "0.3.*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, "classmap": [ - "include/" + "lib/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL" + "LGPL-2.1" ], "authors": [ { @@ -72,35 +89,42 @@ { "name": "Brian Sweeney", "email": "eclecticgeek@gmail.com" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com" } ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2015-12-07T04:07:13+00:00" + "time": "2017-09-14T01:36:24+00:00" }, { "name": "phenx/php-font-lib", - "version": "0.2.2", + "version": "0.5.1", "source": { "type": "git", "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82" + "reference": "760148820110a1ae0936e5cc35851e25a938bc97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", - "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/760148820110a1ae0936e5cc35851e25a938bc97", + "reference": "760148820110a1ae0936e5cc35851e25a938bc97", "shasum": "" }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, "type": "library", "autoload": { - "classmap": [ - "classes/" - ] + "psr-4": { + "FontLib\\": "src/FontLib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL" + "LGPL-3.0" ], "authors": [ { @@ -110,7 +134,47 @@ ], "description": "A library to read, parse, export and make subsets of different types of font files.", "homepage": "https://github.com/PhenX/php-font-lib", - "time": "2014-02-01T15:22:28+00:00" + "time": "2017-09-13T16:14:37+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "v0.3", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-svg-lib.git", + "reference": "a85f7fe9fe08d093a4a8583cdd306b553ff918aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/a85f7fe9fe08d093a4a8583cdd306b553ff918aa", + "reference": "a85f7fe9fe08d093a4a8583cdd306b553ff918aa", + "shasum": "" + }, + "require": { + "sabberworm/php-css-parser": "8.1.*" + }, + "require-dev": { + "phpunit/phpunit": "~5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Svg\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "time": "2017-05-24T10:07:27+00:00" }, { "name": "psr/container", @@ -208,6 +272,50 @@ ], "time": "2016-10-10T12:19:37+00:00" }, + { + "name": "sabberworm/php-css-parser", + "version": "8.1.0", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Sabberworm\\CSS": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "time": "2016-07-19T19:14:21+00:00" + }, { "name": "zendframework/zend-console", "version": "2.5.1", diff --git a/config/module.compat.php b/config/module.compat.php deleted file mode 100644 index 1b14449..0000000 --- a/config/module.compat.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @copyright Copyright (c) 2012 University of Maine, 2016 Raymond J. Kolbe - * @license http://www.opensource.org/licenses/mit-license.php MIT License - */ - -/** - * Ensure that PHP is working with text internally using UTF8 character encoding. - */ -mb_internal_encoding('UTF-8'); - -/** - * Global array of warnings generated by DomDocument parser and - * stylesheet class - * - * @var array - */ -global $_dompdf_warnings; -$_dompdf_warnings = array(); - -/** - * If true, $_dompdf_warnings is dumped on script termination when using - * dompdf/dompdf.php or after rendering when using the DOMPDF class. - * When using the class, setting this value to true will prevent you from - * streaming the PDF. - * - * @var bool - */ -global $_dompdf_show_warnings; -$_dompdf_show_warnings = false; - -/** - * If true, the entire tree is dumped to stdout in dompdf.cls.php. - * Setting this value to true will prevent you from streaming the PDF. - * - * @var bool - */ -global $_dompdf_debug; -$_dompdf_debug = false; - -/** - * Array of enabled debug message types - * - * @var array - */ -global $_DOMPDF_DEBUG_TYPES; -$_DOMPDF_DEBUG_TYPES = array(); //array("page-break" => 1); diff --git a/config/module.config.php b/config/module.config.php index eabd466..acd0daa 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -83,17 +83,6 @@ */ 'chroot' => realpath(__DIR__ . '/../../../dompdf/dompdf/'), - /** - * Whether to use Unicode fonts or not. - * - * When set to true the PDF backend must be set to "CPDF" and fonts must be - * loaded via load_font.php. - * - * When enabled, dompdf can support all Unicode glyphs. Any glyphs used in a - * document must be present in your fonts, however. - */ - 'unicode_enabled' => true, - /** * Whether to make font subsetting or not. */ @@ -153,7 +142,7 @@ * If pdflib present in web server and auto or selected explicitely above, * a real license code must exist! */ - //def("DOMPDF_PDFLIB_LICENSE", "your license key here"); + 'pdflib_license' => '', /** * The default paper size. @@ -261,14 +250,6 @@ */ 'font_height_ratio' => 1.1, - /** - * Enable CSS float - * - * Allows people to disabled CSS float support - * @var bool - */ - 'enable_css_float' => false, - /** * Use the more-than-experimental HTML5 Lib parser */ @@ -277,7 +258,7 @@ 'debug_keep_temp' => false, 'debug_css' => false, 'debug_layout' => false, - 'debug_layout_links' => false, + 'debug_layout_lines' => false, 'debug_layout_blocks' => false, 'debug_layout_inline' => false, 'debug_layout_padding_box' => false diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index afac712..c6fe321 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -19,89 +19,52 @@ namespace DOMPDFModule\Service; +use Dompdf\Dompdf; +use Dompdf\Options; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; -use DOMPDF; class DOMPDFFactory implements FactoryInterface { /** - * An array of keys that map DOMPDF define keys to DOMPDFModule config's - * keys. - * - * @var array - */ - private static $configCompatMapping = array( - 'font_directory' => 'DOMPDF_FONT_DIR', - 'font_cache_directory' => 'DOMPDF_FONT_CACHE', - 'temporary_directory' => 'DOMPDF_TEMP_DIR', - 'chroot' => 'DOMPDF_CHROOT', - 'unicode_enabled' => 'DOMPDF_UNICODE_ENABLED', - 'enable_fontsubsetting' => 'DOMPDF_ENABLE_FONTSUBSETTING', - 'pdf_backend' => 'DOMPDF_PDF_BACKEND', - 'default_media_type' => 'DOMPDF_DEFAULT_MEDIA_TYPE', - 'default_paper_size' => 'DOMPDF_DEFAULT_PAPER_SIZE', - 'default_font' => 'DOMPDF_DEFAULT_FONT', - 'dpi' => 'DOMPDF_DPI', - 'enable_php' => 'DOMPDF_ENABLE_PHP', - 'enable_javascript' => 'DOMPDF_ENABLE_JAVASCRIPT', - 'enable_remote' => 'DOMPDF_ENABLE_REMOTE', - 'log_output_file' => 'DOMPDF_LOG_OUTPUT_FILE', - 'font_height_ratio' => 'DOMPDF_FONT_HEIGHT_RATIO', - 'enable_css_float' => 'DOMPDF_ENABLE_CSS_FLOAT', - 'enable_html5parser' => 'DOMPDF_ENABLE_HTML5PARSER', - 'debug_png' => 'DEBUGPNG', - 'debug_keep_temp' => 'DEBUGKEEPTEMP', - 'debug_css' => 'DEBUGCSS', - 'debug_layout' => 'DEBUG_LAYOUT', - 'debug_layout_links' => 'DEBUG_LAYOUT_LINES', - 'debug_layout_blocks' => 'DEBUG_LAYOUT_BLOCKS', - 'debug_layout_inline' => 'DEBUG_LAYOUT_INLINE', - 'debug_layout_padding_box' => 'DEBUG_LAYOUT_PADDINGBOX' - ); - - /** - * Creates an instance of DOMPDF. + * Creates an instance of Dompdf. * * @param ServiceLocatorInterface $serviceLocator - * @return DOMPDF + * @return Dompdf */ public function createService(ServiceLocatorInterface $serviceLocator) { - defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf'); - defined('DOMPDF_INC_DIR') || define("DOMPDF_INC_DIR", DOMPDF_DIR . "/include"); - defined('DOMPDF_LIB_DIR') || define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib"); - defined('DOMPDF_AUTOLOAD_PREPEND') || define("DOMPDF_AUTOLOAD_PREPEND", false); - defined('DOMPDF_ADMIN_USERNAME') || define("DOMPDF_ADMIN_USERNAME", false); - defined('DOMPDF_ADMIN_PASSWORD') || define("DOMPDF_ADMIN_PASSWORD", false); - $config = $serviceLocator->get('config'); - $this->applyCompatGlobals($config['dompdf_module']); - - require_once DOMPDF_LIB_DIR . '/html5lib/Parser.php'; - require_once DOMPDF_INC_DIR . '/functions.inc.php'; - require_once __DIR__ . '/../../../config/module.compat.php'; - - return new DOMPDF(); - } - - /** - * Declares global constants supported by DOMPDF lib. - * - * @param array $config - */ - private function applyCompatGlobals(array $config) - { - foreach ($config as $key => $value) { - if (! array_key_exists($key, static::$configCompatMapping)) { - continue; - } + $moduleConfig = $config['dompdf_module']; - if (defined(static::$configCompatMapping[$key])) { - continue; - } + $options = array( + 'temp_dir' => $moduleConfig['temporary_directory'], + 'font_dir' => $moduleConfig['font_directory'], + 'font_cache' => $moduleConfig['font_cache_directory'], + 'chroot' => $moduleConfig['chroot'], + 'log_output_file' => $moduleConfig['log_output_file'], + 'default_media_type' => $moduleConfig['default_media_type'], + 'default_paper_size' => $moduleConfig['default_paper_size'], + 'default_font' => $moduleConfig['default_font'], + 'dpi' => $moduleConfig['dpi'], + 'font_height_ratio' => $moduleConfig['font_height_ratio'], + 'is_php_enabled' => $moduleConfig['enable_php'], + 'is_remote_enabled' => $moduleConfig['enable_remote'], + 'is_javascript_enabled' => $moduleConfig['enable_javascript'], + 'is_html5_parser_enabled' => $moduleConfig['enable_html5parser'], + 'is_font_subsetting_enabled' => $moduleConfig['enable_fontsubsetting'], + 'debug_png' => $moduleConfig['debug_png'], + 'debug_keep_temp' => $moduleConfig['debug_keep_temp'], + 'debug_css' => $moduleConfig['debug_css'], + 'debug_layout' => $moduleConfig['debug_layout'], + 'debug_layout_lines' => $moduleConfig['debug_layout_lines'], + 'debug_layout_blocks' => $moduleConfig['debug_layout_blocks'], + 'debug_layout_inline' => $moduleConfig['debug_layout_inline'], + 'debug_layout_padding_box' => $moduleConfig['debug_layout_padding_box'], + 'pdf_backend' => $moduleConfig['pdf_backend'], + 'pdflib_license' => $moduleConfig['pdflib_license'] + ); - define(static::$configCompatMapping[$key], $value); - } + return new Dompdf(new Options($options)); } } diff --git a/src/DOMPDFModule/View/Renderer/PdfRenderer.php b/src/DOMPDFModule/View/Renderer/PdfRenderer.php index 64b9568..d52af26 100644 --- a/src/DOMPDFModule/View/Renderer/PdfRenderer.php +++ b/src/DOMPDFModule/View/Renderer/PdfRenderer.php @@ -23,47 +23,73 @@ use Zend\View\Exception\InvalidArgumentException; use Zend\View\Renderer\RendererInterface as Renderer; use Zend\View\Resolver\ResolverInterface as Resolver; -use DOMPDF; +use Dompdf\Dompdf; class PdfRenderer implements Renderer { + /** + * @var Dompdf|null + */ private $dompdf = null; + + /** + * @var Resolver|null + */ private $resolver = null; + + /** + * @var Renderer|null + */ private $htmlRenderer = null; - + + /** + * @param Renderer $renderer + * @return $this + */ public function setHtmlRenderer(Renderer $renderer) { $this->htmlRenderer = $renderer; return $this; } - + + /** + * @return Renderer + */ public function getHtmlRenderer() { return $this->htmlRenderer; } - - public function setEngine(DOMPDF $dompdf) + + /** + * @param Dompdf $dompdf + * @return $this + */ + public function setEngine(Dompdf $dompdf) { $this->dompdf = $dompdf; return $this; } /** - * {@inheritdoc} - * - * @return DOMPDF + * @return Dompdf */ public function getEngine() { return $this->dompdf; } + + /** + * @param Resolver $resolver + * @return $this + */ + public function setResolver(Resolver $resolver) + { + $this->resolver = $resolver; + return $this; + } /** - * Renders values as a PDF - * - * @param string|Model $name The script/resource process, or a view model - * @param null|array|\ArrayAccess Values to use during rendering - * @return string The script output. + * {@inheritdoc} */ public function render($nameOrModel, $values = null) { @@ -82,18 +108,12 @@ public function render($nameOrModel, $values = null) $basePath = $nameOrModel->getOption('basePath'); $pdf = $this->getEngine(); - $pdf->set_paper($paperSize, $paperOrientation); - $pdf->set_base_path($basePath); + $pdf->setPaper($paperSize, $paperOrientation); + $pdf->setBasePath($basePath); - $pdf->load_html($html); + $pdf->loadHtml($html); $pdf->render(); return $pdf->output(); } - - public function setResolver(Resolver $resolver) - { - $this->resolver = $resolver; - return $this; - } } diff --git a/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php b/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php index bba483c..51c5cf8 100644 --- a/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php +++ b/tests/DOMPDFModuleTest/Service/DOMPDFFactoryTest.php @@ -19,7 +19,7 @@ namespace DOMPDFModule\Service; -use \DOMPDF; +use Dompdf\Dompdf; use DOMPDFModuleTest\Framework\TestCase; class DOMPDFFactoryTest extends TestCase @@ -35,7 +35,7 @@ public function testItCreatesAValidInstance() { $dompdf = $this->factory->createService($this->getServiceManager()); - $this->assertInstanceOf('\DOMPDF', $dompdf); + $this->assertInstanceOf('\Dompdf\Dompdf', $dompdf); $this->assertNotNullOptions($dompdf); } @@ -64,28 +64,32 @@ protected function setUp() */ private function assertNotNullOptions(Dompdf $dompdf) { - $this->assertNotNull($dompdf->get_option('temp_dir'), 'temp_dir'); - $this->assertNotNull($dompdf->get_option('font_dir'), 'font_dir'); - $this->assertNotNull($dompdf->get_option('font_cache'), 'font_cache'); - $this->assertNotNull($dompdf->get_option('chroot'), 'chroot'); - $this->assertNotNull($dompdf->get_option('log_output_file'), 'log_output_file'); - $this->assertNotNull($dompdf->get_option('default_media_type'), 'default_media_type'); - $this->assertNotNull($dompdf->get_option('default_paper_size'), 'default_paper_size'); - $this->assertNotNull($dompdf->get_option('default_font'), 'default_font'); - $this->assertNotNull($dompdf->get_option('dpi'), 'dpi'); - $this->assertNotNull($dompdf->get_option('font_height_ratio'), 'font_height_ratio'); - $this->assertNotNull($dompdf->get_option('enable_php'), 'enable_php'); - $this->assertNotNull($dompdf->get_option('enable_remote'), 'enable_remote'); - $this->assertNotNull($dompdf->get_option('enable_javascript'), 'enable_javascript'); - $this->assertNotNull($dompdf->get_option('enable_html5_parser'), 'enable_html5_parser'); - $this->assertNotNull($dompdf->get_option('enable_font_subsetting'), 'enable_font_subsetting'); - $this->assertNotNull($dompdf->get_option('debug_png'), 'debug_png'); - $this->assertNotNull($dompdf->get_option('debug_keep_temp'), 'debug_keep_temp'); - $this->assertNotNull($dompdf->get_option('debug_css'), 'debug_css'); - $this->assertNotNull($dompdf->get_option('debug_layout'), 'debug_layout'); - $this->assertNotNull($dompdf->get_option('debug_layout_lines'), 'debug_layout_lines'); - $this->assertNotNull($dompdf->get_option('debug_layout_blocks'), 'debug_layout_blocks'); - $this->assertNotNull($dompdf->get_option('debug_layout_inline'), 'debug_layout_inline'); - $this->assertNotNull($dompdf->get_option('debug_layout_padding_box'), 'debug_layout_padding_box'); + $options = $dompdf->getOptions(); + + $this->assertNotNull($options->get('temp_dir'), 'temp_dir'); + $this->assertNotNull($options->get('font_dir'), 'font_dir'); + $this->assertNotNull($options->get('font_cache'), 'font_cache'); + $this->assertNotNull($options->get('chroot'), 'chroot'); + $this->assertNotNull($options->get('log_output_file'), 'log_output_file'); + $this->assertNotNull($options->get('default_media_type'), 'default_media_type'); + $this->assertNotNull($options->get('default_paper_size'), 'default_paper_size'); + $this->assertNotNull($options->get('default_font'), 'default_font'); + $this->assertNotNull($options->get('dpi'), 'dpi'); + $this->assertNotNull($options->get('font_height_ratio'), 'font_height_ratio'); + $this->assertNotNull($options->get('is_php_enabled'), 'is_php_enabled'); + $this->assertNotNull($options->get('is_remote_enabled'), 'is_remote_enabled'); + $this->assertNotNull($options->get('is_javascript_enabled'), 'is_javascript_enabled'); + $this->assertNotNull($options->get('is_html5_parser_enabled'), 'is_html5_parser_enabled'); + $this->assertNotNull($options->get('is_font_subsetting_enabled'), 'is_font_subsetting_enabled'); + $this->assertNotNull($options->get('debug_png'), 'debug_png'); + $this->assertNotNull($options->get('debug_keep_temp'), 'debug_keep_temp'); + $this->assertNotNull($options->get('debug_css'), 'debug_css'); + $this->assertNotNull($options->get('debug_layout'), 'debug_layout'); + $this->assertNotNull($options->get('debug_layout_lines'), 'debug_layout_lines'); + $this->assertNotNull($options->get('debug_layout_blocks'), 'debug_layout_blocks'); + $this->assertNotNull($options->get('debug_layout_inline'), 'debug_layout_inline'); + $this->assertNotNull($options->get('debug_layout_padding_box'), 'debug_layout_padding_box'); + $this->assertNotNull($options->get('pdf_backend'), 'pdf_backend'); + $this->assertNotNull($options->get('pdflib_license'), 'pdflib_license'); } } diff --git a/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php b/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php index 7a1019b..a6aa8b6 100644 --- a/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php +++ b/tests/DOMPDFModuleTest/View/Renderer/PdfRendererTest.php @@ -55,16 +55,16 @@ public function testItHasAnHtmlRenderer() public function testItHasAnEngine() { - $this->assertInstanceOf('DOMPDF', $this->renderer->getEngine()); + $this->assertInstanceOf('\Dompdf\Dompdf', $this->renderer->getEngine()); } public function testItRendersAPdfModel() { $this->htmlRenderer->expects($this->once())->method('render'); - $this->engine->expects($this->once())->method('set_paper'); - $this->engine->expects($this->once())->method('set_base_path'); - $this->engine->expects($this->once())->method('load_html'); + $this->engine->expects($this->once())->method('setPaper'); + $this->engine->expects($this->once())->method('setBasePath'); + $this->engine->expects($this->once())->method('loadHtml'); $this->engine->expects($this->once())->method('render'); $this->engine->expects($this->once())->method('output'); @@ -106,7 +106,7 @@ protected function setUp() $this->htmlRenderer = $this->getMock('Zend\View\Renderer\RendererInterface'); $this->resolver = $this->getMock('Zend\View\Resolver\ResolverInterface'); - $this->engine = $this->getMockBuilder('DOMPDF')->disableOriginalConstructor()->getMock(); + $this->engine = $this->getMockBuilder('\Dompdf\Dompdf')->disableOriginalConstructor()->getMock(); $this->renderer = new PdfRenderer(); $this->renderer->setHtmlRenderer($this->htmlRenderer); diff --git a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php index 4fe04d6..7f545ee 100644 --- a/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php +++ b/tests/DOMPDFModuleTest/View/Strategy/PdfStrategyTest.php @@ -104,8 +104,6 @@ public function testItAddsApplicationPdfContentType() 'application/pdf', 'content type' ); - - ob_end_flush(); // Clear out any buffers held by renderers. } public function testItAddsAttachmentDispositionType() @@ -124,8 +122,6 @@ public function testItAddsAttachmentDispositionType() 'attachment; filename="testPdfFileName.pdf"', 'content disposition' ); - - ob_end_flush(); // Clear out any buffers held by renderers. } public function testItAddsInlineDispositionType() @@ -144,8 +140,6 @@ public function testItAddsInlineDispositionType() 'inline; filename="testPdfFileName.pdf"', 'content disposition' ); - - ob_end_flush(); // Clear out any buffers held by renderers. } public function testItAddsContentLength() @@ -159,11 +153,9 @@ public function testItAddsContentLength() $this->assertHeaderEqualTo( $response, 'Content-Length', - 989, + 1148, 'content length' ); - - ob_end_flush(); // Clear out any buffers held by renderers. } /** From 53983e634064351c58b55e2b3962dbec930a19f3 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Thu, 23 Nov 2017 21:14:31 -0500 Subject: [PATCH 26/27] Support PHP LTS versions only (#69) * Updated minimum requirements to PHP LTS versions only. * Updated code to take advantage of features in PHP 5.6+. --- .travis.yml | 16 +---------- Dockerfile | 2 +- composer.json | 2 +- composer.lock | 4 +-- config/module.config.php | 28 +++++++++---------- src/DOMPDFModule/Module.php | 12 ++++---- .../Mvc/Service/ViewPdfRendererFactory.php | 13 +++------ .../Mvc/Service/ViewPdfStrategyFactory.php | 5 +--- src/DOMPDFModule/Service/DOMPDFFactory.php | 7 ++--- src/DOMPDFModule/View/Model/PdfModel.php | 4 +-- .../View/Strategy/PdfStrategy.php | 6 ++-- 11 files changed, 38 insertions(+), 61 deletions(-) diff --git a/.travis.yml b/.travis.yml index 43c099c..092fa2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,24 +5,10 @@ env: - ZF_VERSION=2.4.* - ZF_VERSION=2.5.* -matrix: - fast_finish: true - include: - - php: 5.3.29 - dist: precise - env: ZF_VERSION=^2.4 - - php: 5.3.29 - dist: precise - env: ZF_VERSION=2.4.* - - php: 5.3.29 - dist: precise - env: ZF_VERSION=2.5.* - php: - - 5.4 - - 5.5 - 5.6 - 7.0 + - 7.1 before_install: - composer require --update-with-dependencies zendframework/zend-loader:${ZF_VERSION} zendframework/zend-servicemanager:${ZF_VERSION} zendframework/zend-modulemanager:${ZF_VERSION} zendframework/zend-mvc:${ZF_VERSION} zendframework/zend-view:${ZF_VERSION} zendframework/zend-serializer:${ZF_VERSION} zendframework/zend-log:${ZF_VERSION} zendframework/zend-i18n:${ZF_VERSION} zendframework/zend-http:${ZF_VERSION} zendframework/zend-console:${ZF_VERSION} diff --git a/Dockerfile b/Dockerfile index 5994523..024aff7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG PHP_VERSION=7.0 +ARG PHP_VERSION=7.1 FROM php:${PHP_VERSION} ENV COMPOSER_HOME=/var/lib/composer diff --git a/composer.json b/composer.json index 6f60a41..b124712 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ } ], "require": { - "php": ">=5.3.29", + "php": ">=5.6", "zendframework/zend-loader": "^2.4", "zendframework/zend-servicemanager": "^2.4", "zendframework/zend-modulemanager": "^2.4", diff --git a/composer.lock b/composer.lock index 7d44be1..9fd3d96 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "bfcb3d52ce43335b8bfd9590b6bd61c8", + "content-hash": "f2fea96a4da6988560bbbb47b7a3004c", "packages": [ { "name": "container-interop/container-interop", @@ -3436,7 +3436,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.3.29" + "php": ">=5.6" }, "platform-dev": [] } diff --git a/config/module.config.php b/config/module.config.php index acd0daa..c732e8a 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -19,8 +19,8 @@ namespace DOMPDFModule; -return array( - 'dompdf_module' => array( +return [ + 'dompdf_module' => [ /** * The location of the DOMPDF font directory * @@ -262,24 +262,24 @@ 'debug_layout_blocks' => false, 'debug_layout_inline' => false, 'debug_layout_padding_box' => false - ), - 'view_manager' => array( - 'strategies' => array( + ], + 'view_manager' => [ + 'strategies' => [ 'ViewPdfStrategy' - ) - ), - 'service_manager' => array( - 'shared' => array( + ] + ], + 'service_manager' => [ + 'shared' => [ /** * DOMPDF itself has issues rendering twice in a row so we force a * new instance to be created. */ 'DOMPDF' => false - ), - 'factories' => array( + ], + 'factories' => [ 'DOMPDF' => __NAMESPACE__ . '\Service\DOMPDFFactory', 'ViewPdfRenderer' => __NAMESPACE__ . '\Mvc\Service\ViewPdfRendererFactory', 'ViewPdfStrategy' => __NAMESPACE__ . '\Mvc\Service\ViewPdfStrategyFactory', - ) - ), -); + ] + ] +]; diff --git a/src/DOMPDFModule/Module.php b/src/DOMPDFModule/Module.php index bdd0df2..997e512 100644 --- a/src/DOMPDFModule/Module.php +++ b/src/DOMPDFModule/Module.php @@ -31,12 +31,12 @@ public function getConfig() public function getAutoloaderConfig() { - return array( - 'Zend\Loader\StandardAutoloader' => array( - 'namespaces' => array( + return [ + 'Zend\Loader\StandardAutoloader' => [ + 'namespaces' => [ __NAMESPACE__ => __DIR__ , - ), - ), - ); + ] + ] + ]; } } diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php index b9e5fc2..37efbe4 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfRendererFactory.php @@ -34,14 +34,9 @@ class ViewPdfRendererFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $resolver = $serviceLocator->get('ViewResolver'); - $renderer = $serviceLocator->get('ViewRenderer'); - - $pdfRenderer = new PdfRenderer(); - $pdfRenderer->setResolver($resolver); - $pdfRenderer->setHtmlRenderer($renderer); - $pdfRenderer->setEngine($serviceLocator->get('dompdf')); - - return $pdfRenderer; + return (new PdfRenderer()) + ->setResolver($serviceLocator->get('ViewResolver')) + ->setHtmlRenderer($serviceLocator->get('ViewRenderer')) + ->setEngine($serviceLocator->get('dompdf')); } } diff --git a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php index d6ab9fd..29467f9 100644 --- a/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php +++ b/src/DOMPDFModule/Mvc/Service/ViewPdfStrategyFactory.php @@ -36,9 +36,6 @@ class ViewPdfStrategyFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $pdfRenderer = $serviceLocator->get('ViewPdfRenderer'); - $pdfStrategy = new PdfStrategy($pdfRenderer); - - return $pdfStrategy; + return new PdfStrategy($serviceLocator->get('ViewPdfRenderer')); } } diff --git a/src/DOMPDFModule/Service/DOMPDFFactory.php b/src/DOMPDFModule/Service/DOMPDFFactory.php index c6fe321..3cd0a06 100644 --- a/src/DOMPDFModule/Service/DOMPDFFactory.php +++ b/src/DOMPDFModule/Service/DOMPDFFactory.php @@ -34,10 +34,9 @@ class DOMPDFFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $config = $serviceLocator->get('config'); - $moduleConfig = $config['dompdf_module']; + $moduleConfig = $serviceLocator->get('config')['dompdf_module']; - $options = array( + $options = [ 'temp_dir' => $moduleConfig['temporary_directory'], 'font_dir' => $moduleConfig['font_directory'], 'font_cache' => $moduleConfig['font_cache_directory'], @@ -63,7 +62,7 @@ public function createService(ServiceLocatorInterface $serviceLocator) 'debug_layout_padding_box' => $moduleConfig['debug_layout_padding_box'], 'pdf_backend' => $moduleConfig['pdf_backend'], 'pdflib_license' => $moduleConfig['pdflib_license'] - ); + ]; return new Dompdf(new Options($options)); } diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index b424194..7461e73 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -31,13 +31,13 @@ class PdfModel extends ViewModel * Renderer options * @var array */ - protected $options = array( + protected $options = [ 'paperSize' => '8x11', 'paperOrientation' => 'portrait', 'basePath' => '/', 'fileName' => self::DEFAULT_FILE_NAME, 'display' => self::DISPLAY_INLINE - ); + ]; /** * PDF probably won't need to be captured into a diff --git a/src/DOMPDFModule/View/Strategy/PdfStrategy.php b/src/DOMPDFModule/View/Strategy/PdfStrategy.php index adf10e4..cb89cc6 100644 --- a/src/DOMPDFModule/View/Strategy/PdfStrategy.php +++ b/src/DOMPDFModule/View/Strategy/PdfStrategy.php @@ -30,7 +30,7 @@ class PdfStrategy implements ListenerAggregateInterface /** * @var \Zend\Stdlib\CallbackHandler[] */ - protected $listeners = array(); + protected $listeners = []; /** * @var PdfRenderer @@ -57,8 +57,8 @@ public function __construct(PdfRenderer $renderer) */ public function attach(EventManagerInterface $events, $priority = 1) { - $this->listeners[] = $events->attach(ViewEvent::EVENT_RENDERER, array($this, 'selectRenderer'), $priority); - $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, array($this, 'injectResponse'), $priority); + $this->listeners[] = $events->attach(ViewEvent::EVENT_RENDERER, [$this, 'selectRenderer'], $priority); + $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'injectResponse'], $priority); } /** From 1b6b5b90090579239cb7d49363632ca6b2b35afb Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Fri, 24 Nov 2017 17:26:52 -0500 Subject: [PATCH 27/27] Fix PHP version check. (#72) --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index a0e0ee1..33eb407 100755 --- a/build.sh +++ b/build.sh @@ -39,8 +39,8 @@ which php &> /dev/null || { exit 1 } -# Ensure supported PHP version (5.3.29+) -php -r 'exit((int) !(PHP_VERSION_ID >= 50329));' || { +# Ensure supported PHP version (5.6.0+) +php -r 'exit((int) !(PHP_VERSION_ID >= 50600));' || { echo 'Unsupported version of PHP. Aborting build.' exit 1 }