CS-Cart 4.7.4 В модуле “Прикрепленные файлы” (Attachments) файл func.php строка 74
'description' => is_array($attachment_data['description']) ? $attachment_data['description'][$lang_code] : $attachment_data['description']
Это функция fn_update_attachments и $attachment_data передаваемый параметр. Если передать в эту функцию $attachment_data[‘description’] как массив, но только для 1 из 2-х установленных в магазине языков то получим ошибку, т.к. для отсутствующего языка
$attachment_data['description'][$lang_code] == null
Как можно воспроизвести такую ситуацию?
Обязательно воспроизводить?
В коде проверка на то, что $attachment_data[‘description’] - массив, и тогда подставляете значение из ключа этого массива. А где гарантия, что ключ существует? Предлагаю заменить на такой вариант:
if (is_array($attachment_data[‘description’]){
if (empty($attachment_data[‘description’][$lang_code])){
$description = !empty($attachment_data[‘description’][DEFAULT_LANGUAGE]) ? $attachment_data[‘description’][DEFAULT_LANGUAGE] : $uploaded_data[$attachment_id][‘name’];
}else{
$description = $attachment_data[‘description’][$lang_code];
}
}else{
$description = $attachment_data[‘description’];
}
Тами образом $description всегда будет со значением: либо то что передано в функцию, если его нет то значение языка по умолчанию, если нет то с названием файла.
Если проблему никак нельзя воспроизвести в магазине, то это не баг. Мы можем создать задачу на рефакторинг этого кода, но у нее будет гораздо меньший приоритет