/**
 * Get HTML for global or database specific privileges
 *
 * @param string $db       the database
 * @param string $table    the table
 * @param string $row      first row from result or boolean false
 *
 * @return string $html_output
 */
function PMA_getHtmlForGlobalOrDbSpecificPrivs($db, $table, $row)
{
    $privTable_names = array(0 => __('Data'), 1 => __('Structure'), 2 => __('Administration'));
    $privTable = array();
    // d a t a
    $privTable[0] = PMA_getDataPrivilegeTable($db);
    // s t r u c t u r e
    $privTable[1] = PMA_getStructurePrivilegeTable($table, $row);
    // a d m i n i s t r a t i o n
    $privTable[2] = PMA_getAdministrationPrivilegeTable($db);
    $html_output = '<input type="hidden" name="grant_count" value="' . (count($privTable[0]) + count($privTable[1]) + count($privTable[2]) - (isset($row['Grant_priv']) ? 1 : 0)) . '" />';
    $html_output .= '<fieldset id="fieldset_user_global_rights"><legend>';
    if ($db == '*') {
        $html_output .= __('Global privileges');
    } else {
        if ($table == '*') {
            $html_output .= __('Database-specific privileges');
        } else {
            $html_output .= __('Table-specific privileges');
        }
    }
    $html_output .= ' (<a href="#" ' . 'onclick="setCheckboxes(\'fieldset_user_global_rights\', true); ' . 'return false;">' . __('Check All') . '</a> /' . '<a href="#" ' . 'onclick="setCheckboxes(\'fieldset_user_global_rights\', false); ' . 'return false;">' . __('Uncheck All') . '</a>)';
    $html_output .= '</legend>';
    $html_output .= '<p><small><i>' . __('Note: MySQL privilege names are expressed in English') . '</i></small></p>';
    // Output the Global privilege tables with checkboxes
    $html_output .= PMA_getHtmlForGlobalPrivTableWithCheckboxes($privTable, $privTable_names, $row);
    // The "Resource limits" box is not displayed for db-specific privs
    if ($db == '*') {
        $html_output .= PMA_getHtmlForDisplayResourceLimits($row);
    }
    // for Safari 2.0.2
    $html_output .= '<div class="clearfloat"></div>';
    return $html_output;
}
    /**
     * Test for PMA_getHtmlForDisplayResourceLimits
     *
     * @return void
     */
    public function testPMAGetHtmlForDisplayResourceLimits()
    {
        $row = array(
            'max_questions' => 'max_questions',
            'max_updates' => 'max_updates',
            'max_connections' => 'max_connections',
            'max_user_connections' => 'max_user_connections',
        );

        //PMA_getHtmlForDisplayResourceLimits
        $html = PMA_getHtmlForDisplayResourceLimits($row);
        $this->assertContains(
            '<legend>' . __('Resource limits') . '</legend>',
            $html
        );
        $this->assertContains(
            __('Note: Setting these options to 0 (zero) removes the limit.'),
            $html
        );
        $this->assertContains(
            'MAX QUERIES PER HOUR',
            $html
        );
        $this->assertContains(
            $row['max_connections'],
            $html
        );
        $this->assertContains(
            $row['max_updates'],
            $html
        );
        $this->assertContains(
            $row['max_connections'],
            $html
        );
        $this->assertContains(
            $row['max_user_connections'],
            $html
        );
        $this->assertContains(
            __('Limits the number of simultaneous connections the user may have.'),
            $html
        );
        $this->assertContains(
            __('Limits the number of simultaneous connections the user may have.'),
            $html
        );
    }