query_first(" SELECT bugvaluefill.*, bug.*, user.email, user.displayname, user.showemail FROM " . TABLE_PREFIX . "bug AS bug LEFT JOIN " . TABLE_PREFIX . "user AS user ON (bug.userid = user.userid) LEFT JOIN " . TABLE_PREFIX . "bugvaluefill AS bugvaluefill ON (bug.bugid = bugvaluefill.bugid) WHERE bug.bugid = " . intval($bugsys->in['bugid']) ); if (!((can_perform('caneditown', $bug['productid']) AND $bugsys->userinfo['userid'] == $bug['userid']) OR (can_perform('caneditother', $bug['productid']) AND $bugsys->userinfo['userid'] != $bug['userid'])) AND !can_perform('canpostcomments', $bug['productid'])) { $message->error_permission(); } if (!$bug) { $message->error($lang->getlex('error_invalid_id')); } if ($bug['hidden'] AND !can_perform('canviewhidden', $bug['productid'])) { $message->error_permission(); } // setup logging require_once('./includes/class_history.php'); $log = new History(); $log->bugid = $bug['bugid']; // setup new logging require_once('./includes/class_logging.php'); $log2 = new Logging; $log2->set_bugid($bug['bugid']); $bugfields = array( 'duplicateof', 'dependency', 'hidden', 'summary', 'status', 'severity', 'priority', 'versionid' => 'version', 'assignedto' => 'assignto', 'resolution', 'productid' => 'product', 'componentid' => 'component' ); // ################################################################### if ($_POST['do'] == 'update') { $bugapi = new BugAPI($bugsys); $bugapi->set('bugid', $bugsys->in['bugid']); $bugapi->set_condition(); $bugapi->dorelations = array(); $bugapi->fetch(); $log2->add_data(true, $bugapi->objdata, $bugfields); // ------------------------------------------------------------------- // handle autoaction $autoaction = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "autoaction WHERE actionid = " . $bugsys->input_clean('autoaction', TYPE_UINT)); if ($autoaction) { $autoaction['fields'] = unserialize($autoaction['fieldchanges']); foreach ($autoaction['fields']['builtin'] AS $field => $value) { $bugsys->in["$field"] = $value; } foreach ($autoaction['fields']['custom'] AS $field => $value) { $bugsys->in["field$field"] = $value; } } // ------------------------------------------------------------------- // process comment stuff if ($bugsys->in['comment']) { if (!empty($bugsys->in['comment']) AND $autoaction['comment']) { $commenttext = $bugsys->in['comment'] . "\n\n" . $lang->string('--------------- AUTOMATIC RESPONSE ---------------') . "\n" . $autoaction['comment']; } else if (empty($bugsys->in['comment']) AND $autoaction['comment']) { $commenttext = $autoaction['comment']; } else { $commenttext = $bugsys->in['comment']; } $comment = new CommentAPI($bugsys); $comment->set('bugid', $bugsys->in['bugid']); $comment->set('userid', $bugsys->userinfo['userid']); $comment->set('comment', $commenttext); $comment->insert(); $bugapi->set('lastposttime', $comment->values['dateline']); $bugapi->set('lastpostby', $bugsys->userinfo['userid']); $bugapi->set('hiddenlastposttime', $comment->values['dateline']); $bugapi->set('hiddenlastpostby', $bugsys->userinfo['userid']); if (!((can_perform('caneditown', $bug['productid']) AND $bugsys->userinfo['userid'] == $bug['userid']) OR (can_perform('caneditother', $bug['productid']) AND $bugsys->userinfo['userid'] != $bug['userid']))) { $bugapi->update(); $message->redirect($lang->string('Your reply has been added to the comment list.'), "showreport.php?bugid=$bug[bugid]"); } } // ------------------------------------------------------------------- // do update stuff $pcv = parse_pcv_select($bugsys->in['pcv_select'], true); $nocustomfields = true; if ($fields = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugvaluefill WHERE bugid = $bug[bugid]")) { $nocustomfields = false; $log2->add_data(true, $fields, array('bugid'), true, 'custom'); } // ------------------------------------------------------------------- // start updates process_custom_fields($bug['bugid']); $dependencies = preg_split('#([^0-9].*?)#', $bugsys->in['dependency'], -1, PREG_SPLIT_NO_EMPTY); $dependencies = ((count($dependencies) < 1) ? '' : implode(', ', $dependencies)); $bugapi->set('summary', $bugsys->in['summary']); $bugapi->set('severity', $bugsys->in['severity']); $bugapi->set('duplicateof', $bugsys->in['duplicateof']); $bugapi->set('dependency', $dependencies); $bugapi->set('productid', $pcv['product']); $bugapi->set('componentid', $pcv['component']); $bugapi->set('versionid', $pcv['version']); $bugapi->set('hidden', $bugsys->in['hidden']); if (can_perform('canchangestatus', $bug['productid'])) { $bugapi->set('priority', $bugsys->in['priority']); $bugapi->set('status', $bugsys->in['status']); $bugapi->set('resolution', $bugsys->in['resolution']); } if (can_perform('canassign', $bug['productid'])) { $bugapi->set('assignedto', $bugsys->in['assignedto']); } $log2->add_data(false, $bugapi->values, $bugfields); //$bugapi->update(); // ------------------------------------------------------------------- // do diff history $fields = (array)$db->query_first("SELECT * FROM " . TABLE_PREFIX . "bugvaluefill WHERE bugid = $bug[bugid]"); $log2->add_data(false, $fields, array('bugid'), true, 'custom'); print_r($log2); exit; $message->redirect($lang->string('Your changes to the bug have been saved.'), "showreport.php?bugid=$bug[bugid]"); } /*=====================================================================*\ || ################################################################### || # $HeadURL$ || # $Id$ || ################################################################### \*=====================================================================*/ ?>