Version Description
- Highlight current metric type using color
- Show "Metrics" tab when metrics are disabled
- Refactored connection and Redis status logic
- Updated Predis to v1.1.2
- Remove Predis deprecation notice
- Fixed fetching derived keys in
wp_cache_get_multiple()
Download this release
Release Info
Developer | tillkruess |
Plugin | Redis Object Cache |
Version | 2.0.9 |
Comparing to | |
See all releases |
Code changes from version 2.0.8 to 2.0.9
- assets/css/admin.css +6 -1
- dependencies/predis/predis/.github/FUNDING.yml +2 -0
- dependencies/predis/predis/.php_cs.dist +33 -0
- dependencies/predis/predis/CHANGELOG.md +10 -0
- dependencies/predis/predis/README.md +3 -5
- dependencies/predis/predis/VERSION +1 -1
- dependencies/predis/predis/bin/create-phar +1 -1
- dependencies/predis/predis/composer.json +15 -2
- dependencies/predis/predis/examples/shared.php +4 -0
- dependencies/predis/predis/package.ini +1 -1
- dependencies/predis/predis/src/Client.php +1 -1
- dependencies/predis/predis/src/ClientContextInterface.php +13 -13
- dependencies/predis/predis/src/ClientInterface.php +14 -14
- dependencies/predis/predis/src/Cluster/Hash/CRC16.php +2 -0
- dependencies/predis/predis/src/Collection/Iterator/HashKey.php +3 -5
- dependencies/predis/predis/src/Collection/Iterator/SortedSetKey.php +3 -5
- dependencies/predis/predis/src/Configuration/OptionsInterface.php +13 -7
- dependencies/predis/predis/src/Connection/Aggregate/SentinelReplication.php +4 -2
- includes/class-plugin.php +39 -23
- includes/class-ui.php +7 -9
- includes/object-cache.php +12 -5
- includes/ui/diagnostics.php +3 -1
- includes/ui/settings.php +35 -15
- includes/ui/tabs/overview.php +22 -34
- languages/redis-cache.pot +96 -120
- readme.txt +14 -5
- redis-cache.php +2 -2
assets/css/admin.css
CHANGED
@@ -48,6 +48,11 @@
|
|
48 |
padding: 0;
|
49 |
}
|
50 |
|
|
|
|
|
|
|
|
|
|
|
51 |
#rediscache #redis-stats-chart {
|
52 |
height: 300px;
|
53 |
}
|
@@ -117,7 +122,7 @@
|
|
117 |
|
118 |
#widget-redis-stats ul a:hover,
|
119 |
#widget-redis-stats ul a.active {
|
120 |
-
color: #
|
121 |
}
|
122 |
|
123 |
#redis-stats-chart .apexcharts-annotations {
|
48 |
padding: 0;
|
49 |
}
|
50 |
|
51 |
+
#rediscache .nav-tab-wrapper .nav-tab-disabled {
|
52 |
+
cursor: not-allowed;
|
53 |
+
background-color: #e5e5e5 !important;
|
54 |
+
}
|
55 |
+
|
56 |
#rediscache #redis-stats-chart {
|
57 |
height: 300px;
|
58 |
}
|
122 |
|
123 |
#widget-redis-stats ul a:hover,
|
124 |
#widget-redis-stats ul a.active {
|
125 |
+
color: #0073aa;
|
126 |
}
|
127 |
|
128 |
#redis-stats-chart .apexcharts-annotations {
|
dependencies/predis/predis/.github/FUNDING.yml
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
github: tillkruss
|
2 |
+
custom: "https://www.paypal.me/tillkruss"
|
dependencies/predis/predis/.php_cs.dist
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$PREDIS_HEADER = <<<EOS
|
4 |
+
This file is part of the Predis package.
|
5 |
+
|
6 |
+
(c) Daniele Alessandri <suppakilla@gmail.com>
|
7 |
+
|
8 |
+
For the full copyright and license information, please view the LICENSE
|
9 |
+
file that was distributed with this source code.
|
10 |
+
EOS;
|
11 |
+
|
12 |
+
return PhpCsFixer\Config::create()
|
13 |
+
->setUsingCache(true)
|
14 |
+
->setRules(array(
|
15 |
+
'@Symfony' => true,
|
16 |
+
'header_comment' => array(
|
17 |
+
'header' => $PREDIS_HEADER,
|
18 |
+
),
|
19 |
+
'ordered_imports' => true,
|
20 |
+
'phpdoc_order' => true,
|
21 |
+
'binary_operator_spaces' => array(
|
22 |
+
'align_double_arrow' => false,
|
23 |
+
'align_equals' => false,
|
24 |
+
),
|
25 |
+
'array_syntax' => array('syntax' => 'long'),
|
26 |
+
))
|
27 |
+
->setFinder(
|
28 |
+
PhpCsFixer\Finder::create()
|
29 |
+
->in(__DIR__.'/bin')
|
30 |
+
->in(__DIR__.'/src')
|
31 |
+
->in(__DIR__.'/tests')
|
32 |
+
->in(__DIR__.'/examples')
|
33 |
+
);
|
dependencies/predis/predis/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
v1.1.1 (2016-06-16)
|
2 |
================================================================================
|
3 |
|
1 |
+
v1.1.2 (2020-08-11)
|
2 |
+
================================================================================
|
3 |
+
|
4 |
+
- __FIX__: pure CRC16 implementation failed to calculate the correct hash when
|
5 |
+
the input value passed to the `hash()` method is an integer (PR #450).
|
6 |
+
|
7 |
+
- __FIX__: make PHP iterator abstractions for `ZSCAN` and `HSCAN` working with
|
8 |
+
PHP 7.2 due to a breaking change, namely the removal of `each()` (PR #448).
|
9 |
+
|
10 |
+
|
11 |
v1.1.1 (2016-06-16)
|
12 |
================================================================================
|
13 |
|
dependencies/predis/predis/README.md
CHANGED
@@ -5,7 +5,6 @@
|
|
5 |
[![Latest development][ico-version-dev]][link-packagist]
|
6 |
[![Monthly installs][ico-downloads-monthly]][link-downloads]
|
7 |
[![Build status][ico-travis]][link-travis]
|
8 |
-
[![HHVM support][ico-hhvm]][link-hhvm]
|
9 |
[![Gitter room][ico-gitter]][link-gitter]
|
10 |
|
11 |
Flexible and feature-complete [Redis](http://redis.io) client for PHP >= 5.3 and HHVM >= 2.3.0.
|
@@ -41,7 +40,7 @@ More details about this project can be found on the [frequently asked questions]
|
|
41 |
This library can be found on [Packagist](http://packagist.org/packages/predis/predis) for an easier
|
42 |
management of projects dependencies using [Composer](http://packagist.org/about-composer) or on our
|
43 |
[own PEAR channel](http://pear.nrk.io) for a more traditional installation using PEAR. Ultimately,
|
44 |
-
compressed archives of each release are [available on GitHub](https://github.com/nrk/predis/
|
45 |
|
46 |
|
47 |
### Loading the library ###
|
@@ -108,7 +107,7 @@ of suitable [options](http://php.net/manual/context.ssl.php) passed via the `ssl
|
|
108 |
$client = new Predis\Client([
|
109 |
'scheme' => 'tls',
|
110 |
'ssl' => ['cafile' => 'private.pem', 'verify_peer' => true],
|
111 |
-
]
|
112 |
|
113 |
// Same set of parameters, but using an URI string:
|
114 |
$client = new Predis\Client('tls://127.0.0.1?ssl[cafile]=private.pem&ssl[verify_peer]=1');
|
@@ -463,7 +462,7 @@ found [on its project page](http://travis-ci.org/nrk/predis).
|
|
463 |
### Project related links ###
|
464 |
|
465 |
- [Source code](https://github.com/nrk/predis)
|
466 |
-
- [Wiki](https://
|
467 |
- [Issue tracker](https://github.com/nrk/predis/issues)
|
468 |
- [PEAR channel](http://pear.nrk.io)
|
469 |
|
@@ -488,5 +487,4 @@ The code for Predis is distributed under the terms of the MIT license (see [LICE
|
|
488 |
[link-packagist]: https://packagist.org/packages/predis/predis
|
489 |
[link-travis]: https://travis-ci.org/nrk/predis
|
490 |
[link-downloads]: https://packagist.org/packages/predis/predis/stats
|
491 |
-
[link-hhvm]: http://hhvm.h4cc.de/package/predis/predis
|
492 |
[link-gitter]: https://gitter.im/nrk/predis
|
5 |
[![Latest development][ico-version-dev]][link-packagist]
|
6 |
[![Monthly installs][ico-downloads-monthly]][link-downloads]
|
7 |
[![Build status][ico-travis]][link-travis]
|
|
|
8 |
[![Gitter room][ico-gitter]][link-gitter]
|
9 |
|
10 |
Flexible and feature-complete [Redis](http://redis.io) client for PHP >= 5.3 and HHVM >= 2.3.0.
|
40 |
This library can be found on [Packagist](http://packagist.org/packages/predis/predis) for an easier
|
41 |
management of projects dependencies using [Composer](http://packagist.org/about-composer) or on our
|
42 |
[own PEAR channel](http://pear.nrk.io) for a more traditional installation using PEAR. Ultimately,
|
43 |
+
compressed archives of each release are [available on GitHub](https://github.com/nrk/predis/releases).
|
44 |
|
45 |
|
46 |
### Loading the library ###
|
107 |
$client = new Predis\Client([
|
108 |
'scheme' => 'tls',
|
109 |
'ssl' => ['cafile' => 'private.pem', 'verify_peer' => true],
|
110 |
+
]);
|
111 |
|
112 |
// Same set of parameters, but using an URI string:
|
113 |
$client = new Predis\Client('tls://127.0.0.1?ssl[cafile]=private.pem&ssl[verify_peer]=1');
|
462 |
### Project related links ###
|
463 |
|
464 |
- [Source code](https://github.com/nrk/predis)
|
465 |
+
- [Wiki](https://github.com/nrk/predis/wiki)
|
466 |
- [Issue tracker](https://github.com/nrk/predis/issues)
|
467 |
- [PEAR channel](http://pear.nrk.io)
|
468 |
|
487 |
[link-packagist]: https://packagist.org/packages/predis/predis
|
488 |
[link-travis]: https://travis-ci.org/nrk/predis
|
489 |
[link-downloads]: https://packagist.org/packages/predis/predis/stats
|
|
|
490 |
[link-gitter]: https://gitter.im/nrk/predis
|
dependencies/predis/predis/VERSION
CHANGED
@@ -1 +1 @@
|
|
1 |
-
1.1.
|
1 |
+
1.1.2
|
dependencies/predis/predis/bin/create-phar
CHANGED
@@ -59,7 +59,7 @@ spl_autoload_register(function (\$class) {
|
|
59 |
}
|
60 |
}
|
61 |
});
|
62 |
-
|
63 |
EOSTUB;
|
64 |
}
|
65 |
|
59 |
}
|
60 |
}
|
61 |
});
|
62 |
+
__halt_compiler();
|
63 |
EOSTUB;
|
64 |
}
|
65 |
|
dependencies/predis/predis/composer.json
CHANGED
@@ -16,7 +16,8 @@
|
|
16 |
}
|
17 |
],
|
18 |
"require": {
|
19 |
-
"php": ">=5.3.9"
|
|
|
20 |
},
|
21 |
"require-dev": {
|
22 |
"phpunit/phpunit": "~4.8"
|
@@ -27,5 +28,17 @@
|
|
27 |
},
|
28 |
"autoload": {
|
29 |
"psr-4": {"Predis\\": "src/"}
|
30 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
16 |
}
|
17 |
],
|
18 |
"require": {
|
19 |
+
"php": ">=5.3.9",
|
20 |
+
"cweagans/composer-patches": "^1.6"
|
21 |
},
|
22 |
"require-dev": {
|
23 |
"phpunit/phpunit": "~4.8"
|
28 |
},
|
29 |
"autoload": {
|
30 |
"psr-4": {"Predis\\": "src/"}
|
31 |
+
},
|
32 |
+
"extra": {
|
33 |
+
"composer-exit-on-patch-failure": true,
|
34 |
+
"patches": {
|
35 |
+
"phpunit/phpunit-mock-objects": {
|
36 |
+
"Fix PHP 7 and 8 compatibility": "./tests/phpunit_mock_objects.patch"
|
37 |
+
},
|
38 |
+
"phpunit/phpunit": {
|
39 |
+
"Fix PHP 7 compatibility": "./tests/phpunit_php7.patch",
|
40 |
+
"Fix PHP 8 compatibility": "./tests/phpunit_php8.patch"
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
}
|
dependencies/predis/predis/examples/shared.php
CHANGED
@@ -9,6 +9,10 @@
|
|
9 |
* file that was distributed with this source code.
|
10 |
*/
|
11 |
|
|
|
|
|
|
|
|
|
12 |
require __DIR__.'/../autoload.php';
|
13 |
|
14 |
function redis_version($info)
|
9 |
* file that was distributed with this source code.
|
10 |
*/
|
11 |
|
12 |
+
if (PHP_SAPI !== 'cli') {
|
13 |
+
die("Example scripts are meant to be executed locally via CLI.");
|
14 |
+
}
|
15 |
+
|
16 |
require __DIR__.'/../autoload.php';
|
17 |
|
18 |
function redis_version($info)
|
dependencies/predis/predis/package.ini
CHANGED
@@ -10,7 +10,7 @@ name = "Predis"
|
|
10 |
desc = "Flexible and feature-complete Redis client for PHP and HHVM"
|
11 |
homepage = "http://github.com/nrk/predis"
|
12 |
license = "MIT"
|
13 |
-
version = "1.1.
|
14 |
stability = "stable"
|
15 |
channel = "pear.nrk.io"
|
16 |
|
10 |
desc = "Flexible and feature-complete Redis client for PHP and HHVM"
|
11 |
homepage = "http://github.com/nrk/predis"
|
12 |
license = "MIT"
|
13 |
+
version = "1.1.2"
|
14 |
stability = "stable"
|
15 |
channel = "pear.nrk.io"
|
16 |
|
dependencies/predis/predis/src/Client.php
CHANGED
@@ -40,7 +40,7 @@ use Predis\Transaction\MultiExec as MultiExecTransaction;
|
|
40 |
*/
|
41 |
class Client implements ClientInterface, \IteratorAggregate
|
42 |
{
|
43 |
-
const VERSION = '1.1.
|
44 |
|
45 |
protected $connection;
|
46 |
protected $options;
|
40 |
*/
|
41 |
class Client implements ClientInterface, \IteratorAggregate
|
42 |
{
|
43 |
+
const VERSION = '1.1.2';
|
44 |
|
45 |
protected $connection;
|
46 |
protected $options;
|
dependencies/predis/predis/src/ClientContextInterface.php
CHANGED
@@ -16,7 +16,7 @@ use Predis\Command\CommandInterface;
|
|
16 |
/**
|
17 |
* Interface defining a client-side context such as a pipeline or transaction.
|
18 |
*
|
19 |
-
* @method $this del(array $keys)
|
20 |
* @method $this dump($key)
|
21 |
* @method $this exists($key)
|
22 |
* @method $this expire($key, $seconds)
|
@@ -73,8 +73,8 @@ use Predis\Command\CommandInterface;
|
|
73 |
* @method $this hsetnx($key, $field, $value)
|
74 |
* @method $this hvals($key)
|
75 |
* @method $this hstrlen($key, $field)
|
76 |
-
* @method $this blpop(array $keys, $timeout)
|
77 |
-
* @method $this brpop(array $keys, $timeout)
|
78 |
* @method $this brpoplpush($source, $destination, $timeout)
|
79 |
* @method $this lindex($key, $index)
|
80 |
* @method $this linsert($key, $whence, $pivot, $value)
|
@@ -92,10 +92,10 @@ use Predis\Command\CommandInterface;
|
|
92 |
* @method $this rpushx($key, $value)
|
93 |
* @method $this sadd($key, array $members)
|
94 |
* @method $this scard($key)
|
95 |
-
* @method $this sdiff(array $keys)
|
96 |
-
* @method $this sdiffstore($destination, array $keys)
|
97 |
-
* @method $this sinter(array $keys)
|
98 |
-
* @method $this sinterstore($destination, array $keys)
|
99 |
* @method $this sismember($key, $member)
|
100 |
* @method $this smembers($key)
|
101 |
* @method $this smove($source, $destination, $member)
|
@@ -103,13 +103,13 @@ use Predis\Command\CommandInterface;
|
|
103 |
* @method $this srandmember($key, $count = null)
|
104 |
* @method $this srem($key, $member)
|
105 |
* @method $this sscan($key, $cursor, array $options = null)
|
106 |
-
* @method $this sunion(array $keys)
|
107 |
-
* @method $this sunionstore($destination, array $keys)
|
108 |
* @method $this zadd($key, array $membersAndScoresDictionary)
|
109 |
* @method $this zcard($key)
|
110 |
* @method $this zcount($key, $min, $max)
|
111 |
* @method $this zincrby($key, $increment, $member)
|
112 |
-
* @method $this zinterstore($destination, array $keys, array $options = null)
|
113 |
* @method $this zrange($key, $start, $stop, array $options = null)
|
114 |
* @method $this zrangebyscore($key, $min, $max, array $options = null)
|
115 |
* @method $this zrank($key, $member)
|
@@ -119,7 +119,7 @@ use Predis\Command\CommandInterface;
|
|
119 |
* @method $this zrevrange($key, $start, $stop, array $options = null)
|
120 |
* @method $this zrevrangebyscore($key, $min, $max, array $options = null)
|
121 |
* @method $this zrevrank($key, $member)
|
122 |
-
* @method $this zunionstore($destination, array $keys, array $options = null)
|
123 |
* @method $this zscore($key, $member)
|
124 |
* @method $this zscan($key, $cursor, array $options = null)
|
125 |
* @method $this zrangebylex($key, $start, $stop, array $options = null)
|
@@ -127,8 +127,8 @@ use Predis\Command\CommandInterface;
|
|
127 |
* @method $this zremrangebylex($key, $min, $max)
|
128 |
* @method $this zlexcount($key, $min, $max)
|
129 |
* @method $this pfadd($key, array $elements)
|
130 |
-
* @method $this pfmerge($destinationKey, array $sourceKeys)
|
131 |
-
* @method $this pfcount(array $keys)
|
132 |
* @method $this pubsub($subcommand, $argument)
|
133 |
* @method $this publish($channel, $message)
|
134 |
* @method $this discard()
|
16 |
/**
|
17 |
* Interface defining a client-side context such as a pipeline or transaction.
|
18 |
*
|
19 |
+
* @method $this del(array|string $keys)
|
20 |
* @method $this dump($key)
|
21 |
* @method $this exists($key)
|
22 |
* @method $this expire($key, $seconds)
|
73 |
* @method $this hsetnx($key, $field, $value)
|
74 |
* @method $this hvals($key)
|
75 |
* @method $this hstrlen($key, $field)
|
76 |
+
* @method $this blpop(array|string $keys, $timeout)
|
77 |
+
* @method $this brpop(array|string $keys, $timeout)
|
78 |
* @method $this brpoplpush($source, $destination, $timeout)
|
79 |
* @method $this lindex($key, $index)
|
80 |
* @method $this linsert($key, $whence, $pivot, $value)
|
92 |
* @method $this rpushx($key, $value)
|
93 |
* @method $this sadd($key, array $members)
|
94 |
* @method $this scard($key)
|
95 |
+
* @method $this sdiff(array|string $keys)
|
96 |
+
* @method $this sdiffstore($destination, array|string $keys)
|
97 |
+
* @method $this sinter(array|string $keys)
|
98 |
+
* @method $this sinterstore($destination, array|string $keys)
|
99 |
* @method $this sismember($key, $member)
|
100 |
* @method $this smembers($key)
|
101 |
* @method $this smove($source, $destination, $member)
|
103 |
* @method $this srandmember($key, $count = null)
|
104 |
* @method $this srem($key, $member)
|
105 |
* @method $this sscan($key, $cursor, array $options = null)
|
106 |
+
* @method $this sunion(array|string $keys)
|
107 |
+
* @method $this sunionstore($destination, array|string $keys)
|
108 |
* @method $this zadd($key, array $membersAndScoresDictionary)
|
109 |
* @method $this zcard($key)
|
110 |
* @method $this zcount($key, $min, $max)
|
111 |
* @method $this zincrby($key, $increment, $member)
|
112 |
+
* @method $this zinterstore($destination, array|string $keys, array $options = null)
|
113 |
* @method $this zrange($key, $start, $stop, array $options = null)
|
114 |
* @method $this zrangebyscore($key, $min, $max, array $options = null)
|
115 |
* @method $this zrank($key, $member)
|
119 |
* @method $this zrevrange($key, $start, $stop, array $options = null)
|
120 |
* @method $this zrevrangebyscore($key, $min, $max, array $options = null)
|
121 |
* @method $this zrevrank($key, $member)
|
122 |
+
* @method $this zunionstore($destination, array|string $keys, array $options = null)
|
123 |
* @method $this zscore($key, $member)
|
124 |
* @method $this zscan($key, $cursor, array $options = null)
|
125 |
* @method $this zrangebylex($key, $start, $stop, array $options = null)
|
127 |
* @method $this zremrangebylex($key, $min, $max)
|
128 |
* @method $this zlexcount($key, $min, $max)
|
129 |
* @method $this pfadd($key, array $elements)
|
130 |
+
* @method $this pfmerge($destinationKey, array|string $sourceKeys)
|
131 |
+
* @method $this pfcount(array|string $keys)
|
132 |
* @method $this pubsub($subcommand, $argument)
|
133 |
* @method $this publish($channel, $message)
|
134 |
* @method $this discard()
|
dependencies/predis/predis/src/ClientInterface.php
CHANGED
@@ -24,7 +24,7 @@ use Predis\Profile\ProfileInterface;
|
|
24 |
* and more friendly interface to ease programming which is described in the
|
25 |
* following list of methods:
|
26 |
*
|
27 |
-
* @method int del(array $keys)
|
28 |
* @method string dump($key)
|
29 |
* @method int exists($key)
|
30 |
* @method int expire($key, $seconds)
|
@@ -81,8 +81,8 @@ use Predis\Profile\ProfileInterface;
|
|
81 |
* @method int hsetnx($key, $field, $value)
|
82 |
* @method array hvals($key)
|
83 |
* @method int hstrlen($key, $field)
|
84 |
-
* @method array blpop(array $keys, $timeout)
|
85 |
-
* @method array brpop(array $keys, $timeout)
|
86 |
* @method array brpoplpush($source, $destination, $timeout)
|
87 |
* @method string lindex($key, $index)
|
88 |
* @method int linsert($key, $whence, $pivot, $value)
|
@@ -100,24 +100,24 @@ use Predis\Profile\ProfileInterface;
|
|
100 |
* @method int rpushx($key, $value)
|
101 |
* @method int sadd($key, array $members)
|
102 |
* @method int scard($key)
|
103 |
-
* @method array sdiff(array $keys)
|
104 |
-
* @method int sdiffstore($destination, array $keys)
|
105 |
-
* @method array sinter(array $keys)
|
106 |
-
* @method int sinterstore($destination, array $keys)
|
107 |
* @method int sismember($key, $member)
|
108 |
* @method array smembers($key)
|
109 |
* @method int smove($source, $destination, $member)
|
110 |
-
* @method
|
111 |
* @method string srandmember($key, $count = null)
|
112 |
* @method int srem($key, $member)
|
113 |
* @method array sscan($key, $cursor, array $options = null)
|
114 |
-
* @method array sunion(array $keys)
|
115 |
-
* @method int sunionstore($destination, array $keys)
|
116 |
* @method int zadd($key, array $membersAndScoresDictionary)
|
117 |
* @method int zcard($key)
|
118 |
* @method string zcount($key, $min, $max)
|
119 |
* @method string zincrby($key, $increment, $member)
|
120 |
-
* @method int zinterstore($destination, array $keys, array $options = null)
|
121 |
* @method array zrange($key, $start, $stop, array $options = null)
|
122 |
* @method array zrangebyscore($key, $min, $max, array $options = null)
|
123 |
* @method int zrank($key, $member)
|
@@ -127,7 +127,7 @@ use Predis\Profile\ProfileInterface;
|
|
127 |
* @method array zrevrange($key, $start, $stop, array $options = null)
|
128 |
* @method array zrevrangebyscore($key, $max, $min, array $options = null)
|
129 |
* @method int zrevrank($key, $member)
|
130 |
-
* @method int zunionstore($destination, array $keys, array $options = null)
|
131 |
* @method string zscore($key, $member)
|
132 |
* @method array zscan($key, $cursor, array $options = null)
|
133 |
* @method array zrangebylex($key, $start, $stop, array $options = null)
|
@@ -135,8 +135,8 @@ use Predis\Profile\ProfileInterface;
|
|
135 |
* @method int zremrangebylex($key, $min, $max)
|
136 |
* @method int zlexcount($key, $min, $max)
|
137 |
* @method int pfadd($key, array $elements)
|
138 |
-
* @method mixed pfmerge($destinationKey, array $sourceKeys)
|
139 |
-
* @method int pfcount(array $keys)
|
140 |
* @method mixed pubsub($subcommand, $argument)
|
141 |
* @method int publish($channel, $message)
|
142 |
* @method mixed discard()
|
24 |
* and more friendly interface to ease programming which is described in the
|
25 |
* following list of methods:
|
26 |
*
|
27 |
+
* @method int del(array|string $keys)
|
28 |
* @method string dump($key)
|
29 |
* @method int exists($key)
|
30 |
* @method int expire($key, $seconds)
|
81 |
* @method int hsetnx($key, $field, $value)
|
82 |
* @method array hvals($key)
|
83 |
* @method int hstrlen($key, $field)
|
84 |
+
* @method array blpop(array|string $keys, $timeout)
|
85 |
+
* @method array brpop(array|string $keys, $timeout)
|
86 |
* @method array brpoplpush($source, $destination, $timeout)
|
87 |
* @method string lindex($key, $index)
|
88 |
* @method int linsert($key, $whence, $pivot, $value)
|
100 |
* @method int rpushx($key, $value)
|
101 |
* @method int sadd($key, array $members)
|
102 |
* @method int scard($key)
|
103 |
+
* @method array sdiff(array|string $keys)
|
104 |
+
* @method int sdiffstore($destination, array|string $keys)
|
105 |
+
* @method array sinter(array|string $keys)
|
106 |
+
* @method int sinterstore($destination, array|string $keys)
|
107 |
* @method int sismember($key, $member)
|
108 |
* @method array smembers($key)
|
109 |
* @method int smove($source, $destination, $member)
|
110 |
+
* @method array spop($key, $count = null)
|
111 |
* @method string srandmember($key, $count = null)
|
112 |
* @method int srem($key, $member)
|
113 |
* @method array sscan($key, $cursor, array $options = null)
|
114 |
+
* @method array sunion(array|string $keys)
|
115 |
+
* @method int sunionstore($destination, array|string $keys)
|
116 |
* @method int zadd($key, array $membersAndScoresDictionary)
|
117 |
* @method int zcard($key)
|
118 |
* @method string zcount($key, $min, $max)
|
119 |
* @method string zincrby($key, $increment, $member)
|
120 |
+
* @method int zinterstore($destination, array|string $keys, array $options = null)
|
121 |
* @method array zrange($key, $start, $stop, array $options = null)
|
122 |
* @method array zrangebyscore($key, $min, $max, array $options = null)
|
123 |
* @method int zrank($key, $member)
|
127 |
* @method array zrevrange($key, $start, $stop, array $options = null)
|
128 |
* @method array zrevrangebyscore($key, $max, $min, array $options = null)
|
129 |
* @method int zrevrank($key, $member)
|
130 |
+
* @method int zunionstore($destination, array|string $keys, array $options = null)
|
131 |
* @method string zscore($key, $member)
|
132 |
* @method array zscan($key, $cursor, array $options = null)
|
133 |
* @method array zrangebylex($key, $start, $stop, array $options = null)
|
135 |
* @method int zremrangebylex($key, $min, $max)
|
136 |
* @method int zlexcount($key, $min, $max)
|
137 |
* @method int pfadd($key, array $elements)
|
138 |
+
* @method mixed pfmerge($destinationKey, array|string $sourceKeys)
|
139 |
+
* @method int pfcount(array|string $keys)
|
140 |
* @method mixed pubsub($subcommand, $argument)
|
141 |
* @method int publish($channel, $message)
|
142 |
* @method mixed discard()
|
dependencies/predis/predis/src/Cluster/Hash/CRC16.php
CHANGED
@@ -61,6 +61,8 @@ class CRC16 implements HashGeneratorInterface
|
|
61 |
// CRC-CCITT-16 algorithm
|
62 |
$crc = 0;
|
63 |
$CCITT_16 = self::$CCITT_16;
|
|
|
|
|
64 |
$strlen = strlen($value);
|
65 |
|
66 |
for ($i = 0; $i < $strlen; ++$i) {
|
61 |
// CRC-CCITT-16 algorithm
|
62 |
$crc = 0;
|
63 |
$CCITT_16 = self::$CCITT_16;
|
64 |
+
|
65 |
+
$value = (string) $value;
|
66 |
$strlen = strlen($value);
|
67 |
|
68 |
for ($i = 0; $i < $strlen; ++$i) {
|
dependencies/predis/predis/src/Collection/Iterator/HashKey.php
CHANGED
@@ -50,11 +50,9 @@ class HashKey extends CursorBasedIterator
|
|
50 |
*/
|
51 |
protected function extractNext()
|
52 |
{
|
53 |
-
|
54 |
-
|
55 |
-
$this->current = $kv[1];
|
56 |
|
57 |
-
|
58 |
-
}
|
59 |
}
|
60 |
}
|
50 |
*/
|
51 |
protected function extractNext()
|
52 |
{
|
53 |
+
$this->position = key($this->elements);
|
54 |
+
$this->current = current($this->elements);
|
|
|
55 |
|
56 |
+
unset($this->elements[$this->position]);
|
|
|
57 |
}
|
58 |
}
|
dependencies/predis/predis/src/Collection/Iterator/SortedSetKey.php
CHANGED
@@ -50,11 +50,9 @@ class SortedSetKey extends CursorBasedIterator
|
|
50 |
*/
|
51 |
protected function extractNext()
|
52 |
{
|
53 |
-
|
54 |
-
|
55 |
-
$this->current = $kv[1];
|
56 |
|
57 |
-
|
58 |
-
}
|
59 |
}
|
60 |
}
|
50 |
*/
|
51 |
protected function extractNext()
|
52 |
{
|
53 |
+
$this->position = key($this->elements);
|
54 |
+
$this->current = current($this->elements);
|
|
|
55 |
|
56 |
+
unset($this->elements[$this->position]);
|
|
|
57 |
}
|
58 |
}
|
dependencies/predis/predis/src/Configuration/OptionsInterface.php
CHANGED
@@ -11,16 +11,22 @@
|
|
11 |
|
12 |
namespace Predis\Configuration;
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
/**
|
15 |
* Interface defining a container for client options.
|
16 |
*
|
17 |
-
* @property-read
|
18 |
-
* @property-read
|
19 |
-
* @property-read
|
20 |
-
* @property-read
|
21 |
-
* @property-read
|
22 |
-
* @property-read
|
23 |
-
* @property-read
|
24 |
*
|
25 |
* @author Daniele Alessandri <suppakilla@gmail.com>
|
26 |
*/
|
11 |
|
12 |
namespace Predis\Configuration;
|
13 |
|
14 |
+
use Predis\Command\Processor\ProcessorInterface;
|
15 |
+
use Predis\Connection\Aggregate\ClusterInterface;
|
16 |
+
use Predis\Connection\Aggregate\ReplicationInterface;
|
17 |
+
use Predis\Connection\FactoryInterface;
|
18 |
+
use Predis\Profile\ProfileInterface;
|
19 |
+
|
20 |
/**
|
21 |
* Interface defining a container for client options.
|
22 |
*
|
23 |
+
* @property-read callable $aggregate Custom connection aggregator.
|
24 |
+
* @property-read ClusterInterface $cluster Aggregate connection for clustering.
|
25 |
+
* @property-read FactoryInterface $connections Connection factory.
|
26 |
+
* @property-read bool $exceptions Toggles exceptions in client for -ERR responses.
|
27 |
+
* @property-read ProcessorInterface $prefix Key prefixing strategy using the given prefix.
|
28 |
+
* @property-read ProfileInterface $profile Server profile.
|
29 |
+
* @property-read ReplicationInterface $replication Aggregate connection for replication.
|
30 |
*
|
31 |
* @author Daniele Alessandri <suppakilla@gmail.com>
|
32 |
*/
|
dependencies/predis/predis/src/Connection/Aggregate/SentinelReplication.php
CHANGED
@@ -515,8 +515,10 @@ class SentinelReplication implements ReplicationInterface
|
|
515 |
/**
|
516 |
* Asserts that the specified connection matches an expected role.
|
517 |
*
|
518 |
-
* @param NodeConnectionInterface $
|
519 |
-
* @param string $role
|
|
|
|
|
520 |
*/
|
521 |
protected function assertConnectionRole(NodeConnectionInterface $connection, $role)
|
522 |
{
|
515 |
/**
|
516 |
* Asserts that the specified connection matches an expected role.
|
517 |
*
|
518 |
+
* @param NodeConnectionInterface $connection Connection to a redis server.
|
519 |
+
* @param string $role Expected role of the server ("master", "slave" or "sentinel").
|
520 |
+
*
|
521 |
+
* @throws RoleException
|
522 |
*/
|
523 |
protected function assertConnectionRole(NodeConnectionInterface $connection, $role)
|
524 |
{
|
includes/class-plugin.php
CHANGED
@@ -130,13 +130,22 @@ class Plugin {
|
|
130 |
wp_clear_scheduled_hook( 'redis_gather_metrics' );
|
131 |
}
|
132 |
|
133 |
-
UI::register_tab(
|
|
|
|
|
|
|
|
|
134 |
|
135 |
-
|
136 |
-
|
137 |
-
|
|
|
|
|
138 |
|
139 |
-
UI::register_tab(
|
|
|
|
|
|
|
140 |
|
141 |
// show admin page
|
142 |
require_once WP_REDIS_PLUGIN_PATH . '/includes/ui/settings.php';
|
@@ -227,7 +236,7 @@ class Plugin {
|
|
227 |
'calls' => __( 'Calls', 'redis-cache' ),
|
228 |
'no_data' => __( 'Not enough data collected, yet.', 'redis-cache' ),
|
229 |
'no_cache' => __( 'Enable object cache to collect data.', 'redis-cache' ),
|
230 |
-
'pro' => '
|
231 |
),
|
232 |
)
|
233 |
);
|
@@ -325,21 +334,24 @@ class Plugin {
|
|
325 |
}
|
326 |
|
327 |
public function get_status() {
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
) {
|
332 |
return __( 'Disabled', 'redis-cache' );
|
333 |
}
|
334 |
|
335 |
-
if ( $this->
|
336 |
-
|
337 |
-
|
338 |
-
}
|
339 |
|
340 |
-
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
return __( 'Unknown', 'redis-cache' );
|
@@ -357,11 +369,15 @@ class Plugin {
|
|
357 |
return;
|
358 |
}
|
359 |
|
360 |
-
if ( $this->validate_object_cache_dropin()
|
361 |
-
return
|
|
|
|
|
|
|
|
|
362 |
}
|
363 |
|
364 |
-
return;
|
365 |
}
|
366 |
|
367 |
public function get_redis_version() {
|
@@ -585,7 +601,7 @@ class Plugin {
|
|
585 |
|
586 |
printf(
|
587 |
'<div class="notice notice-info is-dismissible" data-dismissible="pro_release_notice"><p><strong>%s</strong> %s</p></div>',
|
588 |
-
__( '
|
589 |
sprintf(
|
590 |
// translators: %s = Link to the plugin setting screen
|
591 |
__( 'A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href="%s">Learn more »</a>', 'redis-cache' ),
|
@@ -619,10 +635,10 @@ class Plugin {
|
|
619 |
|
620 |
printf(
|
621 |
'<div class="notice woocommerce-message woocommerce-admin-promo-messages is-dismissible" data-dismissible="wc_pro_notice"><p><strong>%s</strong></p><p>%s</p></div>',
|
622 |
-
__( '
|
623 |
sprintf(
|
624 |
// translators: %s = Link to the plugin's settings screen
|
625 |
-
__( '
|
626 |
network_admin_url( $this->page )
|
627 |
)
|
628 |
);
|
130 |
wp_clear_scheduled_hook( 'redis_gather_metrics' );
|
131 |
}
|
132 |
|
133 |
+
UI::register_tab(
|
134 |
+
'overview',
|
135 |
+
__( 'Overview', 'redis-cache' ),
|
136 |
+
[ 'default' => true ]
|
137 |
+
);
|
138 |
|
139 |
+
UI::register_tab(
|
140 |
+
'metrics',
|
141 |
+
__( 'Metrics', 'redis-cache' ),
|
142 |
+
[ 'disabled' => defined( 'WP_REDIS_DISABLE_METRICS' ) && WP_REDIS_DISABLE_METRICS ]
|
143 |
+
);
|
144 |
|
145 |
+
UI::register_tab(
|
146 |
+
'diagnostics',
|
147 |
+
__( 'Diagnostics', 'redis-cache' )
|
148 |
+
);
|
149 |
|
150 |
// show admin page
|
151 |
require_once WP_REDIS_PLUGIN_PATH . '/includes/ui/settings.php';
|
236 |
'calls' => __( 'Calls', 'redis-cache' ),
|
237 |
'no_data' => __( 'Not enough data collected, yet.', 'redis-cache' ),
|
238 |
'no_cache' => __( 'Enable object cache to collect data.', 'redis-cache' ),
|
239 |
+
'pro' => 'Object Cache Pro',
|
240 |
),
|
241 |
)
|
242 |
);
|
334 |
}
|
335 |
|
336 |
public function get_status() {
|
337 |
+
global $wp_object_cache;
|
338 |
+
|
339 |
+
if ( defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED ) {
|
|
|
340 |
return __( 'Disabled', 'redis-cache' );
|
341 |
}
|
342 |
|
343 |
+
if ( ! $this->object_cache_dropin_exists() ) {
|
344 |
+
return __( 'Drop-in not installed', 'redis-cache' );
|
345 |
+
}
|
|
|
346 |
|
347 |
+
if ( ! $this->validate_object_cache_dropin() ) {
|
348 |
+
return __( 'Drop-in is invalid', 'redis-cache' );
|
349 |
+
}
|
350 |
+
|
351 |
+
if ( method_exists( $wp_object_cache, 'redis_status' ) ) {
|
352 |
+
return $wp_object_cache->redis_status()
|
353 |
+
? __( 'Connected', 'redis-cache' )
|
354 |
+
: __( 'Not connected', 'redis-cache' );
|
355 |
}
|
356 |
|
357 |
return __( 'Unknown', 'redis-cache' );
|
369 |
return;
|
370 |
}
|
371 |
|
372 |
+
if ( ! $this->validate_object_cache_dropin() ) {
|
373 |
+
return;
|
374 |
+
}
|
375 |
+
|
376 |
+
if ( ! method_exists( $wp_object_cache, 'redis_status' ) ) {
|
377 |
+
return;
|
378 |
}
|
379 |
|
380 |
+
return $wp_object_cache->redis_status();
|
381 |
}
|
382 |
|
383 |
public function get_redis_version() {
|
601 |
|
602 |
printf(
|
603 |
'<div class="notice notice-info is-dismissible" data-dismissible="pro_release_notice"><p><strong>%s</strong> %s</p></div>',
|
604 |
+
__( 'Object Cache Pro is out!', 'redis-cache' ),
|
605 |
sprintf(
|
606 |
// translators: %s = Link to the plugin setting screen
|
607 |
__( 'A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href="%s">Learn more »</a>', 'redis-cache' ),
|
635 |
|
636 |
printf(
|
637 |
'<div class="notice woocommerce-message woocommerce-admin-promo-messages is-dismissible" data-dismissible="wc_pro_notice"><p><strong>%s</strong></p><p>%s</p></div>',
|
638 |
+
__( 'Object Cache Pro + WooCommerce = ❤️', 'redis-cache' ),
|
639 |
sprintf(
|
640 |
// translators: %s = Link to the plugin's settings screen
|
641 |
+
__( 'Object Cache Pro is a <u>business class</u> object cache that’s highly-optimized for WooCommerce to provide true reliability, peace of mind and faster load times for your store. <a style="color: #bb77ae;" href="%s">Learn more »</a>', 'redis-cache' ),
|
642 |
network_admin_url( $this->page )
|
643 |
)
|
644 |
);
|
includes/class-ui.php
CHANGED
@@ -30,15 +30,13 @@ class UI {
|
|
30 |
* @return void
|
31 |
*/
|
32 |
public static function register_tab( $slug, $label, $args = [] ) {
|
33 |
-
self::$tabs[ $slug ] = (object) wp_parse_args(
|
34 |
-
$
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
]
|
41 |
-
);
|
42 |
}
|
43 |
|
44 |
/**
|
30 |
* @return void
|
31 |
*/
|
32 |
public static function register_tab( $slug, $label, $args = [] ) {
|
33 |
+
self::$tabs[ $slug ] = (object) wp_parse_args( $args, [
|
34 |
+
'label' => $label,
|
35 |
+
'file' => WP_REDIS_PLUGIN_PATH . "/includes/ui/tabs/{$slug}.php",
|
36 |
+
'slug' => $slug,
|
37 |
+
'default' => false,
|
38 |
+
'disabled' => false,
|
39 |
+
] );
|
|
|
|
|
40 |
}
|
41 |
|
42 |
/**
|
includes/object-cache.php
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
* Plugin Name: Redis Object Cache Drop-In
|
4 |
* Plugin URI: http://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Credis, HHVM, replication, clustering and WP-CLI.
|
6 |
-
* Version: 2.0.
|
7 |
* Author: Till Krüss
|
8 |
-
* Author URI: https://
|
9 |
* License: GPLv3
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
*
|
@@ -863,7 +863,7 @@ class WP_Object_Cache {
|
|
863 |
* @return bool
|
864 |
*/
|
865 |
public function redis_status() {
|
866 |
-
return $this->redis_connected;
|
867 |
}
|
868 |
|
869 |
/**
|
@@ -1379,7 +1379,14 @@ LUA;
|
|
1379 |
$start_time = microtime( true );
|
1380 |
|
1381 |
try {
|
1382 |
-
$results = array_combine(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1383 |
} catch ( Exception $exception ) {
|
1384 |
$this->handle_exception( $exception );
|
1385 |
|
@@ -1581,7 +1588,7 @@ LUA;
|
|
1581 |
|
1582 |
?> <p>
|
1583 |
<strong>Redis Status:</strong>
|
1584 |
-
<?php echo $this->redis_status() ? 'Connected' : 'Not
|
1585 |
<br />
|
1586 |
<strong>Redis Client:</strong>
|
1587 |
<?php echo $this->diagnostics['client'] ?: 'Unknown'; ?>
|
3 |
* Plugin Name: Redis Object Cache Drop-In
|
4 |
* Plugin URI: http://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Credis, HHVM, replication, clustering and WP-CLI.
|
6 |
+
* Version: 2.0.9
|
7 |
* Author: Till Krüss
|
8 |
+
* Author URI: https://objectcache.pro
|
9 |
* License: GPLv3
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
*
|
863 |
* @return bool
|
864 |
*/
|
865 |
public function redis_status() {
|
866 |
+
return (bool) $this->redis_connected;
|
867 |
}
|
868 |
|
869 |
/**
|
1379 |
$start_time = microtime( true );
|
1380 |
|
1381 |
try {
|
1382 |
+
$results = array_combine(
|
1383 |
+
$remaining_keys,
|
1384 |
+
$this->redis->mget(
|
1385 |
+
array_map( function ( $key ) use ( $derived_keys ) {
|
1386 |
+
return $derived_keys[ $key ];
|
1387 |
+
}, $remaining_keys )
|
1388 |
+
)
|
1389 |
+
);
|
1390 |
} catch ( Exception $exception ) {
|
1391 |
$this->handle_exception( $exception );
|
1392 |
|
1588 |
|
1589 |
?> <p>
|
1590 |
<strong>Redis Status:</strong>
|
1591 |
+
<?php echo $this->redis_status() ? 'Connected' : 'Not connected'; ?>
|
1592 |
<br />
|
1593 |
<strong>Redis Client:</strong>
|
1594 |
<?php echo $this->diagnostics['client'] ?: 'Unknown'; ?>
|
includes/ui/diagnostics.php
CHANGED
@@ -16,7 +16,9 @@ $disabled = defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED;
|
|
16 |
|
17 |
$info['Status'] = $plugin->get_status();
|
18 |
$info['Client'] = $plugin->get_redis_client_name();
|
19 |
-
$info['Drop-in'] = $
|
|
|
|
|
20 |
$info['Disabled'] = $disabled ? 'Yes' : 'No';
|
21 |
$info['Filesystem'] = is_wp_error( $filesystem ) ? $filesystem->get_error_message() : 'Working';
|
22 |
|
16 |
|
17 |
$info['Status'] = $plugin->get_status();
|
18 |
$info['Client'] = $plugin->get_redis_client_name();
|
19 |
+
$info['Drop-in'] = $plugin->object_cache_dropin_exists()
|
20 |
+
? ($dropin ? 'Valid' : 'Invalid')
|
21 |
+
: 'Not installed';
|
22 |
$info['Disabled'] = $disabled ? 'Yes' : 'No';
|
23 |
$info['Filesystem'] = is_wp_error( $filesystem ) ? $filesystem->get_error_message() : 'Working';
|
24 |
|
includes/ui/settings.php
CHANGED
@@ -26,23 +26,43 @@ defined( '\\ABSPATH' ) || exit;
|
|
26 |
|
27 |
<h2 class="nav-tab-wrapper">
|
28 |
<?php foreach ( UI::get_tabs() as $ui_tab ) : ?>
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
<?php endforeach; ?>
|
37 |
</h2>
|
38 |
|
39 |
<div class="tab-content">
|
40 |
<?php foreach ( UI::get_tabs() as $ui_tab ) : ?>
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
|
|
|
|
46 |
<?php endforeach; ?>
|
47 |
</div>
|
48 |
|
@@ -58,7 +78,7 @@ defined( '\\ABSPATH' ) || exit;
|
|
58 |
|
59 |
<div class="card">
|
60 |
<h2 class="title">
|
61 |
-
|
62 |
</h2>
|
63 |
<p>
|
64 |
<b>A business class object cache backend.</b> Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it.
|
@@ -75,8 +95,8 @@ defined( '\\ABSPATH' ) || exit;
|
|
75 |
<li>Optimized for WooCommerce, Jetpack & Yoast SEO</li>
|
76 |
</ul>
|
77 |
<p>
|
78 |
-
<a class="button button-primary" target="_blank" rel="noopener" href="https://
|
79 |
-
|
80 |
</a>
|
81 |
</p>
|
82 |
</div>
|
26 |
|
27 |
<h2 class="nav-tab-wrapper">
|
28 |
<?php foreach ( UI::get_tabs() as $ui_tab ) : ?>
|
29 |
+
<?php if ( $ui_tab->disabled ) : ?>
|
30 |
+
|
31 |
+
<span
|
32 |
+
class="nav-tab nav-tab-disabled"
|
33 |
+
title="<?php printf(
|
34 |
+
// translators: %s = Tab label
|
35 |
+
esc_html__( '%s are disabled for this site.', 'redis-cache' ),
|
36 |
+
esc_html( $ui_tab->label )
|
37 |
+
) ?>"
|
38 |
+
>
|
39 |
+
<?php echo esc_html( $ui_tab->label ); ?>
|
40 |
+
</span>
|
41 |
+
|
42 |
+
<?php else : ?>
|
43 |
+
|
44 |
+
<a
|
45 |
+
id="<?php echo esc_attr( $ui_tab->slug ); ?>-tab"
|
46 |
+
class="nav-tab <?php echo $ui_tab->default ? 'nav-tab-active' : ''; ?>"
|
47 |
+
data-toggle="<?php echo esc_attr( $ui_tab->slug ); ?>"
|
48 |
+
href="#<?php echo esc_attr( $ui_tab->slug ); ?>"
|
49 |
+
>
|
50 |
+
<?php echo esc_html( $ui_tab->label ); ?>
|
51 |
+
</a>
|
52 |
+
|
53 |
+
<?php endif; ?>
|
54 |
<?php endforeach; ?>
|
55 |
</h2>
|
56 |
|
57 |
<div class="tab-content">
|
58 |
<?php foreach ( UI::get_tabs() as $ui_tab ) : ?>
|
59 |
+
<?php if ( ! $ui_tab->disabled ) : ?>
|
60 |
+
<div id="<?php echo esc_attr( $ui_tab->slug ); ?>-pane"
|
61 |
+
class="tab-pane tab-pane-<?php echo esc_attr( $ui_tab->slug ); ?> <?php echo $ui_tab->default ? 'active' : ''; ?>"
|
62 |
+
>
|
63 |
+
<?php include $ui_tab->file; ?>
|
64 |
+
</div>
|
65 |
+
<?php endif; ?>
|
66 |
<?php endforeach; ?>
|
67 |
</div>
|
68 |
|
78 |
|
79 |
<div class="card">
|
80 |
<h2 class="title">
|
81 |
+
Object Cache Pro
|
82 |
</h2>
|
83 |
<p>
|
84 |
<b>A business class object cache backend.</b> Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it.
|
95 |
<li>Optimized for WooCommerce, Jetpack & Yoast SEO</li>
|
96 |
</ul>
|
97 |
<p>
|
98 |
+
<a class="button button-primary" target="_blank" rel="noopener" href="https://objectcache.pro/?utm_source=wp-plugin&utm_medium=settings">
|
99 |
+
Learn more
|
100 |
</a>
|
101 |
</p>
|
102 |
</div>
|
includes/ui/tabs/overview.php
CHANGED
@@ -7,14 +7,14 @@
|
|
7 |
|
8 |
defined( '\\ABSPATH' ) || exit;
|
9 |
|
10 |
-
$
|
11 |
|
12 |
-
$redis_client = $
|
13 |
-
$redis_prefix = $
|
14 |
-
$redis_maxttl = $
|
15 |
-
$redis_version = $
|
16 |
|
17 |
-
$diagnostics = $
|
18 |
|
19 |
?>
|
20 |
|
@@ -29,24 +29,6 @@ $diagnostics = $roc->get_diagnostics();
|
|
29 |
<th><?php esc_html_e( 'Client:', 'redis-cache' ); ?></th>
|
30 |
<td>
|
31 |
<code><?php echo esc_html( $redis_client ); ?></code>
|
32 |
-
|
33 |
-
<?php if ( stripos( (string) $redis_client, 'predis' ) === 0 ) : ?>
|
34 |
-
<p class="description is-notice">
|
35 |
-
<?php if ( version_compare( phpversion(), '7.2', '<' ) ) : ?>
|
36 |
-
<?php _e( 'The Predis library is no longer maintained.', 'redis-cache' ); ?>
|
37 |
-
<?php else : ?>
|
38 |
-
<?php _e( 'The Predis library is not reliable on PHP 7.2 and newer.', 'redis-cache' ); ?>
|
39 |
-
<?php endif; ?>
|
40 |
-
|
41 |
-
<?php
|
42 |
-
printf(
|
43 |
-
// translators: %s = Link to the help article
|
44 |
-
__( 'Learn more about <a href="%s" target="_blank">migrating to Credis or PhpRedis</a> to avoid compatiblity issues in the future.', 'redis-cache' ),
|
45 |
-
'https://github.com/rhubarbgroup/redis-cache/wiki/Predis'
|
46 |
-
);
|
47 |
-
?>
|
48 |
-
</p>
|
49 |
-
<?php endif; ?>
|
50 |
</td>
|
51 |
</tr>
|
52 |
<?php endif; ?>
|
@@ -55,12 +37,12 @@ $diagnostics = $roc->get_diagnostics();
|
|
55 |
<th><?php esc_html_e( 'Drop-in:', 'redis-cache' ); ?></th>
|
56 |
<td>
|
57 |
<code>
|
58 |
-
<?php if ( ! $
|
59 |
-
<?php esc_html_e( '
|
60 |
-
<?php elseif ( $
|
61 |
<?php esc_html_e( 'Outdated', 'redis-cache' ); ?>
|
62 |
<?php else : ?>
|
63 |
-
<?php $
|
64 |
? esc_html_e( 'Valid', 'redis-cache' )
|
65 |
: esc_html_e( 'Invalid', 'redis-cache' );
|
66 |
?>
|
@@ -112,7 +94,7 @@ $diagnostics = $roc->get_diagnostics();
|
|
112 |
|
113 |
<tr>
|
114 |
<th><?php esc_html_e( 'Status:', 'redis-cache' ); ?></th>
|
115 |
-
<td><code><?php echo esc_html( $
|
116 |
</tr>
|
117 |
|
118 |
<?php if ( ! empty( $diagnostics['host'] ) ) : ?>
|
@@ -253,14 +235,20 @@ $diagnostics = $roc->get_diagnostics();
|
|
253 |
|
254 |
<p class="submit">
|
255 |
|
256 |
-
<?php if ( $
|
257 |
-
<a href="<?php echo esc_attr(
|
|
|
|
|
258 |
<?php endif; ?>
|
259 |
|
260 |
-
<?php if ( $
|
261 |
-
<a href="<?php echo esc_attr(
|
|
|
|
|
262 |
<?php else : ?>
|
263 |
-
<a href="<?php echo esc_attr(
|
|
|
|
|
264 |
<?php endif; ?>
|
265 |
|
266 |
</p>
|
7 |
|
8 |
defined( '\\ABSPATH' ) || exit;
|
9 |
|
10 |
+
$plugin = redis_object_cache();
|
11 |
|
12 |
+
$redis_client = $plugin->get_redis_client_name();
|
13 |
+
$redis_prefix = $plugin->get_redis_prefix();
|
14 |
+
$redis_maxttl = $plugin->get_redis_maxttl();
|
15 |
+
$redis_version = $plugin->get_redis_version();
|
16 |
|
17 |
+
$diagnostics = $plugin->get_diagnostics();
|
18 |
|
19 |
?>
|
20 |
|
29 |
<th><?php esc_html_e( 'Client:', 'redis-cache' ); ?></th>
|
30 |
<td>
|
31 |
<code><?php echo esc_html( $redis_client ); ?></code>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
</td>
|
33 |
</tr>
|
34 |
<?php endif; ?>
|
37 |
<th><?php esc_html_e( 'Drop-in:', 'redis-cache' ); ?></th>
|
38 |
<td>
|
39 |
<code>
|
40 |
+
<?php if ( ! $plugin->object_cache_dropin_exists() ) : ?>
|
41 |
+
<?php esc_html_e( 'Not installed', 'redis-cache' ); ?>
|
42 |
+
<?php elseif ( $plugin->object_cache_dropin_outdated() ) : ?>
|
43 |
<?php esc_html_e( 'Outdated', 'redis-cache' ); ?>
|
44 |
<?php else : ?>
|
45 |
+
<?php $plugin->validate_object_cache_dropin()
|
46 |
? esc_html_e( 'Valid', 'redis-cache' )
|
47 |
: esc_html_e( 'Invalid', 'redis-cache' );
|
48 |
?>
|
94 |
|
95 |
<tr>
|
96 |
<th><?php esc_html_e( 'Status:', 'redis-cache' ); ?></th>
|
97 |
+
<td><code><?php echo esc_html( $plugin->get_status() ); ?></code></td>
|
98 |
</tr>
|
99 |
|
100 |
<?php if ( ! empty( $diagnostics['host'] ) ) : ?>
|
235 |
|
236 |
<p class="submit">
|
237 |
|
238 |
+
<?php if ( $plugin->get_redis_status() ) : ?>
|
239 |
+
<a href="<?php echo esc_attr( $plugin->action_link( 'flush-cache' ) ); ?>" class="button button-primary button-large">
|
240 |
+
<?php esc_html_e( 'Flush Cache', 'redis-cache' ); ?>
|
241 |
+
</a>
|
242 |
<?php endif; ?>
|
243 |
|
244 |
+
<?php if ( $plugin->validate_object_cache_dropin() ) : ?>
|
245 |
+
<a href="<?php echo esc_attr( $plugin->action_link( 'disable-cache' ) ); ?>" class="button button-secondary button-large">
|
246 |
+
<?php esc_html_e( 'Disable Object Cache', 'redis-cache' ); ?>
|
247 |
+
</a>
|
248 |
<?php else : ?>
|
249 |
+
<a href="<?php echo esc_attr( $plugin->action_link( 'enable-cache' ) ); ?>" class="button button-primary button-large">
|
250 |
+
<?php esc_html_e( 'Enable Object Cache', 'redis-cache' ); ?>
|
251 |
+
</a>
|
252 |
<?php endif; ?>
|
253 |
|
254 |
</p>
|
languages/redis-cache.pot
CHANGED
@@ -2,21 +2,21 @@
|
|
2 |
# This file is distributed under the GPLv3.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Redis Object Cache 2.0.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/redis-cache\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2020-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: redis-cache\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
18 |
-
#: includes/class-plugin.php:
|
19 |
-
#: includes/class-plugin.php:
|
20 |
#: includes/ui/settings.php:18
|
21 |
msgid "Redis Object Cache"
|
22 |
msgstr ""
|
@@ -34,184 +34,184 @@ msgid "Till Krüss"
|
|
34 |
msgstr ""
|
35 |
|
36 |
#. Author URI of the plugin
|
37 |
-
msgid "https://
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: includes/class-plugin.php:
|
41 |
msgid "Redis"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: includes/class-plugin.php:
|
45 |
-
msgid "Flush Object Cache"
|
46 |
-
msgstr ""
|
47 |
-
|
48 |
-
#: includes/class-plugin.php:132
|
49 |
-
msgid "Flush the Redis object cache"
|
50 |
-
msgstr ""
|
51 |
-
|
52 |
-
#: includes/class-plugin.php:158
|
53 |
#: includes/ui/tabs/overview.php:22
|
54 |
msgid "Overview"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: includes/class-plugin.php:
|
58 |
msgid "Metrics"
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: includes/class-plugin.php:
|
62 |
msgid "Diagnostics"
|
63 |
msgstr ""
|
64 |
|
65 |
-
#: includes/class-plugin.php:
|
66 |
msgid "Settings"
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: includes/class-plugin.php:
|
70 |
#: includes/ui/tabs/metrics.php:17
|
71 |
#: includes/ui/widget.php:16
|
72 |
msgid "Time"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/class-plugin.php:
|
76 |
#: includes/ui/tabs/metrics.php:22
|
77 |
#: includes/ui/widget.php:21
|
78 |
msgid "Bytes"
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: includes/class-plugin.php:
|
82 |
#: includes/ui/tabs/metrics.php:27
|
83 |
#: includes/ui/widget.php:26
|
84 |
msgid "Ratio"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/class-plugin.php:
|
88 |
#: includes/ui/tabs/metrics.php:32
|
89 |
#: includes/ui/widget.php:31
|
90 |
msgid "Calls"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: includes/class-plugin.php:
|
94 |
msgid "Not enough data collected, yet."
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: includes/class-plugin.php:
|
98 |
msgid "Enable object cache to collect data."
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: includes/class-plugin.php:
|
102 |
#: includes/class-qm-collector.php:48
|
103 |
msgid "Disabled"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: includes/class-plugin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
msgid "Connected"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: includes/class-plugin.php:
|
111 |
-
msgid "Not
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: includes/class-plugin.php:
|
115 |
-
#: includes/ui/tabs/overview.php:
|
116 |
msgid "Unknown"
|
117 |
msgstr ""
|
118 |
|
119 |
#. translators: %s = Action link to update the drop-in
|
120 |
-
#: includes/class-plugin.php:
|
121 |
msgid "The Redis object cache drop-in is outdated. Please <a href=\"%s\">update the drop-in</a>."
|
122 |
msgstr ""
|
123 |
|
124 |
#. translators: %s = Action link to update the drop-in
|
125 |
-
#: includes/class-plugin.php:
|
126 |
msgid "A foreign object cache drop-in was found. To use Redis for object caching, please <a href=\"%s\">enable the drop-in</a>."
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: includes/class-plugin.php:
|
130 |
msgid "Object cache flushed."
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: includes/class-plugin.php:
|
134 |
msgid "Object cache could not be flushed."
|
135 |
msgstr ""
|
136 |
|
137 |
-
#: includes/class-plugin.php:
|
138 |
#: includes/cli/class-commands.php:74
|
139 |
msgid "Object cache enabled."
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: includes/class-plugin.php:
|
143 |
#: includes/cli/class-commands.php:76
|
144 |
msgid "Object cache could not be enabled."
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/class-plugin.php:
|
148 |
#: includes/cli/class-commands.php:113
|
149 |
msgid "Object cache disabled."
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: includes/class-plugin.php:
|
153 |
#: includes/cli/class-commands.php:115
|
154 |
msgid "Object cache could not be disabled."
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: includes/class-plugin.php:
|
158 |
#: includes/cli/class-commands.php:147
|
159 |
msgid "Updated object cache drop-in and enabled Redis object cache."
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: includes/class-plugin.php:
|
163 |
#: includes/cli/class-commands.php:149
|
164 |
msgid "Object cache drop-in could not be updated."
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: includes/class-plugin.php:
|
168 |
-
msgid "
|
169 |
msgstr ""
|
170 |
|
171 |
#. translators: %s = Link to the plugin setting screen
|
172 |
-
#: includes/class-plugin.php:
|
173 |
msgid "A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href=\"%s\">Learn more »</a>"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: includes/class-plugin.php:
|
177 |
-
msgid "
|
178 |
msgstr ""
|
179 |
|
180 |
#. translators: %s = Link to the plugin's settings screen
|
181 |
-
#: includes/class-plugin.php:
|
182 |
-
msgid "
|
183 |
msgstr ""
|
184 |
|
185 |
#. translators: %1$d = number of objects. %2$s = human-readable size of cache. %3$s = name of the used client.
|
186 |
-
#: includes/class-plugin.php:
|
187 |
msgid "Retrieved %1$d objects (%2$s) from Redis using %3$s."
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: includes/class-plugin.php:
|
191 |
msgid "Could not initialize filesystem."
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: includes/class-plugin.php:
|
195 |
msgid "Object cache file doesn’t exist."
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: includes/class-plugin.php:
|
199 |
msgid "Test file exists, but couldn’t be deleted."
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: includes/class-plugin.php:
|
203 |
msgid "Failed to copy test file."
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: includes/class-plugin.php:
|
207 |
msgid "Copied test file doesn’t exist."
|
208 |
msgstr ""
|
209 |
|
210 |
-
#: includes/class-plugin.php:
|
211 |
msgid "Couldn’t verify test file contents."
|
212 |
msgstr ""
|
213 |
|
214 |
-
#: includes/class-plugin.php:
|
215 |
msgid "Copied test file couldn’t be deleted."
|
216 |
msgstr ""
|
217 |
|
@@ -220,7 +220,7 @@ msgid "Object Cache"
|
|
220 |
msgstr ""
|
221 |
|
222 |
#: includes/class-qm-collector.php:48
|
223 |
-
#: includes/ui/tabs/overview.php:
|
224 |
msgid "Yes"
|
225 |
msgstr ""
|
226 |
|
@@ -285,176 +285,152 @@ msgstr ""
|
|
285 |
msgid "Metadata"
|
286 |
msgstr ""
|
287 |
|
288 |
-
|
289 |
-
|
|
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: includes/ui/settings.php:
|
293 |
-
msgid "
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: includes/ui/settings.php:
|
297 |
msgid "Your site meets the system requirements for the Pro version."
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: includes/ui/settings.php:
|
301 |
msgid "Your site <i>does not</i> meet the requirements for the Pro version:"
|
302 |
msgstr ""
|
303 |
|
304 |
#. translators: %s = PHP Version.
|
305 |
-
#: includes/ui/settings.php:
|
306 |
msgid "The current version of PHP (%s) is too old. PHP 7.0 or newer is required."
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/ui/settings.php:
|
310 |
msgid "The PhpRedis extension is not installed."
|
311 |
msgstr ""
|
312 |
|
313 |
#. translators: %s = Version of the PhpRedis extension.
|
314 |
-
#: includes/ui/settings.php:
|
315 |
msgid "The current version of the PhpRedis extension (%s) is too old. PhpRedis 3.1.1 or newer is required."
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: includes/ui/settings.php:140
|
319 |
-
msgid "Support & Updates"
|
320 |
-
msgstr ""
|
321 |
-
|
322 |
-
#: includes/ui/settings.php:154
|
323 |
-
msgid "Documentation"
|
324 |
-
msgstr ""
|
325 |
-
|
326 |
-
#: includes/ui/settings.php:160
|
327 |
-
msgid "Support"
|
328 |
-
msgstr ""
|
329 |
-
|
330 |
#: includes/ui/tabs/overview.php:29
|
331 |
msgid "Client:"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/ui/tabs/overview.php:
|
335 |
-
msgid "The Predis library is no longer maintained."
|
336 |
-
msgstr ""
|
337 |
-
|
338 |
-
#: includes/ui/tabs/overview.php:38
|
339 |
-
msgid "The Predis library is not reliable on PHP 7.2 and newer."
|
340 |
-
msgstr ""
|
341 |
-
|
342 |
-
#. translators: %s = Link to the help article
|
343 |
-
#: includes/ui/tabs/overview.php:44
|
344 |
-
msgid "Learn more about <a href=\"%s\" target=\"_blank\">migrating to Credis or PhpRedis</a> to avoid compatiblity issues in the future."
|
345 |
-
msgstr ""
|
346 |
-
|
347 |
-
#: includes/ui/tabs/overview.php:55
|
348 |
msgid "Drop-in:"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: includes/ui/tabs/overview.php:
|
352 |
-
msgid "
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: includes/ui/tabs/overview.php:
|
356 |
msgid "Outdated"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: includes/ui/tabs/overview.php:
|
360 |
msgid "Valid"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: includes/ui/tabs/overview.php:
|
364 |
msgid "Invalid"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: includes/ui/tabs/overview.php:
|
368 |
msgid "Disabled:"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: includes/ui/tabs/overview.php:
|
372 |
msgid "Key Prefix:"
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: includes/ui/tabs/overview.php:
|
376 |
msgid "Max. TTL:"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/ui/tabs/overview.php:
|
380 |
msgid "This doesn’t appear to be a valid number."
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: includes/ui/tabs/overview.php:
|
384 |
msgid "Connection"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: includes/ui/tabs/overview.php:
|
388 |
msgid "Status:"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: includes/ui/tabs/overview.php:
|
392 |
msgid "Host:"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: includes/ui/tabs/overview.php:
|
396 |
msgid "Cluster:"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: includes/ui/tabs/overview.php:
|
400 |
msgid "Shards:"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: includes/ui/tabs/overview.php:
|
404 |
msgid "Servers:"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: includes/ui/tabs/overview.php:
|
408 |
msgid "Port:"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: includes/ui/tabs/overview.php:
|
412 |
msgid "Username:"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: includes/ui/tabs/overview.php:
|
416 |
msgid "Password:"
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: includes/ui/tabs/overview.php:
|
420 |
msgid "Database:"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: includes/ui/tabs/overview.php:
|
424 |
msgid "Connection Timeout:"
|
425 |
msgstr ""
|
426 |
|
427 |
#. translators: %s = Redis connection/read timeout in seconds.
|
428 |
-
#: includes/ui/tabs/overview.php:
|
429 |
-
#: includes/ui/tabs/overview.php:
|
430 |
msgid "%ss"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: includes/ui/tabs/overview.php:
|
434 |
msgid "Read Timeout:"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: includes/ui/tabs/overview.php:
|
438 |
msgid "Retry Interval:"
|
439 |
msgstr ""
|
440 |
|
441 |
#. translators: %s = Redis retry interval in milliseconds.
|
442 |
-
#: includes/ui/tabs/overview.php:
|
443 |
msgid "%sms"
|
444 |
msgstr ""
|
445 |
|
446 |
-
#: includes/ui/tabs/overview.php:
|
447 |
msgid "Redis Version:"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: includes/ui/tabs/overview.php:
|
451 |
msgid "Flush Cache"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: includes/ui/tabs/overview.php:
|
455 |
msgid "Disable Object Cache"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: includes/ui/tabs/overview.php:
|
459 |
msgid "Enable Object Cache"
|
460 |
msgstr ""
|
2 |
# This file is distributed under the GPLv3.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Redis Object Cache 2.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/redis-cache\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2020-08-12T20:22:36+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: redis-cache\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
18 |
+
#: includes/class-plugin.php:104
|
19 |
+
#: includes/class-plugin.php:161
|
20 |
#: includes/ui/settings.php:18
|
21 |
msgid "Redis Object Cache"
|
22 |
msgstr ""
|
34 |
msgstr ""
|
35 |
|
36 |
#. Author URI of the plugin
|
37 |
+
msgid "https://objectcache.pro"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: includes/class-plugin.php:105
|
41 |
msgid "Redis"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: includes/class-plugin.php:135
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
#: includes/ui/tabs/overview.php:22
|
46 |
msgid "Overview"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: includes/class-plugin.php:141
|
50 |
msgid "Metrics"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: includes/class-plugin.php:147
|
54 |
msgid "Diagnostics"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: includes/class-plugin.php:173
|
58 |
msgid "Settings"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: includes/class-plugin.php:233
|
62 |
#: includes/ui/tabs/metrics.php:17
|
63 |
#: includes/ui/widget.php:16
|
64 |
msgid "Time"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: includes/class-plugin.php:234
|
68 |
#: includes/ui/tabs/metrics.php:22
|
69 |
#: includes/ui/widget.php:21
|
70 |
msgid "Bytes"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: includes/class-plugin.php:235
|
74 |
#: includes/ui/tabs/metrics.php:27
|
75 |
#: includes/ui/widget.php:26
|
76 |
msgid "Ratio"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/class-plugin.php:236
|
80 |
#: includes/ui/tabs/metrics.php:32
|
81 |
#: includes/ui/widget.php:31
|
82 |
msgid "Calls"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: includes/class-plugin.php:237
|
86 |
msgid "Not enough data collected, yet."
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: includes/class-plugin.php:238
|
90 |
msgid "Enable object cache to collect data."
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: includes/class-plugin.php:340
|
94 |
#: includes/class-qm-collector.php:48
|
95 |
msgid "Disabled"
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: includes/class-plugin.php:344
|
99 |
+
msgid "Drop-in not installed"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: includes/class-plugin.php:348
|
103 |
+
msgid "Drop-in is invalid"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: includes/class-plugin.php:353
|
107 |
msgid "Connected"
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: includes/class-plugin.php:354
|
111 |
+
msgid "Not connected"
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: includes/class-plugin.php:357
|
115 |
+
#: includes/ui/tabs/overview.php:230
|
116 |
msgid "Unknown"
|
117 |
msgstr ""
|
118 |
|
119 |
#. translators: %s = Action link to update the drop-in
|
120 |
+
#: includes/class-plugin.php:440
|
121 |
msgid "The Redis object cache drop-in is outdated. Please <a href=\"%s\">update the drop-in</a>."
|
122 |
msgstr ""
|
123 |
|
124 |
#. translators: %s = Action link to update the drop-in
|
125 |
+
#: includes/class-plugin.php:444
|
126 |
msgid "A foreign object cache drop-in was found. To use Redis for object caching, please <a href=\"%s\">enable the drop-in</a>."
|
127 |
msgstr ""
|
128 |
|
129 |
+
#: includes/class-plugin.php:474
|
130 |
msgid "Object cache flushed."
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: includes/class-plugin.php:480
|
134 |
msgid "Object cache could not be flushed."
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: includes/class-plugin.php:502
|
138 |
#: includes/cli/class-commands.php:74
|
139 |
msgid "Object cache enabled."
|
140 |
msgstr ""
|
141 |
|
142 |
+
#: includes/class-plugin.php:508
|
143 |
#: includes/cli/class-commands.php:76
|
144 |
msgid "Object cache could not be enabled."
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/class-plugin.php:521
|
148 |
#: includes/cli/class-commands.php:113
|
149 |
msgid "Object cache disabled."
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: includes/class-plugin.php:526
|
153 |
#: includes/cli/class-commands.php:115
|
154 |
msgid "Object cache could not be disabled."
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: includes/class-plugin.php:545
|
158 |
#: includes/cli/class-commands.php:147
|
159 |
msgid "Updated object cache drop-in and enabled Redis object cache."
|
160 |
msgstr ""
|
161 |
|
162 |
+
#: includes/class-plugin.php:551
|
163 |
#: includes/cli/class-commands.php:149
|
164 |
msgid "Object cache drop-in could not be updated."
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: includes/class-plugin.php:604
|
168 |
+
msgid "Object Cache Pro is out!"
|
169 |
msgstr ""
|
170 |
|
171 |
#. translators: %s = Link to the plugin setting screen
|
172 |
+
#: includes/class-plugin.php:607
|
173 |
msgid "A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href=\"%s\">Learn more »</a>"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: includes/class-plugin.php:638
|
177 |
+
msgid "Object Cache Pro + WooCommerce = ❤️"
|
178 |
msgstr ""
|
179 |
|
180 |
#. translators: %s = Link to the plugin's settings screen
|
181 |
+
#: includes/class-plugin.php:641
|
182 |
+
msgid "Object Cache Pro is a <u>business class</u> object cache that’s highly-optimized for WooCommerce to provide true reliability, peace of mind and faster load times for your store. <a style=\"color: #bb77ae;\" href=\"%s\">Learn more »</a>"
|
183 |
msgstr ""
|
184 |
|
185 |
#. translators: %1$d = number of objects. %2$s = human-readable size of cache. %3$s = name of the used client.
|
186 |
+
#: includes/class-plugin.php:759
|
187 |
msgid "Retrieved %1$d objects (%2$s) from Redis using %3$s."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: includes/class-plugin.php:799
|
191 |
msgid "Could not initialize filesystem."
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: includes/class-plugin.php:806
|
195 |
msgid "Object cache file doesn’t exist."
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: includes/class-plugin.php:811
|
199 |
msgid "Test file exists, but couldn’t be deleted."
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: includes/class-plugin.php:816
|
203 |
msgid "Failed to copy test file."
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/class-plugin.php:820
|
207 |
msgid "Copied test file doesn’t exist."
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: includes/class-plugin.php:826
|
211 |
msgid "Couldn’t verify test file contents."
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: includes/class-plugin.php:830
|
215 |
msgid "Copied test file couldn’t be deleted."
|
216 |
msgstr ""
|
217 |
|
220 |
msgstr ""
|
221 |
|
222 |
#: includes/class-qm-collector.php:48
|
223 |
+
#: includes/ui/tabs/overview.php:58
|
224 |
msgid "Yes"
|
225 |
msgstr ""
|
226 |
|
285 |
msgid "Metadata"
|
286 |
msgstr ""
|
287 |
|
288 |
+
#. translators: %s = Tab label
|
289 |
+
#: includes/ui/settings.php:35
|
290 |
+
msgid "%s are disabled for this site."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: includes/ui/settings.php:74
|
294 |
+
msgid "Resources"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: includes/ui/settings.php:112
|
298 |
msgid "Your site meets the system requirements for the Pro version."
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: includes/ui/settings.php:119
|
302 |
msgid "Your site <i>does not</i> meet the requirements for the Pro version:"
|
303 |
msgstr ""
|
304 |
|
305 |
#. translators: %s = PHP Version.
|
306 |
+
#: includes/ui/settings.php:128
|
307 |
msgid "The current version of PHP (%s) is too old. PHP 7.0 or newer is required."
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: includes/ui/settings.php:137
|
311 |
msgid "The PhpRedis extension is not installed."
|
312 |
msgstr ""
|
313 |
|
314 |
#. translators: %s = Version of the PhpRedis extension.
|
315 |
+
#: includes/ui/settings.php:144
|
316 |
msgid "The current version of the PhpRedis extension (%s) is too old. PhpRedis 3.1.1 or newer is required."
|
317 |
msgstr ""
|
318 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
319 |
#: includes/ui/tabs/overview.php:29
|
320 |
msgid "Client:"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: includes/ui/tabs/overview.php:37
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
msgid "Drop-in:"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: includes/ui/tabs/overview.php:41
|
328 |
+
msgid "Not installed"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: includes/ui/tabs/overview.php:43
|
332 |
msgid "Outdated"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: includes/ui/tabs/overview.php:46
|
336 |
msgid "Valid"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: includes/ui/tabs/overview.php:47
|
340 |
msgid "Invalid"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: includes/ui/tabs/overview.php:56
|
344 |
msgid "Disabled:"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: includes/ui/tabs/overview.php:65
|
348 |
msgid "Key Prefix:"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: includes/ui/tabs/overview.php:74
|
352 |
msgid "Max. TTL:"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: includes/ui/tabs/overview.php:80
|
356 |
msgid "This doesn’t appear to be a valid number."
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: includes/ui/tabs/overview.php:90
|
360 |
msgid "Connection"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: includes/ui/tabs/overview.php:96
|
364 |
msgid "Status:"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: includes/ui/tabs/overview.php:102
|
368 |
msgid "Host:"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: includes/ui/tabs/overview.php:109
|
372 |
msgid "Cluster:"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/ui/tabs/overview.php:122
|
376 |
msgid "Shards:"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/ui/tabs/overview.php:135
|
380 |
msgid "Servers:"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/ui/tabs/overview.php:148
|
384 |
msgid "Port:"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: includes/ui/tabs/overview.php:155
|
388 |
msgid "Username:"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: includes/ui/tabs/overview.php:162
|
392 |
msgid "Password:"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: includes/ui/tabs/overview.php:171
|
396 |
msgid "Database:"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/ui/tabs/overview.php:178
|
400 |
msgid "Connection Timeout:"
|
401 |
msgstr ""
|
402 |
|
403 |
#. translators: %s = Redis connection/read timeout in seconds.
|
404 |
+
#: includes/ui/tabs/overview.php:184
|
405 |
+
#: includes/ui/tabs/overview.php:201
|
406 |
msgid "%ss"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/ui/tabs/overview.php:195
|
410 |
msgid "Read Timeout:"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/ui/tabs/overview.php:212
|
414 |
msgid "Retry Interval:"
|
415 |
msgstr ""
|
416 |
|
417 |
#. translators: %s = Redis retry interval in milliseconds.
|
418 |
+
#: includes/ui/tabs/overview.php:218
|
419 |
msgid "%sms"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: includes/ui/tabs/overview.php:229
|
423 |
msgid "Redis Version:"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: includes/ui/tabs/overview.php:240
|
427 |
msgid "Flush Cache"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: includes/ui/tabs/overview.php:246
|
431 |
msgid "Disable Object Cache"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/ui/tabs/overview.php:250
|
435 |
msgid "Enable Object Cache"
|
436 |
msgstr ""
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: redis, predis, phpredis, credis, hhvm, pecl, caching, cache, object cache,
|
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 5.5
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 2.0.
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
@@ -18,7 +18,7 @@ A persistent object cache backend powered by Redis. Supports [Predis](https://gi
|
|
18 |
|
19 |
To adjust the connection parameters, prefix cache keys or configure replication/clustering, please see [Other Notes](http://wordpress.org/extend/plugins/redis-cache/other_notes/).
|
20 |
|
21 |
-
=
|
22 |
|
23 |
A **business class** Redis object cache backend. Truly reliable, highly optimized, fully customizable and with a dedicated engineer when you most need it.
|
24 |
|
@@ -32,7 +32,7 @@ A **business class** Redis object cache backend. Truly reliable, highly optimize
|
|
32 |
* Health checks via WordPress & WP CLI
|
33 |
* Optimized for WooCommerce, Jetpack & Yoast SEO
|
34 |
|
35 |
-
Learn more about [
|
36 |
|
37 |
|
38 |
== Installation ==
|
@@ -83,6 +83,15 @@ To see a list of all available WP-CLI commands, please see the [WP CLI commands
|
|
83 |
|
84 |
== Changelog ==
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
= 2.0.8 =
|
87 |
|
88 |
- Fixed tabs not working in 2.0.6 and 2.0.7 due to WP.org SVN issue
|
@@ -242,7 +251,7 @@ Please flush the object cache after updating the drop to v1.5.5 to avoid dead ke
|
|
242 |
= 1.5.1 =
|
243 |
|
244 |
This plugin turned 5 years today (Nov 14th) and its only fitting to release the business edition today as well.
|
245 |
-
[
|
246 |
|
247 |
* Added execution times to actions
|
248 |
* Added `WP_REDIS_VERSION` constant
|
@@ -426,6 +435,6 @@ Since Predis isn't maintained any longer, it's highly recommended to switch over
|
|
426 |
|
427 |
== Upgrade Notice ==
|
428 |
|
429 |
-
= 2.0.
|
430 |
|
431 |
Version 2.0 is a significant rewrite of the plugin. Please read the v2.0.0 release notes.
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 5.5
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 2.0.9
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
18 |
|
19 |
To adjust the connection parameters, prefix cache keys or configure replication/clustering, please see [Other Notes](http://wordpress.org/extend/plugins/redis-cache/other_notes/).
|
20 |
|
21 |
+
= Object Cache Pro =
|
22 |
|
23 |
A **business class** Redis object cache backend. Truly reliable, highly optimized, fully customizable and with a dedicated engineer when you most need it.
|
24 |
|
32 |
* Health checks via WordPress & WP CLI
|
33 |
* Optimized for WooCommerce, Jetpack & Yoast SEO
|
34 |
|
35 |
+
Learn more about [Object Cache Pro](https://objectcache.pro/?utm_source=wp-plugin&utm_medium=readme).
|
36 |
|
37 |
|
38 |
== Installation ==
|
83 |
|
84 |
== Changelog ==
|
85 |
|
86 |
+
= 2.0.9 =
|
87 |
+
|
88 |
+
- Highlight current metric type using color
|
89 |
+
- Show "Metrics" tab when metrics are disabled
|
90 |
+
- Refactored connection and Redis status logic
|
91 |
+
- Updated Predis to v1.1.2
|
92 |
+
- Remove Predis deprecation notice
|
93 |
+
- Fixed fetching derived keys in `wp_cache_get_multiple()`
|
94 |
+
|
95 |
= 2.0.8 =
|
96 |
|
97 |
- Fixed tabs not working in 2.0.6 and 2.0.7 due to WP.org SVN issue
|
251 |
= 1.5.1 =
|
252 |
|
253 |
This plugin turned 5 years today (Nov 14th) and its only fitting to release the business edition today as well.
|
254 |
+
[Object Cache Pro](https://objectcache.pro/) is a truly reliable, highly optimized and easy to debug rewrite of this plugin for SMBs.
|
255 |
|
256 |
* Added execution times to actions
|
257 |
* Added `WP_REDIS_VERSION` constant
|
435 |
|
436 |
== Upgrade Notice ==
|
437 |
|
438 |
+
= 2.0.9 =
|
439 |
|
440 |
Version 2.0 is a significant rewrite of the plugin. Please read the v2.0.0 release notes.
|
redis-cache.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
* Plugin Name: Redis Object Cache
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Credis, HHVM, replication, clustering and WP-CLI.
|
6 |
-
* Version: 2.0.
|
7 |
* Text Domain: redis-cache
|
8 |
* Domain Path: /languages
|
9 |
* Network: true
|
10 |
* Requires PHP: 5.6
|
11 |
* Author: Till Krüss
|
12 |
-
* Author URI: https://
|
13 |
* GitHub Plugin URI: https://github.com/rhubarbgroup/redis-cache
|
14 |
* License: GPLv3
|
15 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
3 |
* Plugin Name: Redis Object Cache
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Credis, HHVM, replication, clustering and WP-CLI.
|
6 |
+
* Version: 2.0.9
|
7 |
* Text Domain: redis-cache
|
8 |
* Domain Path: /languages
|
9 |
* Network: true
|
10 |
* Requires PHP: 5.6
|
11 |
* Author: Till Krüss
|
12 |
+
* Author URI: https://objectcache.pro
|
13 |
* GitHub Plugin URI: https://github.com/rhubarbgroup/redis-cache
|
14 |
* License: GPLv3
|
15 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|