diff --git a/browse_foreigners.php b/browse_foreigners.php index 946c1ce2f2..81a19e9a0e 100644 --- a/browse_foreigners.php +++ b/browse_foreigners.php @@ -8,6 +8,7 @@ require_once 'libraries/common.inc.php'; require_once 'libraries/transformations.lib.php'; +require_once 'libraries/browse_foreigners.lib.php'; /** * Sets globals from $_REQUEST @@ -36,311 +37,29 @@ $header->setBodyId('body_browse_foreigners'); $cfgRelation = PMA_getRelationsParam(); $foreigners = ($cfgRelation['relwork'] ? PMA_getForeigners($db, $table) : false); - -$override_total = true; - -if (! isset($_REQUEST['pos'])) { - $pos = 0; -} else { - $pos = $_REQUEST['pos']; -} - -$foreign_limit = 'LIMIT ' . $pos . ', ' . $GLOBALS['cfg']['MaxRows'] . ' '; -if (isset($foreign_navig) && $foreign_navig == __('Show all')) { - unset($foreign_limit); -} +$foreign_limit = PMA_getForeignLimit( + isset($foreign_navig) ? $foreign_navig : null +); $foreignData = PMA_getForeignData( - $foreigners, $field, $override_total, + $foreigners, $_REQUEST['field'], true, isset($_REQUEST['foreign_filter']) ? $_REQUEST['foreign_filter'] - : '', $foreign_limit -); - -$gotopage = ''; -$showall = ''; - -if (is_array($foreignData['disp_row'])) { - - if ($cfg['ShowAll'] - && ($foreignData['the_total'] > $GLOBALS['cfg']['MaxRows']) - ) { - $showall = ''; - } - - $session_max_rows = $GLOBALS['cfg']['MaxRows']; - $pageNow = @floor($pos / $session_max_rows) + 1; - $nbTotalPage = @ceil($foreignData['the_total'] / $session_max_rows); - - if ($foreignData['the_total'] > $GLOBALS['cfg']['MaxRows']) { - $gotopage = PMA_Util::pageselector( - 'pos', - $session_max_rows, - $pageNow, - $nbTotalPage, - 200, - 5, - 5, - 20, - 10, - __('Page number:') - ); - } -} - -// When coming from Table/Zoom search -if (isset($_REQUEST['fromsearch'])) { - // In table or zoom search, input fields are named "criteriaValues" - $element_name = " var field = 'criteriaValues';\n"; -} else { - // In insert/edit, input fields are named "fields" - $element_name = " var field = 'fields';\n"; -} - -if (isset($_REQUEST['rownumber'])) { - $element_name .= " var element_name = field + '[multi_edit][" - . htmlspecialchars($_REQUEST['rownumber']) . "][' + fieldmd5 + ']';\n" - . " var null_name = field_null + '[multi_edit][" - . htmlspecialchars($_REQUEST['rownumber']) . "][' + fieldmd5 + ']';\n"; -} else { - $element_name .= "var element_name = field + '[]'"; -} -$error = PMA_jsFormat( - __( - 'The target browser window could not be updated. ' - . 'Maybe you have closed the parent window, or ' - . 'your browser\'s security settings are ' - . 'configured to block cross-window updates.' - ) + : '', + isset($foreign_limit) ? $foreign_limit : null ); -if (! isset($_REQUEST['fieldkey']) || ! is_numeric($_REQUEST['fieldkey'])) { - $fieldkey = 0; -} else { - $fieldkey = $_REQUEST['fieldkey']; -} - -$code = <<getScripts()->addCode($code); // HTML output -$output = '
' - . '
' - . PMA_URL_getHiddenInputs($db, $table) - . '' - . ''; +$html = PMA_getHtmlForRelationalFieldSelection( + $db, $table, $_REQUEST['field'], $foreignData, + isset($fieldkey) ? $fieldkey : null, + isset($data) ? $data : null +); -if (isset($_REQUEST['rownumber'])) { - $output .= ''; -} -$output .= '' - . '' - . '' - . '' - . '' - . '' . $gotopage . '' - . '' . $showall . '' - . '
' - . '
'; - -$output .= ''; - -if (is_array($foreignData['disp_row'])) { - $header = ' - - - - - - '; - - $output .= '' . $header . '' . "\n" - . '' . $header . '' . "\n" - . '' . "\n"; - - $values = array(); - $keys = array(); - foreach ($foreignData['disp_row'] as $relrow) { - if ($foreignData['foreign_display'] != false) { - $values[] = $relrow[$foreignData['foreign_display']]; - } else { - $values[] = ''; - } - - $keys[] = $relrow[$foreignData['foreign_field']]; - } - - asort($keys); - - $hcount = 0; - $odd_row = true; - $val_ordered_current_row = 0; - $val_ordered_current_equals_data = false; - $key_ordered_current_equals_data = false; - foreach ($keys as $key_ordered_current_row => $value) { - $hcount++; - - if ($cfg['RepeatCells'] > 0 && $hcount > $cfg['RepeatCells']) { - $output .= $header; - $hcount = 0; - $odd_row = true; - } - - $key_ordered_current_key = $keys[$key_ordered_current_row]; - $key_ordered_current_val = $values[$key_ordered_current_row]; - - $val_ordered_current_key = $keys[$val_ordered_current_row]; - $val_ordered_current_val = $values[$val_ordered_current_row]; - - $val_ordered_current_row++; - - if ($GLOBALS['PMA_String']->strlen($val_ordered_current_val) <= $cfg['LimitChars']) { - $val_ordered_current_val = htmlspecialchars( - $val_ordered_current_val - ); - $val_ordered_current_val_title = ''; - } else { - $val_ordered_current_val_title = htmlspecialchars( - $val_ordered_current_val - ); - $val_ordered_current_val = htmlspecialchars( - $GLOBALS['PMA_String']->substr($val_ordered_current_val, 0, $cfg['LimitChars']) - . '...' - ); - } - if ($GLOBALS['PMA_String']->strlen($key_ordered_current_val) <= $cfg['LimitChars']) { - $key_ordered_current_val = htmlspecialchars( - $key_ordered_current_val - ); - $key_ordered_current_val_title = ''; - } else { - $key_ordered_current_val_title = htmlspecialchars( - $key_ordered_current_val - ); - $key_ordered_current_val = htmlspecialchars( - $GLOBALS['PMA_String']->substr( - $key_ordered_current_val, 0, $cfg['LimitChars'] - ) . '...' - ); - } - - if (! empty($data)) { - $val_ordered_current_equals_data = $val_ordered_current_key == $data; - $key_ordered_current_equals_data = $key_ordered_current_key == $data; - } - - $output .= ''; - $odd_row = ! $odd_row; - - $output .= ''; - - $output .= ''; - - $output .= ''; - - $output .= ''; - - $output .= ''; - $output .= ''; - } // end while -} - -$output .= '' - . '
' . __('Keyname') . '' . __('Description') . '' . __('Description') . '' . __('Keyname') . '
' - . ($key_ordered_current_equals_data ? '' : '') - . '' - . htmlspecialchars($key_ordered_current_key) - . '' . ($key_ordered_current_equals_data ? '' : '') - . '' - . ($key_ordered_current_equals_data ? '' : '') - . '' - . $key_ordered_current_val . '' - . ($key_ordered_current_equals_data ? '' : '') - . '' - . '' - . ($val_ordered_current_equals_data ? '' : '') - . '' - . $val_ordered_current_val . '' - . ($val_ordered_current_equals_data ? '' : '') - . '' - . ($val_ordered_current_equals_data ? '' : '') - . '' - . htmlspecialchars($val_ordered_current_key) - . '' . ($val_ordered_current_equals_data ? '' : '') - . '
'; - -$response->addHtml($output); +$response->addHtml($html); ?> diff --git a/libraries/browse_foreigners.lib.php b/libraries/browse_foreigners.lib.php new file mode 100644 index 0000000000..f67cb97207 --- /dev/null +++ b/libraries/browse_foreigners.lib.php @@ -0,0 +1,413 @@ +' + . '
' + . PMA_URL_getHiddenInputs($db, $table) + . '' + . ''; + + if (isset($_REQUEST['rownumber'])) { + $output .= ''; + } + $output .= '' + . '' + . '' + . '' + . '' + . '' . $gotopage . '' + . '' . $showall . '' + . '
' + . ''; + + $output .= ''; + + if (is_array($foreignData['disp_row'])) { + $header = ' + + + + + + '; + + $output .= '' . $header . '' . "\n" + . '' . $header . '' . "\n" + . '' . "\n"; + + $values = array(); + $keys = array(); + foreach ($foreignData['disp_row'] as $relrow) { + if ($foreignData['foreign_display'] != false) { + $values[] = $relrow[$foreignData['foreign_display']]; + } else { + $values[] = ''; + } + + $keys[] = $relrow[$foreignData['foreign_field']]; + } + + asort($keys); + + $hcount = 0; + $odd_row = true; + $val_ordered_current_row = 0; + $val_ordered_current_equals_data = false; + $key_ordered_current_equals_data = false; + foreach ($keys as $key_ordered_current_row => $value) { + $hcount++; + + if ($GLOBALS['cfg']['RepeatCells'] > 0 + && $hcount > $GLOBALS['cfg']['RepeatCells'] + ) { + $output .= $header; + $hcount = 0; + $odd_row = true; + } + + $key_ordered_current_key = $keys[$key_ordered_current_row]; + $key_ordered_current_val = $values[$key_ordered_current_row]; + + $val_ordered_current_key = $keys[$val_ordered_current_row]; + $val_ordered_current_val = $values[$val_ordered_current_row]; + + $val_ordered_current_row++; + + $pmaString = $GLOBALS['PMA_String']; + $limitChars = $GLOBALS['cfg']['LimitChars']; + if ($pmaString->strlen($val_ordered_current_val) <= $limitChars) { + $val_ordered_current_val = htmlspecialchars( + $val_ordered_current_val + ); + $val_ordered_current_val_title = ''; + } else { + $val_ordered_current_val_title = htmlspecialchars( + $val_ordered_current_val + ); + $val_ordered_current_val = htmlspecialchars( + $pmaString->substr( + $val_ordered_current_val, 0, $limitChars + ) + . '...' + ); + } + if ($pmaString->strlen($key_ordered_current_val) <= $limitChars) { + $key_ordered_current_val = htmlspecialchars( + $key_ordered_current_val + ); + $key_ordered_current_val_title = ''; + } else { + $key_ordered_current_val_title = htmlspecialchars( + $key_ordered_current_val + ); + $key_ordered_current_val = htmlspecialchars( + $pmaString->substr( + $key_ordered_current_val, 0, $limitChars + ) . '...' + ); + } + + if (! empty($data)) { + $val_ordered_current_equals_data + = $val_ordered_current_key == $data; + $key_ordered_current_equals_data + = $key_ordered_current_key == $data; + } + + $output .= ''; + $odd_row = ! $odd_row; + + $output .= PMA_getHtmlForColumnElement( + 'class="nowrap"', $key_ordered_current_equals_data, + $key_ordered_current_key, $key_ordered_current_val, + $key_ordered_current_val_title, $field + ); + + $output .= PMA_getHtmlForColumnElement( + '', $key_ordered_current_equals_data, $key_ordered_current_key, + $key_ordered_current_val, $key_ordered_current_val_title, $field + ); + + $output .= ''; + + $output .= PMA_getHtmlForColumnElement( + '', $val_ordered_current_equals_data, $key_ordered_current_key, + $val_ordered_current_val, $val_ordered_current_val_title, $field + ); + + $output .= PMA_getHtmlForColumnElement( + 'class="nowrap"', $val_ordered_current_equals_data, + $key_ordered_current_key, $val_ordered_current_key, + $val_ordered_current_val_title, $field + ); + $output .= ''; + } // end while + } + $output .= '' + . '
' . __('Keyname') . '' . __('Description') . '' . __('Description') . '' . __('Keyname') . '
' + . '
'; + + return $output; +} + +/** + * Function to get html for each column element + * @param string $cssClass class="nowrap" or '' + * @param bool $currentEqualsData whether current equals data + * @param string $currentKey current key + * @param string $currentTitle current title + * @param string $field field + * + * @return string + */ +function PMA_getHtmlForColumnElement($cssClass, $currentEqualsData, $currentKey, + $currentVal, $currentTitle, $field +){ + $output = '' + . ($currentEqualsData ? '' : '') + . ''; + if ($cssClass !== '') { + $output .= htmlspecialchars($currentKey); + } else { + $output .= $currentVal; + } + + $output .= '' . ($currentEqualsData ? '' : '') . ''; + + return $output; +} + +/** + * Function to get javascript code to handle display selection for relational + * field values + * + * @return string + */ +function PMA_getJsScriptToHandleSelectRelationalFields() +{ + $element_name = PMA_getElementName(); + $fieldkey = PMA_getFieldKey(); + $error = PMA_getJsError(); + $code = << $GLOBALS['cfg']['MaxRows']) + ) { + $showall = ''; + } + } + + return $showall; +} + +/** + * Function to get html for the goto page option + * + * @param array $foreignData foreign data + * + * @return string + */ +function PMA_getHtmlForGotoPage($foreignData) +{ + $gotopage = ''; + isset($_REQUEST['pos']) ? $pos = $_REQUEST['pos'] : $pos = 0; + if (is_array($foreignData['disp_row'])) { + $session_max_rows = $GLOBALS['cfg']['MaxRows']; + $pageNow = @floor($pos / $session_max_rows) + 1; + $nbTotalPage = @ceil($foreignData['the_total'] / $session_max_rows); + + if ($foreignData['the_total'] > $GLOBALS['cfg']['MaxRows']) { + $gotopage = PMA_Util::pageselector( + 'pos', + $session_max_rows, + $pageNow, + $nbTotalPage, + 200, + 5, + 5, + 20, + 10, + __('Page number:') + ); + } + } + return $gotopage; +} + +/** + * Function to get foreign limit + * + * @param string $foreign_navig foreign navigation + * + * @return string + */ +function PMA_getForeignLimit($foreign_navig) +{ + if (isset($foreign_navig) && $foreign_navig == __('Show all')) { + return null; + } + isset($_REQUEST['pos']) ? $pos = $_REQUEST['pos'] : $pos = 0; + return 'LIMIT ' . $pos . ', ' . $GLOBALS['cfg']['MaxRows'] . ' '; +} +?>