Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package roundcubemail for openSUSE:Factory 
checked in at 2026-02-09 11:43:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/roundcubemail (Old)
 and      /work/SRC/openSUSE:Factory/.roundcubemail.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "roundcubemail"

Mon Feb  9 11:43:32 2026 rev:91 rq:1331861 version:1.6.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/roundcubemail/roundcubemail.changes      
2025-12-22 22:56:04.021910012 +0100
+++ /work/SRC/openSUSE:Factory/.roundcubemail.new.1670/roundcubemail.changes    
2026-02-09 11:44:07.419674637 +0100
@@ -1,0 +2,19 @@
+Sun Feb  8 12:51:32 UTC 2026 - Lars Vogdt <[email protected]>
+
+- update to 1.6.13
+  This is a security update to the stable version 1.6 of Roundcube Webmail.
+  It provides fixes to recently reported security vulnerabilities:
+  + Fix CSS injection vulnerability reported by CERT Polska.
+  + Fix remote image blocking bypass via SVG content reported by nullcathedral.
+
+  This version is considered stable and we recommend to update all productive 
+  installations of Roundcube 1.6.x with it. Please do backup your data 
+  before updating!
+
+  CHANGELOG
+  + Managesieve: Fix handling of string-list format values for date 
+    tests in Out of Office (#10075)
+  + Fix CSS injection vulnerability reported by CERT Polska.
+  + Fix remote image blocking bypass via SVG content reported by nullcathedral.
+
+-------------------------------------------------------------------

Old:
----
  roundcubemail-1.6.12-complete.tar.gz
  roundcubemail-1.6.12-complete.tar.gz.asc

New:
----
  roundcubemail-1.6.13-complete.tar.gz
  roundcubemail-1.6.13-complete.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ roundcubemail.spec ++++++
--- /var/tmp/diff_new_pack.aTDqiD/_old  2026-02-09 11:44:08.055701395 +0100
+++ /var/tmp/diff_new_pack.aTDqiD/_new  2026-02-09 11:44:08.059701563 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package roundcubemail
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %define roundcubeconfigpath %{_sysconfdir}/%{name}
 
 Name:           roundcubemail
-Version:        1.6.12
+Version:        1.6.13
 Release:        0
 Summary:        A browser-based multilingual IMAP client
 License:        BSD-3-Clause AND GPL-2.0-only AND GPL-3.0-or-later

++++++ roundcubemail-1.6.12-complete.tar.gz -> 
roundcubemail-1.6.13-complete.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/CHANGELOG.md 
new/roundcubemail-1.6.13/CHANGELOG.md
--- old/roundcubemail-1.6.12/CHANGELOG.md       2025-12-14 09:22:45.000000000 
+0100
+++ new/roundcubemail-1.6.13/CHANGELOG.md       2026-02-08 10:33:27.000000000 
+0100
@@ -1,5 +1,11 @@
 # Changelog Roundcube Webmail
 
+## Release 1.6.13
+
+- Managesieve: Fix handling of string-list format values for date tests in Out 
of Office (#10075)
+- Fix remote image blocking bypass via SVG content reported by nullcathedral
+- Fix CSS injection vulnerability reported by CERT Polska
+
 ## Release 1.6.12
 
 - Support IPv6 in database DSN (#9937)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/composer.lock 
new/roundcubemail-1.6.13/composer.lock
--- old/roundcubemail-1.6.12/composer.lock      2025-12-14 09:22:46.000000000 
+0100
+++ new/roundcubemail-1.6.13/composer.lock      2026-02-08 10:33:28.000000000 
+0100
@@ -667,6 +667,7 @@
                 "issues": 
"http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_CommandLine";,
                 "source": "https://github.com/pear/Console_CommandLine";
             },
+            "abandoned": true,
             "time": "2023-04-02T18:49:53+00:00"
         },
         {
@@ -1085,16 +1086,16 @@
         },
         {
             "name": "pear/pear-core-minimal",
-            "version": "v1.10.16",
+            "version": "v1.10.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/pear-core-minimal.git";,
-                "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033"
+                "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033";,
-                "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033",
+                "url": 
"https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1";,
+                "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
                 "shasum": ""
             },
             "require": {
@@ -1130,7 +1131,7 @@
                 "issues": 
"http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR";,
                 "source": "https://github.com/pear/pear-core-minimal";
             },
-            "time": "2024-11-24T22:27:58+00:00"
+            "time": "2025-12-14T20:37:07+00:00"
         },
         {
             "name": "pear/pear_exception",
@@ -1584,15 +1585,15 @@
     "packages-dev": [],
     "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": [],
+    "stability-flags": {},
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {
         "php": ">=7.3.0"
     },
-    "platform-dev": [],
+    "platform-dev": {},
     "platform-overrides": {
         "php": "7.3"
     },
-    "plugin-api-version": "2.2.0"
+    "plugin-api-version": "2.9.0"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/index.php 
new/roundcubemail-1.6.13/index.php
--- old/roundcubemail-1.6.12/index.php  2025-12-14 09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/index.php  2026-02-08 10:33:27.000000000 +0100
@@ -2,7 +2,7 @@
 /**
  +-------------------------------------------------------------------------+
  | Roundcube Webmail IMAP Client                                           |
- | Version 1.6.12                                                           |
+ | Version 1.6.13                                                           |
  |                                                                         |
  | Copyright (C) The Roundcube Dev Team                                    |
  |                                                                         |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/installer/index.php 
new/roundcubemail-1.6.13/installer/index.php
--- old/roundcubemail-1.6.12/installer/index.php        2025-12-14 
09:22:44.000000000 +0100
+++ new/roundcubemail-1.6.13/installer/index.php        2026-02-08 
10:33:27.000000000 +0100
@@ -3,7 +3,7 @@
 /**
  +-------------------------------------------------------------------------+
  | Roundcube Webmail setup tool                                            |
- | Version 1.6.12                                                         |
+ | Version 1.6.13                                                         |
  |                                                                         |
  | Copyright (C) The Roundcube Dev Team                                    |
  |                                                                         |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/plugins/managesieve/Changelog 
new/roundcubemail-1.6.13/plugins/managesieve/Changelog
--- old/roundcubemail-1.6.12/plugins/managesieve/Changelog      2025-12-14 
09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/plugins/managesieve/Changelog      2026-02-08 
10:33:27.000000000 +0100
@@ -1,3 +1,4 @@
+- Fix handling of string-list format values for date tests in Out of Office 
(#10075)
 - Fix invalid line break characters in multi-line text in Sieve scripts (#9543)
 - Fix javascript error when relational or spamtest extension is not enabled 
(#9139)
 - Removed managesieve_usetls option (in favor of the scheme prefix in 
managesieve_host)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
 
new/roundcubemail-1.6.13/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
--- 
old/roundcubemail-1.6.12/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
 2025-12-14 09:22:45.000000000 +0100
+++ 
new/roundcubemail-1.6.13/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
 2026-02-08 10:33:27.000000000 +0100
@@ -150,6 +150,14 @@
                     }
                 }
 
+                // According to RFC5260, currentdate target can be a 
string-list,
+                // but here we support only a single value (#10074)
+                foreach ($rule['tests'] as $i => $r) {
+                    if ($r['test'] == 'currentdate' && is_array($r['arg'])) {
+                        $rule['tests'][$i]['arg'] = array_first($r['arg']);
+                    }
+                }
+
                 $this->vacation = array_merge($rule['actions'][0], [
                         'idx'      => $idx,
                         'disabled' => $rule['disabled'] || !$active,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/program/include/iniset.php 
new/roundcubemail-1.6.13/program/include/iniset.php
--- old/roundcubemail-1.6.12/program/include/iniset.php 2025-12-14 
09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/program/include/iniset.php 2026-02-08 
10:33:27.000000000 +0100
@@ -24,7 +24,7 @@
 }
 
 // application constants
-define('RCMAIL_VERSION', '1.6.12');
+define('RCMAIL_VERSION', '1.6.13');
 define('RCMAIL_START', microtime(true));
 
 if (!defined('INSTALL_PATH')) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/program/lib/Roundcube/bootstrap.php 
new/roundcubemail-1.6.13/program/lib/Roundcube/bootstrap.php
--- old/roundcubemail-1.6.12/program/lib/Roundcube/bootstrap.php        
2025-12-14 09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/program/lib/Roundcube/bootstrap.php        
2026-02-08 10:33:27.000000000 +0100
@@ -57,7 +57,7 @@
 }
 
 // framework constants
-define('RCUBE_VERSION', '1.6.12');
+define('RCUBE_VERSION', '1.6.13');
 define('RCUBE_CHARSET', 'UTF-8');
 define('RCUBE_TEMP_FILE_PREFIX', 'RCMTEMP');
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/program/lib/Roundcube/rcube_utils.php 
new/roundcubemail-1.6.13/program/lib/Roundcube/rcube_utils.php
--- old/roundcubemail-1.6.12/program/lib/Roundcube/rcube_utils.php      
2025-12-14 09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/program/lib/Roundcube/rcube_utils.php      
2026-02-08 10:33:27.000000000 +0100
@@ -432,7 +432,7 @@
      */
     public static function mod_css_styles($source, $container_id, 
$allow_remote = false, $prefix = '')
     {
-        $source   = self::xss_entity_decode($source);
+        $source = self::xss_entity_decode($source);
 
         // No @import allowed
         // TODO: We should just remove it, not invalidate the whole content
@@ -445,6 +445,9 @@
             return '/* invalid! */';
         }
 
+        // remove html and css comments
+        $source = preg_replace('/(^\s*<\!--)|(-->\s*$)/m', '', $source);
+
         // To prevent from a double-escaping tricks we consider a script with
         // any escape sequences (after de-escaping them above) an evil script.
         // This probably catches many valid scripts, but we\'re on the safe 
side.
@@ -452,8 +455,12 @@
             return '/* evil! */';
         }
 
-        // remove html comments
-        $source = preg_replace('/(^\s*<\!--)|(-->\s*$)/m', '', $source);
+        // If after removing comments there are still comments it's most 
likely a hack
+        // Note: In <=1.6 comments are being removed by xss_entity_decode() 
above
+        // $source = self::remove_css_comments($source);
+        if (strpos($source, '/*') !== false || strpos($source, '<!--') !== 
false) {
+            return '/* evil! */';
+        }
 
         $url_callback = static function ($url) use ($allow_remote) {
             if (strpos($url, 'data:image') === 0) {
@@ -468,8 +475,14 @@
         $replacements = new rcube_string_replacer();
 
         // cut out all contents between { and }
-        while (($pos = strpos($source, '{', $last_pos)) && ($pos2 = 
strpos($source, '}', $pos))) {
-            $nested = strpos($source, '{', $pos+1);
+        while (($pos = strpos($source, '{', $last_pos)) && ($pos2 = 
strpos($source, '}', $pos) ?: (strlen($source) - 1))) {
+            // In case there was no closing brace add one
+            if ($source[$pos2] != '}') {
+                $pos2++;
+                $source .= '}';
+            }
+
+            $nested = strpos($source, '{', $pos + 1);
             if ($nested && $nested < $pos2) { // when dealing with nested 
blocks (e.g. @media), take the inner one
                 $pos = $nested;
             }
@@ -559,7 +572,7 @@
                                 $value .= ' url(' . $url . ')';
                             }
                         }
-                    } elseif (preg_match('/;.*/', $val)) {
+                    } elseif (preg_match('/;.+/', $val)) {
                         // Invalid or evil content, ignore
                         continue;
                     } else {
@@ -595,19 +608,8 @@
      */
     public static function parse_css_block($style)
     {
-        $pos = 0;
-
-        // first remove comments
-        while (($pos = strpos($style, '/*', $pos)) !== false) {
-            $end = strpos($style, '*/', $pos+2);
-
-            if ($end === false) {
-                $style = substr($style, 0, $pos);
-            }
-            else {
-                $style = substr_replace($style, '', $pos, $end - $pos + 2);
-            }
-        }
+        // Remove comments
+        $style = self::remove_css_comments($style);
 
         // Replace new lines with spaces
         $style = preg_replace('/[\r\n]+/', ' ', $style);
@@ -660,6 +662,30 @@
     }
 
     /**
+     * Remove CSS comments from styles.
+     *
+     * @param string $style CSS style
+     *
+     * @return string CSS style
+     */
+    public static function remove_css_comments($style)
+    {
+        $pos = 0;
+
+        while (($pos = strpos($style, '/*', $pos)) !== false) {
+            $end = strpos($style, '*/', $pos + 2);
+
+            if ($end === false) {
+                $style = substr($style, 0, $pos);
+            } else {
+                $style = substr_replace($style, '', $pos, $end - $pos + 2);
+            }
+        }
+
+        return $style;
+    }
+
+    /**
      * Explode css style value
      *
      * @param string $style CSS style
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/program/lib/Roundcube/rcube_washtml.php 
new/roundcubemail-1.6.13/program/lib/Roundcube/rcube_washtml.php
--- old/roundcubemail-1.6.12/program/lib/Roundcube/rcube_washtml.php    
2025-12-14 09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/program/lib/Roundcube/rcube_washtml.php    
2026-02-08 10:33:27.000000000 +0100
@@ -482,8 +482,7 @@
             || $attr == 'color-profile' // SVG
             || ($attr == 'poster' && $tag == 'video')
             || ($attr == 'src' && 
preg_match('/^(img|image|source|input|video|audio)$/i', $tag))
-            || ($tag == 'use' && $attr == 'href') // SVG
-            || ($tag == 'image' && $attr == 'href'); // SVG
+            || ($attr == 'href' && preg_match('/^(feimage|image|use)$/i', 
$tag)); // SVG
     }
 
     /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/public_html/index.php 
new/roundcubemail-1.6.13/public_html/index.php
--- old/roundcubemail-1.6.12/public_html/index.php      2025-12-14 
09:22:45.000000000 +0100
+++ new/roundcubemail-1.6.13/public_html/index.php      2026-02-08 
10:33:27.000000000 +0100
@@ -3,7 +3,7 @@
 /*
  +-----------------------------------------------------------------------+
  | Roundcube Webmail IMAP Client                                         |
- | Version 1.6.12                                                       |
+ | Version 1.6.13                                                       |
  |                                                                       |
  | Copyright (C) The Roundcube Dev Team                                  |
  |                                                                       |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/vendor/autoload.php 
new/roundcubemail-1.6.13/vendor/autoload.php
--- old/roundcubemail-1.6.12/vendor/autoload.php        2025-12-14 
09:22:51.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/autoload.php        2026-02-08 
10:33:34.000000000 +0100
@@ -2,7 +2,22 @@
 
 // autoload.php @generated by Composer
 
+if (PHP_VERSION_ID < 50600) {
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you 
are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via 
"composer self-update --2.2". Aborting.'.PHP_EOL;
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, $err);
+        } elseif (!headers_sent()) {
+            echo $err;
+        }
+    }
+    throw new RuntimeException($err);
+}
+
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit0e572040d941ed19e19bbb9fc5945df6::getLoader();
-// generated by Roundcube install 1.6.12
+return ComposerAutoloaderInitd30534b7ccef70d5be1f4ba9bc89dbe4::getLoader();
+// generated by Roundcube install 1.6.13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/vendor/composer/ClassLoader.php 
new/roundcubemail-1.6.13/vendor/composer/ClassLoader.php
--- old/roundcubemail-1.6.12/vendor/composer/ClassLoader.php    2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/ClassLoader.php    2026-01-29 
11:40:53.000000000 +0100
@@ -42,35 +42,37 @@
  */
 class ClassLoader
 {
-    /** @var ?string */
+    /** @var \Closure(string):void */
+    private static $includeFile;
+
+    /** @var string|null */
     private $vendorDir;
 
     // PSR-4
     /**
-     * @var array[]
-     * @psalm-var array<string, array<string, int>>
+     * @var array<string, array<string, int>>
      */
     private $prefixLengthsPsr4 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, array<int, string>>
+     * @var array<string, list<string>>
      */
     private $prefixDirsPsr4 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, string>
+     * @var list<string>
      */
     private $fallbackDirsPsr4 = array();
 
     // PSR-0
     /**
-     * @var array[]
-     * @psalm-var array<string, array<string, string[]>>
+     * List of PSR-0 prefixes
+     *
+     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' 
=> array('path', 'path2')))
+     *
+     * @var array<string, array<string, list<string>>>
      */
     private $prefixesPsr0 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, string>
+     * @var list<string>
      */
     private $fallbackDirsPsr0 = array();
 
@@ -78,8 +80,7 @@
     private $useIncludePath = false;
 
     /**
-     * @var string[]
-     * @psalm-var array<string, string>
+     * @var array<string, string>
      */
     private $classMap = array();
 
@@ -87,29 +88,29 @@
     private $classMapAuthoritative = false;
 
     /**
-     * @var bool[]
-     * @psalm-var array<string, bool>
+     * @var array<string, bool>
      */
     private $missingClasses = array();
 
-    /** @var ?string */
+    /** @var string|null */
     private $apcuPrefix;
 
     /**
-     * @var self[]
+     * @var array<string, self>
      */
     private static $registeredLoaders = array();
 
     /**
-     * @param ?string $vendorDir
+     * @param string|null $vendorDir
      */
     public function __construct($vendorDir = null)
     {
         $this->vendorDir = $vendorDir;
+        self::initializeIncludeClosure();
     }
 
     /**
-     * @return string[]
+     * @return array<string, list<string>>
      */
     public function getPrefixes()
     {
@@ -121,8 +122,7 @@
     }
 
     /**
-     * @return array[]
-     * @psalm-return array<string, array<int, string>>
+     * @return array<string, list<string>>
      */
     public function getPrefixesPsr4()
     {
@@ -130,8 +130,7 @@
     }
 
     /**
-     * @return array[]
-     * @psalm-return array<string, string>
+     * @return list<string>
      */
     public function getFallbackDirs()
     {
@@ -139,8 +138,7 @@
     }
 
     /**
-     * @return array[]
-     * @psalm-return array<string, string>
+     * @return list<string>
      */
     public function getFallbackDirsPsr4()
     {
@@ -148,8 +146,7 @@
     }
 
     /**
-     * @return string[] Array of classname => path
-     * @psalm-return array<string, string>
+     * @return array<string, string> Array of classname => path
      */
     public function getClassMap()
     {
@@ -157,8 +154,7 @@
     }
 
     /**
-     * @param string[] $classMap Class to filename map
-     * @psalm-param array<string, string> $classMap
+     * @param array<string, string> $classMap Class to filename map
      *
      * @return void
      */
@@ -175,24 +171,25 @@
      * Registers a set of PSR-0 directories for a given prefix, either
      * appending or prepending to the ones previously set for this prefix.
      *
-     * @param string          $prefix  The prefix
-     * @param string[]|string $paths   The PSR-0 root directories
-     * @param bool            $prepend Whether to prepend the directories
+     * @param string              $prefix  The prefix
+     * @param list<string>|string $paths   The PSR-0 root directories
+     * @param bool                $prepend Whether to prepend the directories
      *
      * @return void
      */
     public function add($prefix, $paths, $prepend = false)
     {
+        $paths = (array) $paths;
         if (!$prefix) {
             if ($prepend) {
                 $this->fallbackDirsPsr0 = array_merge(
-                    (array) $paths,
+                    $paths,
                     $this->fallbackDirsPsr0
                 );
             } else {
                 $this->fallbackDirsPsr0 = array_merge(
                     $this->fallbackDirsPsr0,
-                    (array) $paths
+                    $paths
                 );
             }
 
@@ -201,19 +198,19 @@
 
         $first = $prefix[0];
         if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+            $this->prefixesPsr0[$first][$prefix] = $paths;
 
             return;
         }
         if ($prepend) {
             $this->prefixesPsr0[$first][$prefix] = array_merge(
-                (array) $paths,
+                $paths,
                 $this->prefixesPsr0[$first][$prefix]
             );
         } else {
             $this->prefixesPsr0[$first][$prefix] = array_merge(
                 $this->prefixesPsr0[$first][$prefix],
-                (array) $paths
+                $paths
             );
         }
     }
@@ -222,9 +219,9 @@
      * Registers a set of PSR-4 directories for a given namespace, either
      * appending or prepending to the ones previously set for this namespace.
      *
-     * @param string          $prefix  The prefix/namespace, with trailing '\\'
-     * @param string[]|string $paths   The PSR-4 base directories
-     * @param bool            $prepend Whether to prepend the directories
+     * @param string              $prefix  The prefix/namespace, with trailing 
'\\'
+     * @param list<string>|string $paths   The PSR-4 base directories
+     * @param bool                $prepend Whether to prepend the directories
      *
      * @throws \InvalidArgumentException
      *
@@ -232,17 +229,18 @@
      */
     public function addPsr4($prefix, $paths, $prepend = false)
     {
+        $paths = (array) $paths;
         if (!$prefix) {
             // Register directories for the root namespace.
             if ($prepend) {
                 $this->fallbackDirsPsr4 = array_merge(
-                    (array) $paths,
+                    $paths,
                     $this->fallbackDirsPsr4
                 );
             } else {
                 $this->fallbackDirsPsr4 = array_merge(
                     $this->fallbackDirsPsr4,
-                    (array) $paths
+                    $paths
                 );
             }
         } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
@@ -252,18 +250,18 @@
                 throw new \InvalidArgumentException("A non-empty PSR-4 prefix 
must end with a namespace separator.");
             }
             $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+            $this->prefixDirsPsr4[$prefix] = $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
             $this->prefixDirsPsr4[$prefix] = array_merge(
-                (array) $paths,
+                $paths,
                 $this->prefixDirsPsr4[$prefix]
             );
         } else {
             // Append directories for an already registered namespace.
             $this->prefixDirsPsr4[$prefix] = array_merge(
                 $this->prefixDirsPsr4[$prefix],
-                (array) $paths
+                $paths
             );
         }
     }
@@ -272,8 +270,8 @@
      * Registers a set of PSR-0 directories for a given prefix,
      * replacing any others previously set for this prefix.
      *
-     * @param string          $prefix The prefix
-     * @param string[]|string $paths  The PSR-0 base directories
+     * @param string              $prefix The prefix
+     * @param list<string>|string $paths  The PSR-0 base directories
      *
      * @return void
      */
@@ -290,8 +288,8 @@
      * Registers a set of PSR-4 directories for a given namespace,
      * replacing any others previously set for this namespace.
      *
-     * @param string          $prefix The prefix/namespace, with trailing '\\'
-     * @param string[]|string $paths  The PSR-4 base directories
+     * @param string              $prefix The prefix/namespace, with trailing 
'\\'
+     * @param list<string>|string $paths  The PSR-4 base directories
      *
      * @throws \InvalidArgumentException
      *
@@ -425,7 +423,8 @@
     public function loadClass($class)
     {
         if ($file = $this->findFile($class)) {
-            includeFile($file);
+            $includeFile = self::$includeFile;
+            $includeFile($file);
 
             return true;
         }
@@ -476,9 +475,9 @@
     }
 
     /**
-     * Returns the currently registered loaders indexed by their corresponding 
vendor directories.
+     * Returns the currently registered loaders keyed by their corresponding 
vendor directories.
      *
-     * @return self[]
+     * @return array<string, self>
      */
     public static function getRegisteredLoaders()
     {
@@ -555,18 +554,26 @@
 
         return false;
     }
-}
 
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- *
- * @param  string $file
- * @return void
- * @private
- */
-function includeFile($file)
-{
-    include $file;
+    /**
+     * @return void
+     */
+    private static function initializeIncludeClosure()
+    {
+        if (self::$includeFile !== null) {
+            return;
+        }
+
+        /**
+         * Scope isolated include.
+         *
+         * Prevents access to $this/self from included files.
+         *
+         * @param  string $file
+         * @return void
+         */
+        self::$includeFile = \Closure::bind(static function($file) {
+            include $file;
+        }, null, null);
+    }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/InstalledVersions.php 
new/roundcubemail-1.6.13/vendor/composer/InstalledVersions.php
--- old/roundcubemail-1.6.12/vendor/composer/InstalledVersions.php      
2025-12-14 09:22:46.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/InstalledVersions.php      
2026-02-08 10:33:28.000000000 +0100
@@ -21,23 +21,36 @@
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
  *
  * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
  */
 class InstalledVersions
 {
     /**
+     * @var string|null if set (by reflection by Composer), this should be set 
to the path where this class is being copied to
+     * @internal
+     */
+    private static $selfDir = null;
+
+    /**
      * @var mixed[]|null
-     * @psalm-var array{root: array{name: string, version: string, reference: 
string, pretty_version: string, aliases: string[], dev: bool, install_path: 
string, type: string}, versions: array<string, array{dev_requirement: bool, 
pretty_version?: string, version?: string, aliases?: string[], reference?: 
string, replaced?: string[], provided?: string[], install_path?: string, type?: 
string}>}|array{}|null
+     * @psalm-var array{root: array{name: string, pretty_version: string, 
version: string, reference: string|null, type: string, install_path: string, 
aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: 
string, version?: string, reference?: string|null, type?: string, 
install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: 
string[], provided?: string[]}>}|array{}|null
      */
     private static $installed;
 
     /**
+     * @var bool
+     */
+    private static $installedIsLocalDir;
+
+    /**
      * @var bool|null
      */
     private static $canGetVendors;
 
     /**
      * @var array[]
-     * @psalm-var array<string, array{root: array{name: string, version: 
string, reference: string, pretty_version: string, aliases: string[], dev: 
bool, install_path: string, type: string}, versions: array<string, 
array{dev_requirement: bool, pretty_version?: string, version?: string, 
aliases?: string[], reference?: string, replaced?: string[], provided?: 
string[], install_path?: string, type?: string}>}>
+     * @psalm-var array<string, array{root: array{name: string, 
pretty_version: string, version: string, reference: string|null, type: string, 
install_path: string, aliases: string[], dev: bool}, versions: array<string, 
array{pretty_version?: string, version?: string, reference?: string|null, 
type?: string, install_path?: string, aliases?: string[], dev_requirement: 
bool, replaced?: string[], provided?: string[]}>}>
      */
     private static $installedByVendor = array();
 
@@ -96,7 +109,7 @@
     {
         foreach (self::getInstalled() as $installed) {
             if (isset($installed['versions'][$packageName])) {
-                return $includeDevRequirements || 
empty($installed['versions'][$packageName]['dev_requirement']);
+                return $includeDevRequirements || 
!isset($installed['versions'][$packageName]['dev_requirement']) || 
$installed['versions'][$packageName]['dev_requirement'] === false;
             }
         }
 
@@ -117,7 +130,7 @@
      */
     public static function satisfies(VersionParser $parser, $packageName, 
$constraint)
     {
-        $constraint = $parser->parseConstraints($constraint);
+        $constraint = $parser->parseConstraints((string) $constraint);
         $provided = 
$parser->parseConstraints(self::getVersionRanges($packageName));
 
         return $provided->matches($constraint);
@@ -241,7 +254,7 @@
 
     /**
      * @return array
-     * @psalm-return array{name: string, version: string, reference: string, 
pretty_version: string, aliases: string[], dev: bool, install_path: string, 
type: string}
+     * @psalm-return array{name: string, pretty_version: string, version: 
string, reference: string|null, type: string, install_path: string, aliases: 
string[], dev: bool}
      */
     public static function getRootPackage()
     {
@@ -255,7 +268,7 @@
      *
      * @deprecated Use getAllRawData() instead which returns all datasets for 
all autoloaders present in the process. getRawData only returns the first 
dataset loaded, which may not be what you expect.
      * @return array[]
-     * @psalm-return array{root: array{name: string, version: string, 
reference: string, pretty_version: string, aliases: string[], dev: bool, 
install_path: string, type: string}, versions: array<string, 
array{dev_requirement: bool, pretty_version?: string, version?: string, 
aliases?: string[], reference?: string, replaced?: string[], provided?: 
string[], install_path?: string, type?: string}>}
+     * @psalm-return array{root: array{name: string, pretty_version: string, 
version: string, reference: string|null, type: string, install_path: string, 
aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: 
string, version?: string, reference?: string|null, type?: string, 
install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: 
string[], provided?: string[]}>}
      */
     public static function getRawData()
     {
@@ -278,7 +291,7 @@
      * Returns the raw data of all installed.php which are currently loaded 
for custom implementations
      *
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, 
reference: string, pretty_version: string, aliases: string[], dev: bool, 
install_path: string, type: string}, versions: array<string, 
array{dev_requirement: bool, pretty_version?: string, version?: string, 
aliases?: string[], reference?: string, replaced?: string[], provided?: 
string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: 
string, version: string, reference: string|null, type: string, install_path: 
string, aliases: string[], dev: bool}, versions: array<string, 
array{pretty_version?: string, version?: string, reference?: string|null, 
type?: string, install_path?: string, aliases?: string[], dev_requirement: 
bool, replaced?: string[], provided?: string[]}>}>
      */
     public static function getAllRawData()
     {
@@ -301,17 +314,35 @@
      * @param  array[] $data A vendor/composer/installed.php data set
      * @return void
      *
-     * @psalm-param array{root: array{name: string, version: string, 
reference: string, pretty_version: string, aliases: string[], dev: bool, 
install_path: string, type: string}, versions: array<string, 
array{dev_requirement: bool, pretty_version?: string, version?: string, 
aliases?: string[], reference?: string, replaced?: string[], provided?: 
string[], install_path?: string, type?: string}>} $data
+     * @psalm-param array{root: array{name: string, pretty_version: string, 
version: string, reference: string|null, type: string, install_path: string, 
aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: 
string, version?: string, reference?: string|null, type?: string, 
install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: 
string[], provided?: string[]}>} $data
      */
     public static function reload($data)
     {
         self::$installed = $data;
         self::$installedByVendor = array();
+
+        // when using reload, we disable the duplicate protection to ensure 
that self::$installed data is
+        // always returned, but we cannot know whether it comes from the 
installed.php in __DIR__ or not,
+        // so we have to assume it does not, and that may result in duplicate 
data being returned when listing
+        // all installed packages for example
+        self::$installedIsLocalDir = false;
+    }
+
+    /**
+     * @return string
+     */
+    private static function getSelfDir()
+    {
+        if (self::$selfDir === null) {
+            self::$selfDir = strtr(__DIR__, '\\', '/');
+        }
+
+        return self::$selfDir;
     }
 
     /**
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, 
reference: string, pretty_version: string, aliases: string[], dev: bool, 
install_path: string, type: string}, versions: array<string, 
array{dev_requirement: bool, pretty_version?: string, version?: string, 
aliases?: string[], reference?: string, replaced?: string[], provided?: 
string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: 
string, version: string, reference: string|null, type: string, install_path: 
string, aliases: string[], dev: bool}, versions: array<string, 
array{pretty_version?: string, version?: string, reference?: string|null, 
type?: string, install_path?: string, aliases?: string[], dev_requirement: 
bool, replaced?: string[], provided?: string[]}>}>
      */
     private static function getInstalled()
     {
@@ -323,7 +354,9 @@
         $copiedLocalDir = false;
 
         if (self::$canGetVendors) {
+            $selfDir = self::getSelfDir();
             foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => 
$loader) {
+                $vendorDir = strtr($vendorDir, '\\', '/');
                 if (isset(self::$installedByVendor[$vendorDir])) {
                     $installed[] = self::$installedByVendor[$vendorDir];
                 } elseif (is_file($vendorDir.'/composer/installed.php')) {
@@ -331,11 +364,14 @@
                     $required = require $vendorDir.'/composer/installed.php';
                     self::$installedByVendor[$vendorDir] = $required;
                     $installed[] = $required;
-                    if (strtr($vendorDir.'/composer', '\\', '/') === 
strtr(__DIR__, '\\', '/')) {
+                    if (self::$installed === null && $vendorDir.'/composer' 
=== $selfDir) {
                         self::$installed = $required;
-                        $copiedLocalDir = true;
+                        self::$installedIsLocalDir = true;
                     }
                 }
+                if (self::$installedIsLocalDir && $vendorDir.'/composer' === 
$selfDir) {
+                    $copiedLocalDir = true;
+                }
             }
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_classmap.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_classmap.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_classmap.php      
2025-12-14 09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_classmap.php      
2026-02-08 10:33:29.000000000 +0100
@@ -2,7 +2,7 @@
 
 // autoload_classmap.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_files.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_files.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_files.php 2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_files.php 2026-02-08 
10:33:29.000000000 +0100
@@ -2,7 +2,7 @@
 
 // autoload_files.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_namespaces.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_namespaces.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_namespaces.php    
2025-12-14 09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_namespaces.php    
2026-02-08 10:33:29.000000000 +0100
@@ -2,12 +2,12 @@
 
 // autoload_namespaces.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
-    'Net' => array($vendorDir . '/pear/net_socket', $vendorDir . 
'/pear/net_smtp'),
+    'Net' => array($vendorDir . '/pear/net_smtp', $vendorDir . 
'/pear/net_socket'),
     'Mail' => array($vendorDir . '/pear/mail_mime'),
-    'Console' => array($vendorDir . '/pear/console_getopt', $vendorDir . 
'/pear/console_commandline'),
+    'Console' => array($vendorDir . '/pear/console_commandline', $vendorDir . 
'/pear/console_getopt'),
     'Auth' => array($vendorDir . '/pear/auth_sasl'),
 );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_psr4.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_psr4.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_psr4.php  2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_psr4.php  2026-02-08 
10:33:29.000000000 +0100
@@ -2,13 +2,13 @@
 
 // autoload_psr4.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
     'RtfHtmlPhp\\' => array($vendorDir . '/roundcube/rtf-html-php/src'),
     'Roundcube\\Composer\\' => array($vendorDir . 
'/roundcube/plugin-installer/src'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', 
$vendorDir . '/psr/http-factory/src'),
+    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', 
$vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'),
     'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_real.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_real.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_real.php  2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_real.php  2026-02-08 
10:33:29.000000000 +0100
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit0e572040d941ed19e19bbb9fc5945df6
+class ComposerAutoloaderInitd30534b7ccef70d5be1f4ba9bc89dbe4
 {
     private static $loader;
 
@@ -24,61 +24,31 @@
 
         require __DIR__ . '/platform_check.php';
 
-        
spl_autoload_register(array('ComposerAutoloaderInit0e572040d941ed19e19bbb9fc5945df6',
 'loadClassLoader'), true, true);
-        self::$loader = $loader = new 
\Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
-        
spl_autoload_unregister(array('ComposerAutoloaderInit0e572040d941ed19e19bbb9fc5945df6',
 'loadClassLoader'));
+        
spl_autoload_register(array('ComposerAutoloaderInitd30534b7ccef70d5be1f4ba9bc89dbe4',
 'loadClassLoader'), true, true);
+        self::$loader = $loader = new 
\Composer\Autoload\ClassLoader(\dirname(__DIR__));
+        
spl_autoload_unregister(array('ComposerAutoloaderInitd30534b7ccef70d5be1f4ba9bc89dbe4',
 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
         set_include_path(implode(PATH_SEPARATOR, $includePaths));
 
-        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') 
&& (!function_exists('zend_loader_file_encoded') || 
!zend_loader_file_encoded());
-        if ($useStaticLoader) {
-            require __DIR__ . '/autoload_static.php';
-
-            
call_user_func(\Composer\Autoload\ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::getInitializer($loader));
-        } else {
-            $map = require __DIR__ . '/autoload_namespaces.php';
-            foreach ($map as $namespace => $path) {
-                $loader->set($namespace, $path);
-            }
-
-            $map = require __DIR__ . '/autoload_psr4.php';
-            foreach ($map as $namespace => $path) {
-                $loader->setPsr4($namespace, $path);
-            }
-
-            $classMap = require __DIR__ . '/autoload_classmap.php';
-            if ($classMap) {
-                $loader->addClassMap($classMap);
-            }
-        }
+        require __DIR__ . '/autoload_static.php';
+        
call_user_func(\Composer\Autoload\ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::getInitializer($loader));
 
         $loader->register(true);
 
-        if ($useStaticLoader) {
-            $includeFiles = 
Composer\Autoload\ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire0e572040d941ed19e19bbb9fc5945df6($fileIdentifier, 
$file);
+        $filesToLoad = 
\Composer\Autoload\ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::$files;
+        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) 
{
+            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) 
{
+                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+                require $file;
+            }
+        }, null, null);
+        foreach ($filesToLoad as $fileIdentifier => $file) {
+            $requireFile($fileIdentifier, $file);
         }
 
         return $loader;
     }
 }
-
-/**
- * @param string $fileIdentifier
- * @param string $file
- * @return void
- */
-function composerRequire0e572040d941ed19e19bbb9fc5945df6($fileIdentifier, 
$file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-
-        require $file;
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/autoload_static.php 
new/roundcubemail-1.6.13/vendor/composer/autoload_static.php
--- old/roundcubemail-1.6.12/vendor/composer/autoload_static.php        
2025-12-14 09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/autoload_static.php        
2026-02-08 10:33:29.000000000 +0100
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6
+class ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4
 {
     public static $files = array (
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . 
'/ralouphie/getallheaders/src/getallheaders.php',
@@ -13,107 +13,107 @@
     );
 
     public static $prefixLengthsPsr4 = array (
-        'R' => 
+        'R' =>
         array (
             'RtfHtmlPhp\\' => 11,
             'Roundcube\\Composer\\' => 19,
         ),
-        'P' => 
+        'P' =>
         array (
             'Psr\\Http\\Message\\' => 17,
             'Psr\\Http\\Client\\' => 16,
         ),
-        'M' => 
+        'M' =>
         array (
             'Masterminds\\' => 12,
         ),
-        'G' => 
+        'G' =>
         array (
             'GuzzleHttp\\Psr7\\' => 16,
             'GuzzleHttp\\Promise\\' => 19,
             'GuzzleHttp\\' => 11,
         ),
-        'D' => 
+        'D' =>
         array (
             'DASPRiD\\Enum\\' => 13,
         ),
-        'B' => 
+        'B' =>
         array (
             'BaconQrCode\\' => 12,
         ),
     );
 
     public static $prefixDirsPsr4 = array (
-        'RtfHtmlPhp\\' => 
+        'RtfHtmlPhp\\' =>
         array (
             0 => __DIR__ . '/..' . '/roundcube/rtf-html-php/src',
         ),
-        'Roundcube\\Composer\\' => 
+        'Roundcube\\Composer\\' =>
         array (
             0 => __DIR__ . '/..' . '/roundcube/plugin-installer/src',
         ),
-        'Psr\\Http\\Message\\' => 
+        'Psr\\Http\\Message\\' =>
         array (
-            0 => __DIR__ . '/..' . '/psr/http-message/src',
-            1 => __DIR__ . '/..' . '/psr/http-factory/src',
+            0 => __DIR__ . '/..' . '/psr/http-factory/src',
+            1 => __DIR__ . '/..' . '/psr/http-message/src',
         ),
-        'Psr\\Http\\Client\\' => 
+        'Psr\\Http\\Client\\' =>
         array (
             0 => __DIR__ . '/..' . '/psr/http-client/src',
         ),
-        'Masterminds\\' => 
+        'Masterminds\\' =>
         array (
             0 => __DIR__ . '/..' . '/masterminds/html5/src',
         ),
-        'GuzzleHttp\\Psr7\\' => 
+        'GuzzleHttp\\Psr7\\' =>
         array (
             0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
         ),
-        'GuzzleHttp\\Promise\\' => 
+        'GuzzleHttp\\Promise\\' =>
         array (
             0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
         ),
-        'GuzzleHttp\\' => 
+        'GuzzleHttp\\' =>
         array (
             0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
         ),
-        'DASPRiD\\Enum\\' => 
+        'DASPRiD\\Enum\\' =>
         array (
             0 => __DIR__ . '/..' . '/dasprid/enum/src',
         ),
-        'BaconQrCode\\' => 
+        'BaconQrCode\\' =>
         array (
             0 => __DIR__ . '/..' . '/bacon/bacon-qr-code/src',
         ),
     );
 
     public static $prefixesPsr0 = array (
-        'N' => 
+        'N' =>
         array (
-            'Net' => 
+            'Net' =>
             array (
-                0 => __DIR__ . '/..' . '/pear/net_socket',
-                1 => __DIR__ . '/..' . '/pear/net_smtp',
+                0 => __DIR__ . '/..' . '/pear/net_smtp',
+                1 => __DIR__ . '/..' . '/pear/net_socket',
             ),
         ),
-        'M' => 
+        'M' =>
         array (
-            'Mail' => 
+            'Mail' =>
             array (
                 0 => __DIR__ . '/..' . '/pear/mail_mime',
             ),
         ),
-        'C' => 
+        'C' =>
         array (
-            'Console' => 
+            'Console' =>
             array (
-                0 => __DIR__ . '/..' . '/pear/console_getopt',
-                1 => __DIR__ . '/..' . '/pear/console_commandline',
+                0 => __DIR__ . '/..' . '/pear/console_commandline',
+                1 => __DIR__ . '/..' . '/pear/console_getopt',
             ),
         ),
-        'A' => 
+        'A' =>
         array (
-            'Auth' => 
+            'Auth' =>
             array (
                 0 => __DIR__ . '/..' . '/pear/auth_sasl',
             ),
@@ -169,10 +169,10 @@
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = 
ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = 
ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = 
ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::$prefixesPsr0;
-            $loader->classMap = 
ComposerStaticInit0e572040d941ed19e19bbb9fc5945df6::$classMap;
+            $loader->prefixLengthsPsr4 = 
ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = 
ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = 
ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::$prefixesPsr0;
+            $loader->classMap = 
ComposerStaticInitd30534b7ccef70d5be1f4ba9bc89dbe4::$classMap;
 
         }, null, ClassLoader::class);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/include_paths.php 
new/roundcubemail-1.6.13/vendor/composer/include_paths.php
--- old/roundcubemail-1.6.12/vendor/composer/include_paths.php  2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/include_paths.php  2026-02-08 
10:33:29.000000000 +0100
@@ -2,7 +2,7 @@
 
 // include_paths.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/vendor/composer/installed.json 
new/roundcubemail-1.6.13/vendor/composer/installed.json
--- old/roundcubemail-1.6.12/vendor/composer/installed.json     2025-12-14 
09:22:46.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/installed.json     2026-02-08 
10:33:29.000000000 +0100
@@ -688,6 +688,7 @@
                 "issues": 
"http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_CommandLine";,
                 "source": "https://github.com/pear/Console_CommandLine";
             },
+            "abandoned": true,
             "install-path": "../pear/console_commandline"
         },
         {
@@ -1127,17 +1128,17 @@
         },
         {
             "name": "pear/pear-core-minimal",
-            "version": "v1.10.16",
-            "version_normalized": "1.10.16.0",
+            "version": "v1.10.18",
+            "version_normalized": "1.10.18.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/pear-core-minimal.git";,
-                "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033"
+                "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033";,
-                "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033",
+                "url": 
"https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1";,
+                "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1",
                 "shasum": ""
             },
             "require": {
@@ -1148,7 +1149,7 @@
             "replace": {
                 "rsky/pear-core-min": "self.version"
             },
-            "time": "2024-11-24T22:27:58+00:00",
+            "time": "2025-12-14T20:37:07+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/roundcubemail-1.6.12/vendor/composer/installed.php 
new/roundcubemail-1.6.13/vendor/composer/installed.php
--- old/roundcubemail-1.6.12/vendor/composer/installed.php      2025-12-14 
09:22:46.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/installed.php      2026-02-08 
10:33:29.000000000 +0100
@@ -1,184 +1,184 @@
 <?php return array(
     'root' => array(
+        'name' => 'roundcube/roundcubemail',
         'pretty_version' => '1.0.0+no-version-set',
         'version' => '1.0.0.0',
+        'reference' => null,
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => null,
-        'name' => 'roundcube/roundcubemail',
         'dev' => false,
     ),
     'versions' => array(
         'bacon/bacon-qr-code' => array(
             'pretty_version' => '2.0.8',
             'version' => '2.0.8.0',
+            'reference' => '8674e51bb65af933a5ffaf1c308a660387c35c22',
             'type' => 'library',
             'install_path' => __DIR__ . '/../bacon/bacon-qr-code',
             'aliases' => array(),
-            'reference' => '8674e51bb65af933a5ffaf1c308a660387c35c22',
             'dev_requirement' => false,
         ),
         'dasprid/enum' => array(
             'pretty_version' => '1.0.7',
             'version' => '1.0.7.0',
+            'reference' => 'b5874fa9ed0043116c72162ec7f4fb50e02e7cce',
             'type' => 'library',
             'install_path' => __DIR__ . '/../dasprid/enum',
             'aliases' => array(),
-            'reference' => 'b5874fa9ed0043116c72162ec7f4fb50e02e7cce',
             'dev_requirement' => false,
         ),
         'guzzlehttp/guzzle' => array(
             'pretty_version' => '7.10.0',
             'version' => '7.10.0.0',
+            'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
             'aliases' => array(),
-            'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4',
             'dev_requirement' => false,
         ),
         'guzzlehttp/promises' => array(
             'pretty_version' => '2.3.0',
             'version' => '2.3.0.0',
+            'reference' => '481557b130ef3790cf82b713667b43030dc9c957',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/promises',
             'aliases' => array(),
-            'reference' => '481557b130ef3790cf82b713667b43030dc9c957',
             'dev_requirement' => false,
         ),
         'guzzlehttp/psr7' => array(
             'pretty_version' => '2.8.0',
             'version' => '2.8.0.0',
+            'reference' => '21dc724a0583619cd1652f673303492272778051',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/psr7',
             'aliases' => array(),
-            'reference' => '21dc724a0583619cd1652f673303492272778051',
             'dev_requirement' => false,
         ),
         'kolab/net_ldap3' => array(
             'pretty_version' => 'v1.1.5',
             'version' => '1.1.5.0',
+            'reference' => '5a319cf437d75aad564ce7fd076cc5423722868b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../kolab/net_ldap3',
             'aliases' => array(),
-            'reference' => '5a319cf437d75aad564ce7fd076cc5423722868b',
             'dev_requirement' => false,
         ),
         'masterminds/html5' => array(
             'pretty_version' => '2.7.6',
             'version' => '2.7.6.0',
+            'reference' => '897eb517a343a2281f11bc5556d6548db7d93947',
             'type' => 'library',
             'install_path' => __DIR__ . '/../masterminds/html5',
             'aliases' => array(),
-            'reference' => '897eb517a343a2281f11bc5556d6548db7d93947',
             'dev_requirement' => false,
         ),
         'pear/auth_sasl' => array(
             'pretty_version' => 'v1.1.0',
             'version' => '1.1.0.0',
+            'reference' => 'db1ead3dc0bf986d2bab0dbc04d114800cf91dee',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/auth_sasl',
             'aliases' => array(),
-            'reference' => 'db1ead3dc0bf986d2bab0dbc04d114800cf91dee',
             'dev_requirement' => false,
         ),
         'pear/console_commandline' => array(
             'pretty_version' => 'v1.2.6',
             'version' => '1.2.6.0',
+            'reference' => '611c5bff2e47ec5a184748cb5fedc2869098ff28',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/console_commandline',
             'aliases' => array(),
-            'reference' => '611c5bff2e47ec5a184748cb5fedc2869098ff28',
             'dev_requirement' => false,
         ),
         'pear/console_getopt' => array(
             'pretty_version' => 'v1.4.3',
             'version' => '1.4.3.0',
+            'reference' => 'a41f8d3e668987609178c7c4a9fe48fecac53fa0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/console_getopt',
             'aliases' => array(),
-            'reference' => 'a41f8d3e668987609178c7c4a9fe48fecac53fa0',
             'dev_requirement' => false,
         ),
         'pear/crypt_gpg' => array(
             'pretty_version' => 'v1.6.11',
             'version' => '1.6.11.0',
+            'reference' => '6d307aae8b38ee35d0a2297510bd2356d1452c2b',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/crypt_gpg',
             'aliases' => array(),
-            'reference' => '6d307aae8b38ee35d0a2297510bd2356d1452c2b',
             'dev_requirement' => false,
         ),
         'pear/mail_mime' => array(
             'pretty_version' => '1.10.12',
             'version' => '1.10.12.0',
+            'reference' => 'd032c7c9335e96d5954ac6e93d33955f3b7246e2',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/mail_mime',
             'aliases' => array(),
-            'reference' => 'd032c7c9335e96d5954ac6e93d33955f3b7246e2',
             'dev_requirement' => false,
         ),
         'pear/net_ldap2' => array(
             'pretty_version' => 'v2.3.0',
             'version' => '2.3.0.0',
+            'reference' => '6eae6d20533469ffe1c01684923cd09f0fae3b77',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/net_ldap2',
             'aliases' => array(),
-            'reference' => '6eae6d20533469ffe1c01684923cd09f0fae3b77',
             'dev_requirement' => false,
         ),
         'pear/net_sieve' => array(
             'pretty_version' => '1.4.8',
             'version' => '1.4.8.0',
+            'reference' => '345eb171c0b377e4f9f6fe9c6e532a76dfe2d754',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/net_sieve',
             'aliases' => array(),
-            'reference' => '345eb171c0b377e4f9f6fe9c6e532a76dfe2d754',
             'dev_requirement' => false,
         ),
         'pear/net_smtp' => array(
             'pretty_version' => '1.10.1',
             'version' => '1.10.1.0',
+            'reference' => 'cfd963dc5cc73b4d64c7769e47dfa0f439dec536',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/net_smtp',
             'aliases' => array(),
-            'reference' => 'cfd963dc5cc73b4d64c7769e47dfa0f439dec536',
             'dev_requirement' => false,
         ),
         'pear/net_socket' => array(
             'pretty_version' => 'v1.2.2',
             'version' => '1.2.2.0',
+            'reference' => 'bbe6a12bb4f7059dba161f6ddd43f369c0ec8d09',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/net_socket',
             'aliases' => array(),
-            'reference' => 'bbe6a12bb4f7059dba161f6ddd43f369c0ec8d09',
             'dev_requirement' => false,
         ),
         'pear/pear-core-minimal' => array(
-            'pretty_version' => 'v1.10.16',
-            'version' => '1.10.16.0',
+            'pretty_version' => 'v1.10.18',
+            'version' => '1.10.18.0',
+            'reference' => 'c7b55789d01de0ce090d289b73f1bbd6a2f113b1',
             'type' => 'library',
             'install_path' => __DIR__ . '/../pear/pear-core-minimal',
             'aliases' => array(),
-            'reference' => 'c0f51b45f50683bf5bbf558036854ebc9b54d033',
             'dev_requirement' => false,
         ),
         'pear/pear_exception' => array(
             'pretty_version' => 'v1.0.2',
             'version' => '1.0.2.0',
+            'reference' => 'b14fbe2ddb0b9f94f5b24cf08783d599f776fff0',
             'type' => 'class',
             'install_path' => __DIR__ . '/../pear/pear_exception',
             'aliases' => array(),
-            'reference' => 'b14fbe2ddb0b9f94f5b24cf08783d599f776fff0',
             'dev_requirement' => false,
         ),
         'psr/http-client' => array(
             'pretty_version' => '1.0.3',
             'version' => '1.0.3.0',
+            'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-client',
             'aliases' => array(),
-            'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90',
             'dev_requirement' => false,
         ),
         'psr/http-client-implementation' => array(
@@ -190,10 +190,10 @@
         'psr/http-factory' => array(
             'pretty_version' => '1.1.0',
             'version' => '1.1.0.0',
+            'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-factory',
             'aliases' => array(),
-            'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a',
             'dev_requirement' => false,
         ),
         'psr/http-factory-implementation' => array(
@@ -205,10 +205,10 @@
         'psr/http-message' => array(
             'pretty_version' => '2.0',
             'version' => '2.0.0.0',
+            'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71',
             'type' => 'library',
             'install_path' => __DIR__ . '/../psr/http-message',
             'aliases' => array(),
-            'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71',
             'dev_requirement' => false,
         ),
         'psr/http-message-implementation' => array(
@@ -220,52 +220,52 @@
         'ralouphie/getallheaders' => array(
             'pretty_version' => '3.0.3',
             'version' => '3.0.3.0',
+            'reference' => '120b605dfeb996808c31b6477290a714d356e822',
             'type' => 'library',
             'install_path' => __DIR__ . '/../ralouphie/getallheaders',
             'aliases' => array(),
-            'reference' => '120b605dfeb996808c31b6477290a714d356e822',
             'dev_requirement' => false,
         ),
         'roundcube/plugin-installer' => array(
             'pretty_version' => '0.3.11',
             'version' => '0.3.11.0',
+            'reference' => '93c5cfc660d47929aaca64585791e7e3887948ed',
             'type' => 'composer-plugin',
             'install_path' => __DIR__ . '/../roundcube/plugin-installer',
             'aliases' => array(),
-            'reference' => '93c5cfc660d47929aaca64585791e7e3887948ed',
             'dev_requirement' => false,
         ),
         'roundcube/roundcubemail' => array(
             'pretty_version' => '1.0.0+no-version-set',
             'version' => '1.0.0.0',
+            'reference' => null,
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => null,
             'dev_requirement' => false,
         ),
         'roundcube/rtf-html-php' => array(
             'pretty_version' => 'v2.2',
             'version' => '2.2.0.0',
+            'reference' => 'a3432ca249b73bf24fec50114191a63ad8b1478c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../roundcube/rtf-html-php',
             'aliases' => array(),
-            'reference' => 'a3432ca249b73bf24fec50114191a63ad8b1478c',
             'dev_requirement' => false,
         ),
         'rsky/pear-core-min' => array(
             'dev_requirement' => false,
             'replaced' => array(
-                0 => 'v1.10.16',
+                0 => 'v1.10.18',
             ),
         ),
         'symfony/deprecation-contracts' => array(
             'pretty_version' => 'v2.5.4',
             'version' => '2.5.4.0',
+            'reference' => '605389f2a7e5625f273b53960dc46aeaf9c62918',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
             'aliases' => array(),
-            'reference' => '605389f2a7e5625f273b53960dc46aeaf9c62918',
             'dev_requirement' => false,
         ),
     ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/composer/platform_check.php 
new/roundcubemail-1.6.13/vendor/composer/platform_check.php
--- old/roundcubemail-1.6.12/vendor/composer/platform_check.php 2025-12-14 
09:22:47.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/composer/platform_check.php 2026-02-08 
10:33:29.000000000 +0100
@@ -19,8 +19,7 @@
             echo 'Composer detected issues in your platform:' . 
PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', 
implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
         }
     }
-    trigger_error(
-        'Composer detected issues in your platform: ' . implode(' ', $issues),
-        E_USER_ERROR
+    throw new \RuntimeException(
+        'Composer detected issues in your platform: ' . implode(' ', $issues)
     );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/roundcubemail-1.6.12/vendor/pear/pear-core-minimal/src/PEAR.php 
new/roundcubemail-1.6.13/vendor/pear/pear-core-minimal/src/PEAR.php
--- old/roundcubemail-1.6.12/vendor/pear/pear-core-minimal/src/PEAR.php 
2024-11-24 23:27:58.000000000 +0100
+++ new/roundcubemail-1.6.13/vendor/pear/pear-core-minimal/src/PEAR.php 
2025-12-14 21:37:07.000000000 +0100
@@ -216,9 +216,13 @@
     public function __call($method, $arguments)
     {
         if (!isset(self::$bivalentMethods[$method])) {
-            trigger_error(
-                'Call to undefined method PEAR::' . $method . '()', 
E_USER_ERROR
-            );
+           if (PHP_VERSION_ID < 70000) {
+                trigger_error(
+                    'Call to undefined method PEAR::' . $method . '()', 
E_USER_ERROR
+                );
+            } else {
+                throw new Error('Call to undefined method PEAR::' . $method . 
'()');
+            }
         }
         return call_user_func_array(
             array(__CLASS__, '_' . $method),
@@ -229,9 +233,13 @@
     public static function __callStatic($method, $arguments)
     {
         if (!isset(self::$bivalentMethods[$method])) {
-            trigger_error(
-                'Call to undefined method PEAR::' . $method . '()', 
E_USER_ERROR
-            );
+            if (PHP_VERSION_ID < 70000) {
+                trigger_error(
+                    'Call to undefined method PEAR::' . $method . '()', 
E_USER_ERROR
+                );
+            } else {
+                throw new Error('Call to undefined method PEAR::' . $method . 
'()');
+            }
         }
         return call_user_func_array(
             array(__CLASS__, '_' . $method),

Reply via email to