Ejemplo n.º 1
0
        if ($style == 'even') {
            $style = 'odd';
        } else {
            $style = 'even';
        }
    }
    unset($tmp_link);
    ?>
    </tbody>
    </table>
    </div>
    <?php 
}
$sep = $GLOBALS['cfg']['NavigationTreeTableSeparator'];
// Get list of tables
$table_list = PMA_Util::getTableList($GLOBALS['db']);
$my_tables = array();
// For each table try to get the tracking version
foreach ($table_list as $key => $value) {
    // If $value is a table group.
    if (array_key_exists('is' . $sep . 'group', $value) && $value['is' . $sep . 'group']) {
        foreach ($value as $temp_table) {
            // If $temp_table is a table with the value for 'Name' is set,
            // rather than a property of the table group.
            if (is_array($temp_table) && array_key_exists('Name', $temp_table)) {
                $tracking_version = PMA_Tracker::getVersion($GLOBALS['db'], $temp_table['Name']);
                if ($tracking_version == -1) {
                    $my_tables[] = $temp_table['Name'];
                }
            }
        }
Ejemplo n.º 2
0
/**
 * Get untracked tables
 *
 * @param string $db current database
 *
 * @return array $untracked_tables
 */
function PMA_getUntrackedTables($db)
{
    $untracked_tables = array();
    $sep = $GLOBALS['cfg']['NavigationTreeTableSeparator'];
    // Get list of tables
    $table_list = PMA_Util::getTableList($db);
    // For each table try to get the tracking version
    foreach ($table_list as $key => $value) {
        // If $value is a table group.
        if (array_key_exists('is' . $sep . 'group', $value) && $value['is' . $sep . 'group']) {
            foreach ($value as $temp_table) {
                // If $temp_table is a table with the value for 'Name' is set,
                // rather than a property of the table group.
                if (is_array($temp_table) && array_key_exists('Name', $temp_table)) {
                    $tracking_version = PMA_Tracker::getVersion($db, $temp_table['Name']);
                    if ($tracking_version == -1) {
                        $untracked_tables[] = $temp_table['Name'];
                    }
                }
            }
        } else {
            // If $value is a table.
            if (PMA_Tracker::getVersion($db, $value['Name']) == -1) {
                $untracked_tables[] = $value['Name'];
            }
        }
    }
    return $untracked_tables;
}
Ejemplo n.º 3
0
/**
 * displays collapsable db list
 *
 * @param array   $ext_dblist extended db list
 * @param integer $offset
 * @param integer $count
 *
 * @return void
 *
 * @global integer $element_counter
 * @global string $img_minus
 * @global string $img_plus
 * @global string $href_left
 * @global string $db_start
 * @global string $common_url_query
 */
function PMA_displayDbList($ext_dblist, $offset, $count)
{
    global $element_counter, $img_minus, $img_plus, $href_left,
        $db_start, $common_url_query;

    // get table list, for all databases
    // doing this in one step takes advantage of
    // a single query with information_schema!
    $tables_full = PMA_DBI_get_tables_full(
        $GLOBALS['pma']->databases->getLimitedItems($offset, $count)
    );

    $url_dbgroup = '';
    echo '<ul id="leftdatabaselist">';
    $close_db_group = false;
    foreach ($ext_dblist as $group => $db_group) {
        if (count($GLOBALS['pma']->databases) > 1) {
            if ($close_db_group) {
                $url_dbgroup = '';
                echo '</ul>';
                echo '</li>';
                $close_db_group = false;
            }
            if (count($db_group) > 1) {
                $close_db_group = true;
                $url_dbgroup = '&amp;dbgroup=' . urlencode($group);
                $common_url_query = PMA_generate_common_url() . $url_dbgroup;
                $element_counter++;
                echo '<li class="dbgroup">';
                if ((! empty($_REQUEST['dbgroup']) && $_REQUEST['dbgroup'] == $group)
                    || $db_start == $group
                    || strpos($db_start, $group) === 0
                ) {
                    // display + only if this db(group) is not preselected
                    printf($href_left, $element_counter, PMA_generate_common_url());
                    printf($img_minus, $element_counter);
                } else {
                    printf($href_left, $element_counter, $common_url_query);
                    printf($img_plus, $element_counter);
                }
                echo '</a> ' . $group . "\n";
                if ((! empty($_REQUEST['dbgroup']) && $_REQUEST['dbgroup'] == $group)
                    || $db_start == $group
                    || strpos($db_start, $group) === 0
                ) {
                    echo '<ul id="subel' . $element_counter . '">' . "\n";
                } else {
                    echo '<ul id="subel' . $element_counter . '"'
                        .' style="display: none">' . "\n";
                }
            }
        }
        foreach ($db_group as $db) {
            $common_url_query = PMA_generate_common_url($db['name']) . $url_dbgroup;

            $element_counter++;
            // Displays the database name
            echo '<li>' . "\n";

            if (count($GLOBALS['pma']->databases) > 1) {
                // only with more than one db we need collapse ...
                if ($db_start != $db['name'] || $db['num_tables'] < 1) {
                    // display + only if this db is not preselected
                    // or table count is 0
                    printf($href_left, $element_counter, $common_url_query);
                    printf($img_plus, $element_counter);
                } else {
                    printf(
                        $href_left, $element_counter,
                        PMA_generate_common_url() . $url_dbgroup
                    );
                    printf($img_minus, $element_counter);
                }
                echo '</a>';

                // ... and we need to refresh both frames on db selection
                ?>
                <a class="item"
                    id="<?php echo htmlspecialchars($db['name']); ?>"
                    href="index.php?<?php echo $common_url_query; ?>"
                    target="_parent"
                    title="<?php echo htmlspecialchars($db['comment']); ?>"
                    onclick="
                        if (! toggle('<?php echo $element_counter; ?>', true))
                            window.parent.goTo('navigation.php?<?php echo $common_url_query; ?>');
                        window.parent.goTo('<?php echo $GLOBALS['cfg']['DefaultTabDatabase']
                            . '?' . $common_url_query; ?>', 'main');
                        return false;">
                    <?php
                    // Might be unset if CountTables directive is false
                    if (isset($db['num_tables'])) {
                        if ($GLOBALS['text_dir'] === 'rtl') {
                            echo ' <bdo dir="ltr">(' . $db['num_tables'] . ')</bdo> ';
                        }
                    }
                    echo htmlspecialchars($db['disp_name']);
                    if (isset($db['num_tables'])) {
                        if ($GLOBALS['text_dir'] === 'ltr') {
                            echo ' <bdo dir="ltr">(' . $db['num_tables'] . ')</bdo> ';
                        }
                    }
                    ?>
                </a>
                <?php
            } else {
                // with only 1 db available we dont need to refresh navi frame
                // on db selection, only phpmain
                ?>
                <a href="<?php echo $GLOBALS['cfg']['DefaultTabDatabase']
                    . '?' . $common_url_query; ?>"
                    id="<?php echo htmlspecialchars($db['name']); ?>"
                    title="<?php echo htmlspecialchars($db['comment']); ?>">
                    <?php
                    if (isset($db['num_tables'])) {
                        if ($GLOBALS['text_dir'] === 'rtl') {
                            echo ' <bdo dir="ltr">(' . $db['num_tables'] . ')</bdo> ';
                        }
                    }
                    echo htmlspecialchars($db['disp_name']);
                    if (isset($db['num_tables'])) {
                        if ($GLOBALS['text_dir'] === 'ltr') {
                            echo ' <bdo dir="ltr">(' . $db['num_tables'] . ')</bdo> ';
                        }
                    }
                    ?>
                </a>
                <?php
            }
            if (($GLOBALS['cfg']['Server']['CountTables'] === false)
                || $db['num_tables']
            ) {
                if (isset($tables_full[$db['name']])) {
                    $tables = PMA_Util::getTableList(
                        $db['name'],
                        $tables_full[$db['name']]
                    );
                } elseif (isset($tables_full[strtolower($db['name'])])) {
                    // on windows with lower_case_table_names = 1
                    // MySQL returns
                    // with SHOW DATABASES or information_schema.SCHEMATA: `Test`
                    // but information_schema.TABLES gives `test`
                    // bug #1436171
                    // sf.net/tracker/?func=detail&aid=1436171&group_id=23067&atid=377408
                    $tables = PMA_Util::getTableList(
                        $db['name'],
                        $tables_full[strtolower($db['name'])]
                    );
                } else {
                    $tables = PMA_Util::getTableList($db['name']);
                }
                $child_visible
                    = (bool) (count($GLOBALS['pma']->databases) === 1 || $db_start == $db['name']);
                PMA_displayTableList($tables, $child_visible, '', $db['name']);
            } elseif ($GLOBALS['cfg']['LeftFrameLight']) {
                // no tables and LeftFrameLight:
                // display message no tables in selected db
                echo '<p>' . __('Please select a database') . '</p>' . "\n";
            }
            echo '</li>' . "\n";
        } // end foreach db
    } // end foreach group

    if ($close_db_group) {
        $url_dbgroup = '';
        echo '</ul>';
        echo '</li>';
        $close_db_group = false;
    }

    echo '</ul>' . "\n";
}
Ejemplo n.º 4
0
<?php

/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * DB search optimisation
 *
 * @package PhpMyAdmin
 */
require_once 'libraries/common.inc.php';
require_once 'libraries/Util.class.php';
$db = $_GET['db'];
$table_term = $_GET['table'];
$common_url_query = PMA_generate_common_url($GLOBALS['db']);
$tables_full = PMA_Util::getTableList($db);
$tables_response = array();
foreach ($tables_full as $key => $table) {
    if (strpos($key, $table_term) !== false) {
        $link = '<li class="ajax_table"><a class="tableicon" title="' . htmlspecialchars($link_title) . ': ' . htmlspecialchars($table['Comment']) . ' (' . PMA_Util::formatNumber($table['Rows'], 0) . ' ' . __('Rows') . ')"' . ' id="quick_' . htmlspecialchars($table_db . '.' . $table['Name']) . '"' . ' href="' . $GLOBALS['cfg']['LeftDefaultTabTable'] . '?' . $common_url_query . '&amp;table=' . urlencode($table['Name']) . '&amp;goto=' . $GLOBALS['cfg']['LeftDefaultTabTable'] . '" >';
        $attr = array('id' => 'icon_' . htmlspecialchars($table_db . '.' . $table['Name']));
        if (PMA_Table::isView($table_db, $table['Name'])) {
            $link .= PMA_Util::getImage('s_views.png', htmlspecialchars($link_title), $attr);
        } else {
            $link .= PMA_Util::getImage('b_browse.png', htmlspecialchars($link_title), $attr);
        }
        $link .= '</a>';
        // link for the table name itself
        $href = $GLOBALS['cfg']['DefaultTabTable'] . '?' . $common_url_query . '&amp;table=' . urlencode($table['Name']) . '&amp;pos=0';
        $link .= '<a href="' . $href . '" title="' . htmlspecialchars(PMA_Util::getTitleForTarget($GLOBALS['cfg']['DefaultTabTable']) . ': ' . $table['Comment'] . ' (' . PMA_Util::formatNumber($table['Rows'], 0) . ' ' . __('Rows') . ')') . '" id="' . htmlspecialchars($table_db . '.' . $table['Name']) . '">' . str_replace(' ', '&nbsp;', htmlspecialchars($table['disp_name'])) . '</a>';
        $link .= '</li>' . "\n";
        $table['line'] = $link;
        $tables_response[] = $table;