View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0022560 | mantisbt | plug-ins | public | 2017-03-21 12:28 | 2017-03-21 16:34 |
Reporter | nobody1809 | Assigned To | |||
Priority | high | Severity | feature | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 2.2.1 | ||||
Summary | 0022560: Mantis XmlImportExport with History | ||||
Description | Here is the XmlImportExport with History . Requirements are: Import/Export Einträge 2.2.1 | ||||
Tags | No tags attached. | ||||
Attached Files | export.php (8,576 bytes)
<?php /** * MantisBT - A PHP based bugtracking system * * MantisBT is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * MantisBT is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MantisBT. If not, see <http://www.gnu.org/licenses/>. * * @copyright Copyright 2002 MantisBT Team - mantisbt-dev@lists.sourceforge.net */ /** * Export Issues in XML Format */ require_once( 'core.php' ); require_api( 'history_api.php' ); access_ensure_project_level( plugin_config_get( 'export_threshold' ) ); auth_ensure_user_authenticated( ); helper_begin_long_process( ); $t_page_number = 1; $t_per_page = -1; $t_bug_count = null; $t_page_count = null; $t_nl = "\n"; # Get bug rows according to the current filter $t_result = filter_get_bug_rows( $t_page_number, $t_per_page, $t_page_count, $t_bug_count ); if( $t_result === false ) { $t_result = array( ); } $t_filename = 'exported_issues.xml'; # Send headers to browser to activate mime loading # Make sure that IE can download the attachments under https. header( 'Pragma: public' ); header( 'Content-Type: text/xml; name=' . $t_filename ); header( 'Content-Transfer-Encoding: BASE64;' ); # Added Quotes (") around file name. header( 'Content-Disposition: attachment; filename="' . $t_filename . '"' ); $t_version = MANTIS_VERSION; $t_url = config_get( 'path' ); $t_bug_link = config_get( 'bug_link_tag' ); $t_bugnote_link = config_get( 'bugnote_link_tag' ); $t_writer = new XMLWriter; $t_writer->openURI( 'php://output' ); $t_writer->setIndent( true ); $t_writer->setIndentString( ' ' ); $t_writer->startDocument( '1.0', 'UTF-8' ); $t_writer->startElement( 'mantis' ); $t_writer->writeAttribute( 'version', $t_version ); $t_writer->writeAttribute( 'urlbase', $t_url ); $t_writer->writeAttribute( 'issuelink', $t_bug_link ); $t_writer->writeAttribute( 'notelink', $t_bugnote_link ); $t_writer->writeAttribute( 'format', '1' ); # Ignored fields, these will be skipped $t_ignore = array( '_stats', 'bug_text_id', ); # properties that we want to export are 'protected' $t_columns = array_keys( getClassProperties( 'BugData', 'protected' ) ); # export the rows foreach( $t_result as $t_row ) { $t_writer->startElement( 'issue' ); foreach( $t_columns as $t_element ) { $t_value = $t_row->$t_element; if( empty( $t_value ) ) { continue; } if( in_array( $t_element, $t_ignore ) ) { continue; } switch( $t_element ) { case 'reporter_id': case 'handler_id': $t_element_name = substr( $t_element, 0, - 3 ); $t_element_data = user_get_name( $t_value ); $t_writer->startElement( $t_element_name ); $t_writer->writeAttribute( 'id', $t_value ); $t_writer->text( $t_element_data ); $t_writer->endElement( ); break; case 'category_id': # id for categories were introduced in 1.2 $t_element_name = 'category'; $t_element_data = category_get_name( $t_value ); $t_writer->startElement( $t_element_name ); $t_writer->writeAttribute( 'id', $t_value ); $t_writer->text( $t_element_data ); $t_writer->endElement( ); break; case 'project_id': $t_element_name = 'project'; $t_element_data = project_get_name( $t_value ); $t_writer->startElement( $t_element_name ); $t_writer->writeAttribute( 'id', $t_value ); $t_writer->text( $t_element_data ); $t_writer->endElement( ); break; case 'eta': case 'priority': case 'projection': case 'reproducibility': case 'resolution': case 'severity': case 'status': case 'view_state': $t_element_data = get_enum_element( $t_element, $t_value ); $t_writer->startElement( $t_element ); $t_writer->writeAttribute( 'id', $t_value ); $t_writer->text( $t_element_data ); $t_writer->endElement( ); break; default: $t_writer->writeElement( $t_element, $t_value ); } } # fetch and export custom fields $t_custom_fields = custom_field_get_all_linked_fields( $t_row->id ); if( is_array( $t_custom_fields ) && count( $t_custom_fields ) > 0 ) { $t_writer->startElement( 'custom_fields' ); foreach ( $t_custom_fields as $t_custom_field_name => $t_custom_field ) { $t_writer->startElement( 'custom_field' ); # id $t_writer->writeElement( 'id', custom_field_get_id_from_name( $t_custom_field_name ) ); # title $t_writer->writeElement( 'name', $t_custom_field_name ); # filename $t_writer->writeElement( 'type', $t_custom_field['type'] ); # filesize $t_writer->writeElement( 'value', $t_custom_field['value'] ); # file_type $t_writer->writeElement( 'access_level_r', $t_custom_field['access_level_r'] ); $t_writer->endElement(); # custom_field } $t_writer->endElement(); # custom_fields } # fetch and export historynotes $t_histories = history_get_events_array( $t_row->id ); if( is_array( $t_histories ) && count( $t_histories ) > 0 ) { $t_writer->startElement( 'histories' ); foreach ( $t_histories as $t_historynote ) { $t_writer->startElement( 'historynote' ); # date $t_writer->writeElement( 'date', $t_historynote['date']); # userid $t_writer->startElement( 'user' ); $t_writer->writeAttribute( 'id', $t_historynote["userid"] ); $t_writer->text( $t_historynote["username"] ); $t_writer->endElement( ); # field $t_writer->writeElement( 'field', $t_historynote["note"]); # change $t_writer->writeElement( 'change', $t_historynote["change"]); # raw $t_writer->writeElement( 'raw', $t_historynote["raw"]); $t_writer->endElement(); # historynote } $t_writer->endElement(); # histories } # fetch and export bugnotes $t_bugnotes = bugnote_get_all_bugnotes( $t_row->id ); if( is_array( $t_bugnotes ) && count( $t_bugnotes ) > 0 ) { $t_writer->startElement( 'bugnotes' ); foreach ( $t_bugnotes as $t_bugnote ) { $t_writer->startElement( 'bugnote' ); # id $t_writer->writeElement( 'id', $t_bugnote->id ); # reporter $t_writer->startElement( 'reporter' ); $t_writer->writeAttribute( 'id', $t_bugnote->reporter_id ); $t_writer->text( user_get_name( $t_bugnote->reporter_id ) ); $t_writer->endElement( ); # bug note $t_writer->writeElement( 'note', $t_bugnote->note ); # view state $t_writer->startElement( 'view_state' ); $t_writer->writeAttribute( 'id', $t_bugnote->view_state ); $t_writer->text( get_enum_element( 'view_state', $t_bugnote->view_state ) ); $t_writer->endElement( ); # date submitted $t_writer->writeElement( 'date_submitted', $t_bugnote->date_submitted ); # last modified $t_writer->writeElement( 'last_modified', $t_bugnote->last_modified ); # note type $t_writer->writeElement( 'note_type', $t_bugnote->note_type ); # note attr $t_writer->writeElement( 'note_attr', $t_bugnote->note_attr ); # time tracking $t_writer->writeElement( 'time_tracking', $t_bugnote->time_tracking ); $t_writer->endElement(); # bugnote } $t_writer->endElement(); # bugnotes } # fetch and export attachments $t_attachments = bug_get_attachments( $t_row->id ); if( is_array( $t_attachments ) && count( $t_attachments ) > 0 ) { $t_writer->startElement( 'attachments' ); foreach ( $t_attachments as $t_attachment ) { $t_writer->startElement( 'attachment' ); # id $t_writer->writeElement( 'id', $t_attachment['id'] ); # title $t_writer->writeElement( 'title', $t_attachment['title'] ); # filename $t_writer->writeElement( 'filename', $t_attachment['filename'] ); # filesize $t_writer->writeElement( 'filesize', $t_attachment['filesize'] ); # file_type $t_writer->writeElement( 'file_type', $t_attachment['file_type'] ); # last added $t_writer->writeElement( 'date_added', $t_attachment['date_added'] ); # content $t_content = file_get_content( $t_attachment['id'] ); $t_writer->writeElement( 'content', base64_encode( $t_content['content'] ) ); $t_writer->endElement(); # attachment } $t_writer->endElement(); # bugnotes } $t_writer->endElement(); # issue # Save memory by clearing cache # bug_clear_cache(); # bug_text_clear_cache(); } $t_writer->endElement(); # mantis $t_writer->endDocument( ); | ||||
@nobody1809 it would be a lot better if you could submit your contributions as Github pull requests, git formatted patches or at least unified diff format. |
|
Here my git repo for MantisXMLExport: git@github.com:Nobody1809/mantisXMLExport.git |
|