Commit Graph

3868 Commits

Author SHA1 Message Date
Fabien Potencier 47b5707f03 Merge branch '1.x' into 2.x
* 1.x:
  fixed website URL
  Fix cache update after uploading the template file (when auto-update is enabled).
  Small optimization for Twig_NodeTraverser::traverseForVisitor
  Add JSON escape strategy
2018-04-20 07:27:39 +02:00
Fabien Potencier 28690681d1 fixed website URL 2018-04-20 07:23:43 +02:00
Fabien Potencier d11c1f1a69 minor #2670 Fix partial template caching after update when auto_reload is on (ay-git)
This PR was submitted for the 2.x branch but it was merged into the 1.x branch instead (closes #2670).

Discussion
----------

Fix partial template caching after update when auto_reload is on

**Description of the bug:**
This bug manifests itself on production servers.
And with a high load the probability of getting on this bug tends to 100%
The bug results in the caching of a partial template and the failure of a part of the site working with this template. Can only be corrected by deleting the cache.

**What's happening:**
If in the process of uploading the template file, a render() is called, the partially uploaded file gets into the cache and after the template file is fully uploaded, the cache is not updated anymore.

**How to demonstrate:**
To demonstrate the bug, you can create 2 files:
File simulating the download of a file to the server (twig_test_write.php):

```
$classTwig = new Twig_Environment( new Twig_Loader_Filesystem(__DIR__."/../../site_templates/"), array(
	'cache' => __DIR__.'/../../site_templates_cache',
	'auto_reload'=>true
));

file_put_contents(__DIR__."/../../site_templates/"."test.twig","\n<br>Template start write to filesystem");

echo $classTwig->render("test.twig", array());

file_put_contents(__DIR__."/../../site_templates/"."test.twig"," - Template end write to filesystem",FILE_APPEND);

```

File for template rendering (twig_test_read.php):
```
$classTwig = new Twig_Environment( new Twig_Loader_Filesystem(__DIR__."/../../site_templates/"), array(
	'cache' => __DIR__.'/../../site_templates_cache',
	'auto_reload'=>true
));

echo $classTwig->render("test.twig", array());
```

Result executeing file twig_test_write.php:
```
Template start write to filesystem
```

Result executeing file twig_test_read.php:
```
Template start write to filesystem
```

**After this fix:**
Result executeing file twig_test_read.php:
```
Template start write to filesystem - Template end write to filesystem
```

Commits
-------

50d990e2 Fix cache update after uploading the template file (when auto-update is enabled).
2018-04-19 10:56:23 +02:00
AY_W 50d990e23d Fix cache update after uploading the template file (when auto-update is enabled).
If in the process of uploading the template file, a render() is called, the partially uploaded file gets into the cache and after the template file is fully uploaded, the cache is not updated anymore.
2018-04-19 10:56:18 +02:00
Fabien Potencier 9402071768 minor #2676 Fix links to repository in documentation (julienfalque)
This PR was merged into the 2.x branch.

Discussion
----------

Fix links to repository in documentation

Commits
-------

e691f2a5 Fix links to repository in documentation
2018-04-19 10:52:30 +02:00
Julien Falque e691f2a53f Fix links to repository in documentation 2018-04-16 11:58:53 +02:00
Fabien Potencier b4758ab491 minor #2672 Reword installation docs (fabpot)
This PR was merged into the 2.x branch.

Discussion
----------

Reword installation docs

One must use Composer with Twig 2.x.

Commits
-------

ff9070f6 reworded installation docs
2018-04-03 18:31:00 +02:00
Fabien Potencier ff9070f6d5 reworded installation docs 2018-04-03 17:59:20 +02:00
Fabien Potencier 1dcb150c94 bumped version to 2.4.9-DEV 2018-04-02 11:25:02 +02:00
Fabien Potencier 7b604c89da prepared the 2.4.8 release v2.4.8 2018-04-02 11:24:19 +02:00
Fabien Potencier e30cc13489 bug #2671 Fix regression (fabpot)
This PR was merged into the 2.x branch.

Discussion
----------

Fix regression

closes #2669, closes #2657

Commits
-------

0c2cdf2f fixed regression
2018-04-02 11:10:47 +02:00
Fabien Potencier 0c2cdf2f46 fixed regression 2018-04-02 11:08:39 +02:00
Fabien Potencier 8de61cef41 simplified tests 2018-04-02 10:24:25 +02:00
Fabien Potencier 3bc9686dc5 minor #2668 Small optimization for Twig_NodeTraverser::traverseForVisitor (covex-nn)
This PR was merged into the 1.x branch.

Discussion
----------

Small optimization for Twig_NodeTraverser::traverseForVisitor

During traversing a node tree `Twig_NodeTraverser::traverseForVisitor` (`Twig_NodeVisitorInterface::leaveNode`) often returns a same child node (a same object). So, there is no need to set it back to its parent.

This PR adds a check if a child node was changed. With this check a lot of calls to `Twig_Node::setNode` will be skipped.

Closes #2665

Commits
-------

555d01f3 Small optimization for Twig_NodeTraverser::traverseForVisitor
2018-04-01 20:24:34 +02:00
Andrey F. Mindubaev 555d01f327 Small optimization for Twig_NodeTraverser::traverseForVisitor 2018-03-26 09:53:48 +03:00
Fabien Potencier ce4aff66cc bug #2581 Add JSON escape strategy (c960657)
This PR was squashed before being merged into the 1.x branch (closes #2581).

Discussion
----------

Add JSON escape strategy

The `js` escape strategy used `\xNN`-style escape sequences. This is not allowed in JSON, only `\uNNNN` is allowed.

This PR adds a new escape strategy, `json` that is similar to `js` except that it does not use `\xNN` but uses `\uNNNN` instead.

I know that I can use `json_decode()`, but it came as a surprise to me that `escape('js')` did not work. You probably shouldn't be generating JSON structures in your templates, but sometimes it comes in handy. My use-case was generating a piece of [JSON-LD](https://json-ld.org).

A different approach that would perhaps be less confusing to users would be to change `js` to not use `\xNN`. This output is still valid JavaScript, it just uses two more bytes per occurrence. Let me know what you think.

Commits
-------

5c7b080b Add JSON escape strategy
2018-03-25 10:27:49 +02:00
Christian Schmidt 5c7b080b31 Add JSON escape strategy 2018-03-25 10:27:41 +02:00
Fabien Potencier 092871ad2d bumped version to 2.4.8-DEV 2018-03-20 05:31:47 +01:00
Fabien Potencier 69aacd44db prepared the 2.4.7 release v2.4.7 2018-03-20 05:31:17 +01:00
Fabien Potencier 60e41dfb91 updated CHANGELOG 2018-03-20 05:30:51 +01:00
Fabien Potencier 5efe582628 Merge branch '1.x' into 2.x
* 1.x:
  bumped version to 1.35.4-DEV
  prepared the 1.35.3 release
  updated CHANGELOG
2018-03-20 05:30:31 +01:00
Fabien Potencier c35ad8c4e3 bumped version to 1.35.4-DEV 2018-03-20 05:26:35 +01:00
Fabien Potencier b48680b6eb prepared the 1.35.3 release v1.35.3 2018-03-20 05:25:58 +01:00
Fabien Potencier dc53726ff0 updated CHANGELOG 2018-03-20 05:25:36 +01:00
Fabien Potencier f7f866e5fd Merge branch '1.x' into 2.x
* 1.x:
  fixed block names unicity
2018-03-20 05:05:46 +01:00
Fabien Potencier 4b14c38ad5 bug #2664 Fix block names unicity (fabpot)
This PR was merged into the 1.x branch.

Discussion
----------

Fix block names unicity

closes #2658

Commits
-------

6da72c6d fixed block names unicity
2018-03-20 05:05:35 +01:00
Fabien Potencier 6da72c6d8c fixed block names unicity 2018-03-20 04:57:51 +01:00
Fabien Potencier 4049028940 Merge branch '1.x' into 2.x
* 1.x:
  removed dev deps in composer.json
2018-03-19 18:23:14 +01:00
Fabien Potencier 3ff78ec072 minor #2663 Remove dev deps in composer.json (fabpot)
This PR was merged into the 1.x branch.

Discussion
----------

Remove dev deps in composer.json

Commits
-------

64349bcf removed dev deps in composer.json
2018-03-19 18:22:57 +01:00
Fabien Potencier 64349bcf49 removed dev deps in composer.json 2018-03-19 18:18:16 +01:00
Fabien Potencier 57653508ed minor #2655 convert_encoding doc updated (13DaGGeR)
This PR was merged into the 2.x branch.

Discussion
----------

convert_encoding doc updated

Commits
-------

dfcaf9f0 convert_encoding doc updated
2018-03-14 08:30:56 -07:00
Fabien Potencier fa359529e2 Merge branch '1.x' into 2.x
* 1.x:
  Fixed counting children of SimpleXMLElement object
2018-03-14 08:29:46 -07:00
Fabien Potencier 4d9dc79516 bug #2659 [v1] Fixed counting children of SimpleXMLElement object (webimpress)
This PR was merged into the 1.x branch.

Discussion
----------

[v1] Fixed counting children of SimpleXMLElement object

It works correctly in v1.32 and since v1.33 it is not working correctly.
See: https://github.com/twigphp/Twig/compare/v1.32.0...v1.33.0#diff-d7378002f67a61c458c1de0468eef74fR1265

Test code:
```php
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem/><elem/></doc>');

var_dump($xml instanceof \Countable);
echo 'Count: ' . count($xml), PHP_EOL;
echo 'Strlen: ' . strlen($xml), PHP_EOL;
echo 'MB Strlen: ' . mb_strlen($xml), PHP_EOL;
```

Results:
```
bool(false)
Count: 2
Strlen: 0
MB Strlen: 0
```

https://3v4l.org/VvUXG

Commits
-------

4a23bdc3 Fixed counting children of SimpleXMLElement object
2018-03-14 08:27:12 -07:00
webimpress 4a23bdc345 Fixed counting children of SimpleXMLElement object 2018-03-14 10:16:52 +00:00
13dagger dfcaf9f057 convert_encoding doc updated 2018-03-07 19:53:03 +03:00
Fabien Potencier 8630b6e19e Merge branch '1.x' into 2.x
* 1.x:
  added missing else clause to avoid infinite loops
  fixed .. (range operator) in sandbox policy
  fixed version
  bumped version to 1.35.3-DEV
  prepared the 1.35.2 release
2018-03-04 18:10:27 -08:00
Fabien Potencier 981c4d8ca0 bug #2652 Add missing else clause to avoid infinite loops (fabpot)
This PR was merged into the 1.x branch.

Discussion
----------

Add missing else clause to avoid infinite loops

Commits
-------

de2be6a0 added missing else clause to avoid infinite loops
2018-03-04 18:08:10 -08:00
Fabien Potencier de2be6a0ee added missing else clause to avoid infinite loops 2018-03-04 18:07:35 -08:00
Fabien Potencier ab6c99e707 bug #2651 Fix .. (range operator) in sandbox policy (fabpot)
This PR was merged into the 1.x branch.

Discussion
----------

Fix .. (range operator) in sandbox policy

Closes #2630

Commits
-------

6f45fcf5 fixed .. (range operator) in sandbox policy
2018-03-04 17:57:12 -08:00
Fabien Potencier 6f45fcf519 fixed .. (range operator) in sandbox policy 2018-03-04 10:12:13 -08:00
Fabien Potencier 5145bc55ff minor #2650 Optimize parser (fabpot)
This PR was merged into the 2.x branch.

Discussion
----------

Optimize parser

Depending on the complexity of the template, I see up to 50% faster template compilation.

Commits
-------

510e5eba optimized the parser by inlining the constant values
2018-03-04 10:02:05 -08:00
Fabien Potencier 77725e2a47 minor #2649 Make a small performance improvement (fabpot)
This PR was merged into the 2.x branch.

Discussion
----------

Make a small performance improvement

And it also fixes some potential subtle bugs.

Commits
-------

27f905ed made a small performance improvement
2018-03-04 10:01:43 -08:00
Fabien Potencier 510e5eba7d optimized the parser by inlining the constant values 2018-03-04 09:07:52 -08:00
Fabien Potencier 27f905edbe made a small performance improvement 2018-03-04 08:56:47 -08:00
Fabien Potencier e4172ebe21 fixed version 2018-03-03 08:24:54 -08:00
Fabien Potencier bf7bbf1e93 fixed version 2018-03-03 08:24:39 -08:00
Fabien Potencier f3023a87c4 bumped version to 2.4.7-DEV 2018-03-03 08:23:34 -08:00
Fabien Potencier d2117ec118 prepared the 2.4.6 release v2.4.6 2018-03-03 08:23:01 -08:00
Fabien Potencier fe4a5e846c bumped version to 1.35.3-DEV 2018-03-03 08:22:00 -08:00
Fabien Potencier 9c24f2cd39 prepared the 1.35.2 release v1.35.2 2018-03-03 08:21:29 -08:00