diff --git a/build.xml b/build.xml index 0bc0cf1a34..9defe2707c 100644 --- a/build.xml +++ b/build.xml @@ -19,13 +19,13 @@ - + - + diff --git a/doc/config.rst b/doc/config.rst index f728df1d09..ea2ea02662 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1173,10 +1173,10 @@ Generic settings .. config:option:: $cfg['MemoryLimit'] :type: string [number of bytes] - :default: ``'0'`` + :default: ``'-1'`` Set the number of bytes a script is allowed to allocate. If set to - zero, no limit is imposed. + ``'-1'``, no limit is imposed. This setting is used while importing/exporting dump files and at some other places in phpMyAdmin so you definitely don't want to put here a too low diff --git a/doc/faq.rst b/doc/faq.rst index 4c77f71b87..a59f2fe204 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -1828,8 +1828,8 @@ t/pma/Charts#Data_formats_for_query_results_chart>`_. .. _faq6_30: -6.30 Import: How can I import ESRI Shapefiles ---------------------------------------------- +6.30 Import: How can I import ESRI Shapefiles? +---------------------------------------------- An ESRI Shapefile is actually a set of several files, where .shp file contains geometry data and .dbf file contains data related to those diff --git a/libraries/DatabaseInterface.class.php b/libraries/DatabaseInterface.class.php index 0cc6cadbe8..8fe8f34ca8 100644 --- a/libraries/DatabaseInterface.class.php +++ b/libraries/DatabaseInterface.class.php @@ -1512,12 +1512,28 @@ class PMA_DatabaseInterface // Skip charsets for Drizzle if (!PMA_DRIZZLE) { + if (PMA_MYSQL_INT_VERSION > 50503) { + $default_charset = 'utf8mb4'; + $default_collation = 'utf8mb4_general_ci'; + } else { + $default_charset = 'utf8'; + $default_collation = 'utf8_general_ci'; + } if (! empty($GLOBALS['collation_connection'])) { $this->query( - "SET CHARACTER SET 'utf8';", + "SET CHARACTER SET '$default_charset';", $link, self::QUERY_STORE ); + /* Automatically adjust collation to mb4 variant */ + if ($default_charset == 'utf8mb4' + && strncmp('utf8_', $GLOBALS['collation_connection'], 5) == 0 + ) { + $GLOBALS['collation_connection'] = 'utf8mb4_' . substr( + $GLOBALS['collation_connection'], + 5 + ); + } $set_collation_con_query = "SET collation_connection = '" . PMA_Util::sqlAddSlashes($GLOBALS['collation_connection']) . "';"; @@ -1528,7 +1544,7 @@ class PMA_DatabaseInterface ); } else { $this->query( - "SET NAMES 'utf8' COLLATE 'utf8_general_ci';", + "SET NAMES '$default_charset' COLLATE '$default_collation';", $link, self::QUERY_STORE ); diff --git a/libraries/config.default.php b/libraries/config.default.php index d24c35b682..4a0de3128d 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -705,13 +705,13 @@ $cfg['ExecTimeLimit'] = 300; $cfg['SessionSavePath'] = ''; /** - * maximum allocated bytes ('0' for no limit) + * maximum allocated bytes ('-1' for no limit) * this is a string because '16M' is a valid value; we must put here * a string as the default value so that /setup accepts strings * * @global string $cfg['MemoryLimit'] */ -$cfg['MemoryLimit'] = '0'; +$cfg['MemoryLimit'] = '-1'; /** * mark used tables, make possible to show locked tables (since MySQL 3.23.30) diff --git a/libraries/config/Validator.class.php b/libraries/config/Validator.class.php index b4b758b790..a9c24e1d31 100644 --- a/libraries/config/Validator.class.php +++ b/libraries/config/Validator.class.php @@ -177,7 +177,7 @@ class PMA_Validator ini_set('html_errors', false); ini_set('track_errors', true); ini_set('display_errors', true); - set_error_handler("PMA_Validator", "nullErrorHandler"); + set_error_handler(array("PMA_Validator", "nullErrorHandler")); ob_start(); } else { ob_end_clean(); diff --git a/libraries/create_addfield.lib.php b/libraries/create_addfield.lib.php index 3fdd68797a..16c8f5c947 100644 --- a/libraries/create_addfield.lib.php +++ b/libraries/create_addfield.lib.php @@ -58,7 +58,7 @@ function PMA_getIndexedColumns() * according to the request */ function PMA_buildColumnCreationStatement( - $field_cnt, $field_primary, $is_create_tbl = true + $field_cnt, &$field_primary, $is_create_tbl = true ) { $definitions = array(); for ($i = 0; $i < $field_cnt; ++$i) { diff --git a/libraries/plugins/export/ExportTexytext.class.php b/libraries/plugins/export/ExportTexytext.class.php index 16d8b9527e..1e6efa0da3 100644 --- a/libraries/plugins/export/ExportTexytext.class.php +++ b/libraries/plugins/export/ExportTexytext.class.php @@ -430,7 +430,7 @@ class ExportTexytext extends ExportPlugin */ function getTriggers($db, $table) { - $text_output .= "|------\n"; + $text_output = "|------\n"; $text_output .= '|' . __('Column'); $dump = "|------\n"; $dump .= '|' . __('Name'); diff --git a/libraries/structure.lib.php b/libraries/structure.lib.php index 719fd390b0..319bc2e6a2 100644 --- a/libraries/structure.lib.php +++ b/libraries/structure.lib.php @@ -2577,4 +2577,41 @@ function PMA_getReservedWordColumnNameMessages($db ,$table) } return $messages; } + +/** + * Function to get the type of command for multiple field handling + * + * @return string + */ +function PMA_getMultipleFieldCommandType() +{ + $submit_mult = null; + + if (isset($_REQUEST['submit_mult_change_x'])) { + $submit_mult = 'change'; + } elseif (isset($_REQUEST['submit_mult_drop_x'])) { + $submit_mult = 'drop'; + } elseif (isset($_REQUEST['submit_mult_primary_x'])) { + $submit_mult = 'primary'; + } elseif (isset($_REQUEST['submit_mult_index_x'])) { + $submit_mult = 'index'; + } elseif (isset($_REQUEST['submit_mult_unique_x'])) { + $submit_mult = 'unique'; + } elseif (isset($_REQUEST['submit_mult_spatial_x'])) { + $submit_mult = 'spatial'; + } elseif (isset($_REQUEST['submit_mult_fulltext_x'])) { + $submit_mult = 'ftext'; + } elseif (isset($_REQUEST['submit_mult_browse_x'])) { + $submit_mult = 'browse'; + } elseif (isset($_REQUEST['submit_mult'])) { + $submit_mult = $_REQUEST['submit_mult']; + } elseif (isset($_REQUEST['mult_btn']) && $_REQUEST['mult_btn'] == __('Yes')) { + $submit_mult = 'row_delete'; + if (isset($_REQUEST['selected'])) { + $_REQUEST['selected_fld'] = $_REQUEST['selected']; + } + } + + return $submit_mult; +} ?> diff --git a/libraries/tbl_columns_definition_form.inc.php b/libraries/tbl_columns_definition_form.inc.php index 8f99660713..2511799449 100644 --- a/libraries/tbl_columns_definition_form.inc.php +++ b/libraries/tbl_columns_definition_form.inc.php @@ -37,7 +37,6 @@ require_once './libraries/tbl_columns_definition_form.lib.php'; * Initialize $html in case this variable was used by a caller * (yes, this script should be refactored into functions) */ -$html = ''; $length_values_input_size = 8; @@ -51,9 +50,6 @@ $is_backup = ($action != 'tbl_create.php' && $action != 'tbl_addfield.php'); require_once './libraries/transformations.lib.php'; $cfgRelation = PMA_getRelationsParam(); -$comments_map = array(); -$mime_map = array(); -$available_mime = array(); $comments_map = PMA_getComments($db, $table); @@ -102,16 +98,13 @@ for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { $columnMeta['Default'] = PMA_Util::convertBitDefaultValue($columnMeta['Default']); } - } - - if (empty($columnMeta['Type'])) { + $type = $extracted_columnspec['type']; + $length = $extracted_columnspec['spec_in_brackets']; + } else { // creating a column $columnMeta['Type'] = ''; $type = ''; $length = ''; - } else { - $type = $extracted_columnspec['type']; - $length = $extracted_columnspec['spec_in_brackets']; } // some types, for example longtext, are reported as @@ -121,34 +114,24 @@ for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { if ($tmp) { $type = substr($type, 0, $tmp - 1); } + // rtrim the type, for cases like "float unsigned" + $type = rtrim($type); + if (isset($submit_length) && $submit_length != false) { $length = $submit_length; } - // rtrim the type, for cases like "float unsigned" - $type = rtrim($type); - $type_upper = strtoupper($type); - - + // old column attributes if ($is_backup) { - if (isset($columnMeta['Field'])) { - $_form_params['field_orig[' . $columnNumber . ']'] - = $columnMeta['Field']; - } else { - $_form_params['field_orig[' . $columnNumber . ']'] = ''; - } - // old column length - $_form_params['field_length_orig[' . $columnNumber . ']'] = $length; - - // old column default - $_form_params['field_default_orig[' . $columnNumber . ']'] - = (isset($columnMeta['Default']) ? $columnMeta['Default'] : ''); + $_form_params = PMA_getFormParamsForOldColumn( + $columnMeta, $length, $_form_params + ); } $content_cells[$columnNumber] = PMA_getHtmlForColumnAttributes( - $columnNumber, isset($columnMeta) ? $columnMeta : null, $type_upper, + $columnNumber, isset($columnMeta) ? $columnMeta : null, strtoupper($type), $length_values_input_size, $length, isset($default_current_timestamp) ? $default_current_timestamp : null, isset($extracted_columnspec) ? $extracted_columnspec : null, @@ -162,44 +145,7 @@ for ($columnNumber = 0; $columnNumber < $num_fields; $columnNumber++) { ); } // end for -/** - * needs to be finished - * - * -if ($display_type == 'horizontal') { - $new_field = ''; - foreach ($empty_row as $content_row_val) { - $new_field .= '' . $content_row_val . ''; - } - ?> - - diff --git a/pmd_pdf.php b/pmd_pdf.php index f92fa8bcee..be98f76f5c 100644 --- a/pmd_pdf.php +++ b/pmd_pdf.php @@ -21,8 +21,7 @@ if (isset($_POST['scale']) && ! PMA_isValid($_POST['scale'], 'numeric')) { */ $post_params = array( 'db', - 'mode', - 'scale' + 'mode' ); foreach ($post_params as $one_post_param) { @@ -34,7 +33,7 @@ foreach ($post_params as $one_post_param) { /** * If called directly from the designer, first save the positions */ -if (! isset($scale)) { +if (! isset($_POST['scale'])) { include_once 'pmd_save_pos.php'; } @@ -47,7 +46,7 @@ if (isset($mode)) { . PMA_Util::backquote($GLOBALS['cfgRelation']['designer_coords']); $pma_table = PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_Util::backquote($cfgRelation['table_coords']); - $scale_q = PMA_Util::sqlAddSlashes($scale); + $scale_q = PMA_Util::sqlAddSlashes($_POST['scale']); if ('create_export' == $mode) { $pdf_page_number = PMA_REL_createPage($_POST['newpage'], $cfgRelation, $db); diff --git a/po/bn.po b/po/bn.po index 461f808a4f..97288f5235 100644 --- a/po/bn.po +++ b/po/bn.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.1-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-07-10 16:11+0200\n" +"PO-Revision-Date: 2013-08-13 10:22+0200\n" "Last-Translator: Michal Čihař \n" -"Language-Team: Bengali \n" +"Language-Team: Bengali " +"\n" "Language: bn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 1.6-dev\n" +"X-Generator: Weblate 1.7-dev\n" #: browse_foreigners.php:50 browse_foreigners.php:70 js/messages.php:348 #: libraries/DisplayResults.class.php:805 @@ -115,7 +115,7 @@ msgstr "ডাটাবেইজ %1$s তৈরী করা হয়েছে।" #: db_datadict.php:52 libraries/operations.lib.php:32 msgid "Database comment: " -msgstr "ডাটাবেইজের মন্তব্য" +msgstr "ডাটাবেইজের মন্তব্য: " #: db_datadict.php:159 libraries/schema/Pdf_Relation_Schema.class.php:1352 #: libraries/tbl_columns_definition_form.lib.php:70 tbl_printview.php:120 @@ -286,7 +286,7 @@ msgstr "সবগুলো নির্বাচন" #: db_export.php:47 libraries/DbSearch.class.php:441 #: libraries/display_export.lib.php:48 msgid "Unselect All" -msgstr "সবগুলো অনির্বাচন " +msgstr "সবগুলো অনির্বাচন" #: db_operations.php:45 tbl_create.php:24 msgid "The database name is empty!" @@ -295,7 +295,7 @@ msgstr "ডাটাবেইজের নাম দেওয়া হয় না #: db_operations.php:130 #, php-format msgid "Database %1$s has been renamed to %2$s" -msgstr "ডাটাবেইজ %1$s এর নতুন নামকরণ %2$s হয়েছে " +msgstr "ডাটাবেইজ %1$s এর নতুন নামকরণ %2$s হয়েছে" #: db_operations.php:136 #, php-format @@ -448,7 +448,7 @@ msgstr "টেবিল থেকে ট্র্যাকিং এর তথ #: libraries/structure.lib.php:1378 libraries/structure.lib.php:2064 #: libraries/structure.lib.php:2066 msgid "Drop" -msgstr "মুছ " +msgstr "মুছ" #: db_tracking.php:120 tbl_tracking.php:717 tbl_tracking.php:771 msgid "active" @@ -627,8 +627,8 @@ msgid "" "You probably tried to upload a file that is too large. Please refer to " "%sdocumentation%s for a workaround for this limit." msgstr "" -"সম্ভবত আপনি একটি বিশাল ফাইল আপলোড করতে চাচ্ছেন। অনুগ্র্রহ করে %sdocumentation%s " -"দেখে এই সমস্যা সমাধানের চেষ্টা করুন " +"সম্ভবত আপনি একটি বিশাল ফাইল আপলোড করতে চাচ্ছেন। অনুগ্র্রহ করে %" +"sdocumentation%s দেখে এই সমস্যা সমাধানের চেষ্টা করুন" #: import.php:270 import.php:536 msgid "Showing bookmark" @@ -650,8 +650,8 @@ msgid "" "You attempted to load file with unsupported compression (%s). Either support " "for it is not implemented or disabled by your configuration." msgstr "" -"আপনি অপরিচিত সংকোচন (%s) এর ফাইল ব্যবহার করছেন। সম্ভব এটি নিয়ে কাজ করার ব্যবস্থা " -"নাই বা এটি অর্কাযকর করা আছে। " +"আপনি অপরিচিত সংকোচন (%s) এর ফাইল ব্যবহার করছেন। সম্ভব এটি নিয়ে কাজ করার " +"ব্যবস্থা নাই বা এটি অর্কাযকর করা আছে।" #: import.php:447 msgid "" @@ -660,7 +660,7 @@ msgid "" "[doc@faq1-16]FAQ 1.16[/doc]." msgstr "" "আমদানির জন্য কোন তথ্য পাওয়া যায়নি। হয় কোন ফাইলের নাম দেওয়া হয়নি বা অনেক বড় " -"আকারের ফাইল যা পিএইছপি সমর্থন করছে না। [doc@faq1-16]FAQ 1.16[/doc] দেখুন। " +"আকারের ফাইল যা পিএইছপি সমর্থন করছে না। [doc@faq1-16]FAQ 1.16[/doc] দেখুন।" #: import.php:467 msgid "" @@ -686,7 +686,8 @@ msgstr "আমদানি প্রক্রীয়াটি সফলভাব msgid "" "Script timeout passed, if you want to finish import, please resubmit same " "file and import will resume." -msgstr "নির্ধারিত কার্যকাল শেষ হয়ে গেছে, আমদানি শেষ করার জন্য কাজটি আবার শুরু করুন " +msgstr "" +"নির্ধারিত কার্যকাল শেষ হয়ে গেছে, আমদানি শেষ করার জন্য কাজটি আবার শুরু করুন" #: import.php:581 msgid "" @@ -1050,9 +1051,9 @@ msgid "" "likely that your current configuration will not work anymore. Please reset " "your configuration to default in the Settings menu." msgstr "" -"ব্রাউজারে থাকা চিত্র সজ্জার কনফিগারেশন নতুন পর্যবেক্ষকের উপযুক্ত নয়। আপনার বর্তমান " -"কনফিগারেশন কাজ করবে না মনে হয়। আপনার কনফিগরেশন Settings ম্যানু থেকে " -"স্বাভাবিকে নির্ধারন করন। " +"ব্রাউজারে থাকা চিত্র সজ্জার কনফিগারেশন নতুন পর্যবেক্ষকের উপযুক্ত নয়। আপনার " +"বর্তমান কনফিগারেশন কাজ করবে না মনে হয়। আপনার কনফিগরেশন Settings " +"ম্যানু থেকে স্বাভাবিকে নির্ধারন করন।" #: js/messages.php:80 msgid "Query cache efficiency" @@ -1223,7 +1224,7 @@ msgstr "র্পযবেক্ষন পুনরায় শুরু কর" #: js/messages.php:126 msgid "Pause monitor" -msgstr "পর্যবেক্ষন বিরতি " +msgstr "পর্যবেক্ষন বিরতি" #: js/messages.php:128 msgid "general_log and slow_query_log are enabled." @@ -1263,7 +1264,7 @@ msgstr "" #: js/messages.php:135 #, php-format msgid "long_query_time is set to %d second(s)." -msgstr "long_query_time %d সেকেন্ডে নির্ধারন করা হয়েছে। " +msgstr "long_query_time %d সেকেন্ডে নির্ধারন করা হয়েছে।" #: js/messages.php:136 msgid "" @@ -1357,9 +1358,9 @@ msgid "" "However only the SQL query itself has been used as a grouping criteria, so " "the other attributes of queries, such as start time, may differ." msgstr "" -"এই স্তম্ভে একই ধরনের অনুসন্ধানগুলো দলবদ্ধ করে দেখাচ্ছে। দলবদ্ধ করার শর্ত হিসাবে শুধু " -"SQL অনুসন্ধানটিই ব্যবহৃত হয়েছে। অনুসন্ধানগুলোর অন্যান্য বিষয়, যেমন আরম্ভের সময় ইত্যাদি " -"পার্থক্য হতে পারে। " +"এই স্তম্ভে একই ধরনের অনুসন্ধানগুলো দলবদ্ধ করে দেখাচ্ছে। দলবদ্ধ করার শর্ত " +"হিসাবে শুধু SQL অনুসন্ধানটিই ব্যবহৃত হয়েছে। অনুসন্ধানগুলোর অন্যান্য বিষয়, " +"যেমন আরম্ভের সময় ইত্যাদি পার্থক্য হতে পারে।" #: js/messages.php:161 msgid "" @@ -1448,7 +1449,7 @@ msgstr "WHERE এর তথ্য উপেক্ষা করে অনুস #: js/messages.php:185 msgid "Sum of grouped rows:" -msgstr "দলবদ্ধকৃত রো'র সংখ্যা" +msgstr "দলবদ্ধকৃত রো'র সংখ্যা:" #: js/messages.php:186 msgid "Total:" @@ -1631,7 +1632,7 @@ msgstr "ইনডেক্স দেখাও" #: js/messages.php:244 libraries/mult_submits.inc.php:355 msgid "Foreign key check:" -msgstr "foreign key পরীক্ষা: " +msgstr "foreign key পরীক্ষা:" #: js/messages.php:245 libraries/mult_submits.inc.php:365 msgid "(Enabled)" @@ -1783,11 +1784,12 @@ msgstr "মুল অবস্থায় ফিরিয়ে নেওয়ার #: js/messages.php:299 msgid "Click a data point to view and possibly edit the data row." msgstr "" -"দেখার জন্য একটি তথ্য পয়েন্ট এ ক্লীক করুন এবং প্রয়োজনে তথ্য সারিটি সম্পাদনা করুন। " +"দেখার জন্য একটি তথ্য পয়েন্ট এ ক্লীক করুন এবং প্রয়োজনে তথ্য সারিটি সম্পাদনা " +"করুন।" #: js/messages.php:301 msgid "The plot can be resized by dragging it along the bottom right corner." -msgstr "নীচের ডান কোণার দিকে টেনে এই অংশটির আকৃতি পরিবর্তন করা যাবে। " +msgstr "নীচের ডান কোণার দিকে টেনে এই অংশটির আকৃতি পরিবর্তন করা যাবে।" #: js/messages.php:303 msgid "Select two columns" @@ -1870,7 +1872,7 @@ msgstr "" #: js/messages.php:337 msgid "Add an option for column " -msgstr "স্তম্ভের জন্য একটি অপশন যোগ কর" +msgstr "স্তম্ভের জন্য একটি অপশন যোগ কর " #: js/messages.php:338 #, php-format @@ -1981,8 +1983,8 @@ msgid "" "A newer version of phpMyAdmin is available and you should consider " "upgrading. The newest version is %s, released on %s." msgstr "" -"phpMyAdmin এর একটি নতুন সংস্করন আছে এবং আপনি আপডেট করতে পারেন। নতুন সংস্করনটি হল " -"%s, বেরিয়েছে %s। " +"phpMyAdmin এর একটি নতুন সংস্করন আছে এবং আপনি আপডেট করতে পারেন। নতুন " +"সংস্করনটি হল %s, বেরিয়েছে %s।" #. l10n: Latest available phpMyAdmin version #: js/messages.php:386 @@ -2321,11 +2323,11 @@ msgstr "প্রতি দিন" #: libraries/Config.class.php:1128 #, php-format msgid "Existing configuration file (%s) is not readable." -msgstr "বর্তমান কনফিগারেশন ফাইল (%s) টি পড়া যাচ্ছে না। " +msgstr "বর্তমান কনফিগারেশন ফাইল (%s) টি পড়া যাচ্ছে না।" #: libraries/Config.class.php:1158 msgid "Wrong permissions on configuration file, should not be world writable!" -msgstr "কনফিগারেশন ফাইলে ভুল অনুমতি দেয়া, ওটা লেখার মত নয় " +msgstr "কনফিগারেশন ফাইলে ভুল অনুমতি দেয়া, ওটা লেখার মত নয়" #: libraries/Config.class.php:1723 msgid "Font size" @@ -2424,7 +2426,7 @@ msgstr "" #: libraries/DBQbe.class.php:1321 #, php-format msgid "SQL query on database %s:" -msgstr "ডাটাবেইজে SQL অনুসন্ধান: %s " +msgstr "ডাটাবেইজে SQL অনুসন্ধান %s:" #: libraries/DBQbe.class.php:1335 libraries/Util.class.php:1241 msgid "Submit Query" @@ -2569,7 +2571,7 @@ msgstr "শেষ" #: libraries/DisplayResults.class.php:900 libraries/display_export.lib.php:322 #: tbl_chart.php:245 msgid "Number of rows:" -msgstr "রো সংখ্যা" +msgstr "রো সংখ্যা:" #: libraries/DisplayResults.class.php:917 #, fuzzy @@ -2649,7 +2651,7 @@ msgstr "BLOB লেখা দেখাও" #: libraries/DisplayResults.class.php:1610 #: libraries/config/messages.inc.php:59 msgid "Show binary contents as HEX" -msgstr "বাইনারী লেখা গুলো HEX এ দেখাও " +msgstr "বাইনারী লেখা গুলো HEX এ দেখাও" #: libraries/DisplayResults.class.php:1621 msgid "Hide browser transformation" @@ -2712,7 +2714,7 @@ msgstr "মোট" #: libraries/DisplayResults.class.php:4889 libraries/sql.lib.php:1641 #, php-format msgid "Query took %01.4f sec" -msgstr "অনুসন্ধানে %01.4f সেঃ লেগেছ " +msgstr "অনুসন্ধানে %01.4f সেঃ লেগেছ" #: libraries/DisplayResults.class.php:4973 #: libraries/DisplayResults.class.php:4979 libraries/mult_submits.inc.php:45 @@ -2723,7 +2725,7 @@ msgstr "অনুসন্ধানে %01.4f সেঃ লেগেছ " #: libraries/structure.lib.php:293 libraries/structure.lib.php:295 #: libraries/structure.lib.php:1357 libraries/structure.lib.php:1364 msgid "With selected:" -msgstr "নিবার্চিত গুলো নিয়ে" +msgstr "নিবার্চিত গুলো নিয়ে:" #: libraries/DisplayResults.class.php:4977 #: libraries/DisplayResults.class.php:4978 @@ -2765,7 +2767,7 @@ msgstr "মুদ্রনের দেখা" #: libraries/DisplayResults.class.php:5208 msgid "Print view (with full texts)" -msgstr "প্রিন্টের দেখা (with full texts) " +msgstr "প্রিন্টের দেখা (with full texts)" #: libraries/DisplayResults.class.php:5279 tbl_chart.php:151 msgid "Display chart" @@ -2819,7 +2821,7 @@ msgstr "ফাইল আপলোডের সময় অজ্ঞাত ভু #: libraries/File.class.php:476 msgid "Error moving the uploaded file, see [doc@faq1-11]FAQ 1.11[/doc]" -msgstr "আপলোডকৃত ফাইলটি সরাতে সমস্যা হয়েছে, [doc@faq1-11]FAQ 1.11[/doc] দেখুন। " +msgstr "আপলোডকৃত ফাইলটি সরাতে সমস্যা হয়েছে, [doc@faq1-11]FAQ 1.11[/doc] দেখুন।" #: libraries/File.class.php:494 msgid "Error while moving uploaded file." @@ -2910,7 +2912,7 @@ msgstr "ইনডেক্স %s মুছা হয়েছে" msgid "" "The indexes %1$s and %2$s seem to be equal and one of them could possibly be " "removed." -msgstr "ইনডেক্স %1$s এবং %2$s এক সমান মনে হয় এবং যে কোন একটি মুছে ফেলুন। " +msgstr "ইনডেক্স %1$s এবং %2$s এক সমান মনে হয় এবং যে কোন একটি মুছে ফেলুন।" #: libraries/Menu.class.php:200 libraries/ServerStatusData.class.php:364 #: libraries/config/messages.inc.php:519 @@ -3228,7 +3230,7 @@ msgstr "এই MySQL সার্ভারটি %s মজুদ ব্যবস #: libraries/Table.class.php:395 msgid "unknown table status: " -msgstr "টেবিলের অবস্থা অজ্ঞাত:" +msgstr "টেবিলের অবস্থা অজ্ঞাত: " #: libraries/Table.class.php:798 #, php-format @@ -3317,7 +3319,7 @@ msgstr "সম্পাদন/নতুন" #: libraries/TableSearch.class.php:771 msgid "Select columns (at least one):" -msgstr "স্বম্ভ নির্বাচন করুন (একটি হলেও)" +msgstr "স্বম্ভ নির্বাচন করুন (একটি হলেও):" #: libraries/TableSearch.class.php:790 libraries/display_indexes.lib.php:197 #: libraries/insert_edit.lib.php:1191 libraries/server_privileges.lib.php:352 @@ -3520,7 +3522,7 @@ msgid "" "A synonym for TINYINT(1), a value of zero is considered false, nonzero " "values are considered true" msgstr "" -"একটি সমার্থক হল TINYINT(1) এর, ০ মান মিথ্যা এবং মান ০ নাহলে সত্য বলে ধরা হয় " +"একটি সমার্থক হল TINYINT(1) এর, ০ মান মিথ্যা এবং মান ০ নাহলে সত্য বলে ধরা হয়" #: libraries/Types.class.php:319 msgid "An alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE" @@ -3534,7 +3536,7 @@ msgstr "একটি তারিখ, অনুমোদিত সীমা হ #: libraries/Types.class.php:323 libraries/Types.class.php:726 #, php-format msgid "A date and time combination, supported range is %1$s to %2$s" -msgstr "একটি তারিখ এবং সময়ের মিশ্রণ,অনুমোদিত সীমা হল %1$s - %2$s " +msgstr "একটি তারিখ এবং সময়ের মিশ্রণ,অনুমোদিত সীমা হল %1$s - %2$s" #: libraries/Types.class.php:325 msgid "" @@ -3542,12 +3544,12 @@ msgid "" "stored as the number of seconds since the epoch (1970-01-01 00:00:00 UTC)" msgstr "" "একটি timestamp, সীমা হল ১৯৭০-০১-১০ ০০:০০:০১ UTC - ২০৩৮-০১-০৯ ০৩:১৪:০৭ UTC, " -"সেকেন্ডের নাম্বার হিসাবে মজুদ করা হয় ঐতিহাসিক(১৯৭০-০১-১০ ০০:০০:০১)থেকে " +"সেকেন্ডের নাম্বার হিসাবে মজুদ করা হয় ঐতিহাসিক(১৯৭০-০১-১০ ০০:০০:০১)থেকে" #: libraries/Types.class.php:327 libraries/Types.class.php:730 #, php-format msgid "A time, range is %1$s to %2$s" -msgstr "সময়, সীমা %1$s - %2$s " +msgstr "সময়, সীমা %1$s - %2$s" #: libraries/Types.class.php:329 msgid "" @@ -3577,7 +3579,7 @@ msgid "" "a one-byte prefix indicating the length of the value in bytes" msgstr "" "একটি TEXT স্তম্ভ সর্বোচ্চ ২৫৫(২^৮ - ১) সংখ্যক অক্ষরের, সন্মুখে একটি বাইট সহ মজুদ করা " -"হয় যা এর দৈর্ঘ্যের পরিমান রাখে " +"হয় যা এর দৈর্ঘ্যের পরিমান রাখে" #: libraries/Types.class.php:337 libraries/Types.class.php:734 msgid "" @@ -3593,7 +3595,7 @@ msgid "" "stored with a three-byte prefix indicating the length of the value in bytes" msgstr "" "একটি TEXT স্তম্ভ সর্বোচ্চ ১৬,৭৭৭,২১৫(২^২৪ - ১) সংখ্যক অক্ষর, সন্মুখে তিনটি বাইট সহ " -"মজুদ করা হয় যা এর দৈর্ঘ্যের পরিমান রাখে " +"মজুদ করা হয় যা এর দৈর্ঘ্যের পরিমান রাখে" #: libraries/Types.class.php:341 msgid "" @@ -3622,7 +3624,7 @@ msgid "" "one-byte prefix indicating the length of the value" msgstr "" "BLOB স্তম্ভ সর্বোচ্চ ২৫৫(২^৮ - ১)বাইট হয়, সন্মুখে একটি বাইট সহ মজুদ করা হয় যা এর " -"দৈর্ঘ্যের পরিমান রাখে " +"দৈর্ঘ্যের পরিমান রাখে" #: libraries/Types.class.php:349 msgid "" @@ -3630,7 +3632,7 @@ msgid "" "with a three-byte prefix indicating the length of the value" msgstr "" "BLOB স্তম্ভ সর্বোচ্চ ১৬,৭৭৭,২১৫(২^২৪ - ১)বাইট হয়, সন্মুখে তিনটি বাইট সহ মজুদ করা হয় " -"যা এর দৈর্ঘ্যের পরিমান রাখে " +"যা এর দৈর্ঘ্যের পরিমান রাখে" #: libraries/Types.class.php:351 libraries/Types.class.php:738 msgid "" @@ -3638,7 +3640,7 @@ msgid "" "a two-byte prefix indicating the length of the value" msgstr "" "BLOB স্তম্ভ সর্বোচ্চ ৬৫,৫৩৫(২^১৬ - ১)বাইট হয়, সন্মুখে দুইটি বাইট সহ মজুদ করা হয় যা " -"এর দৈর্ঘ্যের পরিমান এই বাইটে রাখে " +"এর দৈর্ঘ্যের পরিমান এই বাইটে রাখে" #: libraries/Types.class.php:353 msgid "" @@ -3646,7 +3648,7 @@ msgid "" "bytes, stored with a four-byte prefix indicating the length of the value" msgstr "" "BLOB স্তম্ভ সর্বোচ্চ ৪,২৯৪,৯৬৭,২৯৫,বা ৪জিবি(২^৩২ - ১)বাইট হয়, সন্মুখে চারটি বাইট " -"সহ মজুদ করা হয় যা এর দৈর্ঘ্যের পরিমান রাখে " +"সহ মজুদ করা হয় যা এর দৈর্ঘ্যের পরিমান রাখে" #: libraries/Types.class.php:355 msgid "" @@ -3672,7 +3674,7 @@ msgstr "একটি বাঁক পয়েন্টের মধ্য রৈ #: libraries/Types.class.php:365 msgid "A polygon" -msgstr "একটি পলিগন " +msgstr "একটি পলিগন" #: libraries/Types.class.php:367 msgid "A collection of points" @@ -3680,7 +3682,7 @@ msgstr "পয়েন্টের সম্ভার" #: libraries/Types.class.php:369 msgid "A collection of curves with linear interpolation between points" -msgstr "বিভিন্ন পয়েন্টের রৈখিক বাকেঁর সম্ভার " +msgstr "বিভিন্ন পয়েন্টের রৈখিক বাকেঁর সম্ভার" #: libraries/Types.class.php:371 msgid "A collection of polygons" @@ -3778,7 +3780,7 @@ msgstr "SQL query" #: libraries/rte/rte_triggers.lib.php:112 #: libraries/rte/rte_triggers.lib.php:133 msgid "MySQL said: " -msgstr "MySQL বলেছে:" +msgstr "MySQL বলেছে: " #: libraries/Util.class.php:1137 msgid "Failed to connect to SQL validator!" @@ -3851,7 +3853,7 @@ msgstr "ডাটাবেইজ "%s" যাও।" #: libraries/Util.class.php:2625 #, php-format msgid "The %s functionality is affected by a known bug, see %s" -msgstr "%s কার্যকারিতা একটি চিহ্নিত সমস্যা, %s দেখুন " +msgstr "%s কার্যকারিতা একটি চিহ্নিত সমস্যা, %s দেখুন" #: libraries/Util.class.php:2801 msgid "Click to toggle" @@ -3860,7 +3862,7 @@ msgstr "টোগল ক্লীক করুন" #: libraries/Util.class.php:3303 libraries/sql_query_form.lib.php:471 #: prefs_manage.php:248 msgid "Browse your computer:" -msgstr "আপনার কম্পিউটারে দেখুন" +msgstr "আপনার কম্পিউটারে দেখুন:" #: libraries/Util.class.php:3328 #, php-format @@ -3973,7 +3975,7 @@ msgid "" "The [code]$cfg['PmaAbsoluteUri'][/code] directive MUST be set in your " "configuration file!" msgstr "" -"আপনার কনফিগারেশন ফাইলে অবশ্যই [code]$cfg['PmaAbsoluteUri'][/code] থাকতে হবে! " +"আপনার কনফিগারেশন ফাইলে অবশ্যই [code]$cfg['PmaAbsoluteUri'][/code] থাকতে হবে!" #: libraries/common.inc.php:630 #, php-format @@ -3993,7 +3995,7 @@ msgstr "সার্ভার" #: libraries/common.inc.php:854 msgid "Invalid authentication method set in configuration:" -msgstr "কনফিগারেশনে অকার্যকর প্রমাণীকরন পদ্ধতি: " +msgstr "কনফিগারেশনে অকার্যকর প্রমাণীকরন পদ্ধতি:" #: libraries/common.inc.php:995 #, php-format @@ -4152,7 +4154,7 @@ msgstr "মানটি সঠিক নয়" #: libraries/config/Validator.class.php:593 #, php-format msgid "Value must be equal or lower than %s" -msgstr "মানটি অবশ্যই %s এর সমান বা ছোট হতে হবে " +msgstr "মানটি অবশ্যই %s এর সমান বা ছোট হতে হবে" #: libraries/config/FormDisplay.class.php:541 #, php-format @@ -4202,7 +4204,7 @@ msgstr "" #: libraries/config/FormDisplay.tpl.php:313 #, php-format msgid "Set value: %s" -msgstr "মান সেট কর:%s " +msgstr "মান সেট কর:%s" #: libraries/config/FormDisplay.tpl.php:318 #: libraries/config/messages.inc.php:364 @@ -4351,7 +4353,7 @@ msgid "" "net/]CodeMirror[/a]) with syntax highlighting and line numbers" msgstr "" "SQL অনুসন্ধান সম্পাদনার জন্য ব্যবহারকারীর জন্য সহজ সফটওয়ার ব্যবহার করুন ([a@http://" -"codemirror.net/]CodeMirror[/a]), লাইন চিহ্নিতকরন এবং লাইন নাম্বার সহ " +"codemirror.net/]CodeMirror[/a]), লাইন চিহ্নিতকরন এবং লাইন নাম্বার সহ" #: libraries/config/messages.inc.php:33 msgid "Enable CodeMirror" @@ -4468,7 +4470,7 @@ msgstr "টেবল গঠনের কার্যাবলী লুকাও #: libraries/config/messages.inc.php:58 msgid "Show binary contents as HEX by default" -msgstr "বাইনারী বিষয়গুলো HEX এ দেখাবে " +msgstr "বাইনারী বিষয়গুলো HEX এ দেখাবে" #: libraries/config/messages.inc.php:60 msgid "Show server listing as a list instead of a drop down" @@ -4683,7 +4685,7 @@ msgstr "SQL উপযুক্ততার ধরন" #: libraries/config/messages.inc.php:122 #: libraries/plugins/export/ExportSql.class.php:277 msgid "CREATE TABLE options:" -msgstr "CREATE TABLE পছন্দ" +msgstr "CREATE TABLE পছন্দ:" #: libraries/config/messages.inc.php:123 msgid "Creation/Update/Check dates" @@ -4756,7 +4758,7 @@ msgid "" "the referenced data, [kbd]id[/kbd] is the key value" msgstr "" "ফরেন কী ড্রপডাউনের বিষয়গুলো গুছানোর পদ্ধতি [kbd]content[/kbd] হলো তথ্য এবং " -"[kbd]id[/kbd] কী মান " +"[kbd]id[/kbd] কী মান" #: libraries/config/messages.inc.php:152 msgid "Foreign key dropdown order" @@ -4831,7 +4833,7 @@ msgstr "কিছু সাধারনভাবে ব্যবহৃত অপ #: libraries/config/messages.inc.php:172 msgid "Import defaults" -msgstr "আমদানি সর্ম্পকিত স্বাভাবিক " +msgstr "আমদানি সর্ম্পকিত স্বাভাবিক" #: libraries/config/messages.inc.php:173 msgid "Customize default common import options" @@ -5110,7 +5112,7 @@ msgid "" "transactions." msgstr "" "নিধারিত শেষ হয়ে এলে আমদানি বন্ধ করার অনুমোদন। এটা বড় ফাইল আমদানির একটি ভাল " -"উপায়, যদিও এটি কাজ বন্ধ রাখতে পারে। " +"উপায়, যদিও এটি কাজ বন্ধ রাখতে পারে।" #: libraries/config/messages.inc.php:243 msgid "Partial import: allow interrupt" @@ -5147,7 +5149,7 @@ msgstr "LOCAL কীওর্য়াড ব্যবহার কর" #: libraries/config/messages.inc.php:259 libraries/config/messages.inc.php:267 #: libraries/config/messages.inc.php:268 msgid "Column names in first row" -msgstr "প্রথম সারিতে স্তম্ভের নাম " +msgstr "প্রথম সারিতে স্তম্ভের নাম" #: libraries/config/messages.inc.php:260 #: libraries/plugins/import/ImportOds.class.php:82 @@ -5219,7 +5221,7 @@ msgstr "" #: libraries/config/messages.inc.php:277 msgid "Recall user name" -msgstr "ব্যবহারকারীর নাম পুনরায় ব্যবহার " +msgstr "ব্যবহারকারীর নাম পুনরায় ব্যবহার" #: libraries/config/messages.inc.php:278 msgid "" @@ -5337,7 +5339,7 @@ msgstr "লোগো দেখাও" #: libraries/config/messages.inc.php:302 msgid "URL where logo in the navigation panel will point to" -msgstr "চলাচলের ফ্রেইমে যেখানে লোগোটি থাকবে তার URL " +msgstr "চলাচলের ফ্রেইমে যেখানে লোগোটি থাকবে তার URL" #: libraries/config/messages.inc.php:303 msgid "Logo link URL" @@ -5357,7 +5359,7 @@ msgstr "লোগো সংযোগের লক্ষ্য" #: libraries/config/messages.inc.php:306 msgid "Display server choice at the top of the navigation panel" -msgstr "পছন্দের সার্ভারটি উপরের বামদিকের কোণার ফ্রেইমে দেখাও " +msgstr "পছন্দের সার্ভারটি উপরের বামদিকের কোণার ফ্রেইমে দেখাও" #: libraries/config/messages.inc.php:307 msgid "Display servers selection" @@ -5385,11 +5387,11 @@ msgstr "ডাটাবেইজ ফিল্টার বক্সে প্র msgid "" "Group items in the navigation tree (determined by the separator defined " "below)" -msgstr "চলাচলের ট্রিতে বিষযগুলো দলবদ্ধ কর " +msgstr "চলাচলের ট্রিতে বিষযগুলো দলবদ্ধ কর" #: libraries/config/messages.inc.php:313 msgid "Group items in the tree" -msgstr "ট্রিতে বিষযগুলো দলবদ্ধ কর " +msgstr "ট্রিতে বিষযগুলো দলবদ্ধ কর" #: libraries/config/messages.inc.php:314 msgid "String that separates databases into different tree levels" @@ -5605,7 +5607,7 @@ msgstr "শিরোনাম পুনরাবৃত্তি" #: libraries/config/messages.inc.php:365 msgid "Grid editing: trigger action" -msgstr "গ্রীড সম্পাদনা: trigger action " +msgstr "গ্রীড সম্পাদনা: trigger action" #: libraries/config/messages.inc.php:366 msgid "Grid editing: save all edited cells at once" @@ -5658,7 +5660,7 @@ msgid "" "swekey.conf)" msgstr "" "কনফিগ ফাইলের পথ [a@http://swekey.com]SweKey hardware authentication[/a] " -"(ডকুমেন্ট রুটে পাওয়া যায়নি; সাম্ভাব্য: /etc/swekey.conf) " +"(ডকুমেন্ট রুটে পাওয়া যায়নি; সাম্ভাব্য: /etc/swekey.conf)" #: libraries/config/messages.inc.php:378 msgid "SweKey config file" @@ -5678,7 +5680,7 @@ msgid "" "support, suggested: [kbd]pma__bookmark[/kbd]" msgstr "" "না করার জন্য খালি রাখুন [a@http://wiki.phpmyadmin.net/pma/bookmark]bookmark[/" -"a] সাহায্যের জন্য, দেখুন:[kbd]pma_bookmark[/kbd] " +"a] সাহায্যের জন্য, দেখুন:[kbd]pma_bookmark[/kbd]" #: libraries/config/messages.inc.php:382 msgid "Bookmark table" @@ -5698,11 +5700,11 @@ msgstr "স্তম্ভ্ তথ্যের টেবল" #: libraries/config/messages.inc.php:385 msgid "Compress connection to MySQL server" -msgstr "সংকুচিত MySQL সার্ভারের সংযোগ " +msgstr "সংকুচিত MySQL সার্ভারের সংযোগ" #: libraries/config/messages.inc.php:386 msgid "Compress connection" -msgstr "সংকুচিত সংযোগ " +msgstr "সংকুচিত সংযোগ" #: libraries/config/messages.inc.php:387 msgid "How to connect to server, keep [kbd]tcp[/kbd] if unsure" @@ -5770,7 +5772,7 @@ msgid "" "bug tracker[/a] and [a@http://bugs.mysql.com/19588]MySQL Bugs[/a]" msgstr "" "আরো তথ্যের জন্য [a@http://sf.net/support/tracker.php?aid=1849494]PMA bug " -"tracker[/a] এবং [a@http://bugs.mysql.com/19588]MySQL Bugs[/a] " +"tracker[/a] এবং [a@http://bugs.mysql.com/19588]MySQL Bugs[/a]" #: libraries/config/messages.inc.php:399 msgid "Disable use of INFORMATION_SCHEMA" @@ -5822,7 +5824,7 @@ msgid "" "records are automatically removed" msgstr "" "ডাটাবেইজে রক্ষিত টেবলের তথ্যের সংখ্যা সীমিত করন, পুরাতন তথ্য স্বয়ংক্রীয়ভাবে মুছে " -"যাবে " +"যাবে" #: libraries/config/messages.inc.php:410 msgid "Maximal number of table preferences to store" @@ -5846,7 +5848,7 @@ msgstr "" "এগুলো আক্ষরিকভাবে ব্যবহার করতে চান, যেমন [kbd]'my\\_db'[/kbd] এবং " "[kbd]'my_db'[/kbd]'টি নয়। এই অপশন ব্যবহার করে ডাটাবেইজের তালিকা গুছানো যাবে, " "শুধু ওগুলোর নাম দেন এবং শেষে[kbd]*[/kbd] ব্যবহার করুন alphabetical ভাবে সাজানোর " -"জন্য। " +"জন্য।" #: libraries/config/messages.inc.php:414 msgid "Show only listed databases" @@ -5910,7 +5912,7 @@ msgid "" "links[/a] support, suggested: [kbd]pma__relation[/kbd]" msgstr "" "না করার জন্য খালি রাখুন [a@http://wiki.phpmyadmin.net/pma/relation]relation-" -"links[/a]সাহায্যের জন্য, দেখুন:[kbd]pma__relation[/kbd] " +"links[/a]সাহায্যের জন্য, দেখুন:[kbd]pma__relation[/kbd]" #: libraries/config/messages.inc.php:426 msgid "Relation table" @@ -5942,7 +5944,7 @@ msgstr "সাইনঅন URL" #: libraries/config/messages.inc.php:432 msgid "Socket on which MySQL server is listening, leave empty for default" -msgstr "কোন সকেটে MySQL সার্ভার শুনছে, স্বাভাবিকটির জন্য " +msgstr "কোন সকেটে MySQL সার্ভার শুনছে, স্বাভাবিকটির জন্য" #: libraries/config/messages.inc.php:433 msgid "Server socket" @@ -6062,7 +6064,7 @@ msgid "" "[kbd]pma__userconfig[/kbd]" msgstr "" "ব্যবহারকারীর নির্ধারন (preferences) ডাটাবেইজে মজুদ করতে না চাইলে খালি রাখুন, " -"দেখুন:[kbd]pma_userconfig[/kbd] " +"দেখুন:[kbd]pma_userconfig[/kbd]" #: libraries/config/messages.inc.php:455 msgid "User preferences storage table" @@ -6078,7 +6080,7 @@ msgid "" "[kbd]pma__users[/kbd]" msgstr "" "ব্যবহারকারীর নির্ধারন (preferences) ডাটাবেইজে মজুদ করতে না চাইলে খালি রাখুন, " -"দেখুন:[kbd]pma_userconfig[/kbd] " +"দেখুন:[kbd]pma_userconfig[/kbd]" #: libraries/config/messages.inc.php:457 #, fuzzy @@ -6096,7 +6098,7 @@ msgid "" "[kbd]pma__usergroups[/kbd]" msgstr "" "ব্যবহারকারীর নির্ধারন (preferences) ডাটাবেইজে মজুদ করতে না চাইলে খালি রাখুন, " -"দেখুন:[kbd]pma_userconfig[/kbd] " +"দেখুন:[kbd]pma_userconfig[/kbd]" #: libraries/config/messages.inc.php:459 #, fuzzy @@ -6114,7 +6116,7 @@ msgid "" "suggested: [kbd]pma__navigationhiding[/kbd]" msgstr "" "ব্যবহারকারীর নির্ধারন (preferences) ডাটাবেইজে মজুদ করতে না চাইলে খালি রাখুন, " -"দেখুন:[kbd]pma_userconfig[/kbd] " +"দেখুন:[kbd]pma_userconfig[/kbd]" #: libraries/config/messages.inc.php:461 msgid "Hidden navigation items table" @@ -6243,7 +6245,7 @@ msgstr "MySQL সার্ভরের বিশদ তথ্য দেখাও #: libraries/config/messages.inc.php:488 msgid "Defines whether SQL queries generated by phpMyAdmin should be displayed" -msgstr "নিধার্রণ করুন phpMyAdmin দ্বারা প্রস্তুতকৃত SQL অনুসন্ধান প্রদর্শন করবে কিনা " +msgstr "নিধার্রণ করুন phpMyAdmin দ্বারা প্রস্তুতকৃত SQL অনুসন্ধান প্রদর্শন করবে কিনা" #: libraries/config/messages.inc.php:489 msgid "Show SQL queries" @@ -6551,7 +6553,7 @@ msgstr "সাম্ভাব্য গভীর পুনরাবৃত্ত #: libraries/dbi/DBIDrizzle.class.php:146 libraries/dbi/DBIMysql.class.php:170 #: libraries/dbi/DBIMysqli.class.php:216 msgid "Connection for controluser as defined in your configuration failed." -msgstr "নিয়ন্ত্রক ব্যবহারকারীর জন্য নির্ধারিত কনফিগারেশন সংযোগে ব্যার্থ হয়েছে। " +msgstr "নিয়ন্ত্রক ব্যবহারকারীর জন্য নির্ধারিত কনফিগারেশন সংযোগে ব্যার্থ হয়েছে।" #: libraries/dbi/drizzle-wrappers.lib.php:387 msgid "Can't seek in an unbuffered result set" @@ -6673,7 +6675,7 @@ msgstr "টেবল:" #: libraries/display_export.lib.php:264 libraries/display_import.lib.php:333 #: libraries/plugins/export/ExportCodegen.class.php:107 msgid "Format:" -msgstr "গঠন" +msgstr "গঠন:" #: libraries/display_export.lib.php:269 msgid "Format-specific options:" @@ -6687,11 +6689,11 @@ msgstr "এই গঠনের অপশনগুলো পূর্ণ কর #: libraries/display_export.lib.php:283 libraries/display_import.lib.php:350 msgid "Encoding Conversion:" -msgstr "এনকোডিং কনভারশন" +msgstr "এনকোডিং কনভারশন:" #: libraries/display_export.lib.php:311 libraries/sql.lib.php:433 msgid "Rows:" -msgstr "সারি" +msgstr "সারি:" #: libraries/display_export.lib.php:319 msgid "Dump some row(s)" @@ -6707,7 +6709,7 @@ msgstr "সব রো স্তুপ কর" #: libraries/display_export.lib.php:367 libraries/display_export.lib.php:634 msgid "Output:" -msgstr "আউটপুট" +msgstr "আউটপুট:" #: libraries/display_export.lib.php:376 libraries/display_export.lib.php:411 #, php-format @@ -6739,7 +6741,7 @@ msgid "" msgstr "" "এই মানটি %1$sstrftime%2$s ভাবে অনুবাদিত হবে, আপনি সময় গঠনের স্ট্রিং ব্যবহার করতে " "পারেন। এখন এই রুপান্তরটি হবে:%3$s। অন্যান্য লেখা ঠিকই থাকবে। %4$sFAQ%5$s এ বিশদ " -"পাওয়া যাবে। " +"পাওয়া যাবে।" #: libraries/display_export.lib.php:510 msgid "use this for future exports" @@ -6768,7 +6770,7 @@ msgstr "বিজিপ্ড" #: libraries/display_export.lib.php:619 msgid "View output as text" -msgstr "লেখার মত আউটপুট দেখা " +msgstr "লেখার মত আউটপুট দেখা" #: libraries/display_export.lib.php:644 msgid "Save output to a file" @@ -6790,7 +6792,7 @@ msgstr "" #: libraries/display_git_revision.lib.php:67 #, php-format msgid "committed on %1$s by %2$s" -msgstr "%2$s দ্বারা %1$s কার্যকর করা হয়েছে " +msgstr "%2$s দ্বারা %1$s কার্যকর করা হয়েছে" #: libraries/display_git_revision.lib.php:75 #, php-format @@ -6828,7 +6830,7 @@ msgid "" "Example: .sql.zip" msgstr "" "একটি সংকোচিত ফাইল অবশ্যই .[format].[compression] ভাবে শেষ হবে। উদাহরণ:" -".sql.zip " +".sql.zip" #: libraries/display_import.lib.php:225 msgid "File to Import:" @@ -6840,7 +6842,7 @@ msgstr "এই সার্ভরে আপলোড করা যায় না #: libraries/display_import.lib.php:272 msgid "Partial Import:" -msgstr "আংশিক আমদানি" +msgstr "আংশিক আমদানি:" #: libraries/display_import.lib.php:279 #, php-format @@ -6857,11 +6859,11 @@ msgid "" msgstr "" "পিএইছপি নির্ধারিত শেষ হওয়ার সময়ের কাছাকাছি এলে আমদানি বন্ধ করার অনুমোদন। " "(এটা অনেক বড় ফাইল আমদানীর একটি ভাল উপায়, যদিও এটা কাজ বন্ধ করে দিতে " -"পারে।) " +"পারে।)" #: libraries/display_import.lib.php:302 msgid "Number of rows to skip, starting from the first row:" -msgstr "এড়িয়ে যাওয়ার রো'র সংখ্যা, আরম্ভের রো: " +msgstr "এড়িয়ে যাওয়ার রো'র সংখ্যা, আরম্ভের রো:" #: libraries/display_import.lib.php:339 msgid "Format-Specific Options:" @@ -6874,7 +6876,7 @@ msgid "" "browsers." msgstr "" "আপলোডের জন্য ফাইলটি সম্ভবত স্বীকৃত আকারের চাইতে বড় বা ওয়েব কিট ব্যবহৃত (Safari, " -"Google Chrome, Arora etc.) ব্রাউজারের একটি পরিচিত সমস্যা। " +"Google Chrome, Arora etc.) ব্রাউজারের একটি পরিচিত সমস্যা।" #: libraries/display_import.lib.php:453 #, php-format @@ -6920,11 +6922,11 @@ msgstr "ইনডেক্সের নাম:" #: libraries/display_indexes.lib.php:67 msgid "" "(\"PRIMARY\" must be the name of and only of a primary key!)" -msgstr "(\"PRIMARY\" অবশ্যই একটি একক প্রাথমিক কী'র নাম হতে হবে!) " +msgstr "(\"PRIMARY\" অবশ্যই একটি একক প্রাথমিক কী'র নাম হতে হবে!)" #: libraries/display_indexes.lib.php:85 msgid "Comment:" -msgstr "মন্তব্য" +msgstr "মন্তব্য:" #: libraries/display_indexes.lib.php:99 msgid "Index type:" @@ -6970,7 +6972,7 @@ msgid "" "The size of the memory buffer InnoDB uses to cache data and indexes of its " "tables." msgstr "" -"মেমোরী বাফারের আকার যা InnoDB টেবিলের তথ্য এবং ইনডেক্স ক্যাশ করতে ব্যবহার করে। " +"মেমোরী বাফারের আকার যা InnoDB টেবিলের তথ্য এবং ইনডেক্স ক্যাশ করতে ব্যবহার করে।" #: libraries/engines/innodb.lib.php:143 msgid "Buffer Pool" @@ -7034,7 +7036,7 @@ msgstr "পড়া ব্যার্থ হয়েছে %" #: libraries/engines/innodb.lib.php:297 msgid "Write waits in %" -msgstr "লেখা ব্যার্থ অপেক্ষায় % " +msgstr "লেখা ব্যার্থ অপেক্ষায় %" #: libraries/engines/myisam.lib.php:28 msgid "Data pointer size" @@ -7058,7 +7060,7 @@ msgid "" "myisam-recover server startup option." msgstr "" "বিধস্ত MyISAM টেবলের পুনরুদ্ধারের স্বয়ংক্রীয় পদ্ধতি, সার্ভার শুরু করার সময় --myisam-" -"recover অপশন দিয়ে নির্ধারন করা হয়। " +"recover অপশন দিয়ে নির্ধারন করা হয়।" #: libraries/engines/myisam.lib.php:37 msgid "Maximum size for temporary sort files" @@ -7075,7 +7077,7 @@ msgstr "" #: libraries/engines/myisam.lib.php:42 msgid "Maximum size for temporary files on index creation" -msgstr "ইনডেক্স তৈরীর জন্য সাময়িক ফাইলের সর্বোচ্চ্ আকার " +msgstr "ইনডেক্স তৈরীর জন্য সাময়িক ফাইলের সর্বোচ্চ্ আকার" #: libraries/engines/myisam.lib.php:43 msgid "" @@ -7096,7 +7098,7 @@ msgid "" "parallel (each index in its own thread) during the repair by sorting process." msgstr "" "এই মানটি যদি ১ এর চাইতে বড় হয়, MyISAM টেবলের ইনডেক্স সর্ট ব্যবস্থা মেরামতের সংগে " -"সমান্তরালভাবে তৈর হবে। (প্রতিটি ইনডেক্স তার নিজস্ব থ্রেডে) " +"সমান্তরালভাবে তৈর হবে। (প্রতিটি ইনডেক্স তার নিজস্ব থ্রেডে)" #: libraries/engines/myisam.lib.php:52 msgid "Sort buffer size" @@ -7134,7 +7136,7 @@ msgid "" msgstr "" "টেবলের তথ্য ক্যাশ করার জন্য রের্কড ক্যাশের নির্ধারিত মেমোরীর পরিমান। স্বাভাবিক মান " "হচ্ছে ৩২মেবা। এই মেমোরী handle data (.xtd) and row pointer (.xtr)ফাইলের " -"পরিবর্তন ক্যাশ করতে ব্যবহৃত হবে। " +"পরিবর্তন ক্যাশ করতে ব্যবহৃত হবে।" #: libraries/engines/pbxt.lib.php:38 msgid "Log cache size" @@ -7170,7 +7172,7 @@ msgid "" "buffers of this size). The default is 1MB." msgstr "" "সর্বময় লেনদেন লগ বাফারের আকৃতি (ইঞ্জিন এই আকারের ২ টি বাফার নির্ধারন করে)। " -"স্বাভাবিক মান ১মেবা। " +"স্বাভাবিক মান ১মেবা।" #: libraries/engines/pbxt.lib.php:53 msgid "Checkpoint frequency" @@ -7237,7 +7239,7 @@ msgstr "রো ফাইলের বৃদ্ধির আকৃতি" #: libraries/engines/pbxt.lib.php:79 msgid "The grow size of the row pointer (.xtr) files." -msgstr "pointer (.xtr) ফাইলের বৃদ্ধির আকৃতি। " +msgstr "pointer (.xtr) ফাইলের বৃদ্ধির আকৃতি।" #: libraries/engines/pbxt.lib.php:83 msgid "Log file count" @@ -7252,7 +7254,7 @@ msgid "" msgstr "" "সিস্টেমের লেনদেন লগ ফাইলের সংখ্যা (pbxt/system/xlog*.xt)। পুরাতন লগের সংখ্যার " "চাইতে এর সংখ্যা বেশী হলে মুছা হবে, অন্যথায় নাম পরিবর্তন এবং নতুন মান দিয়ে রাখা " -"হবে। " +"হবে।" #: libraries/engines/pbxt.lib.php:131 #, php-format @@ -7260,7 +7262,7 @@ msgid "" "Documentation and further information about PBXT can be found on the " "%sPrimeBase XT Home Page%s." msgstr "" -"নথিপত্রাদি এবং PBXT'র অন্যান্য তথ্য %sPrimeBase XT Home Page%s এ পাওয়া যাবে। " +"নথিপত্রাদি এবং PBXT'র অন্যান্য তথ্য %sPrimeBase XT Home Page%s এ পাওয়া যাবে।" #: libraries/engines/pbxt.lib.php:133 msgid "Related Links" @@ -7268,7 +7270,7 @@ msgstr "প্রয়োজনীয় সংযোগ" #: libraries/engines/pbxt.lib.php:135 msgid "The PrimeBase XT Blog by Paul McCullagh" -msgstr "Paul McCullagh এর The PrimeBase XT Blog " +msgstr "Paul McCullagh এর The PrimeBase XT Blog" #: libraries/import.lib.php:190 libraries/insert_edit.lib.php:122 #: libraries/rte/rte_routines.lib.php:1446 libraries/sql.lib.php:1636 @@ -7292,7 +7294,7 @@ msgstr "\"Options\" এ ক্লীক করে যে কোন সেটি #: libraries/import.lib.php:1199 msgid "Edit structure by following the \"Structure\" link" -msgstr "আকৃতি সম্পাদনা কর এই \"Structure\" সংযোগের দ্বারা " +msgstr "আকৃতি সম্পাদনা কর এই \"Structure\" সংযোগের দ্বারা" #: libraries/import.lib.php:1203 #, php-format @@ -7399,7 +7401,7 @@ msgstr "এসকিউএল অনুসন্ধান দেখাচ্ছ #: libraries/insert_edit.lib.php:1944 libraries/sql.lib.php:1611 #, php-format msgid "Inserted row id: %1$d" -msgstr "প্রবেশকৃত রো আইডি: %1$d " +msgstr "প্রবেশকৃত রো আইডি: %1$d" #. l10n: This is currently used only in Japanese locales #: libraries/kanji-encoding.lib.php:147 @@ -7803,7 +7805,7 @@ msgstr "ডাটাবেইজটি মুছে ফেল" #: libraries/operations.lib.php:125 msgid "Drop the database (DROP)" -msgstr "ডাটাবেইজটি মুছে ফেল (DROP) " +msgstr "ডাটাবেইজটি মুছে ফেল (DROP)" #: libraries/operations.lib.php:145 libraries/operations.lib.php:1024 #: tbl_tracking.php:507 @@ -8077,7 +8079,7 @@ msgstr "কোন কার্যকর প্রমাণীকরণ কী #: libraries/plugins/auth/swekey/swekey.auth.lib.php:220 msgid "Authenticating…" -msgstr "প্রমাণীকরণ" +msgstr "প্রমাণীকরণ…" #: libraries/plugins/export/ExportCsv.class.php:65 #: libraries/plugins/import/AbstractImportCsv.class.php:59 @@ -8116,7 +8118,7 @@ msgstr "স্তম্ভের carriage return/line feed বর্ণ মু #: libraries/plugins/export/ExportExcel.class.php:79 msgid "Excel edition:" -msgstr "Excel সংস্করন" +msgstr "Excel সংস্করন:" #: libraries/plugins/export/ExportHtmlword.class.php:81 #: libraries/plugins/export/ExportLatex.class.php:157 @@ -8364,7 +8366,7 @@ msgstr "INSERT IGNORE স্টেটমেন্ট" #: libraries/plugins/export/ExportSql.class.php:350 msgid "Function to use when dumping data:" -msgstr "তথ্য স্তুপকরনের জন্য ব্যবহৃত ফাংশন" +msgstr "তথ্য স্তুপকরনের জন্য ব্যবহৃত ফাংশন:" #: libraries/plugins/export/ExportSql.class.php:363 msgid "Syntax to use when inserting data:" @@ -8378,7 +8380,7 @@ msgid "" msgstr "" "প্রতিটি INSERT এর সাথে স্তম্ভের নাম সংযুক্ত কর
   " "  উদাহরণ: INSERT INTO tbl_name (col_A,col_B,col_C) VALUES " -"(1,2,3) " +"(1,2,3)" #: libraries/plugins/export/ExportSql.class.php:376 msgid "" @@ -8395,7 +8397,7 @@ msgid "" "tbl_name (col_A,col_B) VALUES (1,2,3), (4,5,6), (7,8,9)" msgstr "" "উপরের উভয়টি
      উদাহরণ: INSERT INTO tbl_name " -"(col_A,col_B) VALUES (1,2,3), (4,5,6), (7,8,9) " +"(col_A,col_B) VALUES (1,2,3), (4,5,6), (7,8,9)" #: libraries/plugins/export/ExportSql.class.php:386 msgid "" @@ -8403,14 +8405,14 @@ msgid "" "tbl_name VALUES (1,2,3)" msgstr "" "উপরের কোনটি নয়
      উদাহরণ: INSERT INTO " -"tbl_name VALUES (1,2,3) " +"tbl_name VALUES (1,2,3)" #: libraries/plugins/export/ExportSql.class.php:405 msgid "" "Dump binary columns in hexadecimal notation (for example, \"abc\" becomes " "0x616263)" msgstr "" -"বাইনারী স্তম্ভ hexadecimal করে স্তুপ কর (উদাহরণ, \"abc\" দেখাবে 0x616263) " +"বাইনারী স্তম্ভ hexadecimal করে স্তুপ কর (উদাহরণ, \"abc\" দেখাবে 0x616263)" #: libraries/plugins/export/ExportSql.class.php:418 msgid "" @@ -8418,7 +8420,7 @@ msgid "" "reloaded between servers in different time zones)" msgstr "" "সময় (TIMESTAMP) স্তম্ভ UTC হিসাবে স্তুপ কর (বিভিন্ন সময় এলাকার সার্ভারে সময় " -"(TIMESTAMP) স্তম্ভ ব্যবহার করতে সমর্থ করবে ) " +"(TIMESTAMP) স্তম্ভ ব্যবহার করতে সমর্থ করবে )" #: libraries/plugins/export/ExportSql.class.php:1208 msgid "Constraints for dumped tables" @@ -8476,12 +8478,12 @@ msgid "" "separated by commas and not enclosed in quotations." msgstr "" "যদি ফাইলের সব রো'র তথ্য ডাটাবেইজ অনুযায়ী গুছানো না হয়, এখানে ঐ স্তম্ভের নামের " -"তালিকা কর। স্তম্ভের নাম অবশ্যই কমা দ্ধারা পৃথক হবে এবং কৌটেশন দ্ধারা বন্ধ হবে না। " +"তালিকা কর। স্তম্ভের নাম অবশ্যই কমা দ্ধারা পৃথক হবে এবং কৌটেশন দ্ধারা বন্ধ হবে না।" #: libraries/plugins/import/ImportCsv.class.php:81 #: libraries/plugins/import/ImportLdi.class.php:66 msgid "Column names: " -msgstr "স্তম্ভের নাম:" +msgstr "স্তম্ভের নাম: " #: libraries/plugins/import/ImportCsv.class.php:133 #: libraries/plugins/import/ImportCsv.class.php:148 @@ -8489,7 +8491,7 @@ msgstr "স্তম্ভের নাম:" #: libraries/plugins/import/ImportCsv.class.php:162 #, php-format msgid "Invalid parameter for CSV import: %s" -msgstr "CSV আমদানীর প্যারামিটার ঠিক নাই:%s " +msgstr "CSV আমদানীর প্যারামিটার ঠিক নাই:%s" #: libraries/plugins/import/ImportCsv.class.php:213 #, php-format @@ -8620,7 +8622,7 @@ msgstr "" "অপশনটি ভিন্ন তারিখ/সময়ের গঠন। তৃতীয়টি নির্ধারন করে আপনি স্থানীয় সময় না UTC দেখতে " "চান (\"local\" or \"utc\" ব্যাবহার করেন)তার জন্য। সেই অনুযায়ী, সময়ের গঠনের " "বিভিন্ন মান হয় -\"local\" এর জন্য পিএইচপির strftime() ফাংশনের সহায়িকা দেখুন এবং " -"\"utc\" হয় gmdate() ফাংশন ব্যাবহার করে। " +"\"utc\" হয় gmdate() ফাংশন ব্যাবহার করে।" #: libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php:31 msgid "" @@ -8631,7 +8633,7 @@ msgid "" msgstr "" "এই স্তম্ভের তথ্যগুলো বাইনারী তথ্য হিসাবে ডাউনলোডের সংযোগ দেখাও। প্রথম স্তম্ভটি " "ফাইলের নাম দেওয়ার জন্য বা দ্বিতীয় অপশনটি স্তম্ভের নামের মত যাতে ফাইলের নাম আছে। " -"যদি দ্বিতীয় অপশনটি ব্যবহার করেন, তবে প্রথমটি খালি রাখতে হবে। " +"যদি দ্বিতীয় অপশনটি ব্যবহার করেন, তবে প্রথমটি খালি রাখতে হবে।" #: libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php:31 msgid "" @@ -8661,7 +8663,7 @@ msgstr "" msgid "" "Displays the contents of the column as-is, without running it through " "htmlspecialchars(). That is, the column is assumed to contain valid HTML." -msgstr "স্তম্ভের তথ্য যেমন আছে সেভাবেই দেখাও, htmlspecialchars() ব্যবহার না করে। " +msgstr "স্তম্ভের তথ্য যেমন আছে সেভাবেই দেখাও, htmlspecialchars() ব্যবহার না করে।" #: libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php:31 msgid "" @@ -8681,7 +8683,7 @@ msgid "" "in pixels. The original aspect ratio is preserved." msgstr "" "একটি ক্লীক করার মত থাম্বনেইল দেখাও। অপশনগুলো হল পিক্সেলে সর্বচ্চো উচ্চতা এবং " -"প্রশস্ততা। মুল আকারের হার রক্ষা করা হবে। " +"প্রশস্ততা। মুল আকারের হার রক্ষা করা হবে।" #: libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php:31 msgid "" @@ -8692,7 +8694,7 @@ msgstr "" #: libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php:31 msgid "Formats text as SQL query with syntax highlighting." -msgstr "বাক্য চিহ্নিত করনসহ SQL অনুসন্ধান গঠন কর। " +msgstr "বাক্য চিহ্নিত করনসহ SQL অনুসন্ধান গঠন কর।" #: libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php:31 msgid "" @@ -8819,7 +8821,7 @@ msgid "" "code>), for example by starting from config.sample.inc.php." msgstr "" "কনফিগারেশন ফাইলে (config.inc.php) উন্নততর বিষয়গুলো কার্যকর কর, " -"উদাহরণ স্বরুপ config.sample.inc.php থেকে শুরু কর। " +"উদাহরণ স্বরুপ config.sample.inc.php থেকে শুরু কর।" #: libraries/relation.lib.php:304 msgid "Re-login to phpMyAdmin to load the updated configuration file." @@ -8958,7 +8960,7 @@ msgstr "" #: libraries/replication_gui.lib.php:278 msgid "Error management:" -msgstr "ভূলের ব্যবস্থাপনা" +msgstr "ভূলের ব্যবস্থাপনা:" #: libraries/replication_gui.lib.php:281 msgid "Skipping errors might lead into unsynchronized master and slave!" @@ -8999,7 +9001,7 @@ msgid "" "not, please add the following line into [mysqld] section:" msgstr "" "নিশ্চিত করুন,আপনার কনফিগারেশন ফাইলে (my.cnf) অনন্য server-id আছে। না থাকলে " -"নিন্মের লাইনগুলো [mysqld] অংশে যোগ করুন: " +"নিন্মের লাইনগুলো [mysqld] অংশে যোগ করুন:" #: libraries/replication_gui.lib.php:384 libraries/replication_gui.lib.php:761 #: libraries/server_privileges.lib.php:1150 @@ -9140,7 +9142,7 @@ msgstr "প্রধান সার্ভারটি সফলভাবে %s #: libraries/rte/rte_triggers.lib.php:129 #, php-format msgid "The following query has failed: \"%s\"" -msgstr "নিন্মোক্ত অনুসন্ধানটি ব্যার্থ হয়েছে: \"%s\" " +msgstr "নিন্মোক্ত অনুসন্ধানটি ব্যার্থ হয়েছে: \"%s\"" #: libraries/rte/rte_events.lib.php:134 msgid "Sorry, we failed to restore the dropped event." @@ -9275,15 +9277,15 @@ msgid "" "fail![/strong] Please use the improved 'mysqli' extension to avoid any " "problems." msgstr "" -"আপনি পিএইচপির বাতিলকৃত বা অনঅনুমোদিত 'mysql' সংযোজক ব্যবহার করছেন যা অনেকগুলো " -"অনুসন্ধান ত্বত্তাবধান করতে সক্ষম নয়। কিছু সঞ্চিত রুটিনের কাজ হয়ত ব্যার্থ হবে! সমস্যা এড়াতে 'mysqli' সংযোজক ব্যবহার করুন।" +"আপনি পিএইচপির বাতিলকৃত বা অনঅনুমোদিত 'mysql' সংযোজক ব্যবহার করছেন যা " +"অনেকগুলো অনুসন্ধান ত্বত্তাবধান করতে সক্ষম নয়। [strong]কিছু সঞ্চিত রুটিনের " +"কাজ হয়ত ব্যার্থ হবে![/strong] সমস্যা এড়াতে 'mysqli' সংযোজক ব্যবহার করুন।" #: libraries/rte/rte_routines.lib.php:281 #: libraries/rte/rte_routines.lib.php:1118 #, php-format msgid "Invalid routine type: \"%s\"" -msgstr "অকার্যকর রুটিন ধরন:\"%s\" " +msgstr "অকার্যকর রুটিন ধরন:\"%s\"" #: libraries/rte/rte_routines.lib.php:321 msgid "Sorry, we failed to restore the dropped routine." @@ -9359,7 +9361,7 @@ msgstr "আপনাকে অবশ্যই একটি রুটিনের #: libraries/rte/rte_routines.lib.php:1155 #, php-format msgid "Invalid direction \"%s\" given for parameter." -msgstr "প্যারামিটারের জন্য অকার্যকর নির্দেশনা \"%s\"। " +msgstr "প্যারামিটারের জন্য অকার্যকর নির্দেশনা \"%s\"।" #: libraries/rte/rte_routines.lib.php:1175 #: libraries/rte/rte_routines.lib.php:1230 @@ -9497,7 +9499,7 @@ msgstr "একটি ট্রিগার তৈরীর জন্য প্ #: libraries/rte/rte_words.lib.php:44 #, php-format msgid "No trigger with name %1$s found in database %2$s" -msgstr "ডাটাবেইজ %2$s এ %1$s নামে কোন ট্রিগার পাওয়া যায়নি " +msgstr "ডাটাবেইজ %2$s এ %1$s নামে কোন ট্রিগার পাওয়া যায়নি" #: libraries/rte/rte_words.lib.php:45 msgid "There are no triggers to display." @@ -9510,7 +9512,7 @@ msgstr "ইভেন্ট যোগ কর" #: libraries/rte/rte_words.lib.php:53 #, php-format msgid "Export of event %s" -msgstr "ইভেন্ট %s যোগ কর " +msgstr "ইভেন্ট %s যোগ কর" #: libraries/rte/rte_words.lib.php:54 msgid "event" @@ -9558,7 +9560,7 @@ msgstr "এই পাতায় কোন টেবল নাই!" #: libraries/schema/Export_Relation_Schema.class.php:236 msgid "SCHEMA ERROR: " -msgstr "রূপরেখায় ভুল :" +msgstr "রূপরেখায় ভুল : " #: libraries/schema/Pdf_Relation_Schema.class.php:898 #: libraries/schema/Pdf_Relation_Schema.class.php:1232 @@ -9592,7 +9594,7 @@ msgstr "পাতার নাম" #: libraries/schema/User_Schema.class.php:144 msgid "Automatic layout based on" -msgstr "স্বয়ংক্রীয় নকশা " +msgstr "স্বয়ংক্রীয় নকশা" #: libraries/schema/User_Schema.class.php:147 msgid "Internal relations" @@ -9831,7 +9833,7 @@ msgstr "ডাটাবেজ এবং টেবল মুছার অনু #: libraries/server_privileges.lib.php:197 #: libraries/server_privileges.lib.php:1053 server_privileges.php:90 msgid "Allows reloading server settings and flushing the server's caches." -msgstr "সার্ভার সেটিংস এবং সার্ভারের সঞ্চয়কৃত তথ্যাবলী পরিবর্তনের অনুমোদন। " +msgstr "সার্ভার সেটিংস এবং সার্ভারের সঞ্চয়কৃত তথ্যাবলী পরিবর্তনের অনুমোদন।" #: libraries/server_privileges.lib.php:202 #: libraries/server_privileges.lib.php:1057 server_privileges.php:96 @@ -10068,7 +10070,7 @@ msgstr "একই নামে ডাটাবেইজ তৈরী কর এ #: libraries/server_privileges.lib.php:1581 msgid "Grant all privileges on wildcard name (username\\_%)" -msgstr "সমস্ত অধিকার সব ব্যবহারকারীকে দাও (username\\_%) " +msgstr "সমস্ত অধিকার সব ব্যবহারকারীকে দাও (username\\_%)" #: libraries/server_privileges.lib.php:1589 #, php-format @@ -10221,7 +10223,7 @@ msgstr "%s এর অধীকার সমূহ আধুনিকায়ন #: libraries/server_privileges.lib.php:2997 #, php-format msgid "Privileges for %s" -msgstr "%s এর অধিকারসমূহ " +msgstr "%s এর অধিকারসমূহ" #: libraries/server_privileges.lib.php:3051 #, fuzzy @@ -10245,7 +10247,7 @@ msgstr "" "টিকা: phpMyAdmin সরাসরি মাইএসকিউএল অধিকার টেবিল থেকে ব্যবহারকারীর অধিকার " "সংক্রান্ত তথ্য সমূহ নেয়। টেবিলে থাকা অধিকার সম্পর্কিত তথ্য এবং সার্ভারের মধ্য পার্থক্য " "হতে পারে যদি তা পরিবর্তীত হয়ে থাকে। এরুপ ক্ষেত্রে %sreload the privileges%s করতে " -"হবে। " +"হবে।" #: libraries/server_privileges.lib.php:3212 #, php-format @@ -10353,7 +10355,7 @@ msgid "" "b> process." msgstr "" "প্রতিলিপির জন্য এই মাইএসকিউএল সার্ভারটি master এবং slave'হিসাবে " -"কাজ করছে। " +"কাজ করছে।" #: libraries/server_status.lib.php:84 msgid "This MySQL server works as master in replication process." @@ -10412,7 +10414,7 @@ msgid "" "The Advisor system can provide recommendations on server variables by " "analyzing the server status variables." msgstr "" -"উপদেষ্টা ব্যবস্থাটি সার্ভারের অবস্থার চলক নিরীক্ষা করে প্রয়োজনীয় সুপারিশ প্রদান করে। " +"উপদেষ্টা ব্যবস্থাটি সার্ভারের অবস্থার চলক নিরীক্ষা করে প্রয়োজনীয় সুপারিশ প্রদান করে।" #: libraries/server_status_advisor.lib.php:35 msgid "" @@ -10421,7 +10423,7 @@ msgid "" "system." msgstr "" "বিঃ দ্রঃ সাধারন গননার উপর ভিত্তি করে এবং সাধারন নিয়ম যা এখানে ব্যবহার করা হয়নি " -"তার সর্ম্পকে সর্তক করা হয়। " +"তার সর্ম্পকে সর্তক করা হয়।" #: libraries/server_status_advisor.lib.php:42 msgid "" @@ -10507,7 +10509,7 @@ msgstr "" "দুর্ভাগ্যবশত আপনার ডাটাবেইজ সার্ভারে টেবিলে লগিং করার ব্যবস্থা নাই, যা phpMyAdmin " "এর টেবিল নিরীক্ষার জন্য প্রয়োজন। টেবিলে লগ করার ব্যবস্থা MySQL 5.1.6 বা তার পরের " "সংস্করন গুলোতে আছে। আপনি এখন সার্ভারের চিত্রায়ন (charting) ব্যবস্থাটি ব্যবহার করতে " -"পারবেন। " +"পারবেন।" #: libraries/server_status_monitor.lib.php:164 msgid "Using the monitor:" @@ -10561,7 +10563,7 @@ msgstr "অবস্থার চলক" #: libraries/server_status_monitor.lib.php:219 msgid "Select series:" -msgstr "ধারা নির্বাচন" +msgstr "ধারা নির্বাচন:" #: libraries/server_status_monitor.lib.php:221 msgid "Commonly monitored" @@ -10581,7 +10583,7 @@ msgstr "একটি ভাজক ব্যবহার করুন" #: libraries/server_status_monitor.lib.php:255 msgid "Append unit to data values" -msgstr "তথ্য মানে একক সংযুক্ত কর " +msgstr "তথ্য মানে একক সংযুক্ত কর" #: libraries/server_status_monitor.lib.php:261 msgid "Add this series" @@ -10683,7 +10685,7 @@ msgstr "শুধু সর্তককারী মানসমূহ দেখ #: libraries/server_status_variables.lib.php:57 msgid "Filter by category…" -msgstr "শ্রেণী অনুযায়ী ফিল্টার" +msgstr "শ্রেণী অনুযায়ী ফিল্টার…" #: libraries/server_status_variables.lib.php:78 msgid "Show unformatted values" @@ -10716,7 +10718,7 @@ msgstr "" #: libraries/server_status_variables.lib.php:331 msgid "The number of transactions that used the temporary binary log cache." -msgstr "লেনদেনে সাময়িক বাইনারি লগ ক্যাশ ব্যবহার করেছে তার সংখ্যা " +msgstr "লেনদেনে সাময়িক বাইনারি লগ ক্যাশ ব্যবহার করেছে তার সংখ্যা" #: libraries/server_status_variables.lib.php:334 msgid "" @@ -10794,7 +10796,7 @@ msgid "" msgstr "" "ইনডেক্সের প্রথম লেখাটি কতবার পড়া হয়েছে তার সংখ্যা। এটি যদি বেশী হয়, তবে বুঝা যায় " "সার্ভার প্রচুর সম্পুর্ন ইনডেক্স স্ক্যান করছে; যেমন SELECT col1 FROM foo, ধারনা করা " -"যায় col1 ইনডেক্স করা আছে। " +"যায় col1 ইনডেক্স করা আছে।" #: libraries/server_status_variables.lib.php:385 msgid "" @@ -10811,7 +10813,7 @@ msgid "" "if you are doing an index scan." msgstr "" "পরবর্তী রো key order অনুযায়ী পড়ার চেষ্টার সংখ্যা। ইহা বাড়বে যদি আপনি ইনডেক্সড " -"কলাম নির্দিষ্ট সীমার ভিতর অনুসন্ধান করেন বা ইনডেক্স স্ক্যান করেন। " +"কলাম নির্দিষ্ট সীমার ভিতর অনুসন্ধান করেন বা ইনডেক্স স্ক্যান করেন।" #: libraries/server_status_variables.lib.php:395 msgid "" @@ -10842,7 +10844,7 @@ msgid "" msgstr "" "পরবর্তী রো টি পড়ার চেষ্টার সংখ্যা। যদি আপনি প্রচুর টেবিল স্কেন করেন তবে ইহা অনেক " "বেশী। মনে হয় আপনার টেবিলটি সঠিকভাবে ইনডেক্স করা হয়নি বা অনুসন্ধানগুলো ইনডেক্সের " -"সুবিধা নেয়ার মত করে লেখা হয়নি। " +"সুবিধা নেয়ার মত করে লেখা হয়নি।" #: libraries/server_status_variables.lib.php:413 msgid "The number of internal ROLLBACK statements." @@ -10922,7 +10924,7 @@ msgid "" "The number of logical reads that InnoDB could not satisfy from buffer pool " "and had to do a single-page read." msgstr "" -"যা InnoDB buffer pool থেকে পড়তে পারেনি এবং একটি পাতা পড়তে হয়েছে তার সংখ্যা। " +"যা InnoDB buffer pool থেকে পড়তে পারেনি এবং একটি পাতা পড়তে হয়েছে তার সংখ্যা।" #: libraries/server_status_variables.lib.php:466 msgid "" @@ -11075,7 +11077,7 @@ msgid "" "been flushed to disk. It used to be known as Not_flushed_key_blocks." msgstr "" "কী ব্লকের সংখ্যা যা কী ক্যাশ পরিবর্তন করেছে কিন্ত এখনো ডিস্কে রাখা হয়নি। সাধারনত " -"একে Not_flushed_key_blocks বলা হয়। " +"একে Not_flushed_key_blocks বলা হয়।" #: libraries/server_status_variables.lib.php:576 msgid "" @@ -11110,7 +11112,7 @@ msgid "" msgstr "" "ডিস্ক থেকে পড়া কী ব্লকের সংখ্যা। Key_reads যদি বড় হয় তবে আপনার key_buffer_size " "এর মানটি সম্বভত অনেক ছোট। ক্যাশের মিসের হারটি পাওয়া যাবে Key_reads/" -"Key_read_requests মাধ্যমে। " +"Key_read_requests মাধ্যমে।" #: libraries/server_status_variables.lib.php:597 msgid "" @@ -11124,7 +11126,7 @@ msgstr "ক্যাশে কী ব্লক লেখার চেষ্ট #: libraries/server_status_variables.lib.php:604 msgid "The number of physical writes of a key block to disk." -msgstr "ডিস্কে কী ব্লক লেখার সংখ্যা। " +msgstr "ডিস্কে কী ব্লক লেখার সংখ্যা।" #: libraries/server_status_variables.lib.php:607 msgid "" @@ -11181,7 +11183,7 @@ msgstr "" #: libraries/server_status_variables.lib.php:642 msgid "The amount of free memory for query cache." -msgstr "অনুসন্ধান ক্যাশের উন্মুক্ত মেমরীর পরিমান। " +msgstr "অনুসন্ধান ক্যাশের উন্মুক্ত মেমরীর পরিমান।" #: libraries/server_status_variables.lib.php:645 msgid "The number of cache hits." @@ -11200,7 +11202,7 @@ msgid "" msgstr "" "নতুন অনুসন্ধানের জন্য ক্যাশ্ খালি করার জন্য মুছে ফেলা অনুসন্ধানের সংখ্যা। এই তথ্যটি " "আপনার ক্যাশের আকার ঠিক করতে সাহায্য করবে। কোন অনুসন্ধানটি মুছতে হবে তা নির্ধারন " -"করার জন্য অনুসন্ধান ক্যাশ least recently used (LRU) কৌশল অনুসরন করে। " +"করার জন্য অনুসন্ধান ক্যাশ least recently used (LRU) কৌশল অনুসরন করে।" #: libraries/server_status_variables.lib.php:658 msgid "" @@ -11240,7 +11242,7 @@ msgid "" "(If this is not 0, you should carefully check the indexes of your tables.)" msgstr "" "কী বিহীন সংযোগের সংখ্যা যেগুলো প্রতিটি রো'র পর কী চায়। (এই মানটি যদি ০ না হয় " -"তবে আপনার টেবিলের ইনডেক্সগুলো সর্তকভাবে পরীক্ষা করুন।) " +"তবে আপনার টেবিলের ইনডেক্সগুলো সর্তকভাবে পরীক্ষা করুন।)" #: libraries/server_status_variables.lib.php:683 msgid "" @@ -11263,7 +11265,7 @@ msgid "" "Total (since startup) number of times the replication slave SQL thread has " "retried transactions." msgstr "" -"সহায়ক এসকিউএল থ্রেড (আরম্ভ থেকে) কতবার লেনদেন চেষ্টা করেছে তার মোট সংখ্যা। " +"সহায়ক এসকিউএল থ্রেড (আরম্ভ থেকে) কতবার লেনদেন চেষ্টা করেছে তার মোট সংখ্যা।" #: libraries/server_status_variables.lib.php:698 msgid "This is ON if this server is a slave that is connected to a master." @@ -11322,7 +11324,7 @@ msgid "" "raise your thread_cache_size." msgstr "" "খ্রেড ক্যাশে থ্রেডের সংখ্যা। এই সংখ্যাটি Threads_created/Connections এভাবে গণনা " -"করা যাবে। এই সংখ্যাটি ছোট হলে আপনাকে thread_cache_size বাড়াতে হবে। " +"করা যাবে। এই সংখ্যাটি ছোট হলে আপনাকে thread_cache_size বাড়াতে হবে।" #: libraries/server_status_variables.lib.php:737 msgid "The number of currently open connections." @@ -11460,7 +11462,7 @@ msgstr "টেবল `%s` এর ইনডেক্সে সমস্যা আ #: libraries/sql_query_form.lib.php:189 #, php-format msgid "Run SQL query/queries on server %s" -msgstr "সার্ভার %s এ SQL অনুসন্ধান/অনুসন্ধানসমূহ চালাও " +msgstr "সার্ভার %s এ SQL অনুসন্ধান/অনুসন্ধানসমূহ চালাও" #: libraries/sql_query_form.lib.php:210 libraries/sql_query_form.lib.php:234 #, php-format @@ -11503,7 +11505,7 @@ msgid "" "below, if there is any, may also help you in diagnosing the problem." msgstr "" "আপনার SQL অনুসন্ধানে কোন ভুল আছে মনে হয়। নীচে সার্ভারের ভুল প্রতিবেদনটি দেওয়া হল, " -"যদি কিছু থাকে তা আপনাকে সমস্যাটি নির্ণয়ে সাহায্য করবে " +"যদি কিছু থাকে তা আপনাকে সমস্যাটি নির্ণয়ে সাহায্য করবে" #: libraries/sqlparser.lib.php:178 msgid "" @@ -11523,7 +11525,7 @@ msgstr "" "interface এ চেষ্টা করে দেখতে পারেন। নীচের MySQL server ভুল সর্ম্পকিত তথ্যগুলো " "সমস্যা খুজে পেতে সাহায্য করবে। যদি MySQL command line interface কাজটি সঠিক ভাবে " "করতে পারে এবং SQL parser ব্যার্থ হয় SQL query টি ছোট করে চেষ্টা করে দেখুন এবং " -"নীচের CUT অংশের তথ্যসহ ভুল সর্ম্পকিত একটি প্রতিবেদন পাঠান। " +"নীচের CUT অংশের তথ্যসহ ভুল সর্ম্পকিত একটি প্রতিবেদন পাঠান।" #: libraries/sqlparser.lib.php:191 msgid "BEGIN CUT" @@ -11621,7 +11623,7 @@ msgstr "কিছু না" #: libraries/structure.lib.php:1329 #, php-format msgid "Column %s has been dropped" -msgstr "স্বম্ভ %s মুছা হয়েছে " +msgstr "স্বম্ভ %s মুছা হয়েছে" #: libraries/structure.lib.php:1383 libraries/structure.lib.php:2068 #: libraries/structure.lib.php:2078 @@ -11690,7 +11692,7 @@ msgstr "টেবিলের শুরুতে" #: libraries/structure.lib.php:1590 #, php-format msgid "After %s" -msgstr "%s এর পরে " +msgstr "%s এর পরে" #: libraries/structure.lib.php:1684 msgid "Row statistics" @@ -11775,7 +11777,7 @@ msgstr "স্তম্ভগুলো সফলভাবে সরানো হ #: libraries/structure.lib.php:2571 #, php-format msgid "The column name '%s' is a MySQL reserved keyword." -msgstr "স্তম্ভের নাম '%s'টি MySQL'র সংরক্ষিত শব্দ। " +msgstr "স্তম্ভের নাম '%s'টি MySQL'র সংরক্ষিত শব্দ।" #: libraries/tbl_columns_definition_form.lib.php:72 #, fuzzy @@ -11806,7 +11808,7 @@ msgid "" msgstr "" "যদি স্তম্ভের ধরন \"enum\" বা \"set\" হয়, মানগুলো এই গঠন অনুযায়ী দিন, গঠন: " "'অ','আ','ই'…
যদি backslash (\"\\\") বা single quote (\"'\") দেয়ার " -"প্রয়োজন হয়, তবে মানগুলোর পূর্বে backslash দিন (যেমন '\\\\কখগ' বা 'অ\\'আ')। " +"প্রয়োজন হয়, তবে মানগুলোর পূর্বে backslash দিন (যেমন '\\\\কখগ' বা 'অ\\'আ')।" #: libraries/tbl_columns_definition_form.lib.php:291 msgid "" @@ -11849,7 +11851,7 @@ msgstr "প্রথম" #: libraries/tbl_columns_definition_form.lib.php:761 #, php-format msgid "after %s" -msgstr "%s এর পরে " +msgstr "%s এর পরে" #: libraries/tbl_columns_definition_form.lib.php:1049 msgid "ENUM or SET data too long?" @@ -12091,7 +12093,7 @@ msgstr "একটি পাতা তৈরী কর এবং উহাতে #: pmd_pdf.php:145 msgid "New page name: " -msgstr "নতুন পাতার নাম" +msgstr "নতুন পাতার নাম: " #: pmd_pdf.php:148 #, fuzzy @@ -12260,7 +12262,7 @@ msgstr "প্রক্রিয়া %s সফলভাবে ধ্বংস ক msgid "" "phpMyAdmin was unable to kill thread %s. It probably has already been closed." msgstr "" -"phpMyAdmin %s প্রক্রিয়াটি ধ্বংস করতে পারে নাই। সম্ভবত ইহা পূর্বেই বন্ধ করা হয়েছে। " +"phpMyAdmin %s প্রক্রিয়াটি ধ্বংস করতে পারে নাই। সম্ভবত ইহা পূর্বেই বন্ধ করা হয়েছে।" #: setup/frames/form.inc.php:25 msgid "Incorrect formset, check $formsets array in setup/frames/form.inc.php" @@ -12277,7 +12279,7 @@ msgid "" "level directory as described in [doc@setup_script]documentation[/doc]. " "Otherwise you will be only able to download or display it." msgstr "" -"ওয়েব সার্ভরে লেখার উপযুক্ত [em]config[/em] ফোল্ডার তৈরী করুন phpMyAdmin এর প্রধান " +"ওয়েব সার্ভরে লেখার উপযুক্ত [em]config[/em] ফোল্ডার তৈরী করুন phpMyAdmin এর প্রধান" #: setup/frames/index.inc.php:68 msgid "" @@ -12285,7 +12287,7 @@ msgid "" "sensitive information, like passwords) is transferred unencrypted!" msgstr "" "আপনি নিরাপদ সংযোগ ব্যবহার করছেন না; সমস্ত তথ্য (গুরুত্বপূর্ণ তথ্য, যেমন " -"পাসওয়ার্ড)আনএনক্রিপটেড স্থানান্তর করা হবে। " +"পাসওয়ার্ড)আনএনক্রিপটেড স্থানান্তর করা হবে।" #: setup/frames/index.inc.php:80 #, php-format @@ -12418,7 +12420,7 @@ msgid "" "version is %s, released on %s." msgstr "" "আপনি Git সংস্করন ব্যবহার করছেন,[kbd]git pull[/kbd] চালান :-)[br] সর্বশেষ সুস্থিত " -"সংস্করন হল %s, বেরিয়েছে %s। " +"সংস্করন হল %s, বেরিয়েছে %s।" #: setup/lib/index.lib.php:170 msgid "No newer stable version is available" @@ -12445,7 +12447,7 @@ msgid "" msgstr "" "আপনি গোপন blowfish সেট করেন নাই এবং কুকি প্রমাণীকরন কার্যকর করেছেন, তাই একটি কী " "আপনার জন্য স্বয়ংক্রীয় ভাবে তৈরী হয়েছে। এটা কুকি এনক্রীপট করতে ব্যবহৃত হয়। এটা মনে " -"রাখার প্রয়োজন নাই। " +"রাখার প্রয়োজন নাই।" #: setup/lib/index.lib.php:219 #, php-format @@ -12462,7 +12464,7 @@ msgid "" "world accessible nor readable or writable by other users on your server." msgstr "" "আপনাকে এটি ভালভাবে পরীক্ষা করতে হবে যেন ডিরেক্টরীটিকে সবাই ব্যবহার করতে না পারে " -"বা এতে যেন সার্ভারের অন্য ব্যবহারকারীরা লেখতে বা পড়তে না পারে। " +"বা এতে যেন সার্ভারের অন্য ব্যবহারকারীরা লেখতে বা পড়তে না পারে।" #: setup/lib/index.lib.php:222 #, php-format @@ -12488,7 +12490,7 @@ msgid "" "random session invalidation (currently session.gc_maxlifetime is %d)." msgstr "" "%sLogin cookie validity%s ১৪৪০ সেকেন্ডের বেশী হলে র‍্যান্ডম সেশন অকার্যকর হওয়ার " -"কারন হতে পারে যদি %ssession.gc_maxlifetime%s এর মান কম হয়। (বর্তমানে %d)। " +"কারন হতে পারে যদি %ssession.gc_maxlifetime%s এর মান কম হয়। (বর্তমানে %d)।" #: setup/lib/index.lib.php:228 #, php-format @@ -12629,7 +12631,7 @@ msgstr "চিত্রের নাম" #: tbl_chart.php:184 msgid "X-Axis:" -msgstr "X- অক্ষ" +msgstr "X- অক্ষ:" #: tbl_chart.php:200 msgid "Series:" @@ -12637,7 +12639,7 @@ msgstr "ধারা:" #: tbl_chart.php:229 msgid "X-Axis label:" -msgstr "X- অক্ষের মোড়ক" +msgstr "X- অক্ষের মোড়ক:" #: tbl_chart.php:232 msgid "X Values" @@ -12645,7 +12647,7 @@ msgstr "X এর মান" #: tbl_chart.php:234 msgid "Y-Axis label:" -msgstr "Y-অক্ষের মোড়ক" +msgstr "Y-অক্ষের মোড়ক:" #: tbl_chart.php:241 #, fuzzy @@ -12740,7 +12742,7 @@ msgstr "আভ্যন্তরীন রিলেশন" msgid "" "An internal relation is not necessary when a corresponding FOREIGN KEY " "relation exists." -msgstr "যখন ফরেন কী সর্ম্পক থাকে তখন অভ্যন্তরীন সর্ম্পকটি প্রয়োজনীয় নয়। " +msgstr "যখন ফরেন কী সর্ম্পক থাকে তখন অভ্যন্তরীন সর্ম্পকটি প্রয়োজনীয় নয়।" #: tbl_relation.php:413 msgid "Foreign key constraint" @@ -12777,7 +12779,7 @@ msgstr "%1$s সংস্করন তৈরী করা হয়েছে, %2$s #: tbl_tracking.php:223 #, php-format msgid "Tracking for %1$s was deactivated at version %2$s." -msgstr "%1$s ট্রেকিং অকার্যকর করা হয়েছে %2$s সংস্করনে। " +msgstr "%1$s ট্রেকিং অকার্যকর করা হয়েছে %2$s সংস্করনে।" #: tbl_tracking.php:240 #, php-format @@ -12874,7 +12876,7 @@ msgstr "সংস্করন দেখাও" #: tbl_tracking.php:818 #, php-format msgid "Deactivate tracking for %s" -msgstr "%s এর জন্য ট্রেকিং বন্ধ কর " +msgstr "%s এর জন্য ট্রেকিং বন্ধ কর" #: tbl_tracking.php:824 msgid "Deactivate now" @@ -12883,7 +12885,7 @@ msgstr "এখন বন্ধ কর" #: tbl_tracking.php:834 #, php-format msgid "Activate tracking for %s" -msgstr "%s জন্য ট্রেকিং চালু কর " +msgstr "%s জন্য ট্রেকিং চালু কর" #: tbl_tracking.php:840 msgid "Activate now" @@ -12896,11 +12898,11 @@ msgstr "%1$s এর %2$s সংস্করন তৈরী কর" #: tbl_tracking.php:861 msgid "Track these data definition statements:" -msgstr "তথ্যের সংজ্ঞার বিবরণীসমূহ ট্রেক কর" +msgstr "তথ্যের সংজ্ঞার বিবরণীসমূহ ট্রেক কর:" #: tbl_tracking.php:869 msgid "Track these data manipulation statements:" -msgstr "তথ্যের পরিবর্তন বিবরণীসমূহ ট্রেক কর" +msgstr "তথ্যের পরিবর্তন বিবরণীসমূহ ট্রেক কর:" #: tbl_tracking.php:879 msgid "Create version" @@ -12945,7 +12947,7 @@ msgstr "ভিউ এর নাম পরিবর্তন কর" #: libraries/advisory_rules.txt:49 msgid "Uptime below one day" -msgstr "এক দিনের চাইতে কম চালু আছে " +msgstr "এক দিনের চাইতে কম চালু আছে" #: libraries/advisory_rules.txt:52 msgid "Uptime is less than 1 day, performance tuning may not be accurate." @@ -13049,7 +13051,7 @@ msgstr "" #: libraries/advisory_rules.txt:82 #, php-format msgid "long_query_time is currently set to %ds." -msgstr "long_query_time %ds সেকেন্ডে নির্ধারন করা হয়েছে। " +msgstr "long_query_time %ds সেকেন্ডে নির্ধারন করা হয়েছে।" #: libraries/advisory_rules.txt:84 libraries/advisory_rules.txt:91 msgid "Slow query logging" @@ -13077,7 +13079,7 @@ msgid "" "help troubleshooting badly performing queries." msgstr "" "ধীর অনুসন্ধান লগ করার জন্য {slow_query_log} কে 'ON' নির্ধারন করুন। ইহা বাজে " -"কার্যকারিতার অনুসন্ধান পরীক্ষা করতে সাহয্য করবে। " +"কার্যকারিতার অনুসন্ধান পরীক্ষা করতে সাহয্য করবে।" #: libraries/advisory_rules.txt:96 msgid "slow_query_log is set to 'OFF'" @@ -13136,7 +13138,7 @@ msgstr "বন্টন" #: libraries/advisory_rules.txt:124 msgid "Version is compiled from source, not a MySQL official binary." -msgstr "সংস্করনটি মুল থেকে তৈরী করা, MySQL এর দাপ্তরিক বাইনারী নয়। " +msgstr "সংস্করনটি মুল থেকে তৈরী করা, MySQL এর দাপ্তরিক বাইনারী নয়।" #: libraries/advisory_rules.txt:125 msgid "" @@ -13171,7 +13173,7 @@ msgstr "ড্রিজলি সহায়িকা http://docs.drizzle.org/ ত #: libraries/advisory_rules.txt:140 #, php-format msgid "Version string (%s) matches Drizzle versioning scheme" -msgstr "সংস্করন স্ট্রিং (%s)ড্রীজলি সংস্করন গঠনের সংগে মিলেছে " +msgstr "সংস্করন স্ট্রিং (%s)ড্রীজলি সংস্করন গঠনের সংগে মিলেছে" #: libraries/advisory_rules.txt:142 msgid "MySQL Architecture" @@ -13217,7 +13219,7 @@ msgstr "" #: libraries/advisory_rules.txt:158 msgid "query_cache_size is set to 0 or query_cache_type is set to 'OFF'" -msgstr "query_cache_size ০ নির্ধারন করা হয়েছে বা query_cache_type বন্ধ আছে " +msgstr "query_cache_size ০ নির্ধারন করা হয়েছে বা query_cache_type বন্ধ আছে" #: libraries/advisory_rules.txt:160 msgid "Query caching method" @@ -13295,7 +13297,7 @@ msgstr "" #: libraries/advisory_rules.txt:181 msgid "Query cache fragmentation" -msgstr "অনুসন্ধান ক্যাশ ফ্রেগম্যানটেশন " +msgstr "অনুসন্ধান ক্যাশ ফ্রেগম্যানটেশন" #: libraries/advisory_rules.txt:184 #, fuzzy @@ -13333,7 +13335,7 @@ msgstr "ব্যবহৃত কুয়েরী ক্যাশে" msgid "" "Cached queries are removed due to low query cache memory from the query " "cache." -msgstr "ক্যাশের অনুসন্ধান মূছা হয়েছে অল্প ক্যাশ অনুসন্ধান ক্যাশ মেমরীর কারনে। " +msgstr "ক্যাশের অনুসন্ধান মূছা হয়েছে অল্প ক্যাশ অনুসন্ধান ক্যাশ মেমরীর কারনে।" #: libraries/advisory_rules.txt:192 msgid "" @@ -13457,7 +13459,7 @@ msgstr "" #: libraries/advisory_rules.txt:230 #, php-format msgid "Sorted rows average: %s" -msgstr "সর্টেড রো'র গড়:%s " +msgstr "সর্টেড রো'র গড়:%s" #: libraries/advisory_rules.txt:233 msgid "Rate of joins without indexes" @@ -13478,7 +13480,7 @@ msgstr "" #: libraries/advisory_rules.txt:238 #, php-format msgid "Table joins average: %s, this value should be less than 1 per hour" -msgstr "টেবল জোড়ার গড়:%s, এই মানটি প্রতি ঘন্টায় ১ এর কম হবে " +msgstr "টেবল জোড়ার গড়:%s, এই মানটি প্রতি ঘন্টায় ১ এর কম হবে" #: libraries/advisory_rules.txt:240 msgid "Rate of reading first index entry" @@ -13532,7 +13534,7 @@ msgstr "" msgid "" "Rate of reading fixed position average: %s, this value should be less than 1 " "per hour" -msgstr "স্থির অবস্থানের তথ্য পড়ার গড়:%s, প্রতি ঘন্টায় এটি ১ এর কম হবে " +msgstr "স্থির অবস্থানের তথ্য পড়ার গড়:%s, প্রতি ঘন্টায় এটি ১ এর কম হবে" #: libraries/advisory_rules.txt:254 msgid "Rate of reading next table row" @@ -13554,7 +13556,7 @@ msgstr "" #, php-format msgid "" "Rate of reading next table row: %s, this value should be less than 1 per hour" -msgstr "টেবলের পরবর্তী রো পড়ার হার: %s, এর মান প্রতি ঘন্টায় ১ এর কম হবে " +msgstr "টেবলের পরবর্তী রো পড়ার হার: %s, এর মান প্রতি ঘন্টায় ১ এর কম হবে" #: libraries/advisory_rules.txt:262 msgid "tmp_table_size vs. max_heap_table_size" @@ -13638,7 +13640,7 @@ msgstr "" msgid "" "Rate of temporary tables being written to disk: %s, this value should be " "less than 1 per hour" -msgstr "ডিস্কে লেখা সাময়িক টেবলের হার:%s, এই মানটি প্রতি ঘন্টায় ১ এর কম হবে " +msgstr "ডিস্কে লেখা সাময়িক টেবলের হার:%s, এই মানটি প্রতি ঘন্টায় ১ এর কম হবে" #: libraries/advisory_rules.txt:296 msgid "MyISAM key buffer size" @@ -13713,7 +13715,7 @@ msgstr "আপনার {key_buffer_size} বাড়াতে হবে।" #: libraries/advisory_rules.txt:323 #, php-format msgid "Index reads from memory: %s%%, this value should be above 95%%" -msgstr "মেমরী থেকে পড়া:%s%%, এই মানটি 95%% উপরে হবে " +msgstr "মেমরী থেকে পড়া:%s%%, এই মানটি 95%% উপরে হবে" #: libraries/advisory_rules.txt:327 msgid "Rate of table open" @@ -13721,7 +13723,7 @@ msgstr "টেবল খোলার হার" #: libraries/advisory_rules.txt:330 msgid "The rate of opening tables is high." -msgstr "টেবল খোলার হার অনেক বেশী। " +msgstr "টেবল খোলার হার অনেক বেশী।" #: libraries/advisory_rules.txt:331 msgid "" @@ -13748,7 +13750,7 @@ msgid "" "may get a \"Too many open files\" error." msgstr "" "খোলা ফাইলের সংখ্যা সর্বোচ্চ সংখ্যক খোলা ফাইলের কাছাকাছি। একটি \"Too many open " -"files\" ভুল আপনি দেখতে পারেন। " +"files\" ভুল আপনি দেখতে পারেন।" #: libraries/advisory_rules.txt:338 libraries/advisory_rules.txt:345 msgid "" @@ -13775,7 +13777,7 @@ msgstr "ফাইল খোলার হার বেশী।" #: libraries/advisory_rules.txt:346 #, php-format msgid "Opened files rate: %s, this value should be less than 5 per hour" -msgstr "ফাইল খোলার হার:%s, এর মান প্রতি ঘন্টায় ৫ এর কম হবে " +msgstr "ফাইল খোলার হার:%s, এর মান প্রতি ঘন্টায় ৫ এর কম হবে" #: libraries/advisory_rules.txt:348 #, php-format @@ -13788,7 +13790,7 @@ msgstr "অনেক টেবিল লক তাৎক্ষনিক পা #: libraries/advisory_rules.txt:352 libraries/advisory_rules.txt:359 msgid "Optimize queries and/or use InnoDB to reduce lock wait." -msgstr "লক অপেক্ষা কমাতে অনুসন্ধান অপটিমাইজ করুন এবং/অথবা InnoDB ব্যবহার করুন। " +msgstr "লক অপেক্ষা কমাতে অনুসন্ধান অপটিমাইজ করুন এবং/অথবা InnoDB ব্যবহার করুন।" #: libraries/advisory_rules.txt:353 #, php-format @@ -13802,7 +13804,7 @@ msgstr "টেবল লক অপেক্ষার হার" #: libraries/advisory_rules.txt:360 #, php-format msgid "Table lock wait rate: %s, this value should be less than 1 per hour" -msgstr "টেবল লক অপেক্ষার হার:%s, এর মান প্রতি ঘন্টায় ১ এর কম হবে " +msgstr "টেবল লক অপেক্ষার হার:%s, এর মান প্রতি ঘন্টায় ১ এর কম হবে" #: libraries/advisory_rules.txt:362 msgid "Thread cache" @@ -13812,7 +13814,7 @@ msgstr "থ্র্যাড ক্যাশ" msgid "" "Thread cache is disabled, resulting in more overhead from new connections to " "MySQL." -msgstr "থ্রেড ক্যাশ অকার্যকর আছে, MySQL এ নতুন সংযোগ অতিরিক্ত বোঝার কারন হতে পারে। " +msgstr "থ্রেড ক্যাশ অকার্যকর আছে, MySQL এ নতুন সংযোগ অতিরিক্ত বোঝার কারন হতে পারে।" #: libraries/advisory_rules.txt:366 msgid "Enable the thread cache by setting {thread_cache_size} > 0." @@ -13825,7 +13827,7 @@ msgstr "থ্রেড ক্যাশ ০ নির্ধারন করা #: libraries/advisory_rules.txt:369 #, php-format msgid "Thread cache hit rate %%" -msgstr "থ্রেড ক্যাশ হিটের হার %% " +msgstr "থ্রেড ক্যাশ হিটের হার %%" #: libraries/advisory_rules.txt:372 msgid "Thread cache is not efficient." @@ -13874,7 +13876,7 @@ msgid "" "Set {slow_launch_time} to 1s or 2s to correctly count threads that are slow " "to launch" msgstr "" -"ধীরে আরম্ভ হওয়া থ্রেডগুলো গণনার জন্য{slow_launch_time}1s বা 2s এ নির্ধারন করুন " +"ধীরে আরম্ভ হওয়া থ্রেডগুলো গণনার জন্য{slow_launch_time}1s বা 2s এ নির্ধারন করুন" #: libraries/advisory_rules.txt:388 #, php-format @@ -14019,7 +14021,7 @@ msgstr "" "InnoDB লগ ফাইলগুলো মুছে, my.cnf নতুন মান নির্ধারন করে সার্ভারটি আরম্ভ করুন, ভুলের লগ " "পরীক্ষা করে দেখুন সব ঠিক আছে কিনা। this blog entry দেখতে পারেন। " +"proper-way.html\">this blog entry দেখতে পারেন।" #: libraries/advisory_rules.txt:441 #, php-format @@ -14056,7 +14058,7 @@ msgstr "" "উদ্ধারের কাজকে লক্ষনীয়ভাবে ধীর করে দেয়, নতুন মানটি my.cnf এ সেট করুন, সার্ভারটি " "আরম্ভ করুন, তারপর error logs পরীক্ষাকরে দেখুন সব কিছু ঠিক আছে কিনা। এটিও this blog entry দেখতে পারেন। " +"innodblogfilesize-proper-way.html\">this blog entry দেখতে পারেন।" #: libraries/advisory_rules.txt:448 #, php-format @@ -14135,7 +14137,7 @@ msgstr "concurrent_insert এর জন্য ০ নির্ধারন ক #~ msgid "" #~ "Neither URL wrapper nor CURL is available. Version check is not possible." -#~ msgstr "URL wrapper বা CURL পাওয়া যায়নি। সংস্করন পরীক্ষা সম্ভব নয়। " +#~ msgstr "URL wrapper বা CURL পাওয়া যায়নি। সংস্করন পরীক্ষা সম্ভব নয়।" #, fuzzy #~| msgid "Find:" @@ -14344,7 +14346,7 @@ msgstr "concurrent_insert এর জন্য ০ নির্ধারন ক #~ msgstr "একটি মান যোগ করুন" #~ msgid "Copy and paste the joined values into the \"Length/Values\" field" -#~ msgstr "দৈর্ঘ্য/মূল্যবোধ ফিল্ডে যুক্ত মান কপি এবং পেস্ট করুন " +#~ msgstr "দৈর্ঘ্য/মূল্যবোধ ফিল্ডে যুক্ত মান কপি এবং পেস্ট করুন" #, fuzzy #~ msgctxt "Correctly setup" @@ -14522,7 +14524,7 @@ msgstr "concurrent_insert এর জন্য ০ নির্ধারন ক #~ msgid "" #~ "The result of this query can't be used for a chart. See [doc@faq6-29]FAQ " #~ "6.29[/doc]" -#~ msgstr "হয়ত আনুমানিক। FAQ ৩.১১ দেখ। " +#~ msgstr "হয়ত আনুমানিক। FAQ ৩.১১ দেখ।" #~ msgid "Add a New User" #~ msgstr "একটি নতুন ইউজার যোগ করুন" diff --git a/po/fr.po b/po/fr.po index cfa415a0a2..55fa9a2461 100644 --- a/po/fr.po +++ b/po/fr.po @@ -4,10 +4,9 @@ msgstr "" "Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-08-01 14:19+0200\n" -"Last-Translator: Michal Čihař \n" -"Language-Team: French \n" +"PO-Revision-Date: 2013-08-12 14:40+0200\n" +"Last-Translator: Marc Delisle \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -914,7 +913,7 @@ msgstr "La commande «DROP DATABASE» est désactivée." #: js/messages.php:35 msgid "Confirm" -msgstr "" +msgstr "Confirmer" #: js/messages.php:36 #, php-format @@ -946,10 +945,10 @@ msgid "This operation could take a long time. Proceed anyway?" msgstr "Cette opération pourrait être longue. Procéder quand même ?" #: js/messages.php:44 -#, fuzzy, php-format +#, php-format #| msgid "Do you really want to execute \"%s\"?" msgid "Do you really want to delete user group \"%s\"?" -msgstr "Voulez-vous vraiment exécuter «%s» ?" +msgstr "Voulez-vous vraiment supprimer le groupe «%s» ?" #: js/messages.php:47 msgid "Missing value in the form!" @@ -6971,7 +6970,6 @@ msgid "%s of %s" msgstr "%s sur %s" #: libraries/display_import.lib.php:454 -#, fuzzy #| msgid "Uploading your import file..." msgid "Uploading your import file…" msgstr "Téléversement du fichier d'importation en cours …" @@ -10375,19 +10373,16 @@ msgid "User groups" msgstr "Groupes d'utilisateurs" #: libraries/server_privileges.lib.php:3268 -#, fuzzy #| msgid "Server-level tabs" msgid "Server level tabs" msgstr "Onglets de niveau serveur" #: libraries/server_privileges.lib.php:3269 -#, fuzzy #| msgid "Database-level tabs" msgid "Database level tabs" msgstr "Onglets de niveau base de données" #: libraries/server_privileges.lib.php:3270 -#, fuzzy #| msgid "Table-level tabs" msgid "Table level tabs" msgstr "Onglets de niveau table" @@ -12625,7 +12620,7 @@ msgstr "" "disponibles sur ce serveur." #: setup/lib/index.lib.php:226 -#, fuzzy, php-format +#, php-format #| msgid "" #| "%sLogin cookie validity%s greater than 1440 seconds may cause random " #| "session invalidation if %ssession.gc_maxlifetime%s is lower than its " @@ -12634,10 +12629,9 @@ msgid "" "%sLogin cookie validity%s greater than %ssession.gc_maxlifetime%s may cause " "random session invalidation (currently session.gc_maxlifetime is %d)." msgstr "" -"Le paramètre %sLogin cookie validity%s avec une valeur de plus de 1440 " -"secondes peut causer des interruptions de la session de travail si le " -"paramètre %ssession.gc_maxlifetime%s a une plus petite valeur (actuellement " -"%d)." +"Le paramètre %sLogin cookie validity%s avec une valeur plus grande que celle " +"de %ssession.gc_maxlifetime%s peut causer des interruptions de la session " +"de travail (la valeur courante de session.gc_maxlifetime est de %d)." #: setup/lib/index.lib.php:228 #, php-format diff --git a/po/hu.po b/po/hu.po index ce3b19a33e..71f97240f4 100644 --- a/po/hu.po +++ b/po/hu.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.1-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-07-30 14:37+0200\n" +"PO-Revision-Date: 2013-08-15 08:50+0200\n" "Last-Translator: G. S. \n" -"Language-Team: Hungarian \n" +"Language-Team: Hungarian " +"\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 1.6\n" +"X-Generator: Weblate 1.7-dev\n" #: browse_foreigners.php:50 browse_foreigners.php:70 js/messages.php:348 #: libraries/DisplayResults.class.php:805 @@ -693,10 +693,9 @@ msgid "Back" msgstr "Vissza" #: index.php:115 libraries/Footer.class.php:72 -#, fuzzy #| msgid "phpMyAdmin homepage" msgid "phpMyAdmin Demo Server" -msgstr "phpMyAdmin honlap" +msgstr "phpMyAdmin Demo Server" #: index.php:119 #, php-format @@ -705,6 +704,8 @@ msgid "" "change root, debian-sys-maint and pma users. More information is available " "at %s." msgstr "" +"Ön demo szervert használ. Bármit szerkeszthet, de kérjük, ne változtasson " +"root, debian-sys-maint és pma felhasználók értékein. További információ: %s." #: index.php:129 msgid "General Settings" @@ -910,7 +911,7 @@ msgstr "A \"DROP DATABASE\" utasítást letiltották." #: js/messages.php:35 msgid "Confirm" -msgstr "" +msgstr "Megerősítés" #: js/messages.php:36 #, php-format @@ -942,10 +943,10 @@ msgid "This operation could take a long time. Proceed anyway?" msgstr "Ez a művelet sokáig eltarthat. Mindenképp folytatja?" #: js/messages.php:44 -#, fuzzy, php-format +#, php-format #| msgid "Do you really want to execute \"%s\"?" msgid "Do you really want to delete user group \"%s\"?" -msgstr "Valóban végre szeretné hajtani: „%s”?" +msgstr "Valóban törölni szeretné a következő felhasználói csoportot: \"%s\"?" #: js/messages.php:47 msgid "Missing value in the form!" @@ -2828,13 +2829,12 @@ msgstr "A feltöltött fájl nem olvasható." #: libraries/Footer.class.php:76 #, php-format msgid "Currently running Git revision %1$s from the %2$s branch." -msgstr "" +msgstr "Jelenleg futtatott Git revízió %1$s a %2$s branchból." #: libraries/Footer.class.php:83 -#, fuzzy #| msgid "Version information" msgid "Git information missing!" -msgstr "Verziószám" +msgstr "Git információ hiányzik!" #: libraries/Footer.class.php:163 libraries/Footer.class.php:167 #: libraries/Footer.class.php:170 @@ -4712,10 +4712,9 @@ msgstr "Az idegen kulcsok ellenőrzésének letiltása" #: libraries/config/messages.inc.php:126 #: libraries/plugins/export/ExportSql.class.php:154 -#, fuzzy #| msgid "Exporting rows from \"%s\" table" msgid "Export views as tables" -msgstr "Sorok exportálása a \"%s\" táblából" +msgstr "Nézetek exportálása táblaként" #: libraries/config/messages.inc.php:127 libraries/config/messages.inc.php:128 #: libraries/config/messages.inc.php:130 libraries/config/messages.inc.php:136 @@ -6148,7 +6147,6 @@ msgid "User groups table" msgstr "Felhasználói csoport tábla" #: libraries/config/messages.inc.php:460 -#, fuzzy #| msgid "" #| "Leave blank for no user preferences storage in database, suggested: " #| "[kbd]pma__userconfig[/kbd]" @@ -6156,12 +6154,12 @@ msgid "" "Leave blank to disable the feature to hide and show navigation items, " "suggested: [kbd]pma__navigationhiding[/kbd]" msgstr "" -"Hagyja üresen, ha nincs szükség a felhasználói beállítások tárolására az " -"adatbázisban, ajánlott: [kbd]pma_history[/kbd]" +"Hagyja üresen, ha nincs szükség a navigációs elemek mutatása/elrejtése " +"opcióra, ajánlott: [kbd]pma__navigationhiding[/kbd]" #: libraries/config/messages.inc.php:461 msgid "Hidden navigation items table" -msgstr "" +msgstr "Rejtett navigációs elemek tábla" #: libraries/config/messages.inc.php:463 msgid "User for config auth" @@ -6959,7 +6957,6 @@ msgid "%s of %s" msgstr "%s %s-ból/ből" #: libraries/display_import.lib.php:454 -#, fuzzy #| msgid "Uploading your import file…" msgid "Uploading your import file…" msgstr "Az importfájl feltöltése…" @@ -7733,34 +7730,29 @@ msgid "An error has occured while loading the navigation tree" msgstr "Hiba történt a navigációs faszerkezet megnyitása során" #: libraries/navigation/Navigation.class.php:172 -#, fuzzy #| msgid "Events" msgid "Events:" -msgstr "Események" +msgstr "Események:" #: libraries/navigation/Navigation.class.php:173 -#, fuzzy #| msgid "Functions" msgid "Functions:" -msgstr "Függvények" +msgstr "Függvények:" #: libraries/navigation/Navigation.class.php:174 -#, fuzzy #| msgid "Procedures" msgid "Procedures:" -msgstr "Eljárások" +msgstr "Eljárások:" #: libraries/navigation/Navigation.class.php:175 -#, fuzzy #| msgid "Tables" msgid "Tables:" -msgstr "Tábla" +msgstr "Tábla:" #: libraries/navigation/Navigation.class.php:176 -#, fuzzy #| msgid "Views" msgid "Views:" -msgstr "Nézetek" +msgstr "Nézetek:" #: libraries/navigation/NavigationHeader.class.php:183 msgid "Home" @@ -8508,10 +8500,10 @@ msgid "RELATIONS FOR TABLE" msgstr "TÁBLA KAPCSOLATAI" #: libraries/plugins/export/ExportSql.class.php:1512 -#, fuzzy, php-format +#, php-format #| msgid "Structure for view" msgid "Structure for view %s exported as a table" -msgstr "Nézet szerkezete" +msgstr "%s nézet struktúrája táblaként exportálva" #: libraries/plugins/export/ExportSql.class.php:1600 msgid "Error reading data:" @@ -8867,16 +8859,14 @@ msgid "User preferences" msgstr "Felhasználói beállítások" #: libraries/relation.lib.php:264 -#, fuzzy #| msgid "Configuration: %s" msgid "Configurable menus" -msgstr "Beállítás: %s" +msgstr "Beállítható menü" #: libraries/relation.lib.php:275 -#, fuzzy #| msgid "Reload navigation frame" msgid "Hide/show navigation items" -msgstr "A navigációs keret újratöltése" +msgstr "Navigációs elemek mutatása/elrejtése" #: libraries/relation.lib.php:281 msgid "Quick steps to setup advanced features:" @@ -10045,7 +10035,7 @@ msgstr "Nincs" #: libraries/server_privileges.lib.php:2552 #: libraries/server_privileges.lib.php:3267 msgid "User group" -msgstr "" +msgstr "Felhasználói csoport" #: libraries/server_privileges.lib.php:618 msgid "Resource limits" @@ -10279,10 +10269,9 @@ msgid "Add privileges on the following table:" msgstr "Jogok hozzáadása a következő táblán:" #: libraries/server_privileges.lib.php:2690 -#, fuzzy #| msgid "Edit server" msgid "Edit user group" -msgstr "Szerver módosítása" +msgstr "Felhasználói csoport szerkesztése" #: libraries/server_privileges.lib.php:2727 msgid "Remove selected users" @@ -10345,84 +10334,73 @@ msgstr "" #: libraries/server_privileges.lib.php:3212 #, php-format msgid "Users of '%s' user group" -msgstr "" +msgstr "A '%s' felhasználói csoport felhasználói" #: libraries/server_privileges.lib.php:3223 msgid "No users were found belonging to this user group." -msgstr "" +msgstr "Nem található ehhez a felhasználói csoporthoz tartozó felhasználó." #: libraries/server_privileges.lib.php:3254 #: libraries/server_privileges.lib.php:3923 -#, fuzzy #| msgid "Users" msgid "User groups" -msgstr "Felhasználók" +msgstr "Felhasználói csoportok" #: libraries/server_privileges.lib.php:3268 -#, fuzzy #| msgid "Server version" msgid "Server level tabs" -msgstr "Szerver verzió" +msgstr "Szerver level fülek" #: libraries/server_privileges.lib.php:3269 -#, fuzzy #| msgid "Database server" msgid "Database level tabs" -msgstr "Adatbázis-kiszolgáló" +msgstr "Adatbázis level fülek" #: libraries/server_privileges.lib.php:3270 -#, fuzzy #| msgid "Table comments" msgid "Table level tabs" -msgstr "Tábla megjegyzése" +msgstr "Tábla level fülek" #: libraries/server_privileges.lib.php:3291 -#, fuzzy #| msgid "Views" msgid "View users" -msgstr "Nézetek" +msgstr "Felhasználók mutatása" #: libraries/server_privileges.lib.php:3328 #: libraries/server_privileges.lib.php:3389 -#, fuzzy #| msgid "Add user" msgid "Add user group" -msgstr "Felhasználó hozzáadása" +msgstr "Felhasználói csoport hozzáadása" #: libraries/server_privileges.lib.php:3392 #, php-format msgid "Edit user group: '%s'" -msgstr "" +msgstr "'%s' Felhasználói csoport szerkesztése" #: libraries/server_privileges.lib.php:3408 -#, fuzzy #| msgid "No privileges." msgid "User group menu assignments" -msgstr "Nincsenek jogok." +msgstr "Felhasználói csoport menü hozzárendelések" #: libraries/server_privileges.lib.php:3415 -#, fuzzy #| msgid "Column names: " msgid "Group name:" -msgstr "Oszlopnevek: " +msgstr "Csoport neve:" #: libraries/server_privileges.lib.php:3447 -#, fuzzy #| msgid "Server version" msgid "Server-level tabs" -msgstr "Szerver verzió" +msgstr "Szerver level fülek" #: libraries/server_privileges.lib.php:3450 -#, fuzzy #| msgid "Database server" msgid "Database-level tabs" -msgstr "Adatbázis-kiszolgáló" +msgstr "Adatbázis level fülek" #: libraries/server_privileges.lib.php:3453 -#, fuzzy #| msgid "Table comments" msgid "Table-level tabs" -msgstr "Tábla megjegyzése" +msgstr "Tábla level fülek" #: libraries/server_privileges.lib.php:3564 msgid "The selected user was not found in the privilege table." @@ -12624,7 +12602,7 @@ msgstr "" "szükség, amelyek ezen a rendszeren nem elérhetőek." #: setup/lib/index.lib.php:226 -#, fuzzy, php-format +#, php-format #| msgid "" #| "%sLogin cookie validity%s greater than 1440 seconds may cause random " #| "session invalidation if %ssession.gc_maxlifetime%s is lower than its " @@ -12633,9 +12611,9 @@ msgid "" "%sLogin cookie validity%s greater than %ssession.gc_maxlifetime%s may cause " "random session invalidation (currently session.gc_maxlifetime is %d)." msgstr "" -"Az 1440 másodpercnél magasabb %sLogin cookie validity%s véletlenszerű " -"munkamenet érvénytelenítést okozhat, ha %ssession.gc_maxlifetime%s " -"alacsonyabb, mint az érték (jelenleg: %d)." +"A %sLogin cookie validity%s, amely nagyobb, mint a %ssession.gc_maxlifetime%" +"s, véletlenszerű munkamenet érvénytelenítést okozhat (a " +"session.gc_maxlifetime értéke jelenleg: %d)." #: setup/lib/index.lib.php:228 #, php-format diff --git a/po/ko.po b/po/ko.po index 3d7db8ecac..2062b77f23 100644 --- a/po/ko.po +++ b/po/ko.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.1-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-08-11 13:46+0200\n" -"Last-Translator: Michal Čihař \n" +"PO-Revision-Date: 2013-08-14 05:01+0200\n" +"Last-Translator: 성현 양 \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" @@ -3385,7 +3385,6 @@ msgid "No preview available." msgstr "미리보기가 불가능합니다." #: libraries/Theme.class.php:404 -#, fuzzy msgid "take it" msgstr "사용하기" @@ -3453,12 +3452,15 @@ msgid "" "A fixed-point number (M, D) - the maximum number of digits (M) is 65 " "(default 10), the maximum number of decimals (D) is 30 (default 0)" msgstr "" +"고정소수점 숫자 (M, D) - 최대 자릿수(M)는 65이며 (기본값 10), 최대 소수점 자릿수(D)는 30입니다 (기본값 0)" #: libraries/Types.class.php:309 msgid "" "A small floating-point number, allowable values are -3.402823466E+38 to " "-1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38" msgstr "" +"작은 부동소수점 숫자, 허용 가능한 값은 -3.402823466E+38 에서 -1.175494351E-38 까지, 0, 그리고 " +"1.175494351E-38 에서 3.402823466E+38 까지입니다" #: libraries/Types.class.php:311 msgid "" @@ -3466,6 +3468,9 @@ msgid "" "-1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and " "2.2250738585072014E-308 to 1.7976931348623157E+308" msgstr "" +"배정밀도 부동소수점 숫자, 허용 가능한 값은 -1.7976931348623157E+308 에서 " +"-2.2250738585072014E-308 까지, 0, 그리고 2.2250738585072014E-308 에서 " +"1.7976931348623157E+308 까지입니다" #: libraries/Types.class.php:313 msgid "" @@ -3618,11 +3623,11 @@ msgstr "" msgid "" "An enumeration, chosen from the list of up to 65,535 values or the special " "'' error value" -msgstr "" +msgstr "열거형, 최대 65,535개의 지정된 값 또는 특수 오류 값 ('') 중에서 선택될 수 있음" #: libraries/Types.class.php:357 msgid "A single value chosen from a set of up to 64 members" -msgstr "" +msgstr "최대 64개의 맴버 집합으로부터 선택되는 단일 값" #: libraries/Types.class.php:359 msgid "A type that can store a geometry of any type" @@ -4136,7 +4141,7 @@ msgstr "사용불가" #: libraries/config/FormDisplay.class.php:772 #, php-format msgid "\"%s\" requires %s extension" -msgstr "%s 확장을 위해 \"%s\" 가 필요합니다." +msgstr "\"%s\"(은)는 확장기능 %s 이 필요합니다" #: libraries/config/FormDisplay.class.php:791 #, fuzzy, php-format @@ -4152,7 +4157,7 @@ msgstr "(%s) 기능이 누락되어 내보낼 수 없습니다." #: libraries/config/FormDisplay.class.php:807 msgid "SQL Validator is disabled" -msgstr "SQL 유효화검증기가 비활성화되어 있습니다" +msgstr "SQL 검증기능이 비활성화됨" #: libraries/config/FormDisplay.class.php:814 msgid "SOAP extension not found" @@ -4256,7 +4261,6 @@ msgstr "" "점[/strong]을 허용할 가능성을 가집니다." #: libraries/config/messages.inc.php:20 -#, fuzzy msgid "Allow third party framing" msgstr "서드파티 프레이밍 허용" @@ -4724,7 +4728,7 @@ msgstr "외래키 드롭다운 순서(정렬)" #: libraries/config/messages.inc.php:153 msgid "A dropdown will be used if fewer items are present" -msgstr "" +msgstr "이보다 적은 항목의 경우 드롭다운이 사용됩니다" #: libraries/config/messages.inc.php:154 msgid "Foreign key limit" @@ -4848,7 +4852,7 @@ msgstr "기타 핵심기능 설정" #: libraries/config/messages.inc.php:192 msgid "Settings that didn't fit anywhere else" -msgstr "" +msgstr "어디에도 해당되지 않는 설정" #: libraries/config/messages.inc.php:193 msgid "Page titles" @@ -5052,7 +5056,7 @@ msgstr "iconv 확장 파라미터" msgid "" "If enabled, phpMyAdmin continues computing multiple-statement queries even " "if one of the queries failed" -msgstr "" +msgstr "활성화 할 경우, phpMyAdmin은 다중 쿼리 실행 중 하나가 실패하더라도 실행을 계속합니다" #: libraries/config/messages.inc.php:241 msgid "Ignore multiple statement errors" diff --git a/po/nl.po b/po/nl.po index 786939300b..11f86f1f47 100644 --- a/po/nl.po +++ b/po/nl.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.1-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-08-05 10:50+0200\n" +"PO-Revision-Date: 2013-08-15 14:57+0200\n" "Last-Translator: Dieter Adriaenssens \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -945,10 +945,10 @@ msgid "This operation could take a long time. Proceed anyway?" msgstr "Deze bewerking kan lang duren. Toch voortgaan?" #: js/messages.php:44 -#, fuzzy, php-format +#, php-format #| msgid "Do you really want to execute \"%s\"?" msgid "Do you really want to delete user group \"%s\"?" -msgstr "Weet u zeker dat u de query \"%s\" wil uitvoeren?" +msgstr "Weet u zeker dat u gebruikersgroep \"%s\" wil verwijderen?" #: js/messages.php:47 msgid "Missing value in the form!" @@ -6172,7 +6172,6 @@ msgid "User groups table" msgstr "Gebruikersgroepentabel" #: libraries/config/messages.inc.php:460 -#, fuzzy #| msgid "" #| "Leave blank for no user preferences storage in database, suggested: " #| "[kbd]pma__userconfig[/kbd]" @@ -6180,8 +6179,8 @@ msgid "" "Leave blank to disable the feature to hide and show navigation items, " "suggested: [kbd]pma__navigationhiding[/kbd]" msgstr "" -"Laat dit veld leeg om geen gebruikersvoorkeuren op te slaan in de databank, " -"suggestie: [kbd]pma__userconfig[/kbd]" +"Laat dit veld leeg om de optie, die navigatieonderdelen kan verbergen of te " +"tonen, uit te schakelen, suggestie: [kbd]pma__navigationhiding[/kbd]" #: libraries/config/messages.inc.php:461 msgid "Hidden navigation items table" @@ -10389,19 +10388,16 @@ msgid "User groups" msgstr "Gebruikersgroepen" #: libraries/server_privileges.lib.php:3268 -#, fuzzy #| msgid "Server-level tabs" msgid "Server level tabs" msgstr "Tabs op serverniveau" #: libraries/server_privileges.lib.php:3269 -#, fuzzy #| msgid "Database-level tabs" msgid "Database level tabs" msgstr "Tabs op databankniveau" #: libraries/server_privileges.lib.php:3270 -#, fuzzy #| msgid "Table-level tabs" msgid "Table level tabs" msgstr "Tabs op tabelniveau" @@ -12660,7 +12656,7 @@ msgstr "" "beschikbaar zijn op dit systeem." #: setup/lib/index.lib.php:226 -#, fuzzy, php-format +#, php-format #| msgid "" #| "%sLogin cookie validity%s greater than 1440 seconds may cause random " #| "session invalidation if %ssession.gc_maxlifetime%s is lower than its " @@ -12669,9 +12665,9 @@ msgid "" "%sLogin cookie validity%s greater than %ssession.gc_maxlifetime%s may cause " "random session invalidation (currently session.gc_maxlifetime is %d)." msgstr "" -"%sAanmeldingscookiegeldigheid%s groter dan 1440 seconden kan willekeurige " -"sessieproblemen veroorzaken als %ssession.gc_maxlifetime%s lager is dan deze " -"waarde (huidige waarde: %d)." +"%sAanmeldingscookiegeldigheid%s groter dan %ssession.gc_maxlifetime%s kan " +"willekeurige sessieproblemen veroorzaken (huidige waarde van " +"session.gc_maxlifetime is %d)." #: setup/lib/index.lib.php:228 #, php-format diff --git a/po/pt_BR.po b/po/pt_BR.po index 664359a263..38a989488b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.1-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2013-08-11 13:17+0200\n" -"PO-Revision-Date: 2013-08-11 17:50+0200\n" -"Last-Translator: Mauricio Bastos \n" +"PO-Revision-Date: 2013-08-14 16:57+0200\n" +"Last-Translator: Stephan Souza \n" "Language-Team: Portuguese (Brazil) " "\n" "Language: pt_BR\n" @@ -691,10 +691,9 @@ msgid "Back" msgstr "Voltar" #: index.php:115 libraries/Footer.class.php:72 -#, fuzzy #| msgid "phpMyAdmin homepage" msgid "phpMyAdmin Demo Server" -msgstr "Página inicial do phpMyAdmin" +msgstr "Servidor de Demonstração do phpMyAdmin" #: index.php:119 #, php-format @@ -909,7 +908,7 @@ msgstr "O comando \"DROP DATABASE\" está desabilitado." #: js/messages.php:35 msgid "Confirm" -msgstr "" +msgstr "Confirmar" #: js/messages.php:36 #, php-format @@ -941,10 +940,10 @@ msgid "This operation could take a long time. Proceed anyway?" msgstr "Esta operação pode ser demorada. Deseja prosseguir?" #: js/messages.php:44 -#, fuzzy, php-format +#, php-format #| msgid "Do you really want to execute \"%s\"?" msgid "Do you really want to delete user group \"%s\"?" -msgstr "Você realmente deseja executar \"%s\"?" +msgstr "Você realmente deseja remover o grupo \"%s\"?" #: js/messages.php:47 msgid "Missing value in the form!" @@ -2842,13 +2841,12 @@ msgstr "Não pode ler (mover) arquivo carregado." #: libraries/Footer.class.php:76 #, php-format msgid "Currently running Git revision %1$s from the %2$s branch." -msgstr "" +msgstr "Atualmente rodando a revisão Git %1$s da branch %2$s." #: libraries/Footer.class.php:83 -#, fuzzy #| msgid "Version information" msgid "Git information missing!" -msgstr "Informações da versão" +msgstr "Faltando informações do Git!" #: libraries/Footer.class.php:163 libraries/Footer.class.php:167 #: libraries/Footer.class.php:170 @@ -4736,10 +4734,9 @@ msgstr "Desabilitar verificação de chaves estrangeiras" #: libraries/config/messages.inc.php:126 #: libraries/plugins/export/ExportSql.class.php:154 -#, fuzzy #| msgid "Exporting rows from \"%s\" table" msgid "Export views as tables" -msgstr "Exportando as linhas da tabela \"%s\"" +msgstr "Exportando views como tabelas" #: libraries/config/messages.inc.php:127 libraries/config/messages.inc.php:128 #: libraries/config/messages.inc.php:130 libraries/config/messages.inc.php:136 @@ -6170,7 +6167,6 @@ msgstr "" "banco de dados, sugestão: [kbd]pma__userconfig[/kbd]" #: libraries/config/messages.inc.php:459 -#, fuzzy #| msgid "Use Host Table" msgid "User groups table" msgstr "Tabela de grupos de usuário" @@ -6986,7 +6982,6 @@ msgid "%s of %s" msgstr "%s de %s" #: libraries/display_import.lib.php:454 -#, fuzzy #| msgid "Uploading your import file…" msgid "Uploading your import file…" msgstr "Subindo seu arquivo de importação…" @@ -7761,34 +7756,29 @@ msgid "An error has occured while loading the navigation tree" msgstr "Um erro ocorreu enquanto carregava a árvore de navegação" #: libraries/navigation/Navigation.class.php:172 -#, fuzzy #| msgid "Events" msgid "Events:" -msgstr "Eventos" +msgstr "Eventos:" #: libraries/navigation/Navigation.class.php:173 -#, fuzzy #| msgid "Functions" msgid "Functions:" -msgstr "Funções" +msgstr "Funções:" #: libraries/navigation/Navigation.class.php:174 -#, fuzzy #| msgid "Procedures" msgid "Procedures:" -msgstr "Procedimentos" +msgstr "Procedimentos:" #: libraries/navigation/Navigation.class.php:175 -#, fuzzy #| msgid "Tables" msgid "Tables:" -msgstr "Tabelas" +msgstr "Tabelas:" #: libraries/navigation/Navigation.class.php:176 -#, fuzzy #| msgid "Views" msgid "Views:" -msgstr "Views" +msgstr "Views:" #: libraries/navigation/NavigationHeader.class.php:183 msgid "Home" @@ -8540,10 +8530,10 @@ msgid "RELATIONS FOR TABLE" msgstr "RELACIONAMENTOS PARA TABELAS" #: libraries/plugins/export/ExportSql.class.php:1512 -#, fuzzy, php-format +#, php-format #| msgid "Structure for view" msgid "Structure for view %s exported as a table" -msgstr "Estrutura para view" +msgstr "Estrutura da view %s exportado como tabela" #: libraries/plugins/export/ExportSql.class.php:1600 msgid "Error reading data:" @@ -8895,16 +8885,14 @@ msgid "User preferences" msgstr "Preferências do usuário" #: libraries/relation.lib.php:264 -#, fuzzy #| msgid "Configuration: %s" msgid "Configurable menus" -msgstr "Configuração: %s" +msgstr "Menus Configuráveis" #: libraries/relation.lib.php:275 -#, fuzzy #| msgid "Reload navigation frame" msgid "Hide/show navigation items" -msgstr "Recarregar frame de navegação" +msgstr "Exibir/ocultar itens de navegação" #: libraries/relation.lib.php:281 msgid "Quick steps to setup advanced features:" @@ -10068,7 +10056,7 @@ msgstr "Nenhum privilégio" #: libraries/server_privileges.lib.php:2552 #: libraries/server_privileges.lib.php:3267 msgid "User group" -msgstr "" +msgstr "Grupo de usuários" #: libraries/server_privileges.lib.php:618 msgid "Resource limits" @@ -10301,10 +10289,9 @@ msgid "Add privileges on the following table:" msgstr "Adicionar privilégios na seguinte tabela:" #: libraries/server_privileges.lib.php:2690 -#, fuzzy #| msgid "Edit server" msgid "Edit user group" -msgstr "Editar servidor" +msgstr "Editar grupo de usuários" #: libraries/server_privileges.lib.php:2727 msgid "Remove selected users" @@ -10367,7 +10354,7 @@ msgstr "" #: libraries/server_privileges.lib.php:3212 #, php-format msgid "Users of '%s' user group" -msgstr "" +msgstr "Usuários do grupo '%s'" #: libraries/server_privileges.lib.php:3223 msgid "No users were found belonging to this user group." diff --git a/tbl_structure.php b/tbl_structure.php index 1f18dedaa0..3147ff8cd4 100644 --- a/tbl_structure.php +++ b/tbl_structure.php @@ -64,30 +64,8 @@ if (isset($_REQUEST['do_save_data'])) { * * submit_mult_*_x comes from IE if is used */ -if (isset($_REQUEST['submit_mult_change_x'])) { - $submit_mult = 'change'; -} elseif (isset($_REQUEST['submit_mult_drop_x'])) { - $submit_mult = 'drop'; -} elseif (isset($_REQUEST['submit_mult_primary_x'])) { - $submit_mult = 'primary'; -} elseif (isset($_REQUEST['submit_mult_index_x'])) { - $submit_mult = 'index'; -} elseif (isset($_REQUEST['submit_mult_unique_x'])) { - $submit_mult = 'unique'; -} elseif (isset($_REQUEST['submit_mult_spatial_x'])) { - $submit_mult = 'spatial'; -} elseif (isset($_REQUEST['submit_mult_fulltext_x'])) { - $submit_mult = 'ftext'; -} elseif (isset($_REQUEST['submit_mult_browse_x'])) { - $submit_mult = 'browse'; -} elseif (isset($_REQUEST['submit_mult'])) { - $submit_mult = $_REQUEST['submit_mult']; -} elseif (isset($_REQUEST['mult_btn']) && $_REQUEST['mult_btn'] == __('Yes')) { - $submit_mult = 'row_delete'; - if (isset($_REQUEST['selected'])) { - $_REQUEST['selected_fld'] = $_REQUEST['selected']; - } -} +$submit_mult = PMA_getMultipleFieldCommandType(); + if (! empty($submit_mult)) { if (isset($_REQUEST['selected_fld'])) { $err_url = 'tbl_structure.php?' . PMA_URL_getCommon($db, $table); diff --git a/test/classes/dbi/DBIMysql_test.php b/test/classes/dbi/DBIMysql_test.php index d5f0253da9..a9b82b04fb 100644 --- a/test/classes/dbi/DBIMysql_test.php +++ b/test/classes/dbi/DBIMysql_test.php @@ -37,7 +37,10 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase * @return void */ protected function setUp() - { + { + $GLOBALS['cfg']['Server']['ssl'] = true; + $GLOBALS['cfg']['PersistentConnections'] = false; + $GLOBALS['cfg']['Server']['compress'] = true; $this->object = new PMA_DBI_Mysql(); } @@ -66,7 +69,124 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->realMultiQuery(null, "select * from PMA") - ); + ); + } + + /** + * Test for mysql related functions, using runkit_function_redefine + * + * @return void + * + * @group medium + */ + public function testMysqlDBI() + { + if (! PMA_HAS_RUNKIT) { + $this->markTestSkipped("Cannot redefine function"); + } + //FOR UT, we just test the right mysql client API is called + runkit_function_redefine('mysql_pconnect','','return "mysql_pconnect";'); + runkit_function_redefine('mysql_connect','','return "mysql_connect";'); + runkit_function_redefine('mysql_query','','return "mysql_query";'); + runkit_function_redefine('mysql_fetch_array','','return "mysql_fetch_array";'); + runkit_function_redefine('mysql_data_seek','','return "mysql_data_seek";'); + runkit_function_redefine('mysql_get_host_info','','return "mysql_get_host_info";'); + runkit_function_redefine('mysql_get_proto_info','','return "mysql_get_proto_info";'); + runkit_function_redefine('mysql_field_flags','','return "mysql_field_flags";'); + runkit_function_redefine('mysql_field_name','','return "mysql_field_name";'); + runkit_function_redefine('mysql_field_len','','return "mysql_field_len";'); + + $user = 'PMA_user'; + $password = 'PMA_password'; + $is_controluser = false; + $server = array( + 'port' => 8080, + 'socket' => 123, + 'host' => 'locahost', + ); + $auxiliary_connection = true; + + //test for connect + $ret = $this->object->connect( + $user, $password, $is_controluser, + $server, $auxiliary_connection + ); + $this->assertEquals( + 'mysql_connect', + $ret + ); + + $GLOBALS['cfg']['PersistentConnections'] = true; + $ret = $this->object->connect( + $user, $password, $is_controluser, + $server, $auxiliary_connection + ); + $this->assertEquals( + 'mysql_pconnect', + $ret + ); + + //test for realQuery + $query = 'select * from DBI'; + $link = $ret; + $options = 0; + $ret = $this->object->realQuery($query, $link, $options); + $this->assertEquals( + 'mysql_query', + $ret + ); + + //test for fetchArray + $result = $ret; + $ret = $this->object->fetchArray($result); + $this->assertEquals( + 'mysql_fetch_array', + $ret + ); + + //test for dataSeek + $result = $ret; + $offset = 12; + $ret = $this->object->dataSeek($result, $offset); + $this->assertEquals( + 'mysql_data_seek', + $ret + ); + + //test for getHostInfo + $ret = $this->object->getHostInfo($ret); + $this->assertEquals( + 'mysql_get_host_info', + $ret + ); + + //test for getProtoInfo + $ret = $this->object->getProtoInfo($ret); + $this->assertEquals( + 'mysql_get_proto_info', + $ret + ); + + //test for fieldLen + $ret = $this->object->fieldLen($ret, $offset); + $this->assertEquals( + 'mysql_field_len', + $ret + ); + + //test for fieldName + $ret = $this->object->fieldName($ret, $offset); + $this->assertEquals( + 'mysql_field_name', + $ret + ); + + //test for fieldFlags + $ret = $this->object->fieldFlags($ret, $offset); + $this->assertEquals( + 'mysql_field_flags', + $ret + ); } /** @@ -83,7 +203,7 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->selectDb("PMA") - ); + ); } /** @@ -99,12 +219,12 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->moreResults() - ); + ); //PHP's 'mysql' extension does not support multi_queries $this->assertEquals( false, $this->object->nextResult() - ); + ); } /** diff --git a/test/classes/plugin/export/PMA_ExportCodegen_test.php b/test/classes/plugin/export/PMA_ExportCodegen_test.php index 7461f026b1..5f7d7706be 100644 --- a/test/classes/plugin/export/PMA_ExportCodegen_test.php +++ b/test/classes/plugin/export/PMA_ExportCodegen_test.php @@ -34,7 +34,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -44,12 +44,12 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::initSpecificVariables - * + * * @return void */ public function testInitSpecificVariables() { - + $method = new ReflectionMethod('ExportCodegen', 'initSpecificVariables'); $method->setAccessible(true); $method->invoke($this->object, null); @@ -79,7 +79,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::setProperties - * + * * @return void */ public function testSetProperties() @@ -184,7 +184,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::exportHeader - * + * * @return void */ public function testExportHeader() @@ -196,7 +196,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::exportFooter - * + * * @return void */ public function testExportFooter() @@ -208,7 +208,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -220,7 +220,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -232,22 +232,23 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::exportData - * + * * @return void */ public function testExportData() { $GLOBALS['codegen_format'] = 1; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $GLOBALS['dbi'] = $dbi; - + ob_start(); $this->object->exportData( 'testDB', 'testTable', "\n", 'example.com', 'test' @@ -255,22 +256,22 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertContains( - '<?xml version="1.0" encoding="utf-8" ?>', + '', $result ); $this->assertContains( - '<class name="TestTable" table="TestTable">', + '', $result ); $this->assertContains( - '</class>', + '', $result ); $this->assertContains( - '</hibernate-mapping>', + '', $result ); @@ -287,7 +288,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::cgMakeIdentifier - * + * * @return void */ public function testCgMakeIdentifier() @@ -310,7 +311,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::_handleNHibernateCSBody - * + * * @return void */ public function testHandleNHibernateCSBody() @@ -375,7 +376,7 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCodegen::_handleNHibernateXMLBody - * + * * @return void */ public function testHandleNHibernateXMLBody() @@ -432,13 +433,13 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase * Test for * - ExportCodegen::_getCgFormats * - ExportCodegen::_setCgFormats - * + * * @return void */ public function testSetGetCgFormats() { $reflection = new ReflectionClass('ExportCodegen'); - + $getter = $reflection->getMethod('_getCgFormats'); $setter = $reflection->getMethod('_setCgFormats'); @@ -457,13 +458,13 @@ class PMA_ExportCodegen_Test extends PHPUnit_Framework_TestCase * Test for * - ExportCodegen::_getCgHandlers * - ExportCodegen::_setCgHandlers - * + * * @return void */ public function testSetGetCgHandlers() { $reflection = new ReflectionClass('ExportCodegen'); - + $getter = $reflection->getMethod('_getCgHandlers'); $setter = $reflection->getMethod('_setCgHandlers'); diff --git a/test/classes/plugin/export/PMA_ExportCsv_test.php b/test/classes/plugin/export/PMA_ExportCsv_test.php index 86052c52eb..a01aed9f66 100644 --- a/test/classes/plugin/export/PMA_ExportCsv_test.php +++ b/test/classes/plugin/export/PMA_ExportCsv_test.php @@ -34,7 +34,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -44,7 +44,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::setProperties - * + * * @return void */ public function testSetProperties() @@ -132,7 +132,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'enclosed', $property->getName() @@ -149,7 +149,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'escaped', $property->getName() @@ -166,7 +166,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'terminated', $property->getName() @@ -183,7 +183,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'null', $property->getName() @@ -200,7 +200,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'removeCRLF', $property->getName() @@ -217,7 +217,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'columns', $property->getName() @@ -234,7 +234,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase 'HiddenPropertyItem', $property ); - + $this->assertEquals( 'structure_or_data', $property->getName() @@ -244,7 +244,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportHeader - * + * * @return void */ public function testExportHeader() @@ -400,7 +400,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase ); // case 7 - + $GLOBALS['csv_terminated'] = 'a\\rb\\nc\\t'; $GLOBALS['csv_separator'] = 'a\\t'; @@ -421,7 +421,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportFooter - * + * * @return void */ public function testExportFooter() @@ -433,7 +433,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -445,7 +445,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -457,7 +457,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -469,7 +469,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase /** * Test for ExportCsv::exportData - * + * * @return void */ public function testExportData() @@ -533,8 +533,9 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $GLOBALS['what'] = 'UT'; $GLOBALS['UT_null'] = 'customNull'; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; ob_start(); @@ -593,7 +594,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - ""foo"bar;customNull;", + "\"foo\"bar;customNull;", $result ); @@ -633,7 +634,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $GLOBALS['what'] = 'excel'; $GLOBALS['excel_removeCRLF'] = true; $GLOBALS['csv_escaped'] = '"'; - + ob_start(); $this->assertTrue( $this->object->exportData( @@ -643,7 +644,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - ""foo""bar;"test";", + "\"foo\"\"bar;\"test\";", $result ); @@ -682,7 +683,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $GLOBALS['csv_enclosed'] = '"'; unset($GLOBALS['excel_removeCRLF']); $GLOBALS['csv_escaped'] = ';'; - + ob_start(); $this->assertTrue( $this->object->exportData( @@ -692,7 +693,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - ""foo;"bar;"test\n";", + "\"foo;\"bar;\"test\n\";", $result ); @@ -730,7 +731,7 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase $GLOBALS['csv_enclosed'] = '"'; $GLOBALS['csv_escaped'] = ';'; $GLOBALS['csv_escaped'] = '#'; - + ob_start(); $this->assertTrue( $this->object->exportData( @@ -738,11 +739,11 @@ class PMA_ExportCsv_Test extends PHPUnit_Framework_TestCase ) ); $result = ob_get_clean(); - + $this->assertEquals( - ""foo#"bar""foo#"bar;"test\n" . - """test\n" . - "";", + "\"foo#\"bar\"\"foo#\"bar;\"test\n" . + "\"\"test\n" . + "\";", $result ); } diff --git a/test/classes/plugin/export/PMA_ExportHtmlword_test.php b/test/classes/plugin/export/PMA_ExportHtmlword_test.php index e2cb4c0e14..105cd2f19f 100644 --- a/test/classes/plugin/export/PMA_ExportHtmlword_test.php +++ b/test/classes/plugin/export/PMA_ExportHtmlword_test.php @@ -6,6 +6,7 @@ * @package PhpMyAdmin-test */ require_once 'libraries/plugins/export/ExportHtmlword.class.php'; +require_once 'libraries/DatabaseInterface.class.php'; require_once 'libraries/Util.class.php'; require_once 'libraries/Theme.class.php'; require_once 'libraries/Config.class.php'; @@ -31,14 +32,15 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $GLOBALS['server'] = 0; $this->object = new ExportHtmlword(); $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -48,7 +50,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::setProperties - * + * * @return void */ public function testSetProperties() @@ -183,7 +185,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase 'Replace NULL with:', $property->getText() ); - + $property = array_shift($generalProperties); $this->assertInstanceOf( @@ -204,7 +206,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::exportHeader - * + * * @return void */ public function testExportHeader() @@ -213,7 +215,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $this->object->exportHeader(); $result = ob_get_clean(); - $expected = htmlspecialchars( + $expected = ' @@ -225,9 +227,8 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase - ' - ); - + '; + $this->assertEquals( $expected, $result @@ -240,7 +241,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $this->object->exportHeader(); $result = ob_get_clean(); - $expected = htmlspecialchars( + $expected = ' @@ -252,8 +253,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase - ' - ); + '; $this->assertEquals( $expected, @@ -263,7 +263,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::exportFooter - * + * * @return void */ public function testExportFooter() @@ -275,14 +275,14 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - htmlspecialchars(''), + '', $result ); } /** * Test for ExportHtmlword::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -294,14 +294,14 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - '<h1>Database d&quot;b</h1>', + '

Database d"b

', $result ); } /** * Test for ExportHtmlword::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -313,7 +313,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -325,13 +325,13 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::exportData - * + * * @return void */ public function testExportData() { // case 1 - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -365,8 +365,9 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $GLOBALS['what'] = 'UT'; $GLOBALS['UT_null'] = 'customNull'; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; ob_start(); @@ -379,8 +380,8 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $this->assertEquals( '

Dumping data for table testTable

' . - '' . - '' . + '
' . + '' . '' . '' . '' . @@ -394,7 +395,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::getTableDefStandIn - * + * * @return void */ public function testGetTableDefStandIn() @@ -404,7 +405,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ->getMock(); // case 1 - + $keys = array( array( 'Non_unique' => 0, @@ -450,7 +451,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::getTableDef - * + * * @return void */ public function testGetTableDef() @@ -506,7 +507,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue(array($columns))); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -565,7 +566,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ); // case 2 - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -610,7 +611,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue(array($columns))); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -662,7 +663,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ); // case 3 - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -680,7 +681,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue(array($columns))); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -733,7 +734,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::getTriggers - * + * * @return void */ public function testGetTriggers() @@ -750,7 +751,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase 'definition' => 'def' ) ); - + $dbi->expects($this->once()) ->method('getTriggers') ->with('database', 'table') @@ -763,7 +764,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = $method->invoke($this->object, 'database', 'table'); $this->assertContains( - '' . + '' . '' . '' . '', @@ -773,12 +774,12 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase /** * Test for ExportHtmlword::exportStructure - * + * * @return void */ public function testExportStructure() { - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -816,7 +817,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ->will($this->returnValue('dumpText4')); $GLOBALS['dbi'] = $dbi; - + ob_start(); $this->assertTrue( $this->object->exportStructure( @@ -826,7 +827,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - '<h2>Table structure for table tbl</h2>dumpText1', + '

Table structure for table tbl

dumpText1', $result ); @@ -839,7 +840,7 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - '<h2>Triggers tbl</h2>dumpText2', + '

Triggers tbl

dumpText2', $result ); @@ -850,9 +851,9 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase ) ); $result = ob_get_clean(); - + $this->assertEquals( - '<h2>Structure for view tbl</h2>dumpText3', + '

Structure for view tbl

dumpText3', $result ); @@ -865,14 +866,14 @@ class PMA_ExportHtmlword_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - '<h2>Stand-in structure for view tbl</h2>dumpText4', + '

Stand-in structure for view tbl

dumpText4', $result ); } /** * Test for ExportHtmlword::formatOneColumnDefinition - * + * * @return void */ public function testFormatOneColumnDefinition() diff --git a/test/classes/plugin/export/PMA_ExportJson_test.php b/test/classes/plugin/export/PMA_ExportJson_test.php index 5d995a7269..caa6b0f772 100644 --- a/test/classes/plugin/export/PMA_ExportJson_test.php +++ b/test/classes/plugin/export/PMA_ExportJson_test.php @@ -30,15 +30,16 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $this->object = new ExportJson(); } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -48,7 +49,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::setProperties - * + * * @return void */ public function testSetProperties() @@ -119,7 +120,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase 'HiddenPropertyItem', $property ); - + $this->assertEquals( 'structure_or_data', $property->getName() @@ -129,7 +130,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportHeader - * + * * @return void */ public function testExportHeader() @@ -150,7 +151,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportFooter - * + * * @return void */ public function testExportFooter() @@ -162,7 +163,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -180,7 +181,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -192,7 +193,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -204,7 +205,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase /** * Test for ExportJson::exportData - * + * * @return void */ public function testExportData() @@ -212,7 +213,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); - + $dbi->expects($this->once()) ->method('numFields') ->with(null) @@ -242,7 +243,7 @@ class PMA_ExportJson_Test extends PHPUnit_Framework_TestCase $this->expectOutputString( "// db.tbl\n\n" . - "[{"f1":"foo"}, {"f1":"bar"}]" + "[{\"f1\":\"foo\"}, {\"f1\":\"bar\"}]" ); $this->assertTrue( diff --git a/test/classes/plugin/export/PMA_ExportLatex_test.php b/test/classes/plugin/export/PMA_ExportLatex_test.php index 7f6ffb2052..8049771775 100644 --- a/test/classes/plugin/export/PMA_ExportLatex_test.php +++ b/test/classes/plugin/export/PMA_ExportLatex_test.php @@ -30,8 +30,9 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $GLOBALS['plugin_param'] = array(); $GLOBALS['plugin_param']['export_type'] = 'table'; @@ -42,7 +43,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -52,7 +53,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::setProperties - * + * * @return void */ public function testSetProperties() @@ -128,7 +129,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'caption', $property->getName() @@ -164,7 +165,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'RadioPropertyItem', $property ); - + $this->assertEquals( 'structure_or_data', $property->getName() @@ -210,7 +211,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'structure_caption', $property->getName() @@ -232,7 +233,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'structure_continued_caption', $property->getName() @@ -254,7 +255,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'structure_label', $property->getName() @@ -276,7 +277,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'relation', $property->getName() @@ -293,7 +294,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'comments', $property->getName() @@ -310,7 +311,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'mime', $property->getName() @@ -352,7 +353,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'columns', $property->getName() @@ -369,7 +370,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'data_caption', $property->getName() @@ -391,7 +392,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'data_continued_caption', $property->getName() @@ -413,7 +414,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'data_label', $property->getName() @@ -435,7 +436,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'null', $property->getName() @@ -463,7 +464,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportHeader - * + * * @return void */ public function testExportHeader() @@ -471,7 +472,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase $GLOBALS['crlf'] = "\n"; $GLOBALS['cfg']['Server']['port'] = 80; $GLOBALS['cfg']['Server']['host'] = 'localhost'; - + ob_start(); $this->assertTrue( $this->object->exportHeader() @@ -481,12 +482,12 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase $this->assertContains( "\n% Host: localhost:80", $result - ); + ); } /** * Test for ExportLatex::exportFooter - * + * * @return void */ public function testExportFooter() @@ -498,7 +499,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -516,7 +517,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -528,7 +529,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -540,7 +541,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportData - * + * * @return void */ public function testExportData() @@ -556,7 +557,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); - + $dbi->expects($this->once()) ->method('numFields') ->with(null) @@ -613,7 +614,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); - + $dbi->expects($this->once()) ->method('numFields') ->with(null) @@ -655,7 +656,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::exportStructure - * + * * @return void */ public function testExportStructure() @@ -723,7 +724,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue($columns)); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -777,30 +778,30 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase //echo $result; die; $this->assertEquals( "\n" . '%' . "\n" . - '% Structure: ' . "\n" . + '% Structure: ' . "\n" . '%' . "\n" . ' \\begin{longtable}{|l|c|c|c|l|l|} ' . "\n" . - ' \\hline \\multicolumn{1}{|c|}{\\textbf{Column}} & ' . - '\\multicolumn{1}{|c|}{\\textbf{Type}} & \\multicolumn{1}{|c|}' . - '{\\textbf{Null}} & \\multicolumn{1}{|c|}{\\textbf{Default}} &' . - ' \\multicolumn{1}{|c|}{\\textbf{Comments}} & \\multicolumn{1}' . + ' \\hline \\multicolumn{1}{|c|}{\\textbf{Column}} & ' . + '\\multicolumn{1}{|c|}{\\textbf{Type}} & \\multicolumn{1}{|c|}' . + '{\\textbf{Null}} & \\multicolumn{1}{|c|}{\\textbf{Default}} &' . + ' \\multicolumn{1}{|c|}{\\textbf{Comments}} & \\multicolumn{1}' . '{|c|}{\\textbf{MIME}} \\\\ \\hline \\hline' . "\n" . '\\endfirsthead' . "\n" . ' \\hline \\multicolumn{1}{|c|}' . - '{\\textbf{Column}} & \\multicolumn{1}' . '{|c|}{\\textbf{Type}}' . - ' & \\multicolumn{1}{|c|}{\\textbf{Null}} & \\multicolumn' . - '{1}{|c|}{\\textbf{Default}} & \\multicolumn{1}{|c|}{\\textbf' . - '{Comments}} & \\multicolumn{1}{|c|}{\\textbf{MIME}} \\\\ ' . + '{\\textbf{Column}} & \\multicolumn{1}' . '{|c|}{\\textbf{Type}}' . + ' & \\multicolumn{1}{|c|}{\\textbf{Null}} & \\multicolumn' . + '{1}{|c|}{\\textbf{Default}} & \\multicolumn{1}{|c|}{\\textbf' . + '{Comments}} & \\multicolumn{1}{|c|}{\\textbf{MIME}} \\\\ ' . '\\hline \\hline \\endhead \\endfoot ' . "\n" . '\\textbf{\\textit' . - '{name1}} & set(abc) & Yes & NULL & ' . - '& Testmimetype/ \\\\ \\hline ' . "\n" . - 'fields & & No & def & & \\\\ \\hline ' . "\n" . + '{name1}} & set(abc) & Yes & NULL & ' . + '& Testmimetype/ \\\\ \\hline ' . "\n" . + 'fields & & No & def & & \\\\ \\hline ' . "\n" . ' \\end{longtable}' . "\n", $result ); - + // case 2 - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -841,7 +842,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue($columns)); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -889,8 +890,8 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertContains( - '\\textbf{\\textit{name1}} & set(abc) & Yes & NULL & ' . - 'ftable (ffield) & & \\\\ \\hline', + '\\textbf{\\textit{name1}} & set(abc) & Yes & NULL & ' . + 'ftable (ffield) & & \\\\ \\hline', $result ); @@ -909,7 +910,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue($columns)); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -959,7 +960,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase ) ); $result = ob_get_clean(); - + $this->assertContains( '\\caption{latexstructure} \\label{latexlabel}', $result @@ -985,7 +986,7 @@ class PMA_ExportLatex_Test extends PHPUnit_Framework_TestCase /** * Test for ExportLatex::texEscape - * + * * @return void */ public function testTexEscape() diff --git a/test/classes/plugin/export/PMA_ExportMediawiki_test.php b/test/classes/plugin/export/PMA_ExportMediawiki_test.php index 8100a7b365..8864d601ba 100644 --- a/test/classes/plugin/export/PMA_ExportMediawiki_test.php +++ b/test/classes/plugin/export/PMA_ExportMediawiki_test.php @@ -30,15 +30,16 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $this->object = new ExportMediawiki(); } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -48,7 +49,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::setProperties - * + * * @return void */ public function testSetProperties() @@ -124,7 +125,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase 'OptionsPropertySubgroup', $property ); - + $this->assertEquals( 'dump_table', $property->getName() @@ -141,7 +142,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase 'RadioPropertyItem', $sgHeader ); - + $this->assertEquals( 'structure_or_data', $sgHeader->getName() @@ -162,7 +163,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'caption', $property->getName() @@ -179,7 +180,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'headers', $property->getName() @@ -193,7 +194,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::exportHeader - * + * * @return void */ public function testExportHeader() @@ -205,7 +206,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::exportFooter - * + * * @return void */ public function testExportFooter() @@ -217,7 +218,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -229,7 +230,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -241,7 +242,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediawiki::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -253,7 +254,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * Test for ExportMediaWiki::exportStructure - * + * * @return void */ public function testExportStructure() @@ -299,14 +300,14 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - "\n<!--\n" . + "\n\n" . "\n" . - "{| class="wikitable" style="text-align:center;"\n" . + "{| class=\"wikitable\" style=\"text-align:center;\"\n" . "|+'''table'''\n" . - "|- style="background:#ffdead;"\n" . - "! style="background:#ffffff" | \n" . + "|- style=\"background:#ffdead;\"\n" . + "! style=\"background:#ffffff\" | \n" . " | name1\n" . " | fields\n" . "|-\n" . @@ -331,7 +332,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase /** * This case produces an error, should it be tested? - + ob_start(); $this->assertTrue( $this->object->exportStructure( @@ -343,7 +344,7 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase } /** * Test for ExportMediawiki::exportData - * + * * @return void */ public function testExportData() @@ -414,12 +415,12 @@ class PMA_ExportMediawiki_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertEquals( - "\n<!--\n" . + "\n\n" . "\n" . - "{| class="wikitable sortable" style="text-align:" . - "center;"\n" . + "{| class=\"wikitable sortable\" style=\"text-align:" . + "center;\"\n" . "|+'''table'''\n" . "|-\n" . " ! name1\n" . diff --git a/test/classes/plugin/export/PMA_ExportOds_test.php b/test/classes/plugin/export/PMA_ExportOds_test.php index 545b2f2857..57aceb551f 100644 --- a/test/classes/plugin/export/PMA_ExportOds_test.php +++ b/test/classes/plugin/export/PMA_ExportOds_test.php @@ -6,6 +6,7 @@ * @package PhpMyAdmin-test */ require_once 'libraries/plugins/export/ExportOds.class.php'; +require_once 'libraries/DatabaseInterface.class.php'; require_once 'libraries/Util.class.php'; require_once 'libraries/Theme.class.php'; require_once 'libraries/Config.class.php'; @@ -30,15 +31,16 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $this->object = new ExportOds(); } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -48,7 +50,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::setProperties - * + * * @return void */ public function testSetProperties() @@ -123,7 +125,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'null', $property->getName() @@ -140,7 +142,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'columns', $property->getName() @@ -157,7 +159,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase 'HiddenPropertyItem', $property ); - + $this->assertEquals( 'structure_or_data', $property->getName() @@ -167,7 +169,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportHeader - * + * * @return void */ public function testExportHeader() @@ -183,13 +185,15 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportFooter - * + * * @return void */ public function testExportFooter() { $GLOBALS['ods_buffer'] = 'header'; + $this->expectOutputRegex('/^PK.*content.xml/'); + $this->assertTrue( $this->object->exportFooter() ); @@ -217,7 +221,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -229,7 +233,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -241,7 +245,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -253,7 +257,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportData - * + * * @return void */ public function testExportData() @@ -378,7 +382,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOds::exportData - * + * * @return void */ public function testExportDataWithFieldNames() @@ -397,7 +401,7 @@ class PMA_ExportOds_Test extends PHPUnit_Framework_TestCase $dbi->expects($this->any()) ->method('fieldFlags') ->will($this->returnValue('BINARYTEST')); - + $dbi->expects($this->once()) ->method('query') ->with('SELECT', null, PMA_DatabaseInterface::QUERY_UNBUFFERED) diff --git a/test/classes/plugin/export/PMA_ExportOdt_test.php b/test/classes/plugin/export/PMA_ExportOdt_test.php index b916b551c0..39977cf672 100644 --- a/test/classes/plugin/export/PMA_ExportOdt_test.php +++ b/test/classes/plugin/export/PMA_ExportOdt_test.php @@ -30,8 +30,9 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $GLOBALS['plugin_param'] = array(); $GLOBALS['plugin_param']['export_type'] = 'table'; @@ -42,7 +43,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -52,7 +53,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::setProperties - * + * * @return void */ public function testSetProperties() @@ -137,7 +138,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'RadioPropertyItem', $property ); - + $this->assertEquals( 'structure_or_data', $property->getName() @@ -182,7 +183,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'relation', $property->getName() @@ -199,7 +200,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'comments', $property->getName() @@ -216,7 +217,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'mime', $property->getName() @@ -258,7 +259,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'BoolPropertyItem', $property ); - + $this->assertEquals( 'columns', $property->getName() @@ -275,7 +276,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'null', $property->getName() @@ -303,13 +304,13 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::exportHeader - * + * * @return void */ public function testExportHeader() { $GLOBALS['OpenDocumentNS'] = "ODNS"; - + $this->assertTrue( $this->object->exportHeader() ); @@ -317,18 +318,20 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase $this->assertContains( "expectOutputRegex('/^PK.*content.xml/'); + $this->assertTrue( $this->object->exportFooter() ); @@ -336,17 +339,17 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase $this->assertContains( "header", $GLOBALS['odt_buffer'] - ); + ); $this->assertContains( "", $GLOBALS['odt_buffer'] - ); + ); } /** * Test for ExportOdt::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -360,7 +363,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase $this->assertContains( "header", $GLOBALS['odt_buffer'] - ); + ); $this->assertContains( "Database d&b", @@ -370,7 +373,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -382,7 +385,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -394,7 +397,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::exportData - * + * * @return void */ public function testExportData() @@ -490,7 +493,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::exportData - * + * * @return void */ public function testExportDataWithFieldNames() @@ -509,7 +512,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase $dbi->expects($this->any()) ->method('fieldFlags') ->will($this->returnValue('BINARYTEST')); - + $dbi->expects($this->once()) ->method('query') ->with('SELECT', null, PMA_DatabaseInterface::QUERY_UNBUFFERED) @@ -615,7 +618,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::getTableDefStandIn - * + * * @return void */ public function testGetTableDefStandIn() @@ -664,7 +667,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::getTableDef - * + * * @return void */ public function testGetTableDef() @@ -704,7 +707,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue(array($columns))); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -751,7 +754,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase true ) ); - + $this->assertContains( '', @@ -779,7 +782,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase ); // case 2 - + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -819,7 +822,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase ->method('getColumns') ->with('database', '') ->will($this->returnValue(array($columns))); - + $dbi->expects($this->any()) ->method('query') ->will($this->returnValue(true)); @@ -870,7 +873,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::getTriggers - * + * * @return void */ public function testGetTriggers() @@ -887,7 +890,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'definition' => 'def' ) ); - + $dbi->expects($this->once()) ->method('getTriggers') ->with('database', 'tagetMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); @@ -974,7 +977,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase ->will($this->returnValue('dumpText4')); $GLOBALS['dbi'] = $dbi; - + // case 1 $this->assertTrue( $this->object->exportStructure( @@ -990,7 +993,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase // case 2 $GLOBALS['odt_buffer'] = ''; - + $this->assertTrue( $this->object->exportStructure( 'db', 't&bl', "\n", "example.com", "triggers", "test" @@ -1011,7 +1014,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase 'db', 't&bl', "\n", "example.com", "create_view", "test" ) ); - + $this->assertEquals( 'Structure for view t&bl', @@ -1019,7 +1022,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase ); // case 4 - $GLOBALS['odt_buffer'] = ''; + $GLOBALS['odt_buffer'] = ''; $this->assertTrue( $this->object->exportStructure( 'db', 't&bl', "\n", "example.com", "stand_in", "test" @@ -1035,7 +1038,7 @@ class PMA_ExportOdt_Test extends PHPUnit_Framework_TestCase /** * Test for ExportOdt::formatOneColumnDefinition - * + * * @return void */ public function testFormatOneColumnDefinition() diff --git a/test/classes/plugin/export/PMA_ExportPdf_test.php b/test/classes/plugin/export/PMA_ExportPdf_test.php index d7698fdd2d..46459fb587 100644 --- a/test/classes/plugin/export/PMA_ExportPdf_test.php +++ b/test/classes/plugin/export/PMA_ExportPdf_test.php @@ -31,15 +31,16 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $this->object = new ExportPdf(); } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -49,7 +50,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::setProperties - * + * * @return void */ public function testSetProperties() @@ -124,7 +125,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase 'MessageOnlyPropertyItem', $property ); - + $this->assertEquals( 'explanation', $property->getName() @@ -136,7 +137,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase 'TextPropertyItem', $property ); - + $this->assertEquals( 'report_title', $property->getName() @@ -152,7 +153,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportHeader - * + * * @return void */ public function testExportHeader() @@ -160,7 +161,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase $pdf = $this->getMockBuilder('PMA_ExportPdf') ->disableOriginalConstructor() ->getMock(); - + $pdf->expects($this->once()) ->method('Open'); @@ -181,7 +182,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportFooter - * + * * @return void */ public function testExportFooter() @@ -189,7 +190,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase $pdf = $this->getMockBuilder('PMA_ExportPdf') ->disableOriginalConstructor() ->getMock(); - + $pdf->expects($this->once()) ->method('getPDFData'); @@ -204,7 +205,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportDBHeader - * + * * @return void */ public function testExportDBHeader() @@ -216,7 +217,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportDBFooter - * + * * @return void */ public function testExportDBFooter() @@ -228,7 +229,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportDBCreate - * + * * @return void */ public function testExportDBCreate() @@ -240,7 +241,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPdf::exportData - * + * * @return void */ public function testExportData() @@ -272,7 +273,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase * Test for * - ExportPdf::_setPdf * - ExportPdf::_getPdf - * + * * @return void */ public function testSetGetPdf() @@ -293,7 +294,7 @@ class PMA_ExportPdf_Test extends PHPUnit_Framework_TestCase * Test for * - ExportPdf::_setPdfReportTitle * - ExportPdf::_getPdfReportTitle - * + * * @return void */ public function testSetGetPdfTitle() diff --git a/test/classes/plugin/export/PMA_ExportPhparray_test.php b/test/classes/plugin/export/PMA_ExportPhparray_test.php index ed8bb04aaa..fafa8bd585 100644 --- a/test/classes/plugin/export/PMA_ExportPhparray_test.php +++ b/test/classes/plugin/export/PMA_ExportPhparray_test.php @@ -6,6 +6,7 @@ * @package PhpMyAdmin-test */ require_once 'libraries/plugins/export/ExportPhparray.class.php'; +require_once 'libraries/DatabaseInterface.class.php'; require_once 'libraries/Util.class.php'; require_once 'libraries/Theme.class.php'; require_once 'libraries/Config.class.php'; @@ -30,15 +31,16 @@ class PMA_ExportPhparray_Test extends PHPUnit_Framework_TestCase { $GLOBALS['server'] = 0; $GLOBALS['output_kanji_conversion'] = false; + $GLOBALS['output_charset_conversion'] = false; $GLOBALS['buffer_needed'] = false; - $GLOBALS['asfile'] = false; + $GLOBALS['asfile'] = true; $GLOBALS['save_on_server'] = false; $this->object = new ExportPhparray(); } /** * tearDown for test cases - * + * * @return void */ public function tearDown() @@ -48,7 +50,7 @@ class PMA_ExportPhparray_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPhparray::setProperties - * + * * @return void */ public function testSetProperties() @@ -123,7 +125,7 @@ class PMA_ExportPhparray_Test extends PHPUnit_Framework_TestCase /** * Test for ExportPhparray::exportHeader - * + * * @return void */ public function testExportHeader() @@ -137,14 +139,14 @@ class PMA_ExportPhparray_Test extends PHPUnit_Framework_TestCase $result = ob_get_clean(); $this->assertContains( - '<?php ', + 'assertEquals( "\n" . '// `db`.`table`' . "\n" . '$table = array(' . "\n" . - ' array(\'c1\' => 1,\'\' => \'a\')' . "\n" . + ' array(\'c1\' => 1,\'\' => \'a\')' . "\n" . ');' . "\n", $result ); @@ -291,7 +293,7 @@ class PMA_ExportPhparray_Test extends PHPUnit_Framework_TestCase $this->assertContains( '$_0_932table', $result - ); + ); } } ?> diff --git a/test/classes/plugin/export/PMA_ExportSql_test.php b/test/classes/plugin/export/PMA_ExportSql_test.php new file mode 100644 index 0000000000..a6f706d88e --- /dev/null +++ b/test/classes/plugin/export/PMA_ExportSql_test.php @@ -0,0 +1,2102 @@ +object = new ExportSql(); + } + + /** + * tearDown for test cases + * + * @return void + */ + public function tearDown() + { + unset($this->object); + } + + /** + * Test for ExportSql::setProperties + * + * @return void + */ + public function testSetProperties() + { + $restoreDrizzle = $restoreMySQLIntVersion = 'PMANORESTORE'; + + if (PMA_DRIZZLE || PMA_MYSQL_INT_VERSION <= 50100) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + if (PMA_DRIZZLE) { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + if (PMA_MYSQL_INT_VERSION <= 50100) { + $restoreMySQLIntVersion = PMA_MYSQL_INT_VERSION; + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', 50111); + } + } + } + // test with hide structure and hide sql as true + $GLOBALS['plugin_param']['export_type'] = 'table'; + $GLOBALS['plugin_param']['single_table'] = false; + $GLOBALS['cfgRelation']['mimework'] = true; + + $method = new ReflectionMethod('ExportSql', 'setProperties'); + $method->setAccessible(true); + $method->invoke($this->object, null); + + $attrProperties = new ReflectionProperty('ExportSql', 'properties'); + $attrProperties->setAccessible(true); + $properties = $attrProperties->getValue($this->object); + + $this->assertNull( + $properties + ); + + // test with hide structure and hide sql as false + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getCompatibilities') + ->will($this->returnValue(array('v1', 'v2'))); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['plugin_param']['export_type'] = 'server'; + $GLOBALS['plugin_param']['single_table'] = false; + $GLOBALS['cfgRelation']['mimework'] = true; + $GLOBALS['cfgRelation']['relation'] = true; + + $method->invoke($this->object, null); + $properties = $attrProperties->getValue($this->object); + + $this->assertInstanceOf( + 'ExportPluginProperties', + $properties + ); + + $this->assertEquals( + 'SQL', + $properties->getText() + ); + + $options = $properties->getOptions(); + + $this->assertInstanceOf( + 'OptionsPropertyRootGroup', + $options + ); + + $generalOptionsArray = $options->getProperties(); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $properties = $generalOptions->getProperties(); + + $property = array_shift($properties); + + $this->assertInstanceOf( + 'OptionsPropertySubgroup', + $property + ); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property->getSubgroupHeader() + ); + + $leaves = $property->getProperties(); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'TextPropertyItem', + $leaf + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'SelectPropertyItem', + $property + ); + + $this->assertEquals( + array( + 'v1' => 'v1', + 'v2' => 'v2' + ), + $property->getValues() + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($properties); + $this->assertInstanceOf( + 'OptionsPropertySubgroup', + $property + ); + + $this->assertInstanceOf( + 'RadioPropertyItem', + $property->getSubgroupHeader() + ); + + $structureOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $structureOptions + ); + + $properties = $structureOptions->getProperties(); + + $property = array_shift($properties); + + $this->assertInstanceOf( + 'OptionsPropertySubgroup', + $property + ); + + $this->assertInstanceOf( + 'MessageOnlyPropertyItem', + $property->getSubgroupHeader() + ); + + $leaves = $property->getProperties(); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $this->assertEquals( + 'Add DROP TABLE / VIEW / PROCEDURE / FUNCTION' . + ' / EVENT statement', + $leaf->getText() + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf + ); + + $leaf = array_shift($leaves); + $this->assertInstanceOf( + 'OptionsPropertySubgroup', + $leaf + ); + + $this->assertCount( + 2, + $leaf->getProperties() + ); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $leaf->getSubgroupHeader() + ); + + $property = array_shift($properties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $dataOptions = array_shift($generalOptionsArray); + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $dataOptions + ); + + $properties = $dataOptions->getProperties(); + + $this->assertCount( + 7, + $properties + ); + + $this->assertCount( + 2, + $properties[1]->getProperties() + ); + + if ($restoreDrizzle !== 'PMANORESTORE') { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + + if ($restoreMySQLIntVersion !== 'PMANORESTORE') { + runkit_constant_redefine( + 'PMA_MYSQL_INT_VERSION', $restoreMySQLIntVersion + ); + } + } + + /** + * Test for ExportSql::setProperties + * + * @return void + */ + public function testSetPropertiesWithDrizzle() + { + $restoreDrizzle = $restoreMySQLIntVersion = 'PMANORESTORE'; + + if (!PMA_DRIZZLE || PMA_MYSQL_INT_VERSION > 50100) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + if (!PMA_DRIZZLE) { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', true); + } + if (PMA_MYSQL_INT_VERSION > 50100) { + $restoreMySQLIntVersion = PMA_MYSQL_INT_VERSION; + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', 50000); + } + } + } + + $GLOBALS['plugin_param']['export_type'] = 'tableNot'; + $GLOBALS['plugin_param']['single_table'] = true; + $GLOBALS['cfgRelation']['mimework'] = false; + $GLOBALS['cfgRelation']['relation'] = false; + + $method = new ReflectionMethod('ExportSql', 'setProperties'); + $method->setAccessible(true); + $method->invoke($this->object, null); + + $attrProperties = new ReflectionProperty('ExportSql', 'properties'); + $attrProperties->setAccessible(true); + $properties = $attrProperties->getValue($this->object); + + $options = $properties->getOptions(); + + $generalOptionsArray = $options->getProperties(); + + $this->assertCount( + 3, + $generalOptionsArray + ); + + // generalOptions + $option = array_shift($generalOptionsArray); + + $properties = $option->getProperties(); + + $this->assertCount( + 5, + $properties + ); + + $this->assertCount( + 2, + $properties[0]->getProperties() + ); + + // structureOptions + $option = array_shift($generalOptionsArray); + $properties = $option->getProperties(); + + $this->assertCount( + 2, + $properties + ); + + $properties = $properties[0]->getProperties(); + + $this->assertCount( + 3, + $properties + ); + + $this->assertNotcontains( + ' / EVENT ', + $properties[1]->getText() + ); + + // dataOptions + $option = array_shift($generalOptionsArray); + $properties = $option->getProperties(); + + $this->assertCount( + 6, + $properties + ); + + $properties = $properties[1]->getProperties(); + + $this->assertCount( + 1, + $properties + ); + + // case 2 with export type as table + $GLOBALS['plugin_param']['export_type'] = 'table'; + + $method->invoke($this->object, null); + $properties = $attrProperties->getValue($this->object); + + $options = $properties->getOptions(); + $generalOptionsArray = $options->getProperties(); + $structOption = $generalOptionsArray[1]; + $properties = $structOption->getProperties(); + $subgroupProps = $properties[0]->getProperties(); + + $this->assertContains( + 'DROP TABLE', + $subgroupProps[0]->getText() + ); + + if ($restoreDrizzle !== 'PMANORESTORE') { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + + if ($restoreMySQLIntVersion !== 'PMANORESTORE') { + runkit_constant_redefine( + 'PMA_MYSQL_INT_VERSION', $restoreMySQLIntVersion + ); + } + } + + /** + * Test for ExportSql::exportRoutines + * + * @return void + */ + public function testExportRoutines() + { + $GLOBALS['crlf'] = '##'; + $GLOBALS['sql_drop_table'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('getProceduresOrFunctions') + ->with('db', 'PROCEDURE') + ->will($this->returnValue(array('p1', 'p2'))); + + $dbi->expects($this->at(1)) + ->method('getProceduresOrFunctions') + ->with('db', 'FUNCTION') + ->will($this->returnValue(array('f1'))); + + $dbi->expects($this->at(2)) + ->method('getDefinition') + ->with('db', 'PROCEDURE', 'p1') + ->will($this->returnValue('testp1')); + + $dbi->expects($this->at(3)) + ->method('getDefinition') + ->with('db', 'PROCEDURE', 'p2') + ->will($this->returnValue('testp2')); + + $dbi->expects($this->at(4)) + ->method('getDefinition') + ->with('db', 'FUNCTION', 'f1') + ->will($this->returnValue('testf1')); + + $GLOBALS['dbi'] = $dbi; + + $this->expectOutputString( + '##DELIMITER $$##DROP PROCEDURE IF EXISTS `p1`$$##testp1$$####' . + 'DROP PROCEDURE IF EXISTS `p2`$$##testp2$$####DROP FUNCTION IF' . + ' EXISTS `f1`$$##testf1$$####DELIMITER ;##' + ); + + $this->object->exportRoutines('db'); + } + + /** + * Test for ExportSql::_exportComment + * + * @return void + */ + public function testExportComment() + { + $method = new ReflectionMethod('ExportSql', '_exportComment'); + $method->setAccessible(true); + + $GLOBALS['crlf'] = '##'; + $GLOBALS['sql_include_comments'] = true; + + $this->assertEquals( + '--##', + $method->invoke($this->object, '') + ); + + $this->assertEquals( + '-- Comment##', + $method->invoke($this->object, 'Comment') + ); + + $GLOBALS['sql_include_comments'] = false; + + $this->assertEquals( + '', + $method->invoke($this->object, 'Comment') + ); + + unset($GLOBALS['sql_include_comments']); + + $this->assertEquals( + '', + $method->invoke($this->object, 'Comment') + ); + } + + /** + * Test for ExportSql::_possibleCRLF + * + * @return void + */ + public function testPossibleCRLF() + { + $method = new ReflectionMethod('ExportSql', '_possibleCRLF'); + $method->setAccessible(true); + + $GLOBALS['crlf'] = '##'; + $GLOBALS['sql_include_comments'] = true; + + $this->assertEquals( + '##', + $method->invoke($this->object, '') + ); + + $this->assertEquals( + '##', + $method->invoke($this->object, 'Comment') + ); + + $GLOBALS['sql_include_comments'] = false; + + $this->assertEquals( + '', + $method->invoke($this->object, 'Comment') + ); + + unset($GLOBALS['sql_include_comments']); + + $this->assertEquals( + '', + $method->invoke($this->object, 'Comment') + ); + } + + /** + * Test for ExportSql::exportFooter + * + * @return void + */ + public function testExportFooter() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $GLOBALS['sql_disable_fk'] = true; + $GLOBALS['sql_use_transaction'] = true; + $GLOBALS['charset_of_file'] = 'utf-8'; + $GLOBALS['mysql_charset_map']['utf-8'] = true; + $GLOBALS['sql_utc_time'] = true; + $GLOBALS['old_tz'] = 'GMT'; + $GLOBALS['asfile'] = 'yes'; + $GLOBALS['output_charset_conversion'] = 'utf-8'; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('query') + ->with('SET time_zone = "GMT"'); + + $GLOBALS['dbi'] = $dbi; + + $this->expectOutputString( + 'SET FOREIGN_KEY_CHECKS=1;COMMIT;/*!40101 SET CHARACTER_SET_CLIENT' . + '=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@' . + 'OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD' . + '_COLLATION_CONNECTION */;' + ); + + $this->assertTrue( + $this->object->exportFooter() + ); + + if ($restoreDrizzle !== 'PMANORESTORE') { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + + } + + /** + * Test for ExportSql::exportHeader + * + * @return void + */ + public function testExportHeader() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $GLOBALS['crlf'] = "\n"; + $GLOBALS['sql_compatibility'] = 'NONE'; + $GLOBALS['cfg']['Server']['host'] = 'localhost'; + $GLOBALS['cfg']['Server']['port'] = 80; + $GLOBALS['sql_disable_fk'] = true; + $GLOBALS['sql_use_transaction'] = true; + $GLOBALS['sql_utc_time'] = true; + $GLOBALS['old_tz'] = 'GMT'; + $GLOBALS['asfile'] = 'yes'; + $GLOBALS['output_charset_conversion'] = 'utf-8'; + $GLOBALS['sql_header_comment'] = "h1C\nh2C"; + $GLOBALS['sql_use_transaction'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['charset_of_file'] = 'utf-8'; + $GLOBALS['mysql_charset_map']['utf-8'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with('SET SQL_MODE=""'); + + $dbi->expects($this->once()) + ->method('fetchValue') + ->with('SELECT @@session.time_zone') + ->will($this->returnValue('old_tz')); + + $dbi->expects($this->once()) + ->method('query') + ->with('SET time_zone = "+00:00"'); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportHeader() + ); + $result = ob_get_clean(); + + $this->assertContains( + 'h1C', + $result + ); + + $this->assertContains( + 'h2C', + $result + ); + + $this->assertContains( + "SET FOREIGN_KEY_CHECKS=0;\n", + $result + ); + + $this->assertContains( + "40101 SET", + $result + ); + + $this->assertContains( + "SET FOREIGN_KEY_CHECKS=0;\n" . + "SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\n" . + "SET AUTOCOMMIT = 0;\n" . + "START TRANSACTION;\n" . + "SET time_zone = \"+00:00\";\n", + $result + ); + + if ($restoreDrizzle !== 'PMANORESTORE') { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + + } + + /** + * Test for ExportSql::exportDBCreate + * + * @return void + */ + public function testExportDBCreate() + { + $GLOBALS['sql_compatibility'] = 'NONE'; + $GLOBALS['sql_drop_database'] = true; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_create_database'] = true; + $GLOBALS['crlf'] = "\n"; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('isSystemSchema') + ->with('db') + ->will($this->returnValue(true)); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportDBCreate('db') + ); + $result = ob_get_clean(); + + $this->assertContains( + "DROP DATABASE `db`;\n", + $result + ); + + $this->assertContains( + 'CREATE DATABASE IF NOT EXISTS `db` DEFAULT CHARACTER ' . + 'SET utf8 COLLATE utf8_general_ci;', + $result + ); + + $this->assertContains( + 'USE `db`;', + $result + ); + + // case2: no backquotes + unset($GLOBALS['sql_compatibility']); + $GLOBALS['cfg']['Server']['DisableIS'] = true; + unset($GLOBALS['sql_backquotes']); + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('fetchValue') + ->with('SHOW VARIABLES LIKE \'collation_database\'', 0, 1) + ->will($this->returnValue('testcollation')); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportDBCreate('db') + ); + $result = ob_get_clean(); + + $this->assertContains( + "DROP DATABASE db;\n", + $result + ); + + $this->assertContains( + 'CREATE DATABASE IF NOT EXISTS db DEFAULT CHARACTER SET testcollation;', + $result + ); + + $this->assertContains( + 'USE db;', + $result + ); + } + + /** + * Test for ExportSql::exportDBHeader + * + * @return void + */ + public function testExportDBHeader() + { + $GLOBALS['sql_compatibility'] = 'MSSQL'; + $GLOBALS['sql_backquotes'] = ''; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + ob_start(); + $this->assertTrue( + $this->object->exportDBHeader('testDB') + ); + $result = ob_get_clean(); + + $this->assertContains( + ""testDB"", + $result + ); + + // case 2 + unset($GLOBALS['sql_compatibility']); + unset($GLOBALS['sql_backquotes']); + + ob_start(); + $this->assertTrue( + $this->object->exportDBHeader('testDB') + ); + $result = ob_get_clean(); + + $this->assertContains( + "'testDB'", + $result + ); + } + + /** + * Test for ExportSql::exportDBFooter + * + * @return void + */ + public function testExportDBFooterWithNewerMySQLVersion() + { + $restoreMySQLVersion = "PMANORESTORE"; + + if (PMA_MYSQL_INT_VERSION <= 50100) { + if (! PMA_HAS_RUNKIT) { + $this->markTestSkipped( + 'Cannot redefine constant. Missing runkit extension' + ); + } else { + $restoreMySQLVersion = PMA_MYSQL_INT_VERSION; + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', 50101); + } + } + + $GLOBALS['crlf'] = "\n"; + $GLOBALS['sql_constraints'] = "SqlConstraints"; + $GLOBALS['sql_structure_or_data'] = 'structure'; + $GLOBALS['sql_procedure_function'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('fetchResult') + ->with( + 'SELECT EVENT_NAME FROM information_schema.EVENTS WHERE' + . ' EVENT_SCHEMA= \'db\';' + ) + ->will($this->returnValue(array('f1', 'f2'))); + + $dbi->expects($this->at(1)) + ->method('getDefinition') + ->with('db', 'EVENT', 'f1') + ->will($this->returnValue('f1event')); + + $dbi->expects($this->at(2)) + ->method('getDefinition') + ->with('db', 'EVENT', 'f2') + ->will($this->returnValue('f2event')); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportDBFooter('db') + ); + $result = ob_get_clean(); + + $this->assertContains( + "DELIMITER $$\n", + $result + ); + + $this->assertContains( + "DELIMITER ;\n", + $result + ); + + $this->assertContains( + "f1event$$\n", + $result + ); + + $this->assertContains( + "f2event$$\n", + $result + ); + + $this->assertContains( + "SqlConstraints", + $result + ); + + if ($restoreMySQLVersion !== "PMANORESTORE") { + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', $restoreMySQLVersion); + } + } + + /** + * Test for ExportSql::exportDBFooter + * + * @return void + */ + public function testExportDBFooterWithOlderMySQLVersion() + { + $restoreMySQLVersion = "PMANORESTORE"; + + if (PMA_MYSQL_INT_VERSION > 50100) { + if (! PMA_HAS_RUNKIT) { + $this->markTestSkipped( + 'Cannot redefine constant. Missing runkit extension' + ); + } else { + $restoreMySQLVersion = PMA_MYSQL_INT_VERSION; + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', 50100); + } + } + + $GLOBALS['crlf'] = "\n"; + $GLOBALS['sql_constraints'] = "SqlConstraints"; + $GLOBALS['sql_structure_or_data'] = 'structure'; + $GLOBALS['sql_procedure_function'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportDBFooter('db') + ); + $result = ob_get_clean(); + + $this->assertEquals( + 'SqlConstraints', + $result + ); + + if ($restoreMySQLVersion !== "PMANORESTORE") { + runkit_constant_redefine('PMA_MYSQL_INT_VERSION', $restoreMySQLVersion); + } + } + + /** + * Test for ExportSql::getTableDefStandIn + * + * @return void + */ + public function testGetTableDefStandIn() + { + $GLOBALS['sql_drop_table'] = true; + $GLOBALS['sql_if_not_exists'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getColumnsFull') + ->with('db', 'view') + ->will( + $this->returnValue( + array('cname' => array('Type' => 'int')) + ) + ); + + $GLOBALS['dbi'] = $dbi; + + $result = $this->object->getTableDefStandIn('db', 'view', ""); + + $this->assertContains( + "DROP VIEW IF EXISTS `view`;", + $result + ); + + $this->assertContains( + "CREATE TABLE IF NOT EXISTS `view` (`cname` int);", + $result + ); + } + + /** + * Test for ExportSql::_getTableDefForView + * + * @return void + */ + public function testGetTableDefForView() + { + $GLOBALS['sql_drop_table'] = true; + $GLOBALS['sql_if_not_exists'] = true; + $GLOBALS['cfg']['LimitChars'] = 40; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('getColumns') + ->with('db', 'view') + ->will( + $this->returnValue( + array( + 'cname' => array( + 'Type' => 'char', + 'Collation' => 'utf-8', + 'Null' => 'NO', + 'Default' => 'a', + 'Comment' => 'cmt', + 'Field' => 'fname' + ) + ) + ) + ); + + $dbi->expects($this->at(1)) + ->method('getColumns') + ->with('db', 'view') + ->will( + $this->returnValue( + array( + 'cname' => array( + 'Type' => 'char', + 'Collation' => 'utf-8', + 'Null' => 'YES', + 'Comment' => 'cmt', + 'Field' => 'fname' + ) + ) + ) + ); + $GLOBALS['dbi'] = $dbi; + $GLOBALS['sql_compatibility'] = 'MSSQL'; + + $method = new ReflectionMethod('ExportSql', '_getTableDefForView'); + $method->setAccessible(true); + $result = $method->invoke( + $this->object, 'db', 'view', "\n" + ); + + $this->assertEquals( + "CREATE TABLE `view`(\n" . + " `fname` char COLLATE utf-8 NOT NULL DEFAULT 'a' COMMENT 'cmt'\n" . + ");\n", + $result + ); + + // case 2 + unset($GLOBALS['sql_compatibility']); + $result = $method->invoke( + $this->object, 'db', 'view', "\n", false + ); + + $this->assertEquals( + "CREATE TABLE IF NOT EXISTS `view`(\n" . + " `fname` char COLLATE utf-8 DEFAULT NULL COMMENT 'cmt'\n" . + ")\n", + $result + ); + } + + + /** + * Test for ExportSql::getTableDef + * + * @return void + */ + public function testGetTableDefWithoutDrizzle() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $GLOBALS['sql_compatibility'] = 'MSSQL'; + $GLOBALS['sql_auto_increment'] = true; + $GLOBALS['sql_drop_table'] = true; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_if_not_exists'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + if (isset($GLOBALS['sql_constraints'])) { + unset($GLOBALS['sql_constraints']); + } + + if (isset($GLOBALS['no_constraints_comments'])) { + unset($GLOBALS['no_constraints_comments']); + } + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('query') + ->with( + 'SHOW TABLE STATUS FROM `db` LIKE \'table\'', null, + PMA_DatabaseInterface::QUERY_STORE + ) + ->will($this->returnValue('res')); + + $dbi->expects($this->never()) + ->method('fetchSingleRow'); + + $dbi->expects($this->once()) + ->method('numRows') + ->with('res') + ->will($this->returnValue(2)); + + $dbi->expects($this->any()) + ->method('fetchValue') + ->will($this->returnValue(false)); + + $tmpres = array( + 'Auto_increment' => 1, + 'Create_time' => '2000-01-01 10:00:00', + 'Update_time' => '2000-01-02 12:00:00', + 'Check_time' => '2000-01-02 13:00:00', + ); + + $dbi->expects($this->once()) + ->method('fetchAssoc') + ->with('res') + ->will($this->returnValue($tmpres)); + + $dbi->expects($this->at(5)) + ->method('query') + ->with('SET SQL_QUOTE_SHOW_CREATE = 1') + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with('SHOW CREATE TABLE `db`.`table`') + ->will($this->returnValue('res')); + + $row = array( + '', + "CREATE TABLE `db`.`table`,\n CONSTRAINT KEYS \nFOREIGN KEY\n) " . + "unsigned NOT NULL\n(\r\n" + ); + + $dbi->expects($this->once()) + ->method('fetchRow') + ->with('res') + ->will($this->returnValue($row)); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + + $result = $this->object->getTableDef( + 'db', 'table', "\n", "example.com/err", true, true, true + ); + + $this->assertContains( + '-- Creation: Jan 01, 2000 at 10:00 AM', + $result + ); + + $this->assertContains( + '-- Last update: Jan 02, 2000 at 12:00 PM', + $result + ); + + $this->assertContains( + '-- Last check: Jan 02, 2000 at 01:00 PM', + $result + ); + + $this->assertContains( + 'DROP TABLE IF EXISTS `table`;', + $result + ); + + $this->assertContains( + "CREATE TABLE `table`\n", + $result + ); + + $this->assertContains( + ") NOT NULL\n", + $result + ); + + $this->assertContains( + '-- Constraints for dumped tables', + $GLOBALS['sql_constraints'] + ); + + $this->assertContains( + '-- Constraints for table "table"', + $GLOBALS['sql_constraints'] + ); + + $this->assertContains( + 'ALTER TABLE "table"' . "\n", + $GLOBALS['sql_constraints'] + ); + + $this->assertContains( + 'ADD CONSTRAINT KEYS ' . "\n", + $GLOBALS['sql_constraints'] + ); + + $this->assertContains( + 'ADD FOREIGN KEY;', + $GLOBALS['sql_constraints'] + ); + + $this->assertContains( + 'ALTER TABLE "table"' . "\n", + $GLOBALS['sql_constraints_query'] + ); + + $this->assertContains( + 'ADD CONSTRAINT KEYS ADD FOREIGN KEY;', + $GLOBALS['sql_constraints_query'] + ); + + $this->assertContains( + 'ALTER TABLE "db"."table"' . "\n", + $GLOBALS['sql_drop_foreign_keys'] + ); + + $this->assertContains( + 'DROP FOREIGN KEY KEYS', + $GLOBALS['sql_drop_foreign_keys'] + ); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportSql::getTableDef + * + * @return void + */ + public function testGetTableDefWithDrizzle() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (!PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', true); + } + } + + $GLOBALS['sql_auto_increment'] = true; + $GLOBALS['sql_drop_table'] = true; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_if_not_exists'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + if (isset($GLOBALS['sql_compatibility'])) { + unset($GLOBALS['sql_compatibility']); + } + + if (isset($GLOBALS['sql_constraints'])) { + unset($GLOBALS['sql_constraints']); + } + + $GLOBALS['no_constraints_comments'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('query') + ->with( + 'SHOW TABLE STATUS FROM `db` LIKE \'table\'', null, + PMA_DatabaseInterface::QUERY_STORE + ) + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('numRows') + ->with('res') + ->will($this->returnValue(2)); + + $dbi->expects($this->once()) + ->method('fetchSingleRow') + ->will($this->returnValue(array())); + + $dbi->expects($this->any()) + ->method('fetchValue') + ->will($this->returnValue(false)); + + $tmpres = array( + 'Auto_increment' => 1, + 'Create_time' => '2000-01-01 10:00:00', + 'Update_time' => '2000-01-02 12:00:00', + 'Check_time' => '2000-01-02 13:00:00', + ); + + $dbi->expects($this->once()) + ->method('fetchAssoc') + ->with('res') + ->will($this->returnValue($tmpres)); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with('SHOW CREATE TABLE `db`.`table`') + ->will($this->returnValue('res')); + + $row = array( + '', + "CREATE TABLE `db`.`table` ROW_FORMAT='row',\n CONSTRAINT " + . "KEYS \nFOREIGN KEY\n) unsigned NOT NULL\n(\r" + ); + + $dbi->expects($this->once()) + ->method('fetchRow') + ->with('res') + ->will($this->returnValue($row)); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + + $result = $this->object->getTableDef( + 'db', 'table', "\n", "example.com/err", true, true, true + ); + + $this->assertContains( + "CREATE TABLE IF NOT EXISTS `table` ROW_FORMAT=row", + $result + ); + + $this->assertContains( + ") unsigned NOT NULL\n", + $result + ); + + $this->assertContains( + "AUTO_INCREMENT=1 ;", + $result + ); + + $this->assertNotContains( + '-- Constraints for table', + $GLOBALS['sql_constraints'] + ); + + $this->assertNotContains( + '-- Constraints for table "table"', + $GLOBALS['sql_constraints'] + ); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportSql::getTableDef + * + * @return void + */ + public function testGetTableDefWithError() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $GLOBALS['sql_compatibility'] = ''; + $GLOBALS['sql_auto_increment'] = true; + $GLOBALS['sql_drop_table'] = true; + $GLOBALS['sql_backquotes'] = false; + $GLOBALS['sql_if_not_exists'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + if (isset($GLOBALS['sql_constraints'])) { + unset($GLOBALS['sql_constraints']); + } + + if (isset($GLOBALS['no_constraints_comments'])) { + unset($GLOBALS['no_constraints_comments']); + } + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('query') + ->with( + 'SHOW TABLE STATUS FROM `db` LIKE \'table\'', null, + PMA_DatabaseInterface::QUERY_STORE + ) + ->will($this->returnValue('res')); + + $dbi->expects($this->never()) + ->method('fetchSingleRow'); + + $dbi->expects($this->once()) + ->method('numRows') + ->with('res') + ->will($this->returnValue(2)); + + $dbi->expects($this->any()) + ->method('fetchValue') + ->will($this->returnValue(false)); + + $tmpres = array( + 'Auto_increment' => 1, + 'Create_time' => '2000-01-01 10:00:00', + 'Update_time' => '2000-01-02 12:00:00', + 'Check_time' => '2000-01-02 13:00:00', + ); + + $dbi->expects($this->once()) + ->method('fetchAssoc') + ->with('res') + ->will($this->returnValue($tmpres)); + + $dbi->expects($this->at(5)) + ->method('query') + ->with('SET SQL_QUOTE_SHOW_CREATE = 0') + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with('SHOW CREATE TABLE `db`.`table`') + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('getError') + ->will($this->returnValue('error occurred')); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + + $result = $this->object->getTableDef( + 'db', 'table', "\n", "example.com/err", true, true, true + ); + + $this->assertContains( + '-- in use(error occurred)', + $result + ); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportSql::_getTableComments + * + * @return void + */ + public function testGetTableComments() + { + $_SESSION['relation'][0] = array( + 'relwork' => true, + 'commwork' => true, + 'mimework' => true, + 'db' => 'database', + 'relation' => 'rel', + 'column_info' => 'col' + ); + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('fetchResult') + ->will( + $this->returnValue( + array( + 'foo' => array( + 'foreign_table' => 'ftable', + 'foreign_field' => 'ffield' + ) + ) + ) + ); + + $dbi->expects($this->at(1)) + ->method('fetchResult') + ->will( + $this->returnValue( + array( + 'fieldname' => array( + 'values' => 'test-', + 'transformation' => 'testfoo', + 'mimetype' => 'test<' + ) + ) + ) + ); + $GLOBALS['dbi'] = $dbi; + + $method = new ReflectionMethod('ExportSql', '_getTableComments'); + $method->setAccessible(true); + $result = $method->invoke( + $this->object, 'db', '', "\n", true, true + ); + + $this->assertContains( + "-- MIME TYPES FOR TABLE :\n" . + "-- fieldname\n" . + "-- Test<", + $result + ); + + $this->assertContains( + "-- RELATIONS FOR TABLE :\n" . + "-- foo\n" . + "-- ftable -> ffield", + $result + ); + } + + /** + * Test for ExportSql::exportStructure + * + * @return void + */ + public function testExportStructure() + { + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getTriggers') + ->with('db', 't&bl') + ->will( + $this->returnValue( + array( + array('create' => 'bar', 'drop' => 'foo') + ) + ) + ); + + $this->object = $this->getMockBuilder('ExportSql') + ->setMethods(array('getTableDef', 'getTriggers', 'getTableDefStandIn')) + ->getMock(); + + $this->object->expects($this->at(0)) + ->method('getTableDef') + ->with('db', 't&bl', "\n", "example.com", false) + ->will($this->returnValue('dumpText1')); + + $this->object->expects($this->at(1)) + ->method('getTableDef') + ->with( + 'db', 't&bl', "\n", "example.com", false + ) + ->will($this->returnValue('dumpText3')); + + $this->object->expects($this->once()) + ->method('getTableDefStandIn') + ->with('db', 't&bl', "\n") + ->will($this->returnValue('dumpText4')); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['sql_compatibility'] = 'MSSQL'; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + // case 1 + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "create_table", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + '-- Table structure for table "t&bl"', + $result + ); + + $this->assertContains( + 'dumpText1', + $result + ); + + // case 2 + unset($GLOBALS['sql_compatibility']); + unset($GLOBALS['sql_backquotes']); + + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "triggers", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + "-- Triggers 't&bl'\n", + $result + ); + + $this->assertContains( + "foo;\nDELIMITER //\nbarDELIMITER ;\n", + $result + ); + + // case 3 + $GLOBALS['sql_views_as_tables'] = false; + + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "create_view", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + "-- Structure for view 't&bl'\n", + $result + ); + + $this->assertContains( + "DROP TABLE IF EXISTS `t&bl`;\n" . + "dumpText3", + $result + ); + + // case 4 + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getColumns') + ->will( + $this->returnValue( + array() + ) + ); + $GLOBALS['dbi'] = $dbi; + $GLOBALS['sql_views_as_tables'] = true; + + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "create_view", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + "CREATE TABLE`t&bl`(\n\n);", + $result + ); + + $this->assertContains( + "DROP TABLE IF EXISTS `t&bl`;\n", + $result + ); + + // case 5 + + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "stand_in", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + "dumpText4", + $result + ); + } + + /** + * Test for ExportSql::exportData + * + * @return void + */ + public function testExportData() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $flags = array(); + $a = new StdClass; + $a->blob = false; + $a->numeric = true; + $a->type = 'ts'; + $a->name = 'name'; + $a->length = 2; + $flags[] = $a; + + $a = new StdClass; + $a->blob = false; + $a->numeric = true; + $a->type = 'ts'; + $a->name = 'name'; + $a->length = 2; + $flags[] = $a; + + $a = new StdClass; + $a->blob = true; + $a->numeric = false; + $a->type = 'ts'; + $a->name = 'name'; + $a->length = 2; + $flags[] = $a; + + $a = new StdClass; + $a->type = "bit"; + $a->blob = false; + $a->numeric = false; + $a->name = 'name'; + $a->length = 2; + $flags[] = $a; + + $a = new StdClass; + $a->blob = false; + $a->numeric = true; + $a->type = 'timestamp'; + $a->name = 'name'; + $a->length = 2; + $flags[] = $a; + + $dbi->expects($this->once()) + ->method('getFieldsMeta') + ->with('res') + ->will($this->returnValue($flags)); + + $dbi->expects($this->any()) + ->method('fieldFlags') + ->will($this->returnValue('biNAry')); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with( + "SELECT a FROM b WHERE 1", + null, + PMA_DatabaseInterface::QUERY_UNBUFFERED + ) + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('numFields') + ->with('res') + ->will($this->returnValue(5)); + + $dbi->expects($this->at(10)) + ->method('fetchRow') + ->with('res') + ->will( + $this->returnValue( + array(null, 'test', '10', 'foo', "\x00\x0a\x0d\x1a") + ) + ); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['sql_compatibility'] = 'MSSQL'; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_views_as_tables'] = true; + $GLOBALS['sql_type'] = 'INSERT'; + $GLOBALS['sql_delayed'] = ' DELAYED'; + $GLOBALS['sql_ignore'] = true; + $GLOBALS['sql_truncate'] = true; + $GLOBALS['sql_insert_syntax'] = 'both'; + $GLOBALS['sql_hex_for_blob'] = true; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + + ob_start(); + $this->object->exportData( + 'db', 'table', "\n", "example.com/err", + "SELECT a FROM b WHERE 1" + ); + $result = ob_get_clean(); + + $this->assertContains( + 'TRUNCATE TABLE "table";', + $result + ); + + $this->assertContains( + 'SET IDENTITY_INSERT "table" ON ;', + $result + ); + + $this->assertContains( + 'INSERT DELAYED IGNORE INTO "table" ("a", ' . + '"name", "name", "name", ' . + '"name") VALUES', + $result + ); + + $this->assertContains( + "(NULL, test, 0x3130, b'10', " . '\'\0\n\r\Z\');', + $result + ); + + $this->assertContains( + "SET IDENTITY_INSERT "table" OFF;", + $result + ); + + } + + /** + * Test for ExportSql::exportData + * + * @return void + */ + public function testExportDataWithUpdate() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $flags = array(); + $a = new StdClass; + $a->blob = false; + $a->numeric = true; + $a->type = 'real'; + $a->name = 'name'; + $a->length = 2; + $a->table = 'tbl'; + $a->orgname = 'pma'; + $a->primary_key = 1; + $flags[] = $a; + + $a = new StdClass; + $a->blob = false; + $a->numeric = true; + $a->type = ''; + $a->name = 'name'; + $a->table = 'tbl'; + $a->orgname = 'pma'; + $a->length = 2; + $a->primary_key = 0; + $a->unique_key = 1; + $flags[] = $a; + + $dbi->expects($this->once()) + ->method('getFieldsMeta') + ->with('res') + ->will($this->returnValue($flags)); + + $dbi->expects($this->any()) + ->method('fieldFlags') + ->will($this->returnValue('biNAry')); + + $dbi->expects($this->once()) + ->method('tryQuery') + ->with( + "SELECT a FROM b WHERE 1", + null, + PMA_DatabaseInterface::QUERY_UNBUFFERED + ) + ->will($this->returnValue('res')); + + $dbi->expects($this->once()) + ->method('numFields') + ->with('res') + ->will($this->returnValue(2)); + + $dbi->expects($this->at(7)) + ->method('fetchRow') + ->with('res') + ->will( + $this->returnValue( + array(null, null) + ) + ); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['sql_compatibility'] = 'MSSQL'; + $GLOBALS['sql_backquotes'] = true; + $GLOBALS['sql_views_as_tables'] = true; + $GLOBALS['sql_type'] = 'UPDATE'; + $GLOBALS['sql_delayed'] = ' DELAYED'; + $GLOBALS['sql_ignore'] = true; + $GLOBALS['sql_truncate'] = true; + $GLOBALS['sql_insert_syntax'] = 'both'; + $GLOBALS['sql_hex_for_blob'] = true; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + + ob_start(); + $this->object->exportData( + 'db', 'table', "\n", "example.com/err", + "SELECT a FROM b WHERE 1" + ); + $result = ob_get_clean(); + + $this->assertContains( + 'UPDATE IGNORE "table" SET "a" = NULL,' . + '"name" = NULL WHERE CONCAT(`tbl`.`pma`) IS NULL;', + $result + ); + + } + + /** + * Test for ExportSql::exportData + * + * @return void + */ + public function testExportDataWithIsView() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('fetchResult') + ->will($this->returnValue(true)); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + $GLOBALS['sql_views_as_tables'] = false; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + ob_start(); + $this->assertTrue( + $this->object->exportData('db', 'table', "\n", "err.com", "SELECT") + ); + $result = ob_get_clean(); + + $this->assertContains( + "-- VIEW 'table'\n", + $result + ); + + $this->assertContains( + "-- Data: None\n", + $result + ); + } + + /** + * Test for ExportSql::exportData + * + * @return void + */ + public function testExportDataWithError() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getError') + ->will($this->returnValue('err')); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + $GLOBALS['sql_views_as_tables'] = true; + $GLOBALS['sql_include_comments'] = true; + $GLOBALS['crlf'] = "\n"; + + ob_start(); + $this->assertTrue( + $this->object->exportData('db', 'table', "\n", "err.com", "SELECT") + ); + $result = ob_get_clean(); + + $this->assertContains( + "-- Error reading data: (err)\n", + $result + ); + } + + /** + * Test for ExportSql::_makeCreateTableMSSQLCompatible + * + * @return void + */ + public function testMakeCreateTableMSSQLCompatible() + { + + $query = "CREATE TABLE IF NOT EXISTS (\" date DEFAULT NULL,\n" . + "\" date DEFAULT NULL\n\" date NOT NULL,\n\" date NOT NULL\n," . + " \" date NOT NULL DEFAULT 'asd'," . + " ) unsigned NOT NULL\n, ) unsigned NOT NULL,\n" . + " ) unsigned DEFAULT NULL\n, ) unsigned DEFAULT NULL,\n" . + " ) unsigned NOT NULL DEFAULT 'dsa',\n" . + " \" int(10) DEFAULT NULL,\n" . + " \" tinyint(0) DEFAULT NULL\n" . + " \" smallint(10) NOT NULL,\n" . + " \" bigint(0) NOT NULL\n" . + " \" bigint(0) NOT NULL DEFAULT '12'\n" . + " \" float(22,2,) DEFAULT NULL,\n" . + " \" double DEFAULT NULL\n" . + " \" float(22,2,) NOT NULL,\n" . + " \" double NOT NULL\n" . + " \" double NOT NULL DEFAULT '213'\n"; + + $method = new ReflectionMethod( + 'ExportSql', '_makeCreateTableMSSQLCompatible' + ); + $method->setAccessible(true); + $result = $method->invoke( + $this->object, $query + ); + + $this->assertEquals( + "CREATE TABLE (\" datetime DEFAULT NULL,\n" . + "\" datetime DEFAULT NULL\n" . + "\" datetime NOT NULL,\n" . + "\" datetime NOT NULL\n" . + ", \" datetime NOT NULL DEFAULT 'asd', ) NOT NULL\n" . + ", ) NOT NULL,\n" . + " ) DEFAULT NULL\n" . + ", ) DEFAULT NULL,\n" . + " ) NOT NULL DEFAULT 'dsa',\n" . + " \" int DEFAULT NULL,\n" . + " \" tinyint DEFAULT NULL\n" . + " \" smallint NOT NULL,\n" . + " \" bigint NOT NULL\n" . + " \" bigint NOT NULL DEFAULT '12'\n" . + " \" float DEFAULT NULL,\n" . + " \" float DEFAULT NULL\n" . + " \" float NOT NULL,\n" . + " \" float NOT NULL\n" . + " \" float NOT NULL DEFAULT '213'\n", + $result + ); + } +} +?> diff --git a/test/classes/plugin/export/PMA_ExportTexytext_test.php b/test/classes/plugin/export/PMA_ExportTexytext_test.php new file mode 100644 index 0000000000..733a46ae94 --- /dev/null +++ b/test/classes/plugin/export/PMA_ExportTexytext_test.php @@ -0,0 +1,653 @@ +object = new ExportTexytext(); + } + + /** + * tearDown for test cases + * + * @return void + */ + public function tearDown() + { + unset($this->object); + } + + /** + * Test for ExportTexytext::setProperties + * + * @return void + */ + public function testSetProperties() + { + $method = new ReflectionMethod('ExportTexytext', 'setProperties'); + $method->setAccessible(true); + $method->invoke($this->object, null); + + $attrProperties = new ReflectionProperty('ExportTexytext', 'properties'); + $attrProperties->setAccessible(true); + $properties = $attrProperties->getValue($this->object); + + $this->assertInstanceOf( + 'ExportPluginProperties', + $properties + ); + + $this->assertEquals( + 'Texy! text', + $properties->getText() + ); + + $this->assertEquals( + 'txt', + $properties->getExtension() + ); + + $this->assertEquals( + 'text/plain', + $properties->getMimeType() + ); + + $options = $properties->getOptions(); + + $this->assertInstanceOf( + 'OptionsPropertyRootGroup', + $options + ); + + $this->assertEquals( + 'Format Specific Options', + $options->getName() + ); + + $generalOptionsArray = $options->getProperties(); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'general_opts', + $generalOptions->getName() + ); + + $this->assertEquals( + "Dump table", + $generalOptions->getText() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'RadioPropertyItem', + $property + ); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'data', + $generalOptions->getName() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $this->assertEquals( + 'columns', + $property->getName() + ); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'TextPropertyItem', + $property + ); + + $this->assertEquals( + 'null', + $property->getName() + ); + } + + /** + * Test for ExportTexytext::exportHeader + * + * @return void + */ + public function testExportHeader() + { + $this->assertTrue( + $this->object->exportHeader() + ); + } + + /** + * Test for ExportTexytext::exportFooter + * + * @return void + */ + public function testExportFooter() + { + $this->assertTrue( + $this->object->exportFooter() + ); + } + + /** + * Test for ExportTexytext::exportDBHeader + * + * @return void + */ + public function testExportDBHeader() + { + $this->expectOutputString( + "===Database testDb\n\n" + ); + $this->assertTrue( + $this->object->exportDBHeader('testDb') + ); + } + + /** + * Test for ExportTexytext::exportDBFooter + * + * @return void + */ + public function testExportDBFooter() + { + $this->assertTrue( + $this->object->exportDBFooter('testDB') + ); + } + + /** + * Test for ExportTexytext::exportDBCreate + * + * @return void + */ + public function testExportDBCreate() + { + $this->assertTrue( + $this->object->exportDBCreate('testDB') + ); + } + + /** + * Test for ExportTexytext::exportData + * + * @return void + */ + public function testExportData() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('query') + ->with('SELECT', null, PMA_DatabaseInterface::QUERY_UNBUFFERED) + ->will($this->returnValue(true)); + + $dbi->expects($this->once()) + ->method('numFields') + ->with(true) + ->will($this->returnValue(3)); + + $dbi->expects($this->at(2)) + ->method('fieldName') + ->will($this->returnValue('fName1')); + + $dbi->expects($this->at(3)) + ->method('fieldName') + ->will($this->returnValue('fNa"me2')); + + $dbi->expects($this->at(4)) + ->method('fieldName') + ->will($this->returnValue('fName3')); + + $dbi->expects($this->at(5)) + ->method('fetchRow') + ->with(true) + ->will($this->returnValue(array(null, '0', 'test'))); + + $GLOBALS['dbi'] = $dbi; + $GLOBALS['what'] = 'foo'; + $GLOBALS['foo_columns'] = "&"; + $GLOBALS['foo_null'] = ">"; + + ob_start(); + $this->assertTrue( + $this->object->exportData( + 'db', 'taassertContains( + "|fName1|fNa&quot;me2|fName3", + $result + ); + + $this->assertContains( + "|&gt;|0|test", + $result + ); + + } + + /** + * Test for ExportTexytext::getTableDefStandIn + * + * @return void + */ + public function testGetTableDefStandIn() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getColumns') + ->with('db', 'view') + ->will($this->returnValue(array(1, 2))); + + $keys = array( + array( + 'Non_unique' => 0, + 'Column_name' => 'cname' + ), + array( + 'Non_unique' => 1, + 'Column_name' => 'cname2' + ) + ); + + $dbi->expects($this->once()) + ->method('getTableIndexes') + ->with('db', 'view') + ->will($this->returnValue($keys)); + + $dbi->expects($this->once()) + ->method('selectDb') + ->with('db'); + + $GLOBALS['dbi'] = $dbi; + + $this->object = $this->getMockBuilder('ExportTexytext') + ->disableOriginalConstructor() + ->setMethods(array('formatOneColumnDefinition')) + ->getMock(); + + $this->object->expects($this->at(0)) + ->method('formatOneColumnDefinition') + ->with(1, array('cname')) + ->will($this->returnValue('c1')); + + $this->object->expects($this->at(1)) + ->method('formatOneColumnDefinition') + ->with(2, array('cname')) + ->will($this->returnValue('c2')); + + $result = $this->object->getTableDefStandIn('db', 'view', '#'); + + $this->assertContains( + "c1\nc2", + $result + ); + } + + /** + * Test for ExportTexytext::getTableDef + * + * @return void + */ + public function testGetTableDef() + { + $this->object = $this->getMockBuilder('ExportTexytext') + ->setMethods(array('formatOneColumnDefinition')) + ->getMock(); + + // case 1 + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $keys = array( + array( + 'Non_unique' => 0, + 'Column_name' => 'cname' + ), + array( + 'Non_unique' => 1, + 'Column_name' => 'cname2' + ) + ); + + $dbi->expects($this->once()) + ->method('getTableIndexes') + ->with('db', 'table') + ->will($this->returnValue($keys)); + + $dbi->expects($this->at(2)) + ->method('fetchResult') + ->will( + $this->returnValue( + array( + 'fname' => array( + 'foreign_table' => ' 'ffield>' + ) + ) + ) + ); + + $dbi->expects($this->at(3)) + ->method('fetchValue') + ->will( + $this->returnValue( + 'SELECT a FROM b' + ) + ); + + $dbi->expects($this->at(5)) + ->method('fetchResult') + ->will( + $this->returnValue( + array( + 'fname' => array( + 'values' => 'test-', + 'transformation' => 'testfoo', + 'mimetype' => 'test<' + ) + ) + ) + ); + + + $columns = array( + 'Field' => 'fname', + 'Comment' => 'comm' + ); + + $dbi->expects($this->exactly(2)) + ->method('getColumns') + ->with('db', 'table') + ->will($this->returnValue(array($columns))); + + $GLOBALS['dbi'] = $dbi; + + $this->object->expects($this->exactly(1)) + ->method('formatOneColumnDefinition') + ->with(array('Field' => 'fname', 'Comment' => 'comm'), array('cname')) + ->will($this->returnValue(1)); + + $GLOBALS['cfgRelation']['relation'] = true; + $_SESSION['relation'][0] = array( + 'relwork' => true, + 'commwork' => true, + 'mimework' => true, + 'db' => 'db', + 'relation' => 'rel', + 'column_info' => 'col' + ); + + $result = $this->object->getTableDef( + 'db', + 'table', + "\n", + "example.com", + true, + true, + true + ); + + $this->assertContains( + '1|<ftable (ffield>)|comm|Test<', + $result + ); + } + + /** + * Test for ExportTexytext::getTriggers + * + * @return void + */ + public function testGetTriggers() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $triggers = array( + array( + 'name' => 'tna"me', + 'action_timing' => 'ac>t', + 'event_manipulation' => 'manip&', + 'definition' => 'def' + ) + ); + + $dbi->expects($this->once()) + ->method('getTriggers') + ->with('database', 'tawill($this->returnValue($triggers)); + + $GLOBALS['dbi'] = $dbi; + + $result = $this->object->getTriggers('database', 'taassertContains( + '|tna"me|ac>t|manip&|def', + $result + ); + + $this->assertContains( + '|Name|Time|Event|Definition', + $result + ); + + } + + /** + * Test for ExportTexytext::exportStructure + * + * @return void + */ + public function testExportStructure() + { + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('getTriggers') + ->with('db', 't&bl') + ->will($this->returnValue(1)); + + $this->object = $this->getMockBuilder('ExportTexytext') + ->setMethods(array('getTableDef', 'getTriggers', 'getTableDefStandIn')) + ->getMock(); + + $this->object->expects($this->at(0)) + ->method('getTableDef') + ->with('db', 't&bl', "\n", "example.com", false, false, false, false) + ->will($this->returnValue('dumpText1')); + + $this->object->expects($this->once()) + ->method('getTriggers') + ->with('db', 't&bl') + ->will($this->returnValue('dumpText2')); + + $this->object->expects($this->at(2)) + ->method('getTableDef') + ->with( + 'db', 't&bl', "\n", "example.com", + false, false, false, false, true, true + ) + ->will($this->returnValue('dumpText3')); + + $this->object->expects($this->once()) + ->method('getTableDefStandIn') + ->with('db', 't&bl', "\n") + ->will($this->returnValue('dumpText4')); + + $GLOBALS['dbi'] = $dbi; + + // case 1 + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "create_table", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertContains( + '== Table structure for table t&bl' . "\n\ndumpText1", + $result + ); + + // case 2 + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "triggers", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertEquals( + '== Triggers t&bl' . "\n\ndumpText2", + $result + ); + + // case 3 + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "create_view", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertEquals( + '== Structure for view t&bl' . "\n\ndumpText3", + $result + ); + + // case 4 + ob_start(); + $this->assertTrue( + $this->object->exportStructure( + 'db', 't&bl', "\n", "example.com", "stand_in", "test" + ) + ); + $result = ob_get_clean(); + + $this->assertEquals( + '== Stand-in structure for view t&bl' . "\n\ndumpText4", + $result + ); + } + + /** + * Test for ExportTexytext::formatOneColumnDefinition + * + * @return void + */ + public function testFormatOneColumnDefinition() + { + $GLOBALS['cfg']['LimitChars'] = 40; + + $cols = array( + 'Null' => 'Yes', + 'Field' => 'field', + 'Key' => 'PRI', + 'Type' => 'set(abc)enum123' + ); + + $unique_keys = array( + 'field' + ); + + $this->assertEquals( + '|//**field**//|set(abc)|Yes|NULL', + $this->object->formatOneColumnDefinition($cols, $unique_keys) + ); + + $cols = array( + 'Null' => 'NO', + 'Field' => 'fields', + 'Key' => 'COMP', + 'Type' => '', + 'Default' => 'def' + ); + + $unique_keys = array( + 'field' + ); + + $this->assertEquals( + '|fields|&nbsp;|No|def', + $this->object->formatOneColumnDefinition($cols, $unique_keys) + ); + } +} +?> diff --git a/test/classes/plugin/export/PMA_ExportXml_test.php b/test/classes/plugin/export/PMA_ExportXml_test.php new file mode 100644 index 0000000000..822edd042c --- /dev/null +++ b/test/classes/plugin/export/PMA_ExportXml_test.php @@ -0,0 +1,704 @@ +object = new ExportXml(); + } + + /** + * tearDown for test cases + * + * @return void + */ + public function tearDown() + { + unset($this->object); + } + + /** + * Test for ExportXml::setProperties + * + * @return void + */ + public function testSetProperties() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $method = new ReflectionMethod('ExportXml', 'setProperties'); + $method->setAccessible(true); + $method->invoke($this->object, null); + + $attrProperties = new ReflectionProperty('ExportXml', 'properties'); + $attrProperties->setAccessible(true); + $properties = $attrProperties->getValue($this->object); + + $this->assertInstanceOf( + 'ExportPluginProperties', + $properties + ); + + $this->assertEquals( + 'XML', + $properties->getText() + ); + + $this->assertEquals( + 'xml', + $properties->getExtension() + ); + + $this->assertEquals( + 'text/xml', + $properties->getMimeType() + ); + + $options = $properties->getOptions(); + + $this->assertInstanceOf( + 'OptionsPropertyRootGroup', + $options + ); + + $this->assertEquals( + 'Format Specific Options', + $options->getName() + ); + + $generalOptionsArray = $options->getProperties(); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'general_opts', + $generalOptions->getName() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'HiddenPropertyItem', + $property + ); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'structure', + $generalOptions->getName() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'data', + $generalOptions->getName() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'BoolPropertyItem', + $property + ); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportXml::exportHeader + * + * @return void + */ + public function testExportHeaderWithoutDrizzle() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', false); + } + } + + $GLOBALS['xml_export_functions'] = 1; + $GLOBALS['xml_export_contents'] = 1; + $GLOBALS['output_charset_conversion'] = 1; + $GLOBALS['charset_of_file'] = 'iso-8859-1'; + $GLOBALS['cfg']['Server']['port'] = 80; + $GLOBALS['cfg']['Server']['host'] = 'localhost'; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + $GLOBALS['xml_export_tables'] = 1; + $GLOBALS['xml_export_triggers'] = 1; + $GLOBALS['xml_export_procedures'] = 1; + $GLOBALS['xml_export_functions'] = 1; + $GLOBALS['crlf'] = "\n"; + $GLOBALS['db'] = 'd<"b'; + + $result = array( + 0 => array( + 'DEFAULT_COLLATION_NAME' => 'utf8_general_ci', + 'DEFAULT_CHARACTER_SET_NAME' => 'utf-8', + + ), + 'table' => array(null, '"tbl"') + ); + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('fetchResult') + ->with( + 'SELECT `DEFAULT_CHARACTER_SET_NAME`, `DEFAULT_COLLATION_NAME`' + . ' FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`' + . ' = \'d<"b\' LIMIT 1' + ) + ->will($this->returnValue($result)); + + $dbi->expects($this->at(1)) + ->method('fetchResult') + ->with( + 'SHOW CREATE TABLE `d<"b`.`table`', + 0 + ) + ->will($this->returnValue($result)); + + // isView + $dbi->expects($this->at(2)) + ->method('fetchResult') + ->will($this->returnValue(false)); + + $dbi->expects($this->at(3)) + ->method('getTriggers') + ->with('d<"b', 'table') + ->will( + $this->returnValue( + array( + array( + 'create' => 'crt', + 'name' => 'trname' + ) + ) + ) + ); + + $dbi->expects($this->at(4)) + ->method('getProceduresOrFunctions') + ->with('d<"b', 'FUNCTION') + ->will( + $this->returnValue( + array( + 'fn' + ) + ) + ); + + $dbi->expects($this->at(5)) + ->method('getDefinition') + ->with('d<"b', 'FUNCTION', 'fn') + ->will( + $this->returnValue( + 'fndef' + ) + ); + + $dbi->expects($this->at(6)) + ->method('getProceduresOrFunctions') + ->with('d<"b', 'PROCEDURE') + ->will( + $this->returnValue( + array( + 'pr' + ) + ) + ); + + $dbi->expects($this->at(7)) + ->method('getDefinition') + ->with('d<"b', 'PROCEDURE', 'pr') + ->will( + $this->returnValue( + 'prdef' + ) + ); + + $GLOBALS['dbi'] = $dbi; + + $GLOBALS['tables'] = array(); + $GLOBALS['table'] = 'table'; + + ob_start(); + $this->assertTrue( + $this->object->exportHeader() + ); + $result = ob_get_clean(); + + $this->assertContains( + '<pma_xml_export version="1.0" xmlns:pma="' . + 'http://www.phpmyadmin.net/some_doc_url/">', + $result + ); + + $this->assertContains( + '<pma:structure_schemas>' . "\n" . + ' <pma:database name="d&lt;&quot;b" collat' . + 'ion="utf8_general_ci" charset="utf-8">' . "\n" . + ' <pma:table name="table">' . "\n" . + ' &quot;tbl&quot;;' . "\n" . + ' </pma:table>' . "\n" . + ' <pma:trigger name="trname">' . "\n" . + ' ' . "\n" . + ' </pma:trigger>' . "\n" . + ' <pma:function name="fn">' . "\n" . + ' fndef' . "\n" . + ' </pma:function>' . "\n" . + ' <pma:procedure name="pr">' . "\n" . + ' prdef' . "\n" . + ' </pma:procedure>' . "\n" . + ' </pma:database>' . "\n" . + ' </pma:structure_schemas>', + $result + ); + + // case 2 with isView as true and false + + unset($GLOBALS['xml_export_contents']); + unset($GLOBALS['xml_export_views']); + unset($GLOBALS['xml_export_tables']); + unset($GLOBALS['xml_export_functions']); + unset($GLOBALS['xml_export_procedures']); + $GLOBALS['output_charset_conversion'] = 0; + + $result = array( + array( + 'DEFAULT_COLLATION_NAME' => 'utf8_general_ci', + 'DEFAULT_CHARACTER_SET_NAME' => 'utf-8', + + ) + ); + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('fetchResult') + ->with( + 'SELECT `DEFAULT_CHARACTER_SET_NAME`, `DEFAULT_COLLATION_NAME`' + . ' FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`' + . ' = \'d<"b\' LIMIT 1' + ) + ->will($this->returnValue($result)); + + $result = array( + 't1' => array(null, '"tbl"') + ); + + $dbi->expects($this->at(1)) + ->method('fetchResult') + ->with( + 'SHOW CREATE TABLE `d<"b`.`t1`', + 0 + ) + ->will($this->returnValue($result)); + + // isView + $dbi->expects($this->at(2)) + ->method('fetchResult') + ->will($this->returnValue(true)); + + $result = array( + 't2' => array(null, '"tbl"') + ); + + $dbi->expects($this->at(3)) + ->method('fetchResult') + ->with( + 'SHOW CREATE TABLE `d<"b`.`t2`', + 0 + ) + ->will($this->returnValue($result)); + + // isView + $dbi->expects($this->at(4)) + ->method('fetchResult') + ->will($this->returnValue(false)); + + $GLOBALS['dbi'] = $dbi; + + $GLOBALS['tables'] = array('t1', 't2'); + + ob_start(); + $this->assertTrue( + $this->object->exportHeader() + ); + $result = ob_get_clean(); + + //echo $result; die; + $this->assertContains( + '<pma:structure_schemas>' . "\n" . + ' <pma:database name="d&lt;&quot;b" collat' . + 'ion="utf8_general_ci" charset="utf-8">' . "\n" . + ' </pma:database>' . "\n" . + ' </pma:structure_schemas>', + $result + ); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportXml::exportHeader + * + * @return void + */ + public function testExportHeaderWithDrizzle() + { + $restoreDrizzle = 'PMANORESTORE'; + + if (!PMA_DRIZZLE) { + if (!PMA_HAS_RUNKIT) { + $this->markTestSkipped( + "Cannot redefine constant. Missing runkit extension" + ); + } else { + $restoreDrizzle = PMA_DRIZZLE; + runkit_constant_redefine('PMA_DRIZZLE', true); + } + } + + $GLOBALS['output_charset_conversion'] = false; + $GLOBALS['xml_export_triggers'] = true; + $GLOBALS['cfg']['Server']['port'] = 80; + $GLOBALS['cfg']['Server']['host'] = 'localhost'; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + $GLOBALS['crlf'] = "\n"; + $GLOBALS['db'] = 'd array( + 'DEFAULT_COLLATION_NAME' => 'utf8_general_ci', + 'DEFAULT_CHARACTER_SET_NAME' => 'utf-8', + + ), + 'table' => array(null, '"tbl"') + ); + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->at(0)) + ->method('fetchResult') + ->with( + "SELECT + 'utf8' AS DEFAULT_CHARACTER_SET_NAME, + DEFAULT_COLLATION_NAME + FROM data_dictionary.SCHEMAS + WHERE SCHEMA_NAME = 'dwill($this->returnValue($result)); + + $dbi->expects($this->at(1)) + ->method('fetchResult') + ->with( + 'SHOW CREATE TABLE `dwill($this->returnValue($result)); + + // isView + $dbi->expects($this->at(2)) + ->method('fetchResult') + ->will($this->returnValue(false)); + + + $GLOBALS['dbi'] = $dbi; + + $GLOBALS['tables'] = array(); + $GLOBALS['table'] = 'table'; + + ob_start(); + $this->assertTrue( + $this->object->exportHeader() + ); + $result = ob_get_clean(); + + if ($restoreDrizzle !== "PMANORESTORE") { + runkit_constant_redefine('PMA_DRIZZLE', $restoreDrizzle); + } + } + + /** + * Test for ExportXml::exportFooter + * + * @return void + */ + public function testExportFooter() + { + $this->expectOutputString( + '</pma_xml_export>' + ); + $this->assertTrue( + $this->object->exportFooter() + ); + } + + /** + * Test for ExportXml::exportDBHeader + * + * @return void + */ + public function testExportDBHeader() + { + $GLOBALS['xml_export_contents'] = true; + + ob_start(); + $this->assertTrue( + $this->object->exportDBHeader('&db') + ); + $result = ob_get_clean(); + + $this->assertContains( + '<database name="&amp;db">', + $result + ); + + $GLOBALS['xml_export_contents'] = false; + + $this->assertTrue( + $this->object->exportDBHeader('&db') + ); + } + + /** + * Test for ExportXml::exportDBFooter + * + * @return void + */ + public function testExportDBFooter() + { + $GLOBALS['xml_export_contents'] = true; + + ob_start(); + $this->assertTrue( + $this->object->exportDBFooter('&db') + ); + $result = ob_get_clean(); + + $this->assertContains( + '</database>', + $result + ); + + $GLOBALS['xml_export_contents'] = false; + + $this->assertTrue( + $this->object->exportDBFooter('&db') + ); + } + + /** + * Test for ExportXml::exportDBCreate + * + * @return void + */ + public function testExportDBCreate() + { + $this->assertTrue( + $this->object->exportDBCreate('testDB') + ); + } + + /** + * Test for ExportXml::exportData + * + * @return void + */ + public function testExportData() + { + $GLOBALS['xml_export_contents'] = true; + + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('query') + ->with('SELECT', null, PMA_DatabaseInterface::QUERY_UNBUFFERED) + ->will($this->returnValue(true)); + + $dbi->expects($this->once()) + ->method('numFields') + ->with(true) + ->will($this->returnValue(3)); + + $dbi->expects($this->at(2)) + ->method('fieldName') + ->will($this->returnValue('fName1')); + + $dbi->expects($this->at(3)) + ->method('fieldName') + ->will($this->returnValue('fNa"me2')); + + $dbi->expects($this->at(4)) + ->method('fieldName') + ->will($this->returnValue('fNa\\me3')); + + $dbi->expects($this->at(5)) + ->method('fetchRow') + ->with(true) + ->will($this->returnValue(array(null, ''))); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportData( + 'db', 'taassertContains( + "<!-- Table ta<ble -->", + $result + ); + + $this->assertContains( + "<table name="ta&lt;ble">", + $result + ); + + $this->assertContains( + "<column name="fName1">NULL</column>", + $result + ); + + $this->assertContains( + "<column name="fNa&quot;me2">&lt;a&gt;" . + "</column>", + $result + ); + + $this->assertContains( + "<column name="fName3">NULL</column>", + $result + ); + + $this->assertContains( + "</table>", + $result + ); + } +} +?> diff --git a/test/classes/plugin/export/PMA_ExportYaml_test.php b/test/classes/plugin/export/PMA_ExportYaml_test.php new file mode 100644 index 0000000000..eeeb75f034 --- /dev/null +++ b/test/classes/plugin/export/PMA_ExportYaml_test.php @@ -0,0 +1,267 @@ +object = new ExportYaml(); + } + + /** + * tearDown for test cases + * + * @return void + */ + public function tearDown() + { + unset($this->object); + } + + /** + * Test for ExportYaml::setProperties + * + * @return void + */ + public function testSetProperties() + { + $method = new ReflectionMethod('ExportYaml', 'setProperties'); + $method->setAccessible(true); + $method->invoke($this->object, null); + + $attrProperties = new ReflectionProperty('ExportYaml', 'properties'); + $attrProperties->setAccessible(true); + $properties = $attrProperties->getValue($this->object); + + $this->assertInstanceOf( + 'ExportPluginProperties', + $properties + ); + + $this->assertEquals( + 'YAML', + $properties->getText() + ); + + $this->assertEquals( + 'yml', + $properties->getExtension() + ); + + $this->assertEquals( + 'text/yaml', + $properties->getMimeType() + ); + + $options = $properties->getOptions(); + + $this->assertInstanceOf( + 'OptionsPropertyRootGroup', + $options + ); + + $this->assertEquals( + 'Format Specific Options', + $options->getName() + ); + + $generalOptionsArray = $options->getProperties(); + + $generalOptions = array_shift($generalOptionsArray); + + $this->assertInstanceOf( + 'OptionsPropertyMainGroup', + $generalOptions + ); + + $this->assertEquals( + 'general_opts', + $generalOptions->getName() + ); + + $generalProperties = $generalOptions->getProperties(); + + $property = array_shift($generalProperties); + + $this->assertInstanceOf( + 'HiddenPropertyItem', + $property + ); + } + + /** + * Test for ExportYaml::exportHeader + * + * @return void + */ + public function testExportHeader() + { + ob_start(); + $this->assertTrue( + $this->object->exportHeader() + ); + $result = ob_get_clean(); + + $this->assertContains( + "%YAML 1.1\n---\n", + $result + ); + } + + /** + * Test for ExportYaml::exportFooter + * + * @return void + */ + public function testExportFooter() + { + $this->expectOutputString( + "...\n" + ); + $this->assertTrue( + $this->object->exportFooter() + ); + } + + /** + * Test for ExportYaml::exportDBHeader + * + * @return void + */ + public function testExportDBHeader() + { + $this->assertTrue( + $this->object->exportDBHeader('&db') + ); + } + + /** + * Test for ExportYaml::exportDBFooter + * + * @return void + */ + public function testExportDBFooter() + { + $this->assertTrue( + $this->object->exportDBFooter('&db') + ); + } + + /** + * Test for ExportYaml::exportDBCreate + * + * @return void + */ + public function testExportDBCreate() + { + $this->assertTrue( + $this->object->exportDBCreate('testDB') + ); + } + + /** + * Test for ExportYaml::exportData + * + * @return void + */ + public function testExportData() + { + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $dbi->expects($this->once()) + ->method('query') + ->with('SELECT', null, PMA_DatabaseInterface::QUERY_UNBUFFERED) + ->will($this->returnValue(true)); + + $dbi->expects($this->once()) + ->method('numFields') + ->with(true) + ->will($this->returnValue(4)); + + $dbi->expects($this->at(2)) + ->method('fieldName') + ->will($this->returnValue('fName1')); + + $dbi->expects($this->at(3)) + ->method('fieldName') + ->will($this->returnValue('fNa"me2')); + + $dbi->expects($this->at(4)) + ->method('fieldName') + ->will($this->returnValue('fNa\\me3')); + + $dbi->expects($this->at(5)) + ->method('fieldName') + ->will($this->returnValue('fName4')); + + $dbi->expects($this->at(6)) + ->method('fetchRow') + ->with(true) + ->will( + $this->returnValue( + array(null, '123', "\"c\\a\nb\r") + ) + ); + + $dbi->expects($this->at(7)) + ->method('fetchRow') + ->with(true) + ->will( + $this->returnValue( + array(null) + ) + ); + + $GLOBALS['dbi'] = $dbi; + + ob_start(); + $this->assertTrue( + $this->object->exportData( + 'db', 'taassertEquals( + '# db.ta<ble' . "\n" . + '-' . "\n" . + ' fNa"me2: 123' . "\n" . + ' fName3: "\"c\\\\a\nb\r"' . "\n" . + '-' . "\n", + $result + ); + } +} +?> diff --git a/test/classes/plugin/export/PMA_TableProperty_test.php b/test/classes/plugin/export/PMA_TableProperty_test.php new file mode 100644 index 0000000000..a62441004e --- /dev/null +++ b/test/classes/plugin/export/PMA_TableProperty_test.php @@ -0,0 +1,346 @@ +object = new TableProperty($row); + } + + /** + * tearDown for test cases + * + * @return void + */ + public function tearDown() + { + unset($this->object); + } + + /** + * Test for TableProperty::__construct + * + * @return void + */ + public function testConstructor() + { + $this->assertEquals( + 'name', + $this->object->name + ); + + $this->assertEquals( + 'int', + $this->object->type + ); + + $this->assertEquals( + 1, + $this->object->nullable + ); + + $this->assertEquals( + 'PRI', + $this->object->key + ); + + $this->assertEquals( + '0', + $this->object->defaultValue + ); + + $this->assertEquals( + 'mysql', + $this->object->ext + ); + } + + /** + * Test for TableProperty::getPureType + * + * @return void + */ + public function testGetPureType() + { + $this->object->type = "int(10)"; + + $this->assertEquals( + "int", + $this->object->getPureType() + ); + + $this->object->type = "char"; + + $this->assertEquals( + "char", + $this->object->getPureType() + ); + } + + /** + * Test for TableProperty::isNotNull + * + * @param string $nullable nullable value + * @param string $expected expected output + * + * @return void + * @dataProvider isNotNullProvider + */ + public function testIsNotNull($nullable, $expected) + { + $this->object->nullable = $nullable; + + $this->assertEquals( + $expected, + $this->object->isNotNull() + ); + } + + /** + * Data provider for testIsNotNull + * + * @return array Test Data + */ + public function isNotNullProvider() + { + return array( + array("NO", "true"), + array("", "false"), + array("no", "false") + ); + } + + /** + * Test for TableProperty::isUnique + * + * @param string $key key value + * @param string $expected expected output + * + * @return void + * @dataProvider isUniqueProvider + */ + public function testIsUnique($key, $expected) + { + $this->object->key = $key; + + $this->assertEquals( + $expected, + $this->object->isUnique() + ); + } + + /** + * Data provider for testIsUnique + * + * @return array Test Data + */ + public function isUniqueProvider() + { + return array( + array("PRI", "true"), + array("UNI", "true"), + array("", "false"), + array("pri", "false"), + array("uni", "false"), + ); + } + + /** + * Test for TableProperty::getDotNetPrimitiveType + * + * @param string $type type value + * @param string $expected expected output + * + * @return void + * @dataProvider getDotNetPrimitiveTypeProvider + */ + public function testGetDotNetPrimitiveType($type, $expected) + { + $this->object->type = $type; + + $this->assertEquals( + $expected, + $this->object->getDotNetPrimitiveType() + ); + } + + /** + * Data provider for testGetDotNetPrimitiveType + * + * @return array Test Data + */ + public function getDotNetPrimitiveTypeProvider() + { + return array( + array("int", "int"), + array("long", "long"), + array("char", "string"), + array("varchar", "string"), + array("text", "string"), + array("longtext", "long"), // TODO: seemingly wrong, should be string + array("tinyint", "bool"), + array("datetime", "DateTime"), + array("", "unknown"), + array("dummy", "unknown"), + array("INT", "unknown") + ); + } + + /** + * Test for TableProperty::getDotNetObjectType + * + * @param string $type type value + * @param string $expected expected output + * + * @return void + * @dataProvider getDotNetObjectTypeProvider + */ + public function testGetDotNetObjectType($type, $expected) + { + $this->object->type = $type; + + $this->assertEquals( + $expected, + $this->object->getDotNetObjectType() + ); + } + + /** + * Data provider for testGetDotNetObjectType + * + * @return array Test Data + */ + public function getDotNetObjectTypeProvider() + { + return array( + array("int", "Int32"), + array("long", "Long"), + array("char", "String"), + array("varchar", "String"), + array("text", "String"), + array("longtext", "Long"), // TODO: seemingly wrong, should be string + array("tinyint", "Boolean"), + array("datetime", "DateTime"), + array("", "Unknown"), + array("dummy", "Unknown"), + array("INT", "Unknown") + ); + } + + /** + * Test for TableProperty::getIndexName + * + * @return void + */ + public function testGetIndexName() + { + $this->object->name = "ä'7"; + $this->object->key = "PRI"; + + $this->assertEquals( + "index=\"ä'7<ab>\"", + $this->object->getIndexName() + ); + + $this->object->key = ""; + + $this->assertEquals( + "", + $this->object->getIndexName() + ); + } + + /** + * Test for TableProperty::isPK + * + * @return void + */ + public function testIsPK() + { + $this->object->key = "PRI"; + + $this->assertTrue( + $this->object->isPK() + ); + + $this->object->key = ""; + + $this->assertFalse( + $this->object->isPK() + ); + } + + /** + * Test for TableProperty::formatCs + * + * @return void + */ + public function testFormatCs() + { + $this->object->name = 'Name#name#123'; + + $this->assertEquals( + 'text123Namename', + $this->object->formatCs("text123#name#") + ); + } + + /** + * Test for TableProperty::formatXml + * + * @return void + */ + public function testFormatXml() + { + $this->object->name = '"a\''; + + $this->assertEquals( + '"a\'index=""a\'"', + $this->object->formatXml("#name##indexName#") + ); + } + + /** + * Test for TableProperty::format + * + * @return void + */ + public function testFormat() + { + $this->assertEquals( + 'NameintInt32intfalsetrue', + $this->object->format( + "#ucfirstName##dotNetPrimitiveType##dotNetObjectType##type#" . + "#notNull##unique#" + ) + ); + } + +} +?> diff --git a/test/classes/schema/Pdf_Relation_Schema_test.php b/test/classes/schema/Pdf_Relation_Schema_test.php index 9ad7a76eeb..46499c2bcb 100644 --- a/test/classes/schema/Pdf_Relation_Schema_test.php +++ b/test/classes/schema/Pdf_Relation_Schema_test.php @@ -16,6 +16,7 @@ require_once 'libraries/php-gettext/gettext.inc'; require_once 'libraries/Index.class.php'; require_once 'libraries/Table.class.php'; require_once 'libraries/database_interface.inc.php'; +require_once 'libraries/transformations.lib.php'; require_once 'libraries/schema/Pdf_Relation_Schema.class.php'; /** @@ -51,6 +52,8 @@ class PMA_Pdf_Relation_Schema_Test extends PHPUnit_Framework_TestCase $_POST['with_doc'] = 'on'; $GLOBALS['server'] = 1; + $GLOBALS['controllink'] = null; + $GLOBALS['db'] = 'information_schema'; $GLOBALS['cfg']['Server']['pmadb'] = "pmadb"; $GLOBALS['cfg']['LimitChars'] = 100; $GLOBALS['cfg']['ServerDefault'] = 1; @@ -58,11 +61,20 @@ class PMA_Pdf_Relation_Schema_Test extends PHPUnit_Framework_TestCase $GLOBALS['cfg']['Server']['table_coords'] = "table_name"; $GLOBALS['cfg']['Server']['bookmarktable'] = "bookmarktable"; $GLOBALS['cfg']['Server']['relation'] = "relation"; - $GLOBALS['cfg']['Server']['relation'] = "relation"; $GLOBALS['cfg']['Server']['table_info'] = "table_info"; - - $GLOBALS['cfgRelation']['db'] = "PMA"; - $GLOBALS['cfgRelation']['table_coords'] = "table_name"; + + //_SESSION + $_SESSION['relation'][$GLOBALS['server']] = array( + 'table_coords' => "table_name", + 'displaywork' => 'displaywork', + 'db' => "information_schema", + 'table_info' => 'table_info', + 'relwork' => false, + 'relation' => 'relation', + 'mimework' => 'mimework', + 'commwork' => 'commwork', + 'column_info' => 'column_info' + ); $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() @@ -79,15 +91,24 @@ class PMA_Pdf_Relation_Schema_Test extends PHPUnit_Framework_TestCase $dbi->expects($this->any()) ->method('tryQuery') ->will($this->returnValue("executed_1")); - + $fetchArrayReturn = array( - 'table_name' => 'pma_table_name' + //table name in information_schema_relations + 'table_name' => 'CHARACTER_SETS' + ); + + $fetchArrayReturn2 = array( + //table name in information_schema_relations + 'table_name' => 'COLLATIONS' ); $dbi->expects($this->at(2)) ->method('fetchAssoc') ->will($this->returnValue($fetchArrayReturn)); $dbi->expects($this->at(3)) + ->method('fetchAssoc') + ->will($this->returnValue($fetchArrayReturn2)); + $dbi->expects($this->at(4)) ->method('fetchAssoc') ->will($this->returnValue(false)); @@ -142,10 +163,19 @@ class PMA_Pdf_Relation_Schema_Test extends PHPUnit_Framework_TestCase ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 " . "COLLATE=utf8_bin COMMENT='Bookmarks'"; - $dbi->expects($this->once()) + $dbi->expects($this->any()) ->method('fetchValue') ->will($this->returnValue($fetchValue)); + + $fetchResult = array( + 'column1' => array('mimetype' => 'value1', 'transformation'=> 'pdf'), + 'column2' => array('mimetype' => 'value2', 'transformation'=> 'xml'), + ); + + $dbi->expects($this->any())->method('fetchResult') + ->will($this->returnValue($fetchResult)); + $GLOBALS['dbi'] = $dbi; $this->object = new PMA_Pdf_Relation_Schema(); diff --git a/test/libraries/PMA_server_privileges_test.php b/test/libraries/PMA_server_privileges_test.php index 66dfe5ba04..d5bf25ca0c 100644 --- a/test/libraries/PMA_server_privileges_test.php +++ b/test/libraries/PMA_server_privileges_test.php @@ -19,6 +19,7 @@ require_once 'libraries/sanitizing.lib.php'; require_once 'libraries/sqlparser.lib.php'; require_once 'libraries/js_escape.lib.php'; require_once 'libraries/Message.class.php'; +require_once 'libraries/Response.class.php'; require_once 'libraries/server_privileges.lib.php'; /** @@ -51,6 +52,7 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase $GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons'; $GLOBALS['cfg']['LimitChars'] = 100; $GLOBALS['cfg']['DBG']['sql'] = false; + $GLOBALS['cfg']['AllowThirdPartyFraming'] = false; $GLOBALS['table'] = "table"; $GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF'); @@ -79,11 +81,110 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase ) ); + $fetchSingleRow = array('password' => 'pma_password'); + $dbi->expects($this->any())->method('fetchSingleRow') + ->will($this->returnValue($fetchSingleRow)); + + $fetchValue = array('key1' => 'value1'); + $dbi->expects($this->any())->method('fetchValue') + ->will($this->returnValue($fetchValue)); + + $dbi->expects($this->any())->method('tryQuery') + ->will($this->returnValue(true)); + $GLOBALS['dbi'] = $dbi; } /** - * Test for PMA_getHtmlForExportUserDefinition + * Test for PMA_getDataForDBInfo + * + * @return void + */ + public function testPMAGetDataForDBInfo() + { + $_REQUEST['tablename'] = "PMA_tablename"; + $_REQUEST['dbname'] = "PMA_dbname"; + list($dbname, $tablename, $db_and_table, $dbname_is_wildcard) + = PMA_getDataForDBInfo(); + $this->assertEquals( + "PMA_dbname", + $dbname + ); + $this->assertEquals( + "PMA_tablename", + $tablename + ); + $this->assertEquals( + "`PMA_dbname`.`PMA_tablename`", + $db_and_table + ); + $this->assertEquals( + true, + $dbname_is_wildcard + ); + + //pre variable have been defined + $_REQUEST['pred_tablename'] = "PMA_pred__tablename"; + $_REQUEST['pred_dbname'] = "PMA_pred_dbname"; + list($dbname, $tablename, $db_and_table, $dbname_is_wildcard) + = PMA_getDataForDBInfo(); + $this->assertEquals( + "PMA_pred_dbname", + $dbname + ); + $this->assertEquals( + "PMA_pred__tablename", + $tablename + ); + $this->assertEquals( + "`PMA_pred_dbname`.`PMA_pred__tablename`", + $db_and_table + ); + $this->assertEquals( + true, + $dbname_is_wildcard + ); + + } + + + /** + * Test for PMA_getDataForChangeOrCopyUser + * + * @return void + */ + public function testPMAGetDataForChangeOrCopyUser() + { + //$_REQUEST['change_copy'] not set + list($queries, $password) = PMA_getDataForChangeOrCopyUser(); + $this->assertEquals( + null, + $queries + ); + $this->assertEquals( + null, + $queries + ); + + //$_REQUEST['change_copy'] is set + $_REQUEST['change_copy'] = true; + $_REQUEST['old_username'] = 'PMA_old_username'; + $_REQUEST['old_hostname'] = 'PMA_old_hostname'; + list($queries, $password) = PMA_getDataForChangeOrCopyUser(); + $this->assertEquals( + 'pma_password', + $password + ); + $this->assertEquals( + array(), + $queries + ); + unset($_REQUEST['change_copy']); + } + + + /** + * Test for PMA_getListForExportUserDefinition * * @return void */ @@ -98,7 +199,7 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase $GLOBALS['cfg']['TextareaRows'] = 'TextareaCols'; list($title, $export) - = PMA_getHtmlForExportUserDefinition($username, $hostname); + = PMA_getListForExportUserDefinition($username, $hostname); //validate 1: $export $result = '