diff --git a/libraries/classes/InsertEdit.php b/libraries/classes/InsertEdit.php index 2c53895410..5aaaeb7488 100644 --- a/libraries/classes/InsertEdit.php +++ b/libraries/classes/InsertEdit.php @@ -26,6 +26,23 @@ use PhpMyAdmin\Util; */ class InsertEdit { + /** + * DatabaseInterface instance + * + * @var DatabaseInterface + */ + private $dbi; + + /** + * Constructor + * + * @param DatabaseInterface $dbi DatabaseInterface instance + */ + public function __construct(DatabaseInterface $dbi) + { + $this->dbi = $dbi; + } + /** * Retrieve form parameters for insert/edit form * @@ -37,8 +54,12 @@ class InsertEdit * * @return array $form_params array of insert/edit form parameters */ - public static function getFormParametersForInsertForm($db, $table, $where_clauses, - array $where_clause_array, $err_url + public function getFormParametersForInsertForm( + $db, + $table, + $where_clauses, + array $where_clause_array, + $err_url ) { $_form_params = array( 'db' => $db, @@ -65,7 +86,7 @@ class InsertEdit * * @return array whereClauseArray array of where clauses */ - public static function getWhereClauseArray($where_clause) + private function getWhereClauseArray($where_clause) { if (!isset($where_clause)) { return array(); @@ -87,29 +108,34 @@ class InsertEdit * * @return array $where_clauses, $result, $rows */ - public static function analyzeWhereClauses( - array $where_clause_array, $table, $db + private function analyzeWhereClauses( + array $where_clause_array, + $table, + $db ) { $rows = array(); $result = array(); $where_clauses = array(); $found_unique_key = false; foreach ($where_clause_array as $key_id => $where_clause) { - $local_query = 'SELECT * FROM ' . Util::backquote($db) . '.' . Util::backquote($table) . ' WHERE ' . $where_clause . ';'; - $result[$key_id] = $GLOBALS['dbi']->query( + $result[$key_id] = $this->dbi->query( $local_query, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_STORE ); - $rows[$key_id] = $GLOBALS['dbi']->fetchAssoc($result[$key_id]); + $rows[$key_id] = $this->dbi->fetchAssoc($result[$key_id]); $where_clauses[$key_id] = str_replace('\\', '\\\\', $where_clause); - $has_unique_condition = self::showEmptyResultMessageOrSetUniqueCondition( - $rows, $key_id, $where_clause_array, $local_query, $result + $has_unique_condition = $this->showEmptyResultMessageOrSetUniqueCondition( + $rows, + $key_id, + $where_clause_array, + $local_query, + $result ); if ($has_unique_condition) { $found_unique_key = true; @@ -129,8 +155,12 @@ class InsertEdit * * @return boolean $has_unique_condition */ - public static function showEmptyResultMessageOrSetUniqueCondition(array $rows, $key_id, - array $where_clause_array, $local_query, array $result + private function showEmptyResultMessageOrSetUniqueCondition( + array $rows, + $key_id, + array $where_clause_array, + $local_query, + array $result ) { $has_unique_condition = false; @@ -148,7 +178,7 @@ class InsertEdit * exit if we want the message to be displayed */ } else {// end if (no row returned) - $meta = $GLOBALS['dbi']->getFieldsMeta($result[$key_id]); + $meta = $this->dbi->getFieldsMeta($result[$key_id]); list($unique_condition, $tmp_clause_is_unique) = Util::getUniqueCondition( @@ -177,9 +207,9 @@ class InsertEdit * * @return array containing $result and $rows arrays */ - public static function loadFirstRow($table, $db) + private function loadFirstRow($table, $db) { - $result = $GLOBALS['dbi']->query( + $result = $this->dbi->query( 'SELECT * FROM ' . Util::backquote($db) . '.' . Util::backquote($table) . ' LIMIT 1;', DatabaseInterface::CONNECT_USER, @@ -198,8 +228,11 @@ class InsertEdit * * @return array Add some url parameters to $url_params array and return it */ - public static function urlParamsInEditMode(array $url_params, array $where_clause_array, $where_clause) - { + public function urlParamsInEditMode( + array $url_params, + array $where_clause_array, + $where_clause + ) { if (isset($where_clause)) { foreach ($where_clause_array as $where_clause) { $url_params['where_clause'] = trim($where_clause); @@ -220,21 +253,21 @@ class InsertEdit * * @return string an HTML snippet */ - public static function showTypeOrFunction($which, array $url_params, $is_show) + public function showTypeOrFunction($which, array $url_params, $is_show) { $params = array(); - switch($which) { - case 'function': - $params['ShowFunctionFields'] = ($is_show ? 0 : 1); - $params['ShowFieldTypesInDataEditView'] + switch ($which) { + case 'function': + $params['ShowFunctionFields'] = ($is_show ? 0 : 1); + $params['ShowFieldTypesInDataEditView'] = $GLOBALS['cfg']['ShowFieldTypesInDataEditView']; - break; - case 'type': - $params['ShowFieldTypesInDataEditView'] = ($is_show ? 0 : 1); - $params['ShowFunctionFields'] + break; + case 'type': + $params['ShowFieldTypesInDataEditView'] = ($is_show ? 0 : 1); + $params['ShowFunctionFields'] = $GLOBALS['cfg']['ShowFunctionFields']; - break; + break; } $params['goto'] = 'sql.php'; @@ -243,13 +276,13 @@ class InsertEdit if (! $is_show) { return ' : ' - . self::showTypeOrFunctionLabel($which) + . $this->showTypeOrFunctionLabel($which) . ''; } return '' - . self::showTypeOrFunctionLabel($which) + . $this->showTypeOrFunctionLabel($which) . ''; } @@ -260,13 +293,13 @@ class InsertEdit * * @return string an HTML snippet */ - public static function showTypeOrFunctionLabel($which) + private function showTypeOrFunctionLabel($which) { - switch($which) { - case 'function': - return __('Function'); - case 'type': - return __('Type'); + switch ($which) { + case 'function': + return __('Function'); + case 'type': + return __('Type'); } return null; @@ -281,29 +314,32 @@ class InsertEdit * * @return array description of column in given table */ - public static function analyzeTableColumnsArray(array $column, array $comments_map, $timestamp_seen) - { + private function analyzeTableColumnsArray( + array $column, + array $comments_map, + $timestamp_seen + ) { $column['Field_html'] = htmlspecialchars($column['Field']); $column['Field_md5'] = md5($column['Field']); // True_Type contains only the type (stops at first bracket) $column['True_Type'] = preg_replace('@\(.*@s', '', $column['Type']); $column['len'] = preg_match('@float|double@', $column['Type']) ? 100 : -1; - $column['Field_title'] = self::getColumnTitle($column, $comments_map); - $column['is_binary'] = self::isColumn( + $column['Field_title'] = $this->getColumnTitle($column, $comments_map); + $column['is_binary'] = $this->isColumn( $column, array('binary', 'varbinary') ); - $column['is_blob'] = self::isColumn( + $column['is_blob'] = $this->isColumn( $column, array('blob', 'tinyblob', 'mediumblob', 'longblob') ); - $column['is_char'] = self::isColumn( + $column['is_char'] = $this->isColumn( $column, array('char', 'varchar') ); list($column['pma_type'], $column['wrap'], $column['first_timestamp']) - = self::getEnumSetAndTimestampColumns($column, $timestamp_seen); + = $this->getEnumSetAndTimestampColumns($column, $timestamp_seen); return $column; } @@ -316,7 +352,7 @@ class InsertEdit * * @return string column title */ - public static function getColumnTitle(array $column, array $comments_map) + private function getColumnTitle(array $column, array $comments_map) { if (isset($comments_map[$column['Field']])) { return ''; // nullify_code is needed by the js nullify() function - $nullify_code = self::getNullifyCodeForNullColumn( - $column, $foreigners, $foreignData + $nullify_code = $this->getNullifyCodeForNullColumn( + $column, + $foreigners, + $foreignData ); // to be able to generate calls to nullify() in jQuery $html_output .= ' 32000) { @@ -622,40 +724,71 @@ class InsertEdit 'Because of its length,
this column might not be editable.' ); } - } elseif ($column['pma_type'] == 'enum') { - $html_output .= self::getPmaTypeEnum( - $column, $backup_field, $column_name_appendix, $extracted_columnspec, - $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, + $html_output .= $this->getPmaTypeEnum( + $column, + $backup_field, + $column_name_appendix, + $extracted_columnspec, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, $readOnly ); - } elseif ($column['pma_type'] == 'set') { - $html_output .= self::getPmaTypeSet( - $column, $extracted_columnspec, $backup_field, - $column_name_appendix, $onChangeClause, $tabindex, - $tabindex_for_value, $idindex, $data, $readOnly + $html_output .= $this->getPmaTypeSet( + $column, + $extracted_columnspec, + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + $readOnly ); - } elseif ($column['is_binary'] || $column['is_blob']) { - $html_output .= self::getBinaryAndBlobColumn( - $column, $data, $special_chars, $biggest_max_file_size, - $backup_field, $column_name_appendix, $onChangeClause, $tabindex, - $tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, - $vkey, $is_upload, $readOnly + $html_output .= $this->getBinaryAndBlobColumn( + $column, + $data, + $special_chars, + $biggest_max_file_size, + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $text_dir, + $special_chars_encoded, + $vkey, + $is_upload, + $readOnly ); - } elseif (! in_array($column['pma_type'], $no_support_types)) { - $html_output .= self::getValueColumnForOtherDatatypes( - $column, $default_char_editing, $backup_field, - $column_name_appendix, $onChangeClause, $tabindex, $special_chars, - $tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, - $data, $extracted_columnspec, $readOnly + $html_output .= $this->getValueColumnForOtherDatatypes( + $column, + $default_char_editing, + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $special_chars, + $tabindex_for_value, + $idindex, + $text_dir, + $special_chars_encoded, + $data, + $extracted_columnspec, + $readOnly ); } if (in_array($column['pma_type'], $gis_data_types)) { - $html_output .= self::getHtmlForGisDataTypes(); + $html_output .= $this->getHtmlForGisDataTypes(); } return $html_output; @@ -681,9 +814,19 @@ class InsertEdit * * @return string an html snippet */ - public static function getForeignLink(array $column, $backup_field, $column_name_appendix, - $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, - array $paramTableDbArray, $rownumber, array $titles, $readOnly + private function getForeignLink( + array $column, + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + array $paramTableDbArray, + $rownumber, + array $titles, + $readOnly ) { list($table, $db) = $paramTableDbArray; $html_output = ''; @@ -729,9 +872,16 @@ class InsertEdit * * @return string an html snippet */ - public static function dispRowForeignData($backup_field, $column_name_appendix, - $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, - array $foreignData, $readOnly + private function dispRowForeignData( + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + array $foreignData, + $readOnly ) { $html_output = ''; $html_output .= $backup_field . "\n"; @@ -746,8 +896,10 @@ class InsertEdit . ' tabindex="' . ($tabindex + $tabindex_for_value) . '"' . ' id="field_' . $idindex . '_3">'; $html_output .= Relation::foreignDropdown( - $foreignData['disp_row'], $foreignData['foreign_field'], - $foreignData['foreign_display'], $data, + $foreignData['disp_row'], + $foreignData['foreign_field'], + $foreignData['foreign_display'], + $data, $GLOBALS['cfg']['ForeignKeyMaxLimit'] ); $html_output .= ''; @@ -779,9 +931,18 @@ class InsertEdit * * @return string an html snippet */ - public static function getTextarea(array $column, $backup_field, $column_name_appendix, - $onChangeClause, $tabindex, $tabindex_for_value, $idindex, - $text_dir, $special_chars_encoded, $data_type, $readOnly + private function getTextarea( + array $column, + $backup_field, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $text_dir, + $special_chars_encoded, + $data_type, + $readOnly ) { $the_class = ''; $textAreaRows = $GLOBALS['cfg']['TextareaRows']; @@ -841,14 +1002,23 @@ class InsertEdit * * @return string an html snippet */ - public static function getPmaTypeEnum(array $column, $backup_field, $column_name_appendix, - array $extracted_columnspec, $onChangeClause, $tabindex, $tabindex_for_value, - $idindex, $data, $readOnly + private function getPmaTypeEnum( + array $column, + $backup_field, + $column_name_appendix, + array $extracted_columnspec, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + $readOnly ) { $html_output = ''; if (! isset($column['values'])) { - $column['values'] = self::getColumnEnumValues( - $column, $extracted_columnspec + $column['values'] = $this->getColumnEnumValues( + $column, + $extracted_columnspec ); } $column_enum_values = $column['values']; @@ -856,16 +1026,28 @@ class InsertEdit . $column_name_appendix . '" value="enum" />'; $html_output .= "\n" . ' ' . $backup_field . "\n"; if (mb_strlen($column['Type']) > 20) { - $html_output .= self::getDropDownDependingOnLength( - $column, $column_name_appendix, $onChangeClause, - $tabindex, $tabindex_for_value, - $idindex, $data, $column_enum_values, $readOnly + $html_output .= $this->getDropDownDependingOnLength( + $column, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + $column_enum_values, + $readOnly ); } else { - $html_output .= self::getRadioButtonDependingOnLength( - $column_name_appendix, $onChangeClause, - $tabindex, $column, $tabindex_for_value, - $idindex, $data, $column_enum_values, $readOnly + $html_output .= $this->getRadioButtonDependingOnLength( + $column_name_appendix, + $onChangeClause, + $tabindex, + $column, + $tabindex_for_value, + $idindex, + $data, + $column_enum_values, + $readOnly ); } return $html_output; @@ -881,7 +1063,7 @@ class InsertEdit * * @return array column values as an associative array */ - public static function getColumnEnumValues(array $column, array $extracted_columnspec) + private function getColumnEnumValues(array $column, array $extracted_columnspec) { $column['values'] = array(); foreach ($extracted_columnspec['enum_set_values'] as $val) { @@ -908,9 +1090,15 @@ class InsertEdit * * @return string an html snippet */ - public static function getDropDownDependingOnLength( - array $column, $column_name_appendix, $onChangeClause, - $tabindex, $tabindex_for_value, $idindex, $data, array $column_enum_values, + private function getDropDownDependingOnLength( + array $column, + $column_name_appendix, + $onChangeClause, + $tabindex, + $tabindex_for_value, + $idindex, + $data, + array $column_enum_values, $readOnly ) { $html_output = ''; if (isset($where_clause)) { @@ -1545,7 +1823,7 @@ class InsertEdit * * @return string an html snippet */ - public static function getAfterInsertDropDown($where_clause, $after_insert, $found_unique_key) + private function getAfterInsertDropDown($where_clause, $after_insert, $found_unique_key) { $html_output = ''; return $html_output; - } /** @@ -1598,7 +1874,7 @@ class InsertEdit * * @return string an html snippet */ - public static function getSubmitAndResetButtonForActionsPanel($tabindex, $tabindex_for_value) + private function getSubmitAndResetButtonForActionsPanel($tabindex, $tabindex_for_value) { return '' . Util::showHint( @@ -1625,7 +1901,7 @@ class InsertEdit * * @return string an html snippet */ - public static function getHeadAndFootOfInsertRowTable(array $url_params) + private function getHeadAndFootOfInsertRowTable(array $url_params) { $html_output = '
' . '' @@ -1634,10 +1910,10 @@ class InsertEdit . ''; if ($GLOBALS['cfg']['ShowFieldTypesInDataEditView']) { - $html_output .= self::showTypeOrFunction('type', $url_params, true); + $html_output .= $this->showTypeOrFunction('type', $url_params, true); } if ($GLOBALS['cfg']['ShowFunctionFields']) { - $html_output .= self::showTypeOrFunction('function', $url_params, true); + $html_output .= $this->showTypeOrFunction('function', $url_params, true); } $html_output .= '' @@ -1670,9 +1946,14 @@ class InsertEdit * @return array $real_null_value, $data, $special_chars, $backup_field, * $special_chars_encoded */ - public static function getSpecialCharsAndBackupFieldForExistingRow( - array $current_row, array $column, array $extracted_columnspec, - $real_null_value, array $gis_data_types, $column_name_appendix, $as_is + private function getSpecialCharsAndBackupFieldForExistingRow( + array $current_row, + array $column, + array $extracted_columnspec, + $real_null_value, + array $gis_data_types, + $column_name_appendix, + $as_is ) { $special_chars_encoded = ''; $data = null; @@ -1705,7 +1986,8 @@ class InsertEdit $current_row[$column['Field']] = $as_is ? $current_row[$column['Field']] : Util::asWKT( - $current_row[$column['Field']], true + $current_row[$column['Field']], + true ); $special_chars = htmlspecialchars($current_row[$column['Field']]); } else { @@ -1766,8 +2048,9 @@ class InsertEdit * @return array $real_null_value, $data, $special_chars, * $backup_field, $special_chars_encoded */ - public static function getSpecialCharsAndBackupFieldForInsertingMode( - array $column, $real_null_value + private function getSpecialCharsAndBackupFieldForInsertingMode( + array $column, + $real_null_value ) { if (! isset($column['Default'])) { $column['Default'] = ''; @@ -1808,7 +2091,7 @@ class InsertEdit * * @return array $loop_array, $using_key, $is_insert, $is_insertignore */ - public static function getParamsForUpdateOrInsert() + public function getParamsForUpdateOrInsert() { if (isset($_REQUEST['where_clause'])) { // we were editing something => use the WHERE clause @@ -1842,7 +2125,7 @@ class InsertEdit * * @return void */ - public static function isInsertRow() + public function isInsertRow() { if (isset($_REQUEST['insert_rows']) && is_numeric($_REQUEST['insert_rows']) @@ -1868,15 +2151,15 @@ class InsertEdit * * @return void */ - public static function setSessionForEditNext($one_where_clause) + public function setSessionForEditNext($one_where_clause) { $local_query = 'SELECT * FROM ' . Util::backquote($GLOBALS['db']) . '.' . Util::backquote($GLOBALS['table']) . ' WHERE ' . str_replace('` =', '` >', $one_where_clause) . ' LIMIT 1;'; - $res = $GLOBALS['dbi']->query($local_query); - $row = $GLOBALS['dbi']->fetchRow($res); - $meta = $GLOBALS['dbi']->getFieldsMeta($res); + $res = $this->dbi->query($local_query); + $row = $this->dbi->fetchRow($res); + $meta = $this->dbi->getFieldsMeta($res); // must find a unique condition based on unique key, // not a combination of all fields list($unique_condition, $clause_is_unique) @@ -1905,7 +2188,7 @@ class InsertEdit * * @return string $goto_include */ - public static function getGotoInclude($goto_include) + public function getGotoInclude($goto_include) { $valid_options = array('new_insert', 'same_insert', 'edit_next'); if (isset($_REQUEST['after_insert']) @@ -1941,7 +2224,7 @@ class InsertEdit * * @return string error url for query failure */ - public static function getErrorUrl(array $url_params) + public function getErrorUrl(array $url_params) { if (isset($_REQUEST['err_url'])) { return $_REQUEST['err_url']; @@ -1959,7 +2242,7 @@ class InsertEdit * * @return array of query */ - public static function buildSqlQuery($is_insertignore, array $query_fields, array $value_sets) + public function buildSqlQuery($is_insertignore, array $query_fields, array $value_sets) { if ($is_insertignore) { $insert_command = 'INSERT IGNORE '; @@ -1980,12 +2263,12 @@ class InsertEdit * Executes the sql query and get the result, then move back to the calling page * * @param array $url_params url parameters array - * @param array $query built query from self::buildSqlQuery() + * @param array $query built query from buildSqlQuery() * * @return array $url_params, $total_affected_rows, $last_messages * $warning_messages, $error_messages, $return_to_sql_query */ - public static function executeSqlQuery(array $url_params, array $query) + public function executeSqlQuery(array $url_params, array $query) { $return_to_sql_query = ''; if (! empty($GLOBALS['sql_query'])) { @@ -2008,20 +2291,20 @@ class InsertEdit continue; } if ($GLOBALS['cfg']['IgnoreMultiSubmitErrors']) { - $result = $GLOBALS['dbi']->tryQuery($single_query); + $result = $this->dbi->tryQuery($single_query); } else { - $result = $GLOBALS['dbi']->query($single_query); + $result = $this->dbi->query($single_query); } if (! $result) { - $error_messages[] = $GLOBALS['dbi']->getError(); + $error_messages[] = $this->dbi->getError(); } else { // The next line contains a real assignment, it's not a typo - if ($tmp = @$GLOBALS['dbi']->affectedRows()) { + if ($tmp = @$this->dbi->affectedRows()) { $total_affected_rows += $tmp; } unset($tmp); - $insert_id = $GLOBALS['dbi']->insertId(); + $insert_id = $this->dbi->insertId(); 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 @@ -2033,9 +2316,9 @@ class InsertEdit $last_message->addParam($insert_id); $last_messages[] = $last_message; } - $GLOBALS['dbi']->freeResult($result); + $this->dbi->freeResult($result); } - $warning_messages = self::getWarningMessages(); + $warning_messages = $this->getWarningMessages(); } return array( $url_params, @@ -2052,10 +2335,10 @@ class InsertEdit * * @return array $warning_essages */ - public static function getWarningMessages() + private function getWarningMessages() { $warning_essages = array(); - foreach ($GLOBALS['dbi']->getWarnings() as $warning) { + foreach ($this->dbi->getWarnings() as $warning) { $warning_essages[] = Message::sanitize( $warning['Level'] . ': #' . $warning['Code'] . ' ' . $warning['Message'] ); @@ -2073,8 +2356,10 @@ class InsertEdit * * @return string $dispval display value from the foreign table */ - public static function getDisplayValueForForeignTableColumn($where_comparison, - array $map, $relation_field + public function getDisplayValueForForeignTableColumn( + $where_comparison, + array $map, + $relation_field ) { $foreigner = Relation::searchColumnInForeigners($map, $relation_field); $display_field = Relation::getDisplayField( @@ -2088,18 +2373,18 @@ class InsertEdit . '.' . Util::backquote($foreigner['foreign_table']) . ' WHERE ' . Util::backquote($foreigner['foreign_field']) . $where_comparison; - $dispresult = $GLOBALS['dbi']->tryQuery( + $dispresult = $this->dbi->tryQuery( $dispsql, DatabaseInterface::CONNECT_USER, DatabaseInterface::QUERY_STORE ); - if ($dispresult && $GLOBALS['dbi']->numRows($dispresult) > 0) { - list($dispval) = $GLOBALS['dbi']->fetchRow($dispresult, 0); + if ($dispresult && $this->dbi->numRows($dispresult) > 0) { + list($dispval) = $this->dbi->fetchRow($dispresult, 0); } else { $dispval = ''; } if ($dispresult) { - $GLOBALS['dbi']->freeResult($dispresult); + $this->dbi->freeResult($dispresult); } return $dispval; } @@ -2118,8 +2403,12 @@ class InsertEdit * * @return string $output HTML tag */ - public static function getLinkForRelationalDisplayField(array $map, $relation_field, - $where_comparison, $dispval, $relation_field_value + public function getLinkForRelationalDisplayField( + array $map, + $relation_field, + $where_comparison, + $dispval, + $relation_field_value ) { $foreigner = Relation::searchColumnInForeigners($map, $relation_field); if ('K' == $_SESSION['tmpval']['relational_display']) { @@ -2171,8 +2460,15 @@ class InsertEdit * * @return array $extra_data */ - public static function transformEditedValues($db, $table, - array $transformation, array &$edited_values, $file, $column_name, array $extra_data, $type + public function transformEditedValues( + $db, + $table, + array $transformation, + array &$edited_values, + $file, + $column_name, + array $extra_data, + $type ) { $include_file = 'libraries/classes/Plugins/Transformations/' . $file; if (is_file($include_file)) { @@ -2222,16 +2518,21 @@ class InsertEdit * * @return array $cur_value */ - public static function getCurrentValueAsAnArrayForMultipleEdit($multi_edit_funcs, + public function getCurrentValueAsAnArrayForMultipleEdit( + $multi_edit_funcs, $multi_edit_salt, - $gis_from_text_functions, $current_value, $gis_from_wkb_functions, - $func_optional_param, $func_no_param, $key + $gis_from_text_functions, + $current_value, + $gis_from_wkb_functions, + $func_optional_param, + $func_no_param, + $key ) { if (empty($multi_edit_funcs[$key])) { return $current_value; } elseif ('UUID' === $multi_edit_funcs[$key]) { /* This way user will know what UUID new row has */ - $uuid = $GLOBALS['dbi']->fetchValue('SELECT UUID()'); + $uuid = $this->dbi->fetchValue('SELECT UUID()'); return "'" . $uuid . "'"; } elseif ((in_array($multi_edit_funcs[$key], $gis_from_text_functions) && substr($current_value, 0, 3) == "'''") @@ -2255,7 +2556,7 @@ class InsertEdit || $multi_edit_funcs[$key] == "ENCRYPT")) ) { return $multi_edit_funcs[$key] . '(' . $current_value . ",'" - . $GLOBALS['dbi']->escapeString($multi_edit_salt[$key]) . "')"; + . $this->dbi->escapeString($multi_edit_salt[$key]) . "')"; } return $multi_edit_funcs[$key] . '(' . $current_value . ')'; @@ -2284,10 +2585,19 @@ class InsertEdit * * @return array ($query_values, $query_fields) */ - public static function getQueryValuesForInsertAndUpdateInMultipleEdit($multi_edit_columns_name, - $multi_edit_columns_null, $current_value, $multi_edit_columns_prev, - $multi_edit_funcs, $is_insert, $query_values, $query_fields, - $current_value_as_an_array, $value_sets, $key, $multi_edit_columns_null_prev + public function getQueryValuesForInsertAndUpdateInMultipleEdit( + $multi_edit_columns_name, + $multi_edit_columns_null, + $current_value, + $multi_edit_columns_prev, + $multi_edit_funcs, + $is_insert, + $query_values, + $query_fields, + $current_value_as_an_array, + $value_sets, + $key, + $multi_edit_columns_null_prev ) { // i n s e r t if ($is_insert) { @@ -2301,7 +2611,6 @@ class InsertEdit ); } } - } elseif (! empty($multi_edit_columns_null_prev[$key]) && ! isset($multi_edit_columns_null[$key]) ) { @@ -2314,7 +2623,7 @@ class InsertEdit . ' = ' . $current_value_as_an_array; } elseif (empty($multi_edit_funcs[$key]) && isset($multi_edit_columns_prev[$key]) - && (("'" . $GLOBALS['dbi']->escapeString($multi_edit_columns_prev[$key]) . "'" === $current_value) + && (("'" . $this->dbi->escapeString($multi_edit_columns_prev[$key]) . "'" === $current_value) || ('0x' . $multi_edit_columns_prev[$key] === $current_value)) ) { // No change for this column and no MySQL function is used -> next column @@ -2353,10 +2662,20 @@ class InsertEdit * * @return string $current_value current column value in the form */ - public static function getCurrentValueForDifferentTypes($possibly_uploaded_val, $key, - $multi_edit_columns_type, $current_value, $multi_edit_auto_increment, - $rownumber, $multi_edit_columns_name, $multi_edit_columns_null, - $multi_edit_columns_null_prev, $is_insert, $using_key, $where_clause, $table, + public function getCurrentValueForDifferentTypes( + $possibly_uploaded_val, + $key, + $multi_edit_columns_type, + $current_value, + $multi_edit_auto_increment, + $rownumber, + $multi_edit_columns_name, + $multi_edit_columns_null, + $multi_edit_columns_null_prev, + $is_insert, + $using_key, + $where_clause, + $table, $multi_edit_funcs ) { // Fetch the current values of a row to use in case we have a protected field @@ -2364,7 +2683,7 @@ class InsertEdit && $using_key && isset($multi_edit_columns_type) && is_array($multi_edit_columns_type) && !empty($where_clause) ) { - $protected_row = $GLOBALS['dbi']->fetchSingleRow( + $protected_row = $this->dbi->fetchSingleRow( 'SELECT * FROM ' . Util::backquote($table) . ' WHERE ' . $where_clause . ';' ); @@ -2373,7 +2692,7 @@ class InsertEdit if (false !== $possibly_uploaded_val) { $current_value = $possibly_uploaded_val; } elseif (! empty($multi_edit_funcs[$key])) { - $current_value = "'" . $GLOBALS['dbi']->escapeString($current_value) + $current_value = "'" . $this->dbi->escapeString($current_value) . "'"; } else { // c o l u m n v a l u e i n t h e f o r m @@ -2396,10 +2715,11 @@ class InsertEdit } elseif ($type == 'set') { if (! empty($_REQUEST['fields']['multi_edit'][$rownumber][$key])) { $current_value = implode( - ',', $_REQUEST['fields']['multi_edit'][$rownumber][$key] + ',', + $_REQUEST['fields']['multi_edit'][$rownumber][$key] ); $current_value = "'" - . $GLOBALS['dbi']->escapeString($current_value) . "'"; + . $this->dbi->escapeString($current_value) . "'"; } else { $current_value = "''"; } @@ -2424,12 +2744,12 @@ class InsertEdit } } elseif ($type == 'bit') { $current_value = preg_replace('/[^01]/', '0', $current_value); - $current_value = "b'" . $GLOBALS['dbi']->escapeString($current_value) + $current_value = "b'" . $this->dbi->escapeString($current_value) . "'"; } elseif (! ($type == 'datetime' || $type == 'timestamp') || $current_value != 'CURRENT_TIMESTAMP' ) { - $current_value = "'" . $GLOBALS['dbi']->escapeString($current_value) + $current_value = "'" . $this->dbi->escapeString($current_value) . "'"; } @@ -2464,8 +2784,11 @@ class InsertEdit * * @return void */ - public static function verifyWhetherValueCanBeTruncatedAndAppendExtraData( - $db, $table, $column_name, array &$extra_data + public function verifyWhetherValueCanBeTruncatedAndAppendExtraData( + $db, + $table, + $column_name, + array &$extra_data ) { $extra_data['isNeedToRecheck'] = false; @@ -2475,10 +2798,10 @@ class InsertEdit . Util::backquote($table) . ' WHERE ' . $_REQUEST['where_clause'][0]; - $result = $GLOBALS['dbi']->tryQuery($sql_for_real_value); - $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); + $result = $this->dbi->tryQuery($sql_for_real_value); + $fields_meta = $this->dbi->getFieldsMeta($result); $meta = $fields_meta[0]; - if ($row = $GLOBALS['dbi']->fetchRow($result)) { + if ($row = $this->dbi->fetchRow($result)) { $new_value = $row[0]; if ((substr($meta->type, 0, 9) == 'timestamp') || ($meta->type == 'datetime') @@ -2491,7 +2814,7 @@ class InsertEdit $extra_data['isNeedToRecheck'] = true; $extra_data['truncatableFieldValue'] = $new_value; } - $GLOBALS['dbi']->freeResult($result); + $this->dbi->freeResult($result); } /** @@ -2502,10 +2825,10 @@ class InsertEdit * * @return array */ - public static function getTableColumns($db, $table) + public function getTableColumns($db, $table) { - $GLOBALS['dbi']->selectDb($db); - return array_values($GLOBALS['dbi']->getColumns($db, $table, null, true)); + $this->dbi->selectDb($db); + return array_values($this->dbi->getColumns($db, $table, null, true)); } /** @@ -2517,7 +2840,7 @@ class InsertEdit * * @return mixed */ - public static function determineInsertOrEdit($where_clause, $db, $table) + public function determineInsertOrEdit($where_clause, $db, $table) { if (isset($_REQUEST['where_clause'])) { $where_clause = $_REQUEST['where_clause']; @@ -2541,16 +2864,18 @@ class InsertEdit if (isset($where_clause)) { // we are editing $insert_mode = false; - $where_clause_array = self::getWhereClauseArray($where_clause); + $where_clause_array = $this->getWhereClauseArray($where_clause); list($where_clauses, $result, $rows, $found_unique_key) - = self::analyzeWhereClauses( - $where_clause_array, $table, $db + = $this->analyzeWhereClauses( + $where_clause_array, + $table, + $db ); } else { // we are inserting $insert_mode = true; $where_clause = null; - list($result, $rows) = self::loadFirstRow($table, $db); + list($result, $rows) = $this->loadFirstRow($table, $db); $where_clauses = null; $where_clause_array = array(); $found_unique_key = false; @@ -2579,7 +2904,7 @@ class InsertEdit * * @return array $comments_map comments for columns */ - public static function getCommentsMap($db, $table) + public function getCommentsMap($db, $table) { $comments_map = array(); @@ -2598,7 +2923,7 @@ class InsertEdit * * @return array $url_params url parameters */ - public static function getUrlParameters($db, $table) + public function getUrlParameters($db, $table) { /** * @todo check if we could replace by "db_|tbl_" - please clarify!? @@ -2620,7 +2945,7 @@ class InsertEdit * * @return string */ - public static function getHtmlForGisEditor() + public function getHtmlForGisEditor() { return '
' . '' @@ -2635,7 +2960,7 @@ class InsertEdit * * @return string */ - public static function getHtmlForIgnoreOption($row_id, $checked = true) + public function getHtmlForIgnoreOption($row_id, $checked = true) { return '' . '
'; - } /** @@ -2673,7 +2997,7 @@ class InsertEdit * * @return string */ - public static function getHtmlForInsertEditColumnType(array $column) + private function getHtmlForInsertEditColumnType(array $column) { return '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, false, '', '', array(), 0, 0, 0, false, false, array() - ) + ]) ); $GLOBALS['cfg']['ProtectBinary'] = 'all'; $column['is_binary'] = true; $this->assertContains( '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, true, '', '', array(), 0, 0, 0, false, false, array() - ) + ]) ); $GLOBALS['cfg']['ProtectBinary'] = 'noblob'; $column['is_blob'] = false; $this->assertContains( '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, true, '', '', array(), 0, 0, 0, false, false, array() - ) + ]) ); $GLOBALS['cfg']['ProtectBinary'] = false; $column['True_Type'] = 'enum'; $this->assertContains( '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, true, '', '', array(), 0, 0, 0, false, false, array() - ) + ]) ); $column['True_Type'] = 'set'; $this->assertContains( '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, true, '', '', array(), 0, 0, 0, false, false, array() - ) + ]) ); $column['True_Type'] = ''; $column['pma_type'] = 'int'; $this->assertContains( '', - InsertEdit::getFunctionColumn( + $this->callProtectedMethod('getFunctionColumn', [ $column, true, '', '', array('int'), 0, 0, 0, false, false, array() - ) + ]) ); $column['Field'] = 'num'; $this->assertContains( '
' . __('Column') . '' . __('Null') . '' . '' . '' . $column['pma_type'] . '' @@ -2688,7 +3012,7 @@ class InsertEdit * * @return string */ - public static function getHtmlForInsertEditFormHeader($has_blob_field, $is_upload) + public function getHtmlForInsertEditFormHeader($has_blob_field, $is_upload) { $html_output ='
getDisplayValueForForeignTableColumn( $where_comparison, $map, $relation_field ); $extra_data['relations'][$cell_index] - = InsertEdit::getLinkForRelationalDisplayField( + = $insertEdit->getLinkForRelationalDisplayField( $map, $relation_field, $where_comparison, $dispval, $relation_field_value ); @@ -418,7 +423,7 @@ if ($response->isAjax() && ! isset($_POST['ajax_page_request'])) { $column_name = $transformation['column_name']; foreach ($transformation_types as $type) { $file = Core::securePath($transformation[$type]); - $extra_data = InsertEdit::transformEditedValues( + $extra_data = $insertEdit->transformEditedValues( $db, $table, $transformation, $edited_values, $file, $column_name, $extra_data, $type ); @@ -430,7 +435,7 @@ if ($response->isAjax() && ! isset($_POST['ajax_page_request'])) { // without informing while saving $column_name = $_REQUEST['fields_name']['multi_edit'][0][0]; - InsertEdit::verifyWhetherValueCanBeTruncatedAndAppendExtraData( + $insertEdit->verifyWhetherValueCanBeTruncatedAndAppendExtraData( $db, $table, $column_name, $extra_data ); @@ -438,8 +443,10 @@ if ($response->isAjax() && ! isset($_POST['ajax_page_request'])) { $_table = new Table($_REQUEST['table'], $_REQUEST['db']); $extra_data['row_count'] = $_table->countRecords(); - $extra_data['sql_query'] - = PhpMyAdmin\Util::getMessage($message, $GLOBALS['display_query']); + $extra_data['sql_query'] = Util::getMessage( + $message, + $GLOBALS['display_query'] + ); $response->setRequestStatus($message->isSuccess()); $response->addJSON('message', $message); diff --git a/test/classes/InsertEditTest.php b/test/classes/InsertEditTest.php index 23b3dc5a4d..1a5228aef1 100644 --- a/test/classes/InsertEditTest.php +++ b/test/classes/InsertEditTest.php @@ -13,6 +13,7 @@ use PhpMyAdmin\InsertEdit; use PhpMyAdmin\Response; use PhpMyAdmin\Table; use PHPUnit\Framework\TestCase; +use ReflectionClass; use ReflectionProperty; use stdClass; @@ -24,6 +25,8 @@ use stdClass; */ class InsertEditTest extends TestCase { + private $insertEdit; + /** * Setup for test cases * @@ -58,10 +61,35 @@ class InsertEditTest extends TestCase $GLOBALS['cfg']['Confirm'] = true; $GLOBALS['cfg']['LoginCookieValidity'] = 1440; $GLOBALS['PMA_Config'] = new Config(); + + $this->insertEdit = new InsertEdit($GLOBALS['dbi']); } /** - * Test for InsertEdit::getFormParametersForInsertForm + * Call protected functions by setting visibility to public. + * + * @param string $name method name + * @param array $params parameters for the invocation + * @param InsertEdit $object InsertEdit instance object + * + * @return mixed the output from the protected method. + */ + private function callProtectedMethod( + $name, + array $params = [], + InsertEdit $object = null + ) { + $class = new ReflectionClass(InsertEdit::class); + $method = $class->getMethod($name); + $method->setAccessible(true); + return $method->invokeArgs( + $object !== null ? $object : $this->insertEdit, + $params + ); + } + + /** + * Test for getFormParametersForInsertForm * * @return void */ @@ -72,7 +100,7 @@ class InsertEditTest extends TestCase $_POST['sql_query'] = 'SELECT a'; $GLOBALS['goto'] = 'index.php'; - $result = InsertEdit::getFormParametersForInsertForm( + $result = $this->insertEdit->getFormParametersForInsertForm( 'dbname', 'tablename', array(), $where_clause, 'localhost' ); @@ -92,7 +120,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::getWhereClauseArray + * Test for getWhereClauseArray * * @return void */ @@ -100,22 +128,22 @@ class InsertEditTest extends TestCase { $this->assertEquals( array(), - InsertEdit::getWhereClauseArray(null) + $this->callProtectedMethod('getWhereClauseArray', [null]) ); $this->assertEquals( array(1, 2, 3), - InsertEdit::getWhereClauseArray(array(1, 2, 3)) + $this->callProtectedMethod('getWhereClauseArray', [[1, 2, 3]]) ); $this->assertEquals( array('clause'), - InsertEdit::getWhereClauseArray('clause') + $this->callProtectedMethod('getWhereClauseArray', ['clause']) ); } /** - * Test for InsertEdit::analyzeWhereClauses + * Test for analyzeWhereClauses * * @return void */ @@ -149,7 +177,12 @@ class InsertEditTest extends TestCase ); $GLOBALS['dbi'] = $dbi; - $result = InsertEdit::analyzeWhereClauses($clauses, 'table', 'db'); + $this->insertEdit = new InsertEdit($GLOBALS['dbi']); + $result = $this->callProtectedMethod('analyzeWhereClauses', [ + $clauses, + 'table', + 'db' + ]); $this->assertEquals( array( @@ -166,7 +199,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::showEmptyResultMessageOrSetUniqueCondition + * Test for showEmptyResultMessageOrSetUniqueCondition * * @return void */ @@ -189,11 +222,12 @@ class InsertEditTest extends TestCase ->will($this->returnValue($meta_arr)); $GLOBALS['dbi'] = $dbi; + $this->insertEdit = new InsertEdit($GLOBALS['dbi']); - $result = InsertEdit::showEmptyResultMessageOrSetUniqueCondition( + $result = $this->callProtectedMethod('showEmptyResultMessageOrSetUniqueCondition', [ array('1' => array('1' => 1)), 1, array(), 'SELECT', array('1' => 'result1') - ); + ]); $this->assertTrue($result); @@ -210,9 +244,9 @@ class InsertEditTest extends TestCase $response->setAccessible(true); $response->setValue($responseMock); - $result = InsertEdit::showEmptyResultMessageOrSetUniqueCondition( + $result = $this->callProtectedMethod('showEmptyResultMessageOrSetUniqueCondition', [ array(false), 0, array('1'), 'SELECT', array('1' => 'result1') - ); + ]); $response->setValue($restoreInstance); @@ -220,7 +254,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::loadFirstRow + * Test for loadFirstRow * * @return void */ @@ -242,8 +276,9 @@ class InsertEditTest extends TestCase ->will($this->returnValue('result1')); $GLOBALS['dbi'] = $dbi; + $this->insertEdit = new InsertEdit($GLOBALS['dbi']); - $result = InsertEdit::loadFirstRow('table', 'db'); + $result = $this->callProtectedMethod('loadFirstRow', ['table', 'db']); $this->assertEquals( array('result1', array(false, false)), @@ -252,7 +287,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::urlParamsInEditMode + * Test for urlParamsInEditMode * * @return void */ @@ -261,7 +296,7 @@ class InsertEditTest extends TestCase $where_clause_array = array('foo=1', 'bar=2'); $_POST['sql_query'] = 'SELECT 1'; - $result = InsertEdit::urlParamsInEditMode(array(1), $where_clause_array, ''); + $result = $this->insertEdit->urlParamsInEditMode(array(1), $where_clause_array, ''); $this->assertEquals( array( @@ -274,7 +309,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::showTypeOrFunction + * Test for showTypeOrFunction * * @return void */ @@ -284,7 +319,7 @@ class InsertEditTest extends TestCase $GLOBALS['cfg']['ServerDefault'] = 1; $url_params = array('ShowFunctionFields' => 2); - $result = InsertEdit::showTypeOrFunction('function', $url_params, false); + $result = $this->insertEdit->showTypeOrFunction('function', $url_params, false); $this->assertEquals( ' : insertEdit->showTypeOrFunction('type', $url_params, false); $this->assertEquals( ' : 'float(10, 1)' ); - $result = InsertEdit::analyzeTableColumnsArray( + $result = $this->callProtectedMethod('analyzeTableColumnsArray', [ $column, array(), false - ); + ]); $this->assertEquals( $result['Field_html'], @@ -398,7 +433,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::getColumnTitle + * Test for getColumnTitle * * @return void */ @@ -409,14 +444,18 @@ class InsertEditTest extends TestCase $column['Field_html'] = 'f1<'; $this->assertEquals( - InsertEdit::getColumnTitle($column, array()), + $this->callProtectedMethod('getColumnTitle', [ + $column, array() + ]), 'f1<' ); $comments = array(); $comments['f1<'] = 'comment>'; - $result = InsertEdit::getColumnTitle($column, $comments); + $result = $this->callProtectedMethod('getColumnTitle', [ + $column, $comments + ]); $this->assertContains( 'title="comment>"', @@ -430,7 +469,7 @@ class InsertEditTest extends TestCase } /** - * Test for InsertEdit::isColumn + * Test for isColumn * * @return void */ @@ -440,51 +479,51 @@ class InsertEditTest extends TestCase $types = array('binary', 'varbinary'); $column['Type'] = 'binaryfoo'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'Binaryfoo'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'varbinaryfoo'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'barbinaryfoo'; - $this->assertFalse(InsertEdit::isColumn($column, $types)); + $this->assertFalse($this->insertEdit->isColumn($column, $types)); $types = array('char', 'varchar'); $column['Type'] = 'char(10)'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'VarChar(20)'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'foochar'; - $this->assertFalse(InsertEdit::isColumn($column, $types)); + $this->assertFalse($this->insertEdit->isColumn($column, $types)); $types = array('blob', 'tinyblob', 'mediumblob', 'longblob'); $column['Type'] = 'blob'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'bloB'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'mediumBloB'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'tinyblobabc'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'longblob'; - $this->assertTrue(InsertEdit::isColumn($column, $types)); + $this->assertTrue($this->insertEdit->isColumn($column, $types)); $column['Type'] = 'foolongblobbar'; - $this->assertFalse(InsertEdit::isColumn($column, $types)); + $this->assertFalse($this->insertEdit->isColumn($column, $types)); } /** - * Test for InsertEdit::getEnumSetAndTimestampColumns + * Test for getEnumSetAndTimestampColumns * * @return void */ @@ -494,46 +533,58 @@ class InsertEditTest extends TestCase $column['True_Type'] = 'set'; $this->assertEquals( array('set', '', false), - InsertEdit::getEnumSetAndTimestampColumns($column, false) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, false + ]) ); $column['True_Type'] = 'enum'; $this->assertEquals( array('enum', '', false), - InsertEdit::getEnumSetAndTimestampColumns($column, false) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, false + ]) ); $column['True_Type'] = 'timestamp'; $column['Type'] = 'date'; $this->assertEquals( array('date', ' nowrap', true), - InsertEdit::getEnumSetAndTimestampColumns($column, false) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, false + ]) ); $column['True_Type'] = 'timestamp'; $column['Type'] = 'date'; $this->assertEquals( array('date', ' nowrap', false), - InsertEdit::getEnumSetAndTimestampColumns($column, true) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, true + ]) ); $column['True_Type'] = 'SET'; $column['Type'] = 'num'; $this->assertEquals( array('num', ' nowrap', false), - InsertEdit::getEnumSetAndTimestampColumns($column, false) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, false + ]) ); $column['True_Type'] = ''; $column['Type'] = 'num'; $this->assertEquals( array('num', ' nowrap', false), - InsertEdit::getEnumSetAndTimestampColumns($column, false) + $this->callProtectedMethod('getEnumSetAndTimestampColumns', [ + $column, false + ]) ); } /** - * Test for InsertEdit::getFunctionColumn + * Test for getFunctionColumn * * @return void */ @@ -544,66 +595,66 @@ class InsertEditTest extends TestCase $column['is_blob'] = true; $this->assertContains( '
BinaryBinaryBinary------