diff --git a/composer.json b/composer.json index bd936d472e..7442f7a666 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,6 @@ ], "require": { "php": ">=5.6", - "twig/twig": "1.*", "cerdic/css-tidy": "^1.6", "tburry/pquery": "^1.1.1", "j4mie/paris": "1.5.6", diff --git a/composer.lock b/composer.lock index ee50afd534..5d094e4f9a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "81e44efee9f040a7e302f96ae2265d93", + "content-hash": "ace24c4002870bd939be3fc6625f9216", "packages": [ { "name": "cerdic/css-tidy", @@ -431,64 +431,6 @@ }, "time": "2018-07-09T16:02:27+00:00" }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2018-08-06T14:22:27+00:00" - }, { "name": "symfony/polyfill-mbstring", "version": "v1.10.0", @@ -718,72 +660,6 @@ "php" ], "time": "2016-01-14T20:55:00+00:00" - }, - { - "name": "twig/twig", - "version": "v1.38.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "754b8dfc0026585eb8498ec4bf5ff240b6b34db7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/754b8dfc0026585eb8498ec4bf5ff240b6b34db7", - "reference": "754b8dfc0026585eb8498ec4bf5ff240b6b34db7", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.38-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", - "role": "Contributors" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "time": "2019-03-12T12:42:04+00:00" } ], "packages-dev": [ @@ -6153,6 +6029,64 @@ ], "time": "2018-11-11T11:18:13+00:00" }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "backendtea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" + }, { "name": "symfony/polyfill-intl-icu", "version": "v1.10.0", @@ -6593,6 +6527,72 @@ ], "time": "2018-12-05T18:34:18+00:00" }, + { + "name": "twig/twig", + "version": "v1.38.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7732e9e7017d751313811bd118de61302e9c8b35", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.38-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-03-23T14:27:19+00:00" + }, { "name": "umpirsky/twig-gettext-extractor", "version": "1.1.5", diff --git a/lib/Config/Renderer.php b/lib/Config/Renderer.php index 0fddce6f92..f26b87bfb7 100644 --- a/lib/Config/Renderer.php +++ b/lib/Config/Renderer.php @@ -3,15 +3,14 @@ namespace MailPoet\Config; use MailPoet\Twig; -use Twig_Environment as TwigEnv; -use Twig_Lexer as TwigLexer; -use Twig_Loader_Filesystem as TwigFileSystem; +use MailPoetVendor\Twig_Environment as TwigEnv; +use MailPoetVendor\Twig_Lexer as TwigLexer; +use MailPoetVendor\Twig_Loader_Filesystem as TwigFileSystem; use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; - class Renderer { protected $cache_path; protected $caching_enabled; @@ -103,7 +102,7 @@ class Renderer { function setupDebug() { if ($this->debugging_enabled) { - $this->renderer->addExtension(new \Twig_Extension_Debug()); + $this->renderer->addExtension(new \MailPoetVendor\Twig_Extension_Debug()); } } diff --git a/lib/Config/RequirementsChecker.php b/lib/Config/RequirementsChecker.php index 2b8f5d015c..80908c58d6 100644 --- a/lib/Config/RequirementsChecker.php +++ b/lib/Config/RequirementsChecker.php @@ -15,17 +15,11 @@ class RequirementsChecker { const TEST_MBSTRING_EXTENSION = 'MbstringExtension'; const TEST_XML_EXTENSION = 'XmlExtension'; const TEST_VENDOR_SOURCE = 'VendorSource'; - const TWIG_SUPPORTED_VERSIONS = '1.26.0-1.34.4'; public $display_error_notice; public $vendor_classes = array( '\ORM', '\Model', - '\Twig_Environment', - '\Twig_Loader_Filesystem', - '\Twig_Lexer', - '\Twig_Extension', - '\Twig_SimpleFunction', '\Swift_Mailer', '\Swift_SmtpTransport', '\Swift_Message', @@ -131,30 +125,13 @@ class RequirementsChecker { $dependency_path ); - $return_error = true; - - // if a Twig dependency is loaded by another plugin, check for valid version - if (strpos($dependency, '\Twig_') === 0) { - $return_error = ($this->isValidTwigVersion()) ? false : $return_error; - } - - if ($return_error) return $this->processError($error); + return $this->processError($error); } } return true; } - function isValidTwigVersion() { - list($minimum_version, $maximum_version) = explode('-', self::TWIG_SUPPORTED_VERSIONS); - return ( - class_exists('\Twig_Environment') && - defined('\Twig_Environment::VERSION') && - version_compare(\Twig_Environment::VERSION, $minimum_version, '>=') && - version_compare(\Twig_Environment::VERSION, $maximum_version, '<=') - ); - } - private function getDependencyPath($namespaced_class) { try { $reflector = new \ReflectionClass($namespaced_class); diff --git a/lib/Twig/Analytics.php b/lib/Twig/Analytics.php index a27cacf580..7f66ed9524 100644 --- a/lib/Twig/Analytics.php +++ b/lib/Twig/Analytics.php @@ -9,27 +9,27 @@ use MailPoet\WooCommerce\Helper as WooCommerceHelper; if (!defined('ABSPATH')) exit; -class Analytics extends \Twig_Extension { +class Analytics extends \MailPoetVendor\Twig_Extension { public function getFunctions() { $settings = new SettingsController(); $analytics = new AnalyticsGenerator(new Reporter($settings, new WooCommerceHelper), $settings); return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_analytics_data', array($analytics, 'generateAnalytics'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'is_analytics_enabled', array($analytics, 'isEnabled'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_analytics_public_id', array($analytics, 'getPublicId'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'is_analytics_public_id_new', array($analytics, 'isPublicIdNew'), array('is_safe' => array('all')) diff --git a/lib/Twig/Assets.php b/lib/Twig/Assets.php index ddc4036fbb..249d47181a 100644 --- a/lib/Twig/Assets.php +++ b/lib/Twig/Assets.php @@ -5,7 +5,7 @@ use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; -class Assets extends \Twig_Extension { +class Assets extends \MailPoetVendor\Twig_Extension { const CDN_URL = 'https://ps.w.org/mailpoet/'; private $_globals; @@ -15,22 +15,22 @@ class Assets extends \Twig_Extension { function getFunctions() { return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'stylesheet', array($this, 'generateStylesheet'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'javascript', array($this, 'generateJavascript'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'image_url', array($this, 'generateImageUrl'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'cdn_url', array($this, 'generateCdnUrl'), array('is_safe' => array('all')) diff --git a/lib/Twig/Filters.php b/lib/Twig/Filters.php index f40f6986fb..1d39166817 100644 --- a/lib/Twig/Filters.php +++ b/lib/Twig/Filters.php @@ -4,7 +4,7 @@ namespace MailPoet\Twig; if (!defined('ABSPATH')) exit; -class Filters extends \Twig_Extension { +class Filters extends \MailPoetVendor\Twig_Extension { function getName() { return 'filters'; @@ -12,11 +12,11 @@ class Filters extends \Twig_Extension { function getFilters() { return array( - new \Twig_SimpleFilter( + new \MailPoetVendor\Twig_SimpleFilter( 'intval', 'intval' ), - new \Twig_SimpleFilter( + new \MailPoetVendor\Twig_SimpleFilter( 'replaceLinkTags', 'MailPoet\Util\Helpers::replaceLinkTags' ) diff --git a/lib/Twig/Functions.php b/lib/Twig/Functions.php index d3c82604f3..bafb5703ab 100644 --- a/lib/Twig/Functions.php +++ b/lib/Twig/Functions.php @@ -10,7 +10,7 @@ use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; -class Functions extends \Twig_Extension { +class Functions extends \MailPoetVendor\Twig_Extension { /** @var SettingsController */ private $settings; @@ -21,97 +21,97 @@ class Functions extends \Twig_Extension { function getFunctions() { return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'json_encode', 'json_encode', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'json_decode', 'json_decode', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'wp_nonce_field', 'wp_nonce_field', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'params', array($this, 'params'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'admin_url', 'admin_url', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_option', 'get_option', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_option', 'get_option', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'sending_frequency', array($this, 'getSendingFrequency'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'wp_date_format', array($this, 'getWPDateFormat'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'mailpoet_version', array($this, 'getMailPoetVersion'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'mailpoet_premium_version', array($this, 'getMailPoetPremiumVersion'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'mailpoet_has_valid_premium_key', array($this, 'hasValidPremiumKey'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'wp_time_format', array($this, 'getWPTimeFormat'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'wp_datetime_format', array($this, 'getWPDateTimeFormat'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'do_action', 'do_action', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'is_rtl', array($this, 'isRtl'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'number_format_i18n', 'number_format_i18n', array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'mailpoet_locale', array($this, 'getTwoLettersLocale'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'mailpoet_free_domains', array($this, 'getFreeDomains'), array('is_safe' => array('all')) diff --git a/lib/Twig/Handlebars.php b/lib/Twig/Handlebars.php index 4030b876fc..cea69955be 100644 --- a/lib/Twig/Handlebars.php +++ b/lib/Twig/Handlebars.php @@ -4,10 +4,10 @@ namespace MailPoet\Twig; if (!defined('ABSPATH')) exit; -class Handlebars extends \Twig_Extension { +class Handlebars extends \MailPoetVendor\Twig_Extension { public function getFunctions() { return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'partial', array( $this, @@ -41,7 +41,7 @@ class Handlebars extends \Twig_Extension { return; } - $rendered_template = twig_include($env, $context, $file); + $rendered_template = \MailPoetVendor\twig_include($env, $context, $file); $output = << diff --git a/lib/Twig/Helpscout.php b/lib/Twig/Helpscout.php index f9af1d1e64..2a0f5ee7a0 100644 --- a/lib/Twig/Helpscout.php +++ b/lib/Twig/Helpscout.php @@ -4,10 +4,10 @@ namespace MailPoet\Twig; if (!defined('ABSPATH')) exit; -class Helpscout extends \Twig_Extension { +class Helpscout extends \MailPoetVendor\Twig_Extension { public function getFunctions() { return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_helpscout_data', '\MailPoet\Helpscout\Beacon::getData', array('is_safe' => array('all')) diff --git a/lib/Twig/I18n.php b/lib/Twig/I18n.php index 9689196862..731dca5c28 100644 --- a/lib/Twig/I18n.php +++ b/lib/Twig/I18n.php @@ -7,7 +7,7 @@ use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; -class I18n extends \Twig_Extension { +class I18n extends \MailPoetVendor\Twig_Extension { private $_text_domain; @@ -30,7 +30,7 @@ class I18n extends \Twig_Extension { ); foreach ($functions as $twig_function => $function) { - $twig_functions[] = new \Twig_SimpleFunction( + $twig_functions[] = new \MailPoetVendor\Twig_SimpleFunction( $twig_function, array($this, $function), array('is_safe' => array('all')) diff --git a/lib/Twig/Polls.php b/lib/Twig/Polls.php index 9b89ec949d..a564399cb4 100644 --- a/lib/Twig/Polls.php +++ b/lib/Twig/Polls.php @@ -6,7 +6,7 @@ use MailPoet\Settings\SettingsController; if (!defined('ABSPATH')) exit; -class Polls extends \Twig_Extension { +class Polls extends \MailPoetVendor\Twig_Extension { /** @var SettingsController */ private $settings; @@ -17,12 +17,12 @@ class Polls extends \Twig_Extension { public function getFunctions() { return array( - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_polls_data', array($this, 'getPollsData'), array('is_safe' => array('all')) ), - new \Twig_SimpleFunction( + new \MailPoetVendor\Twig_SimpleFunction( 'get_polls_visiblity', array($this, 'getPollsVisibility'), array('is_safe' => array('all')) diff --git a/prefixer/composer.json b/prefixer/composer.json index 36094d2e55..0ab6560ede 100644 --- a/prefixer/composer.json +++ b/prefixer/composer.json @@ -3,7 +3,8 @@ "php": ">=5.6", "symfony/dependency-injection": "3.4.22", "monolog/monolog": "^1.23", - "sabberworm/php-css-parser": "^8.1" + "sabberworm/php-css-parser": "^8.1", + "twig/twig": "1.38.4" }, "scripts": { "post-update-cmd": "@process", @@ -12,7 +13,8 @@ "rm -rf ../vendor-prefixed", "mkdir ../vendor-prefixed", "../php-scoper.phar add-prefix", - "mv ./build/* ../vendor-prefixed" + "mv ./build/* ../vendor-prefixed", + "php fix-twig.php" ] }, "config": { diff --git a/prefixer/composer.lock b/prefixer/composer.lock index 443383039a..70f97775a4 100644 --- a/prefixer/composer.lock +++ b/prefixer/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5adf957548a314d23d716c2e5959e24b", + "content-hash": "0a85a5163c915ee5e4c5e546973aa767", "packages": [ { "name": "monolog/monolog", @@ -294,6 +294,130 @@ "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", "time": "2019-01-30T17:48:51+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "backendtea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "twig/twig", + "version": "v1.38.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7732e9e7017d751313811bd118de61302e9c8b35", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.38-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-03-23T14:27:19+00:00" } ], "packages-dev": [], diff --git a/prefixer/fix-twig.php b/prefixer/fix-twig.php new file mode 100755 index 0000000000..8aea2ba295 --- /dev/null +++ b/prefixer/fix-twig.php @@ -0,0 +1,238 @@ + '../vendor-prefixed/twig/twig/src/ExpressionParser.php', + 'find' => [ + '\'Twig\\\\Node\\\\Expression\\\\TestExpression\'', + '\'Twig\\\\Node\\\\Expression\\\\FunctionExpression\'', + '\'Twig\\\\Node\\\\Expression\\\\FilterExpression\'', + ], + 'replace' => [ + '\'MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\TestExpression\'', + '\'MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\FunctionExpression\'', + '\'MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\FilterExpression\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/TwigFilter.php', + 'find' => [ + '\'\\\\Twig\\\\Node\\\\Expression\\\\FilterExpression\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\FilterExpression\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/TwigFunction.php', + 'find' => [ + '\'\\\\Twig\\\\Node\\\\Expression\\\\FunctionExpression\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\FunctionExpression\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/TwigTest.php', + 'find' => [ + '\'\\\\Twig\\\\Node\\\\Expression\\\\TestExpression\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Node\\\\Expression\\\\TestExpression\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/Expression/Binary/NotInBinary.php', + 'find' => [ + '\'!twig_in_filter(\'' + ], + 'replace' => [ + '\'!\\\\MailPoetVendor\\\\twig_in_filter(\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/Expression/Binary/InBinary.php', + 'find' => [ + '\'twig_in_filter(\'' + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\twig_in_filter(\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Extension/CoreExtension.php', + 'find' => [ + '\'twig_date_format_filter\'', + '\'twig_date_modify_filter\'', + '\'twig_replace_filter\'', + '\'twig_number_format_filter\'', + '\'twig_round\'', + '\'twig_urlencode_filter\'', + '\'twig_jsonencode_filter\'', + '\'twig_convert_encoding\'', + '\'twig_title_string_filter\'', + '\'twig_capitalize_string_filter\'', + '\'twig_trim_filter\'', + '\'twig_spaceless\'', + '\'twig_join_filter\'', + '\'twig_split_filter\'', + '\'twig_sort_filter\'', + '\'twig_sort_filter\'', + '\'twig_array_batch\'', + '\'twig_reverse_filter\'', + '\'twig_length_filter\'', + '\'twig_slice\'', + '\'twig_first\'', + '\'twig_last\'', + '\'_twig_default_filter\'', + '\'twig_get_array_keys_filter\'', + '\'twig_escape_filter\'', + '\'twig_upper_filter\'', + '\'twig_lower_filter\'', + '\'twig_escape_filter_is_safe\'', + '\'_twig_escape_js_callback\'', + '\'_twig_escape_css_callback\'', + '\'_twig_escape_html_attr_callback\'', + '\'twig_source\'', + '\'twig_test_empty\'', + '\'_twig_markup2string\'', + '\'twig_test_iterable\'', + '\'twig_random\'', + '\'twig_date_converter\'', + '\'twig_cycle\'', + '\'twig_constant\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\twig_date_format_filter\'', + '\'\\\\MailPoetVendor\\\\twig_date_modify_filter\'', + '\'\\\\MailPoetVendor\\\\twig_replace_filter\'', + '\'\\\\MailPoetVendor\\\\twig_number_format_filter\'', + '\'\\\\MailPoetVendor\\\\twig_round\'', + '\'\\\\MailPoetVendor\\\\twig_urlencode_filter\'', + '\'\\\\MailPoetVendor\\\\twig_jsonencode_filter\'', + '\'\\\\MailPoetVendor\\\\twig_convert_encoding\'', + '\'\\\\MailPoetVendor\\\\twig_title_string_filter\'', + '\'\\\\MailPoetVendor\\\\twig_capitalize_string_filter\'', + '\'\\\\MailPoetVendor\\\\twig_trim_filter\'', + '\'\\\\MailPoetVendor\\\\twig_spaceless\'', + '\'\\\\MailPoetVendor\\\\twig_join_filter\'', + '\'\\\\MailPoetVendor\\\\twig_split_filter\'', + '\'\\\\MailPoetVendor\\\\twig_sort_filter\'', + '\'\\\\MailPoetVendor\\\\twig_array_merge\'', + '\'\\\\MailPoetVendor\\\\twig_array_batch\'', + '\'\\\\MailPoetVendor\\\\twig_reverse_filter\'', + '\'\\\\MailPoetVendor\\\\twig_length_filter\'', + '\'\\\\MailPoetVendor\\\\twig_slice\'', + '\'\\\\MailPoetVendor\\\\twig_first\'', + '\'\\\\MailPoetVendor\\\\twig_last\'', + '\'\\\\MailPoetVendor\\\\_twig_default_filter\'', + '\'\\\\MailPoetVendor\\\\twig_get_array_keys_filter\'', + '\'\\\\MailPoetVendor\\\\twig_escape_filter\'', + '\'\\\\MailPoetVendor\\\\twig_upper_filter\'', + '\'\\\\MailPoetVendor\\\\twig_lower_filter\'', + '\'\\\\MailPoetVendor\\\\twig_escape_filter_is_safe\'', + '\'\\\\MailPoetVendor\\\\_twig_escape_js_callback\'', + '\'\\\\MailPoetVendor\\\\_twig_escape_css_callback\'', + '\'\\\\MailPoetVendor\\\\_twig_escape_html_attr_callback\'', + '\'\\\\MailPoetVendor\\\\twig_source\'', + '\'\\\\MailPoetVendor\\\\twig_test_empty\'', + '\'\\\\MailPoetVendor\\\\_twig_markup2string\'', + '\'\\\\MailPoetVendor\\\\twig_test_iterable\'', + '\'\\\\MailPoetVendor\\\\twig_random\'', + '\'\\\\MailPoetVendor\\\\twig_date_converter\'', + '\'\\\\MailPoetVendor\\\\twig_cycle\'', + '\'\\\\MailPoetVendor\\\\twig_constant\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/ForNode.php', + 'find' => [ + '= twig_ensure_traversable("', + ], + 'replace' => [ + '= \\\\MailPoetVendor\\\\twig_ensure_traversable("', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/CheckSecurityNode.php', + 'find' => [ + '\'\\\\Twig\\\\Extension\\\\SandboxExtension\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Extension\\\\SandboxExtension\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/SandboxedPrintNode.php', + 'find' => [ + '\'\\\\Twig\\\\Extension\\\\SandboxExtension', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Extension\\\\SandboxExtension', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Environment.php', + 'find' => [ + '\'\\\\Twig\\\\Template\'', + '\'Twig_Extension\'', + '\'Twig\\\\Extension\\\\AbstractExtension\'', + ], + 'replace' => [ + '\'\\\\MailPoetVendor\\\\Twig\\\\Template\'', + '\'MailPoetVendor\\\\Twig_Extension\'', + '\'MailPoetVendor\\\\Twig\\\\Extension\\\\AbstractExtension\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Token.php', + 'find' => [ + '\'Twig\\\\Token::\'', + ], + 'replace' => [ + '\'MailPoetVendor\\\\Twig\\\\Token::\'', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Profiler/Node/EnterProfileNode.php', + 'find' => [ + '\\\\Twig\\\\Profiler\\\\Profile', + ], + 'replace' => [ + '\\\\MailPoetVendor\\\\Twig\\\\Profiler\\\\Profile', + ], + ], + [ + 'file' => '../vendor-prefixed/twig/twig/src/Node/ModuleNode.php', + 'find' => [ + '"use Twig\\\\Environment;', + '"use Twig\\\\Markup;', + '"use Twig\\\\Source;', + '"use Twig\\\\Template;', + '"use Twig\\\\Error\\\\LoaderError;', + '"use Twig\\\\Error\\\\RuntimeError;', + '"use Twig\\\\Sandbox\\\\SecurityError;', + '"use Twig\\\\Sandbox\\\\SecurityNotAllowedTagError;', + '"use Twig\\\\Sandbox\\\\SecurityNotAllowedFilterError;', + '"use Twig\\\\Sandbox\\\\SecurityNotAllowedFunctionError;', + ], + 'replace' => [ + '"use MailPoetVendor\\\\Twig\\\\Environment;', + '"use MailPoetVendor\\\\Twig\\\\Markup;', + '"use MailPoetVendor\\\\Twig\\\\Source;', + '"use MailPoetVendor\\\\Twig\\\\Template;', + '"use MailPoetVendor\\\\Twig\\\\Error\\\\LoaderError;', + '"use MailPoetVendor\\\\Twig\\\\Error\\\\RuntimeError;', + '"use MailPoetVendor\\\\Twig\\\\Sandbox\\\\SecurityError;', + '"use MailPoetVendor\\\\Twig\\\\Sandbox\\\\SecurityNotAllowedTagError;', + '"use MailPoetVendor\\\\Twig\\\\Sandbox\\\\SecurityNotAllowedFilterError;', + '"use MailPoetVendor\\\\Twig\\\\Sandbox\\\\SecurityNotAllowedFunctionError;', + ], + ], +]; + +foreach ($replacements as $single_file) { + $data = file_get_contents($single_file['file']); + $data = str_replace($single_file['find'], $single_file['replace'], $data); + file_put_contents($single_file['file'], $data); +} diff --git a/tests/integration/Config/RendererTest.php b/tests/integration/Config/RendererTest.php index 71b596f741..3948666de1 100644 --- a/tests/integration/Config/RendererTest.php +++ b/tests/integration/Config/RendererTest.php @@ -5,6 +5,7 @@ use Codeception\Stub; use Codeception\Stub\Expected; use MailPoet\Config\Env; use MailPoet\Config\Renderer; +use MailPoetVendor\Twig_Environment; class RendererTest extends \MailPoetTest { function _before() { @@ -75,7 +76,7 @@ class RendererTest extends \MailPoetTest { $this->renderer, array(), array( - 'renderer' => Stub::makeEmpty('Twig_Environment', + 'renderer' => Stub::makeEmpty(Twig_Environment::class, array( 'render' => Expected::atLeastOnce(function() { return 'test render'; @@ -95,7 +96,7 @@ class RendererTest extends \MailPoetTest { $this->renderer, array(true, false), array( - 'renderer' => Stub::makeEmpty('Twig_Environment', + 'renderer' => Stub::makeEmpty(Twig_Environment::class, array( 'render' => Expected::atLeastOnce(function() use ($exception_message) { throw new \RuntimeException($exception_message); diff --git a/tests/integration/Twig/FunctionsTest.php b/tests/integration/Twig/FunctionsTest.php index 30913afa29..16b00beb98 100644 --- a/tests/integration/Twig/FunctionsTest.php +++ b/tests/integration/Twig/FunctionsTest.php @@ -9,7 +9,7 @@ use MailPoet\WP\Functions as WPFunctions; class FunctionsTest extends \MailPoetTest { function testItExecutesIsRtlFunction() { $template = array('template' => '{% if is_rtl() %}rtl{% endif %}'); - $twig = new \Twig_Environment(new \Twig_Loader_Array($template)); + $twig = new \MailPoetVendor\Twig_Environment(new \MailPoetVendor\Twig_Loader_Array($template)); $twig->addExtension(new Functions()); WPFunctions::set(Stub::make(new WPFunctions, [