git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "02ae5285"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "649a5c01"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/symfony/var-dumper/Caster/PdoCaster.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/symfony/var-dumper/Caster/PdoCaster.php
new file mode 100644
index 0000000..140473b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/symfony/var-dumper/Caster/PdoCaster.php
@@ -0,0 +1,122 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarDumper\Caster;
+
+use Symfony\Component\VarDumper\Cloner\Stub;
+
+/**
+ * Casts PDO related classes to array representation.
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @final
+ */
+class PdoCaster
+{
+    private const PDO_ATTRIBUTES = [
+        'CASE' => [
+            \PDO::CASE_LOWER => 'LOWER',
+            \PDO::CASE_NATURAL => 'NATURAL',
+            \PDO::CASE_UPPER => 'UPPER',
+        ],
+        'ERRMODE' => [
+            \PDO::ERRMODE_SILENT => 'SILENT',
+            \PDO::ERRMODE_WARNING => 'WARNING',
+            \PDO::ERRMODE_EXCEPTION => 'EXCEPTION',
+        ],
+        'TIMEOUT',
+        'PREFETCH',
+        'AUTOCOMMIT',
+        'PERSISTENT',
+        'DRIVER_NAME',
+        'SERVER_INFO',
+        'ORACLE_NULLS' => [
+            \PDO::NULL_NATURAL => 'NATURAL',
+            \PDO::NULL_EMPTY_STRING => 'EMPTY_STRING',
+            \PDO::NULL_TO_STRING => 'TO_STRING',
+        ],
+        'CLIENT_VERSION',
+        'SERVER_VERSION',
+        'STATEMENT_CLASS',
+        'EMULATE_PREPARES',
+        'CONNECTION_STATUS',
+        'STRINGIFY_FETCHES',
+        'DEFAULT_FETCH_MODE' => [
+            \PDO::FETCH_ASSOC => 'ASSOC',
+            \PDO::FETCH_BOTH => 'BOTH',
+            \PDO::FETCH_LAZY => 'LAZY',
+            \PDO::FETCH_NUM => 'NUM',
+            \PDO::FETCH_OBJ => 'OBJ',
+        ],
+    ];
+
+    public static function castPdo(\PDO $c, array $a, Stub $stub, bool $isNested)
+    {
+        $attr = [];
+        $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE);
+        $c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+
+        foreach (self::PDO_ATTRIBUTES as $k => $v) {
+            if (!isset($k[0])) {
+                $k = $v;
+                $v = [];
+            }
+
+            try {
+                $attr[$k] = 'ERRMODE' === $k ? $errmode : $c->getAttribute(\constant('PDO::ATTR_'.$k));
+                if ($v && isset($v[$attr[$k]])) {
+                    $attr[$k] = new ConstStub($v[$attr[$k]], $attr[$k]);
+                }
+            } catch (\Exception $e) {
+            }
+        }
+        if (isset($attr[$k = 'STATEMENT_CLASS'][1])) {
+            if ($attr[$k][1]) {
+                $attr[$k][1] = new ArgsStub($attr[$k][1], '__construct', $attr[$k][0]);
+            }
+            $attr[$k][0] = new ClassStub($attr[$k][0]);
+        }
+
+        $prefix = Caster::PREFIX_VIRTUAL;
+        $a += [
+            $prefix.'inTransaction' => method_exists($c, 'inTransaction'),
+            $prefix.'errorInfo' => $c->errorInfo(),
+            $prefix.'attributes' => new EnumStub($attr),
+        ];
+
+        if ($a[$prefix.'inTransaction']) {
+            $a[$prefix.'inTransaction'] = $c->inTransaction();
+        } else {
+            unset($a[$prefix.'inTransaction']);
+        }
+
+        if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) {
+            unset($a[$prefix.'errorInfo']);
+        }
+
+        $c->setAttribute(\PDO::ATTR_ERRMODE, $errmode);
+
+        return $a;
+    }
+
+    public static function castPdoStatement(\PDOStatement $c, array $a, Stub $stub, bool $isNested)
+    {
+        $prefix = Caster::PREFIX_VIRTUAL;
+        $a[$prefix.'errorInfo'] = $c->errorInfo();
+
+        if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) {
+            unset($a[$prefix.'errorInfo']);
+        }
+
+        return $a;
+    }
+}