]> git.mxchange.org Git - friendica.git/commitdiff
Fixed for the string truncation for "latin1" charset
authorMichael <heluecht@pirati.ca>
Mon, 7 Oct 2024 05:26:51 +0000 (05:26 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 7 Oct 2024 20:44:45 +0000 (20:44 +0000)
src/Database/Definition/DbaDefinition.php

index 04b2aaacf45d13cfc666f3697f90c7f59b1dc799..378ba86867016f1a316d8b282b67a65a7a32e7be 100644 (file)
@@ -8,7 +8,9 @@
 namespace Friendica\Database\Definition;
 
 use Exception;
+use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\Hook;
+use Friendica\DI;
 
 /**
  * Stores the whole database definition
@@ -65,12 +67,18 @@ class DbaDefinition
 
                $fields = [];
 
+               $charset = DI::config()->get('database', 'charset') ?? '';
+
                // Assign all field that are present in the table
                foreach ($fieldNames as $field) {
                        if (isset($data[$field])) {
                                // Limit the length of varchar, varbinary, char and binary fields
                                if (is_string($data[$field]) && preg_match("/char\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
-                                       $data[$field] = mb_substr($data[$field], 0, $result[1]);
+                                       if ($charset == 'latin1') {
+                                               $data[$field] = substr($data[$field], 0, $result[1]);
+                                       } else {
+                                               $data[$field] = mb_substr($data[$field], 0, $result[1]);
+                                       }
                                } elseif (is_string($data[$field]) && preg_match("/binary\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) {
                                        $data[$field] = substr($data[$field], 0, $result[1]);
                                } elseif (is_numeric($data[$field]) && $definition[$table]['fields'][$field]['type'] === 'int') {