in['product']); if (!can_perform('cansubmitbugs', $product[0])) { $message->errorPermission(); } // ################################################################### if (empty($_REQUEST['do'])) { $_REQUEST['do'] = 'add'; } // ################################################################### if ($_POST['do'] == 'insert') { $bug = new BugAPI(); $comment = new CommentAPI(); $notif = new NotificationCenter(); $bug->set('userid', bugdar::$userinfo['userid']); $bug->set('username', bugdar::$userinfo['displayname']); $bug->set('summary', $input->in['summary']); $bug->set('severity', $input->in['severity']); $comment->set('userid', bugdar::$userinfo['userid']); $comment->set('comment', $input->in['comment']); $comment->set('parselinks', $input->in['parselinks']); // ------------------------------------------------------------------- // check permissions on various input values if (!can_perform('canchangestatus', $input->in['product'])) { $bug->set('priority', bugdar::$options['defaultpriority']); $bug->set('status', bugdar::$options['defaultstatus']); $bug->set('resolution', bugdar::$options['defaultresolve']); } else { $bug->set('priority', $input->in['priority']); $bug->set('status', $input->in['status']); $bug->set('resolution', $input->in['resolution']); } if (!can_perform('canassign', $input->in['product'])) { $bug->set('assignedto', bugdar::$options['defaultassign']); } else { // assigned person is not a dev or a valid user $bug->set('assignedto', $input->in['assignedto']); } $product = explode(',', $input->in['product']); $bug->set('product', $product[0]); $bug->set('component', $product[1]); $bug->set('version', $product[2]); process_custom_fields($bug, $message, true); if (!$message->hasErrors()) { $bug->insert(); $comment->set('bugid', $bug->insertid); $comment->insert(); $notif->sendNewBugNotice($bug->values, $comment->values); $bug = new BugAPI(); // need to destroy because update will think the insert fields need to be changed, too $bug->set('bugid', $comment->values['bugid']); $bug->fetch(); $bug->set('dateline', $comment->values['dateline']); $bug->set('initialreport', $comment->insertid); $bug->set('lastposttime', $comment->values['dateline']); $bug->set('lastpostby', bugdar::$userinfo['userid']); $bug->set('lastpostbyname', bugdar::$userinfo['displayname']); $bug->set('hiddenlastposttime', $comment->values['dateline']); $bug->set('hiddenlastpostby', bugdar::$userinfo['userid']); $bug->set('hiddenlastpostbyname', bugdar::$userinfo['displayname']); $bug->update(); $notif->setBugData($bug->record); $notif->finalize(); $message->redirect(T('The bug has been added to the database.'), ($input->in['submit_reload'] == '' ? "showreport.php?bugid=" . $bug->values['bugid'] : 'newreport.php')); } else { $show['errors'] = true; $_REQUEST['do'] = 'add'; } } // ################################################################### if ($_REQUEST['do'] == 'add') { if (!is_array(bugdar::$datastore['product'])) { $message->error(T('No products have been setup, therefore no bugs can be added.')); } if (!is_array(bugdar::$datastore['version'])) { $message->error(T('No versions have been setup underneath your product(s), therefore no bugs can be added.')); } $select['severity'] = construct_datastore_select('severity', 'severity', 'severityid', ($input->in['severity'] ? $input->in['severity'] : bugdar::$options['defaultseverity'])); $show['changestatus'] = can_perform('canchangestatus'); if (can_perform('canchangestatus')) { $select['priority'] = construct_datastore_select('priority', 'priority', 'priorityid', ($input->in['priority'] ? $input->in['priority'] : bugdar::$options['defaultpriority'])); $select['status'] = construct_datastore_select('status', 'status', 'statusid', ($input->in['status'] ? $input->in['status'] : bugdar::$options['defaultstatus'])); $select['resolution'] = construct_datastore_select('resolution', 'resolution', 'resolutionid', ($input->in['resolution'] ? $input->in['resolution'] : bugdar::$options['defaultresolve'])); } $show['assign'] = can_perform('canassign'); if (can_perform('canassign')) { foreach (bugdar::$datastore['assignto'] as $dev) { $tpl = new BSTemplate('selectoption'); $tpl->vars = array( 'value' => $dev['userid'], 'label' => construct_user_display($dev, false), 'selected' => ($input->in['assignedto'] ? ($input->in['assignedto'] == $dev['userid']) : ($dev['userid'] == bugdar::$options['defaultassign'])) ); $select['dev'] = $tpl->evaluate()->getTemplate(); } } // custom fields $fields = construct_custom_fields($input->in, true); $i = 0; foreach ($fields AS $field) { if ($i % 2 == 0) { $customfields['left'] .= $field; } else { $customfields['right'] .= $field; } $i++; } $tpl = new BSTemplate('newreport'); $tpl->vars = array( 'reporter' => construct_user_display(bugdar::$userinfo), 'productSelect' => construct_product_select('cansubmitbugs', $input->in['product'], false), 'select' => $select, 'customfields' => $customfields ); $tpl->evaluate()->flush(); } ?>