Skip to content

Commit d459561

Browse files
authored
Restructure the decode function (#355)
* Restructure the decode function * simplified if-statement
1 parent c061844 commit d459561

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

src/Header.php

+9-16
Original file line numberDiff line numberDiff line change
@@ -435,26 +435,19 @@ private function decode(mixed $value): mixed {
435435
$decoder = $this->config['decoder']['message'];
436436

437437
if ($value !== null) {
438-
$is_utf8_base = $this->is_uft8($value);
439-
440438
if ($decoder === 'utf-8' && extension_loaded('imap')) {
441-
$value = \imap_utf8($value);
442-
$is_utf8_base = $this->is_uft8($value);
443-
if ($is_utf8_base) {
444-
$value = mb_decode_mimeheader($value);
439+
$decoded_values = $this->mime_header_decode($value);
440+
$tempValue = "";
441+
foreach ($decoded_values as $decoded_value) {
442+
$tempValue .= $this->convertEncoding($decoded_value->text, $decoded_value->charset);
445443
}
446-
if ($this->notDecoded($original_value, $value)) {
447-
$decoded_value = $this->mime_header_decode($value);
448-
if (count($decoded_value) > 0) {
449-
if (property_exists($decoded_value[0], "text")) {
450-
$value = $decoded_value[0]->text;
451-
}
452-
}
444+
if ($tempValue) {
445+
$value = $tempValue;
446+
} else {
447+
$value = \imap_utf8($value);
453448
}
454-
} elseif ($decoder === 'iconv' && $is_utf8_base) {
449+
} elseif ($decoder === 'iconv' && $this->is_uft8($value)) {
455450
$value = iconv_mime_decode($value);
456-
} elseif ($is_utf8_base) {
457-
$value = mb_decode_mimeheader($value);
458451
}
459452

460453
if ($this->is_uft8($value)) {

0 commit comments

Comments
 (0)