aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--AUTHORS2
-rw-r--r--CHANGELOG.md5
-rw-r--r--README.md2
-rw-r--r--application/Languages.php2
-rw-r--r--application/PageBuilder.php3
-rw-r--r--application/Updater.php12
-rw-r--r--application/Url.php2
-rw-r--r--composer.json6
-rw-r--r--composer.lock522
-rw-r--r--inc/languages/fr/LC_MESSAGES/shaarli.po78
-rw-r--r--index.php38
-rw-r--r--tests/api/controllers/PostLinkTest.php6
-rw-r--r--tpl/default/css/shaarli.css5
-rw-r--r--tpl/default/linklist.paging.html9
-rw-r--r--tpl/vintage/linklist.paging.html8
16 files changed, 483 insertions, 219 deletions
diff --git a/.travis.yml b/.travis.yml
index 322e4337..758aa9f4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,10 @@ cache:
5 directories: 5 directories:
6 - $HOME/.composer/cache 6 - $HOME/.composer/cache
7php: 7php:
8 - 7.2
8 - 7.1 9 - 7.1
9 - 7.0 10 - 7.0
10 - 5.6 11 - 5.6
11 - 5.5
12install: 12install:
13 - composer self-update 13 - composer self-update
14 - composer install --prefer-dist 14 - composer install --prefer-dist
diff --git a/AUTHORS b/AUTHORS
index 9a6bfb2c..c0414c0e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,4 +1,4 @@
1 577 ArthurHoaro <arthur@hoa.ro> 1 588 ArthurHoaro <arthur@hoa.ro>
2 283 VirtualTam <virtualtam@flibidi.net> 2 283 VirtualTam <virtualtam@flibidi.net>
3 179 nodiscc <nodiscc@gmail.com> 3 179 nodiscc <nodiscc@gmail.com>
4 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> 4 56 Sébastien Sauvage <sebsauvage@sebsauvage.net>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aef32fcf..0e737d8c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
6 6
7## [v0.10.0](https://github.com/shaarli/Shaarli/releases/tag/v0.10.0) - UNPUBLISHED 7## [v0.10.0](https://github.com/shaarli/Shaarli/releases/tag/v0.10.0) - UNPUBLISHED
8 8
9## [v0.9.5](https://github.com/shaarli/Shaarli/releases/tag/v0.9.5) - 2018-02-02
10### Fixed
11- Fix a warning happening when `php-intl` is not installed on the system
12- Fix warnings happening when updating from legacy SebSauvage version
13
9## [v0.9.4](https://github.com/shaarli/Shaarli/releases/tag/v0.9.4) - 2018-01-30 14## [v0.9.4](https://github.com/shaarli/Shaarli/releases/tag/v0.9.4) - 2018-01-30
10### Added 15### Added
11- Enable translations: Shaarli is now also available in French. Other language translations are welcome! 16- Enable translations: Shaarli is now also available in French. Other language translations are welcome!
diff --git a/README.md b/README.md
index 7744d2f6..da324abc 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ _It is designed to be personal (single-user), fast and handy._
9[![](https://img.shields.io/badge/stable-v0.8.5-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.8.5) 9[![](https://img.shields.io/badge/stable-v0.8.5-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.8.5)
10[![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli) 10[![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli)
11&bull; 11&bull;
12[![](https://img.shields.io/badge/latest-v0.9.4-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.4) 12[![](https://img.shields.io/badge/latest-v0.9.5-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.5)
13[![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli) 13[![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli)
14&bull; 14&bull;
15[![](https://img.shields.io/badge/master-v0.10.x-blue.svg)](https://github.com/shaarli/Shaarli) 15[![](https://img.shields.io/badge/master-v0.10.x-blue.svg)](https://github.com/shaarli/Shaarli)
diff --git a/application/Languages.php b/application/Languages.php
index 357c7524..3eb3388f 100644
--- a/application/Languages.php
+++ b/application/Languages.php
@@ -69,6 +69,8 @@ class Languages
69 { 69 {
70 $this->conf = $conf; 70 $this->conf = $conf;
71 $confLanguage = $this->conf->get('translation.language', 'auto'); 71 $confLanguage = $this->conf->get('translation.language', 'auto');
72 // Auto mode or invalid parameter, use the detected language.
73 // If the detected language is invalid, it doesn't matter, it will use English.
72 if ($confLanguage === 'auto' || ! $this->isValidLanguage($confLanguage)) { 74 if ($confLanguage === 'auto' || ! $this->isValidLanguage($confLanguage)) {
73 $this->language = substr($language, 0, 5); 75 $this->language = substr($language, 0, 5);
74 } else { 76 } else {
diff --git a/application/PageBuilder.php b/application/PageBuilder.php
index 468f144b..3233d6b6 100644
--- a/application/PageBuilder.php
+++ b/application/PageBuilder.php
@@ -83,7 +83,8 @@ class PageBuilder
83 ApplicationUtils::getVersionHash(SHAARLI_VERSION, $this->conf->get('credentials.salt')) 83 ApplicationUtils::getVersionHash(SHAARLI_VERSION, $this->conf->get('credentials.salt'))
84 ); 84 );
85 $this->tpl->assign('scripturl', index_url($_SERVER)); 85 $this->tpl->assign('scripturl', index_url($_SERVER));
86 $this->tpl->assign('privateonly', !empty($_SESSION['privateonly'])); // Show only private links? 86 $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
87 $this->tpl->assign('visibility', $visibility);
87 $this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly'])); 88 $this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly']));
88 $this->tpl->assign('pagetitle', $this->conf->get('general.title', 'Shaarli')); 89 $this->tpl->assign('pagetitle', $this->conf->get('general.title', 'Shaarli'));
89 if ($this->conf->exists('general.header_link')) { 90 if ($this->conf->exists('general.header_link')) {
diff --git a/application/Updater.php b/application/Updater.php
index 8d2bd577..f07e7697 100644
--- a/application/Updater.php
+++ b/application/Updater.php
@@ -445,6 +445,18 @@ class Updater
445 $this->linkDB->save($this->conf->get('resource.page_cache')); 445 $this->linkDB->save($this->conf->get('resource.page_cache'));
446 return true; 446 return true;
447 } 447 }
448
449 /**
450 * Change privateonly session key to visibility.
451 */
452 public function updateMethodVisibilitySession()
453 {
454 if (isset($_SESSION['privateonly'])) {
455 unset($_SESSION['privateonly']);
456 $_SESSION['visibility'] = 'private';
457 }
458 return true;
459 }
448} 460}
449 461
450/** 462/**
diff --git a/application/Url.php b/application/Url.php
index b3759377..21c17ecc 100644
--- a/application/Url.php
+++ b/application/Url.php
@@ -260,7 +260,7 @@ class Url
260 if (! function_exists('idn_to_ascii') || ! isset($this->parts['host'])) { 260 if (! function_exists('idn_to_ascii') || ! isset($this->parts['host'])) {
261 return $out; 261 return $out;
262 } 262 }
263 $asciiHost = idn_to_ascii($this->parts['host']); 263 $asciiHost = idn_to_ascii($this->parts['host'], 0, INTL_IDNA_VARIANT_UTS46);
264 return str_replace($this->parts['host'], $asciiHost, $out); 264 return str_replace($this->parts['host'], $asciiHost, $out);
265 } 265 }
266 266
diff --git a/composer.json b/composer.json
index f331d6ca..bbef28af 100644
--- a/composer.json
+++ b/composer.json
@@ -11,11 +11,11 @@
11 "keywords": ["bookmark", "link", "share", "web"], 11 "keywords": ["bookmark", "link", "share", "web"],
12 "config": { 12 "config": {
13 "platform": { 13 "platform": {
14 "php": "5.5.38" 14 "php": "5.6.31"
15 } 15 }
16 }, 16 },
17 "require": { 17 "require": {
18 "php": ">=5.5", 18 "php": ">=5.6",
19 "shaarli/netscape-bookmark-parser": "^2.0", 19 "shaarli/netscape-bookmark-parser": "^2.0",
20 "erusev/parsedown": "1.6", 20 "erusev/parsedown": "1.6",
21 "slim/slim": "^3.0", 21 "slim/slim": "^3.0",
@@ -24,7 +24,7 @@
24 }, 24 },
25 "require-dev": { 25 "require-dev": {
26 "phpmd/phpmd" : "@stable", 26 "phpmd/phpmd" : "@stable",
27 "phpunit/phpunit": "4.8.*", 27 "phpunit/phpunit": "^5.0",
28 "sebastian/phpcpd": "*", 28 "sebastian/phpcpd": "*",
29 "squizlabs/php_codesniffer": "2.*", 29 "squizlabs/php_codesniffer": "2.*",
30 "phpunit/phpcov": "*" 30 "phpunit/phpcov": "*"
diff --git a/composer.lock b/composer.lock
index c719b2a6..0a3fbd83 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 "content-hash": "13b7e1e474fe9264b098ba86face0feb", 7 "content-hash": "bc39afd7f6d37c76509f96bea69f6131",
8 "packages": [ 8 "packages": [
9 { 9 {
10 "name": "container-interop/container-interop", 10 "name": "container-interop/container-interop",
@@ -714,6 +714,51 @@
714 "time": "2015-06-14T21:17:01+00:00" 714 "time": "2015-06-14T21:17:01+00:00"
715 }, 715 },
716 { 716 {
717 "name": "myclabs/deep-copy",
718 "version": "1.7.0",
719 "source": {
720 "type": "git",
721 "url": "https://github.com/myclabs/DeepCopy.git",
722 "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
723 },
724 "dist": {
725 "type": "zip",
726 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
727 "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
728 "shasum": ""
729 },
730 "require": {
731 "php": "^5.6 || ^7.0"
732 },
733 "require-dev": {
734 "doctrine/collections": "^1.0",
735 "doctrine/common": "^2.6",
736 "phpunit/phpunit": "^4.1"
737 },
738 "type": "library",
739 "autoload": {
740 "psr-4": {
741 "DeepCopy\\": "src/DeepCopy/"
742 },
743 "files": [
744 "src/DeepCopy/deep_copy.php"
745 ]
746 },
747 "notification-url": "https://packagist.org/downloads/",
748 "license": [
749 "MIT"
750 ],
751 "description": "Create deep copies (clones) of your objects",
752 "keywords": [
753 "clone",
754 "copy",
755 "duplicate",
756 "object",
757 "object graph"
758 ],
759 "time": "2017-10-19T19:58:43+00:00"
760 },
761 {
717 "name": "pdepend/pdepend", 762 "name": "pdepend/pdepend",
718 "version": "2.5.2", 763 "version": "2.5.2",
719 "source": { 764 "source": {
@@ -809,22 +854,22 @@
809 }, 854 },
810 { 855 {
811 "name": "phpdocumentor/reflection-docblock", 856 "name": "phpdocumentor/reflection-docblock",
812 "version": "3.2.2", 857 "version": "3.3.2",
813 "source": { 858 "source": {
814 "type": "git", 859 "type": "git",
815 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 860 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
816 "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" 861 "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
817 }, 862 },
818 "dist": { 863 "dist": {
819 "type": "zip", 864 "type": "zip",
820 "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", 865 "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
821 "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", 866 "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
822 "shasum": "" 867 "shasum": ""
823 }, 868 },
824 "require": { 869 "require": {
825 "php": ">=5.5", 870 "php": "^5.6 || ^7.0",
826 "phpdocumentor/reflection-common": "^1.0@dev", 871 "phpdocumentor/reflection-common": "^1.0.0",
827 "phpdocumentor/type-resolver": "^0.3.0", 872 "phpdocumentor/type-resolver": "^0.4.0",
828 "webmozart/assert": "^1.0" 873 "webmozart/assert": "^1.0"
829 }, 874 },
830 "require-dev": { 875 "require-dev": {
@@ -850,20 +895,20 @@
850 } 895 }
851 ], 896 ],
852 "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 897 "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
853 "time": "2017-08-08T06:39:58+00:00" 898 "time": "2017-11-10T14:09:06+00:00"
854 }, 899 },
855 { 900 {
856 "name": "phpdocumentor/type-resolver", 901 "name": "phpdocumentor/type-resolver",
857 "version": "0.3.0", 902 "version": "0.4.0",
858 "source": { 903 "source": {
859 "type": "git", 904 "type": "git",
860 "url": "https://github.com/phpDocumentor/TypeResolver.git", 905 "url": "https://github.com/phpDocumentor/TypeResolver.git",
861 "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" 906 "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
862 }, 907 },
863 "dist": { 908 "dist": {
864 "type": "zip", 909 "type": "zip",
865 "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", 910 "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
866 "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", 911 "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
867 "shasum": "" 912 "shasum": ""
868 }, 913 },
869 "require": { 914 "require": {
@@ -897,7 +942,7 @@
897 "email": "me@mikevanriel.com" 942 "email": "me@mikevanriel.com"
898 } 943 }
899 ], 944 ],
900 "time": "2017-06-03T08:32:36+00:00" 945 "time": "2017-07-14T14:27:02+00:00"
901 }, 946 },
902 { 947 {
903 "name": "phpmd/phpmd", 948 "name": "phpmd/phpmd",
@@ -1030,39 +1075,40 @@
1030 }, 1075 },
1031 { 1076 {
1032 "name": "phpunit/php-code-coverage", 1077 "name": "phpunit/php-code-coverage",
1033 "version": "2.2.4", 1078 "version": "4.0.8",
1034 "source": { 1079 "source": {
1035 "type": "git", 1080 "type": "git",
1036 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1081 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1037 "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 1082 "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
1038 }, 1083 },
1039 "dist": { 1084 "dist": {
1040 "type": "zip", 1085 "type": "zip",
1041 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1086 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1042 "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1087 "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
1043 "shasum": "" 1088 "shasum": ""
1044 }, 1089 },
1045 "require": { 1090 "require": {
1046 "php": ">=5.3.3", 1091 "ext-dom": "*",
1047 "phpunit/php-file-iterator": "~1.3", 1092 "ext-xmlwriter": "*",
1048 "phpunit/php-text-template": "~1.2", 1093 "php": "^5.6 || ^7.0",
1049 "phpunit/php-token-stream": "~1.3", 1094 "phpunit/php-file-iterator": "^1.3",
1050 "sebastian/environment": "^1.3.2", 1095 "phpunit/php-text-template": "^1.2",
1051 "sebastian/version": "~1.0" 1096 "phpunit/php-token-stream": "^1.4.2 || ^2.0",
1097 "sebastian/code-unit-reverse-lookup": "^1.0",
1098 "sebastian/environment": "^1.3.2 || ^2.0",
1099 "sebastian/version": "^1.0 || ^2.0"
1052 }, 1100 },
1053 "require-dev": { 1101 "require-dev": {
1054 "ext-xdebug": ">=2.1.4", 1102 "ext-xdebug": "^2.1.4",
1055 "phpunit/phpunit": "~4" 1103 "phpunit/phpunit": "^5.7"
1056 }, 1104 },
1057 "suggest": { 1105 "suggest": {
1058 "ext-dom": "*", 1106 "ext-xdebug": "^2.5.1"
1059 "ext-xdebug": ">=2.2.1",
1060 "ext-xmlwriter": "*"
1061 }, 1107 },
1062 "type": "library", 1108 "type": "library",
1063 "extra": { 1109 "extra": {
1064 "branch-alias": { 1110 "branch-alias": {
1065 "dev-master": "2.2.x-dev" 1111 "dev-master": "4.0.x-dev"
1066 } 1112 }
1067 }, 1113 },
1068 "autoload": { 1114 "autoload": {
@@ -1088,7 +1134,7 @@
1088 "testing", 1134 "testing",
1089 "xunit" 1135 "xunit"
1090 ], 1136 ],
1091 "time": "2015-10-06T15:47:00+00:00" 1137 "time": "2017-04-02T07:44:40+00:00"
1092 }, 1138 },
1093 { 1139 {
1094 "name": "phpunit/php-file-iterator", 1140 "name": "phpunit/php-file-iterator",
@@ -1278,26 +1324,26 @@
1278 }, 1324 },
1279 { 1325 {
1280 "name": "phpunit/phpcov", 1326 "name": "phpunit/phpcov",
1281 "version": "2.0.2", 1327 "version": "3.1.0",
1282 "source": { 1328 "source": {
1283 "type": "git", 1329 "type": "git",
1284 "url": "https://github.com/sebastianbergmann/phpcov.git", 1330 "url": "https://github.com/sebastianbergmann/phpcov.git",
1285 "reference": "9ef291483ff65eefd8639584d61bbfb044d747f3" 1331 "reference": "2005bd90c2c8aae6d93ec82d9cda9d55dca96c3d"
1286 }, 1332 },
1287 "dist": { 1333 "dist": {
1288 "type": "zip", 1334 "type": "zip",
1289 "url": "https://api.github.com/repos/sebastianbergmann/phpcov/zipball/9ef291483ff65eefd8639584d61bbfb044d747f3", 1335 "url": "https://api.github.com/repos/sebastianbergmann/phpcov/zipball/2005bd90c2c8aae6d93ec82d9cda9d55dca96c3d",
1290 "reference": "9ef291483ff65eefd8639584d61bbfb044d747f3", 1336 "reference": "2005bd90c2c8aae6d93ec82d9cda9d55dca96c3d",
1291 "shasum": "" 1337 "shasum": ""
1292 }, 1338 },
1293 "require": { 1339 "require": {
1294 "php": ">=5.3.3", 1340 "php": "^5.6 || ^7.0",
1295 "phpunit/php-code-coverage": "~2.0", 1341 "phpunit/php-code-coverage": "^4.0",
1296 "phpunit/phpunit": ">=4.1", 1342 "phpunit/phpunit": "^5.0",
1297 "sebastian/diff": "~1.1", 1343 "sebastian/diff": "^1.1",
1298 "sebastian/finder-facade": "~1.1", 1344 "sebastian/finder-facade": "^1.1",
1299 "sebastian/version": "~1.0", 1345 "sebastian/version": "^1.0|^2.0",
1300 "symfony/console": "~2.2" 1346 "symfony/console": "^2|^3"
1301 }, 1347 },
1302 "bin": [ 1348 "bin": [
1303 "phpcov" 1349 "phpcov"
@@ -1305,7 +1351,7 @@
1305 "type": "library", 1351 "type": "library",
1306 "extra": { 1352 "extra": {
1307 "branch-alias": { 1353 "branch-alias": {
1308 "dev-master": "2.0.x-dev" 1354 "dev-master": "3.1.x-dev"
1309 } 1355 }
1310 }, 1356 },
1311 "autoload": { 1357 "autoload": {
@@ -1326,44 +1372,54 @@
1326 ], 1372 ],
1327 "description": "CLI frontend for PHP_CodeCoverage", 1373 "description": "CLI frontend for PHP_CodeCoverage",
1328 "homepage": "https://github.com/sebastianbergmann/phpcov", 1374 "homepage": "https://github.com/sebastianbergmann/phpcov",
1329 "time": "2015-10-05T09:24:23+00:00" 1375 "time": "2016-06-03T07:01:55+00:00"
1330 }, 1376 },
1331 { 1377 {
1332 "name": "phpunit/phpunit", 1378 "name": "phpunit/phpunit",
1333 "version": "4.8.36", 1379 "version": "5.7.27",
1334 "source": { 1380 "source": {
1335 "type": "git", 1381 "type": "git",
1336 "url": "https://github.com/sebastianbergmann/phpunit.git", 1382 "url": "https://github.com/sebastianbergmann/phpunit.git",
1337 "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" 1383 "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
1338 }, 1384 },
1339 "dist": { 1385 "dist": {
1340 "type": "zip", 1386 "type": "zip",
1341 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", 1387 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1342 "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", 1388 "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
1343 "shasum": "" 1389 "shasum": ""
1344 }, 1390 },
1345 "require": { 1391 "require": {
1346 "ext-dom": "*", 1392 "ext-dom": "*",
1347 "ext-json": "*", 1393 "ext-json": "*",
1348 "ext-pcre": "*", 1394 "ext-libxml": "*",
1349 "ext-reflection": "*", 1395 "ext-mbstring": "*",
1350 "ext-spl": "*", 1396 "ext-xml": "*",
1351 "php": ">=5.3.3", 1397 "myclabs/deep-copy": "~1.3",
1352 "phpspec/prophecy": "^1.3.1", 1398 "php": "^5.6 || ^7.0",
1353 "phpunit/php-code-coverage": "~2.1", 1399 "phpspec/prophecy": "^1.6.2",
1400 "phpunit/php-code-coverage": "^4.0.4",
1354 "phpunit/php-file-iterator": "~1.4", 1401 "phpunit/php-file-iterator": "~1.4",
1355 "phpunit/php-text-template": "~1.2", 1402 "phpunit/php-text-template": "~1.2",
1356 "phpunit/php-timer": "^1.0.6", 1403 "phpunit/php-timer": "^1.0.6",
1357 "phpunit/phpunit-mock-objects": "~2.3", 1404 "phpunit/phpunit-mock-objects": "^3.2",
1358 "sebastian/comparator": "~1.2.2", 1405 "sebastian/comparator": "^1.2.4",
1359 "sebastian/diff": "~1.2", 1406 "sebastian/diff": "^1.4.3",
1360 "sebastian/environment": "~1.3", 1407 "sebastian/environment": "^1.3.4 || ^2.0",
1361 "sebastian/exporter": "~1.2", 1408 "sebastian/exporter": "~2.0",
1362 "sebastian/global-state": "~1.0", 1409 "sebastian/global-state": "^1.1",
1363 "sebastian/version": "~1.0", 1410 "sebastian/object-enumerator": "~2.0",
1364 "symfony/yaml": "~2.1|~3.0" 1411 "sebastian/resource-operations": "~1.0",
1412 "sebastian/version": "^1.0.6|^2.0.1",
1413 "symfony/yaml": "~2.1|~3.0|~4.0"
1414 },
1415 "conflict": {
1416 "phpdocumentor/reflection-docblock": "3.0.2"
1417 },
1418 "require-dev": {
1419 "ext-pdo": "*"
1365 }, 1420 },
1366 "suggest": { 1421 "suggest": {
1422 "ext-xdebug": "*",
1367 "phpunit/php-invoker": "~1.1" 1423 "phpunit/php-invoker": "~1.1"
1368 }, 1424 },
1369 "bin": [ 1425 "bin": [
@@ -1372,7 +1428,7 @@
1372 "type": "library", 1428 "type": "library",
1373 "extra": { 1429 "extra": {
1374 "branch-alias": { 1430 "branch-alias": {
1375 "dev-master": "4.8.x-dev" 1431 "dev-master": "5.7.x-dev"
1376 } 1432 }
1377 }, 1433 },
1378 "autoload": { 1434 "autoload": {
@@ -1398,30 +1454,33 @@
1398 "testing", 1454 "testing",
1399 "xunit" 1455 "xunit"
1400 ], 1456 ],
1401 "time": "2017-06-21T08:07:12+00:00" 1457 "time": "2018-02-01T05:50:59+00:00"
1402 }, 1458 },
1403 { 1459 {
1404 "name": "phpunit/phpunit-mock-objects", 1460 "name": "phpunit/phpunit-mock-objects",
1405 "version": "2.3.8", 1461 "version": "3.4.4",
1406 "source": { 1462 "source": {
1407 "type": "git", 1463 "type": "git",
1408 "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1464 "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1409 "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 1465 "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
1410 }, 1466 },
1411 "dist": { 1467 "dist": {
1412 "type": "zip", 1468 "type": "zip",
1413 "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 1469 "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
1414 "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 1470 "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
1415 "shasum": "" 1471 "shasum": ""
1416 }, 1472 },
1417 "require": { 1473 "require": {
1418 "doctrine/instantiator": "^1.0.2", 1474 "doctrine/instantiator": "^1.0.2",
1419 "php": ">=5.3.3", 1475 "php": "^5.6 || ^7.0",
1420 "phpunit/php-text-template": "~1.2", 1476 "phpunit/php-text-template": "^1.2",
1421 "sebastian/exporter": "~1.2" 1477 "sebastian/exporter": "^1.2 || ^2.0"
1478 },
1479 "conflict": {
1480 "phpunit/phpunit": "<5.4.0"
1422 }, 1481 },
1423 "require-dev": { 1482 "require-dev": {
1424 "phpunit/phpunit": "~4.4" 1483 "phpunit/phpunit": "^5.4"
1425 }, 1484 },
1426 "suggest": { 1485 "suggest": {
1427 "ext-soap": "*" 1486 "ext-soap": "*"
@@ -1429,7 +1488,7 @@
1429 "type": "library", 1488 "type": "library",
1430 "extra": { 1489 "extra": {
1431 "branch-alias": { 1490 "branch-alias": {
1432 "dev-master": "2.3.x-dev" 1491 "dev-master": "3.2.x-dev"
1433 } 1492 }
1434 }, 1493 },
1435 "autoload": { 1494 "autoload": {
@@ -1454,7 +1513,52 @@
1454 "mock", 1513 "mock",
1455 "xunit" 1514 "xunit"
1456 ], 1515 ],
1457 "time": "2015-10-02T06:51:40+00:00" 1516 "time": "2017-06-30T09:13:00+00:00"
1517 },
1518 {
1519 "name": "sebastian/code-unit-reverse-lookup",
1520 "version": "1.0.1",
1521 "source": {
1522 "type": "git",
1523 "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1524 "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1525 },
1526 "dist": {
1527 "type": "zip",
1528 "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1529 "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1530 "shasum": ""
1531 },
1532 "require": {
1533 "php": "^5.6 || ^7.0"
1534 },
1535 "require-dev": {
1536 "phpunit/phpunit": "^5.7 || ^6.0"
1537 },
1538 "type": "library",
1539 "extra": {
1540 "branch-alias": {
1541 "dev-master": "1.0.x-dev"
1542 }
1543 },
1544 "autoload": {
1545 "classmap": [
1546 "src/"
1547 ]
1548 },
1549 "notification-url": "https://packagist.org/downloads/",
1550 "license": [
1551 "BSD-3-Clause"
1552 ],
1553 "authors": [
1554 {
1555 "name": "Sebastian Bergmann",
1556 "email": "sebastian@phpunit.de"
1557 }
1558 ],
1559 "description": "Looks up which function or method a line of code belongs to",
1560 "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1561 "time": "2017-03-04T06:30:41+00:00"
1458 }, 1562 },
1459 { 1563 {
1460 "name": "sebastian/comparator", 1564 "name": "sebastian/comparator",
@@ -1574,28 +1678,28 @@
1574 }, 1678 },
1575 { 1679 {
1576 "name": "sebastian/environment", 1680 "name": "sebastian/environment",
1577 "version": "1.3.8", 1681 "version": "2.0.0",
1578 "source": { 1682 "source": {
1579 "type": "git", 1683 "type": "git",
1580 "url": "https://github.com/sebastianbergmann/environment.git", 1684 "url": "https://github.com/sebastianbergmann/environment.git",
1581 "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 1685 "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
1582 }, 1686 },
1583 "dist": { 1687 "dist": {
1584 "type": "zip", 1688 "type": "zip",
1585 "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1689 "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1586 "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1690 "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
1587 "shasum": "" 1691 "shasum": ""
1588 }, 1692 },
1589 "require": { 1693 "require": {
1590 "php": "^5.3.3 || ^7.0" 1694 "php": "^5.6 || ^7.0"
1591 }, 1695 },
1592 "require-dev": { 1696 "require-dev": {
1593 "phpunit/phpunit": "^4.8 || ^5.0" 1697 "phpunit/phpunit": "^5.0"
1594 }, 1698 },
1595 "type": "library", 1699 "type": "library",
1596 "extra": { 1700 "extra": {
1597 "branch-alias": { 1701 "branch-alias": {
1598 "dev-master": "1.3.x-dev" 1702 "dev-master": "2.0.x-dev"
1599 } 1703 }
1600 }, 1704 },
1601 "autoload": { 1705 "autoload": {
@@ -1620,25 +1724,25 @@
1620 "environment", 1724 "environment",
1621 "hhvm" 1725 "hhvm"
1622 ], 1726 ],
1623 "time": "2016-08-18T05:49:44+00:00" 1727 "time": "2016-11-26T07:53:53+00:00"
1624 }, 1728 },
1625 { 1729 {
1626 "name": "sebastian/exporter", 1730 "name": "sebastian/exporter",
1627 "version": "1.2.2", 1731 "version": "2.0.0",
1628 "source": { 1732 "source": {
1629 "type": "git", 1733 "type": "git",
1630 "url": "https://github.com/sebastianbergmann/exporter.git", 1734 "url": "https://github.com/sebastianbergmann/exporter.git",
1631 "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1735 "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
1632 }, 1736 },
1633 "dist": { 1737 "dist": {
1634 "type": "zip", 1738 "type": "zip",
1635 "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1739 "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1636 "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1740 "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
1637 "shasum": "" 1741 "shasum": ""
1638 }, 1742 },
1639 "require": { 1743 "require": {
1640 "php": ">=5.3.3", 1744 "php": ">=5.3.3",
1641 "sebastian/recursion-context": "~1.0" 1745 "sebastian/recursion-context": "~2.0"
1642 }, 1746 },
1643 "require-dev": { 1747 "require-dev": {
1644 "ext-mbstring": "*", 1748 "ext-mbstring": "*",
@@ -1647,7 +1751,7 @@
1647 "type": "library", 1751 "type": "library",
1648 "extra": { 1752 "extra": {
1649 "branch-alias": { 1753 "branch-alias": {
1650 "dev-master": "1.3.x-dev" 1754 "dev-master": "2.0.x-dev"
1651 } 1755 }
1652 }, 1756 },
1653 "autoload": { 1757 "autoload": {
@@ -1687,7 +1791,7 @@
1687 "export", 1791 "export",
1688 "exporter" 1792 "exporter"
1689 ], 1793 ],
1690 "time": "2016-06-17T09:04:28+00:00" 1794 "time": "2016-11-19T08:54:04+00:00"
1691 }, 1795 },
1692 { 1796 {
1693 "name": "sebastian/finder-facade", 1797 "name": "sebastian/finder-facade",
@@ -1780,26 +1884,71 @@
1780 "time": "2015-10-12T03:26:01+00:00" 1884 "time": "2015-10-12T03:26:01+00:00"
1781 }, 1885 },
1782 { 1886 {
1887 "name": "sebastian/object-enumerator",
1888 "version": "2.0.1",
1889 "source": {
1890 "type": "git",
1891 "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1892 "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
1893 },
1894 "dist": {
1895 "type": "zip",
1896 "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
1897 "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
1898 "shasum": ""
1899 },
1900 "require": {
1901 "php": ">=5.6",
1902 "sebastian/recursion-context": "~2.0"
1903 },
1904 "require-dev": {
1905 "phpunit/phpunit": "~5"
1906 },
1907 "type": "library",
1908 "extra": {
1909 "branch-alias": {
1910 "dev-master": "2.0.x-dev"
1911 }
1912 },
1913 "autoload": {
1914 "classmap": [
1915 "src/"
1916 ]
1917 },
1918 "notification-url": "https://packagist.org/downloads/",
1919 "license": [
1920 "BSD-3-Clause"
1921 ],
1922 "authors": [
1923 {
1924 "name": "Sebastian Bergmann",
1925 "email": "sebastian@phpunit.de"
1926 }
1927 ],
1928 "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1929 "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1930 "time": "2017-02-18T15:18:39+00:00"
1931 },
1932 {
1783 "name": "sebastian/phpcpd", 1933 "name": "sebastian/phpcpd",
1784 "version": "2.0.4", 1934 "version": "3.0.1",
1785 "source": { 1935 "source": {
1786 "type": "git", 1936 "type": "git",
1787 "url": "https://github.com/sebastianbergmann/phpcpd.git", 1937 "url": "https://github.com/sebastianbergmann/phpcpd.git",
1788 "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db" 1938 "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564"
1789 }, 1939 },
1790 "dist": { 1940 "dist": {
1791 "type": "zip", 1941 "type": "zip",
1792 "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/24d9a880deadb0b8c9680e9cfe78e30b704225db", 1942 "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/dfed51c1288790fc957c9433e2f49ab152e8a564",
1793 "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db", 1943 "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564",
1794 "shasum": "" 1944 "shasum": ""
1795 }, 1945 },
1796 "require": { 1946 "require": {
1797 "php": ">=5.3.3", 1947 "php": "^5.6|^7.0",
1798 "phpunit/php-timer": ">=1.0.6", 1948 "phpunit/php-timer": "^1.0.6",
1799 "sebastian/finder-facade": "~1.1", 1949 "sebastian/finder-facade": "^1.1",
1800 "sebastian/version": "~1.0|~2.0", 1950 "sebastian/version": "^1.0|^2.0",
1801 "symfony/console": "~2.7|^3.0", 1951 "symfony/console": "^2.7|^3.0|^4.0"
1802 "theseer/fdomdocument": "~1.4"
1803 }, 1952 },
1804 "bin": [ 1953 "bin": [
1805 "phpcpd" 1954 "phpcpd"
@@ -1807,7 +1956,7 @@
1807 "type": "library", 1956 "type": "library",
1808 "extra": { 1957 "extra": {
1809 "branch-alias": { 1958 "branch-alias": {
1810 "dev-master": "2.0-dev" 1959 "dev-master": "3.0-dev"
1811 } 1960 }
1812 }, 1961 },
1813 "autoload": { 1962 "autoload": {
@@ -1828,20 +1977,20 @@
1828 ], 1977 ],
1829 "description": "Copy/Paste Detector (CPD) for PHP code.", 1978 "description": "Copy/Paste Detector (CPD) for PHP code.",
1830 "homepage": "https://github.com/sebastianbergmann/phpcpd", 1979 "homepage": "https://github.com/sebastianbergmann/phpcpd",
1831 "time": "2016-04-17T19:32:49+00:00" 1980 "time": "2017-11-16T08:49:28+00:00"
1832 }, 1981 },
1833 { 1982 {
1834 "name": "sebastian/recursion-context", 1983 "name": "sebastian/recursion-context",
1835 "version": "1.0.5", 1984 "version": "2.0.0",
1836 "source": { 1985 "source": {
1837 "type": "git", 1986 "type": "git",
1838 "url": "https://github.com/sebastianbergmann/recursion-context.git", 1987 "url": "https://github.com/sebastianbergmann/recursion-context.git",
1839 "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 1988 "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
1840 }, 1989 },
1841 "dist": { 1990 "dist": {
1842 "type": "zip", 1991 "type": "zip",
1843 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1992 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1844 "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1993 "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
1845 "shasum": "" 1994 "shasum": ""
1846 }, 1995 },
1847 "require": { 1996 "require": {
@@ -1853,7 +2002,7 @@
1853 "type": "library", 2002 "type": "library",
1854 "extra": { 2003 "extra": {
1855 "branch-alias": { 2004 "branch-alias": {
1856 "dev-master": "1.0.x-dev" 2005 "dev-master": "2.0.x-dev"
1857 } 2006 }
1858 }, 2007 },
1859 "autoload": { 2008 "autoload": {
@@ -1881,23 +2030,73 @@
1881 ], 2030 ],
1882 "description": "Provides functionality to recursively process PHP variables", 2031 "description": "Provides functionality to recursively process PHP variables",
1883 "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2032 "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1884 "time": "2016-10-03T07:41:43+00:00" 2033 "time": "2016-11-19T07:33:16+00:00"
2034 },
2035 {
2036 "name": "sebastian/resource-operations",
2037 "version": "1.0.0",
2038 "source": {
2039 "type": "git",
2040 "url": "https://github.com/sebastianbergmann/resource-operations.git",
2041 "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
2042 },
2043 "dist": {
2044 "type": "zip",
2045 "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2046 "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2047 "shasum": ""
2048 },
2049 "require": {
2050 "php": ">=5.6.0"
2051 },
2052 "type": "library",
2053 "extra": {
2054 "branch-alias": {
2055 "dev-master": "1.0.x-dev"
2056 }
2057 },
2058 "autoload": {
2059 "classmap": [
2060 "src/"
2061 ]
2062 },
2063 "notification-url": "https://packagist.org/downloads/",
2064 "license": [
2065 "BSD-3-Clause"
2066 ],
2067 "authors": [
2068 {
2069 "name": "Sebastian Bergmann",
2070 "email": "sebastian@phpunit.de"
2071 }
2072 ],
2073 "description": "Provides a list of PHP built-in functions that operate on resources",
2074 "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2075 "time": "2015-07-28T20:34:47+00:00"
1885 }, 2076 },
1886 { 2077 {
1887 "name": "sebastian/version", 2078 "name": "sebastian/version",
1888 "version": "1.0.6", 2079 "version": "2.0.1",
1889 "source": { 2080 "source": {
1890 "type": "git", 2081 "type": "git",
1891 "url": "https://github.com/sebastianbergmann/version.git", 2082 "url": "https://github.com/sebastianbergmann/version.git",
1892 "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 2083 "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1893 }, 2084 },
1894 "dist": { 2085 "dist": {
1895 "type": "zip", 2086 "type": "zip",
1896 "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2087 "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1897 "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2088 "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1898 "shasum": "" 2089 "shasum": ""
1899 }, 2090 },
2091 "require": {
2092 "php": ">=5.6"
2093 },
1900 "type": "library", 2094 "type": "library",
2095 "extra": {
2096 "branch-alias": {
2097 "dev-master": "2.0.x-dev"
2098 }
2099 },
1901 "autoload": { 2100 "autoload": {
1902 "classmap": [ 2101 "classmap": [
1903 "src/" 2102 "src/"
@@ -1916,7 +2115,7 @@
1916 ], 2115 ],
1917 "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2116 "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1918 "homepage": "https://github.com/sebastianbergmann/version", 2117 "homepage": "https://github.com/sebastianbergmann/version",
1919 "time": "2015-06-21T13:59:46+00:00" 2118 "time": "2016-10-03T07:35:21+00:00"
1920 }, 2119 },
1921 { 2120 {
1922 "name": "squizlabs/php_codesniffer", 2121 "name": "squizlabs/php_codesniffer",
@@ -2060,37 +2259,45 @@
2060 }, 2259 },
2061 { 2260 {
2062 "name": "symfony/console", 2261 "name": "symfony/console",
2063 "version": "v2.8.34", 2262 "version": "v3.4.4",
2064 "source": { 2263 "source": {
2065 "type": "git", 2264 "type": "git",
2066 "url": "https://github.com/symfony/console.git", 2265 "url": "https://github.com/symfony/console.git",
2067 "reference": "162ca7d0ea597599967aa63b23418e747da0896b" 2266 "reference": "26b6f419edda16c19775211987651cb27baea7f1"
2068 }, 2267 },
2069 "dist": { 2268 "dist": {
2070 "type": "zip", 2269 "type": "zip",
2071 "url": "https://api.github.com/repos/symfony/console/zipball/162ca7d0ea597599967aa63b23418e747da0896b", 2270 "url": "https://api.github.com/repos/symfony/console/zipball/26b6f419edda16c19775211987651cb27baea7f1",
2072 "reference": "162ca7d0ea597599967aa63b23418e747da0896b", 2271 "reference": "26b6f419edda16c19775211987651cb27baea7f1",
2073 "shasum": "" 2272 "shasum": ""
2074 }, 2273 },
2075 "require": { 2274 "require": {
2076 "php": ">=5.3.9", 2275 "php": "^5.5.9|>=7.0.8",
2077 "symfony/debug": "^2.7.2|~3.0.0", 2276 "symfony/debug": "~2.8|~3.0|~4.0",
2078 "symfony/polyfill-mbstring": "~1.0" 2277 "symfony/polyfill-mbstring": "~1.0"
2079 }, 2278 },
2279 "conflict": {
2280 "symfony/dependency-injection": "<3.4",
2281 "symfony/process": "<3.3"
2282 },
2080 "require-dev": { 2283 "require-dev": {
2081 "psr/log": "~1.0", 2284 "psr/log": "~1.0",
2082 "symfony/event-dispatcher": "~2.1|~3.0.0", 2285 "symfony/config": "~3.3|~4.0",
2083 "symfony/process": "~2.1|~3.0.0" 2286 "symfony/dependency-injection": "~3.4|~4.0",
2287 "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
2288 "symfony/lock": "~3.4|~4.0",
2289 "symfony/process": "~3.3|~4.0"
2084 }, 2290 },
2085 "suggest": { 2291 "suggest": {
2086 "psr/log": "For using the console logger", 2292 "psr/log": "For using the console logger",
2087 "symfony/event-dispatcher": "", 2293 "symfony/event-dispatcher": "",
2294 "symfony/lock": "",
2088 "symfony/process": "" 2295 "symfony/process": ""
2089 }, 2296 },
2090 "type": "library", 2297 "type": "library",
2091 "extra": { 2298 "extra": {
2092 "branch-alias": { 2299 "branch-alias": {
2093 "dev-master": "2.8-dev" 2300 "dev-master": "3.4-dev"
2094 } 2301 }
2095 }, 2302 },
2096 "autoload": { 2303 "autoload": {
@@ -2117,37 +2324,36 @@
2117 ], 2324 ],
2118 "description": "Symfony Console Component", 2325 "description": "Symfony Console Component",
2119 "homepage": "https://symfony.com", 2326 "homepage": "https://symfony.com",
2120 "time": "2018-01-29T08:54:45+00:00" 2327 "time": "2018-01-29T09:03:43+00:00"
2121 }, 2328 },
2122 { 2329 {
2123 "name": "symfony/debug", 2330 "name": "symfony/debug",
2124 "version": "v3.0.9", 2331 "version": "v3.4.4",
2125 "source": { 2332 "source": {
2126 "type": "git", 2333 "type": "git",
2127 "url": "https://github.com/symfony/debug.git", 2334 "url": "https://github.com/symfony/debug.git",
2128 "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" 2335 "reference": "53f6af2805daf52a43b393b93d2f24925d35c937"
2129 }, 2336 },
2130 "dist": { 2337 "dist": {
2131 "type": "zip", 2338 "type": "zip",
2132 "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", 2339 "url": "https://api.github.com/repos/symfony/debug/zipball/53f6af2805daf52a43b393b93d2f24925d35c937",
2133 "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", 2340 "reference": "53f6af2805daf52a43b393b93d2f24925d35c937",
2134 "shasum": "" 2341 "shasum": ""
2135 }, 2342 },
2136 "require": { 2343 "require": {
2137 "php": ">=5.5.9", 2344 "php": "^5.5.9|>=7.0.8",
2138 "psr/log": "~1.0" 2345 "psr/log": "~1.0"
2139 }, 2346 },
2140 "conflict": { 2347 "conflict": {
2141 "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 2348 "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
2142 }, 2349 },
2143 "require-dev": { 2350 "require-dev": {
2144 "symfony/class-loader": "~2.8|~3.0", 2351 "symfony/http-kernel": "~2.8|~3.0|~4.0"
2145 "symfony/http-kernel": "~2.8|~3.0"
2146 }, 2352 },
2147 "type": "library", 2353 "type": "library",
2148 "extra": { 2354 "extra": {
2149 "branch-alias": { 2355 "branch-alias": {
2150 "dev-master": "3.0-dev" 2356 "dev-master": "3.4-dev"
2151 } 2357 }
2152 }, 2358 },
2153 "autoload": { 2359 "autoload": {
@@ -2174,20 +2380,20 @@
2174 ], 2380 ],
2175 "description": "Symfony Debug Component", 2381 "description": "Symfony Debug Component",
2176 "homepage": "https://symfony.com", 2382 "homepage": "https://symfony.com",
2177 "time": "2016-07-30T07:22:48+00:00" 2383 "time": "2018-01-18T22:16:57+00:00"
2178 }, 2384 },
2179 { 2385 {
2180 "name": "symfony/dependency-injection", 2386 "name": "symfony/dependency-injection",
2181 "version": "v3.3.16", 2387 "version": "v3.4.4",
2182 "source": { 2388 "source": {
2183 "type": "git", 2389 "type": "git",
2184 "url": "https://github.com/symfony/dependency-injection.git", 2390 "url": "https://github.com/symfony/dependency-injection.git",
2185 "reference": "54243abc4e1a1a15e274e391bd6f7090b44711f1" 2391 "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d"
2186 }, 2392 },
2187 "dist": { 2393 "dist": {
2188 "type": "zip", 2394 "type": "zip",
2189 "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54243abc4e1a1a15e274e391bd6f7090b44711f1", 2395 "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4b2717ee2499390e371e1fc7abaf886c1c83e83d",
2190 "reference": "54243abc4e1a1a15e274e391bd6f7090b44711f1", 2396 "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d",
2191 "shasum": "" 2397 "shasum": ""
2192 }, 2398 },
2193 "require": { 2399 "require": {
@@ -2197,15 +2403,16 @@
2197 "conflict": { 2403 "conflict": {
2198 "symfony/config": "<3.3.7", 2404 "symfony/config": "<3.3.7",
2199 "symfony/finder": "<3.3", 2405 "symfony/finder": "<3.3",
2200 "symfony/yaml": "<3.3" 2406 "symfony/proxy-manager-bridge": "<3.4",
2407 "symfony/yaml": "<3.4"
2201 }, 2408 },
2202 "provide": { 2409 "provide": {
2203 "psr/container-implementation": "1.0" 2410 "psr/container-implementation": "1.0"
2204 }, 2411 },
2205 "require-dev": { 2412 "require-dev": {
2206 "symfony/config": "~3.3", 2413 "symfony/config": "~3.3|~4.0",
2207 "symfony/expression-language": "~2.8|~3.0", 2414 "symfony/expression-language": "~2.8|~3.0|~4.0",
2208 "symfony/yaml": "~3.3" 2415 "symfony/yaml": "~3.4|~4.0"
2209 }, 2416 },
2210 "suggest": { 2417 "suggest": {
2211 "symfony/config": "", 2418 "symfony/config": "",
@@ -2217,7 +2424,7 @@
2217 "type": "library", 2424 "type": "library",
2218 "extra": { 2425 "extra": {
2219 "branch-alias": { 2426 "branch-alias": {
2220 "dev-master": "3.3-dev" 2427 "dev-master": "3.4-dev"
2221 } 2428 }
2222 }, 2429 },
2223 "autoload": { 2430 "autoload": {
@@ -2244,7 +2451,7 @@
2244 ], 2451 ],
2245 "description": "Symfony DependencyInjection Component", 2452 "description": "Symfony DependencyInjection Component",
2246 "homepage": "https://symfony.com", 2453 "homepage": "https://symfony.com",
2247 "time": "2018-01-29T09:02:23+00:00" 2454 "time": "2018-01-29T09:16:57+00:00"
2248 }, 2455 },
2249 { 2456 {
2250 "name": "symfony/filesystem", 2457 "name": "symfony/filesystem",
@@ -2346,16 +2553,16 @@
2346 }, 2553 },
2347 { 2554 {
2348 "name": "symfony/polyfill-mbstring", 2555 "name": "symfony/polyfill-mbstring",
2349 "version": "v1.6.0", 2556 "version": "v1.7.0",
2350 "source": { 2557 "source": {
2351 "type": "git", 2558 "type": "git",
2352 "url": "https://github.com/symfony/polyfill-mbstring.git", 2559 "url": "https://github.com/symfony/polyfill-mbstring.git",
2353 "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" 2560 "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
2354 }, 2561 },
2355 "dist": { 2562 "dist": {
2356 "type": "zip", 2563 "type": "zip",
2357 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 2564 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
2358 "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 2565 "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
2359 "shasum": "" 2566 "shasum": ""
2360 }, 2567 },
2361 "require": { 2568 "require": {
@@ -2367,7 +2574,7 @@
2367 "type": "library", 2574 "type": "library",
2368 "extra": { 2575 "extra": {
2369 "branch-alias": { 2576 "branch-alias": {
2370 "dev-master": "1.6-dev" 2577 "dev-master": "1.7-dev"
2371 } 2578 }
2372 }, 2579 },
2373 "autoload": { 2580 "autoload": {
@@ -2401,27 +2608,30 @@
2401 "portable", 2608 "portable",
2402 "shim" 2609 "shim"
2403 ], 2610 ],
2404 "time": "2017-10-11T12:05:26+00:00" 2611 "time": "2018-01-30T19:27:44+00:00"
2405 }, 2612 },
2406 { 2613 {
2407 "name": "symfony/yaml", 2614 "name": "symfony/yaml",
2408 "version": "v3.3.16", 2615 "version": "v3.4.4",
2409 "source": { 2616 "source": {
2410 "type": "git", 2617 "type": "git",
2411 "url": "https://github.com/symfony/yaml.git", 2618 "url": "https://github.com/symfony/yaml.git",
2412 "reference": "af615970e265543a26ee712c958404eb9b7ac93d" 2619 "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe"
2413 }, 2620 },
2414 "dist": { 2621 "dist": {
2415 "type": "zip", 2622 "type": "zip",
2416 "url": "https://api.github.com/repos/symfony/yaml/zipball/af615970e265543a26ee712c958404eb9b7ac93d", 2623 "url": "https://api.github.com/repos/symfony/yaml/zipball/eab73b6c21d27ae4cd037c417618dfd4befb0bfe",
2417 "reference": "af615970e265543a26ee712c958404eb9b7ac93d", 2624 "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe",
2418 "shasum": "" 2625 "shasum": ""
2419 }, 2626 },
2420 "require": { 2627 "require": {
2421 "php": "^5.5.9|>=7.0.8" 2628 "php": "^5.5.9|>=7.0.8"
2422 }, 2629 },
2630 "conflict": {
2631 "symfony/console": "<3.4"
2632 },
2423 "require-dev": { 2633 "require-dev": {
2424 "symfony/console": "~2.8|~3.0" 2634 "symfony/console": "~3.4|~4.0"
2425 }, 2635 },
2426 "suggest": { 2636 "suggest": {
2427 "symfony/console": "For validating YAML files using the lint command" 2637 "symfony/console": "For validating YAML files using the lint command"
@@ -2429,7 +2639,7 @@
2429 "type": "library", 2639 "type": "library",
2430 "extra": { 2640 "extra": {
2431 "branch-alias": { 2641 "branch-alias": {
2432 "dev-master": "3.3-dev" 2642 "dev-master": "3.4-dev"
2433 } 2643 }
2434 }, 2644 },
2435 "autoload": { 2645 "autoload": {
@@ -2456,7 +2666,7 @@
2456 ], 2666 ],
2457 "description": "Symfony Yaml Component", 2667 "description": "Symfony Yaml Component",
2458 "homepage": "https://symfony.com", 2668 "homepage": "https://symfony.com",
2459 "time": "2018-01-20T15:04:53+00:00" 2669 "time": "2018-01-21T19:05:02+00:00"
2460 }, 2670 },
2461 { 2671 {
2462 "name": "theseer/fdomdocument", 2672 "name": "theseer/fdomdocument",
@@ -2558,10 +2768,10 @@
2558 "prefer-stable": false, 2768 "prefer-stable": false,
2559 "prefer-lowest": false, 2769 "prefer-lowest": false,
2560 "platform": { 2770 "platform": {
2561 "php": ">=5.5" 2771 "php": ">=5.6"
2562 }, 2772 },
2563 "platform-dev": [], 2773 "platform-dev": [],
2564 "platform-overrides": { 2774 "platform-overrides": {
2565 "php": "5.5.38" 2775 "php": "5.6.31"
2566 } 2776 }
2567} 2777}
diff --git a/inc/languages/fr/LC_MESSAGES/shaarli.po b/inc/languages/fr/LC_MESSAGES/shaarli.po
index 323c6111..857b13c7 100644
--- a/inc/languages/fr/LC_MESSAGES/shaarli.po
+++ b/inc/languages/fr/LC_MESSAGES/shaarli.po
@@ -1,15 +1,15 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Project-Id-Version: Shaarli\n" 3"Project-Id-Version: Shaarli\n"
4"POT-Creation-Date: 2017-11-11 10:59+0100\n" 4"POT-Creation-Date: 2018-01-24 18:43+0100\n"
5"PO-Revision-Date: 2017-11-11 11:00+0100\n" 5"PO-Revision-Date: 2018-01-24 18:44+0100\n"
6"Last-Translator: \n" 6"Last-Translator: \n"
7"Language-Team: Shaarli\n" 7"Language-Team: Shaarli\n"
8"Language: fr_FR\n" 8"Language: fr_FR\n"
9"MIME-Version: 1.0\n" 9"MIME-Version: 1.0\n"
10"Content-Type: text/plain; charset=UTF-8\n" 10"Content-Type: text/plain; charset=UTF-8\n"
11"Content-Transfer-Encoding: 8bit\n" 11"Content-Transfer-Encoding: 8bit\n"
12"X-Generator: Poedit 2.0.4\n" 12"X-Generator: Poedit 2.0.6\n"
13"X-Poedit-Basepath: ../../../..\n" 13"X-Poedit-Basepath: ../../../..\n"
14"Plural-Forms: nplurals=2; plural=(n > 1);\n" 14"Plural-Forms: nplurals=2; plural=(n > 1);\n"
15"X-Poedit-SourceCharset: UTF-8\n" 15"X-Poedit-SourceCharset: UTF-8\n"
@@ -161,11 +161,11 @@ msgstr ""
161"a été importé avec succès en %d secondes : %d liens importés, %d liens " 161"a été importé avec succès en %d secondes : %d liens importés, %d liens "
162"écrasés, %d liens ignorés." 162"écrasés, %d liens ignorés."
163 163
164#: application/PageBuilder.php:167 164#: application/PageBuilder.php:168
165msgid "The page you are trying to reach does not exist or has been deleted." 165msgid "The page you are trying to reach does not exist or has been deleted."
166msgstr "La page que vous essayez de consulter n'existe pas ou a été supprimée." 166msgstr "La page que vous essayez de consulter n'existe pas ou a été supprimée."
167 167
168#: application/PageBuilder.php:169 168#: application/PageBuilder.php:170
169msgid "404 Not Found" 169msgid "404 Not Found"
170msgstr "404 Introuvable" 170msgstr "404 Introuvable"
171 171
@@ -178,17 +178,17 @@ msgstr "Les fichiers de l'extension \"%s\" sont introuvables."
178msgid "Couldn't retrieve Updater class methods." 178msgid "Couldn't retrieve Updater class methods."
179msgstr "Impossible de récupérer les méthodes de la classe Updater." 179msgstr "Impossible de récupérer les méthodes de la classe Updater."
180 180
181#: application/Updater.php:493 181#: application/Updater.php:506
182msgid "An error occurred while running the update " 182msgid "An error occurred while running the update "
183msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour " 183msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour "
184 184
185#: application/Updater.php:533 185#: application/Updater.php:546
186msgid "Updates file path is not set, can't write updates." 186msgid "Updates file path is not set, can't write updates."
187msgstr "" 187msgstr ""
188"Le chemin vers le fichier de mise à jour n'est pas défini, impossible " 188"Le chemin vers le fichier de mise à jour n'est pas défini, impossible "
189"d'écrire les mises à jour." 189"d'écrire les mises à jour."
190 190
191#: application/Updater.php:538 191#: application/Updater.php:551
192msgid "Unable to write updates in " 192msgid "Unable to write updates in "
193msgstr "Impossible d'écrire les mises à jour dans " 193msgstr "Impossible d'écrire les mises à jour dans "
194 194
@@ -265,46 +265,46 @@ msgstr "NON. Vous êtes banni pour le moment. Revenez plus tard."
265msgid "Wrong login/password." 265msgid "Wrong login/password."
266msgstr "Nom d'utilisateur ou mot de passe incorrects." 266msgstr "Nom d'utilisateur ou mot de passe incorrects."
267 267
268#: index.php:1092 268#: index.php:1103
269msgid "You are not supposed to change a password on an Open Shaarli." 269msgid "You are not supposed to change a password on an Open Shaarli."
270msgstr "" 270msgstr ""
271"Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert." 271"Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert."
272 272
273#: index.php:1097 index.php:1138 index.php:1214 index.php:1244 index.php:1344 273#: index.php:1108 index.php:1149 index.php:1225 index.php:1255 index.php:1355
274msgid "Wrong token." 274msgid "Wrong token."
275msgstr "Jeton invalide." 275msgstr "Jeton invalide."
276 276
277#: index.php:1102 277#: index.php:1113
278msgid "The old password is not correct." 278msgid "The old password is not correct."
279msgstr "L'ancien mot de passe est incorrect." 279msgstr "L'ancien mot de passe est incorrect."
280 280
281#: index.php:1122 281#: index.php:1133
282msgid "Your password has been changed" 282msgid "Your password has been changed"
283msgstr "Votre mot de passe a été modifié" 283msgstr "Votre mot de passe a été modifié"
284 284
285#: index.php:1175 285#: index.php:1186
286msgid "Configuration was saved." 286msgid "Configuration was saved."
287msgstr "La configuration a été sauvegardé." 287msgstr "La configuration a été sauvegardé."
288 288
289#: index.php:1226 289#: index.php:1237
290#, php-format 290#, php-format
291msgid "The tag was removed from %d link." 291msgid "The tag was removed from %d link."
292msgid_plural "The tag was removed from %d links." 292msgid_plural "The tag was removed from %d links."
293msgstr[0] "Le tag a été supprimé de %d lien." 293msgstr[0] "Le tag a été supprimé de %d lien."
294msgstr[1] "Le tag a été supprimé de %d liens." 294msgstr[1] "Le tag a été supprimé de %d liens."
295 295
296#: index.php:1227 296#: index.php:1238
297#, php-format 297#, php-format
298msgid "The tag was renamed in %d link." 298msgid "The tag was renamed in %d link."
299msgid_plural "The tag was renamed in %d links." 299msgid_plural "The tag was renamed in %d links."
300msgstr[0] "Le tag a été renommé dans %d lien." 300msgstr[0] "Le tag a été renommé dans %d lien."
301msgstr[1] "Le tag a été renommé dans %d liens." 301msgstr[1] "Le tag a été renommé dans %d liens."
302 302
303#: index.php:1443 303#: index.php:1454
304msgid "Note: " 304msgid "Note: "
305msgstr "Note : " 305msgstr "Note : "
306 306
307#: index.php:1552 307#: index.php:1563
308#, php-format 308#, php-format
309msgid "" 309msgid ""
310"The file you are trying to upload is probably bigger than what this " 310"The file you are trying to upload is probably bigger than what this "
@@ -314,7 +314,7 @@ msgstr ""
314"le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " 314"le serveur web peut accepter (%s). Merci de l'envoyer en parties plus "
315"légères." 315"légères."
316 316
317#: index.php:1972 317#: index.php:1983
318#, php-format 318#, php-format
319msgid "" 319msgid ""
320"<pre>Sessions do not seem to work correctly on your server.<br>Make sure the " 320"<pre>Sessions do not seem to work correctly on your server.<br>Make sure the "
@@ -333,7 +333,7 @@ msgstr ""
333"cookies. Nous vous recommandons d'accéder à votre serveur depuis son adresse " 333"cookies. Nous vous recommandons d'accéder à votre serveur depuis son adresse "
334"IP ou un <em>Fully Qualified Domain Name</em>.<br>" 334"IP ou un <em>Fully Qualified Domain Name</em>.<br>"
335 335
336#: index.php:1982 336#: index.php:1993
337msgid "Click to try again." 337msgid "Click to try again."
338msgstr "Cliquer ici pour réessayer." 338msgstr "Cliquer ici pour réessayer."
339 339
@@ -870,10 +870,10 @@ msgstr "Recherche texte"
870#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:38 870#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:38
871#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:124 871#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:124
872#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:124 872#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:124
873#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:33 873#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
874#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:61 874#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:64
875#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:33 875#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
876#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:71 876#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:74
877msgid "Filter by tag" 877msgid "Filter by tag"
878msgstr "Filtrer par tag" 878msgstr "Filtrer par tag"
879 879
@@ -933,25 +933,30 @@ msgstr "Filtres"
933 933
934#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12 934#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12
935#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12 935#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12
936msgid "Filter private links" 936msgid "Only display private links"
937msgstr "Filtrer par liens privés" 937msgstr "Afficher uniquement les liens privés"
938
939#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15
940#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:15
941msgid "Only display public links"
942msgstr "Afficher uniquement les liens publics"
938 943
939#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:18 944#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:20
940#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:18 945#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:20
941msgid "Filter untagged links" 946msgid "Filter untagged links"
942msgstr "Filtrer par liens privés" 947msgstr "Filtrer par liens privés"
943 948
944#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22 949#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
945#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:74 950#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:76
946#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:22 951#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:24
947#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:74 952#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:76
948#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43 953#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43
949#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 954#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43
950msgid "Fold all" 955msgid "Fold all"
951msgstr "Replier tout" 956msgstr "Replier tout"
952 957
953#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:67 958#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:69
954#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:67 959#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:69
955msgid "Links per page" 960msgid "Links per page"
956msgstr "Liens par page" 961msgstr "Liens par page"
957 962
@@ -1127,8 +1132,8 @@ msgstr "Aucun paramètre disponible."
1127msgid "tags" 1132msgid "tags"
1128msgstr "tags" 1133msgstr "tags"
1129 1134
1130#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23 1135#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
1131#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23 1136#: tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
1132msgid "List all links with those tags" 1137msgid "List all links with those tags"
1133msgstr "Lister tous les liens avec ces tags" 1138msgstr "Lister tous les liens avec ces tags"
1134 1139
@@ -1284,6 +1289,9 @@ msgstr ""
1284"Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « " 1289"Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « "
1285"Ajouter aux favoris »" 1290"Ajouter aux favoris »"
1286 1291
1292#~ msgid "Filter links by visibility"
1293#~ msgstr "Filtrer les liens par visibilité"
1294
1287#~ msgid "Redirector" 1295#~ msgid "Redirector"
1288#~ msgstr "Redirecteur" 1296#~ msgstr "Redirecteur"
1289 1297
diff --git a/index.php b/index.php
index ae0ce8f0..067b8fcb 100644
--- a/index.php
+++ b/index.php
@@ -124,6 +124,11 @@ if (isset($_COOKIE['shaarli']) && !SessionManager::checkId($_COOKIE['shaarli']))
124$conf = new ConfigManager(); 124$conf = new ConfigManager();
125$sessionManager = new SessionManager($_SESSION, $conf); 125$sessionManager = new SessionManager($_SESSION, $conf);
126 126
127// LC_MESSAGES isn't defined without php-intl, in this case use LC_COLLATE locale instead.
128if (! defined('LC_MESSAGES')) {
129 define('LC_MESSAGES', LC_COLLATE);
130}
131
127// Sniff browser language and set date format accordingly. 132// Sniff browser language and set date format accordingly.
128if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 133if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
129 autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); 134 autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']);
@@ -282,7 +287,7 @@ function logout() {
282 unset($_SESSION['uid']); 287 unset($_SESSION['uid']);
283 unset($_SESSION['ip']); 288 unset($_SESSION['ip']);
284 unset($_SESSION['username']); 289 unset($_SESSION['username']);
285 unset($_SESSION['privateonly']); 290 unset($_SESSION['visibility']);
286 unset($_SESSION['untaggedonly']); 291 unset($_SESSION['untaggedonly']);
287 } 292 }
288 setcookie('shaarli_staySignedIn', FALSE, 0, WEB_PATH); 293 setcookie('shaarli_staySignedIn', FALSE, 0, WEB_PATH);
@@ -803,7 +808,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager)
803 // -------- Tag cloud 808 // -------- Tag cloud
804 if ($targetPage == Router::$PAGE_TAGCLOUD) 809 if ($targetPage == Router::$PAGE_TAGCLOUD)
805 { 810 {
806 $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all'; 811 $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
807 $filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : []; 812 $filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : [];
808 $tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility); 813 $tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility);
809 814
@@ -848,7 +853,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager)
848 // -------- Tag list 853 // -------- Tag list
849 if ($targetPage == Router::$PAGE_TAGLIST) 854 if ($targetPage == Router::$PAGE_TAGLIST)
850 { 855 {
851 $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all'; 856 $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
852 $filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : []; 857 $filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : [];
853 $tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility); 858 $tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility);
854 foreach ($filteringTags as $tag) { 859 foreach ($filteringTags as $tag) {
@@ -1014,15 +1019,26 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager)
1014 } 1019 }
1015 1020
1016 // -------- User wants to see only private links (toggle) 1021 // -------- User wants to see only private links (toggle)
1017 if (isset($_GET['privateonly'])) { 1022 if (isset($_GET['visibility'])) {
1018 if (empty($_SESSION['privateonly'])) { 1023 if ($_GET['visibility'] === 'private') {
1019 $_SESSION['privateonly'] = 1; // See only private links 1024 // Visibility not set or not already private, set private, otherwise reset it
1020 } else { 1025 if (empty($_SESSION['visibility']) || $_SESSION['visibility'] !== 'private') {
1021 unset($_SESSION['privateonly']); // See all links 1026 // See only private links
1027 $_SESSION['visibility'] = 'private';
1028 } else {
1029 unset($_SESSION['visibility']);
1030 }
1031 } else if ($_GET['visibility'] === 'public') {
1032 if (empty($_SESSION['visibility']) || $_SESSION['visibility'] !== 'public') {
1033 // See only public links
1034 $_SESSION['visibility'] = 'public';
1035 } else {
1036 unset($_SESSION['visibility']);
1037 }
1022 } 1038 }
1023 1039
1024 if (! empty($_SERVER['HTTP_REFERER'])) { 1040 if (! empty($_SERVER['HTTP_REFERER'])) {
1025 $location = generateLocation($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'], array('privateonly')); 1041 $location = generateLocation($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'], array('visibility'));
1026 } else { 1042 } else {
1027 $location = '?'; 1043 $location = '?';
1028 } 1044 }
@@ -1664,7 +1680,7 @@ function buildLinkList($PAGE,$LINKSDB, $conf, $pluginManager)
1664 } 1680 }
1665 } else { 1681 } else {
1666 // Filter links according search parameters. 1682 // Filter links according search parameters.
1667 $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all'; 1683 $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
1668 $request = [ 1684 $request = [
1669 'searchtags' => $searchtags, 1685 'searchtags' => $searchtags,
1670 'searchterm' => $searchterm, 1686 'searchterm' => $searchterm,
@@ -1740,7 +1756,7 @@ function buildLinkList($PAGE,$LINKSDB, $conf, $pluginManager)
1740 'result_count' => count($linksToDisplay), 1756 'result_count' => count($linksToDisplay),
1741 'search_term' => $searchterm, 1757 'search_term' => $searchterm,
1742 'search_tags' => $searchtags, 1758 'search_tags' => $searchtags,
1743 'visibility' => ! empty($_SESSION['privateonly']) ? 'private' : '', 1759 'visibility' => ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '',
1744 'redirector' => $conf->get('redirector.url'), // Optional redirector URL. 1760 'redirector' => $conf->get('redirector.url'), // Optional redirector URL.
1745 'links' => $linkDisp, 1761 'links' => $linkDisp,
1746 ); 1762 );
diff --git a/tests/api/controllers/PostLinkTest.php b/tests/api/controllers/PostLinkTest.php
index 31954e39..100a9170 100644
--- a/tests/api/controllers/PostLinkTest.php
+++ b/tests/api/controllers/PostLinkTest.php
@@ -3,11 +3,13 @@
3namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
4 4
5 5
6use PHPUnit\Framework\TestCase;
6use Shaarli\Config\ConfigManager; 7use Shaarli\Config\ConfigManager;
7use Slim\Container; 8use Slim\Container;
8use Slim\Http\Environment; 9use Slim\Http\Environment;
9use Slim\Http\Request; 10use Slim\Http\Request;
10use Slim\Http\Response; 11use Slim\Http\Response;
12use Slim\Router;
11 13
12/** 14/**
13 * Class PostLinkTest 15 * Class PostLinkTest
@@ -16,7 +18,7 @@ use Slim\Http\Response;
16 * 18 *
17 * @package Shaarli\Api\Controllers 19 * @package Shaarli\Api\Controllers
18 */ 20 */
19class PostLinkTest extends \PHPUnit_Framework_TestCase 21class PostLinkTest extends TestCase
20{ 22{
21 /** 23 /**
22 * @var string datastore to test write operations 24 * @var string datastore to test write operations
@@ -78,7 +80,7 @@ class PostLinkTest extends \PHPUnit_Framework_TestCase
78 80
79 $this->controller = new Links($this->container); 81 $this->controller = new Links($this->container);
80 82
81 $mock = $this->getMock('\Slim\Router', ['relativePathFor']); 83 $mock = $this->createMock(Router::class);
82 $mock->expects($this->any()) 84 $mock->expects($this->any())
83 ->method('relativePathFor') 85 ->method('relativePathFor')
84 ->willReturn('api/v1/links/1'); 86 ->willReturn('api/v1/links/1');
diff --git a/tpl/default/css/shaarli.css b/tpl/default/css/shaarli.css
index 14439402..1e07a88e 100644
--- a/tpl/default/css/shaarli.css
+++ b/tpl/default/css/shaarli.css
@@ -453,6 +453,11 @@ body, .pure-g [class*="pure-u"] {
453 background: #1b926c; 453 background: #1b926c;
454} 454}
455 455
456.linklist-filters .filter-block {
457 color: #f5f5f5;
458 background: #ac2925;
459}
460
456.linklist-pages { 461.linklist-pages {
457 margin: 5px 0; 462 margin: 5px 0;
458 color: #252525; 463 color: #252525;
diff --git a/tpl/default/linklist.paging.html b/tpl/default/linklist.paging.html
index 347b3d13..72bdd931 100644
--- a/tpl/default/linklist.paging.html
+++ b/tpl/default/linklist.paging.html
@@ -6,9 +6,12 @@
6 {'Filters'|t} 6 {'Filters'|t}
7 </span> 7 </span>
8 {if="isLoggedIn()"} 8 {if="isLoggedIn()"}
9 <a href="?privateonly" title="{'Filter private links'|t}" 9 <a href="?visibility=private" title="{'Only display private links'|t}"
10 class={if="$privateonly"}"filter-on"{else}"filter-off"{/if} 10 class="{if="$visibility==='private'"}filter-on{else}filter-off{/if}"
11 ><i class="fa fa-key"></i></a> 11 ><i class="fa fa-user-secret"></i></a>
12 <a href="?visibility=public" title="{'Only display public links'|t}"
13 class="{if="$visibility==='public'"}filter-on{else}filter-off{/if}"
14 ><i class="fa fa-globe"></i></a>
12 {/if} 15 {/if}
13 <a href="?untaggedonly" title="{'Filter untagged links'|t}" 16 <a href="?untaggedonly" title="{'Filter untagged links'|t}"
14 class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if} 17 class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if}
diff --git a/tpl/vintage/linklist.paging.html b/tpl/vintage/linklist.paging.html
index 86019c01..12828a97 100644
--- a/tpl/vintage/linklist.paging.html
+++ b/tpl/vintage/linklist.paging.html
@@ -1,11 +1,11 @@
1<div class="paging"> 1<div class="paging">
2{if="isLoggedIn()"} 2{if="isLoggedIn()"}
3 <div class="paging_privatelinks"> 3 <div class="paging_privatelinks">
4 <a href="?privateonly"> 4 <a href="?visibility=private">
5 {if="$privateonly"} 5 {if="$visibility=='private'"}
6 <img src="images/private_16x16_active.png#" width="16" height="16" title="Click to see all links" alt="Click to see all links"> 6 <img src="images/private_16x16_active.png#" width="16" height="16" title="Filter links by visibility" alt="Filter links by visibility">
7 {else} 7 {else}
8 <img src="images/private_16x16.png#" width="16" height="16" title="Click to see only private links" alt="Click to see only private links"> 8 <img src="images/private_16x16.png#" width="16" height="16" title="Filter links by visibility" alt="Filter links by visibility">
9 {/if} 9 {/if}
10 </a> 10 </a>
11 11