diff --git a/htdocs/sql/libraries/export/ods.php b/htdocs/sql/libraries/export/ods.php new file mode 100755 --- /dev/null +++ b/htdocs/sql/libraries/export/ods.php @@ -0,0 +1,187 @@ + 'strOpenDocumentSpreadsheet', + 'extension' => 'ods', + 'mime_type' => 'application/vnd.oasis.opendocument.spreadsheet', + 'force_file' => true, + 'options' => array( + array('type' => 'text', 'name' => 'null', 'text' => 'strReplaceNULLBy'), + array('type' => 'bool', 'name' => 'columns', 'text' => 'strPutColNames'), + array('type' => 'hidden', 'name' => 'data'), + ), + 'options_text' => 'strOptions', + ); +} else { + +$GLOBALS['ods_buffer'] = ''; +require_once './libraries/opendocument.lib.php'; + +/** + * Outputs comment + * + * @param string Text of comment + * + * @return bool Whether it suceeded + */ +function PMA_exportComment($text) { + return TRUE; +} + +/** + * Outputs export footer + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportFooter() { + $GLOBALS['ods_buffer'] .= '' + . '' + . ''; + if (!PMA_exportOutputHandler(PMA_createOpenDocument('application/vnd.oasis.opendocument.spreadsheet', $GLOBALS['ods_buffer']))) { + return FALSE; + } + return TRUE; +} + +/** + * Outputs export header + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportHeader() { + $GLOBALS['ods_buffer'] .= '' + . '' + . '' + . ''; + return TRUE; +} + +/** + * Outputs database header + * + * @param string Database name + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportDBHeader($db) { + return TRUE; +} + +/** + * Outputs database footer + * + * @param string Database name + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportDBFooter($db) { + return TRUE; +} + +/** + * Outputs create database database + * + * @param string Database name + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportDBCreate($db) { + return TRUE; +} + +/** + * Outputs the content of a table in CSV format + * + * @param string the database name + * @param string the table name + * @param string the end of line sequence + * @param string the url to go back in case of error + * @param string SQL query for obtaining data + * + * @return bool Whether it suceeded + * + * @access public + */ +function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) { + global $what; + + // Gets the data from the database + $result = PMA_DBI_query($sql_query, null, PMA_DBI_QUERY_UNBUFFERED); + $fields_cnt = PMA_DBI_num_fields($result); + $fields_meta = PMA_DBI_get_fields_meta($result); + $field_flags = array(); + for ($j = 0; $j < $fields_cnt; $j++) { + $field_flags[$j] = PMA_DBI_field_flags($result, $j); + } + + $GLOBALS['ods_buffer'] .= ''; + + // If required, get fields name at the first line + if (isset($GLOBALS[$what . '_columns'])) { + $GLOBALS['ods_buffer'] .= ''; + for ($i = 0; $i < $fields_cnt; $i++) { + $GLOBALS['ods_buffer'] .= '' + . '' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '' + . ''; + } // end for + $GLOBALS['ods_buffer'] .= ''; + } // end if + + // Format the data + while ($row = PMA_DBI_fetch_row($result)) { + $GLOBALS['ods_buffer'] .= ''; + for ($j = 0; $j < $fields_cnt; $j++) { + if (!isset($row[$j]) || is_null($row[$j])) { + $GLOBALS['ods_buffer'] .= '' + . '' . htmlspecialchars($GLOBALS[$what . '_null']) . '' + . ''; + // ignore BLOB + } elseif (stristr($field_flags[$j], 'BINARY') + && $fields_meta[$j]->blob) { + $GLOBALS['ods_buffer'] .= '' + . '' + . ''; + } elseif ($fields_meta[$j]->numeric && $fields_meta[$j]->type != 'timestamp' && ! $fields_meta[$j]->blob) { + $GLOBALS['ods_buffer'] .= '' + . '' . htmlspecialchars($row[$j]) . '' + . ''; + } else { + $GLOBALS['ods_buffer'] .= '' + . '' . htmlspecialchars($row[$j]) . '' + . ''; + } + } // end for + $GLOBALS['ods_buffer'] .= ''; + } // end while + PMA_DBI_free_result($result); + + $GLOBALS['ods_buffer'] .= ''; + + return TRUE; +} + +} +?>