diff --git a/ChangeLog b/ChangeLog index 51febbb4a..7a1717fad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -53,6 +53,10 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA to Pavel Konnikov and Herman van Rink + patch #2974341 [structure] Clicking on table name in db Structure should Browse the table if possible, thanks to bhdouglass - dougboybhd ++ patch #2975533 [search] New search operators, thanks to + Martynas Mickevičius ++ patch #2967320 [designer] Colored relations based on the primary key, + thanks to GreenRover - greenrover 3.3.2.0 (not yet released) - patch #2969449 [core] Name for MERGE engine varies depending on the diff --git a/Documentation.html b/Documentation.html index e7880a919..fb465b91d 100644 --- a/Documentation.html +++ b/Documentation.html @@ -4356,7 +4356,7 @@ chmod o+rwx tmp -
More details on git are available on our wiki.
+More details on git are available on our wiki.
Write access to the repository is granted only to experienced developers who
have already contributed something useful to phpMyAdmin.
diff --git a/libraries/config.default.php b/libraries/config.default.php
index 35f603d92..1aa13481b 100644
--- a/libraries/config.default.php
+++ b/libraries/config.default.php
@@ -2990,6 +2990,10 @@ $cfg['NumOperators'] = array(
'!=',
'LIKE',
'NOT LIKE',
+ 'IN (...)',
+ 'NOT IN (...)',
+ 'BETWEEN',
+ 'NOT BETWEEN',
);
/**
@@ -3007,7 +3011,11 @@ $cfg['TextOperators'] = array(
'REGEXP ^...$',
'NOT REGEXP',
"= ''",
- "!= ''"
+ "!= ''",
+ 'IN (...)',
+ 'NOT IN (...)',
+ 'BETWEEN',
+ 'NOT BETWEEN',
);
/**
diff --git a/libraries/header_scripts.inc.php b/libraries/header_scripts.inc.php
index d924bbdeb..a1611ac0d 100644
--- a/libraries/header_scripts.inc.php
+++ b/libraries/header_scripts.inc.php
@@ -112,6 +112,11 @@ $GLOBALS['js_events'][] = array(
'function' => 'PMA_TT_init',
);
+/**
+ * Here we add a timestamp when loading the file, so that users who
+ * upgrade phpMyAdmin are not stuck with older .js files in their
+ * browser cache. This produces an HTTP 304 request for each file.
+ */
foreach ($GLOBALS['js_include'] as $js_script_file) {
echo '' . "\n";
}
diff --git a/pmd/scripts/move.js b/pmd/scripts/move.js
index df1b97244..35d6239e8 100644
--- a/pmd/scripts/move.js
+++ b/pmd/scripts/move.js
@@ -291,7 +291,7 @@ function Re_load()
+ height_field;
//alert(y1 + ' - ' + key2 + "." + key3);
- Line0(x1 - sm_x, y1 - sm_y, x2 - sm_x, y2 - sm_y, "rgba(0,100,150,1)");
+ Line0(x1 - sm_x, y1 - sm_y, x2 - sm_x, y2 - sm_y, getColorByTarget( contr[K][key][key2][key3][0]+'.'+contr[K][key][key2][key3][1] ) );
}
}
@@ -315,8 +315,8 @@ function Line(x1, y1, x2, y2, color_line)
*/
function Line0(x1, y1, x2, y2, color_line)
{
- Circle(x1, y1, 3, 3, "rgba(0,0,255,1)");
- Rect(x2 - 1, y2 - 2, 4, 4, "rgba(0,0,255,1)");
+ Circle(x1, y1, 3, 3, color_line);
+ Rect(x2 - 1, y2 - 2, 4, 4, color_line);
if (ON_angular_direct) {
Line2(x1, y1, x2, y2, color_line);
@@ -717,7 +717,7 @@ function Canvas_click(id)
Key2 = key2; Key3 = key3;
Key = K;
} else {
- Line0(x1 - sm_x, y1 - sm_y, x2 - sm_x, y2 - sm_y, "rgba(0,100,150,1)");
+ Line0(x1 - sm_x, y1 - sm_y, x2 - sm_x, y2 - sm_y, getColorByTarget( contr[K][key][key2][key3][0]+'.'+contr[K][key][key2][key3][1] ));
}
}
if (selected) {
@@ -920,3 +920,48 @@ function Start_display_field()
ON_display_field = 0;
}
}
+//------------------------------------------------------------------------------
+var TargetColors = new Array();
+function getColorByTarget( target )
+{
+ var color = ''; //"rgba(0,100,150,1)";
+
+ for (i in TargetColors)
+ if (TargetColors[i][0]==target) {
+ color = TargetColors[i][1];
+ break;
+ }
+
+
+ if (color.length==0)
+ {
+ var i = TargetColors.length+1;
+ var d = i % 6;
+ var j = (i - d) / 6;
+ j = j % 4;
+ j++;
+ var color_case = new Array(
+ new Array(1, 0, 0),
+ new Array(0, 1, 0),
+ new Array(0, 0, 1),
+ new Array(1, 1, 0),
+ new Array(1, 0, 1),
+ new Array(0, 1, 1)
+ );
+ var a = color_case[d][0];
+ var b = color_case[d][1];
+ var c = color_case[d][2];
+ e = (1 - (j - 1) / 6);
+
+ var r = Math.round(a * 200 * e);
+ var g = Math.round(b * 200 * e);
+ var b = Math.round(c * 200 * e);
+ var color = "rgba("+r+","+g+","+b+",1)";
+
+ TargetColors.push( new Array(target, color) );
+
+
+ }
+
+ return color;
+}
diff --git a/tbl_select.php b/tbl_select.php
index 874502ed2..0fbd24c77 100644
--- a/tbl_select.php
+++ b/tbl_select.php
@@ -408,7 +408,23 @@ else {
$func_type = 'REGEXP';
$fields[$i] = '^' . $fields[$i] . '$';
}
- $w[] = PMA_backquote($names[$i]) . ' ' . $func_type . ' ' . $quot . PMA_sqlAddslashes($fields[$i]) . $quot;
+
+ if ($func_type == 'IN (...)' || $func_type == 'NOT IN (...)' || $func_type == 'BETWEEN' || $func_type == 'NOT BETWEEN') {
+ $func_type = str_replace(' (...)', '', $func_type);
+
+ // quote values one by one
+ $values = explode(',', $fields[$i]);
+ foreach ($values as &$value)
+ $value = $quot . PMA_sqlAddslashes(trim($value)) . $quot;
+
+ if ($func_type == 'BETWEEN' || $func_type == 'NOT BETWEEN')
+ $w[] = PMA_backquote($names[$i]) . ' ' . $func_type . ' ' . (isset($values[0]) ? $values[0] : '') . ' AND ' . (isset($values[1]) ? $values[1] : '');
+ else
+ $w[] = PMA_backquote($names[$i]) . ' ' . $func_type . ' (' . implode(',', $values) . ')';
+ }
+ else {
+ $w[] = PMA_backquote($names[$i]) . ' ' . $func_type . ' ' . $quot . PMA_sqlAddslashes($fields[$i]) . $quot;;
+ }
} // end if
} // end for