# 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/>. $t_plugin_path = config_get('plugin_path'); require_once $t_plugin_path . 'XmlImportExport' . DIRECTORY_SEPARATOR . 'ImportXml.php'; form_security_validate('plugin_xml_import_action'); auth_reauthenticate(); //var_dump( $_POST ); $f_file = gpc_get_file('file', -1); $f_strategy = gpc_get_string('strategy'); $f_fallback = gpc_get_string('fallback'); $f_project = gpc_get_int('project_id'); // not used, but ensures a project is selected $f_keepcategory = gpc_get_bool('keepcategory'); $f_defaultcategory = gpc_get_int('defaultcategory'); file_ensure_uploaded($f_file); $importer = new ImportXML($f_file, $f_strategy, $f_fallback, $f_keepcategory, $f_defaultcategory); form_security_purge('plugin_xml_import_action'); html_page_top(plugin_lang_get('import')); print_manage_menu('manage_import_issues_page.php'); echo "<pre>\n"; $importer->import(); echo "</pre>\n"; html_page_bottom();
$t_bug_data->reproducibility = gpc_get_int('reproducibility', config_get('default_bug_reproducibility')); $t_bug_data->severity = gpc_get_int('severity', config_get('default_bug_severity')); $t_bug_data->priority = gpc_get_int('priority', config_get('default_bug_priority')); $t_bug_data->projection = gpc_get_int('projection', config_get('default_bug_projection')); $t_bug_data->eta = gpc_get_int('eta', config_get('default_bug_eta')); $t_bug_data->resolution = gpc_get_string('resolution', config_get('default_bug_resolution')); $t_bug_data->status = gpc_get_string('status', config_get('bug_submit_status')); $t_bug_data->summary = trim(gpc_get_string('summary')); $t_bug_data->description = gpc_get_string('description'); $t_bug_data->steps_to_reproduce = gpc_get_string('steps_to_reproduce', config_get('default_bug_steps_to_reproduce')); $t_bug_data->additional_information = gpc_get_string('additional_info', config_get('default_bug_additional_info')); $t_bug_data->due_date = gpc_get_string('due_date', ''); if (is_blank($t_bug_data->due_date)) { $t_bug_data->due_date = date_get_null(); } $f_files = gpc_get_file('ufile', null); /** @todo (thraxisp) Note that this always returns a structure */ $f_report_stay = gpc_get_bool('report_stay', false); $f_copy_notes_from_parent = gpc_get_bool('copy_notes_from_parent', false); $f_copy_attachments_from_parent = gpc_get_bool('copy_attachments_from_parent', false); if (access_has_project_level(config_get('roadmap_update_threshold'), $t_bug_data->project_id)) { $t_bug_data->target_version = gpc_get_string('target_version', ''); } # if a profile was selected then let's use that information if (0 != $t_bug_data->profile_id) { if (profile_is_global($t_bug_data->profile_id)) { $row = user_get_profile_row(ALL_USERS, $t_bug_data->profile_id); } else { $row = user_get_profile_row($t_bug_data->reporter_id, $t_bug_data->profile_id); } if (is_blank($t_bug_data->platform)) {
$t_bug_data->priority = gpc_get_int('priority', config_get('default_bug_priority')); $t_bug_data->projection = gpc_get_int('projection', config_get('default_bug_projection')); $t_bug_data->eta = gpc_get_int('eta', config_get('default_bug_eta')); $t_bug_data->resolution = config_get('default_bug_resolution'); $t_bug_data->status = config_get('bug_submit_status'); $t_bug_data->summary = gpc_get_string('summary'); $t_bug_data->description = gpc_get_string('description'); $t_bug_data->steps_to_reproduce = gpc_get_string('steps_to_reproduce', config_get('default_bug_steps_to_reproduce')); $t_bug_data->additional_information = gpc_get_string('additional_info', config_get('default_bug_additional_info')); $t_bug_data->due_date = gpc_get_string('due_date', ''); if (is_blank($t_bug_data->due_date)) { $t_bug_data->due_date = date_get_null(); } else { $t_bug_data->due_date = $t_bug_data->due_date; } $f_file = gpc_get_file('file', null); /** @todo (thraxisp) Note that this always returns a structure */ # size = 0, if no file $f_report_stay = gpc_get_bool('report_stay', false); $f_copy_notes_from_parent = gpc_get_bool('copy_notes_from_parent', false); $f_copy_attachments_from_parent = gpc_get_bool('copy_attachments_from_parent', false); $t_bug_data->project_id = $t_project_id; $t_bug_data->reporter_id = auth_get_current_user_id(); $t_bug_data->summary = trim($t_bug_data->summary); if (access_has_project_level(config_get('roadmap_update_threshold'), $t_bug_data->project_id)) { $t_bug_data->target_version = gpc_get_string('target_version', ''); } # if a profile was selected then let's use that information if (0 != $t_bug_data->profile_id) { if (profile_is_global($t_bug_data->profile_id)) { $row = user_get_profile_row(ALL_USERS, $t_bug_data->profile_id);
* @link http://www.mantisbt.org */ /** * MantisBT Core API's */ require_once 'core.php'; require_once 'file_api.php'; form_security_validate('proj_doc_update'); # Check if project documentation feature is enabled. if (OFF == config_get('enable_project_documentation') || !file_is_uploading_enabled() || !file_allow_project_upload()) { access_denied(); } $f_file_id = gpc_get_int('file_id'); $f_title = gpc_get_string('title'); $f_description = gpc_get_string('description'); $f_file = gpc_get_file('file'); $t_project_id = file_get_field($f_file_id, 'project_id', 'project'); access_ensure_project_level(config_get('upload_project_file_threshold'), $t_project_id); if (is_blank($f_title)) { trigger_error(ERROR_EMPTY_FIELD, ERROR); } $c_file_id = db_prepare_int($f_file_id); $c_title = db_prepare_string($f_title); $c_description = db_prepare_string($f_description); $t_project_file_table = db_get_table('mantis_project_file_table'); /** @todo (thraxisp) this code should probably be integrated into file_api to share methods used to store files */ file_ensure_uploaded($f_file); extract($f_file, EXTR_PREFIX_ALL, 'v'); if (is_uploaded_file($v_tmp_name)) { $t_project_id = helper_get_current_project(); # grab the original file path and name
# along with MantisBT. If not, see <http://www.gnu.org/licenses/>. /** * Add file to a bug and then view the bug * * @package MantisBT * @copyright Copyright (C) 2000 - 2002 Kenzaburo Ito - kenito@300baud.org * @copyright Copyright (C) 2002 - 2013 MantisBT Team - mantisbt-dev@lists.sourceforge.net * @link http://www.mantisbt.org */ /** * MantisBT Core API's */ require_once 'core.php'; require_once 'file_api.php'; $f_bug_id = gpc_get_int('bug_id', -1); $f_files = gpc_get_file('ufile', -1); if ($f_bug_id == -1 && $f_files == -1) { # _POST/_FILES does not seem to get populated if you exceed size limit so check if bug_id is -1 trigger_error(ERROR_FILE_TOO_BIG, ERROR); } form_security_validate('bug_file_add'); $t_bug = bug_get($f_bug_id, true); if ($t_bug->project_id != helper_get_current_project()) { # in case the current project is not the same project of the bug we are viewing... # ... override the current project. This to avoid problems with categories and handlers lists etc. $g_project_override = $t_bug->project_id; } if (!file_allow_bug_upload($f_bug_id)) { access_denied(); } access_ensure_bug_level(config_get('upload_bug_file_threshold'), $f_bug_id);
if ($f_reset) { plugin_config_delete('headerHeight'); plugin_config_delete('skin'); plugin_config_delete('companyName'); plugin_config_delete('companyUrl'); plugin_config_delete('companyLogo'); plugin_config_delete('companyTinyLogo'); plugin_config_delete('customCss'); plugin_config_delete('showCompanyLogo'); } else { if (in_array($f_header, array(0, 1, 2))) { plugin_config_set('headerHeight', $f_header); } if (in_array($f_skin, array(0, 1, 2))) { plugin_config_set('skin', $f_skin); } plugin_config_set('companyName', strip_tags(gpc_get_string('companyName'))); plugin_config_set('companyUrl', strip_tags(gpc_get_string('companyUrl'))); plugin_config_set('showCompanyLogo', gpc_get_bool('showCompanyLogo')); try { plugin_config_set('companyLogo', ThePoserPlugin::getImageForSaving(gpc_get_file('customLogo'), array(null, 80))); } catch (Exception $e) { } try { plugin_config_set('companyTinyLogo', ThePoserPlugin::getImageForSaving(gpc_get_file('customTinyLogo'), array(16, 16))); } catch (Exception $e) { } plugin_config_set('customCss', gpc_get_string('customCss')); } form_security_purge('plugin_Example_config_update'); print_successful_redirect(plugin_page('config', true));
* Created: 2008-01-05 * Last update: 2012-05-23 * * @link http://deboutv.free.fr/mantis/ * @copyright * @author Vincent DEBOUT <*****@*****.**> * @author Jiri Hron <*****@*****.**> */ require_once 'core.php'; require_once 'bug_api.php'; require_once 'releasemgt_api.php'; $t_file_count = gpc_get_int('file_count'); $t_file = array(); $t_description = array(); for ($i = 0; $i < $t_file_count; $i++) { $t_file[$i] = gpc_get_file('file_' . $i); $t_description[$i] = gpc_get_string('description_' . $i, ''); } $t_version = gpc_get_int('release', 0); $t_current_user_id = auth_get_current_user_id(); $t_project_id = helper_get_current_project(); if (user_get_access_level($t_current_user_id) < plugin_config_get('upload_threshold_level', PLUGINS_RELEASEMGT_UPLOAD_THRESHOLD_LEVEL_DEFAULT)) { access_denied(); } for ($i = 0; $i < $t_file_count; $i++) { $t_file_error[$i] = isset($t_file[$i]['error']) ? $t_file[$i]['error'] : 0; $t_file_id[$i] = plugins_releasemgt_file_add($t_file[$i]['tmp_name'], $t_file[$i]['name'], $t_file[$i]['type'], $t_project_id, $t_version, $t_description[$i], $t_file_error[$i]); } $t_redirect_url = plugin_page('releases', true); if (plugin_config_get('notification_enable', PLUGINS_RELEASEMGT_NOTIFICATION_ENABLE_DEFAULT) == ON) { $t_subject = plugin_config_get('email_subject', PLUGINS_RELEASEMGT_EMAIL_SUBJECT_DEFAULT);
function save_bug($p_project_id, $p_user_id) { require 'ProfileAcraExt.php'; $t_project_id = $p_project_id; global $g_cache_current_user_id; $g_cache_current_user_id = $p_user_id; $t_bug_data = new BugData(); $t_bug_data->project_id = $t_project_id; $t_bug_data->reporter_id = $p_user_id; $t_bug_data->build = gpc_get_string('APP_VERSION_CODE', ''); $t_bug_data->platform = "Android"; $t_bug_data->os = gpc_get_string('ANDROID_VERSION', ''); //gpc_get_string( 'os', '' ); $t_os_build = gpc_get_string('BUILD', ''); if (preg_match('/DISPLAY\\s*=\\s*(.*)/', $t_os_build, $t_match)) { var_dump($t_match); $t_os_build = $t_match[1]; } else { $t_os_build = gpc_get_string('ANDROID_VERSION', ''); } $t_bug_data->os_build = $t_os_build; //gpc_get_string( 'os_build', '' ); $t_bug_data->version = gpc_get_string('APP_VERSION_NAME', ''); $t_bug_data->profile_id = profile_create_unique(ALL_USERS, $t_bug_data->platform, $t_bug_data->os, $t_bug_data->os_build, ""); $t_bug_data->handler_id = gpc_get_int('handler_id', 0); $t_bug_data->view_state = gpc_get_int('view_state', config_get('default_bug_view_status', 'VS_PRIVATE', 'acra_reporter')); $t_bug_data->category_id = $this->get_category_id($p_project_id); //gpc_get_int( 'category_id', 0 ); $t_bug_data->reproducibility = 10; //gpc_get_int( 'reproducibility', config_get( 'default_bug_reproducibility' ) ); $t_bug_data->severity = CRASH; //gpc_get_int( 'severity', config_get( 'default_bug_severity' ) ); $t_bug_data->priority = HIGH; //gpc_get_int( 'priority', config_get( 'default_bug_priority' ) ); $t_bug_data->projection = gpc_get_int('projection', config_get('default_bug_projection')); $t_bug_data->eta = gpc_get_int('eta', config_get('default_bug_eta')); $t_bug_data->resolution = OPEN; //gpc_get_string('resolution', config_get( 'default_bug_resolution' ) ); $t_bug_data->status = NEW_; //gpc_get_string( 'status', config_get( 'bug_submit_status' ) ); $t_bug_data->description = gpc_get_string('STACK_TRACE'); //gpc_get_string( 'description' ); $t_bug_data->summary = get_bug_summary_by_version(gpc_get_string('APP_VERSION_NAME', ''), $t_bug_data->description, $t_project_id); $t_bug_data->steps_to_reproduce = gpc_get_string('LOGCAT', ""); $t_bug_data->additional_information = gpc_get_string('CRASH_CONFIGURATION', ""); $t_bug_data->due_date = gpc_get_string('USER_CRASH_DATE', ''); if (is_blank($t_bug_data->due_date)) { $t_bug_data->due_date = date_get_null(); } $f_files = gpc_get_file('ufile', null); /** @todo (thraxisp) Note that this always returns a structure */ $f_report_stay = gpc_get_bool('report_stay', false); $f_copy_notes_from_parent = gpc_get_bool('copy_notes_from_parent', false); helper_call_custom_function('issue_create_validate', array($t_bug_data)); # Validate the custom fields before adding the bug. $t_related_custom_field_ids = custom_field_get_linked_ids($t_bug_data->project_id); foreach ($t_related_custom_field_ids as $t_id) { $t_def = custom_field_get_definition($t_id); # Produce an error if the field is required but wasn't posted if (!gpc_isset_custom_field($t_id, $t_def['type']) && $t_def['require_report']) { error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name'))); trigger_error(ERROR_EMPTY_FIELD, ERROR); } if (!custom_field_validate($t_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], NULL))) { error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name'))); trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR); } } # Allow plugins to pre-process bug data $t_bug_data = event_signal('EVENT_REPORT_BUG_DATA', $t_bug_data); # Ensure that resolved bugs have a handler if ($t_bug_data->handler_id == NO_USER && $t_bug_data->status >= config_get('bug_resolved_status_threshold')) { $t_bug_data->handler_id = $this->get_user_id(); } # Create the bug $t_bug_id = $t_bug_data->create(); # Mark the added issue as visited so that it appears on the last visited list. last_visited_issue($t_bug_id); # Handle the file upload if ($f_files != null) { $t_files = helper_array_transpose($f_files); if ($t_files != null) { foreach ($t_files as $t_file) { if (!empty($t_file['name'])) { file_add($t_bug_id, $t_file, 'bug'); } } } } # Handle custom field submission foreach ($t_related_custom_field_ids as $t_id) { # Do not set custom field value if user has no write access if (!custom_field_has_write_access($t_id, $t_bug_id)) { continue; } $t_def = custom_field_get_definition($t_id); if (!custom_field_set_value($t_id, $t_bug_id, gpc_get_custom_field("custom_field_{$t_id}", $t_def['type'], $t_def['default_value']), false)) { error_parameters(lang_get_defaulted(custom_field_get_field($t_id, 'name'))); trigger_error(ERROR_CUSTOM_FIELD_INVALID_VALUE, ERROR); } } $f_master_bug_id = gpc_get_int('m_id', 0); $f_rel_type = gpc_get_int('rel_type', -1); if ($f_master_bug_id > 0) { # it's a child generation... let's create the relationship and add some lines in the history # update master bug last updated bug_update_date($f_master_bug_id); # Add log line to record the cloning action history_log_event_special($t_bug_id, BUG_CREATED_FROM, '', $f_master_bug_id); history_log_event_special($f_master_bug_id, BUG_CLONED_TO, '', $t_bug_id); if ($f_rel_type >= 0) { # Add the relationship relationship_add($t_bug_id, $f_master_bug_id, $f_rel_type); # Add log line to the history (both issues) history_log_event_special($f_master_bug_id, BUG_ADD_RELATIONSHIP, relationship_get_complementary_type($f_rel_type), $t_bug_id); history_log_event_special($t_bug_id, BUG_ADD_RELATIONSHIP, $f_rel_type, $f_master_bug_id); # update relationship target bug last updated bug_update_date($t_bug_id); # Send the email notification email_relationship_added($f_master_bug_id, $t_bug_id, relationship_get_complementary_type($f_rel_type)); } # copy notes from parent if ($f_copy_notes_from_parent) { $t_parent_bugnotes = bugnote_get_all_bugnotes($f_master_bug_id); foreach ($t_parent_bugnotes as $t_parent_bugnote) { $t_private = $t_parent_bugnote->view_state == VS_PRIVATE; bugnote_add($t_bug_id, $t_parent_bugnote->note, $t_parent_bugnote->time_tracking, $t_private, $t_parent_bugnote->note_type, $t_parent_bugnote->note_attr, $t_parent_bugnote->reporter_id, FALSE, FALSE); } } } helper_call_custom_function('issue_create_notify', array($t_bug_id)); # Allow plugins to post-process bug data with the new bug ID event_signal('EVENT_REPORT_BUG', array($t_bug_data, $t_bug_id)); email_new_bug($t_bug_id); // log status and resolution changes if they differ from the default if ($t_bug_data->status != config_get('bug_submit_status')) { history_log_event($t_bug_id, 'status', config_get('bug_submit_status')); } if ($t_bug_data->resolution != config_get('default_bug_resolution')) { history_log_event($t_bug_id, 'resolution', config_get('default_bug_resolution')); } return $t_bug_id; }
$t_bug_data->projection = gpc_get_int( 'projection', config_get( 'default_bug_projection' ) ); $t_bug_data->eta = gpc_get_int( 'eta', config_get( 'default_bug_eta' ) ); $t_bug_data->resolution = config_get( 'default_bug_resolution' ); $t_bug_data->status = config_get( 'bug_submit_status' ); $t_bug_data->summary = gpc_get_string( 'summary' ); $t_bug_data->description = gpc_get_string( 'description' ); $t_bug_data->steps_to_reproduce = gpc_get_string( 'steps_to_reproduce', config_get( 'default_bug_steps_to_reproduce' ) ); $t_bug_data->additional_information = gpc_get_string( 'additional_info', config_get ( 'default_bug_additional_info' ) ); $t_bug_data->due_date = gpc_get_string( 'due_date', ''); if ( is_blank ( $t_bug_data->due_date ) ) { $t_bug_data->due_date = date_get_null(); } else { $t_bug_data->due_date = $t_bug_data->due_date; } $f_file = gpc_get_file( 'file', null ); /** @todo (thraxisp) Note that this always returns a structure */ # size = 0, if no file $f_report_stay = gpc_get_bool( 'report_stay', false ); $f_copy_notes_from_parent = gpc_get_bool( 'copy_notes_from_parent', false); $f_copy_attachments_from_parent = gpc_get_bool( 'copy_attachments_from_parent', false); $t_bug_data->project_id = $t_project_id; $t_bug_data->reporter_id = auth_get_current_user_id(); $t_bug_data->summary = trim( $t_bug_data->summary ); if ( access_has_project_level( config_get( 'roadmap_update_threshold' ), $t_bug_data->project_id ) ) { $t_bug_data->target_version = gpc_get_string( 'target_version', '' ); }