/**
  * Test for PMA_getHtmlForGotoPage
  *
  * @return void
  */
 function testGetHtmlForGotoPage()
 {
     $this->assertEquals('', PMA_getHtmlForGotoPage(null));
     $_REQUEST['pos'] = 15;
     $foreignData = array();
     $foreignData['disp_row'] = array();
     $foreignData['the_total'] = 5;
     $this->assertEquals('', PMA_getHtmlForGotoPage($foreignData));
     $foreignData['the_total'] = 30;
     $result = PMA_getHtmlForGotoPage($foreignData);
     $this->assertStringStartsWith('Page number:', $result);
     $this->assertStringEndsWith('</select>', $result);
     $this->assertContains('<select class="pageselector ajax" name="pos"', $result);
     $this->assertContains('<option selected="selected" ' . 'style="font-weight: bold" value="0">', $result);
     $this->assertContains('<option  value="25"', $result);
 }
/**
 * Function to get html for relational field selection
 *
 * @param string $db            current database
 * @param string $table         current table
 * @param string $field         field
 * @param array  $foreignData   foreign column data
 * @param string $fieldkey      field key
 * @param string $current_value current columns's value
 *
 * @return string
 */
function PMA_getHtmlForRelationalFieldSelection($db, $table, $field, $foreignData, $fieldkey, $current_value)
{
    $gotopage = PMA_getHtmlForGotoPage($foreignData);
    $showall = PMA_getHtmlForShowAll($foreignData);
    $output = '<form class="ajax" ' . 'id="browse_foreign_form" name="browse_foreign_from" ' . 'action="browse_foreigners.php" method="post">' . '<fieldset>' . PMA_URL_getHiddenInputs($db, $table) . '<input type="hidden" name="field" value="' . htmlspecialchars($field) . '" />' . '<input type="hidden" name="fieldkey" value="' . (isset($fieldkey) ? htmlspecialchars($fieldkey) : '') . '" />';
    if (isset($_REQUEST['rownumber'])) {
        $output .= '<input type="hidden" name="rownumber" value="' . htmlspecialchars($_REQUEST['rownumber']) . '" />';
    }
    $filter_value = isset($_REQUEST['foreign_filter']) ? htmlspecialchars($_REQUEST['foreign_filter']) : '';
    $output .= '<span class="formelement">' . '<label for="input_foreign_filter">' . __('Search:') . '</label>' . '<input type="text" name="foreign_filter" ' . 'id="input_foreign_filter" ' . 'value="' . $filter_value . '" data-old="' . $filter_value . '" ' . '/>' . '<input type="submit" name="submit_foreign_filter" value="' . __('Go') . '" />' . '</span>' . '<span class="formelement">' . $gotopage . '</span>' . '<span class="formelement">' . $showall . '</span>' . '</fieldset>' . '</form>';
    $output .= '<table width="100%" id="browse_foreign_table">';
    if (!is_array($foreignData['disp_row'])) {
        $output .= '</tbody>' . '</table>';
        return $output;
    }
    $header = '<tr>
        <th>' . __('Keyname') . '</th>
        <th>' . __('Description') . '</th>
        <td width="20%"></td>
        <th>' . __('Description') . '</th>
        <th>' . __('Keyname') . '</th>
    </tr>';
    $output .= '<thead>' . $header . '</thead>' . "\n" . '<tfoot>' . $header . '</tfoot>' . "\n" . '<tbody>' . "\n";
    $descriptions = array();
    $keys = array();
    foreach ($foreignData['disp_row'] as $relrow) {
        if ($foreignData['foreign_display'] != false) {
            $descriptions[] = $relrow[$foreignData['foreign_display']];
        } else {
            $descriptions[] = '';
        }
        $keys[] = $relrow[$foreignData['foreign_field']];
    }
    asort($keys);
    $horizontal_count = 0;
    $odd_row = true;
    $indexByDescription = 0;
    foreach ($keys as $indexByKeyname => $value) {
        list($html, $horizontal_count, $odd_row, $indexByDescription) = PMA_getHtmlForOneKey($horizontal_count, $header, $odd_row, $keys, $indexByKeyname, $descriptions, $indexByDescription, $current_value);
        $output .= $html;
    }
    $output .= '</tbody>' . '</table>';
    return $output;
}
/**
 * Function to get html for relational field selection
 *
 * @param string $db          current database
 * @param string $table       current table
 * @param string $field       field
 * @param array  $foreignData foreign column data
 * @param string $fieldkey    field key
 * @param array  $data        data
 *
 * @return string
 */
function PMA_getHtmlForRelationalFieldSelection($db, $table, $field, $foreignData, $fieldkey, $data)
{
    $gotopage = PMA_getHtmlForGotoPage($foreignData);
    $showall = PMA_getHtmlForShowAll($foreignData);
    $output = '<form class="ajax" ' . 'id="browse_foreign_form" name="browse_foreign_from" ' . 'action="browse_foreigners.php" method="post">' . '<fieldset>' . PMA_URL_getHiddenInputs($db, $table) . '<input type="hidden" name="field" value="' . htmlspecialchars($field) . '" />' . '<input type="hidden" name="fieldkey" value="' . (isset($fieldkey) ? htmlspecialchars($fieldkey) : '') . '" />';
    if (isset($_REQUEST['rownumber'])) {
        $output .= '<input type="hidden" name="rownumber" value="' . htmlspecialchars($_REQUEST['rownumber']) . '" />';
    }
    $filter_value = isset($_REQUEST['foreign_filter']) ? htmlspecialchars($_REQUEST['foreign_filter']) : '';
    $output .= '<span class="formelement">' . '<label for="input_foreign_filter">' . __('Search:') . '</label>' . '<input type="text" name="foreign_filter" ' . 'id="input_foreign_filter" ' . 'value="' . $filter_value . '" data-old="' . $filter_value . '" ' . '/>' . '<input type="submit" name="submit_foreign_filter" value="' . __('Go') . '" />' . '</span>' . '<span class="formelement">' . $gotopage . '</span>' . '<span class="formelement">' . $showall . '</span>' . '</fieldset>' . '</form>';
    $output .= '<table width="100%" id="browse_foreign_table">';
    if (!is_array($foreignData['disp_row'])) {
        $output .= '</tbody>' . '</table>';
        return $output;
    }
    $header = '<tr>
        <th>' . __('Keyname') . '</th>
        <th>' . __('Description') . '</th>
        <td width="20%"></td>
        <th>' . __('Description') . '</th>
        <th>' . __('Keyname') . '</th>
    </tr>';
    $output .= '<thead>' . $header . '</thead>' . "\n" . '<tfoot>' . $header . '</tfoot>' . "\n" . '<tbody>' . "\n";
    $descriptions = array();
    $keys = array();
    foreach ($foreignData['disp_row'] as $relrow) {
        if ($foreignData['foreign_display'] != false) {
            $descriptions[] = $relrow[$foreignData['foreign_display']];
        } else {
            $descriptions[] = '';
        }
        $keys[] = $relrow[$foreignData['foreign_field']];
    }
    asort($keys);
    $hcount = 0;
    $odd_row = true;
    $indexByDescription = 0;
    // whether the key name corresponds to the selected value in the form
    $rightKeynameIsSelected = false;
    $leftKeynameIsSelected = false;
    foreach ($keys as $indexByKeyname => $value) {
        $hcount++;
        if ($GLOBALS['cfg']['RepeatCells'] > 0 && $hcount > $GLOBALS['cfg']['RepeatCells']) {
            $output .= $header;
            $hcount = 0;
            $odd_row = true;
        }
        // key names and descriptions for the left section,
        // sorted by key names
        $leftKeyname = $keys[$indexByKeyname];
        list($leftDescription, $leftDescriptionTitle) = PMA_getDescriptionAndTitle($descriptions[$indexByKeyname]);
        // key names and descriptions for the right section,
        // sorted by descriptions
        $rightKeyname = $keys[$indexByDescription];
        list($rightDescription, $rightDescriptionTitle) = PMA_getDescriptionAndTitle($descriptions[$indexByDescription]);
        $indexByDescription++;
        if (!empty($data)) {
            $rightKeynameIsSelected = $rightKeyname == $data;
            $leftKeynameIsSelected = $leftKeyname == $data;
        }
        $output .= '<tr class="noclick ' . ($odd_row ? 'odd' : 'even') . '">';
        $odd_row = !$odd_row;
        $output .= PMA_getHtmlForColumnElement('class="nowrap"', $leftKeynameIsSelected, $leftKeyname, $leftDescription, $leftDescriptionTitle);
        $output .= PMA_getHtmlForColumnElement('', $leftKeynameIsSelected, $leftKeyname, $leftDescription, $leftDescriptionTitle);
        $output .= '<td width="20%">' . '<img src="' . $GLOBALS['pmaThemeImage'] . 'spacer.png" alt=""' . ' width="1" height="1" /></td>';
        $output .= PMA_getHtmlForColumnElement('', $rightKeynameIsSelected, $rightKeyname, $rightDescription, $rightDescriptionTitle);
        $output .= PMA_getHtmlForColumnElement('class="nowrap"', $rightKeynameIsSelected, $rightKeyname, $rightDescription, $rightDescriptionTitle);
        $output .= '</tr>';
    }
    // end while
    $output .= '</tbody>' . '</table>';
    return $output;
}
/**
 * Function to get html for relational field selection
 *
 * @param string $db          current database
 * @param string $table       current table
 * @param string $field       field
 * @param array  $foreignData foreign column data
 * @param string $fieldkey    field key
 * @param array  $data        data
 *
 * @return string
 */
function PMA_getHtmlForRelationalFieldSelection($db, $table, $field, $foreignData, $fieldkey, $data)
{
    $gotopage = PMA_getHtmlForGotoPage($foreignData);
    $showall = PMA_getHtmlForShowAll($foreignData);
    $output = '<form action="browse_foreigners.php" method="post">' . '<fieldset>' . PMA_URL_getHiddenInputs($db, $table) . '<input type="hidden" name="field" value="' . htmlspecialchars($field) . '" />' . '<input type="hidden" name="fieldkey" value="' . (isset($fieldkey) ? htmlspecialchars($fieldkey) : '') . '" />';
    if (isset($_REQUEST['rownumber'])) {
        $output .= '<input type="hidden" name="rownumber" value="' . htmlspecialchars($_REQUEST['rownumber']) . '" />';
    }
    $output .= '<span class="formelement">' . '<label for="input_foreign_filter">' . __('Search:') . '</label>' . '<input type="text" name="foreign_filter" ' . 'id="input_foreign_filter" value="' . (isset($_REQUEST['foreign_filter']) ? htmlspecialchars($_REQUEST['foreign_filter']) : '') . '" />' . '<input type="submit" name="submit_foreign_filter" value="' . __('Go') . '" />' . '</span>' . '<span class="formelement">' . $gotopage . '</span>' . '<span class="formelement">' . $showall . '</span>' . '</fieldset>' . '</form>';
    $output .= '<table width="100%">';
    if (is_array($foreignData['disp_row'])) {
        $header = '<tr>
            <th>' . __('Keyname') . '</th>
            <th>' . __('Description') . '</th>
            <td width="20%"></td>
            <th>' . __('Description') . '</th>
            <th>' . __('Keyname') . '</th>
        </tr>';
        $output .= '<thead>' . $header . '</thead>' . "\n" . '<tfoot>' . $header . '</tfoot>' . "\n" . '<tbody>' . "\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 .= '<tr class="noclick ' . ($odd_row ? 'odd' : 'even') . '">';
            $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 .= '<td width="20%">' . '<img src="' . $GLOBALS['pmaThemeImage'] . 'spacer.png" alt=""' . ' width="1" height="1" /></td>';
            $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_val, $val_ordered_current_val_title, $field);
            $output .= '</tr>';
        }
        // end while
    }
    $output .= '</tbody>' . '</table>';
    return $output;
}