Example #1
0
/**
 * Inserts existing entries in a PMA_* table by reading a value from an old entry
 *
 * @param   string  The array index, which Relation feature to check
 *                  ('relwork', 'commwork', ...)
 * @param   string  The array index, which PMA-table to update
 *                  ('bookmark', 'relation', ...)
 * @param   array   Which fields will be SELECT'ed from the old entry
 * @param   array   Which fields will be used for the WHERE query
 *                  (array('FIELDNAME' => 'FIELDVALUE'))
 * @param   array   Which fields will be used as new VALUES. These are the important
 *                  keys which differ from the old entry.
 *                  (array('FIELDNAME' => 'NEW FIELDVALUE'))
 * @global  string  relation variable
 *
 * @author          Garvin Hicking <*****@*****.**>
 */
function PMA_duplicate_table_info($work, $pma_table, $get_fields, $where_fields, $new_fields)
{
    global $cfgRelation;
    $last_id = -1;
    if ($cfgRelation[$work]) {
        $select_parts = array();
        $row_fields = array();
        foreach ($get_fields as $nr => $get_field) {
            $select_parts[] = PMA_backquote($get_field);
            $row_fields[$get_field] = 'cc';
        }
        $where_parts = array();
        foreach ($where_fields as $_where => $_value) {
            $where_parts[] = PMA_backquote($_where) . ' = \'' . PMA_sqlAddslashes($_value) . '\'';
        }
        $new_parts = array();
        $new_value_parts = array();
        foreach ($new_fields as $_where => $_value) {
            $new_parts[] = PMA_backquote($_where);
            $new_value_parts[] = PMA_sqlAddslashes($_value);
        }
        $table_copy_query = 'SELECT ' . implode(', ', $select_parts) . ' FROM ' . PMA_backquote($cfgRelation[$pma_table]) . ' WHERE ' . implode(' AND ', $where_parts);
        // must use PMA_DBI_QUERY_STORE here, since we execute another
        // query inside the loop
        $table_copy_rs = PMA_query_as_cu($table_copy_query, TRUE, PMA_DBI_QUERY_STORE);
        while ($table_copy_row = @PMA_DBI_fetch_assoc($table_copy_rs)) {
            $value_parts = array();
            foreach ($table_copy_row as $_key => $_val) {
                if (isset($row_fields[$_key]) && $row_fields[$_key] == 'cc') {
                    $value_parts[] = PMA_sqlAddslashes($_val);
                }
            }
            $new_table_query = 'INSERT IGNORE INTO ' . PMA_backquote($cfgRelation[$pma_table]) . ' (' . implode(', ', $select_parts) . ', ' . implode(', ', $new_parts) . ')' . ' VALUES ' . ' (\'' . implode('\', \'', $value_parts) . '\', \'' . implode('\', \'', $new_value_parts) . '\')';
            $new_table_rs = PMA_query_as_cu($new_table_query);
            $last_id = PMA_DBI_insert_id();
        }
        // end while
        return $last_id;
    }
    return true;
}
Example #2
0
         $ch_query = 'DELETE FROM ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages']) . ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'' . ' AND   page_nr = ' . $chpage;
         PMA_query_as_cu($ch_query, FALSE, $query_default_option);
         unset($chpage);
     }
     break;
 case 'createpage':
     if (!isset($newpage) || $newpage == '') {
         $newpage = $strNoDescription;
     }
     $ins_query = 'INSERT INTO ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages']) . ' (db_name, page_descr)' . ' VALUES (\'' . PMA_sqlAddslashes($db) . '\', \'' . PMA_sqlAddslashes($newpage) . '\')';
     PMA_query_as_cu($ins_query, FALSE, $query_default_option);
     // A u t o m a t i c    l a y o u t
     // ================================
     if (isset($auto_layout_internal) || isset($auto_layout_innodb)) {
         // save the page number
         $pdf_page_number = PMA_DBI_insert_id(isset($controllink) ? $controllink : '');
         $all_tables = array();
     }
     if (isset($auto_layout_innodb)) {
         // get the tables list
         $tables = PMA_DBI_get_tables_full($db);
         // find the InnoDB ones
         $innodb_tables = array();
         foreach ($tables as $table_name => $table_properties) {
             if ($table_properties['ENGINE'] == 'InnoDB') {
                 $innodb_tables[] = $table_name;
             }
         }
         $all_tables = $innodb_tables;
         // could be improved by finding the tables which have the
         // most references keys and place them at the beginning
Example #3
0
foreach ($query as $query_index => $single_query) {
    if ($cfg['IgnoreMultiSubmitErrors']) {
        $result = PMA_DBI_try_query($single_query);
    } else {
        $result = PMA_DBI_query($single_query);
    }
    if (isset($GLOBALS['warning'])) {
        $warning_message .= $GLOBALS['warning'] . '[br]';
    }
    if (!$result) {
        $message .= PMA_DBI_getError();
    } else {
        if (@PMA_DBI_affected_rows()) {
            $total_affected_rows += @PMA_DBI_affected_rows();
        }
        $insert_id = PMA_DBI_insert_id();
        if ($insert_id != 0) {
            $last_message .= '[br]' . $strInsertedRowId . '&nbsp;' . $insert_id;
        }
    }
    // end if
    PMA_DBI_free_result($result);
    unset($result);
}
if ($total_affected_rows != 0) {
    $message .= $total_affected_rows;
} else {
    $message .= $strModifications;
}
$message .= $last_message;
if (!empty($warning_message)) {
Example #4
0
 /**
  * Inserts existing entries in a PMA_* table by reading a value from an old
  * entry
  *
  * @param string $work         The array index, which Relation feature to
  *                             check ('relwork', 'commwork', ...)
  * @param string $pma_table    The array index, which PMA-table to update
  *                             ('bookmark', 'relation', ...)
  * @param array  $get_fields   Which fields will be SELECT'ed from the old entry
  * @param array  $where_fields Which fields will be used for the WHERE query
  *                             (array('FIELDNAME' => 'FIELDVALUE'))
  * @param array  $new_fields   Which fields will be used as new VALUES.
  *                             These are the important keys which differ
  *                             from the old entry
  *                             (array('FIELDNAME' => 'NEW FIELDVALUE'))
  *
  * @global relation variable
  *
  * @return int|true
  */
 public static function duplicateInfo($work, $pma_table, $get_fields, $where_fields, $new_fields)
 {
     $last_id = -1;
     if (isset($GLOBALS['cfgRelation']) && $GLOBALS['cfgRelation'][$work]) {
         $select_parts = array();
         $row_fields = array();
         foreach ($get_fields as $get_field) {
             $select_parts[] = PMA_Util::backquote($get_field);
             $row_fields[$get_field] = 'cc';
         }
         $where_parts = array();
         foreach ($where_fields as $_where => $_value) {
             $where_parts[] = PMA_Util::backquote($_where) . ' = \'' . PMA_Util::sqlAddSlashes($_value) . '\'';
         }
         $new_parts = array();
         $new_value_parts = array();
         foreach ($new_fields as $_where => $_value) {
             $new_parts[] = PMA_Util::backquote($_where);
             $new_value_parts[] = PMA_Util::sqlAddSlashes($_value);
         }
         $table_copy_query = '
             SELECT ' . implode(', ', $select_parts) . '
               FROM ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_Util::backquote($GLOBALS['cfgRelation'][$pma_table]) . '
              WHERE ' . implode(' AND ', $where_parts);
         // must use PMA_DBI_QUERY_STORE here, since we execute another
         // query inside the loop
         $table_copy_rs = PMA_queryAsControlUser($table_copy_query, true, PMA_DBI_QUERY_STORE);
         while ($table_copy_row = @PMA_DBI_fetch_assoc($table_copy_rs)) {
             $value_parts = array();
             foreach ($table_copy_row as $_key => $_val) {
                 if (isset($row_fields[$_key]) && $row_fields[$_key] == 'cc') {
                     $value_parts[] = PMA_Util::sqlAddSlashes($_val);
                 }
             }
             $new_table_query = 'INSERT IGNORE INTO ' . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_Util::backquote($GLOBALS['cfgRelation'][$pma_table]) . '
                 (' . implode(', ', $select_parts) . ',
                  ' . implode(', ', $new_parts) . ')
                 VALUES
                 (\'' . implode('\', \'', $value_parts) . '\',
                  \'' . implode('\', \'', $new_value_parts) . '\')';
             PMA_queryAsControlUser($new_table_query);
             $last_id = PMA_DBI_insert_id();
         }
         // end while
         PMA_DBI_free_result($table_copy_rs);
         return $last_id;
     }
     return true;
 }
Example #5
0
/**
 * Create a PDF page
 *
 * @param string $newpage     name of the new PDF page
 * @param array  $cfgRelation
 * @param string $db          database name
 *
 * @return string   $pdf_page_number
 */
function PMA_REL_create_page($newpage, $cfgRelation, $db)
{
    if (!isset($newpage) || $newpage == '') {
        $newpage = __('no description');
    }
    $ins_query = 'INSERT INTO ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages']) . ' (db_name, page_descr)' . ' VALUES (\'' . PMA_sqlAddSlashes($db) . '\', \'' . PMA_sqlAddSlashes($newpage) . '\')';
    PMA_query_as_controluser($ins_query, false);
    return PMA_DBI_insert_id(isset($GLOBALS['controllink']) ? $GLOBALS['controllink'] : '');
}
Example #6
0
/**
 * Executes the sql query and get the result, then move back to the calling page
 *
 * @param array  $url_params url paramters array
 * @param string $query      built query from PMA_buildSqlQuery()
 *
 * @return array             $url_params, $total_affected_rows, $last_messages
 *                           $warning_messages, $error_messages, $return_to_sql_query
 */
function PMA_executeSqlQuery($url_params, $query)
{
    $return_to_sql_query = '';
    if (!empty($GLOBALS['sql_query'])) {
        $url_params['sql_query'] = $GLOBALS['sql_query'];
        $return_to_sql_query = $GLOBALS['sql_query'];
    }
    $GLOBALS['sql_query'] = implode('; ', $query) . ';';
    // to ensure that the query is displayed in case of
    // "insert as new row" and then "insert another new row"
    $GLOBALS['display_query'] = $GLOBALS['sql_query'];
    $total_affected_rows = 0;
    $last_messages = array();
    $warning_messages = array();
    $error_messages = array();
    foreach ($query as $single_query) {
        if ($_REQUEST['submit_type'] == 'showinsert') {
            $last_messages[] = PMA_Message::notice(__('Showing SQL query'));
            continue;
        }
        if ($GLOBALS['cfg']['IgnoreMultiSubmitErrors']) {
            $result = PMA_DBI_try_query($single_query);
        } else {
            $result = PMA_DBI_query($single_query);
        }
        if (!$result) {
            $error_messages[] = PMA_Message::sanitize(PMA_DBI_getError());
        } else {
            // The next line contains a real assignment, it's not a typo
            if ($tmp = @PMA_DBI_affected_rows()) {
                $total_affected_rows += $tmp;
            }
            unset($tmp);
            $insert_id = PMA_DBI_insert_id();
            if ($insert_id != 0) {
                // insert_id is id of FIRST record inserted in one insert, so if we
                // inserted multiple rows, we had to increment this
                if ($total_affected_rows > 0) {
                    $insert_id = $insert_id + $total_affected_rows - 1;
                }
                $last_message = PMA_Message::notice(__('Inserted row id: %1$d'));
                $last_message->addParam($insert_id);
                $last_messages[] = $last_message;
            }
            PMA_DBI_free_result($result);
        }
        $warning_messages = PMA_getWarningMessages();
    }
    return array($url_params, $total_affected_rows, $last_messages, $warning_messages, $error_messages, $return_to_sql_query);
}
/**
 * Create a PDF page
 *
 * @uses    $GLOBALS['strNoDescription']
 * @uses    PMA_backquote()
 * @uses    $GLOBALS['cfgRelation']['db']
 * @uses    PMA_sqlAddslashes()
 * @uses    PMA_query_as_cu()
 * @uses    PMA_DBI_insert_id()
 * @uses    $GLOBALS['controllink']
 * @param string    $newpage
 * @param array     $cfgRelation
 * @param string    $db
 * @param string    $query_default_option
 * @return string   $pdf_page_number
 */
function PMA_REL_create_page($newpage, $cfgRelation, $db, $query_default_option) {
    if (! isset($newpage) || $newpage == '') {
        $newpage = $GLOBALS['strNoDescription'];
    }
    $ins_query   = 'INSERT INTO ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages'])
                 . ' (db_name, page_descr)'
                 . ' VALUES (\'' . PMA_sqlAddslashes($db) . '\', \'' . PMA_sqlAddslashes($newpage) . '\')';
    PMA_query_as_cu($ins_query, FALSE, $query_default_option);
    return PMA_DBI_insert_id(isset($GLOBALS['controllink']) ? $GLOBALS['controllink'] : '');
}
Example #8
0
         PMA_query_as_cu($ch_query, FALSE, $query_default_option);
         unset($chpage);
     }
     break;
 case 'createpage':
     if (!isset($newpage) || $newpage == '') {
         $newpage = $strNoDescription;
     }
     $ins_query = 'INSERT INTO ' . PMA_backquote($cfgRelation['pdf_pages']) . ' (db_name, page_descr)' . ' VALUES (\'' . PMA_sqlAddslashes($db) . '\', \'' . PMA_sqlAddslashes($newpage) . '\')';
     PMA_query_as_cu($ins_query, FALSE, $query_default_option);
     // A u t o m a t i c    l a y o u t
     //
     // TODO: support InnoDB
     if (isset($autolayout)) {
         // save the page number
         $pdf_page_number = PMA_DBI_insert_id(isset($dbh) ? $dbh : '');
         // get the tables that have relations, by descending
         // number of links
         $master_tables = 'SELECT COUNT(master_table), master_table' . ' FROM ' . PMA_backquote($cfgRelation['relation']) . ' WHERE master_db = \'' . $db . '\'' . ' GROUP BY master_table' . ' ORDER BY ' . PMA_backquote('COUNT(master_table)') . ' DESC ';
         $master_tables_rs = PMA_query_as_cu($master_tables, FALSE, $query_default_option);
         if ($master_tables_rs && PMA_DBI_num_rows($master_tables_rs) > 0) {
             // first put all the master tables at beginning
             // of the list, so they are near the center of
             // the schema
             while (list(, $master_table) = PMA_DBI_fetch_row($master_tables_rs)) {
                 $all_tables[] = $master_table;
             }
             // then for each master, add its foreigns into an array
             // of foreign tables, if not already there
             // (a foreign might be foreign for more than
             // one table, and might be a master itself)
Example #9
0
/**
 * Create a PDF page
 *
 * @param string $newpage     name of the new PDF page
 * @param array  $cfgRelation Relation configuration
 * @param string $db          database name
 *
 * @return string   $pdf_page_number
 */
function PMA_REL_createPage($newpage, $cfgRelation, $db)
{
    $common_functions = PMA_CommonFunctions::getInstance();
    if (!isset($newpage) || $newpage == '') {
        $newpage = __('no description');
    }
    $ins_query = 'INSERT INTO ' . $common_functions->backquote($GLOBALS['cfgRelation']['db']) . '.' . $common_functions->backquote($cfgRelation['pdf_pages']) . ' (db_name, page_descr)' . ' VALUES (\'' . $common_functions->sqlAddSlashes($db) . '\', \'' . $common_functions->sqlAddSlashes($newpage) . '\')';
    PMA_queryAsControlUser($ins_query, false);
    return PMA_DBI_insert_id(isset($GLOBALS['controllink']) ? $GLOBALS['controllink'] : '');
}