new object $bug_handler: $misc, $has_name; var $bug_handler ticker = 0; var $bug_handler ticket = 30; var $bug_handler unclaimed_tally = 4; var $dmi_data descriptions = #[]; var $has_name name = ['uniq, "Bug Report Handler", "the Bug Report Handler"]; var $root created_on = 866643320; var $root flags = ['variables, 'methods, 'code, 'core]; var $root inited = 1; var $root managed = [$bug_handler]; var $root manager = $bug_handler; var $root quota_exempt = 1; public method .add_bug() { arg category, title, reporter, text; var bug; // Spawn a new bug and fill it with information: // Create a new bug object: if (!(category.is($bug_report))) throw(~stop, "Category must be a descendant of $bug_report."); bug = category.spawn(); if (!bug) throw(~stop, "Unable to spawn new bug object!"); // Set the bug information: bug.set_reporter(reporter); bug.set_text(text); bug.set_ticket_number(.ticket()); .increase_ticket(); }; public method .calculate_owned_by() { arg who; var category, bug, tally; // Return the number of bugs owned by 'who': tally = 0; for category in ($bug_handler.categories()) { for bug in (category.children()) { if ((!(bug.fixed())) && ((bug.owner()) == who)) tally++; refresh(); } } return tally; }; public method .categories() { // Why? I don't know: return $bug_report.children(); }; public method .dismiss() { arg what; what.chparents($dismissed_bugs); }; public method .increase_ticket() { ticket++; }; public method .info() { var cat, repnum; // Report information on the bug handler: repnum = 0; for cat in (.categories()) repnum = repnum + ((cat.children()).length()); return ["Next Ticket Number: " + tostr(ticket), "Total Categories: " + tostr((.categories()).length()), "Total Bug Reports: " + tostr(repnum)]; }; public method .rehash_unclaimed_tally() { var category, bug; unclaimed_tally = 0; for category in ($bug_handler.categories()) { for bug in (category.children()) { if ((!(bug.fixed())) && (!(bug.owner()))) unclaimed_tally++; refresh(); } } }; public method .ticket() { return ticket; }; public method .unclaimed_tally() { return unclaimed_tally; };