diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index 8203b12ce..58ccbe9f7 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -1219,71 +1219,17 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
if (!isset($row[$i]) || is_null($row[$i])) {
$vertical_display['data'][$row_no][$i] = '
NULL | ' . "\n";
} elseif ($row[$i] != '') {
- $vertical_display['data'][$row_no][$i] = ' ';
- if (isset($analyzed_sql[0]['select_expr']) && is_array($analyzed_sql[0]['select_expr'])) {
- foreach ($analyzed_sql[0]['select_expr'] AS $select_expr_position => $select_expr) {
- $alias = $analyzed_sql[0]['select_expr'][$select_expr_position]['alias'];
- if (isset($alias) && strlen($alias)) {
- $true_column = $analyzed_sql[0]['select_expr'][$select_expr_position]['column'];
- if ($alias == $meta->name) {
- $meta->name = $true_column;
- } // end if
- } // end if
- } // end while
- }
+ $nowrap = ' nowrap';
+ $where_comparison = ' = ' . $row[$i];
- if (isset($map[$meta->name])) {
- // Field to display from the foreign table?
- if (isset($map[$meta->name][2]) && strlen($map[$meta->name][2])) {
- $dispsql = 'SELECT ' . PMA_backquote($map[$meta->name][2])
- . ' FROM ' . PMA_backquote($map[$meta->name][3]) . '.' . PMA_backquote($map[$meta->name][0])
- . ' WHERE ' . PMA_backquote($map[$meta->name][1])
- . ' = ' . $row[$i];
- $dispresult = PMA_DBI_try_query($dispsql, null, PMA_DBI_QUERY_STORE);
- if ($dispresult && PMA_DBI_num_rows($dispresult) > 0) {
- list($dispval) = PMA_DBI_fetch_row($dispresult, 0);
- } else {
- $dispval = $GLOBALS['strLinkNotFound'];
- }
- @PMA_DBI_free_result($dispresult);
- } else {
- $dispval = '';
- } // end if... else...
-
- if (isset($GLOBALS['printview']) && $GLOBALS['printview'] == '1') {
- $vertical_display['data'][$row_no][$i] .= ($transform_function != $default_function ? $transform_function($row[$i], $transform_options, $meta) : $transform_function($row[$i], array(), $meta)) . ' [->' . $dispval . '] ';
- } else {
- $title = (!empty($dispval))? ' title="' . htmlspecialchars($dispval) . '"' : '';
-
- $_url_params = array(
- 'db' => $map[$meta->name][3],
- 'table' => $map[$meta->name][0],
- 'pos' => '0',
- 'sql_query' => 'SELECT * FROM '
- . PMA_backquote($map[$meta->name][3]) . '.' . PMA_backquote($map[$meta->name][0])
- . ' WHERE ' . PMA_backquote($map[$meta->name][1])
- . ' = ' . $row[$i],
- );
- $vertical_display['data'][$row_no][$i]
- .= ''
- . ($transform_function != $default_function
- ? $transform_function($row[$i], $transform_options, $meta)
- : $transform_function($row[$i], array(), $meta))
- . '';
- }
- } else {
- $vertical_display['data'][$row_no][$i] .= ($transform_function != $default_function ? $transform_function($row[$i], $transform_options, $meta) : $transform_function($row[$i], array(), $meta));
- }
- $vertical_display['data'][$row_no][$i] .= ' | ' . "\n";
+ $vertical_display['data'][$row_no][$i] = ' | ' . "\n";
}
// b l o b
- //} elseif (! empty($_SESSION['userconf']['display_blob']) && stristr($meta->type, 'BLOB')) {
} elseif (stristr($meta->type, 'BLOB')) {
// loic1 : PMA_mysql_fetch_fields returns BLOB in place of
// TEXT fields type so we have to ensure it's really a BLOB
@@ -1348,55 +1294,9 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
// loic1: do not wrap if date field type
$nowrap = ((preg_match('@DATE|TIME@i', $meta->type) || $bool_nowrap) ? ' nowrap' : '');
- $vertical_display['data'][$row_no][$i] = ' ';
+ $where_comparison = ' = \'' . PMA_sqlAddslashes($row[$i]) . '\'';
+ $vertical_display['data'][$row_no][$i] = ' | $select_expr) {
- $alias = $analyzed_sql[0]['select_expr'][$select_expr_position]['alias'];
- if (isset($alias) && strlen($alias)) {
- $true_column = $analyzed_sql[0]['select_expr'][$select_expr_position]['column'];
- if ($alias == $meta->name) {
- $meta->name = $true_column;
- } // end if
- } // end if
- } // end while
- }
-
- if (isset($map[$meta->name])) {
- // Field to display from the foreign table?
- if (isset($map[$meta->name][2]) && strlen($map[$meta->name][2])) {
- $dispsql = 'SELECT ' . PMA_backquote($map[$meta->name][2])
- . ' FROM ' . PMA_backquote($map[$meta->name][3]) . '.' . PMA_backquote($map[$meta->name][0])
- . ' WHERE ' . PMA_backquote($map[$meta->name][1])
- . ' = \'' . PMA_sqlAddslashes($row[$i]) . '\'';
- $dispresult = PMA_DBI_try_query($dispsql, null, PMA_DBI_QUERY_STORE);
- if ($dispresult && PMA_DBI_num_rows($dispresult) > 0) {
- list($dispval) = PMA_DBI_fetch_row($dispresult);
- @PMA_DBI_free_result($dispresult);
- } else {
- $dispval = $GLOBALS['strLinkNotFound'];
- }
- } else {
- $dispval = '';
- }
- $title = (!empty($dispval))? ' title="' . htmlspecialchars($dispval) . '"' : '';
-
- $_url_params = array(
- 'db' => $map[$meta->name][3],
- 'table' => $map[$meta->name][0],
- 'pos' => '0',
- 'sql_query' => 'SELECT * FROM '
- . PMA_backquote($map[$meta->name][3]) . '.' . PMA_backquote($map[$meta->name][0])
- . ' WHERE ' . PMA_backquote($map[$meta->name][1])
- . ' = \'' . PMA_sqlAddslashes($relation_id) . '\'',
- );
- $vertical_display['data'][$row_no][$i]
- .= '' . $row[$i] . '';
- } else {
- $vertical_display['data'][$row_no][$i] .= $row[$i];
- }
- $vertical_display['data'][$row_no][$i] .= ' | ' . "\n";
} else {
$vertical_display['data'][$row_no][$i] = ' | ' . "\n";
}
@@ -2175,4 +2075,98 @@ function PMA_handle_non_printable_contents($category, $content, $transform_funct
}
return($result);
}
+
+/**
+ * Prepares the displayable content of a data cell in Browse mode,
+ * taking into account foreign key description field and transformations
+ *
+ * @uses is_array()
+ * @uses PMA_backquote()
+ * @uses PMA_DBI_try_query()
+ * @uses PMA_DBI_num_rows()
+ * @uses PMA_DBI_fetch_row()
+ * @uses $GLOBALS['strLinkNotFound']
+ * @uses PMA_DBI_free_result()
+ * @uses $GLOBALS['printview']
+ * @uses htmlspecialchars()
+ * @uses PMA_generate_common_url()
+ * @param string $mouse_events
+ * @param string $class
+ * @param string $condition_field
+ * @param string $analyzed_sql
+ * @param object $meta the meta-information about this field
+ * @param string $map
+ * @param string $data
+ * @param string $transform_function
+ * @param string $default_function
+ * @param string $nowrap
+ * @param string $where_comparison
+ * @return string formatted data
+ */
+function PMA_prepare_row_data($mouse_events, $class, $condition_field, $analyzed_sql, $meta, $map, $data, $transform_function, $default_function, $nowrap, $where_comparison) {
+
+ // continue the tag started before calling this function:
+ $result = $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . $nowrap . '">';
+
+ if (isset($analyzed_sql[0]['select_expr']) && is_array($analyzed_sql[0]['select_expr'])) {
+ foreach ($analyzed_sql[0]['select_expr'] AS $select_expr_position => $select_expr) {
+ $alias = $analyzed_sql[0]['select_expr'][$select_expr_position]['alias'];
+ if (isset($alias) && strlen($alias)) {
+ $true_column = $analyzed_sql[0]['select_expr'][$select_expr_position]['column'];
+ if ($alias == $meta->name) {
+ // this change in the parameter does not matter
+ // outside of the function
+ $meta->name = $true_column;
+ } // end if
+ } // end if
+ } // end foreach
+ } // end if
+
+ if (isset($map[$meta->name])) {
+ // Field to display from the foreign table?
+ if (isset($map[$meta->name][2]) && strlen($map[$meta->name][2])) {
+ $dispsql = 'SELECT ' . PMA_backquote($map[$meta->name][2])
+ . ' FROM ' . PMA_backquote($map[$meta->name][3])
+ . '.' . PMA_backquote($map[$meta->name][0])
+ . ' WHERE ' . PMA_backquote($map[$meta->name][1])
+ . $where_comparison;
+ $dispresult = PMA_DBI_try_query($dispsql, null, PMA_DBI_QUERY_STORE);
+ if ($dispresult && PMA_DBI_num_rows($dispresult) > 0) {
+ list($dispval) = PMA_DBI_fetch_row($dispresult, 0);
+ } else {
+ $dispval = $GLOBALS['strLinkNotFound'];
+ }
+ @PMA_DBI_free_result($dispresult);
+ } else {
+ $dispval = '';
+ } // end if... else...
+
+ if (isset($GLOBALS['printview']) && $GLOBALS['printview'] == '1') {
+ $result .= ($transform_function != $default_function ? $transform_function($data, $transform_options, $meta) : $transform_function($data, array(), $meta)) . ' [->' . $dispval . '] ';
+ } else {
+ $title = (!empty($dispval))? ' title="' . htmlspecialchars($dispval) . '"' : '';
+
+ $_url_params = array(
+ 'db' => $map[$meta->name][3],
+ 'table' => $map[$meta->name][0],
+ 'pos' => '0',
+ 'sql_query' => 'SELECT * FROM '
+ . PMA_backquote($map[$meta->name][3]) . '.' . PMA_backquote($map[$meta->name][0])
+ . ' WHERE ' . PMA_backquote($map[$meta->name][1])
+ . $where_comparison,
+ );
+ $result .= ''
+ . ($transform_function != $default_function
+ ? $transform_function($data, $transform_options, $meta)
+ : $transform_function($data, array(), $meta))
+ . '';
+ }
+ } else {
+ $result .= ($transform_function != $default_function ? $transform_function($data, $transform_options, $meta) : $transform_function($data, array(), $meta));
+ }
+ $result .= ' | ' . "\n";
+
+ return $result;
+}
?>