diff --git a/ChangeLog b/ChangeLog
index 12f3c591f1..88d68fd54f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -31,6 +31,7 @@ phpMyAdmin - ChangeLog
+ rfe #3475567 [interface] New directive $cfg['HideStructureActions']
- bug #3468272 [import] Fixed import of ODS with more paragraphs in a cell
- bug #3510196 [core] Improved redirecting with ForceSSL option
++ rfe #3518852 [edit] edit blob but not other binary, new option $cfg['ProtectBinary'] = 'noblob'
3.5.1.0 (not yet released)
- bug #3510784 [edit] Limit clause ignored when sort order is remembered
diff --git a/Documentation.html b/Documentation.html
index eb7ae843cb..8449158781 100644
--- a/Documentation.html
+++ b/Documentation.html
@@ -1694,6 +1694,8 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE
from editing when browsing a table's content. Valid values are:
FALSE to allow editing of all columns;
'blob' to allow editing of all columns except BLOBS;
+ 'noblob' to disallow editing of all columns except BLOBS
+ (the opposite of 'blob');
'all' to disallow editing of all BINARY or
BLOB columns.
diff --git a/config.sample.inc.php b/config.sample.inc.php
index 9c12ef6b3d..69bc6242d5 100644
--- a/config.sample.inc.php
+++ b/config.sample.inc.php
@@ -89,9 +89,10 @@ $cfg['SaveDir'] = '';
/**
* disallow editing of binary fields
* valid values are:
- * false allow editing
- * 'blob' allow editing except for BLOB fields
- * 'all' disallow editing
+ * false allow editing
+ * 'blob' allow editing except for BLOB fields
+ * 'noblob' disallow editing except for BLOB fields
+ * 'all' disallow editing
* default = blob
*/
//$cfg['ProtectBinary'] = 'false';
diff --git a/libraries/config.default.php b/libraries/config.default.php
index f4d6fdde9f..67072f0b16 100644
--- a/libraries/config.default.php
+++ b/libraries/config.default.php
@@ -1035,9 +1035,10 @@ $cfg['DisplayBinaryAsHex'] = true;
/**
* disallow editing of binary fields
* valid values are:
- * false allow editing
- * 'blob' allow editing except for BLOB fields
- * 'all' disallow editing
+ * false allow editing
+ * 'blob' allow editing except for BLOB fields
+ * 'noblob' disallow editing except for BLOB fields
+ * 'all' disallow editing
*
* @global string $cfg['ProtectBinary']
*/
diff --git a/libraries/config.values.php b/libraries/config.values.php
index 6abe3bfee5..8273055e97 100644
--- a/libraries/config.values.php
+++ b/libraries/config.values.php
@@ -45,7 +45,7 @@ $cfg_db['LeftFrameTableSeparator'] = 'short_string';
$cfg_db['NavigationBarIconic'] = array(true => __('Yes'), false => __('No'), 'both' => __('Both'));
$cfg_db['Order'] = array('ASC', 'DESC', 'SMART');
$cfg_db['RowActionLinks'] = array('none' => __('Nowhere'), 'left' => __('Left'), 'right' => __('Right'), 'both' => __('Both'));
-$cfg_db['ProtectBinary'] = array(false, 'blob', 'all');
+$cfg_db['ProtectBinary'] = array(false, 'blob', 'noblob', 'all');
$cfg_db['DefaultDisplay'] = array('horizontal', 'vertical', 'horizontalflipped');
$cfg_db['CharEditing'] = array('input', 'textarea');
$cfg_db['PropertiesIconic'] = array(true => __('Yes'), false => __('No'), 'both' => __('Both'));
diff --git a/tbl_change.php b/tbl_change.php
index b18a6cafcd..6c4de15f89 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -594,7 +594,8 @@ foreach ($rows as $row_id => $vrow) {
$special_chars_encoded = PMA_duplicateFirstNewline($special_chars);
// this will select the UNHEX function while inserting
if (($field['is_binary'] || ($field['is_blob'] && ! $cfg['ProtectBinary']))
- && $_SESSION['tmp_user_values']['display_binary_as_hex']
+ && (isset($_SESSION['tmp_user_values']['display_binary_as_hex'])
+ && $_SESSION['tmp_user_values']['display_binary_as_hex'])
&& $cfg['ShowFunctionFields']
) {
$field['display_binary_as_hex'] = true;
@@ -616,6 +617,7 @@ foreach ($rows as $row_id => $vrow) {
if ($cfg['ShowFunctionFields']) {
if (($cfg['ProtectBinary'] && $field['is_blob'] && !$is_upload)
|| ($cfg['ProtectBinary'] == 'all' && $field['is_binary'])
+ || ($cfg['ProtectBinary'] == 'noblob' && !$field['is_blob'])
) {
echo ' ' . __('Binary') . ' | ' . "\n";
} elseif (strstr($field['True_Type'], 'enum')
@@ -863,6 +865,7 @@ foreach ($rows as $row_id => $vrow) {
} elseif ($field['is_binary'] || $field['is_blob']) {
if (($cfg['ProtectBinary'] && $field['is_blob'])
|| ($cfg['ProtectBinary'] == 'all' && $field['is_binary'])
+ || ($cfg['ProtectBinary'] == 'noblob' && !$field['is_blob'])
) {
echo __('Binary - do not edit');
if (isset($data)) {