~ubuntu-branches/ubuntu/lucid/phpmyadmin/lucid

« back to all changes in this revision

Viewing changes to libraries/db_structure.lib.php

  • Committer: Bazaar Package Importer
  • Author(s): Michal Čihař
  • Date: 2010-03-08 15:25:00 UTC
  • mfrom: (1.2.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20100308152500-6e8hmuqc5co39de5
Tags: 4:3.3.0-1
* New upstream version.
* Rediff debian/patches.
* Fix permissions on mediawiki export extension.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/* vim: set expandtab sw=4 ts=4 sts=4: */
 
3
/**
 
4
 *
 
5
 * @version $Id: db_structure.lib.php 12952 2009-09-12 11:17:56Z lem9 $
 
6
 * @package phpMyAdmin
 
7
 */
 
8
if (! defined('PHPMYADMIN')) {
 
9
    exit;
 
10
}
 
11
 
 
12
// Display function
 
13
/**
 
14
 * void PMA_TableHeader([bool $db_is_information_schema = false])
 
15
 * display table header (<table><thead>...</thead><tbody>)
 
16
 *
 
17
 * @uses    PMA_showHint()
 
18
 * @uses    $GLOBALS['cfg']['PropertiesNumColumns']
 
19
 * @uses    $GLOBALS['is_show_stats']
 
20
 * @uses    $GLOBALS['strTable']
 
21
 * @uses    $GLOBALS['strAction']
 
22
 * @uses    $GLOBALS['strRecords']
 
23
 * @uses    $GLOBALS['strApproximateCount']
 
24
 * @uses    $GLOBALS['strType']
 
25
 * @uses    $GLOBALS['strCollation']
 
26
 * @uses    $GLOBALS['strSize']
 
27
 * @uses    $GLOBALS['strOverhead']
 
28
 * @uses    $GLOBALS['structure_tbl_col_cnt']
 
29
 * @uses    PMA_SortableTableHeader()
 
30
 * @param   boolean $db_is_information_schema
 
31
 * @param   boolean $replication
 
32
 */
 
33
function PMA_TableHeader($db_is_information_schema = false, $replication = false)
 
34
{
 
35
    $cnt = 0; // Let's count the columns...
 
36
 
 
37
    if ($db_is_information_schema) {
 
38
        $action_colspan = 3;
 
39
    } else {
 
40
        $action_colspan = 6;
 
41
    }
 
42
 
 
43
    echo '<table class="data" style="float: left;">' . "\n"
 
44
        .'<thead>' . "\n"
 
45
        .'<tr><th></th>' . "\n"
 
46
        .'    <th>' . PMA_SortableTableHeader($GLOBALS['strTable'], 'table') . '</th>' . "\n";
 
47
    if ($replication) {
 
48
     echo '    <th>' . "\n"
 
49
         .'        ' . $GLOBALS['strReplication'] . "\n"
 
50
         .'    </th>';
 
51
    }
 
52
    echo '    <th colspan="' . $action_colspan . '">' . "\n"
 
53
        .'        ' . $GLOBALS['strAction'] . "\n"
 
54
        .'    </th>'
 
55
        // larger values are more interesting so default sort order is DESC
 
56
        .'    <th>' . PMA_SortableTableHeader($GLOBALS['strRecords'], 'records', 'DESC')
 
57
        .PMA_showHint(PMA_sanitize($GLOBALS['strApproximateCount'])) . "\n"
 
58
        .'    </th>' . "\n";
 
59
    if (!($GLOBALS['cfg']['PropertiesNumColumns'] > 1)) {
 
60
        echo '    <th>' . PMA_SortableTableHeader($GLOBALS['strType'], 'type') . '</th>' . "\n";
 
61
        $cnt++;
 
62
        echo '    <th>' . PMA_SortableTableHeader($GLOBALS['strCollation'], 'collation') . '</th>' . "\n";
 
63
        $cnt++;
 
64
    }
 
65
    if ($GLOBALS['is_show_stats']) {
 
66
        // larger values are more interesting so default sort order is DESC
 
67
        echo '    <th>' . PMA_SortableTableHeader($GLOBALS['strSize'], 'size', 'DESC') . '</th>' . "\n"
 
68
        // larger values are more interesting so default sort order is DESC
 
69
           . '    <th>' . PMA_SortableTableHeader($GLOBALS['strOverhead'], 'overhead', 'DESC') . '</th>' . "\n";
 
70
        $cnt += 2;
 
71
    }
 
72
    echo '</tr>' . "\n";
 
73
    echo '</thead>' . "\n";
 
74
    echo '<tbody>' . "\n";
 
75
    $GLOBALS['structure_tbl_col_cnt'] = $cnt + $action_colspan + 3;
 
76
} // end function PMA_TableHeader()
 
77
 
 
78
 
 
79
/**
 
80
 * Creates a clickable column header for table information
 
81
 *
 
82
 * @param   string  title to use for the link
 
83
 * @param   string  corresponds to sortable data name mapped in libraries/db_info.inc.php  
 
84
 * @param   string  initial sort order
 
85
 * @returns string  link to be displayed in the table header
 
86
 */
 
87
function PMA_SortableTableHeader($title, $sort, $initial_sort_order = 'ASC')
 
88
{
 
89
    // Set some defaults
 
90
    $requested_sort = 'table';
 
91
    $requested_sort_order = $future_sort_order = $initial_sort_order;
 
92
    
 
93
    // If the user requested a sort
 
94
    if (isset($_REQUEST['sort'])) {
 
95
        $requested_sort = $_REQUEST['sort'];
 
96
 
 
97
        if (isset($_REQUEST['sort_order'])) {
 
98
            $requested_sort_order = $_REQUEST['sort_order'];
 
99
        }
 
100
    }
 
101
 
 
102
    $order_img = '';
 
103
    $order_link_params = array();
 
104
    $order_link_params['title'] = $GLOBALS['strSort'];
 
105
 
 
106
    // If this column was requested to be sorted.
 
107
    if ($requested_sort == $sort) {
 
108
        if ($requested_sort_order == 'ASC') {
 
109
            $future_sort_order = 'DESC';
 
110
            // current sort order is ASC
 
111
            $order_img  = ' <img class="icon" src="' . $GLOBALS['pmaThemeImage'] . 's_asc.png" width="11" height="9" alt="'. $GLOBALS['strAscending'] . '" title="'. $GLOBALS['strAscending'] . '" id="sort_arrow" />';
 
112
            // but on mouse over, show the reverse order (DESC)
 
113
            $order_link_params['onmouseover'] = 'if(document.getElementById(\'sort_arrow\')){ document.getElementById(\'sort_arrow\').src=\'' . $GLOBALS['pmaThemeImage'] . 's_desc.png\'; }';
 
114
            // on mouse out, show current sort order (ASC)
 
115
            $order_link_params['onmouseout']  = 'if(document.getElementById(\'sort_arrow\')){ document.getElementById(\'sort_arrow\').src=\'' . $GLOBALS['pmaThemeImage'] . 's_asc.png\'; }';
 
116
        } else {
 
117
            $future_sort_order = 'ASC';
 
118
            // current sort order is DESC
 
119
            $order_img  = ' <img class="icon" src="' . $GLOBALS['pmaThemeImage'] . 's_desc.png" width="11" height="9" alt="'. $GLOBALS['strDescending'] . '" title="'. $GLOBALS['strDescending'] . '" id="sort_arrow" />';
 
120
            // but on mouse over, show the reverse order (ASC)
 
121
            $order_link_params['onmouseover'] = 'if(document.getElementById(\'sort_arrow\')){ document.getElementById(\'sort_arrow\').src=\'' . $GLOBALS['pmaThemeImage'] . 's_asc.png\'; }';
 
122
            // on mouse out, show current sort order (DESC)
 
123
            $order_link_params['onmouseout']  = 'if(document.getElementById(\'sort_arrow\')){ document.getElementById(\'sort_arrow\').src=\'' . $GLOBALS['pmaThemeImage'] . 's_desc.png\'; }';
 
124
        }
 
125
    }
 
126
 
 
127
    $_url_params = array(
 
128
        'db' => $_REQUEST['db'],
 
129
    );
 
130
 
 
131
    $url = 'db_structure.php'.PMA_generate_common_url($_url_params);
 
132
    // We set the position back to 0 every time they sort.
 
133
    $url .= "&amp;pos=0&amp;sort=$sort&amp;sort_order=$future_sort_order";
 
134
 
 
135
    return PMA_linkOrButton($url, $title . $order_img, $order_link_params);
 
136
} // end function PMA_SortableTableHeader()
 
137
?>