⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relation.lib.php

📁 phpMyAdmin图形界面化操作,我已经配置好了,只要把解要压缩后的文件放到站点下就可以用了
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/* vim: set expandtab sw=4 ts=4 sts=4: *//** * Set of functions used with the relation and pdf feature * * @version $Id: relation.lib.php 11657 2008-10-19 00:42:04Z lem9 $ */if (! defined('PHPMYADMIN')) {    exit;}/** * */require_once './libraries/Table.class.php';/** * Executes a query as controluser if possible, otherwise as normal user * * @param   string    the query to execute * @param   boolean   whether to display SQL error messages or not * * @return  integer   the result set, or false if no result set * * @access  public * * @author  Mike Beck <mikebeck@users.sourceforge.net> */function PMA_query_as_cu($sql, $show_error = true, $options = 0){    if ($show_error) {        $result = PMA_DBI_query($sql, $GLOBALS['controllink'], $options);    } else {        $result = @PMA_DBI_try_query($sql, $GLOBALS['controllink'], $options);    } // end if... else...    if ($result) {        return $result;    } else {        return false;    }} // end of the "PMA_query_as_cu()" function/** * @uses    $_SESSION['relation' . $GLOBALS['server']] for caching * @uses    $GLOBALS['cfgRelation'] to set it * @uses    $GLOBALS['server'] to ensure we are using server-specific pmadb  * @uses    PMA__getRelationsParam() * @uses    PMA_printRelationsParamDiagnostic() * @param   bool    $verbose    whether to print diagnostic info * @return  array   $cfgRelation */function PMA_getRelationsParam($verbose = false){    if (empty($_SESSION['relation' . $GLOBALS['server']])) {        $_SESSION['relation' . $GLOBALS['server']] = PMA__getRelationsParam();    }    if ($verbose) {        PMA_printRelationsParamDiagnostic($_SESSION['relation' . $GLOBALS['server']]);    }    // just for BC    $GLOBALS['cfgRelation'] = $_SESSION['relation' . $GLOBALS['server']];    return $_SESSION['relation' . $GLOBALS['server']];}/** * prints out diagnostic info for pma relation feature * * @uses    $GLOBALS['server'] * @uses    $GLOBALS['controllink'] * @uses    $GLOBALS['strNotOK'] * @uses    $GLOBALS['strDocu'] * @uses    $GLOBALS['strGeneralRelationFeat'] * @uses    $GLOBALS['strDisabled'] * @uses    $GLOBALS['strEnabled'] * @uses    $GLOBALS['strDisplayFeat'] * @uses    $GLOBALS['strCreatePdfFeat'] * @uses    $GLOBALS['strColComFeat'] * @uses    $GLOBALS['strBookmarkQuery'] * @uses    $GLOBALS['strUpdComTab'] * @uses    $GLOBALS['strQuerySQLHistory'] * @uses    $GLOBALS['strDesigner'] * @uses    $cfg['Server']['pmadb'] * @uses    sprintf() * @uses    PMA_printDiagMessageForFeature() * @uses    PMA_printDiagMessageForParameter() * @param   array   $cfgRelation */function PMA_printRelationsParamDiagnostic($cfgRelation){    $messages['error'] = '<font color="red"><strong>' . $GLOBALS['strNotOK']                   . '</strong></font> [ <a href="Documentation.html#%s" target="documentation">'                   . $GLOBALS['strDocu'] . '</a> ]';    $messages['ok'] = '<font color="green"><strong>' . $GLOBALS['strOK'] . '</strong></font>';    $messages['enabled']  = '<font color="green">' . $GLOBALS['strEnabled'] . '</font>';    $messages['disabled'] = '<font color="red">'   . $GLOBALS['strDisabled'] . '</font>';    if (false === $GLOBALS['cfg']['Server']['pmadb']) {        echo 'PMA Database ... '             . sprintf($messages['error'], 'pmadb')             . '<br />' . "\n"             . $GLOBALS['strGeneralRelationFeat']             . ' <font color="green">' . $GLOBALS['strDisabled']             . '</font>' . "\n";        return;    }    echo '<table>' . "\n";    PMA_printDiagMessageForParameter('pmadb', $GLOBALS['cfg']['Server']['pmadb'], $messages, 'pmadb');    PMA_printDiagMessageForParameter('relation', isset($cfgRelation['relation']), $messages, 'relation');    PMA_printDiagMessageForFeature('strGeneralRelationFeat', 'relwork', $messages);    PMA_printDiagMessageForParameter('table_info', isset($cfgRelation['displaywork']), $messages, 'table_info');    PMA_printDiagMessageForFeature('strDisplayFeat', 'displaywork', $messages);    PMA_printDiagMessageForParameter('table_coords', isset($cfgRelation['table_coords']), $messages, 'table_coords');    PMA_printDiagMessageForParameter('pdf_pages', isset($cfgRelation['pdf_pages']), $messages, 'table_coords');    PMA_printDiagMessageForFeature('strCreatePdfFeat', 'pdfwork', $messages);    PMA_printDiagMessageForParameter('column_info', isset($cfgRelation['column_info']), $messages, 'col_com');    PMA_printDiagMessageForFeature('strColComFeat', 'commwork', $messages, false);    PMA_printDiagMessageForFeature('strBookmarkQuery', 'bookmarkwork', $messages, false);    PMA_printDiagMessageForFeature('strMIME_transformation', 'mimework', $messages);    if ($cfgRelation['commwork'] && ! $cfgRelation['mimework']) {        echo '<tr><td colspan=2 align="left">' . $GLOBALS['strUpdComTab'] . '</td></tr>' . "\n";    }    PMA_printDiagMessageForParameter('history', isset($cfgRelation['history']), $messages, 'history');    PMA_printDiagMessageForFeature('strQuerySQLHistory', 'historywork', $messages);    PMA_printDiagMessageForParameter('designer_coords', isset($cfgRelation['designer_coords']), $messages, 'designer_coords');    PMA_printDiagMessageForFeature('strDesigner', 'designerwork', $messages);    echo '</table>' . "\n";}/** * prints out one diagnostic message for a feature * * @param   string  feature name in a message string * @param   string  the $GLOBALS['cfgRelation'] parameter to check * @param   array   utility messages * @param   boolean whether to skip a line after the message */function PMA_printDiagMessageForFeature($feature_name, $relation_parameter, $messages, $skip_line=true){    echo '    <tr><td colspan=2 align="right">' . $GLOBALS[$feature_name] . ': '         . ($GLOBALS['cfgRelation'][$relation_parameter] ? $messages['enabled'] : $messages['disabled'])         . '</td></tr>' . "\n";    if ($skip_line) {        echo '    <tr><td>&nbsp;</td></tr>' . "\n";    }}/** * prints out one diagnostic message for a configuration parameter * * @param   string  config parameter name to display * @param   boolean whether this parameter is set * @param   array   utility messages * @param   string  anchor in Documentation.html */function PMA_printDiagMessageForParameter($parameter, $relation_parameter_set, $messages, $doc_anchor){    echo '    <tr><th align="left">';    echo '$cfg[\'Servers\'][$i][\'' . $parameter . '\']  ... </th><td align="right">';    echo ($relation_parameter_set ? $messages['ok'] : sprintf($messages['error'], $doc_anchor)) . '</td></tr>' . "\n";}/** * Defines the relation parameters for the current user * just a copy of the functions used for relations ;-) * but added some stuff to check what will work * * @uses    $cfg['Server']['user'] * @uses    $cfg['Server']['pmadb'] * @uses    $cfg['Server']['verbose_check'] * @uses    $GLOBALS['server'] * @uses    $GLOBALS['controllink'] * @uses    PMA_DBI_QUERY_STORE * @uses    PMA_DBI_select_db() * @uses    PMA_backquote() * @uses    PMA_query_as_cu() * @uses    PMA_DBI_fetch_row() * @uses    PMA_DBI_free_result() * @access  protected * @author  Mike Beck <mikebeck@users.sourceforge.net> * @return  array    the relation parameters for the current user */function PMA__getRelationsParam(){    $cfgRelation                = array();    $cfgRelation['relwork']     = false;    $cfgRelation['displaywork'] = false;    $cfgRelation['bookmarkwork']= false;    $cfgRelation['pdfwork']     = false;    $cfgRelation['commwork']    = false;    $cfgRelation['mimework']    = false;    $cfgRelation['historywork'] = false;    $cfgRelation['designerwork'] = false;    $cfgRelation['allworks']    = false;    $cfgRelation['user']        = null;    $cfgRelation['db']          = null;    if ($GLOBALS['server'] == 0 || empty($GLOBALS['cfg']['Server']['pmadb'])     || ! PMA_DBI_select_db($GLOBALS['cfg']['Server']['pmadb'], $GLOBALS['controllink'])) {        // No server selected -> no bookmark table        // we return the array with the falses in it,        // to avoid some 'Unitialized string offset' errors later        $GLOBALS['cfg']['Server']['pmadb'] = false;        return $cfgRelation;    }    $cfgRelation['user']  = $GLOBALS['cfg']['Server']['user'];    $cfgRelation['db']    = $GLOBALS['cfg']['Server']['pmadb'];    //  Now I just check if all tables that i need are present so I can for    //  example enable relations but not pdf...    //  I was thinking of checking if they have all required columns but I    //  fear it might be too slow    $tab_query = 'SHOW TABLES FROM ' . PMA_backquote($GLOBALS['cfg']['Server']['pmadb']);    $tab_rs    = PMA_query_as_cu($tab_query, false, PMA_DBI_QUERY_STORE);    if (! $tab_rs) {        // query failed ... ?        //$GLOBALS['cfg']['Server']['pmadb'] = false;        return $cfgRelation;    }    while ($curr_table = @PMA_DBI_fetch_row($tab_rs)) {        if ($curr_table[0] == $GLOBALS['cfg']['Server']['bookmarktable']) {            $cfgRelation['bookmark']        = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['relation']) {            $cfgRelation['relation']        = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_info']) {            $cfgRelation['table_info']      = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_coords']) {            $cfgRelation['table_coords']    = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['designer_coords']) {            $cfgRelation['designer_coords']    = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['column_info']) {            $cfgRelation['column_info'] = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['pdf_pages']) {            $cfgRelation['pdf_pages']       = $curr_table[0];        } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['history']) {            $cfgRelation['history'] = $curr_table[0];        }    } // end while    PMA_DBI_free_result($tab_rs);    if (isset($cfgRelation['relation'])) {        $cfgRelation['relwork']         = true;        if (isset($cfgRelation['table_info'])) {                $cfgRelation['displaywork'] = true;        }    }    if (isset($cfgRelation['table_coords']) && isset($cfgRelation['pdf_pages'])) {        $cfgRelation['pdfwork']     = true;    }    if (isset($cfgRelation['column_info'])) {        $cfgRelation['commwork']    = true;        if ($GLOBALS['cfg']['Server']['verbose_check']) {            $mime_query  = 'SHOW FIELDS FROM '                . PMA_backquote($cfgRelation['db']) . '.'                . PMA_backquote($cfgRelation['column_info']);            $mime_rs     = PMA_query_as_cu($mime_query, false);            $mime_field_mimetype                = false;            $mime_field_transformation          = false;            $mime_field_transformation_options  = false;            while ($curr_mime_field = @PMA_DBI_fetch_row($mime_rs)) {                if ($curr_mime_field[0] == 'mimetype') {                    $mime_field_mimetype               = true;                } elseif ($curr_mime_field[0] == 'transformation') {                    $mime_field_transformation         = true;                } elseif ($curr_mime_field[0] == 'transformation_options') {                    $mime_field_transformation_options = true;                }            }            PMA_DBI_free_result($mime_rs);            if ($mime_field_mimetype             && $mime_field_transformation             && $mime_field_transformation_options) {                $cfgRelation['mimework'] = true;            }        } else {            $cfgRelation['mimework'] = true;        }    }    if (isset($cfgRelation['history'])) {        $cfgRelation['historywork']     = true;    }    // we do not absolutely need that the internal relations or the PDF    // schema feature be activated    if (isset($cfgRelation['designer_coords'])) {        $cfgRelation['designerwork']     = true;    }    if (isset($cfgRelation['bookmark'])) {        $cfgRelation['bookmarkwork']     = true;    }    if ($cfgRelation['relwork'] && $cfgRelation['displaywork']     && $cfgRelation['pdfwork'] && $cfgRelation['commwork']     && $cfgRelation['mimework'] && $cfgRelation['historywork']     && $cfgRelation['bookmarkwork'] && $cfgRelation['designerwork']) {        $cfgRelation['allworks'] = true;    }    return $cfgRelation;} // end of the 'PMA_getRelationsParam()' function/** * Gets all Relations to foreign tables for a given table or * optionally a given column in a table * * @author  Mike Beck <mikebeck@users.sourceforge.net> * @author  Marc Delisle * @access  public * @uses    $GLOBALS['controllink'] * @uses    $GLOBALS['information_schema_relations'] * @uses    PMA_getRelationsParam() * @uses    PMA_backquote() * @uses    PMA_sqlAddslashes() * @uses    PMA_DBI_fetch_result() * @uses    PMA_DBI_fetch_value() * @uses    PMA_SQP_analyze() * @uses    PMA_SQP_parse() * @uses    count() * @uses    strlen() * @param   string   $db        the name of the db to check for * @param   string   $table     the name of the table to check for * @param   string   $column    the name of the column to check for * @param   string   $source    the source for foreign key information * @return  array    db,table,column */function PMA_getForeigners($db, $table, $column = '', $source = 'both'){    $cfgRelation = PMA_getRelationsParam();    $foreign = array();    if ($cfgRelation['relwork'] && ($source == 'both' || $source == 'internal')) {        $rel_query = '             SELECT `master_field`,                    `foreign_db`,                    `foreign_table`,                    `foreign_field`               FROM ' . PMA_backquote($cfgRelation['db']) . '.' . PMA_backquote($cfgRelation['relation']) . '              WHERE `master_db`    = \'' . PMA_sqlAddslashes($db) . '\'                AND `master_table` = \'' . PMA_sqlAddslashes($table) . '\' ';        if (strlen($column)) {            $rel_query .= ' AND `master_field` = \'' . PMA_sqlAddslashes($column) . '\'';        }        $foreign = PMA_DBI_fetch_result($rel_query, 'master_field', null, $GLOBALS['controllink']);    }    if (($source == 'both' || $source == 'foreign') && strlen($table)) {        $show_create_table_query = 'SHOW CREATE TABLE '            . PMA_backquote($db) . '.' . PMA_backquote($table);        $show_create_table = PMA_DBI_fetch_value($show_create_table_query, 0, 1);        $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table));        foreach ($analyzed_sql[0]['foreign_keys'] as $one_key) {            // The analyzer may return more than one column name in the            // index list or the ref_index_list; if this happens,            // the current logic just discards the whole index; having            // more than one index field is currently unsupported (see FAQ 3.6)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -