Changes of Revision 44
roundcubemail.spec
Changed
x
1
2
%global basedir %{name}-%{rc_version}%{?dash_rel_suffix}
3
4
Name: roundcubemail
5
-Version: 1.5.6.2
6
+Version: 1.5.6.3
7
8
Release: 4%{?dot_rel_suffix}%{?dist}
9
10
debian.changelog
Changed
7
1
2
-roundcubemail (1.5.6.2-1~kolab1) unstable; urgency=low
3
+roundcubemail (1.5.6.3-1~kolab1) unstable; urgency=low
4
5
* New tarball
6
7
roundcubemail-1.5.tar.gz/CHANGELOG.md
Changed
12
1
2
3
## Unreleased
4
5
+- Enigma: Fix finding of a private key when decrypting a message using GnuPG v2.3
6
+
7
+## Release 1.5.6
8
+
9
- Fix cross-site scripting (XSS) vulnerability in setting Content-Type/Content-Disposition for attachment preview/download
10
11
## Release 1.5.5
12
roundcubemail-1.5.tar.gz/composer.lock
Changed
188
1
2
},
3
{
4
"name": "ezyang/htmlpurifier",
5
- "version": "v4.16.0",
6
+ "version": "v4.17.0",
7
"source": {
8
"type": "git",
9
"url": "https://github.com/ezyang/htmlpurifier.git",
10
- "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8"
11
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c"
12
},
13
"dist": {
14
"type": "zip",
15
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8",
16
- "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8",
17
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c",
18
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c",
19
"shasum": ""
20
},
21
"require": {
22
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0"
23
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
24
},
25
"require-dev": {
26
"cerdic/css-tidy": "^1.7 || ^2.0",
27
28
,
29
"support": {
30
"issues": "https://github.com/ezyang/htmlpurifier/issues",
31
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0"
32
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0"
33
},
34
- "time": "2022-09-18T07:06:19+00:00"
35
+ "time": "2023-11-17T15:01:25+00:00"
36
},
37
{
38
"name": "guzzlehttp/guzzle",
39
40
},
41
{
42
"name": "pear/crypt_gpg",
43
- "version": "v1.6.7",
44
+ "version": "v1.6.8",
45
"source": {
46
"type": "git",
47
"url": "https://github.com/pear/Crypt_GPG.git",
48
- "reference": "29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e"
49
+ "reference": "89c661fbd7027f7745c25efd4053552972278bc1"
50
},
51
"dist": {
52
"type": "zip",
53
- "url": "https://api.github.com/repos/pear/Crypt_GPG/zipball/29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e",
54
- "reference": "29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e",
55
+ "url": "https://api.github.com/repos/pear/Crypt_GPG/zipball/89c661fbd7027f7745c25efd4053552972278bc1",
56
+ "reference": "89c661fbd7027f7745c25efd4053552972278bc1",
57
"shasum": ""
58
},
59
"require": {
60
61
"issues": "https://pear.php.net/bugs/search.php?cmd=display&package_name=Crypt_GPG",
62
"source": "https://github.com/pear/Crypt_GPG"
63
},
64
- "time": "2022-02-16T17:39:00+00:00"
65
+ "time": "2023-11-23T09:15:05+00:00"
66
},
67
{
68
"name": "pear/http_request2",
69
70
},
71
{
72
"name": "sabre/dav",
73
- "version": "4.4.0",
74
+ "version": "4.5.1",
75
"source": {
76
"type": "git",
77
"url": "https://github.com/sabre-io/dav.git",
78
- "reference": "b65362abc926520eda2c57e219f022a6c288069d"
79
+ "reference": "b29899b675371aee73920165d1dc5a2235aa104b"
80
},
81
"dist": {
82
"type": "zip",
83
- "url": "https://api.github.com/repos/sabre-io/dav/zipball/b65362abc926520eda2c57e219f022a6c288069d",
84
- "reference": "b65362abc926520eda2c57e219f022a6c288069d",
85
+ "url": "https://api.github.com/repos/sabre-io/dav/zipball/b29899b675371aee73920165d1dc5a2235aa104b",
86
+ "reference": "b29899b675371aee73920165d1dc5a2235aa104b",
87
"shasum": ""
88
},
89
"require": {
90
91
"sabre/xml": "^2.0.1"
92
},
93
"require-dev": {
94
- "evert/phpdoc-md": "~0.1.0",
95
- "friendsofphp/php-cs-fixer": "^2.17.1",
96
- "monolog/monolog": "^1.18",
97
- "phpstan/phpstan": "^0.12",
98
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
99
+ "friendsofphp/php-cs-fixer": "^2.19",
100
+ "monolog/monolog": "^1.27",
101
+ "phpstan/phpstan": "^0.12 || ^1.0",
102
+ "phpstan/phpstan-phpunit": "^1.0",
103
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
104
},
105
"suggest": {
106
"ext-curl": "*",
107
108
"type": "library",
109
"autoload": {
110
"psr-4": {
111
- "Sabre\\DAV\\": "lib/DAV/",
112
- "Sabre\\CalDAV\\": "lib/CalDAV/",
113
- "Sabre\\DAVACL\\": "lib/DAVACL/",
114
- "Sabre\\CardDAV\\": "lib/CardDAV/"
115
+ "Sabre\\": "lib/"
116
}
117
},
118
"notification-url": "https://packagist.org/downloads/",
119
120
"issues": "https://github.com/sabre-io/dav/issues",
121
"source": "https://github.com/fruux/sabre-dav"
122
},
123
- "time": "2022-06-27T09:07:55+00:00"
124
+ "time": "2023-11-23T04:33:31+00:00"
125
},
126
{
127
"name": "sabre/event",
128
129
},
130
{
131
"name": "sabre/vobject",
132
- "version": "4.5.3",
133
+ "version": "4.5.4",
134
"source": {
135
"type": "git",
136
"url": "https://github.com/sabre-io/vobject.git",
137
- "reference": "fe6d9183154ed6f2f913f2b568d3d51d8ae9b308"
138
+ "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772"
139
},
140
"dist": {
141
"type": "zip",
142
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/fe6d9183154ed6f2f913f2b568d3d51d8ae9b308",
143
- "reference": "fe6d9183154ed6f2f913f2b568d3d51d8ae9b308",
144
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
145
+ "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
146
"shasum": ""
147
},
148
"require": {
149
150
"issues": "https://github.com/sabre-io/vobject/issues",
151
"source": "https://github.com/fruux/sabre-vobject"
152
},
153
- "time": "2023-01-22T12:21:50+00:00"
154
+ "time": "2023-11-09T12:54:37+00:00"
155
},
156
{
157
"name": "sabre/xml",
158
159
},
160
{
161
"name": "phpstan/phpstan",
162
- "version": "1.10.41",
163
+ "version": "1.10.44",
164
"source": {
165
"type": "git",
166
"url": "https://github.com/phpstan/phpstan.git",
167
- "reference": "c6174523c2a69231df55bdc65b61655e72876d76"
168
+ "reference": "bf84367c53a23f759513985c54ffe0d0c249825b"
169
},
170
"dist": {
171
"type": "zip",
172
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6174523c2a69231df55bdc65b61655e72876d76",
173
- "reference": "c6174523c2a69231df55bdc65b61655e72876d76",
174
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bf84367c53a23f759513985c54ffe0d0c249825b",
175
+ "reference": "bf84367c53a23f759513985c54ffe0d0c249825b",
176
"shasum": ""
177
},
178
"require": {
179
180
"type": "tidelift"
181
}
182
,
183
- "time": "2023-11-05T12:57:57+00:00"
184
+ "time": "2023-11-21T16:30:46+00:00"
185
},
186
{
187
"name": "phpunit/php-code-coverage",
188
roundcubemail-1.5.tar.gz/plugins/enigma/lib/enigma_driver_gnupg.php
Changed
10
1
2
$list = $this->list_keys($keyid);
3
4
if (is_array($list)) {
5
- return $listkey($list);
6
+ return array_first($list);
7
}
8
9
// error
10
roundcubemail-1.5.tar.gz/plugins/enigma/lib/enigma_ui.php
Changed
50
1
2
*/
3
function password_prompt($status, $params = )
4
{
5
- $data = $status->getData('missing');
6
+ $data = array_merge($status->getData('missing') ?: , $status->getData('bad') ?: );
7
+
8
+ // A message can be encrypted with multiple private keys,
9
+ // find the one that exists in the keyring
10
+ foreach ($data as $keyid => $username) {
11
+ $key = $this->enigma->engine->get_key($keyid);
12
+ if ($key && $key->is_private()) {
13
+ if ($key->name && strpos($username, $keyid) !== false) {
14
+ $data$keyid = $key->name;
15
+ }
16
17
- if (empty($data)) {
18
- $data = $status->getData('bad');
19
+ break;
20
+ }
21
}
22
23
- $keyid = key($data);
24
$data =
25
- 'keyid' => !empty($params'keyid') ? $params'keyid' : $keyid,
26
+ 'keyid' => $keyid,
27
'user' => $data$keyid
28
;
29
30
- // With GnuPG 2.1 user name may not be specified (e.g. on private
31
- // key export), we'll get the key information and set the name appropriately
32
- if ($keyid && !empty($params'keyid') && strpos($data'user', $keyid) !== false) {
33
- $key = $this->enigma->engine->get_key($params'keyid');
34
- if ($key && $key->name) {
35
- $data'user' = $key->name;
36
- }
37
- }
38
-
39
if (!empty($params)) {
40
$data = array_merge($params, $data);
41
}
42
43
'action' => '?',
44
'iframe' => true,
45
'nolock' => true,
46
- 'keyid' => $keyid,
47
);
48
fclose($fp);
49
$this->rc->output->send('iframe');
50
roundcubemail-1.5.tar.gz/plugins/kolab_auth/kolab_auth.php
Changed
14
1
2
}
3
4
if (!empty($imap_attr) && !empty($record$imap_attr)) {
5
- $default_host = $rcmail->config->get('default_host');
6
- if (!empty($default_host)) {
7
- rcube::write_log("errors", "Both default host and kolab_auth_mailhost set. Incompatible.");
8
+ $imap_host = $rcmail->config->get('imap_host', $rcmail->config->get('default_host'));
9
+ if (!empty($imap_host)) {
10
+ rcube::write_log("errors", "Both imap host and kolab_auth_mailhost set. Incompatible.");
11
} else {
12
$args'host' = "tls://" . $record$imap_attr;
13
}
14
roundcubemail-1.5.tar.gz/plugins/kolab_config/kolab_config.php
Changed
38
1
2
public $task = 'utils|mail';
3
4
private $config;
5
+ private $loaded = false;
6
private $dicts = array();
7
8
const O_TYPE = 'dictionary';
9
10
* Load dictionary config objects from Kolab storage
11
*
12
* @param string The language (2 chars) to load
13
- * @param boolean Only load objects from default folder
14
+ * @param bool Only load objects from default folder
15
*
16
- * @return array Dictionary object as hash array
17
+ * @return array|null Dictionary object as hash array
18
*/
19
private function read_dictionary($lang, $default = false)
20
{
21
22
23
foreach ($this->config->get_objects($query, $default, null, 100) as $object) {
24
if ($object'language' == $lang || $object'language' == 'XX') {
25
- if (is_array($this->dicts$lang))
26
+ if (isset($this->dicts$lang) && is_array($this->dicts$lang))
27
$this->dicts$lang'e' = array_merge((array)$this->dicts$lang'e', $object'e');
28
else
29
$this->dicts$lang = $object;
30
31
}
32
}
33
34
- return $this->dicts$lang;
35
+ return $this->dicts$lang ?? null;
36
}
37
}
38
roundcubemail-1.5.tar.gz/plugins/libcalendaring/lib/libcalendaring_itip.php
Changed
19
1
2
}
3
}
4
else if ($method == 'CANCEL') {
5
- if ($event'recurrence') {
6
+ if (!empty($event'recurrence')) {
7
unset($event'recurrence''EXCEPTIONS');
8
}
9
}
10
11
}
12
$value = $existing$key instanceof DateTimeInterface ? $existing$key->format('c') : $existing$key;
13
$num++;
14
- $got += intval($value == $event$key);
15
+ $got += intval($value == ($event$key ?? null));
16
}
17
}
18
19
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/mysql.initial.sql
Changed
18
1
2
`resource` VARCHAR(255) BINARY NOT NULL,
3
`type` VARCHAR(32) NOT NULL,
4
`synclock` INT(10) NOT NULL DEFAULT '0',
5
- `ctag` VARCHAR(40) DEFAULT NULL,
6
+ `ctag` VARCHAR(128) DEFAULT NULL,
7
`changed` DATETIME DEFAULT NULL,
8
- `objectcount` BIGINT DEFAULT NULL,
9
PRIMARY KEY(`folder_id`),
10
INDEX `resource_type` (`resource`, `type`)
11
) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
12
13
14
SET FOREIGN_KEY_CHECKS=1;
15
16
-REPLACE INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2022122800');
17
+REPLACE INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2023111200');
18
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/mysql/2023111200.sql
Added
4
1
2
+ALTER TABLE `kolab_folders` MODIFY `ctag` varchar(128);
3
+ALTER TABLE `kolab_folders` DROP COLUMN `objectcount`;
4
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/postgres
Added
2
1
+(directory)
2
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/postgres.initial.sql
Changed
19
1
2
resource varchar(255) NOT NULL,
3
"type" varchar(32) NOT NULL,
4
synclock integer NOT NULL DEFAULT 0,
5
- ctag varchar(40) DEFAULT NULL,
6
- changed timestamp with time zone DEFAULT NULL,
7
- objectcount integer DEFAULT NULL
8
+ ctag varchar(128) DEFAULT NULL,
9
+ changed timestamp with time zone DEFAULT NULL
10
);
11
12
CREATE INDEX kolab_folders_resource_type_idx ON kolab_folders(resource, "type");
13
14
PRIMARY KEY(folder_id, uid)
15
);
16
17
-INSERT INTO "system" (name, "value") VALUES ('libkolab-version', '2022122800');
18
+INSERT INTO "system" (name, "value") VALUES ('libkolab-version', '2023111200');
19
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/postgres/2023111200.sql
Added
4
1
2
+ALTER TABLE kolab_folders ALTER COLUMN ctag TYPE varchar(128);
3
+ALTER TABLE kolab_folders DROP COLUMN objectcount;
4
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/sqlite.initial.sql
Changed
19
1
2
resource VARCHAR(255) NOT NULL,
3
type VARCHAR(32) NOT NULL,
4
synclock INTEGER NOT NULL DEFAULT '0',
5
- ctag VARCHAR(40) DEFAULT NULL,
6
- changed DATETIME DEFAULT NULL,
7
- objectcount INTEGER DEFAULT NULL
8
+ ctag VARCHAR(128) DEFAULT NULL,
9
+ changed DATETIME DEFAULT NULL
10
);
11
12
CREATE INDEX ix_resource_type ON kolab_folders(resource, type);
13
14
PRIMARY KEY(folder_id, uid)
15
);
16
17
-INSERT INTO system (name, value) VALUES ('libkolab-version', '2022122800');
18
+INSERT INTO system (name, value) VALUES ('libkolab-version', '2023111200');
19
roundcubemail-1.5.tar.gz/plugins/libkolab/SQL/sqlite/2023111200.sql
Added
21
1
2
+PRAGMA foreign_keys=OFF;
3
+
4
+ALTER TABLE kolab_folders RENAME TO kolab_folders_old;
5
+
6
+CREATE TABLE kolab_folders (
7
+ folder_id INTEGER NOT NULL PRIMARY KEY,
8
+ resource VARCHAR(255) NOT NULL,
9
+ type VARCHAR(32) NOT NULL,
10
+ synclock INTEGER NOT NULL DEFAULT '0',
11
+ ctag VARCHAR(128) DEFAULT NULL,
12
+ changed DATETIME DEFAULT NULL
13
+);
14
+
15
+INSERT INTO kolab_folders (folder_id, resource, type, synclock, ctag, changed)
16
+ SELECT folder_id, resource, type, synclock, ctag, changed FROM kolab_folders_old;
17
+
18
+CREATE INDEX ix_resource_type ON kolab_folders(resource, type);
19
+
20
+DROP TABLE kolab_folders_old;
21
roundcubemail-1.5.tar.gz/plugins/libkolab/bin/modcache.sh
Changed
10
1
2
{
3
global $rcmail;
4
5
- $default_host = $rcmail->config->get('default_host');
6
+ $default_host = $rcmail->config->get('imap_host', $rcmail->config->get('default_host'));
7
8
if (is_array($default_host)) {
9
$key = key($default_host);
10
roundcubemail-1.5.tar.gz/plugins/libkolab/bin/randomcontacts.sh
Changed
10
1
2
{
3
global $rcmail;
4
5
- $default_host = $rcmail->config->get('default_host');
6
+ $default_host = $rcmail->config->get('imap_host', $rcmail->config->get('default_host'));
7
8
if (is_array($default_host)) {
9
$key = key($default_host);
10
roundcubemail-1.5.tar.gz/plugins/libkolab/bin/readcache.sh
Changed
18
1
2
print "CTag = " . $folder_data'ctag' . "\n";
3
print "Lock = " . $folder_data'synclock' . "\n";
4
print "Changed = " . $folder_data'changed' . "\n";
5
-print "ObjCount = " . $folder_data'objectcount' . "\n";
6
print "Count = " . $sql_arr'cnt' . "\n";
7
print "----------------------------------------------------------------------------------\n";
8
print "<MSG>\t<UUID>\t<CHANGED>\t<DATA>\t";
9
10
{
11
global $rcmail;
12
13
- $default_host = $rcmail->config->get('default_host');
14
+ $default_host = $rcmail->config->get('imap_host', $rcmail->config->get('default_host'));
15
16
if (is_array($default_host)) {
17
$key = key($default_host);
18
roundcubemail-1.5.tar.gz/program/lib/Roundcube/rcube_imap_generic.php
Changed
10
1
2
// set connection identifier for debug output
3
$this->resourceid = strtoupper(substr(md5(microtime() . $host . $this->user), 0, 4));
4
5
- $_host = ($this->prefs'ssl_mode' == 'tls' ? 'tls://' : '') . $host . ':' . $this->prefs'port';
6
+ $_host = (isset($this->prefs'ssl_mode') && $this->prefs'ssl_mode' == 'tls' ? 'tls://' : '') . $host . ':' . $this->prefs'port';
7
$this->debug("Connecting to $_host...");
8
}
9
10
roundcubemail-1.5.tar.gz/temp/js_cache/tinymce-langs-5.8.2.zip
Changed
roundcubemail-1.5.tar.gz/vendor/autoload.php
Changed
7
1
2
3
require_once __DIR__ . '/composer/autoload_real.php';
4
5
-return ComposerAutoloaderInitb3b727c5dbe81f7952876c342ad47dfd::getLoader();
6
+return ComposerAutoloaderInit116707bd4b5148aeb78c8f2caad336cc::getLoader();
7
roundcubemail-1.5.tar.gz/vendor/composer/autoload_psr4.php
Changed
13
1
2
'Sabre\\Uri\\' => array($vendorDir . '/sabre/uri/lib'),
3
'Sabre\\HTTP\\' => array($vendorDir . '/sabre/http/lib'),
4
'Sabre\\Event\\' => array($vendorDir . '/sabre/event/lib'),
5
- 'Sabre\\DAV\\' => array($vendorDir . '/sabre/dav/lib/DAV'),
6
- 'Sabre\\DAVACL\\' => array($vendorDir . '/sabre/dav/lib/DAVACL'),
7
- 'Sabre\\CardDAV\\' => array($vendorDir . '/sabre/dav/lib/CardDAV'),
8
- 'Sabre\\CalDAV\\' => array($vendorDir . '/sabre/dav/lib/CalDAV'),
9
+ 'Sabre\\' => array($vendorDir . '/sabre/dav/lib'),
10
'RtfHtmlPhp\\' => array($vendorDir . '/roundcube/rtf-html-php/src'),
11
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
12
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
13
roundcubemail-1.5.tar.gz/vendor/composer/autoload_real.php
Changed
35
1
2
3
// autoload_real.php @generated by Composer
4
5
-class ComposerAutoloaderInitb3b727c5dbe81f7952876c342ad47dfd
6
+class ComposerAutoloaderInit116707bd4b5148aeb78c8f2caad336cc
7
{
8
private static $loader;
9
10
11
12
require __DIR__ . '/platform_check.php';
13
14
- spl_autoload_register(array('ComposerAutoloaderInitb3b727c5dbe81f7952876c342ad47dfd', 'loadClassLoader'), true, true);
15
+ spl_autoload_register(array('ComposerAutoloaderInit116707bd4b5148aeb78c8f2caad336cc', 'loadClassLoader'), true, true);
16
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
17
- spl_autoload_unregister(array('ComposerAutoloaderInitb3b727c5dbe81f7952876c342ad47dfd', 'loadClassLoader'));
18
+ spl_autoload_unregister(array('ComposerAutoloaderInit116707bd4b5148aeb78c8f2caad336cc', 'loadClassLoader'));
19
20
$includePaths = require __DIR__ . '/include_paths.php';
21
$includePaths = get_include_path();
22
set_include_path(implode(PATH_SEPARATOR, $includePaths));
23
24
require __DIR__ . '/autoload_static.php';
25
- call_user_func(\Composer\Autoload\ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::getInitializer($loader));
26
+ call_user_func(\Composer\Autoload\ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::getInitializer($loader));
27
28
$loader->register(true);
29
30
- $filesToLoad = \Composer\Autoload\ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$files;
31
+ $filesToLoad = \Composer\Autoload\ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$files;
32
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
33
if (empty($GLOBALS'__composer_autoload_files'$fileIdentifier)) {
34
$GLOBALS'__composer_autoload_files'$fileIdentifier = true;
35
roundcubemail-1.5.tar.gz/vendor/composer/autoload_static.php
Changed
63
1
2
3
namespace Composer\Autoload;
4
5
-class ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd
6
+class ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc
7
{
8
public static $files = array (
9
'383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php',
10
11
'Sabre\\Uri\\' => 10,
12
'Sabre\\HTTP\\' => 11,
13
'Sabre\\Event\\' => 12,
14
- 'Sabre\\DAV\\' => 10,
15
- 'Sabre\\DAVACL\\' => 13,
16
- 'Sabre\\CardDAV\\' => 14,
17
- 'Sabre\\CalDAV\\' => 13,
18
+ 'Sabre\\' => 6,
19
),
20
'R' =>
21
array (
22
23
array (
24
0 => __DIR__ . '/..' . '/sabre/event/lib',
25
),
26
- 'Sabre\\DAV\\' =>
27
+ 'Sabre\\' =>
28
array (
29
- 0 => __DIR__ . '/..' . '/sabre/dav/lib/DAV',
30
- ),
31
- 'Sabre\\DAVACL\\' =>
32
- array (
33
- 0 => __DIR__ . '/..' . '/sabre/dav/lib/DAVACL',
34
- ),
35
- 'Sabre\\CardDAV\\' =>
36
- array (
37
- 0 => __DIR__ . '/..' . '/sabre/dav/lib/CardDAV',
38
- ),
39
- 'Sabre\\CalDAV\\' =>
40
- array (
41
- 0 => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV',
42
+ 0 => __DIR__ . '/..' . '/sabre/dav/lib',
43
),
44
'RtfHtmlPhp\\' =>
45
array (
46
47
public static function getInitializer(ClassLoader $loader)
48
{
49
return \Closure::bind(function () use ($loader) {
50
- $loader->prefixLengthsPsr4 = ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$prefixLengthsPsr4;
51
- $loader->prefixDirsPsr4 = ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$prefixDirsPsr4;
52
- $loader->prefixesPsr0 = ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$prefixesPsr0;
53
- $loader->fallbackDirsPsr0 = ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$fallbackDirsPsr0;
54
- $loader->classMap = ComposerStaticInitb3b727c5dbe81f7952876c342ad47dfd::$classMap;
55
+ $loader->prefixLengthsPsr4 = ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$prefixLengthsPsr4;
56
+ $loader->prefixDirsPsr4 = ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$prefixDirsPsr4;
57
+ $loader->prefixesPsr0 = ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$prefixesPsr0;
58
+ $loader->fallbackDirsPsr0 = ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$fallbackDirsPsr0;
59
+ $loader->classMap = ComposerStaticInit116707bd4b5148aeb78c8f2caad336cc::$classMap;
60
61
}, null, ClassLoader::class);
62
}
63
roundcubemail-1.5.tar.gz/vendor/composer/include_paths.php
Changed
12
1
2
$vendorDir . '/pear/pear-core-minimal/src',
3
$vendorDir . '/pear/net_ldap2',
4
$vendorDir . '/pear/auth_sasl',
5
+ $vendorDir . '/pear/console_commandline',
6
$vendorDir . '/pear/crypt_gpg',
7
$vendorDir . '/pear/mail_mime',
8
$vendorDir . '/pear/net_socket',
9
- $vendorDir . '/pear/console_commandline',
10
$vendorDir . '/pear/net_smtp',
11
);
12
roundcubemail-1.5.tar.gz/vendor/composer/installed.json
Changed
203
1
2
},
3
{
4
"name": "ezyang/htmlpurifier",
5
- "version": "v4.16.0",
6
- "version_normalized": "4.16.0.0",
7
+ "version": "v4.17.0",
8
+ "version_normalized": "4.17.0.0",
9
"source": {
10
"type": "git",
11
"url": "https://github.com/ezyang/htmlpurifier.git",
12
- "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8"
13
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c"
14
},
15
"dist": {
16
"type": "zip",
17
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8",
18
- "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8",
19
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c",
20
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c",
21
"shasum": ""
22
},
23
"require": {
24
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0"
25
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
26
},
27
"require-dev": {
28
"cerdic/css-tidy": "^1.7 || ^2.0",
29
30
"ext-iconv": "Converts text to and from non-UTF-8 encodings",
31
"ext-tidy": "Used for pretty-printing HTML"
32
},
33
- "time": "2022-09-18T07:06:19+00:00",
34
+ "time": "2023-11-17T15:01:25+00:00",
35
"type": "library",
36
"installation-source": "dist",
37
"autoload": {
38
39
,
40
"support": {
41
"issues": "https://github.com/ezyang/htmlpurifier/issues",
42
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0"
43
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0"
44
},
45
"install-path": "../ezyang/htmlpurifier"
46
},
47
48
},
49
{
50
"name": "pear/crypt_gpg",
51
- "version": "v1.6.7",
52
- "version_normalized": "1.6.7.0",
53
+ "version": "v1.6.8",
54
+ "version_normalized": "1.6.8.0",
55
"source": {
56
"type": "git",
57
"url": "https://github.com/pear/Crypt_GPG.git",
58
- "reference": "29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e"
59
+ "reference": "89c661fbd7027f7745c25efd4053552972278bc1"
60
},
61
"dist": {
62
"type": "zip",
63
- "url": "https://api.github.com/repos/pear/Crypt_GPG/zipball/29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e",
64
- "reference": "29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e",
65
+ "url": "https://api.github.com/repos/pear/Crypt_GPG/zipball/89c661fbd7027f7745c25efd4053552972278bc1",
66
+ "reference": "89c661fbd7027f7745c25efd4053552972278bc1",
67
"shasum": ""
68
},
69
"require": {
70
71
"suggest": {
72
"ext-posix": "May require the posix PHP extension"
73
},
74
- "time": "2022-02-16T17:39:00+00:00",
75
+ "time": "2023-11-23T09:15:05+00:00",
76
"bin":
77
"scripts/crypt-gpg-pinentry"
78
,
79
80
},
81
{
82
"name": "phpstan/phpstan",
83
- "version": "1.10.41",
84
- "version_normalized": "1.10.41.0",
85
+ "version": "1.10.44",
86
+ "version_normalized": "1.10.44.0",
87
"source": {
88
"type": "git",
89
"url": "https://github.com/phpstan/phpstan.git",
90
- "reference": "c6174523c2a69231df55bdc65b61655e72876d76"
91
+ "reference": "bf84367c53a23f759513985c54ffe0d0c249825b"
92
},
93
"dist": {
94
"type": "zip",
95
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6174523c2a69231df55bdc65b61655e72876d76",
96
- "reference": "c6174523c2a69231df55bdc65b61655e72876d76",
97
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bf84367c53a23f759513985c54ffe0d0c249825b",
98
+ "reference": "bf84367c53a23f759513985c54ffe0d0c249825b",
99
"shasum": ""
100
},
101
"require": {
102
103
"conflict": {
104
"phpstan/phpstan-shim": "*"
105
},
106
- "time": "2023-11-05T12:57:57+00:00",
107
+ "time": "2023-11-21T16:30:46+00:00",
108
"bin":
109
"phpstan",
110
"phpstan.phar"
111
112
},
113
{
114
"name": "sabre/dav",
115
- "version": "4.4.0",
116
- "version_normalized": "4.4.0.0",
117
+ "version": "4.5.1",
118
+ "version_normalized": "4.5.1.0",
119
"source": {
120
"type": "git",
121
"url": "https://github.com/sabre-io/dav.git",
122
- "reference": "b65362abc926520eda2c57e219f022a6c288069d"
123
+ "reference": "b29899b675371aee73920165d1dc5a2235aa104b"
124
},
125
"dist": {
126
"type": "zip",
127
- "url": "https://api.github.com/repos/sabre-io/dav/zipball/b65362abc926520eda2c57e219f022a6c288069d",
128
- "reference": "b65362abc926520eda2c57e219f022a6c288069d",
129
+ "url": "https://api.github.com/repos/sabre-io/dav/zipball/b29899b675371aee73920165d1dc5a2235aa104b",
130
+ "reference": "b29899b675371aee73920165d1dc5a2235aa104b",
131
"shasum": ""
132
},
133
"require": {
134
135
"sabre/xml": "^2.0.1"
136
},
137
"require-dev": {
138
- "evert/phpdoc-md": "~0.1.0",
139
- "friendsofphp/php-cs-fixer": "^2.17.1",
140
- "monolog/monolog": "^1.18",
141
- "phpstan/phpstan": "^0.12",
142
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
143
+ "friendsofphp/php-cs-fixer": "^2.19",
144
+ "monolog/monolog": "^1.27",
145
+ "phpstan/phpstan": "^0.12 || ^1.0",
146
+ "phpstan/phpstan-phpunit": "^1.0",
147
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
148
},
149
"suggest": {
150
"ext-curl": "*",
151
"ext-imap": "*",
152
"ext-pdo": "*"
153
},
154
- "time": "2022-06-27T09:07:55+00:00",
155
+ "time": "2023-11-23T04:33:31+00:00",
156
"bin":
157
"bin/sabredav",
158
"bin/naturalselection"
159
160
"installation-source": "dist",
161
"autoload": {
162
"psr-4": {
163
- "Sabre\\DAV\\": "lib/DAV/",
164
- "Sabre\\CalDAV\\": "lib/CalDAV/",
165
- "Sabre\\DAVACL\\": "lib/DAVACL/",
166
- "Sabre\\CardDAV\\": "lib/CardDAV/"
167
+ "Sabre\\": "lib/"
168
}
169
},
170
"notification-url": "https://packagist.org/downloads/",
171
172
},
173
{
174
"name": "sabre/vobject",
175
- "version": "4.5.3",
176
- "version_normalized": "4.5.3.0",
177
+ "version": "4.5.4",
178
+ "version_normalized": "4.5.4.0",
179
"source": {
180
"type": "git",
181
"url": "https://github.com/sabre-io/vobject.git",
182
- "reference": "fe6d9183154ed6f2f913f2b568d3d51d8ae9b308"
183
+ "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772"
184
},
185
"dist": {
186
"type": "zip",
187
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/fe6d9183154ed6f2f913f2b568d3d51d8ae9b308",
188
- "reference": "fe6d9183154ed6f2f913f2b568d3d51d8ae9b308",
189
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
190
+ "reference": "a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772",
191
"shasum": ""
192
},
193
"require": {
194
195
"suggest": {
196
"hoa/bench": "If you would like to run the benchmark scripts"
197
},
198
- "time": "2023-01-22T12:21:50+00:00",
199
+ "time": "2023-11-09T12:54:37+00:00",
200
"bin":
201
"bin/vobject",
202
"bin/generate_vcards"
203
roundcubemail-1.5.tar.gz/vendor/composer/installed.php
Changed
84
1
2
'name' => 'roundcube/roundcubemail',
3
'pretty_version' => 'dev-dev/kolab-1.5',
4
'version' => 'dev-dev/kolab-1.5',
5
- 'reference' => '9033fa0b6a3dca5d035454c3c0aec5696db6f3ab',
6
+ 'reference' => 'b29ecec6bd39c4cd8d145d7ea8cd7d145d7a2ab2',
7
'type' => 'library',
8
'install_path' => __DIR__ . '/../../',
9
'aliases' => array(),
10
11
'dev_requirement' => false,
12
),
13
'ezyang/htmlpurifier' => array(
14
- 'pretty_version' => 'v4.16.0',
15
- 'version' => '4.16.0.0',
16
- 'reference' => '523407fb06eb9e5f3d59889b3978d5bfe94299c8',
17
+ 'pretty_version' => 'v4.17.0',
18
+ 'version' => '4.17.0.0',
19
+ 'reference' => 'bbc513d79acf6691fa9cf10f192c90dd2957f18c',
20
'type' => 'library',
21
'install_path' => __DIR__ . '/../ezyang/htmlpurifier',
22
'aliases' => array(),
23
24
'dev_requirement' => false,
25
),
26
'pear/crypt_gpg' => array(
27
- 'pretty_version' => 'v1.6.7',
28
- 'version' => '1.6.7.0',
29
- 'reference' => '29c0fbe96d0d4063ecd5c9a4644cb65a7fb7cc4e',
30
+ 'pretty_version' => 'v1.6.8',
31
+ 'version' => '1.6.8.0',
32
+ 'reference' => '89c661fbd7027f7745c25efd4053552972278bc1',
33
'type' => 'library',
34
'install_path' => __DIR__ . '/../pear/crypt_gpg',
35
'aliases' => array(),
36
37
'dev_requirement' => true,
38
),
39
'phpstan/phpstan' => array(
40
- 'pretty_version' => '1.10.41',
41
- 'version' => '1.10.41.0',
42
- 'reference' => 'c6174523c2a69231df55bdc65b61655e72876d76',
43
+ 'pretty_version' => '1.10.44',
44
+ 'version' => '1.10.44.0',
45
+ 'reference' => 'bf84367c53a23f759513985c54ffe0d0c249825b',
46
'type' => 'library',
47
'install_path' => __DIR__ . '/../phpstan/phpstan',
48
'aliases' => array(),
49
50
'roundcube/roundcubemail' => array(
51
'pretty_version' => 'dev-dev/kolab-1.5',
52
'version' => 'dev-dev/kolab-1.5',
53
- 'reference' => '9033fa0b6a3dca5d035454c3c0aec5696db6f3ab',
54
+ 'reference' => 'b29ecec6bd39c4cd8d145d7ea8cd7d145d7a2ab2',
55
'type' => 'library',
56
'install_path' => __DIR__ . '/../../',
57
'aliases' => array(),
58
59
),
60
),
61
'sabre/dav' => array(
62
- 'pretty_version' => '4.4.0',
63
- 'version' => '4.4.0.0',
64
- 'reference' => 'b65362abc926520eda2c57e219f022a6c288069d',
65
+ 'pretty_version' => '4.5.1',
66
+ 'version' => '4.5.1.0',
67
+ 'reference' => 'b29899b675371aee73920165d1dc5a2235aa104b',
68
'type' => 'library',
69
'install_path' => __DIR__ . '/../sabre/dav',
70
'aliases' => array(),
71
72
'dev_requirement' => false,
73
),
74
'sabre/vobject' => array(
75
- 'pretty_version' => '4.5.3',
76
- 'version' => '4.5.3.0',
77
- 'reference' => 'fe6d9183154ed6f2f913f2b568d3d51d8ae9b308',
78
+ 'pretty_version' => '4.5.4',
79
+ 'version' => '4.5.4.0',
80
+ 'reference' => 'a6d53a3e5bec85ed3dd78868b7de0f5b4e12f772',
81
'type' => 'library',
82
'install_path' => __DIR__ . '/../sabre/vobject',
83
'aliases' => array(),
84
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/CHANGELOG.md
Deleted
8
1
2
-# 4.16.0(https://github.com/ezyang/htmlpurifier/compare/v4.15.0...v4.16.0) (2022-09-18)
3
-
4
-
5
-### Features
6
-
7
-* add semantic release (#307(https://github.com/ezyang/htmlpurifier/issues/307)) (db31243(https://github.com/ezyang/htmlpurifier/commit/db312435cb9d8d73395f75f9642a43ba6de5e903)), closes #322(https://github.com/ezyang/htmlpurifier/issues/322) #323(https://github.com/ezyang/htmlpurifier/issues/323) #326(https://github.com/ezyang/htmlpurifier/issues/326) #327(https://github.com/ezyang/htmlpurifier/issues/327) #328(https://github.com/ezyang/htmlpurifier/issues/328) #329(https://github.com/ezyang/htmlpurifier/issues/329) #330(https://github.com/ezyang/htmlpurifier/issues/330) #331(https://github.com/ezyang/htmlpurifier/issues/331) #332(https://github.com/ezyang/htmlpurifier/issues/332) #333(https://github.com/ezyang/htmlpurifier/issues/333) #337(https://github.com/ezyang/htmlpurifier/issues/337) #335(https://github.com/ezyang/htmlpurifier/issues/335) ezyang/htmlpurifier#334(https://github.com/ezyang/htmlpurifier/issues/334) #336(https://github.com/ezyang/htmlpurifier/issues/336) #338(https://github.com/ezyang/htmlpurifier/issues/338)
8
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/VERSION
Changed
6
1
2
-4.15.0
3
\ No newline at end of file
4
+4.17.0
5
\ No newline at end of file
6
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/composer.json
Changed
20
1
2
}
3
,
4
"require": {
5
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0"
6
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
7
},
8
"require-dev": {
9
"cerdic/css-tidy": "^1.7 || ^2.0",
10
11
"repositories":
12
{
13
"type": "vcs",
14
- "url": "https://github.com/ezyang/simpletest.git"
15
+ "url": "https://github.com/ezyang/simpletest.git",
16
+ "no-api": true
17
}
18
19
}
20
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php
Changed
10
1
2
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
3
* FILE, changes will be overwritten the next time the script is run.
4
*
5
- * @version 4.15.0
6
+ * @version 4.17.0
7
*
8
* @warning
9
* You must *not* include any other HTML Purifier files before this file,
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier.php
Changed
25
1
2
*/
3
4
/*
5
- HTML Purifier 4.15.0 - Standards Compliant HTML Filtering
6
+ HTML Purifier 4.17.0 - Standards Compliant HTML Filtering
7
Copyright (C) 2006-2008 Edward Z. Yang
8
9
This library is free software; you can redistribute it and/or
10
11
* Version of HTML Purifier.
12
* @type string
13
*/
14
- public $version = '4.15.0';
15
+ public $version = '4.17.0';
16
17
/**
18
* Constant with version of HTML Purifier.
19
*/
20
- const VERSION = '4.15.0';
21
+ const VERSION = '4.17.0';
22
23
/**
24
* Global configuration object.
25
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
Changed
40
1
2
3
public function __construct()
4
{
5
- $this->mask = '_- ';
6
- for ($c = 'a'; $c <= 'z'; $c++) {
7
- $this->mask .= $c;
8
- }
9
- for ($c = 'A'; $c <= 'Z'; $c++) {
10
- $this->mask .= $c;
11
- }
12
- for ($c = '0'; $c <= '9'; $c++) {
13
- $this->mask .= $c;
14
- } // cast-y, but should be fine
15
- // special bytes used by UTF-8
16
- for ($i = 0x80; $i <= 0xFF; $i++) {
17
- // We don't bother excluding invalid bytes in this range,
18
- // because the our restriction of well-formed UTF-8 will
19
- // prevent these from ever occurring.
20
- $this->mask .= chr($i);
21
- }
22
+ // Lowercase letters
23
+ $l = range('a', 'z');
24
+ // Uppercase letters
25
+ $u = range('A', 'Z');
26
+ // Digits
27
+ $d = range('0', '9');
28
+ // Special bytes used by UTF-8
29
+ $b = array_map('chr', range(0x80, 0xFF));
30
+ // All valid characters for the mask
31
+ $c = array_merge($l, $u, $d, $b);
32
+ // Concatenate all valid characters into a string
33
+ // Use '_- ' as an initial value
34
+ $this->mask = array_reduce($c, function ($carry, $value) {
35
+ return $carry . $value;
36
+ }, '_- ');
37
38
/*
39
PHP's internal strcspn implementation is
40
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php
Changed
10
1
2
// If we have Net_IDNA2 support, we can support IRIs by
3
// punycoding them. (This is the most portable thing to do,
4
// since otherwise we have to assume browsers support
5
- } elseif ($config->get('Core.EnableIDNA')) {
6
+ } elseif ($config->get('Core.EnableIDNA') && class_exists('Net_IDNA2')) {
7
$idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true));
8
// we need to encode each period separately
9
$parts = explode('.', $string);
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php
Changed
14
1
2
3
// XXX Kind of inefficient
4
$url = $this->parser->parse($attr'href');
5
- $scheme = $url->getSchemeObj($config, $context);
6
+
7
+ // Ignore invalid schemes (e.g. `javascript:`)
8
+ if (!($scheme = $url->getSchemeObj($config, $context))) {
9
+ return $attr;
10
+ }
11
12
if ($scheme->browsable && !$url->isBenign($config, $context)) {
13
$attr'target' = '_blank';
14
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php
Changed
50
1
2
public static function registerAutoload()
3
{
4
$autoload = array('HTMLPurifier_Bootstrap', 'autoload');
5
- if (($funcs = spl_autoload_functions()) === false) {
6
+ if (spl_autoload_functions() === false) {
7
spl_autoload_register($autoload);
8
- } elseif (function_exists('spl_autoload_unregister')) {
9
- if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
10
- // prepend flag exists, no need for shenanigans
11
- spl_autoload_register($autoload, true, true);
12
- } else {
13
- $buggy = version_compare(PHP_VERSION, '5.2.11', '<');
14
- $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
15
- version_compare(PHP_VERSION, '5.1.0', '>=');
16
- foreach ($funcs as $func) {
17
- if ($buggy && is_array($func)) {
18
- // :TRICKY: There are some compatibility issues and some
19
- // places where we need to error out
20
- $reflector = new ReflectionMethod($func0, $func1);
21
- if (!$reflector->isStatic()) {
22
- throw new Exception(
23
- 'HTML Purifier autoloader registrar is not compatible
24
- with non-static object methods due to PHP Bug #44144;
25
- Please do not use HTMLPurifier.autoload.php (or any
26
- file that includes this file); instead, place the code:
27
- spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
28
- after your own autoloaders.'
29
- );
30
- }
31
- // Suprisingly, spl_autoload_register supports the
32
- // Class::staticMethod callback format, although call_user_func doesn't
33
- if ($compat) {
34
- $func = implode('::', $func);
35
- }
36
- }
37
- spl_autoload_unregister($func);
38
- }
39
- spl_autoload_register($autoload);
40
- foreach ($funcs as $func) {
41
- spl_autoload_register($func);
42
- }
43
- }
44
+ } else {
45
+ // prepend flag exists, no need for shenanigans
46
+ spl_autoload_register($autoload, true, true);
47
}
48
}
49
}
50
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php
Changed
500
1
2
* Assoc array of attribute name to definition object.
3
* @type HTMLPurifier_AttrDef
4
*/
5
- public $info = array();
6
+ public $info = ;
7
8
/**
9
* Constructs the info array. The meat of this class.
10
11
protected function doSetup($config)
12
{
13
$this->info'text-align' = new HTMLPurifier_AttrDef_Enum(
14
- array('left', 'right', 'center', 'justify'),
15
+ 'left', 'right', 'center', 'justify',
16
false
17
);
18
19
20
$this->info'border-right-style' =
21
$this->info'border-left-style' =
22
$this->info'border-top-style' = new HTMLPurifier_AttrDef_Enum(
23
- array(
24
+
25
'none',
26
'hidden',
27
'dotted',
28
29
'ridge',
30
'inset',
31
'outset'
32
- ),
33
+ ,
34
false
35
);
36
37
$this->info'border-style' = new HTMLPurifier_AttrDef_CSS_Multiple($border_style);
38
39
$this->info'clear' = new HTMLPurifier_AttrDef_Enum(
40
- array('none', 'left', 'right', 'both'),
41
+ 'none', 'left', 'right', 'both',
42
false
43
);
44
$this->info'float' = new HTMLPurifier_AttrDef_Enum(
45
- array('none', 'left', 'right'),
46
+ 'none', 'left', 'right',
47
false
48
);
49
$this->info'font-style' = new HTMLPurifier_AttrDef_Enum(
50
- array('normal', 'italic', 'oblique'),
51
+ 'normal', 'italic', 'oblique',
52
false
53
);
54
$this->info'font-variant' = new HTMLPurifier_AttrDef_Enum(
55
- array('normal', 'small-caps'),
56
+ 'normal', 'small-caps',
57
false
58
);
59
60
$uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite(
61
- array(
62
- new HTMLPurifier_AttrDef_Enum(array('none')),
63
+
64
+ new HTMLPurifier_AttrDef_Enum('none'),
65
new HTMLPurifier_AttrDef_CSS_URI()
66
- )
67
+
68
);
69
70
$this->info'list-style-position' = new HTMLPurifier_AttrDef_Enum(
71
- array('inside', 'outside'),
72
+ 'inside', 'outside',
73
false
74
);
75
$this->info'list-style-type' = new HTMLPurifier_AttrDef_Enum(
76
- array(
77
+
78
'disc',
79
'circle',
80
'square',
81
82
'lower-alpha',
83
'upper-alpha',
84
'none'
85
- ),
86
+ ,
87
false
88
);
89
$this->info'list-style-image' = $uri_or_none;
90
91
$this->info'list-style' = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
92
93
$this->info'text-transform' = new HTMLPurifier_AttrDef_Enum(
94
- array('capitalize', 'uppercase', 'lowercase', 'none'),
95
+ 'capitalize', 'uppercase', 'lowercase', 'none',
96
false
97
);
98
$this->info'color' = new HTMLPurifier_AttrDef_CSS_Color();
99
100
$this->info'background-image' = $uri_or_none;
101
$this->info'background-repeat' = new HTMLPurifier_AttrDef_Enum(
102
- array('repeat', 'repeat-x', 'repeat-y', 'no-repeat')
103
+ 'repeat', 'repeat-x', 'repeat-y', 'no-repeat'
104
);
105
$this->info'background-attachment' = new HTMLPurifier_AttrDef_Enum(
106
- array('scroll', 'fixed')
107
+ 'scroll', 'fixed'
108
);
109
$this->info'background-position' = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
110
111
$this->info'background-size' = new HTMLPurifier_AttrDef_CSS_Composite(
112
- array(
113
+
114
new HTMLPurifier_AttrDef_Enum(
115
- array(
116
+
117
'auto',
118
'cover',
119
'contain',
120
'initial',
121
'inherit',
122
- )
123
+
124
),
125
new HTMLPurifier_AttrDef_CSS_Percentage(),
126
new HTMLPurifier_AttrDef_CSS_Length()
127
- )
128
+
129
);
130
131
$border_color =
132
133
$this->info'border-left-color' =
134
$this->info'border-right-color' =
135
$this->info'background-color' = new HTMLPurifier_AttrDef_CSS_Composite(
136
- array(
137
- new HTMLPurifier_AttrDef_Enum(array('transparent')),
138
+
139
+ new HTMLPurifier_AttrDef_Enum('transparent'),
140
new HTMLPurifier_AttrDef_CSS_Color()
141
- )
142
+
143
);
144
145
$this->info'background' = new HTMLPurifier_AttrDef_CSS_Background($config);
146
147
$this->info'border-bottom-width' =
148
$this->info'border-left-width' =
149
$this->info'border-right-width' = new HTMLPurifier_AttrDef_CSS_Composite(
150
- array(
151
- new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
152
+
153
+ new HTMLPurifier_AttrDef_Enum('thin', 'medium', 'thick'),
154
new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
155
- )
156
+
157
);
158
159
$this->info'border-width' = new HTMLPurifier_AttrDef_CSS_Multiple($border_width);
160
161
$this->info'letter-spacing' = new HTMLPurifier_AttrDef_CSS_Composite(
162
- array(
163
- new HTMLPurifier_AttrDef_Enum(array('normal')),
164
+
165
+ new HTMLPurifier_AttrDef_Enum('normal'),
166
new HTMLPurifier_AttrDef_CSS_Length()
167
- )
168
+
169
);
170
171
$this->info'word-spacing' = new HTMLPurifier_AttrDef_CSS_Composite(
172
- array(
173
- new HTMLPurifier_AttrDef_Enum(array('normal')),
174
+
175
+ new HTMLPurifier_AttrDef_Enum('normal'),
176
new HTMLPurifier_AttrDef_CSS_Length()
177
- )
178
+
179
);
180
181
$this->info'font-size' = new HTMLPurifier_AttrDef_CSS_Composite(
182
- array(
183
+
184
new HTMLPurifier_AttrDef_Enum(
185
- array(
186
+
187
'xx-small',
188
'x-small',
189
'small',
190
191
'xx-large',
192
'larger',
193
'smaller'
194
- )
195
+
196
),
197
new HTMLPurifier_AttrDef_CSS_Percentage(),
198
new HTMLPurifier_AttrDef_CSS_Length()
199
- )
200
+
201
);
202
203
$this->info'line-height' = new HTMLPurifier_AttrDef_CSS_Composite(
204
- array(
205
- new HTMLPurifier_AttrDef_Enum(array('normal')),
206
+
207
+ new HTMLPurifier_AttrDef_Enum('normal'),
208
new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
209
new HTMLPurifier_AttrDef_CSS_Length('0'),
210
new HTMLPurifier_AttrDef_CSS_Percentage(true)
211
- )
212
+
213
);
214
215
$margin =
216
217
$this->info'margin-bottom' =
218
$this->info'margin-left' =
219
$this->info'margin-right' = new HTMLPurifier_AttrDef_CSS_Composite(
220
- array(
221
+
222
new HTMLPurifier_AttrDef_CSS_Length(),
223
new HTMLPurifier_AttrDef_CSS_Percentage(),
224
- new HTMLPurifier_AttrDef_Enum(array('auto'))
225
- )
226
+ new HTMLPurifier_AttrDef_Enum('auto')
227
+
228
);
229
230
$this->info'margin' = new HTMLPurifier_AttrDef_CSS_Multiple($margin);
231
232
$this->info'padding-bottom' =
233
$this->info'padding-left' =
234
$this->info'padding-right' = new HTMLPurifier_AttrDef_CSS_Composite(
235
- array(
236
+
237
new HTMLPurifier_AttrDef_CSS_Length('0'),
238
new HTMLPurifier_AttrDef_CSS_Percentage(true)
239
- )
240
+
241
);
242
243
$this->info'padding' = new HTMLPurifier_AttrDef_CSS_Multiple($padding);
244
245
$this->info'text-indent' = new HTMLPurifier_AttrDef_CSS_Composite(
246
- array(
247
+
248
new HTMLPurifier_AttrDef_CSS_Length(),
249
new HTMLPurifier_AttrDef_CSS_Percentage()
250
- )
251
+
252
);
253
254
$trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(
255
- array(
256
+
257
new HTMLPurifier_AttrDef_CSS_Length('0'),
258
new HTMLPurifier_AttrDef_CSS_Percentage(true),
259
- new HTMLPurifier_AttrDef_Enum(array('auto', 'initial', 'inherit'))
260
- )
261
+ new HTMLPurifier_AttrDef_Enum('auto', 'initial', 'inherit')
262
+
263
);
264
$trusted_min_wh = new HTMLPurifier_AttrDef_CSS_Composite(
265
- array(
266
+
267
new HTMLPurifier_AttrDef_CSS_Length('0'),
268
new HTMLPurifier_AttrDef_CSS_Percentage(true),
269
- new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit'))
270
- )
271
+ new HTMLPurifier_AttrDef_Enum('initial', 'inherit')
272
+
273
);
274
$trusted_max_wh = new HTMLPurifier_AttrDef_CSS_Composite(
275
- array(
276
+
277
new HTMLPurifier_AttrDef_CSS_Length('0'),
278
new HTMLPurifier_AttrDef_CSS_Percentage(true),
279
- new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit'))
280
- )
281
+ new HTMLPurifier_AttrDef_Enum('none', 'initial', 'inherit')
282
+
283
);
284
$max = $config->get('CSS.MaxImgLength');
285
286
287
'img',
288
// For img tags:
289
new HTMLPurifier_AttrDef_CSS_Composite(
290
- array(
291
+
292
new HTMLPurifier_AttrDef_CSS_Length('0', $max),
293
- new HTMLPurifier_AttrDef_Enum(array('auto'))
294
- )
295
+ new HTMLPurifier_AttrDef_Enum('auto')
296
+
297
),
298
// For everyone else:
299
$trusted_wh
300
301
'img',
302
// For img tags:
303
new HTMLPurifier_AttrDef_CSS_Composite(
304
- array(
305
+
306
new HTMLPurifier_AttrDef_CSS_Length('0', $max),
307
- new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit'))
308
- )
309
+ new HTMLPurifier_AttrDef_Enum('initial', 'inherit')
310
+
311
),
312
// For everyone else:
313
$trusted_min_wh
314
315
'img',
316
// For img tags:
317
new HTMLPurifier_AttrDef_CSS_Composite(
318
- array(
319
+
320
new HTMLPurifier_AttrDef_CSS_Length('0', $max),
321
- new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit'))
322
- )
323
+ new HTMLPurifier_AttrDef_Enum('none', 'initial', 'inherit')
324
+
325
),
326
// For everyone else:
327
$trusted_max_wh
328
);
329
330
+ // text-decoration and related shorthands
331
$this->info'text-decoration' = new HTMLPurifier_AttrDef_CSS_TextDecoration();
332
333
+ $this->info'text-decoration-line' = new HTMLPurifier_AttrDef_Enum(
334
+ 'none', 'underline', 'overline', 'line-through', 'initial', 'inherit'
335
+ );
336
+
337
+ $this->info'text-decoration-style' = new HTMLPurifier_AttrDef_Enum(
338
+ 'solid', 'double', 'dotted', 'dashed', 'wavy', 'initial', 'inherit'
339
+ );
340
+
341
+ $this->info'text-decoration-color' = new HTMLPurifier_AttrDef_CSS_Color();
342
+
343
+ $this->info'text-decoration-thickness' = new HTMLPurifier_AttrDef_CSS_Composite(
344
+ new HTMLPurifier_AttrDef_CSS_Length(),
345
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
346
+ new HTMLPurifier_AttrDef_Enum('auto', 'from-font', 'initial', 'inherit')
347
+ );
348
+
349
$this->info'font-family' = new HTMLPurifier_AttrDef_CSS_FontFamily();
350
351
// this could use specialized code
352
$this->info'font-weight' = new HTMLPurifier_AttrDef_Enum(
353
- array(
354
+
355
'normal',
356
'bold',
357
'bolder',
358
359
'700',
360
'800',
361
'900'
362
- ),
363
+ ,
364
false
365
);
366
367
368
$this->info'border-right' = new HTMLPurifier_AttrDef_CSS_Border($config);
369
370
$this->info'border-collapse' = new HTMLPurifier_AttrDef_Enum(
371
- array('collapse', 'separate')
372
+ 'collapse', 'separate'
373
);
374
375
$this->info'caption-side' = new HTMLPurifier_AttrDef_Enum(
376
- array('top', 'bottom')
377
+ 'top', 'bottom'
378
);
379
380
$this->info'table-layout' = new HTMLPurifier_AttrDef_Enum(
381
- array('auto', 'fixed')
382
+ 'auto', 'fixed'
383
);
384
385
$this->info'vertical-align' = new HTMLPurifier_AttrDef_CSS_Composite(
386
- array(
387
+
388
new HTMLPurifier_AttrDef_Enum(
389
- array(
390
+
391
'baseline',
392
'sub',
393
'super',
394
395
'middle',
396
'bottom',
397
'text-bottom'
398
- )
399
+
400
),
401
new HTMLPurifier_AttrDef_CSS_Length(),
402
new HTMLPurifier_AttrDef_CSS_Percentage()
403
- )
404
+
405
);
406
407
$this->info'border-spacing' = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2);
408
409
// These CSS properties don't work on many browsers, but we live
410
// in THE FUTURE!
411
$this->info'white-space' = new HTMLPurifier_AttrDef_Enum(
412
- array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line')
413
+ 'nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line'
414
);
415
416
if ($config->get('CSS.Proprietary')) {
417
418
// more CSS3
419
$this->info'page-break-after' =
420
$this->info'page-break-before' = new HTMLPurifier_AttrDef_Enum(
421
- array(
422
+
423
'auto',
424
'always',
425
'avoid',
426
'left',
427
'right'
428
- )
429
+
430
);
431
- $this->info'page-break-inside' = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid'));
432
+ $this->info'page-break-inside' = new HTMLPurifier_AttrDef_Enum('auto', 'avoid');
433
434
$border_radius = new HTMLPurifier_AttrDef_CSS_Composite(
435
- array(
436
+
437
new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative
438
new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative
439
- ));
440
+ );
441
442
$this->info'border-top-left-radius' =
443
$this->info'border-top-right-radius' =
444
445
protected function doSetupTricky($config)
446
{
447
$this->info'display' = new HTMLPurifier_AttrDef_Enum(
448
- array(
449
+
450
'inline',
451
'block',
452
'list-item',
453
454
'table-cell',
455
'table-caption',
456
'none'
457
- )
458
+
459
);
460
$this->info'visibility' = new HTMLPurifier_AttrDef_Enum(
461
- array('visible', 'hidden', 'collapse')
462
+ 'visible', 'hidden', 'collapse'
463
);
464
- $this->info'overflow' = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll'));
465
+ $this->info'overflow' = new HTMLPurifier_AttrDef_Enum('visible', 'hidden', 'auto', 'scroll');
466
$this->info'opacity' = new HTMLPurifier_AttrDef_CSS_AlphaValue();
467
}
468
469
470
protected function doSetupTrusted($config)
471
{
472
$this->info'position' = new HTMLPurifier_AttrDef_Enum(
473
- array('static', 'relative', 'absolute', 'fixed')
474
+ 'static', 'relative', 'absolute', 'fixed'
475
);
476
$this->info'top' =
477
$this->info'left' =
478
$this->info'right' =
479
$this->info'bottom' = new HTMLPurifier_AttrDef_CSS_Composite(
480
- array(
481
+
482
new HTMLPurifier_AttrDef_CSS_Length(),
483
new HTMLPurifier_AttrDef_CSS_Percentage(),
484
- new HTMLPurifier_AttrDef_Enum(array('auto')),
485
- )
486
+ new HTMLPurifier_AttrDef_Enum('auto'),
487
+
488
);
489
$this->info'z-index' = new HTMLPurifier_AttrDef_CSS_Composite(
490
- array(
491
+
492
new HTMLPurifier_AttrDef_Integer(),
493
- new HTMLPurifier_AttrDef_Enum(array('auto')),
494
- )
495
+ new HTMLPurifier_AttrDef_Enum('auto'),
496
+
497
);
498
}
499
500
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php
Changed
10
1
2
* HTML Purifier's version
3
* @type string
4
*/
5
- public $version = '4.15.0';
6
+ public $version = '4.17.0';
7
8
/**
9
* Whether or not to automatically finalize
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php
Changed
21
1
2
} elseif (filegroup($dir) === posix_getgid()) {
3
$chmod = $chmod | 0070;
4
} else {
5
- // PHP's probably running as nobody, so we'll
6
- // need to give global permissions
7
- $chmod = $chmod | 0777;
8
+ // PHP's probably running as nobody, it is
9
+ // not obvious how to fix this (777 is probably
10
+ // bad if you are multi-user), let the user figure it out
11
+ $chmod = null;
12
}
13
trigger_error(
14
- 'Directory ' . $dir . ' not writable, ' .
15
- 'please chmod to ' . decoct($chmod),
16
+ 'Directory ' . $dir . ' not writable. ' .
17
+ ($chmod === null ? '' : 'Please chmod to ' . decoct($chmod)),
18
E_USER_WARNING
19
);
20
} else {
21
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php
Changed
10
1
2
return $this->caches$method$type;
3
}
4
if (isset($this->implementations$method) &&
5
- class_exists($class = $this->implementations$method, false)) {
6
+ class_exists($class = $this->implementations$method)) {
7
$cache = new $class($type);
8
} else {
9
if ($method != 'Serializer') {
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
Changed
332
1
2
foreach ($this->_tidy->css as $k => $decls) {
3
// $decls are all CSS declarations inside an @ selector
4
$new_decls = array();
5
- foreach ($decls as $selector => $style) {
6
- $selector = trim($selector);
7
- if ($selector === '') {
8
- continue;
9
- } // should not happen
10
- // Parse the selector
11
- // Here is the relevant part of the CSS grammar:
12
- //
13
- // ruleset
14
- // : selector ',' S* selector * '{' ...
15
- // selector
16
- // : simple_selector combinator selector | S+ combinator? selector ? ?
17
- // combinator
18
- // : '+' S*
19
- // : '>' S*
20
- // simple_selector
21
- // : element_name HASH | class | attrib | pseudo *
22
- // | HASH | class | attrib | pseudo +
23
- // element_name
24
- // : IDENT | '*'
25
- // ;
26
- // class
27
- // : '.' IDENT
28
- // ;
29
- // attrib
30
- // : '' S* IDENT S* '=' | INCLUDES | DASHMATCH S*
31
- // IDENT | STRING S* ? ''
32
- // ;
33
- // pseudo
34
- // : ':' IDENT | FUNCTION S* IDENT S*? ')'
35
- // ;
36
- //
37
- // For reference, here are the relevant tokens:
38
- //
39
- // HASH #{name}
40
- // IDENT {ident}
41
- // INCLUDES ==
42
- // DASHMATCH |=
43
- // STRING {string}
44
- // FUNCTION {ident}\(
45
- //
46
- // And the lexical scanner tokens
47
- //
48
- // name {nmchar}+
49
- // nmchar _a-z0-9-|{nonascii}|{escape}
50
- // nonascii \240-\377
51
- // escape {unicode}|\\^\r\n\f0-9a-f
52
- // unicode \\{h}}{1,6}(\r\n| \t\r\n\f)?
53
- // ident -?{nmstart}{nmchar*}
54
- // nmstart _a-z|{nonascii}|{escape}
55
- // string {string1}|{string2}
56
- // string1 \"(^\n\r\f\\"|\\{nl}|{escape})*\"
57
- // string2 \'(^\n\r\f\\"|\\{nl}|{escape})*\'
58
- //
59
- // We'll implement a subset (in order to reduce attack
60
- // surface); in particular:
61
- //
62
- // - No Unicode support
63
- // - No escapes support
64
- // - No string support (by proxy no attrib support)
65
- // - element_name is matched against allowed
66
- // elements (some people might find this
67
- // annoying...)
68
- // - Pseudo-elements one of :first-child, :link,
69
- // :visited, :active, :hover, :focus
70
+ if (is_array($decls)) {
71
+ foreach ($decls as $selector => $style) {
72
+ $selector = trim($selector);
73
+ if ($selector === '') {
74
+ continue;
75
+ } // should not happen
76
+ // Parse the selector
77
+ // Here is the relevant part of the CSS grammar:
78
+ //
79
+ // ruleset
80
+ // : selector ',' S* selector * '{' ...
81
+ // selector
82
+ // : simple_selector combinator selector | S+ combinator? selector ? ?
83
+ // combinator
84
+ // : '+' S*
85
+ // : '>' S*
86
+ // simple_selector
87
+ // : element_name HASH | class | attrib | pseudo *
88
+ // | HASH | class | attrib | pseudo +
89
+ // element_name
90
+ // : IDENT | '*'
91
+ // ;
92
+ // class
93
+ // : '.' IDENT
94
+ // ;
95
+ // attrib
96
+ // : '' S* IDENT S* '=' | INCLUDES | DASHMATCH S*
97
+ // IDENT | STRING S* ? ''
98
+ // ;
99
+ // pseudo
100
+ // : ':' IDENT | FUNCTION S* IDENT S*? ')'
101
+ // ;
102
+ //
103
+ // For reference, here are the relevant tokens:
104
+ //
105
+ // HASH #{name}
106
+ // IDENT {ident}
107
+ // INCLUDES ==
108
+ // DASHMATCH |=
109
+ // STRING {string}
110
+ // FUNCTION {ident}\(
111
+ //
112
+ // And the lexical scanner tokens
113
+ //
114
+ // name {nmchar}+
115
+ // nmchar _a-z0-9-|{nonascii}|{escape}
116
+ // nonascii \240-\377
117
+ // escape {unicode}|\\^\r\n\f0-9a-f
118
+ // unicode \\{h}}{1,6}(\r\n| \t\r\n\f)?
119
+ // ident -?{nmstart}{nmchar*}
120
+ // nmstart _a-z|{nonascii}|{escape}
121
+ // string {string1}|{string2}
122
+ // string1 \"(^\n\r\f\\"|\\{nl}|{escape})*\"
123
+ // string2 \'(^\n\r\f\\"|\\{nl}|{escape})*\'
124
+ //
125
+ // We'll implement a subset (in order to reduce attack
126
+ // surface); in particular:
127
+ //
128
+ // - No Unicode support
129
+ // - No escapes support
130
+ // - No string support (by proxy no attrib support)
131
+ // - element_name is matched against allowed
132
+ // elements (some people might find this
133
+ // annoying...)
134
+ // - Pseudo-elements one of :first-child, :link,
135
+ // :visited, :active, :hover, :focus
136
137
- // handle ruleset
138
- $selectors = array_map('trim', explode(',', $selector));
139
- $new_selectors = array();
140
- foreach ($selectors as $sel) {
141
- // split on +, > and spaces
142
- $basic_selectors = preg_split('/\s*(+> )\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE);
143
- // even indices are chunks, odd indices are
144
- // delimiters
145
- $nsel = null;
146
- $delim = null; // guaranteed to be non-null after
147
- // two loop iterations
148
- for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) {
149
- $x = $basic_selectors$i;
150
- if ($i % 2) {
151
- // delimiter
152
- if ($x === ' ') {
153
- $delim = ' ';
154
- } else {
155
- $delim = ' ' . $x . ' ';
156
- }
157
- } else {
158
- // simple selector
159
- $components = preg_split('/(#.:)/', $x, -1, PREG_SPLIT_DELIM_CAPTURE);
160
- $sdelim = null;
161
- $nx = null;
162
- for ($j = 0, $cc = count($components); $j < $cc; $j++) {
163
- $y = $components$j;
164
- if ($j === 0) {
165
- if ($y === '*' || isset($html_definition->info$y = strtolower($y))) {
166
- $nx = $y;
167
- } else {
168
- // $nx stays null; this matters
169
- // if we don't manage to find
170
- // any valid selector content,
171
- // in which case we ignore the
172
- // outer $delim
173
- }
174
- } elseif ($j % 2) {
175
- // set delimiter
176
- $sdelim = $y;
177
+ // handle ruleset
178
+ $selectors = array_map('trim', explode(',', $selector));
179
+ $new_selectors = array();
180
+ foreach ($selectors as $sel) {
181
+ // split on +, > and spaces
182
+ $basic_selectors = preg_split('/\s*(+> )\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE);
183
+ // even indices are chunks, odd indices are
184
+ // delimiters
185
+ $nsel = null;
186
+ $delim = null; // guaranteed to be non-null after
187
+ // two loop iterations
188
+ for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) {
189
+ $x = $basic_selectors$i;
190
+ if ($i % 2) {
191
+ // delimiter
192
+ if ($x === ' ') {
193
+ $delim = ' ';
194
} else {
195
- $attrdef = null;
196
- if ($sdelim === '#') {
197
- $attrdef = $this->_id_attrdef;
198
- } elseif ($sdelim === '.') {
199
- $attrdef = $this->_class_attrdef;
200
- } elseif ($sdelim === ':') {
201
- $attrdef = $this->_enum_attrdef;
202
+ $delim = ' ' . $x . ' ';
203
+ }
204
+ } else {
205
+ // simple selector
206
+ $components = preg_split('/(#.:)/', $x, -1, PREG_SPLIT_DELIM_CAPTURE);
207
+ $sdelim = null;
208
+ $nx = null;
209
+ for ($j = 0, $cc = count($components); $j < $cc; $j++) {
210
+ $y = $components$j;
211
+ if ($j === 0) {
212
+ if ($y === '*' || isset($html_definition->info$y = strtolower($y))) {
213
+ $nx = $y;
214
+ } else {
215
+ // $nx stays null; this matters
216
+ // if we don't manage to find
217
+ // any valid selector content,
218
+ // in which case we ignore the
219
+ // outer $delim
220
+ }
221
+ } elseif ($j % 2) {
222
+ // set delimiter
223
+ $sdelim = $y;
224
} else {
225
- throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split');
226
- }
227
- $r = $attrdef->validate($y, $config, $context);
228
- if ($r !== false) {
229
- if ($r !== true) {
230
- $y = $r;
231
+ $attrdef = null;
232
+ if ($sdelim === '#') {
233
+ $attrdef = $this->_id_attrdef;
234
+ } elseif ($sdelim === '.') {
235
+ $attrdef = $this->_class_attrdef;
236
+ } elseif ($sdelim === ':') {
237
+ $attrdef = $this->_enum_attrdef;
238
+ } else {
239
+ throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split');
240
}
241
- if ($nx === null) {
242
- $nx = '';
243
+ $r = $attrdef->validate($y, $config, $context);
244
+ if ($r !== false) {
245
+ if ($r !== true) {
246
+ $y = $r;
247
+ }
248
+ if ($nx === null) {
249
+ $nx = '';
250
+ }
251
+ $nx .= $sdelim . $y;
252
}
253
- $nx .= $sdelim . $y;
254
}
255
}
256
- }
257
- if ($nx !== null) {
258
- if ($nsel === null) {
259
- $nsel = $nx;
260
+ if ($nx !== null) {
261
+ if ($nsel === null) {
262
+ $nsel = $nx;
263
+ } else {
264
+ $nsel .= $delim . $nx;
265
+ }
266
} else {
267
- $nsel .= $delim . $nx;
268
+ // delimiters to the left of invalid
269
+ // basic selector ignored
270
}
271
- } else {
272
- // delimiters to the left of invalid
273
- // basic selector ignored
274
}
275
}
276
- }
277
- if ($nsel !== null) {
278
- if (!empty($scopes)) {
279
- foreach ($scopes as $s) {
280
- $new_selectors = "$s $nsel";
281
+ if ($nsel !== null) {
282
+ if (!empty($scopes)) {
283
+ foreach ($scopes as $s) {
284
+ $new_selectors = "$s $nsel";
285
+ }
286
+ } else {
287
+ $new_selectors = $nsel;
288
}
289
- } else {
290
- $new_selectors = $nsel;
291
}
292
}
293
- }
294
- if (empty($new_selectors)) {
295
- continue;
296
- }
297
- $selector = implode(', ', $new_selectors);
298
- foreach ($style as $name => $value) {
299
- if (!isset($css_definition->info$name)) {
300
- unset($style$name);
301
+ if (empty($new_selectors)) {
302
continue;
303
}
304
- $def = $css_definition->info$name;
305
- $ret = $def->validate($value, $config, $context);
306
- if ($ret === false) {
307
- unset($style$name);
308
- } else {
309
- $style$name = $ret;
310
+ $selector = implode(', ', $new_selectors);
311
+ foreach ($style as $name => $value) {
312
+ if (!isset($css_definition->info$name)) {
313
+ unset($style$name);
314
+ continue;
315
+ }
316
+ $def = $css_definition->info$name;
317
+ $ret = $def->validate($value, $config, $context);
318
+ if ($ret === false) {
319
+ unset($style$name);
320
+ } else {
321
+ $style$name = $ret;
322
+ }
323
}
324
+ $new_decls$selector = $style;
325
}
326
- $new_decls$selector = $style;
327
+ } else {
328
+ continue;
329
}
330
$new_css$k = $new_decls;
331
}
332
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php
Changed
9
1
2
*/
3
public function makeFixes()
4
{
5
+ return array();
6
}
7
}
8
9
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php
Changed
10
1
2
} else {
3
$class = 'HTMLPurifier_Language_' . $pcode;
4
$file = $this->dir . '/Language/classes/' . $code . '.php';
5
- if (file_exists($file) || class_exists($class, false)) {
6
+ if (file_exists($file) || class_exists($class)) {
7
$lang = new $class($config, $context);
8
} else {
9
// Go fallback
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php
Changed
10
1
2
break;
3
}
4
5
- if (class_exists('DOMDocument', false) &&
6
+ if (class_exists('DOMDocument') &&
7
method_exists('DOMDocument', 'loadHTML') &&
8
!extension_loaded('domxml')
9
) {
10
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php
Changed
9
1
2
* To iterate is human, to recurse divine - L. Peter Deutsch
3
* @param DOMNode $node DOMNode to be tokenized.
4
* @param HTMLPurifier_Token $tokens Array-list of already tokenized tokens.
5
- * @return HTMLPurifier_Token of node appended to previously passed tokens.
6
*/
7
protected function tokenizeDOM($node, &$tokens, $config)
8
{
9
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php
Changed
13
1
2
protected $compress = false;
3
4
/**
5
+ * @var HTMLPurifier_Config
6
+ */
7
+ protected $genConfig;
8
+
9
+ /**
10
* @param string $name Form element name for directives to be stuffed into
11
* @param string $doc_url String documentation URL, will have fragment tagged on
12
* @param bool $compress Integer max length before compressing a directive name, set to false to turn off
13
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php
Changed
16
1
2
$uri->host = null;
3
$uri->port = null;
4
5
- // Delete all non-numeric characters, non-x characters
6
+ // Delete all non-numeric characters, commas, and non-x characters
7
// from phone number, EXCEPT for a leading plus sign.
8
- $uri->path = preg_replace('/(?!^\+)^\dx/', '',
9
+ $uri->path = preg_replace('/(?!^\+)^\dx,/', '',
10
// Normalize e(x)tension to lower-case
11
- str_replace('X', 'x', $uri->path));
12
+ str_replace('X', 'x', rawurldecode($uri->path)));
13
14
return true;
15
}
16
roundcubemail-1.5.tar.gz/vendor/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php
Changed
28
1
2
*/
3
private function round($n, $sigfigs)
4
{
5
- $new_log = (int)floor(log(abs($n), 10)); // Number of digits left of decimal - 1
6
+ $new_log = (int)floor(log(abs((float)$n), 10)); // Number of digits left of decimal - 1
7
$rp = $sigfigs - $new_log - 1; // Number of decimal places needed
8
$neg = $n < 0 ? '-' : ''; // Negative sign
9
if ($this->bcmath) {
10
11
}
12
return $n;
13
} else {
14
- return $this->scale(round($n, $sigfigs - $new_log - 1), $rp + 1);
15
+ return $this->scale(round((float)$n, $sigfigs - $new_log - 1), $rp + 1);
16
}
17
}
18
19
20
// Now we return it, truncating the zero that was rounded off.
21
return substr($precise, 0, -1) . str_repeat('0', -$scale + 1);
22
}
23
- return sprintf('%.' . $scale . 'f', (float)$r);
24
+ return number_format((float)$r, $scale, '.', '');
25
}
26
}
27
28
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/index
Changed
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/logs/HEAD
Changed
8
1
2
-0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@ea318f2d1d17.(none)> 1699266519 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
3
-39a754269fe6e5d94b0fe87215e89232876bda01 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@ea318f2d1d17.(none)> 1699266519 +0000 checkout: moving from master to master
4
-39a754269fe6e5d94b0fe87215e89232876bda01 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@ea318f2d1d17.(none)> 1699266519 +0000 reset: moving to 39a754269fe6e5d94b0fe87215e89232876bda01
5
+0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@4aafbf272597.(none)> 1700827978 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
6
+39a754269fe6e5d94b0fe87215e89232876bda01 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@4aafbf272597.(none)> 1700827978 +0000 checkout: moving from master to master
7
+39a754269fe6e5d94b0fe87215e89232876bda01 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@4aafbf272597.(none)> 1700827978 +0000 reset: moving to 39a754269fe6e5d94b0fe87215e89232876bda01
8
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/logs/refs/heads/master
Changed
4
1
2
-0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@ea318f2d1d17.(none)> 1699266519 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
3
+0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@4aafbf272597.(none)> 1700827978 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
4
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/logs/refs/remotes/origin/HEAD
Changed
4
1
2
-0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@ea318f2d1d17.(none)> 1699266519 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
3
+0000000000000000000000000000000000000000 39a754269fe6e5d94b0fe87215e89232876bda01 default <default@4aafbf272597.(none)> 1700827978 +0000 clone: from /home/default/.cache/composer/vcs/https---git.kolab.org-diffusion-PNL-php-net-ldap.git/
4
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/objects/info/packs
Changed
5
1
2
-P pack-cd818dc721b0bfe14b5d34b491e4262497e4dffd.pack
3
+P pack-5071ce79d8f518d56d4d77de8369f7db5a79f91d.pack
4
5
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/objects/pack/pack-5071ce79d8f518d56d4d77de8369f7db5a79f91d.idx
Added
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/objects/pack/pack-5071ce79d8f518d56d4d77de8369f7db5a79f91d.pack
Added
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/objects/pack/pack-cd818dc721b0bfe14b5d34b491e4262497e4dffd.idx
Deleted
roundcubemail-1.5.tar.gz/vendor/kolab/net_ldap3/.git/objects/pack/pack-cd818dc721b0bfe14b5d34b491e4262497e4dffd.pack
Deleted
roundcubemail-1.5.tar.gz/vendor/pear/crypt_gpg/Crypt/GPG/ProcessHandler.php
Changed
10
1
2
// remember the user id for pretty exception messages
3
// GnuPG 2.1.15 gives me: "USERID_HINT 0000000000000000 ?"
4
$keyId = $tokens1;
5
- if (strcspn($keyId, '0')) {
6
+ if (preg_match('/1-9A-F/', $keyId)) {
7
$username = implode(' ', array_splice($tokens, 2));
8
$this->data'BadPassphrases'$keyId = $username;
9
}
10
roundcubemail-1.5.tar.gz/vendor/phpstan/phpstan/phpstan.phar
Changed
roundcubemail-1.5.tar.gz/vendor/phpstan/phpstan/phpstan.phar.asc
Changed
31
1
2
-----BEGIN PGP SIGNATURE-----
3
4
-iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmVHkT8ACgkQUcZzBf/C
5
-5cAB/RAAg+/UhQeGwHvizVIm77Td9pluVpTgJt/7AM8FnovbiKm/CTpmeZ255qdO
6
-IbViFFyM627WgeIB6cobNfBeDxjNuZSQKIfGwab2Q30CGI5WHNnRdTUwtMyq8kdb
7
-biAz+fbU/bnB+ZAOpmPByxL+m8skWRT9CvvBOn06DK0798fLdF115F6FTUZLZIRg
8
-B6owjK6ZW1GGmukAJp81Q5uM6nM4h4vqcmK1tSinDhixXA1H38jP4wIA6lrqthvV
9
-CCsq9lKepQzJU85Ip464N9OMRrkYf9mh/6c735o59yHS0p26S+5gNYkeT4selXvx
10
-zTq6wk1eB12FW6O0+Bn8V/lNy6BHK/MnAC/RFKPOJW2IOkKJjX4/MauRKrRa1gN6
11
-K4kvYBuFdsg5zAbgpOAdLYoKP/qMP1CialgPrlOJo9nB8sNMRkU+BD9lphW7Jc6v
12
-atzjU2H1xCKVqx1WL5XDBe4vZyVUaAEYfKp6tndTaa4Bi9ZR3BO94fNaxAVIn2Ai
13
-YxC8mw4PVBGMpj/N66vQb6OturvngpACUlNuW3O+/ckj1CSw9QLXNS4pOwIbslL3
14
-Xu58Xj0HE4W2Dd7UmjzDoidl+x1q50gSXzbrzORrI5jMan5McsTUm4HfTYTMnso5
15
-ezoEIneuwXa8hoJqLdiX36Xlf/7K59W7sF2hPDXgaii7L9kN6aM=
16
-=xFKI
17
+iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmVc2xYACgkQUcZzBf/C
18
+5cALsA//anH6sd4y34I63DpmUIAkwhOcJ/a3EJAeMZcPfuK+9GQSb5uvTwcCVdd3
19
+eoBar36Nw/H9I0I+Ksl2CaxUkWhb5LwK1AyBelzIqXA/LgsGyAV0uNYxVaYA72XD
20
+6qXz5K2imvUpcTHtb3YhwpALhdv0DPW41WaWbBmZsxYqQoLS1O8E/eA9ZRqwjO2M
21
+buSHEu626a8q55N0j4Gnogzokm8cdkls3uOXI/pid4VCc0nllrAwXDI6MvXW+NvI
22
+wuqluWNXZsWtkyQzJqVoVbGhgXV91vbFLkwdh1T+ONVvtn6Xt2dBOfa+VdHEhTyZ
23
+cafB11phVXUNyh/B476SjVdYrSdgYWeeJpUVgiHUfbKZT3XJdNRj1bi/lSk4Po9V
24
+BkdMdBf6O1ffCjERfndHYhPiKWv8AEu2t1/a6qXou4DHIdop6VkCNvq/pCzspydg
25
+AXq/2Wd/d2giQXAYEH7ZGESqOTNEPeFy9OEnpY1PCPcTQZEmLepO+UuXqb1B0DHT
26
+sphBYMmrDbzOrWYT+OegzDt/V9w/4+SR7YiEXvNDIfrUjRcx6YeTk/CgfbrC9YLo
27
+QgfB1h+23AseU1M/64De4LMJPHdWg1yDsG7fRJY5UaER1bUGfO12ODjqTICmFoUS
28
+LtV7L7wNXRce5eDecIjk9v9owaywY+zQcdIlGw8B6U4yaij2lHc=
29
+=BpNt
30
-----END PGP SIGNATURE-----
31
roundcubemail-1.5.tar.gz/vendor/sabre/dav/.github
Deleted
2
1
-(directory)
2
roundcubemail-1.5.tar.gz/vendor/sabre/dav/.github/workflows
Deleted
2
1
-(directory)
2
roundcubemail-1.5.tar.gz/vendor/sabre/dav/.github/workflows/ci.yml
Deleted
129
1
2
-name: continuous-integration
3
-on:
4
- push:
5
- branches:
6
- - master
7
- - release/*
8
- pull_request:
9
-
10
-jobs:
11
- code-analysis:
12
- runs-on: ubuntu-latest
13
- name: Code Analysis (PHP ${{ matrix.php-versions }})
14
- strategy:
15
- fail-fast: false
16
- matrix:
17
- php-versions: '7.4'
18
- steps:
19
- - name: Checkout
20
- uses: actions/checkout@v2
21
-
22
- - name: Setup PHP, with composer and extensions
23
- uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
24
- with:
25
- php-version: ${{ matrix.php-versions }}
26
- extensions: mbstring, dom, fileinfo, mysql, redis, opcache
27
- tools: composer
28
-
29
- - name: Get composer cache directory
30
- id: composer-cache
31
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
32
-
33
- - name: Cache composer dependencies
34
- uses: actions/cache@v2
35
- with:
36
- path: ${{ steps.composer-cache.outputs.dir }}
37
- # Use composer.json for key, if composer.lock is not committed.
38
- # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
39
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
40
- restore-keys: ${{ runner.os }}-composer-
41
-
42
- - name: Install Composer dependencies
43
- run: composer install --no-progress --prefer-dist --optimize-autoloader
44
-
45
- - name: PHP CS-Fixer
46
- run: php vendor/bin/php-cs-fixer fix --dry-run --diff
47
-
48
- - name: PHPStan
49
- run: composer phpstan
50
-
51
- unit-testing:
52
- name: PHPUnit (PHP ${{ matrix.php-versions }})
53
- runs-on: ubuntu-latest
54
- strategy:
55
- fail-fast: false
56
- matrix:
57
- php-versions: '7.1', '7.2', '7.3', '7.4', '8.0'
58
- coverage: 'none'
59
- streaming: false
60
- include:
61
- - php-versions: '8.1'
62
- coverage: 'pcov'
63
- streaming: true
64
-
65
- services:
66
- mariadb:
67
- image: mariadb
68
- env:
69
- MARIADB_DATABASE: 'sabredav_test'
70
- MARIADB_ROOT_PASSWORD: root
71
- ports:
72
- - 3306:3306
73
- postgres:
74
- image: postgres
75
- env:
76
- POSTGRES_DB: 'sabredav_test'
77
- POSTGRES_PASSWORD: postgres
78
- ports:
79
- - 5432:5432
80
- steps:
81
- - name: Checkout
82
- uses: actions/checkout@v2
83
-
84
- - name: Setup PHP, with composer and extensions
85
- uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
86
- with:
87
- php-version: ${{ matrix.php-versions }}
88
- extensions: mbstring, dom, fileinfo, pdo_sqlite, pgsql, mysql, redis, opcache
89
- coverage: ${{ matrix.coverage }}
90
- tools: composer
91
-
92
- - name: Get composer cache directory
93
- id: composer-cache
94
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
95
-
96
- - name: Cache composer dependencies
97
- uses: actions/cache@v2
98
- with:
99
- path: ${{ steps.composer-cache.outputs.dir }}
100
- # Use composer.json for key, if composer.lock is not committed.
101
- # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
102
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
103
- restore-keys: ${{ runner.os }}-composer-
104
-
105
- - name: Install Composer dependencies
106
- run: composer install --no-progress --prefer-dist --optimize-autoloader
107
-
108
- - name: PHPUnit
109
- if: matrix.streaming == false
110
- run: vendor/bin/phpunit --verbose --configuration tests/phpunit.xml --coverage-clover=coverage.xml
111
- env:
112
- SABRE_MYSQLUSER: root
113
- SABRE_MYSQLPASS: root
114
- SABRE_MYSQLDSN: "mysql:host=127.0.0.1;port=3306;dbname=sabredav_test"
115
- SABRE_PGSQLDSN: "pgsql:host=127.0.0.1;port=5432;dbname=sabredav_test;user=postgres;password=postgres"
116
-
117
- - name: PHPUnit (with streaming)
118
- if: matrix.streaming == true
119
- run: vendor/bin/phpunit --verbose --configuration tests/phpunit.xml --coverage-clover=coverage.xml
120
- env:
121
- SABRE_MYSQLUSER: root
122
- SABRE_MYSQLPASS: root
123
- SABRE_MYSQLDSN: "mysql:host=127.0.0.1;port=3306;dbname=sabredav_test"
124
- SABRE_PGSQLDSN: "pgsql:host=127.0.0.1;port=5432;dbname=sabredav_test;user=postgres;password=postgres"
125
- RUN_TEST_WITH_STREAMING_PROPFIND: "true"
126
-
127
- - uses: codecov/codecov-action@v2
128
- if: matrix.coverage != 'none'
129
roundcubemail-1.5.tar.gz/vendor/sabre/dav/.php_cs.dist
Deleted
15
1
2
-<?php
3
-
4
-$config = PhpCsFixer\Config::create();
5
-$config->getFinder()
6
- ->exclude('vendor')
7
- ->in(__DIR__);
8
-$config->setRules(
9
- '@PSR1' => true,
10
- '@Symfony' => true
11
-);
12
-
13
-return $config;
14
\ No newline at end of file
15
roundcubemail-1.5.tar.gz/vendor/sabre/dav/.travis.yml
Deleted
75
1
2
-language: php
3
-sudo: required
4
-
5
-branches:
6
- only:
7
- - master
8
-
9
-php:
10
- - 7.1
11
- - 7.2
12
- - 7.3
13
- - 7.4
14
-
15
-env:
16
- global:
17
- - SABRE_MYSQLUSER="root"
18
- - SABRE_MYSQLPASS=""
19
- - SABRE_MYSQLDSN="mysql:host=127.0.0.1;dbname=sabredav_test"
20
- - RUN_PHPCSFIXER="TRUE"
21
- - RUN_PHPUNIT="TRUE"
22
- - RUN_PHPSTAN="FALSE"
23
- matrix:
24
- - PREFER_LOWEST="" TEST_DEPS="" REPORT_COVERAGE="TRUE" WITH_COVERAGE="--coverage-clover=coverage.xml"
25
- - PREFER_LOWEST="--prefer-lowest" TEST_DEPS="tests/Sabre/" REPORT_COVERAGE="FALSE" WITH_COVERAGE=""
26
-
27
-matrix:
28
- include:
29
- - name: 'PHP8'
30
- dist: bionic
31
- php: 8.0
32
- env:
33
- - RUN_PHPCSFIXER="FALSE"
34
- - REPORT_COVERAGE="FALSE"
35
- - name: 'PHPStan'
36
- php: 7.4
37
- env:
38
- - RUN_PHPCSFIXER="FALSE"
39
- - RUN_PHPUNIT="FALSE"
40
- - RUN_PHPSTAN="TRUE"
41
- - REPORT_COVERAGE="FALSE"
42
- - name: 'Test with streaming propfind'
43
- php: 7.2
44
- env:
45
- - RUN_TEST_WITH_STREAMING_PROPFIND="TRUE"
46
- - REPORT_COVERAGE="FALSE"
47
- fast_finish: true
48
-
49
-services:
50
- - mysql
51
- - postgresql
52
-
53
-before_script:
54
- - mysql -u root -h 127.0.0.1 -e 'create database sabredav_test'
55
- - psql -c "create database sabredav_test" -U postgres
56
- - psql -c "create user sabredav with PASSWORD 'sabredav';GRANT ALL PRIVILEGES ON DATABASE sabredav_test TO sabredav" -U postgres
57
- - if $RUN_PHPCSFIXER == "FALSE" ; then composer remove --no-update --dev friendsofphp/php-cs-fixer; fi
58
- - composer update $PREFER_LOWEST
59
-
60
-addons:
61
- postgresql: "9.5"
62
-
63
-script:
64
- - if $RUN_PHPCSFIXER == "TRUE" ; then php vendor/bin/php-cs-fixer fix --dry-run --diff; fi
65
- - if $RUN_PHPUNIT == "TRUE" ; then php vendor/bin/phpunit --configuration tests/phpunit.xml $WITH_COVERAGE $TEST_DEPS; fi
66
- - if $RUN_PHPUNIT == "TRUE" ; then rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini; fi
67
- - if $RUN_PHPSTAN == "TRUE" ; then composer phpstan; fi
68
-
69
-after_success:
70
- - if $REPORT_COVERAGE == "TRUE" ; then bash <(curl -s https://codecov.io/bash); fi
71
-
72
-cache:
73
- directories:
74
- - $HOME/.composer/cache
75
roundcubemail-1.5.tar.gz/vendor/sabre/dav/composer.json
Changed
42
1
2
"ext-json": "*"
3
},
4
"require-dev" : {
5
- "friendsofphp/php-cs-fixer": "^2.17.1",
6
- "phpstan/phpstan": "^0.12",
7
- "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0",
8
- "evert/phpdoc-md" : "~0.1.0",
9
- "monolog/monolog": "^1.18"
10
+ "friendsofphp/php-cs-fixer": "^2.19",
11
+ "monolog/monolog": "^1.27",
12
+ "phpstan/phpstan": "^0.12 || ^1.0",
13
+ "phpstan/phpstan-phpunit": "^1.0",
14
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
15
},
16
"suggest" : {
17
"ext-curl" : "*",
18
19
},
20
"autoload": {
21
"psr-4" : {
22
- "Sabre\\DAV\\" : "lib/DAV/",
23
- "Sabre\\DAVACL\\" : "lib/DAVACL/",
24
- "Sabre\\CalDAV\\" : "lib/CalDAV/",
25
- "Sabre\\CardDAV\\" : "lib/CardDAV/"
26
+ "Sabre\\" : "lib/"
27
}
28
},
29
"autoload-dev" : {
30
"psr-4" : {
31
- "Sabre\\" : "tests/Sabre/",
32
- "Sabre\\CalDAV\\" : "tests/Sabre/CalDAV",
33
- "Sabre\\CardDAV\\" : "tests/Sabre/CardDAV",
34
- "Sabre\\DAV\\" : "tests/Sabre/DAV",
35
- "Sabre\\DAV\\Property\\" : "tests/Sabre/DAV/Xml/Property",
36
- "Sabre\\DAVACL\\" : "tests/Sabre/DAVACL",
37
- "Sabre\\HTTP\\" : "tests/Sabre/HTTP"
38
+ "Sabre\\" : "tests/Sabre/"
39
}
40
},
41
"support" : {
42
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php
Changed
19
1
2
*
3
* This default may well be good enough for personal use, and calendars
4
* that aren't very large. But if you anticipate high usage, big calendars
5
- * or high loads, you are strongly adviced to optimize certain paths.
6
+ * or high loads, you are strongly advised to optimize certain paths.
7
*
8
* The best way to do so is override this method and to optimize
9
* specifically for 'common filters'.
10
11
* Note that especially time-range-filters may be difficult to parse. A
12
* time-range filter specified on a VEVENT must for instance also handle
13
* recurrence rules correctly.
14
- * A good example of how to interprete all these filters can also simply
15
+ * A good example of how to interpret all these filters can also simply
16
* be found in \Sabre\CalDAV\CalendarQueryFilter. This class is as correct
17
* as possible, so it gives you a good idea on what type of stuff you need
18
* to think of.
19
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php
Changed
10
1
2
* @param int $syncLevel
3
* @param int $limit
4
*
5
- * @return array
6
+ * @return array|null
7
*/
8
public function getChangesForCalendar($calendarId, $syncToken, $syncLevel, $limit = null)
9
{
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Backend/SyncSupport.php
Changed
10
1
2
* @param int $syncLevel
3
* @param int $limit
4
*
5
- * @return array
6
+ * @return array|null
7
*/
8
public function getChangesForCalendar($calendarId, $syncToken, $syncLevel, $limit = null);
9
}
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Calendar.php
Changed
33
1
2
* The contents of the new file must be a valid ICalendar string.
3
*
4
* @param string $name
5
- * @param resource $calendarData
6
+ * @param resource $data
7
*
8
* @return string|null
9
*/
10
- public function createFile($name, $calendarData = null)
11
+ public function createFile($name, $data = null)
12
{
13
- if (is_resource($calendarData)) {
14
- $calendarData = stream_get_contents($calendarData);
15
+ if (is_resource($data)) {
16
+ $data = stream_get_contents($data);
17
}
18
19
- return $this->caldavBackend->createCalendarObject($this->calendarInfo'id', $name, $calendarData);
20
+ return $this->caldavBackend->createCalendarObject($this->calendarInfo'id', $name, $data);
21
}
22
23
/**
24
25
* @param int $syncLevel
26
* @param int $limit
27
*
28
- * @return array
29
+ * @return array|null
30
*/
31
public function getChanges($syncToken, $syncLevel, $limit = null)
32
{
33
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/CalendarHome.php
Changed
14
1
2
*
3
* This is currently not allowed
4
*
5
- * @param string $filename
6
+ * @param string $name
7
* @param resource $data
8
*/
9
- public function createFile($filename, $data = null)
10
+ public function createFile($name, $data = null)
11
{
12
throw new DAV\Exception\MethodNotAllowed('Creating new files in this collection is not supported');
13
}
14
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php
Changed
15
1
2
protected $senderEmail;
3
4
/**
5
- * ITipMessage.
6
- *
7
- * @var ITip\Message
8
- */
9
- protected $itipMessage;
10
-
11
- /**
12
* Creates the email handler.
13
*
14
* @param string $senderEmail. The 'senderEmail' is the email that shows up
15
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php
Changed
24
1
2
*
3
* This method may update $newObject to add any status changes.
4
*
5
- * @param VCalendar|string $oldObject
6
- * @param array $ignore any addresses to not send messages to
7
- * @param bool $modified a marker to indicate that the original object
8
- * modified by this process
9
+ * @param VCalendar|string|null $oldObject
10
+ * @param array $ignore any addresses to not send messages to
11
+ * @param bool $modified a marker to indicate that the original object modified by this process
12
*/
13
protected function processICalendarChange($oldObject, VCalendar $newObject, array $addresses, array $ignore = , &$modified = false)
14
{
15
16
*
17
* @return bool
18
*/
19
- private function scheduleReply(RequestInterface $request)
20
+ protected function scheduleReply(RequestInterface $request)
21
{
22
$scheduleReply = $request->getHeader('Schedule-Reply');
23
24
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php
Changed
10
1
2
'is-not-defined' => false,
3
'param-filters' => ,
4
'text-match' => null,
5
- 'time-range' => false,
6
+ 'time-range' => ,
7
;
8
9
$att = $reader->parseAttributes();
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CardDAV/AddressBook.php
Changed
36
1
2
* This method may return an ETag.
3
*
4
* @param string $name
5
- * @param resource $vcardData
6
+ * @param resource $data
7
*
8
* @return string|null
9
*/
10
- public function createFile($name, $vcardData = null)
11
+ public function createFile($name, $data = null)
12
{
13
- if (is_resource($vcardData)) {
14
- $vcardData = stream_get_contents($vcardData);
15
+ if (is_resource($data)) {
16
+ $data = stream_get_contents($data);
17
}
18
// Converting to UTF-8, if needed
19
- $vcardData = DAV\StringUtil::ensureUTF8($vcardData);
20
+ $data = DAV\StringUtil::ensureUTF8($data);
21
22
- return $this->carddavBackend->createCard($this->addressBookInfo'id', $name, $vcardData);
23
+ return $this->carddavBackend->createCard($this->addressBookInfo'id', $name, $data);
24
}
25
26
/**
27
28
* @param int $syncLevel
29
* @param int $limit
30
*
31
- * @return array
32
+ * @return array|null
33
*/
34
public function getChanges($syncToken, $syncLevel, $limit = null)
35
{
36
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php
Changed
14
1
2
*
3
* This is currently not allowed
4
*
5
- * @param string $filename
6
+ * @param string $name
7
* @param resource $data
8
*/
9
- public function createFile($filename, $data = null)
10
+ public function createFile($name, $data = null)
11
{
12
throw new DAV\Exception\MethodNotAllowed('Creating new files in this collection is not supported');
13
}
14
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php
Changed
10
1
2
* @param int $syncLevel
3
* @param int $limit
4
*
5
- * @return array
6
+ * @return array|null
7
*/
8
public function getChangesForAddressBook($addressBookId, $syncToken, $syncLevel, $limit = null)
9
{
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CardDAV/Backend/SyncSupport.php
Changed
10
1
2
* @param int $syncLevel
3
* @param int $limit
4
*
5
- * @return array
6
+ * @return array|null
7
*/
8
public function getChangesForAddressBook($addressBookId, $syncToken, $syncLevel, $limit = null);
9
}
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php
Changed
24
1
2
public $hrefs;
3
4
/**
5
- * The mimetype of the content that should be returend. Usually
6
+ * The mimetype of the content that should be returned. Usually
7
* text/vcard.
8
*
9
* @var string
10
11
public $version = null;
12
13
/**
14
+ * An array with requested vcard properties.
15
+ *
16
+ * @var array
17
+ */
18
+ public $addressDataProperties;
19
+
20
+ /**
21
* The deserialize method is called during xml parsing.
22
*
23
* This method is called statically, this is because in theory this method
24
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/INodeByPath.php
Added
38
1
2
+<?php
3
+
4
+declare(strict_types=1);
5
+
6
+namespace Sabre\DAV;
7
+
8
+/**
9
+ * INodeByPath.
10
+ *
11
+ * This interface adds a tiny bit of functionality to collections.
12
+ *
13
+ * Getting a node that is deep in the tree normally requires going trough each parent node
14
+ * which can cause a significant performance overhead.
15
+ *
16
+ * Implementing this interface allows solving this overhead by directly jumping to the target node.
17
+ *
18
+ * @copyright Copyright (C) Robin Appelman (https://icewind.nl/)
19
+ * @author Robin Appelman (https://icewind.nl/)
20
+ * @license http://sabre.io/license/ Modified BSD License
21
+ */
22
+interface INodeByPath
23
+{
24
+ /**
25
+ * Returns the INode object for the requested path.
26
+ *
27
+ * In case where this collection can not retrieve the requested node
28
+ * but also can not determine that the node does not exists,
29
+ * null should be returned to signal that the caller should fallback
30
+ * to walking the directory tree.
31
+ *
32
+ * @param string $path
33
+ *
34
+ * @return INode|null
35
+ */
36
+ public function getNodeForPath($path);
37
+}
38
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/Sync/ISyncCollection.php
Changed
10
1
2
* @param int $syncLevel
3
* @param int $limit
4
*
5
- * @return array
6
+ * @return array|null
7
*/
8
public function getChanges($syncToken, $syncLevel, $limit = null);
9
}
10
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/Tree.php
Changed
48
1
2
* @author Evert Pot (http://evertpot.com/)
3
* @license http://sabre.io/license/ Modified BSD License
4
*/
5
-class Tree
6
+class Tree implements INodeByPath
7
{
8
/**
9
* The root node.
10
11
return $this->rootNode;
12
}
13
14
- // Attempting to fetch its parent
15
- list($parentName, $baseName) = Uri\split($path);
16
+ $parts = explode('/', $path);
17
+ $node = $this->rootNode;
18
19
- // If there was no parent, we must simply ask it from the root node.
20
- if ('' === $parentName) {
21
- $node = $this->rootNode->getChild($baseName);
22
- } else {
23
- // Otherwise, we recursively grab the parent and ask him/her.
24
- $parent = $this->getNodeForPath($parentName);
25
-
26
- if (!($parent instanceof ICollection)) {
27
+ while (count($parts)) {
28
+ if (!($node instanceof ICollection)) {
29
throw new Exception\NotFound('Could not find node at path: '.$path);
30
}
31
- $node = $parent->getChild($baseName);
32
+
33
+ if ($node instanceof INodeByPath) {
34
+ $targetNode = $node->getNodeForPath(implode('/', $parts));
35
+ if ($targetNode instanceof Node) {
36
+ $node = $targetNode;
37
+ break;
38
+ }
39
+ }
40
+
41
+ $part = array_shift($parts);
42
+ if ('' !== $part) {
43
+ $node = $node->getChild($part);
44
+ }
45
}
46
47
$this->cache$path = $node;
48
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/Version.php
Changed
8
1
2
/**
3
* Full version number.
4
*/
5
- public const VERSION = '4.4.0';
6
+ public const VERSION = '4.5.1';
7
}
8
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php
Changed
73
1
2
*
3
* This is currently only used in WebDAV-Sync
4
*
5
- * @var string
6
+ * @var string|null
7
*/
8
protected $httpStatus;
9
10
11
*/
12
public function xmlSerialize(Writer $writer)
13
{
14
- if ($status = $this->getHTTPStatus()) {
15
- $writer->writeElement('{DAV:}status', 'HTTP/1.1 '.$status.' '.\Sabre\HTTP\Response::$statusCodes$status);
16
- }
17
+ /*
18
+ * Accordingly to the RFC the element looks like:
19
+ * <!ELEMENT response (href, ((href*, status)|(propstat+)), error?, responsedescription? , location?) >
20
+ *
21
+ * So the response
22
+ * - MUST contain a href and
23
+ * - EITHER a status and additional href(s)
24
+ * OR one or more propstat(s)
25
+ */
26
$writer->writeElement('{DAV:}href', $writer->contextUri.\Sabre\HTTP\encodePath($this->getHref()));
27
28
$empty = true;
29
+ $httpStatus = $this->getHTTPStatus();
30
31
+ // Add propstat elements
32
foreach ($this->getResponseProperties() as $status => $properties) {
33
// Skipping empty lists
34
if (!$properties || (!is_int($status) && !ctype_digit($status))) {
35
36
$writer->writeElement('{DAV:}status', 'HTTP/1.1 '.$status.' '.\Sabre\HTTP\Response::$statusCodes$status);
37
$writer->endElement(); // {DAV:}propstat
38
}
39
+
40
+ // The WebDAV spec only allows the status element on responses _without_ a propstat
41
if ($empty) {
42
- /*
43
- * The WebDAV spec _requires_ at least one DAV:propstat to appear for
44
- * every DAV:response. In some circumstances however, there are no
45
- * properties to encode.
46
- *
47
- * In those cases we MUST specify at least one DAV:propstat anyway, with
48
- * no properties.
49
- */
50
- $writer->writeElement('{DAV:}propstat',
51
- '{DAV:}prop' => ,
52
- '{DAV:}status' => 'HTTP/1.1 418 '.\Sabre\HTTP\Response::$statusCodes418,
53
- );
54
+ if (null !== $httpStatus) {
55
+ $writer->writeElement('{DAV:}status', 'HTTP/1.1 '.$httpStatus.' '.\Sabre\HTTP\Response::$statusCodes$httpStatus);
56
+ } else {
57
+ /*
58
+ * The WebDAV spec _requires_ at least one DAV:propstat to appear for
59
+ * every DAV:response if there is no status.
60
+ * In some circumstances however, there are no properties to encode.
61
+ *
62
+ * In those cases we MUST specify at least one DAV:propstat anyway, with
63
+ * no properties.
64
+ */
65
+ $writer->writeElement('{DAV:}propstat',
66
+ '{DAV:}prop' => ,
67
+ '{DAV:}status' => 'HTTP/1.1 418 '.\Sabre\HTTP\Response::$statusCodes418,
68
+ );
69
+ }
70
}
71
}
72
73
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php
Changed
21
1
2
protected $hrefs;
3
4
/**
5
+ * Automatically prefix the url with the server base directory.
6
+ * Note: use of this property in code was removed in PR:
7
+ * https://github.com/sabre-io/dav/pull/801
8
+ * But the property is left here because old data may still exist
9
+ * that has this property saved.
10
+ * See discussion in issue:
11
+ * https://github.com/sabre-io/Baikal/issues/1154.
12
+ *
13
+ * @var bool
14
+ */
15
+ protected $autoPrefix = true;
16
+
17
+ /**
18
* Constructor.
19
*
20
* You must either pass a string for a single href, or an array of hrefs.
21
roundcubemail-1.5.tar.gz/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php
Changed
10
1
2
public function getPrincipalByPath($path);
3
4
/**
5
- * Updates one ore more webdav properties on a principal.
6
+ * Updates one or more webdav properties on a principal.
7
*
8
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
9
* To do the actual updates, you must tell this object which properties
10
roundcubemail-1.5.tar.gz/vendor/sabre/vobject/lib/DateTimeParser.php
Changed
10
1
2
if (!$asString) {
3
$invert = false;
4
5
- if ('-' === $matches'plusminus') {
6
+ if (isset($matches'plusminus') && '-' === $matches'plusminus') {
7
$invert = true;
8
}
9
10
roundcubemail-1.5.tar.gz/vendor/sabre/vobject/lib/ITip/Broker.php
Changed
14
1
2
* people. If the user was an attendee, we need to make sure that the
3
* organizer gets the 'declined' message.
4
*
5
- * @param VCalendar|string $calendar
6
- * @param string|array $userHref
7
- * @param VCalendar|string $oldCalendar
8
+ * @param VCalendar|string $calendar
9
+ * @param string|array $userHref
10
+ * @param VCalendar|string|null $oldCalendar
11
*
12
* @return array
13
*/
14
roundcubemail-1.5.tar.gz/vendor/sabre/vobject/lib/Version.php
Changed
8
1
2
/**
3
* Full version number.
4
*/
5
- public const VERSION = '4.5.3';
6
+ public const VERSION = '4.5.4';
7
}
8
roundcubemail.dsc
Changed
10
1
2
Source: roundcubemail
3
Binary: roundcubemail
4
Architecture: all
5
-Version: 1:1.5.6.2-1~kolab1
6
+Version: 1:1.5.6.3-1~kolab1
7
Maintainer: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
8
Uploaders: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
9
Homepage: http://www.roundcube.net/
10