forked from wallabag/wallabag
Compare commits
61 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9bbafdaad4 | |||
| 227a1a27f1 | |||
| cc181629a0 | |||
| eb06edba0c | |||
| b50ecd0c8a | |||
| a73cb8a689 | |||
| 295b714426 | |||
| 19822ecb31 | |||
| 9ae5bd9e10 | |||
| 2dbb5b2307 | |||
| 570113208b | |||
| 4b5b228650 | |||
| ea54c2adb1 | |||
| 35359bd3c6 | |||
| ff8f338dc2 | |||
| f45496336f | |||
| bfd69c74e5 | |||
| 8ab5dcc467 | |||
| 893f107fa1 | |||
| 8ca858ee73 | |||
| 41d476d7e7 | |||
| 7c553a6017 | |||
| a48ff25d4c | |||
| cf0010cf4a | |||
| 13d2fe6d2e | |||
| 3d7a1f4caf | |||
| 36fd8e5fde | |||
| f2aa373054 | |||
| 4ae4fa7b89 | |||
| 6640a922d1 | |||
| 246cc9ac93 | |||
| f1f1efb5de | |||
| 806635f7d5 | |||
| 05232afe32 | |||
| fb7dedf36c | |||
| 1e9c710fdd | |||
| d5154ee2ae | |||
| 4de99d1ab1 | |||
| 12a97c3522 | |||
| 508302042f | |||
| 9a7a0e1e6b | |||
| 4e0ed3368d | |||
| c01bda038e | |||
| b1992b340e | |||
| 44560c7767 | |||
| 0182cdaec4 | |||
| a9f61d3dbb | |||
| 47e4784110 | |||
| 7e04bd4ca4 | |||
| 755753e3ef | |||
| 8d082488e9 | |||
| a2e60dd393 | |||
| b992522d85 | |||
| 293730656d | |||
| 6b32cf0c73 | |||
| 1ec44a346b | |||
| f6b9e883c0 | |||
| 78e3fafa3f | |||
| a5e9a98aa3 | |||
| f083836cc4 | |||
| 314f647238 |
34
CHANGELOG.md
34
CHANGELOG.md
@ -1,5 +1,39 @@
|
||||
# Changelog
|
||||
|
||||
## [2.3.8](https://github.com/wallabag/wallabag/tree/2.3.8)
|
||||
[Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.7...2.3.8)
|
||||
|
||||
### Fixes
|
||||
|
||||
- Jump to 2.3.8-dev [#3897](https://github.com/wallabag/wallabag/pull/3897)
|
||||
- material: fix left padding on non-entry pages [#3901](https://github.com/wallabag/wallabag/pull/3901)
|
||||
- Make dev/install/update script posix compatible [#3860](https://github.com/wallabag/wallabag/pull/3860)
|
||||
- epub: fix exception when articles have the same title [#3908](https://github.com/wallabag/wallabag/pull/3908)
|
||||
- Fix PHP warning [#3909](https://github.com/wallabag/wallabag/pull/3909)
|
||||
- Add ability to match many domains for credentials [#3937](https://github.com/wallabag/wallabag/pull/3937)
|
||||
- material: add metadata to list view [#3942](https://github.com/wallabag/wallabag/pull/3942)
|
||||
- Enable no-referrer on img tags, enable strict-origin-when-cross-origin by default [#3943](https://github.com/wallabag/wallabag/pull/3943)
|
||||
- Remove preview picture from share view page#3922
|
||||
- Fix Intl Locale issue [#3964](https://github.com/wallabag/wallabag/pull/3964)
|
||||
|
||||
## [2.3.7](https://github.com/wallabag/wallabag/tree/2.3.7)
|
||||
[Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.6...2.3.7)
|
||||
|
||||
### Fixes
|
||||
|
||||
- Jump to 2.3.7-dev [#3837](https://github.com/wallabag/wallabag/pull/3837)
|
||||
- Fix bad order parameter in the API [#3841](https://github.com/wallabag/wallabag/pull/3841)
|
||||
- Update composer.json to add php-tidy (ext-tidy) [#3853](https://github.com/wallabag/wallabag/pull/3853)
|
||||
- Add dedicated email for site config issue [#3861](https://github.com/wallabag/wallabag/pull/3861)
|
||||
- Fix read & starred status in Pocket import [#3819](https://github.com/wallabag/wallabag/pull/3819)
|
||||
- Fix broken 2 factor auth logo image [#3869](https://github.com/wallabag/wallabag/pull/3869)
|
||||
- Fix CORS for API [#3882](https://github.com/wallabag/wallabag/pull/3882)
|
||||
- Add support of expect parameter to change return object when deleting entry [#3887](https://github.com/wallabag/wallabag/pull/3887)
|
||||
- epub export: fix missing cover image, only for exports of one article [#3886](https://github.com/wallabag/wallabag/pull/3886)
|
||||
- Allow optional --ignore-root-warning [#3885](https://github.com/wallabag/wallabag/pull/3885)
|
||||
- material: fix left padding of content on medium screens [#3893](https://github.com/wallabag/wallabag/pull/3893)
|
||||
- material: hide creation date from card actions on specific sizes [#3894](https://github.com/wallabag/wallabag/pull/3894)
|
||||
|
||||
## [2.3.6](https://github.com/wallabag/wallabag/tree/2.3.6)
|
||||
[Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.5...2.3.6)
|
||||
|
||||
|
||||
@ -18,6 +18,24 @@ main {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@mixin mixin-reading-time {
|
||||
.reading-time {
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
|
||||
.card-reading-time,
|
||||
.card-created-at {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
span {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
.card-content .card-title,
|
||||
.card-reveal .card-title {
|
||||
@ -98,14 +116,7 @@ main {
|
||||
margin-right: 5px !important;
|
||||
}
|
||||
|
||||
.reading-time {
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
|
||||
span {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
@include mixin-reading-time;
|
||||
}
|
||||
|
||||
.card-image {
|
||||
@ -219,10 +230,18 @@ a.original:not(.waves-effect) {
|
||||
}
|
||||
|
||||
div.metadata {
|
||||
overflow: hidden;
|
||||
height: 1.5em;
|
||||
display: flex;
|
||||
|
||||
ul.tags {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.chip {
|
||||
background-color: $blueAccentColor;
|
||||
padding: 0 7px;
|
||||
margin: auto 2px;
|
||||
margin: auto 1px;
|
||||
border-radius: 6px;
|
||||
line-height: 22px;
|
||||
height: 22px;
|
||||
@ -239,6 +258,16 @@ a.original:not(.waves-effect) {
|
||||
padding-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@include mixin-reading-time {
|
||||
padding: 0 5px;
|
||||
flex-wrap: wrap;
|
||||
margin-left: auto;
|
||||
|
||||
i.material-icons {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div.card-content {
|
||||
@ -272,9 +301,3 @@ a.original:not(.waves-effect) {
|
||||
.settings .div_tabs {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) {
|
||||
.card-tag-labels li {
|
||||
max-width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,16 @@
|
||||
.pagination {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.card-tag-labels li {
|
||||
max-width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 993px) {
|
||||
body.entry main #content {
|
||||
padding-left: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 992px) {
|
||||
@ -163,4 +173,17 @@
|
||||
.row .col {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.card-stacked div.metadata .reading-time {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 310px),
|
||||
screen and (min-width: 601px) and (max-width: 660px),
|
||||
screen and (min-width: 993px) and (max-width: 1050px),
|
||||
screen and (min-width: 1201px) and (max-width: 1250px) {
|
||||
.card .card-action .reading-time .card-created-at {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,18 +147,18 @@ nelmio_cors:
|
||||
paths:
|
||||
'^/api/':
|
||||
allow_origin: ['*']
|
||||
allow_headers: ['X-Custom-Auth']
|
||||
allow_headers: ['Authorization','content-type']
|
||||
allow_methods: ['POST', 'PUT', 'PATCH','GET', 'DELETE']
|
||||
max_age: 3600
|
||||
'^/oauth/':
|
||||
allow_origin: ['*']
|
||||
allow_headers: ['X-Custom-Auth']
|
||||
allow_headers: ['Authorization','content-type']
|
||||
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
|
||||
max_age: 3600
|
||||
'^/':
|
||||
#origin_regex: true
|
||||
allow_origin: ['^http://localhost:[0-9]+']
|
||||
allow_headers: ['X-Custom-Auth']
|
||||
allow_origin: ['*']
|
||||
allow_headers: ['Authorization','content-type']
|
||||
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
|
||||
max_age: 3600
|
||||
hosts: ['^api\.']
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
wallabag_core:
|
||||
version: 2.3.6
|
||||
version: 2.3.8
|
||||
paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb"
|
||||
languages:
|
||||
en: 'English'
|
||||
|
||||
@ -43,6 +43,7 @@
|
||||
"ext-iconv": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"ext-pdo": "*",
|
||||
"ext-tidy": "*",
|
||||
"symfony/symfony": "~3.3.13",
|
||||
"doctrine/orm": "^2.5.12",
|
||||
"doctrine/doctrine-bundle": "^1.8.0",
|
||||
@ -85,13 +86,14 @@
|
||||
"friendsofsymfony/jsrouting-bundle": "^1.6.3",
|
||||
"bdunogier/guzzle-site-authenticator": "^1.0.0",
|
||||
"defuse/php-encryption": "^2.1",
|
||||
"html2text/html2text": "^4.1"
|
||||
"html2text/html2text": "^4.1",
|
||||
"sulu/symfony-intl-fix": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/doctrine-fixtures-bundle": "~2.2",
|
||||
"doctrine/data-fixtures": "~1.1",
|
||||
"sensio/generator-bundle": "^3.0",
|
||||
"symfony/phpunit-bridge": "3.4.x-dev",
|
||||
"symfony/phpunit-bridge": "^4.2",
|
||||
"friendsofphp/php-cs-fixer": "~2.0",
|
||||
"m6web/redis-mock": "^2.0",
|
||||
"dama/doctrine-test-bundle": "^4.0"
|
||||
@ -124,7 +126,11 @@
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Wallabag\\": "src/Wallabag/" },
|
||||
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
|
||||
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
|
||||
"exclude-from-classmap": [
|
||||
"vendor/symfony/intl/Locale.php",
|
||||
"vendor/symfony/symfony/src/Symfony/Component/Intl/Locale.php"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": { "Tests\\": "tests/" }
|
||||
|
||||
366
composer.lock
generated
366
composer.lock
generated
@ -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": "d2a0bd8408dccdeb7a7455996519829b",
|
||||
"content-hash": "ec8c25f2c3bce06d8d23599212a022dd",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bdunogier/guzzle-site-authenticator",
|
||||
@ -102,16 +102,16 @@
|
||||
},
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
"version": "1.1.3",
|
||||
"version": "1.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/ca-bundle.git",
|
||||
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660"
|
||||
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660",
|
||||
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660",
|
||||
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
|
||||
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -154,7 +154,7 @@
|
||||
"ssl",
|
||||
"tls"
|
||||
],
|
||||
"time": "2018-10-18T06:09:13+00:00"
|
||||
"time": "2019-01-28T09:30:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "craue/config-bundle",
|
||||
@ -631,16 +631,16 @@
|
||||
},
|
||||
{
|
||||
"name": "doctrine/doctrine-bundle",
|
||||
"version": "1.10.1",
|
||||
"version": "1.10.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/DoctrineBundle.git",
|
||||
"reference": "98551d71f515692c2278073e0d483763ac70b341"
|
||||
"reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/98551d71f515692c2278073e0d483763ac70b341",
|
||||
"reference": "98551d71f515692c2278073e0d483763ac70b341",
|
||||
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c",
|
||||
"reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -712,7 +712,7 @@
|
||||
"orm",
|
||||
"persistence"
|
||||
],
|
||||
"time": "2019-01-07T15:31:08+00:00"
|
||||
"time": "2019-04-04T08:03:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/doctrine-cache-bundle",
|
||||
@ -1299,16 +1299,16 @@
|
||||
},
|
||||
{
|
||||
"name": "fossar/htmlawed",
|
||||
"version": "1.2.6",
|
||||
"version": "1.2.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fossar/HTMLawed.git",
|
||||
"reference": "f83914ca2a5bf450e79462be22486f51a4ae7f79"
|
||||
"reference": "4f7505e9622a96242923895c3008719b2c2283d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fossar/HTMLawed/zipball/f83914ca2a5bf450e79462be22486f51a4ae7f79",
|
||||
"reference": "f83914ca2a5bf450e79462be22486f51a4ae7f79",
|
||||
"url": "https://api.github.com/repos/fossar/HTMLawed/zipball/4f7505e9622a96242923895c3008719b2c2283d3",
|
||||
"reference": "4f7505e9622a96242923895c3008719b2c2283d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1344,7 +1344,7 @@
|
||||
"strip",
|
||||
"tags"
|
||||
],
|
||||
"time": "2018-12-14T19:44:53+00:00"
|
||||
"time": "2019-05-09T11:53:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "friendsofsymfony/jsrouting-bundle",
|
||||
@ -1407,16 +1407,16 @@
|
||||
},
|
||||
{
|
||||
"name": "friendsofsymfony/oauth-server-bundle",
|
||||
"version": "1.6.1",
|
||||
"version": "1.6.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FriendsOfSymfony/FOSOAuthServerBundle.git",
|
||||
"reference": "5cc4c8555dedb5c7e737a35789bd429ccd9ad254"
|
||||
"reference": "fcaa25cc49474bdb0db7894f880976fe76ffed23"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FriendsOfSymfony/FOSOAuthServerBundle/zipball/5cc4c8555dedb5c7e737a35789bd429ccd9ad254",
|
||||
"reference": "5cc4c8555dedb5c7e737a35789bd429ccd9ad254",
|
||||
"url": "https://api.github.com/repos/FriendsOfSymfony/FOSOAuthServerBundle/zipball/fcaa25cc49474bdb0db7894f880976fe76ffed23",
|
||||
"reference": "fcaa25cc49474bdb0db7894f880976fe76ffed23",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1440,6 +1440,7 @@
|
||||
"symfony/form": "~2.8|~3.0|^4.0",
|
||||
"symfony/phpunit-bridge": "~2.8|~3.0|^4.0",
|
||||
"symfony/templating": "~2.8|~3.0|^4.0",
|
||||
"symfony/twig-bundle": "~2.8|~3.0|^4.0",
|
||||
"symfony/yaml": "~2.8|~3.0|^4.0",
|
||||
"willdurand/propel-typehintable-behavior": "^1.0.4"
|
||||
},
|
||||
@ -1486,7 +1487,7 @@
|
||||
"oauth2",
|
||||
"server"
|
||||
],
|
||||
"time": "2018-04-18T13:46:16+00:00"
|
||||
"time": "2019-01-23T15:23:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "friendsofsymfony/oauth2-php",
|
||||
@ -1723,16 +1724,16 @@
|
||||
},
|
||||
{
|
||||
"name": "gedmo/doctrine-extensions",
|
||||
"version": "v2.4.36",
|
||||
"version": "v2.4.37",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Atlantic18/DoctrineExtensions.git",
|
||||
"reference": "87c78ff9fd4b90460386f753d95622f6fbbfcb27"
|
||||
"reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/87c78ff9fd4b90460386f753d95622f6fbbfcb27",
|
||||
"reference": "87c78ff9fd4b90460386f753d95622f6fbbfcb27",
|
||||
"url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/5dd471f656e46d815f063bf3f12c667649ec7ffb",
|
||||
"reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1800,7 +1801,7 @@
|
||||
"tree",
|
||||
"uploadable"
|
||||
],
|
||||
"time": "2018-07-26T12:16:35+00:00"
|
||||
"time": "2019-03-17T18:16:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "grandt/binstring",
|
||||
@ -3125,16 +3126,16 @@
|
||||
},
|
||||
{
|
||||
"name": "j0k3r/graby",
|
||||
"version": "1.18.0",
|
||||
"version": "1.20.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/j0k3r/graby.git",
|
||||
"reference": "7ac1e2d696744c1f7c9c76658677efda33df020a"
|
||||
"reference": "c7fcea010a6a09f6505b7be0d825ac78801cd831"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/j0k3r/graby/zipball/7ac1e2d696744c1f7c9c76658677efda33df020a",
|
||||
"reference": "7ac1e2d696744c1f7c9c76658677efda33df020a",
|
||||
"url": "https://api.github.com/repos/j0k3r/graby/zipball/c7fcea010a6a09f6505b7be0d825ac78801cd831",
|
||||
"reference": "c7fcea010a6a09f6505b7be0d825ac78801cd831",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3180,20 +3181,20 @@
|
||||
}
|
||||
],
|
||||
"description": "Graby helps you extract article content from web pages",
|
||||
"time": "2019-01-08T09:12:43+00:00"
|
||||
"time": "2019-05-11T19:18:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "j0k3r/graby-site-config",
|
||||
"version": "1.0.72",
|
||||
"version": "1.0.83",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/j0k3r/graby-site-config.git",
|
||||
"reference": "b76b230cf044e134574de7cd7af09d6b01ab0f15"
|
||||
"reference": "c1109a2969e7b8b7bead8453ad92c0822778dd03"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/b76b230cf044e134574de7cd7af09d6b01ab0f15",
|
||||
"reference": "b76b230cf044e134574de7cd7af09d6b01ab0f15",
|
||||
"url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/c1109a2969e7b8b7bead8453ad92c0822778dd03",
|
||||
"reference": "c1109a2969e7b8b7bead8453ad92c0822778dd03",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3220,33 +3221,33 @@
|
||||
}
|
||||
],
|
||||
"description": "Graby site config files",
|
||||
"time": "2019-01-11T12:55:48+00:00"
|
||||
"time": "2019-05-14T08:12:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "j0k3r/php-readability",
|
||||
"version": "1.1.11",
|
||||
"version": "1.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/j0k3r/php-readability.git",
|
||||
"reference": "eef6d6d456d941939fa714ca3725bf7e3cd04d1e"
|
||||
"reference": "f808c1b0a21ae98ae6fd5bd623671c406efd74d0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/j0k3r/php-readability/zipball/eef6d6d456d941939fa714ca3725bf7e3cd04d1e",
|
||||
"reference": "eef6d6d456d941939fa714ca3725bf7e3cd04d1e",
|
||||
"url": "https://api.github.com/repos/j0k3r/php-readability/zipball/f808c1b0a21ae98ae6fd5bd623671c406efd74d0",
|
||||
"reference": "f808c1b0a21ae98ae6fd5bd623671c406efd74d0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"electrolinux/php-html5lib": "^0.1.0",
|
||||
"ext-mbstring": "*",
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.6.0",
|
||||
"psr/log": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "<2",
|
||||
"monolog/monolog": "^1.13",
|
||||
"satooshi/php-coveralls": "~0.6",
|
||||
"symfony/phpunit-bridge": "^3.2"
|
||||
"friendsofphp/php-cs-fixer": "^2.14",
|
||||
"monolog/monolog": "^1.24",
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"symfony/phpunit-bridge": "^4.2.3"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-tidy": "Used to clean up given HTML and to avoid problems with bad HTML structure."
|
||||
@ -3294,7 +3295,7 @@
|
||||
"extraction",
|
||||
"html"
|
||||
],
|
||||
"time": "2018-11-26T15:54:20+00:00"
|
||||
"time": "2019-05-11T20:07:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "j0k3r/safecurl",
|
||||
@ -3547,16 +3548,16 @@
|
||||
},
|
||||
{
|
||||
"name": "jms/serializer",
|
||||
"version": "1.13.0",
|
||||
"version": "1.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/schmittjoh/serializer.git",
|
||||
"reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c"
|
||||
"reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/schmittjoh/serializer/zipball/00863e1d55b411cc33ad3e1de09a4c8d3aae793c",
|
||||
"reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c",
|
||||
"url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ee96d57024af9a7716d56fcbe3aa94b3d030f3ca",
|
||||
"reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3596,7 +3597,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-1.x": "1.13-dev"
|
||||
"dev-1.x": "1.14-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3627,20 +3628,20 @@
|
||||
"serialization",
|
||||
"xml"
|
||||
],
|
||||
"time": "2018-07-25T13:58:54+00:00"
|
||||
"time": "2019-04-17T08:12:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "jms/serializer-bundle",
|
||||
"version": "2.4.3",
|
||||
"version": "2.4.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/schmittjoh/JMSSerializerBundle.git",
|
||||
"reference": "e5231652ce24b8673b2ac70bc76b0cabaf35deea"
|
||||
"reference": "92ee808c64c1c180775a0e57d00e3be0674668fb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/e5231652ce24b8673b2ac70bc76b0cabaf35deea",
|
||||
"reference": "e5231652ce24b8673b2ac70bc76b0cabaf35deea",
|
||||
"url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/92ee808c64c1c180775a0e57d00e3be0674668fb",
|
||||
"reference": "92ee808c64c1c180775a0e57d00e3be0674668fb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3701,7 +3702,7 @@
|
||||
"serialization",
|
||||
"xml"
|
||||
],
|
||||
"time": "2018-12-09T07:52:19+00:00"
|
||||
"time": "2019-03-30T10:26:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kphoen/rulerz",
|
||||
@ -3884,16 +3885,16 @@
|
||||
},
|
||||
{
|
||||
"name": "lexik/form-filter-bundle",
|
||||
"version": "v5.0.7",
|
||||
"version": "v5.0.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lexik/LexikFormFilterBundle.git",
|
||||
"reference": "c8014b678c8872dfc045c18b159d0b4b85cf7be3"
|
||||
"reference": "92df0638173979dc906bda7a33a10b98429d2057"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lexik/LexikFormFilterBundle/zipball/c8014b678c8872dfc045c18b159d0b4b85cf7be3",
|
||||
"reference": "c8014b678c8872dfc045c18b159d0b4b85cf7be3",
|
||||
"url": "https://api.github.com/repos/lexik/LexikFormFilterBundle/zipball/92df0638173979dc906bda7a33a10b98429d2057",
|
||||
"reference": "92df0638173979dc906bda7a33a10b98429d2057",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3903,8 +3904,11 @@
|
||||
"symfony/framework-bundle": "~2.8|~3.0|^4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/mongodb-odm-bundle": "~3.0",
|
||||
"phpunit/phpunit": "^5.7|~6.0"
|
||||
"doctrine/mongodb-odm-bundle": "^3.0",
|
||||
"phpunit/phpunit": "~5.0|^7.5"
|
||||
},
|
||||
"suggest": {
|
||||
"alcaeus/mongo-php-adapter": "Install this package if using the PHP 7 MongoDB Driver"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
@ -3940,7 +3944,7 @@
|
||||
"form",
|
||||
"symfony"
|
||||
],
|
||||
"time": "2018-04-04T11:14:22+00:00"
|
||||
"time": "2019-04-17T17:58:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "liip/theme-bundle",
|
||||
@ -4294,16 +4298,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nelmio/cors-bundle",
|
||||
"version": "1.5.4",
|
||||
"version": "1.5.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nelmio/NelmioCorsBundle.git",
|
||||
"reference": "548dc8ebd3984acd2f6d8787ab1dac2e9aa14254"
|
||||
"reference": "adabee944e6fe52ee566caf1770a29355b1e8d83"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/548dc8ebd3984acd2f6d8787ab1dac2e9aa14254",
|
||||
"reference": "548dc8ebd3984acd2f6d8787ab1dac2e9aa14254",
|
||||
"url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/adabee944e6fe52ee566caf1770a29355b1e8d83",
|
||||
"reference": "adabee944e6fe52ee566caf1770a29355b1e8d83",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4348,7 +4352,7 @@
|
||||
"cors",
|
||||
"crossdomain"
|
||||
],
|
||||
"time": "2017-12-11T18:41:54+00:00"
|
||||
"time": "2019-02-27T13:13:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ocramius/proxy-manager",
|
||||
@ -4533,16 +4537,16 @@
|
||||
},
|
||||
{
|
||||
"name": "php-amqplib/php-amqplib",
|
||||
"version": "v2.8.1",
|
||||
"version": "v2.9.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-amqplib/php-amqplib.git",
|
||||
"reference": "84449ffd3f5a7466bbee3946facb3746ff11f075"
|
||||
"reference": "76faddcd668dabb8d4f7c00e86b8a9decd781a59"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/84449ffd3f5a7466bbee3946facb3746ff11f075",
|
||||
"reference": "84449ffd3f5a7466bbee3946facb3746ff11f075",
|
||||
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/76faddcd668dabb8d4f7c00e86b8a9decd781a59",
|
||||
"reference": "76faddcd668dabb8d4f7c00e86b8a9decd781a59",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4554,9 +4558,10 @@
|
||||
"videlalvaro/php-amqplib": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-curl": "*",
|
||||
"nategood/httpful": "^0.2.20",
|
||||
"phpdocumentor/phpdocumentor": "^2.9",
|
||||
"phpunit/phpunit": "^4.8",
|
||||
"scrutinizer/ocular": "^1.1",
|
||||
"squizlabs/php_codesniffer": "^2.5"
|
||||
},
|
||||
"type": "library",
|
||||
@ -4602,7 +4607,7 @@
|
||||
"queue",
|
||||
"rabbitmq"
|
||||
],
|
||||
"time": "2018-11-13T09:35:17+00:00"
|
||||
"time": "2019-04-24T15:36:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-amqplib/rabbitmq-bundle",
|
||||
@ -5472,20 +5477,21 @@
|
||||
},
|
||||
{
|
||||
"name": "smalot/pdfparser",
|
||||
"version": "v0.13.2",
|
||||
"version": "v0.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/smalot/pdfparser.git",
|
||||
"reference": "f5e85c023491aecc88e8f6227536d60e1bb4a241"
|
||||
"reference": "ec72a99028ba5e21a0acad92047b85e128cbf81f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/smalot/pdfparser/zipball/f5e85c023491aecc88e8f6227536d60e1bb4a241",
|
||||
"reference": "f5e85c023491aecc88e8f6227536d60e1bb4a241",
|
||||
"url": "https://api.github.com/repos/smalot/pdfparser/zipball/ec72a99028ba5e21a0acad92047b85e128cbf81f",
|
||||
"reference": "ec72a99028ba5e21a0acad92047b85e128cbf81f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-iconv": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-zlib": "*",
|
||||
"php": ">=5.3.0",
|
||||
"tecnickcom/tcpdf": "~6.0"
|
||||
},
|
||||
@ -5517,7 +5523,7 @@
|
||||
"pdf",
|
||||
"text"
|
||||
],
|
||||
"time": "2018-06-23T08:43:13+00:00"
|
||||
"time": "2019-01-23T09:14:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sonata-project/google-authenticator",
|
||||
@ -5642,6 +5648,42 @@
|
||||
],
|
||||
"time": "2017-12-24T16:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sulu/symfony-intl-fix",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sulu/symfony-intl-fix.git",
|
||||
"reference": "fabb07b8ac325ba6650e70516e94fd7ebb7a8f68"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sulu/symfony-intl-fix/zipball/fabb07b8ac325ba6650e70516e94fd7ebb7a8f68",
|
||||
"reference": "fabb07b8ac325ba6650e70516e94fd7ebb7a8f68",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5 || ^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"./Locale.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Alexander Schranz",
|
||||
"email": "alexander@sulu.io"
|
||||
}
|
||||
],
|
||||
"description": "Provides the symfony/intl fix for new php version also for symfony 2.8",
|
||||
"time": "2019-04-26T09:40:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "swiftmailer/swiftmailer",
|
||||
"version": "v5.4.12",
|
||||
@ -5761,16 +5803,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-apcu",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-apcu.git",
|
||||
"reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2"
|
||||
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2",
|
||||
"reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a502face1da6a53289480166f24de2c3c68e5c3c",
|
||||
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5779,7 +5821,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -5813,20 +5855,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-08-06T14:22:27+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
|
||||
"reference": "82ebae02209c21113908c229e9883c419720738a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
|
||||
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
|
||||
"reference": "82ebae02209c21113908c229e9883c419720738a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5838,7 +5880,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -5871,20 +5913,20 @@
|
||||
"polyfill",
|
||||
"portable"
|
||||
],
|
||||
"time": "2018-08-06T14:22:27+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-icu",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-icu.git",
|
||||
"reference": "f22a90256d577c7ef7efad8df1f0201663d57644"
|
||||
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644",
|
||||
"reference": "f22a90256d577c7ef7efad8df1f0201663d57644",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057",
|
||||
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5929,20 +5971,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-08-06T14:22:27+00:00"
|
||||
"time": "2019-01-07T19:39:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
|
||||
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
|
||||
"reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
|
||||
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5954,7 +5996,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -5988,20 +6030,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-09-21T13:07:52+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php56",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php56.git",
|
||||
"reference": "ff208829fe1aa48ab9af356992bb7199fed551af"
|
||||
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af",
|
||||
"reference": "ff208829fe1aa48ab9af356992bb7199fed551af",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
|
||||
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6011,7 +6053,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -6044,20 +6086,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-09-21T06:26:08+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php70",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php70.git",
|
||||
"reference": "6b88000cdd431cd2e940caa2cb569201f3f84224"
|
||||
"reference": "bc4858fb611bda58719124ca079baff854149c89"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224",
|
||||
"reference": "6b88000cdd431cd2e940caa2cb569201f3f84224",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89",
|
||||
"reference": "bc4858fb611bda58719124ca079baff854149c89",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6067,7 +6109,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -6103,20 +6145,20 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-09-21T06:26:08+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-util",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-util.git",
|
||||
"reference": "3b58903eae668d348a7126f999b0da0f2f93611c"
|
||||
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c",
|
||||
"reference": "3b58903eae668d348a7126f999b0da0f2f93611c",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897",
|
||||
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6125,7 +6167,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -6155,7 +6197,7 @@
|
||||
"polyfill",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-09-30T16:36:12+00:00"
|
||||
"time": "2019-02-08T14:16:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/swiftmailer-bundle",
|
||||
@ -6472,20 +6514,20 @@
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v1.36.0",
|
||||
"version": "v1.40.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "730c9c4471b5152d23061feb02b03382264c8a15"
|
||||
"reference": "35889516bbd6bbe46a600c2c33b03515df4a076e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/730c9c4471b5152d23061feb02b03382264c8a15",
|
||||
"reference": "730c9c4471b5152d23061feb02b03382264c8a15",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/35889516bbd6bbe46a600c2c33b03515df4a076e",
|
||||
"reference": "35889516bbd6bbe46a600c2c33b03515df4a076e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.4.0",
|
||||
"symfony/polyfill-ctype": "^1.8"
|
||||
},
|
||||
"require-dev": {
|
||||
@ -6496,7 +6538,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.36-dev"
|
||||
"dev-master": "1.40-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -6534,7 +6576,7 @@
|
||||
"keywords": [
|
||||
"templating"
|
||||
],
|
||||
"time": "2018-12-16T10:34:11+00:00"
|
||||
"time": "2019-04-29T14:12:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wallabag/php-mobi",
|
||||
@ -6656,16 +6698,16 @@
|
||||
},
|
||||
{
|
||||
"name": "white-october/pagerfanta-bundle",
|
||||
"version": "v1.2.3",
|
||||
"version": "v1.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/whiteoctober/WhiteOctoberPagerfantaBundle.git",
|
||||
"reference": "3a2f39fecde9b8aefe7c9cbd0baf06bc72ef3e5e"
|
||||
"reference": "19bf14bf8c72e4205c9ca97028436701fe3991a6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/whiteoctober/WhiteOctoberPagerfantaBundle/zipball/3a2f39fecde9b8aefe7c9cbd0baf06bc72ef3e5e",
|
||||
"reference": "3a2f39fecde9b8aefe7c9cbd0baf06bc72ef3e5e",
|
||||
"url": "https://api.github.com/repos/whiteoctober/WhiteOctoberPagerfantaBundle/zipball/19bf14bf8c72e4205c9ca97028436701fe3991a6",
|
||||
"reference": "19bf14bf8c72e4205c9ca97028436701fe3991a6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6710,7 +6752,7 @@
|
||||
"page",
|
||||
"paging"
|
||||
],
|
||||
"time": "2018-12-05T16:58:18+00:00"
|
||||
"time": "2019-02-14T08:42:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "willdurand/hateoas",
|
||||
@ -6769,7 +6811,7 @@
|
||||
"email": "adrien.brault@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "William DURAND",
|
||||
"name": "William Durand",
|
||||
"email": "william.durand1@gmail.com"
|
||||
}
|
||||
],
|
||||
@ -6819,7 +6861,7 @@
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "William DURAND",
|
||||
"name": "William Durand",
|
||||
"email": "william.durand1@gmail.com"
|
||||
}
|
||||
],
|
||||
@ -7032,16 +7074,16 @@
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "composer/semver",
|
||||
"version": "1.4.2",
|
||||
"version": "1.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/semver.git",
|
||||
"reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
|
||||
"reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
|
||||
"reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
|
||||
"url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
|
||||
"reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -7090,20 +7132,20 @@
|
||||
"validation",
|
||||
"versioning"
|
||||
],
|
||||
"time": "2016-08-30T16:08:34+00:00"
|
||||
"time": "2019-03-19T17:25:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/xdebug-handler",
|
||||
"version": "1.3.1",
|
||||
"version": "1.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/xdebug-handler.git",
|
||||
"reference": "dc523135366eb68f22268d069ea7749486458562"
|
||||
"reference": "d17708133b6c276d6e42ef887a877866b909d892"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/dc523135366eb68f22268d069ea7749486458562",
|
||||
"reference": "dc523135366eb68f22268d069ea7749486458562",
|
||||
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892",
|
||||
"reference": "d17708133b6c276d6e42ef887a877866b909d892",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -7134,7 +7176,7 @@
|
||||
"Xdebug",
|
||||
"performance"
|
||||
],
|
||||
"time": "2018-11-29T10:59:02+00:00"
|
||||
"time": "2019-01-28T20:25:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dama/doctrine-test-bundle",
|
||||
@ -7557,16 +7599,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/phpunit-bridge",
|
||||
"version": "3.4.x-dev",
|
||||
"version": "v4.2.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/phpunit-bridge.git",
|
||||
"reference": "5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5"
|
||||
"reference": "31f2e3c10bc9bd955ca1ae3e4da2bb489205714a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5",
|
||||
"reference": "5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5",
|
||||
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/31f2e3c10bc9bd955ca1ae3e4da2bb489205714a",
|
||||
"reference": "31f2e3c10bc9bd955ca1ae3e4da2bb489205714a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -7576,7 +7618,6 @@
|
||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-zip": "Zip support is required when using bin/simple-phpunit",
|
||||
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
|
||||
},
|
||||
"bin": [
|
||||
@ -7585,7 +7626,7 @@
|
||||
"type": "symfony-bridge",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.4-dev"
|
||||
"dev-master": "4.2-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "phpunit/phpunit",
|
||||
@ -7619,20 +7660,20 @@
|
||||
],
|
||||
"description": "Symfony PHPUnit Bridge",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2019-01-01T13:45:19+00:00"
|
||||
"time": "2019-04-23T14:37:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php72",
|
||||
"version": "v1.10.0",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php72.git",
|
||||
"reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631"
|
||||
"reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
|
||||
"reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c",
|
||||
"reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -7641,7 +7682,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
"dev-master": "1.11-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -7674,14 +7715,12 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2018-09-21T13:07:52+00:00"
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": {
|
||||
"symfony/phpunit-bridge": 20
|
||||
},
|
||||
"stability-flags": [],
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
@ -7699,7 +7738,8 @@
|
||||
"ext-xml": "*",
|
||||
"ext-iconv": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"ext-pdo": "*"
|
||||
"ext-pdo": "*",
|
||||
"ext-tidy": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
|
||||
@ -3,10 +3,14 @@
|
||||
# eg: `sh dev.sh`
|
||||
|
||||
COMPOSER_COMMAND='composer'
|
||||
REQUIRE_FILE='scripts/require.sh'
|
||||
|
||||
DIR="${BASH_SOURCE}"
|
||||
if [ ! -d "$DIR" ]; then DIR="$PWD/scripts"; fi
|
||||
. "$DIR/require.sh"
|
||||
if [ ! -f "$REQUIRE_FILE" ]; then
|
||||
echo "Cannot find $REQUIRE_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. "$REQUIRE_FILE"
|
||||
|
||||
$COMPOSER_COMMAND install
|
||||
php bin/console wallabag:install
|
||||
|
||||
@ -5,9 +5,17 @@
|
||||
IGNORE_ROOT_ARG="--ignore-root-warning"
|
||||
IGNORE_ROOT=0
|
||||
|
||||
if [ "$1" == "$IGNORE_ROOT_ARG" ]; then
|
||||
IGNORE_ROOT=1
|
||||
fi
|
||||
while :; do
|
||||
case $1 in
|
||||
$IGNORE_ROOT_ARG) IGNORE_ROOT=1
|
||||
;;
|
||||
*[a-zA-Z]) ENV=$1
|
||||
;;
|
||||
*) break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Abort running this script if root
|
||||
if [ "$IGNORE_ROOT" -eq 0 ] && [ "$EUID" == "0" ]; then
|
||||
@ -17,12 +25,15 @@ if [ "$IGNORE_ROOT" -eq 0 ] && [ "$EUID" == "0" ]; then
|
||||
fi
|
||||
|
||||
COMPOSER_COMMAND='composer'
|
||||
REQUIRE_FILE='scripts/require.sh'
|
||||
|
||||
DIR="${BASH_SOURCE}"
|
||||
if [ ! -d "$DIR" ]; then DIR="$PWD/scripts"; fi
|
||||
. "$DIR/require.sh"
|
||||
if [ ! -f "$REQUIRE_FILE" ]; then
|
||||
echo "Cannot find $REQUIRE_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. "$REQUIRE_FILE"
|
||||
|
||||
ENV=$1
|
||||
TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
|
||||
git checkout $TAG
|
||||
|
||||
@ -5,9 +5,17 @@
|
||||
IGNORE_ROOT_ARG="--ignore-root-warning"
|
||||
IGNORE_ROOT=0
|
||||
|
||||
if [ "$1" == "$IGNORE_ROOT_ARG" ]; then
|
||||
IGNORE_ROOT=1
|
||||
fi
|
||||
while :; do
|
||||
case $1 in
|
||||
$IGNORE_ROOT_ARG) IGNORE_ROOT=1
|
||||
;;
|
||||
*[a-zA-Z]) ENV=$1
|
||||
;;
|
||||
*) break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Abort running this script if root
|
||||
if [ "$IGNORE_ROOT" -eq 0 ] && [ "$EUID" == "0" ]; then
|
||||
@ -20,12 +28,14 @@ set -e
|
||||
set -u
|
||||
|
||||
COMPOSER_COMMAND='composer'
|
||||
REQUIRE_FILE='scripts/require.sh'
|
||||
|
||||
DIR="${BASH_SOURCE}"
|
||||
if [ ! -d "$DIR" ]; then DIR="$PWD/scripts"; fi
|
||||
. "$DIR/require.sh"
|
||||
if [ ! -f "$REQUIRE_FILE" ]; then
|
||||
echo "Cannot find $REQUIRE_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENV=$1
|
||||
. "$REQUIRE_FILE"
|
||||
|
||||
rm -rf var/cache/*
|
||||
git fetch origin
|
||||
|
||||
@ -9,6 +9,7 @@ use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use Wallabag\CoreBundle\Entity\Entry;
|
||||
@ -98,24 +99,28 @@ class EntryRestController extends WallabagRestController
|
||||
$isArchived = (null === $request->query->get('archive')) ? null : (bool) $request->query->get('archive');
|
||||
$isStarred = (null === $request->query->get('starred')) ? null : (bool) $request->query->get('starred');
|
||||
$isPublic = (null === $request->query->get('public')) ? null : (bool) $request->query->get('public');
|
||||
$sort = $request->query->get('sort', 'created');
|
||||
$order = $request->query->get('order', 'desc');
|
||||
$sort = strtolower($request->query->get('sort', 'created'));
|
||||
$order = strtolower($request->query->get('order', 'desc'));
|
||||
$page = (int) $request->query->get('page', 1);
|
||||
$perPage = (int) $request->query->get('perPage', 30);
|
||||
$tags = \is_array($request->query->get('tags')) ? '' : (string) $request->query->get('tags', '');
|
||||
$since = $request->query->get('since', 0);
|
||||
|
||||
/** @var \Pagerfanta\Pagerfanta $pager */
|
||||
$pager = $this->get('wallabag_core.entry_repository')->findEntries(
|
||||
$this->getUser()->getId(),
|
||||
$isArchived,
|
||||
$isStarred,
|
||||
$isPublic,
|
||||
$sort,
|
||||
$order,
|
||||
$since,
|
||||
$tags
|
||||
);
|
||||
try {
|
||||
/** @var \Pagerfanta\Pagerfanta $pager */
|
||||
$pager = $this->get('wallabag_core.entry_repository')->findEntries(
|
||||
$this->getUser()->getId(),
|
||||
$isArchived,
|
||||
$isStarred,
|
||||
$isPublic,
|
||||
$sort,
|
||||
$order,
|
||||
$since,
|
||||
$tags
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
throw new BadRequestHttpException($e->getMessage());
|
||||
}
|
||||
|
||||
$pager->setMaxPerPage($perPage);
|
||||
$pager->setCurrentPage($page);
|
||||
@ -565,18 +570,31 @@ class EntryRestController extends WallabagRestController
|
||||
* @ApiDoc(
|
||||
* requirements={
|
||||
* {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"}
|
||||
* },
|
||||
* parameters={
|
||||
* {"name"="expect", "dataType"="string", "required"=false, "format"="id or entry", "description"="Only returns the id instead of the deleted entry's full entity if 'id' is specified. Default to entry"},
|
||||
* }
|
||||
* )
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function deleteEntriesAction(Entry $entry)
|
||||
public function deleteEntriesAction(Entry $entry, Request $request)
|
||||
{
|
||||
$expect = $request->query->get('expect', 'entry');
|
||||
if (!\in_array($expect, ['id', 'entry'], true)) {
|
||||
throw new BadRequestHttpException(sprintf("expect: 'id' or 'entry' expected, %s given", $expect));
|
||||
}
|
||||
$this->validateAuthentication();
|
||||
$this->validateUserAccess($entry->getUser()->getId());
|
||||
|
||||
// We copy $entry to keep id in returned object
|
||||
$e = $entry;
|
||||
$response = $this->sendResponse([
|
||||
'id' => $entry->getId(),
|
||||
]);
|
||||
// We clone $entry to keep id in returned object
|
||||
if ('entry' === $expect) {
|
||||
$e = clone $entry;
|
||||
$response = $this->sendResponse($e);
|
||||
}
|
||||
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->remove($entry);
|
||||
@ -585,7 +603,7 @@ class EntryRestController extends WallabagRestController
|
||||
// entry deleted, dispatch event about it!
|
||||
$this->get('event_dispatcher')->dispatch(EntryDeletedEvent::NAME, new EntryDeletedEvent($entry));
|
||||
|
||||
return $this->sendResponse($e);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -5,19 +5,38 @@ namespace Wallabag\CoreBundle\DataFixtures\ORM;
|
||||
use Doctrine\Common\DataFixtures\AbstractFixture;
|
||||
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
|
||||
use Doctrine\Common\Persistence\ObjectManager;
|
||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Wallabag\CoreBundle\Entity\SiteCredential;
|
||||
|
||||
class LoadSiteCredentialData extends AbstractFixture implements OrderedFixtureInterface
|
||||
class LoadSiteCredentialData extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface
|
||||
{
|
||||
/**
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
private $container;
|
||||
|
||||
public function setContainer(ContainerInterface $container = null)
|
||||
{
|
||||
$this->container = $container;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load(ObjectManager $manager)
|
||||
{
|
||||
$credential = new SiteCredential($this->getReference('admin-user'));
|
||||
$credential->setHost('example.com');
|
||||
$credential->setUsername('foo');
|
||||
$credential->setPassword('bar');
|
||||
$credential->setHost('.super.com');
|
||||
$credential->setUsername($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('.super'));
|
||||
$credential->setPassword($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('bar'));
|
||||
|
||||
$manager->persist($credential);
|
||||
|
||||
$credential = new SiteCredential($this->getReference('admin-user'));
|
||||
$credential->setHost('paywall.example.com');
|
||||
$credential->setUsername($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('paywall.example'));
|
||||
$credential->setPassword($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('bar'));
|
||||
|
||||
$manager->persist($credential);
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ class EntryFilterType extends AbstractType
|
||||
->add('httpStatus', TextFilterType::class, [
|
||||
'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
|
||||
$value = $values['value'];
|
||||
if (false === array_key_exists($value, Response::$statusTexts)) {
|
||||
if (false === \array_key_exists($value, Response::$statusTexts)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -62,11 +62,24 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
|
||||
$host = substr($host, 4);
|
||||
}
|
||||
|
||||
$credentials = null;
|
||||
if ($this->currentUser) {
|
||||
$credentials = $this->credentialRepository->findOneByHostAndUser($host, $this->currentUser->getId());
|
||||
if (!$this->currentUser) {
|
||||
$this->logger->debug('Auth: no current user defined.');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$hosts = [$host];
|
||||
// will try to see for a host without the first subdomain (fr.example.org & .example.org)
|
||||
$split = explode('.', $host);
|
||||
|
||||
if (\count($split) > 1) {
|
||||
// remove first subdomain
|
||||
array_shift($split);
|
||||
$hosts[] = '.' . implode('.', $split);
|
||||
}
|
||||
|
||||
$credentials = $this->credentialRepository->findOneByHostsAndUser($hosts, $this->currentUser->getId());
|
||||
|
||||
if (null === $credentials) {
|
||||
$this->logger->debug('Auth: no credentials available for host.', ['host' => $host]);
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ class ContentProxy
|
||||
*/
|
||||
public function updateEntry(Entry $entry, $url, array $content = [], $disableContentUpdate = false)
|
||||
{
|
||||
$this->graby->toggleImgNoReferrer(true);
|
||||
if (!empty($content['html'])) {
|
||||
$content['html'] = $this->graby->cleanupHtml($content['html'], $url);
|
||||
}
|
||||
@ -256,18 +257,17 @@ class ContentProxy
|
||||
$entry->setTitle($content['open_graph']['og_title']);
|
||||
}
|
||||
|
||||
$html = $content['html'];
|
||||
if (false === $html) {
|
||||
$html = $this->fetchingErrorMessage;
|
||||
if (empty($content['html'])) {
|
||||
$content['html'] = $this->fetchingErrorMessage;
|
||||
|
||||
if (!empty($content['open_graph']['og_description'])) {
|
||||
$html .= '<p><i>But we found a short description: </i></p>';
|
||||
$html .= $content['open_graph']['og_description'];
|
||||
$content['html'] .= '<p><i>But we found a short description: </i></p>';
|
||||
$content['html'] .= $content['open_graph']['og_description'];
|
||||
}
|
||||
}
|
||||
|
||||
$entry->setContent($html);
|
||||
$entry->setReadingTime(Utils::getReadingTime($html));
|
||||
$entry->setContent($content['html']);
|
||||
$entry->setReadingTime(Utils::getReadingTime($content['html']));
|
||||
|
||||
if (!empty($content['status'])) {
|
||||
$entry->setHttpStatus($content['status']);
|
||||
|
||||
@ -165,13 +165,6 @@ class EntriesExport
|
||||
$book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, 'PHP');
|
||||
$book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, 'wallabag');
|
||||
|
||||
/*
|
||||
* Front page
|
||||
*/
|
||||
if (file_exists($this->logoPath)) {
|
||||
$book->setCoverImage('Cover.png', file_get_contents($this->logoPath), 'image/png');
|
||||
}
|
||||
|
||||
$entryIds = [];
|
||||
$entryCount = \count($this->entries);
|
||||
$i = 0;
|
||||
@ -183,10 +176,19 @@ class EntriesExport
|
||||
// set tags as subjects
|
||||
foreach ($this->entries as $entry) {
|
||||
++$i;
|
||||
|
||||
/*
|
||||
* Front page
|
||||
* Set if there's only one entry in the given set
|
||||
*/
|
||||
if (1 === $entryCount && null !== $entry->getPreviewPicture()) {
|
||||
$book->setCoverImage($entry->getPreviewPicture());
|
||||
}
|
||||
|
||||
foreach ($entry->getTags() as $tag) {
|
||||
$book->setSubject($tag->getLabel());
|
||||
}
|
||||
$filename = sha1($entry->getTitle());
|
||||
$filename = sha1(sprintf('%s:%s', $entry->getUrl(), $entry->getTitle()));
|
||||
|
||||
$publishedBy = $entry->getPublishedBy();
|
||||
$authors = $this->translator->trans('export.unknown');
|
||||
|
||||
@ -23,7 +23,7 @@ class PreparePagerForEntries
|
||||
* @param AdapterInterface $adapter
|
||||
* @param User $user If user isn't logged in, we can force it (like for rss)
|
||||
*
|
||||
* @return null|Pagerfanta
|
||||
* @return Pagerfanta|null
|
||||
*/
|
||||
public function prepare(AdapterInterface $adapter, User $user = null)
|
||||
{
|
||||
|
||||
@ -142,7 +142,7 @@ class EntryRepository extends EntityRepository
|
||||
*
|
||||
* @return Pagerfanta
|
||||
*/
|
||||
public function findEntries($userId, $isArchived = null, $isStarred = null, $isPublic = null, $sort = 'created', $order = 'ASC', $since = 0, $tags = '')
|
||||
public function findEntries($userId, $isArchived = null, $isStarred = null, $isPublic = null, $sort = 'created', $order = 'asc', $since = 0, $tags = '')
|
||||
{
|
||||
$qb = $this->createQueryBuilder('e')
|
||||
->leftJoin('e.tags', 't')
|
||||
@ -185,6 +185,10 @@ class EntryRepository extends EntityRepository
|
||||
}
|
||||
}
|
||||
|
||||
if (!\in_array(strtolower($order), ['asc', 'desc'], true)) {
|
||||
throw new \Exception('Order "' . $order . '" parameter is wrong, allowed: asc or desc');
|
||||
}
|
||||
|
||||
if ('created' === $sort) {
|
||||
$qb->orderBy('e.id', $order);
|
||||
} elseif ('updated' === $sort) {
|
||||
|
||||
@ -19,16 +19,16 @@ class SiteCredentialRepository extends \Doctrine\ORM\EntityRepository
|
||||
/**
|
||||
* Retrieve one username/password for the given host and userId.
|
||||
*
|
||||
* @param string $host
|
||||
* @param int $userId
|
||||
* @param array $hosts An array of host to look for
|
||||
* @param int $userId
|
||||
*
|
||||
* @return null|array
|
||||
* @return array|null
|
||||
*/
|
||||
public function findOneByHostAndUser($host, $userId)
|
||||
public function findOneByHostsAndUser($hosts, $userId)
|
||||
{
|
||||
$res = $this->createQueryBuilder('s')
|
||||
->select('s.username', 's.password')
|
||||
->where('s.host = :hostname')->setParameter('hostname', $host)
|
||||
->where('s.host IN (:hosts)')->setParameter('hosts', $hosts)
|
||||
->andWhere('s.user = :userId')->setParameter('userId', $userId)
|
||||
->setMaxResults(1)
|
||||
->getQuery()
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
# form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
# save: Save
|
||||
# delete: Delete
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
create_new_one: 'Einen neuen Seitenzugang anlegen'
|
||||
form:
|
||||
username_label: 'Benutzername'
|
||||
host_label: 'Host'
|
||||
host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'Passwort'
|
||||
save: 'Speichern'
|
||||
delete: 'Löschen'
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
create_new_one: Create a new credential
|
||||
form:
|
||||
username_label: 'Username'
|
||||
host_label: 'Host'
|
||||
host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'Password'
|
||||
save: Save
|
||||
delete: Delete
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
# form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
# save: Save
|
||||
# delete: Delete
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
# form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
# save: Save
|
||||
# delete: Delete
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
create_new_one: Créer un nouvel accès à un site
|
||||
form:
|
||||
username_label: 'Identifiant'
|
||||
host_label: 'Domaine'
|
||||
host_label: 'Domaine (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'Mot de passe'
|
||||
save: "Sauvegarder"
|
||||
delete: "Supprimer"
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
# form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
# save: Save
|
||||
# delete: Delete
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
create_new_one: Crear un novèl identificant
|
||||
form:
|
||||
username_label: "Nom d'utilizaire"
|
||||
host_label: 'Òste'
|
||||
host_label: 'Òste (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'Senhal'
|
||||
save: 'Enregistrar'
|
||||
delete: 'Suprimir'
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
create_new_one: Stwórz nowe poświadczenie
|
||||
form:
|
||||
username_label: 'Nazwa użytkownika'
|
||||
host_label: 'Host'
|
||||
host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'Hasło'
|
||||
save: Zapisz
|
||||
delete: Usuń
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
save: 'Salvar'
|
||||
delete: 'Apagar'
|
||||
|
||||
@ -550,7 +550,7 @@ site_credential:
|
||||
# create_new_one: Create a new credential
|
||||
# form:
|
||||
# username_label: 'Username'
|
||||
# host_label: 'Host'
|
||||
# host_label: 'Host (subdomain.example.org, .example.org, etc.)'
|
||||
# password_label: 'Password'
|
||||
# save: Save
|
||||
# delete: Delete
|
||||
|
||||
@ -548,7 +548,7 @@ site_credential:
|
||||
create_new_one: สร้างข้อมูลส่วนตัวใหม่
|
||||
form:
|
||||
username_label: 'ชื่อผู้ใช้'
|
||||
host_label: 'โฮส'
|
||||
host_label: 'โฮส (subdomain.example.org, .example.org, etc.)'
|
||||
password_label: 'รหัสผ่าน'
|
||||
save: บันทึก
|
||||
delete: ลบ
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
{% block head %}
|
||||
<meta name="viewport" content="initial-scale=1.0">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="referrer" content="strict-origin-when-cross-origin">
|
||||
<!--[if IE]>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=10">
|
||||
<![endif]-->
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
{% if craue_setting('export_epub') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'epub' }) }}" title="Generate ePub file">EPUB</a></li>{% endif %}
|
||||
{% if craue_setting('export_mobi') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'mobi' }) }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
|
||||
{% if craue_setting('export_pdf') %}<li><a href="{{ path('export_entry', { 'id': entry.id, 'format': 'pdf' }) }}" title="Generate PDF file">PDF</a></li>{% endif %}
|
||||
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
|
||||
<li><a href="mailto:siteconfig@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@ -29,9 +29,6 @@
|
||||
<h1>{{ entry.title|e|raw }}</h1>
|
||||
<a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e|raw }}" class="tool">{{ entry.domainName|removeWww }}</a>
|
||||
<p class="shared-by">{{ "entry.public.shared_by_wallabag"|trans({'%wallabag_instance%': url('homepage'), '%username%': entry.user.username})|raw }}.</p>
|
||||
{% if entry.previewPicture is not null %}
|
||||
<img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|striptags|e('html_attr') }}" />
|
||||
{% endif %}
|
||||
</header>
|
||||
<article class="block">
|
||||
{{ entry.content | raw }}
|
||||
|
||||
@ -8,8 +8,11 @@
|
||||
|
||||
<div class="{{ subClass|default('original grey-text') }}">
|
||||
<a href="{{ entry.url|e }}" target="_blank" title="{{ entry.domainName|removeWww }}" class="tool grey-text">{{ entry.domainName|removeWww }}</a>
|
||||
{% if withTags is defined %}
|
||||
{% if withMetadata is defined %}
|
||||
{% include "@WallabagCore/themes/material/Entry/_tags.html.twig" with {'tags': entry.tags | slice(0, 3), 'entryId': entry.id, 'listClass': ' hide-on-med-and-down'} only %}
|
||||
<div class="reading-time grey-text">
|
||||
<div class="card-reading-time">{% include "@WallabagCore/themes/material/Entry/_reading_time.html.twig" with {'entry': entry} only %}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
<div class="card-action">
|
||||
<span class="reading-time grey-text">
|
||||
{% include "@WallabagCore/themes/material/Entry/_reading_time.html.twig" with {'entry': entry} only %}
|
||||
<i class="material-icons hide-on-med-and-down" title="{{ 'entry.view.created_at'|trans }}">today</i>
|
||||
<span class="hide-on-med-and-down"> {{ entry.createdAt|date('Y-m-d') }}</span>
|
||||
</span>
|
||||
<div class="reading-time grey-text">
|
||||
<div class="card-reading-time">{% include "@WallabagCore/themes/material/Entry/_reading_time.html.twig" with {'entry': entry} only %}</div>
|
||||
<div class="card-created-at">
|
||||
<i class="material-icons" title="{{ 'entry.view.created_at'|trans }}">today</i>
|
||||
<span> {{ entry.createdAt|date('Y-m-d') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="tools right">
|
||||
<li>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<span class="preview{{ previewClassModifier }}" style="background-image: url({{ entry.previewPicture | default(asset('wallassets/themes/_global/img/logo-square.svg')) }})"></span>
|
||||
</a>
|
||||
</div>
|
||||
{% include "@WallabagCore/themes/material/Entry/Card/_content.html.twig" with {'entry': entry, 'withTags': true, 'subClass': 'metadata'} only %}
|
||||
{% include "@WallabagCore/themes/material/Entry/Card/_content.html.twig" with {'entry': entry, 'withMetadata': true, 'subClass': 'metadata'} only %}
|
||||
<ul class="tools-list hide-on-small-only">
|
||||
<li>
|
||||
<a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}unarchive{% endif %}</i></a>
|
||||
|
||||
@ -209,7 +209,7 @@
|
||||
</li>
|
||||
|
||||
<li class="bold">
|
||||
<a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
|
||||
<a class="waves-effect collapsible-header" href="mailto:siteconfig@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}">
|
||||
<i class="material-icons small">error</i>
|
||||
<span>{{ 'entry.view.left_menu.problem.label'|trans }}</span>
|
||||
</a>
|
||||
|
||||
@ -77,7 +77,7 @@ abstract class BrowserImport extends AbstractImport
|
||||
*/
|
||||
public function parseEntry(array $importedEntry)
|
||||
{
|
||||
if ((!array_key_exists('guid', $importedEntry) || (!array_key_exists('id', $importedEntry))) && \is_array(reset($importedEntry))) {
|
||||
if ((!\array_key_exists('guid', $importedEntry) || (!\array_key_exists('id', $importedEntry))) && \is_array(reset($importedEntry))) {
|
||||
if ($this->producer) {
|
||||
$this->parseEntriesForProducer($importedEntry);
|
||||
|
||||
@ -89,7 +89,7 @@ abstract class BrowserImport extends AbstractImport
|
||||
return;
|
||||
}
|
||||
|
||||
if (array_key_exists('children', $importedEntry)) {
|
||||
if (\array_key_exists('children', $importedEntry)) {
|
||||
if ($this->producer) {
|
||||
$this->parseEntriesForProducer($importedEntry['children']);
|
||||
|
||||
@ -101,11 +101,11 @@ abstract class BrowserImport extends AbstractImport
|
||||
return;
|
||||
}
|
||||
|
||||
if (!array_key_exists('uri', $importedEntry) && !array_key_exists('url', $importedEntry)) {
|
||||
if (!\array_key_exists('uri', $importedEntry) && !\array_key_exists('url', $importedEntry)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$url = array_key_exists('uri', $importedEntry) ? $importedEntry['uri'] : $importedEntry['url'];
|
||||
$url = \array_key_exists('uri', $importedEntry) ? $importedEntry['uri'] : $importedEntry['url'];
|
||||
|
||||
$existingEntry = $this->em
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
@ -126,7 +126,7 @@ abstract class BrowserImport extends AbstractImport
|
||||
// update entry with content (in case fetching failed, the given entry will be return)
|
||||
$this->fetchContent($entry, $data['url'], $data);
|
||||
|
||||
if (array_key_exists('tags', $data)) {
|
||||
if (\array_key_exists('tags', $data)) {
|
||||
$this->tagsAssigner->assignTagsToEntry(
|
||||
$entry,
|
||||
$data['tags']
|
||||
|
||||
@ -57,7 +57,7 @@ class ChromeImport extends BrowserImport
|
||||
'created_at' => substr($entry['date_added'], 0, 10),
|
||||
];
|
||||
|
||||
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
if (\array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
$data['tags'] = $entry['tags'];
|
||||
}
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ class FirefoxImport extends BrowserImport
|
||||
'created_at' => substr($entry['dateAdded'], 0, 10),
|
||||
];
|
||||
|
||||
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
if (\array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
$data['tags'] = $entry['tags'];
|
||||
}
|
||||
|
||||
|
||||
@ -206,10 +206,10 @@ class PocketImport extends AbstractImport
|
||||
$this->fetchContent($entry, $url);
|
||||
|
||||
// 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted
|
||||
$entry->setArchived(1 === $importedEntry['status'] || $this->markAsRead);
|
||||
$entry->setArchived(1 === (int) $importedEntry['status'] || $this->markAsRead);
|
||||
|
||||
// 0 or 1 - 1 If the item is starred
|
||||
$entry->setStarred(1 === $importedEntry['favorite']);
|
||||
// 0 or 1 - 1 if the item is starred
|
||||
$entry->setStarred(1 === (int) $importedEntry['favorite']);
|
||||
|
||||
$title = 'Untitled';
|
||||
if (isset($importedEntry['resolved_title']) && '' !== $importedEntry['resolved_title']) {
|
||||
|
||||
@ -122,7 +122,7 @@ abstract class WallabagImport extends AbstractImport
|
||||
// update entry with content (in case fetching failed, the given entry will be return)
|
||||
$this->fetchContent($entry, $data['url'], $data);
|
||||
|
||||
if (array_key_exists('tags', $data)) {
|
||||
if (\array_key_exists('tags', $data)) {
|
||||
$this->tagsAssigner->assignTagsToEntry(
|
||||
$entry,
|
||||
$data['tags'],
|
||||
|
||||
@ -61,7 +61,7 @@ class WallabagV1Import extends WallabagImport
|
||||
$data['html'] = $this->fetchingErrorMessage;
|
||||
}
|
||||
|
||||
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
if (\array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||
$data['tags'] = $entry['tags'];
|
||||
}
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0" align="center" id="card">
|
||||
<tr>
|
||||
<td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ absolute_url(asset('wallassets/themes/_global/img/logo-other_themes.png')) }}" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td>
|
||||
<td style="padding: 20px;" width="96px" valign="top"><img class="image_fix" src="{{ absolute_url(asset('wallassets/themes/_global/img/logo-square.svg')) }}" alt="logo" title="{{ wallabag_url }}" style="width: 96px; height: 96px;" /></td>
|
||||
<td style="padding: 20px; padding-left: 0;" valign="top" id="cell_desc">
|
||||
<h1>wallabag</h1>
|
||||
<h5>{{ "auth_code.on"|trans({}, 'wallabag_user') }} {{ wallabag_url }}</h5>
|
||||
|
||||
@ -242,6 +242,15 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||
$this->assertSame(2, $content['limit']);
|
||||
}
|
||||
|
||||
public function testGetStarredEntriesWithBadSort()
|
||||
{
|
||||
$this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated', 'order' => 'unknown']);
|
||||
|
||||
$this->assertSame(400, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
|
||||
}
|
||||
|
||||
public function testGetStarredEntries()
|
||||
{
|
||||
$this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']);
|
||||
@ -391,29 +400,71 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||
|
||||
public function testDeleteEntry()
|
||||
{
|
||||
$entry = $this->client->getContainer()
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findOneByUser(1, ['id' => 'asc']);
|
||||
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$entry = new Entry($em->getReference(User::class, 1));
|
||||
$entry->setUrl('http://0.0.0.0/test-delete-entry');
|
||||
$entry->setTitle('Test delete entry');
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
|
||||
if (!$entry) {
|
||||
$this->markTestSkipped('No content found in db.');
|
||||
}
|
||||
$em->clear();
|
||||
|
||||
$this->client->request('DELETE', '/api/entries/' . $entry->getId() . '.json');
|
||||
$e = [
|
||||
'title' => $entry->getTitle(),
|
||||
'url' => $entry->getUrl(),
|
||||
'id' => $entry->getId(),
|
||||
];
|
||||
|
||||
$this->client->request('DELETE', '/api/entries/' . $e['id'] . '.json');
|
||||
|
||||
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertSame($entry->getTitle(), $content['title']);
|
||||
$this->assertSame($entry->getUrl(), $content['url']);
|
||||
$this->assertSame($entry->getId(), $content['id']);
|
||||
$this->assertSame($e['title'], $content['title']);
|
||||
$this->assertSame($e['url'], $content['url']);
|
||||
$this->assertSame($e['id'], $content['id']);
|
||||
|
||||
// We'll try to delete this entry again
|
||||
$this->client->request('DELETE', '/api/entries/' . $entry->getId() . '.json');
|
||||
$client = $this->createAuthorizedClient();
|
||||
$client->request('DELETE', '/api/entries/' . $e['id'] . '.json');
|
||||
|
||||
$this->assertSame(404, $this->client->getResponse()->getStatusCode());
|
||||
$this->assertSame(404, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeleteEntryExpectId()
|
||||
{
|
||||
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$entry = new Entry($em->getReference(User::class, 1));
|
||||
$entry->setUrl('http://0.0.0.0/test-delete-entry-id');
|
||||
$em->persist($entry);
|
||||
$em->flush();
|
||||
|
||||
$em->clear();
|
||||
|
||||
$id = $entry->getId();
|
||||
|
||||
$this->client->request('DELETE', '/api/entries/' . $id . '.json?expect=id');
|
||||
|
||||
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||
|
||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||
|
||||
$this->assertSame($id, $content['id']);
|
||||
$this->assertArrayNotHasKey('url', $content);
|
||||
|
||||
// We'll try to delete this entry again
|
||||
$client = $this->createAuthorizedClient();
|
||||
$client->request('DELETE', '/api/entries/' . $id . '.json');
|
||||
|
||||
$this->assertSame(404, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeleteEntryExpectBadRequest()
|
||||
{
|
||||
$this->client->request('DELETE', '/api/entries/1.json?expect=badrequest');
|
||||
|
||||
$this->assertSame(400, $this->client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testPostEntry()
|
||||
|
||||
@ -166,7 +166,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||
$this->assertSame($this->url, $content->getUrl());
|
||||
$this->assertContains('Google', $content->getTitle());
|
||||
$this->assertSame('fr', $content->getLanguage());
|
||||
$this->assertSame('2016-04-07 19:01:35', $content->getPublishedAt()->format('Y-m-d H:i:s'));
|
||||
$this->assertSame('2015-03-28 11:43:19', $content->getPublishedAt()->format('Y-m-d H:i:s'));
|
||||
$this->assertArrayHasKey('x-frame-options', $content->getHeaders());
|
||||
$client->getContainer()->get('craue_config')->set('store_article_headers', 0);
|
||||
}
|
||||
|
||||
@ -5,26 +5,22 @@ namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator;
|
||||
use Graby\SiteConfig\SiteConfig as GrabySiteConfig;
|
||||
use Monolog\Handler\TestHandler;
|
||||
use Monolog\Logger;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
|
||||
use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
|
||||
|
||||
class GrabySiteConfigBuilderTest extends TestCase
|
||||
class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
|
||||
{
|
||||
/** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */
|
||||
protected $builder;
|
||||
|
||||
public function testBuildConfigExists()
|
||||
{
|
||||
/* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
|
||||
$grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$grabySiteConfig = new GrabySiteConfig();
|
||||
$grabySiteConfig->requires_login = true;
|
||||
$grabySiteConfig->login_uri = 'http://www.example.com/login';
|
||||
$grabySiteConfig->login_uri = 'http://api.example.com/login';
|
||||
$grabySiteConfig->login_username_field = 'login';
|
||||
$grabySiteConfig->login_password_field = 'password';
|
||||
$grabySiteConfig->login_extra_fields = ['field=value'];
|
||||
@ -32,7 +28,7 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
|
||||
$grabyConfigBuilderMock
|
||||
->method('buildForHost')
|
||||
->with('example.com')
|
||||
->with('api.example.com')
|
||||
->will($this->returnValue($grabySiteConfig));
|
||||
|
||||
$logger = new Logger('foo');
|
||||
@ -43,8 +39,8 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$siteCrentialRepo->expects($this->once())
|
||||
->method('findOneByHostAndUser')
|
||||
->with('example.com', 1)
|
||||
->method('findOneByHostsAndUser')
|
||||
->with(['api.example.com', '.example.com'], 1)
|
||||
->willReturn(['username' => 'foo', 'password' => 'bar']);
|
||||
|
||||
$user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
|
||||
@ -59,18 +55,18 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
$tokenStorage = new TokenStorage();
|
||||
$tokenStorage->setToken($token);
|
||||
|
||||
$this->builder = new GrabySiteConfigBuilder(
|
||||
$builder = new GrabySiteConfigBuilder(
|
||||
$grabyConfigBuilderMock,
|
||||
$tokenStorage,
|
||||
$siteCrentialRepo,
|
||||
$logger
|
||||
);
|
||||
|
||||
$config = $this->builder->buildForHost('www.example.com');
|
||||
$config = $builder->buildForHost('api.example.com');
|
||||
|
||||
$this->assertSame('example.com', $config->getHost());
|
||||
$this->assertSame('api.example.com', $config->getHost());
|
||||
$this->assertTrue($config->requiresLogin());
|
||||
$this->assertSame('http://www.example.com/login', $config->getLoginUri());
|
||||
$this->assertSame('http://api.example.com/login', $config->getLoginUri());
|
||||
$this->assertSame('login', $config->getUsernameField());
|
||||
$this->assertSame('password', $config->getPasswordField());
|
||||
$this->assertSame(['field' => 'value'], $config->getExtraFields());
|
||||
@ -85,7 +81,6 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
|
||||
public function testBuildConfigDoesntExist()
|
||||
{
|
||||
/* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */
|
||||
$grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
@ -103,8 +98,8 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$siteCrentialRepo->expects($this->once())
|
||||
->method('findOneByHostAndUser')
|
||||
->with('unknown.com', 1)
|
||||
->method('findOneByHostsAndUser')
|
||||
->with(['unknown.com', '.com'], 1)
|
||||
->willReturn(null);
|
||||
|
||||
$user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
|
||||
@ -119,14 +114,14 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
$tokenStorage = new TokenStorage();
|
||||
$tokenStorage->setToken($token);
|
||||
|
||||
$this->builder = new GrabySiteConfigBuilder(
|
||||
$builder = new GrabySiteConfigBuilder(
|
||||
$grabyConfigBuilderMock,
|
||||
$tokenStorage,
|
||||
$siteCrentialRepo,
|
||||
$logger
|
||||
);
|
||||
|
||||
$config = $this->builder->buildForHost('unknown.com');
|
||||
$config = $builder->buildForHost('unknown.com');
|
||||
|
||||
$this->assertFalse($config);
|
||||
|
||||
@ -134,4 +129,121 @@ class GrabySiteConfigBuilderTest extends TestCase
|
||||
|
||||
$this->assertCount(1, $records, 'One log was recorded');
|
||||
}
|
||||
|
||||
public function testBuildConfigUserNotDefined()
|
||||
{
|
||||
$grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$grabyConfigBuilderMock
|
||||
->method('buildForHost')
|
||||
->with('unknown.com')
|
||||
->will($this->returnValue(new GrabySiteConfig()));
|
||||
|
||||
$logger = new Logger('foo');
|
||||
$handler = new TestHandler();
|
||||
$logger->pushHandler($handler);
|
||||
|
||||
$siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$tokenStorage = new TokenStorage();
|
||||
|
||||
$builder = new GrabySiteConfigBuilder(
|
||||
$grabyConfigBuilderMock,
|
||||
$tokenStorage,
|
||||
$siteCrentialRepo,
|
||||
$logger
|
||||
);
|
||||
|
||||
$config = $builder->buildForHost('unknown.com');
|
||||
|
||||
$this->assertFalse($config);
|
||||
}
|
||||
|
||||
public function dataProviderCredentials()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'host' => 'example.com',
|
||||
],
|
||||
[
|
||||
'host' => 'other.example.com',
|
||||
],
|
||||
[
|
||||
'host' => 'paywall.example.com',
|
||||
'expectedUsername' => 'paywall.example',
|
||||
'expectedPassword' => 'bar',
|
||||
],
|
||||
[
|
||||
'host' => 'api.super.com',
|
||||
'expectedUsername' => '.super',
|
||||
'expectedPassword' => 'bar',
|
||||
],
|
||||
[
|
||||
'host' => '.super.com',
|
||||
'expectedUsername' => '.super',
|
||||
'expectedPassword' => 'bar',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataProviderCredentials
|
||||
*/
|
||||
public function testBuildConfigWithDbAccess($host, $expectedUsername = null, $expectedPassword = null)
|
||||
{
|
||||
$grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$grabySiteConfig = new GrabySiteConfig();
|
||||
$grabySiteConfig->requires_login = true;
|
||||
$grabySiteConfig->login_uri = 'http://api.example.com/login';
|
||||
$grabySiteConfig->login_username_field = 'login';
|
||||
$grabySiteConfig->login_password_field = 'password';
|
||||
$grabySiteConfig->login_extra_fields = ['field=value'];
|
||||
$grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]';
|
||||
|
||||
$grabyConfigBuilderMock
|
||||
->method('buildForHost')
|
||||
->with($host)
|
||||
->will($this->returnValue($grabySiteConfig));
|
||||
|
||||
$user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$user->expects($this->once())
|
||||
->method('getId')
|
||||
->willReturn(1);
|
||||
|
||||
$token = new UsernamePasswordToken($user, 'pass', 'provider');
|
||||
|
||||
$tokenStorage = new TokenStorage();
|
||||
$tokenStorage->setToken($token);
|
||||
|
||||
$logger = new Logger('foo');
|
||||
$handler = new TestHandler();
|
||||
$logger->pushHandler($handler);
|
||||
|
||||
$builder = new GrabySiteConfigBuilder(
|
||||
$grabyConfigBuilderMock,
|
||||
$tokenStorage,
|
||||
$this->getClient()->getContainer()->get('wallabag_core.site_credential_repository'),
|
||||
$logger
|
||||
);
|
||||
|
||||
$config = $builder->buildForHost($host);
|
||||
|
||||
if (null === $expectedUsername && null === $expectedPassword) {
|
||||
$this->assertFalse($config);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertSame($expectedUsername, $config->getUsername());
|
||||
$this->assertSame($expectedPassword, $config->getPassword());
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,6 +226,13 @@ class PocketImportTest extends TestCase
|
||||
->method('getRepository')
|
||||
->willReturn($entryRepo);
|
||||
|
||||
$this->em
|
||||
->expects($this->any())
|
||||
->method('persist')
|
||||
->with($this->callback(function ($persistedEntry) {
|
||||
return $persistedEntry->isArchived() && $persistedEntry->isStarred();
|
||||
}));
|
||||
|
||||
$entry = new Entry($this->user);
|
||||
|
||||
$this->contentProxy
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user