~ubuntu-qa-website-devel/ubuntu-qa-website/drupal7-rewrite

« back to all changes in this revision

Viewing changes to modules/qatracker/report/qatracker.report.defects.php

  • Committer: nskaggs
  • Date: 2016-01-12 17:42:40 UTC
  • mfrom: (414.1.2 ubuntu-qa-website)
  • Revision ID: nicholas.skaggs@canonical.com-20160112174240-kjp5dg8xzd6o5uds
Merge Hunter's fix for bug 1366579; sorting defect summary

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
    return $content;
46
46
}
47
47
 
48
 
function qatracker_getbugs_for_release($siteid) {
 
48
function qatracker_getbugs_for_release($siteid, $header) {
49
49
    /* 
50
50
     * Get all the bugs for all the milestones of a release 
51
51
     * for a given siteid 
52
52
     */
53
 
 
54
 
    $result = db_query("
55
 
SELECT  DISTINCT m.title mtitle
56
 
       ,l.bugnumber
57
 
       ,l.product
58
 
       ,l.title btitle
59
 
       ,l.status
60
 
       ,l.importance 
61
 
       ,l.assignee
62
 
       ,l.commentscount
63
 
       ,l.duplicatescount
64
 
       ,l.subscriberscount
65
 
       ,m.id
66
 
       ,(CASE 
 
53
    $query = db_select('qatracker_build', 'b')
 
54
                ->extend('TableSort')
 
55
                ->extend('PagerDefault');
 
56
    $query->distinct();
 
57
    $query->addField('m', 'title', 'mtitle');
 
58
    $query->fields('l', array(
 
59
        'bugnumber',
 
60
        'product',
 
61
        'title'));
 
62
    $query->addField('l', 'title', 'btitle');
 
63
    $query->fields('l', array(
 
64
        'status',
 
65
        'importance',
 
66
        'assignee',
 
67
        'commentscount',
 
68
        'duplicatescount',
 
69
        'subscriberscount'
 
70
        ));
 
71
    $query->addField('m', 'id');
 
72
    $query->addExpression("CASE 
67
73
            WHEN l.importance = 'Critical' THEN 0
68
74
            WHEN l.importance = 'High' THEN 1
69
75
            WHEN l.importance = 'Medium' THEN 2
70
76
            WHEN l.importance = 'Low' THEN 3
71
77
            WHEN l.importance = 'Undecided' THEN 10
72
 
        ELSE 5 END
73
 
        ) importance_order
74
 
FROM qatracker_build b
75
 
JOIN qatracker_product p ON p.id = b.productid
76
 
JOIN qatracker_build_milestone bm ON bm.buildid = b.id
77
 
JOIN qatracker_milestone m ON bm.milestoneid = m.id
78
 
JOIN qatracker_testsuite_product tp ON tp.productid = b.productid AND tp.milestone_seriesid = m.seriesid
79
 
JOIN qatracker_testsuite_testcase tt ON tt.testsuiteid = tp.testsuiteid
80
 
JOIN qatracker_testcase t ON tt.testcaseid = t.id
81
 
JOIN qatracker_result r ON (r.testcaseid = t.id AND r.buildid = b.id)
82
 
JOIN qatracker_bug g ON g.resultid = r.id
83
 
JOIN qatracker_launchpad_bug l ON g.bugnumber = l.originalbug
84
 
WHERE m.siteid = :siteid
85
 
AND SUBSTRING(m.title, '^[^ ]+') IN (
86
 
    SELECT DISTINCT SUBSTRING(m2.title, '^[^ ]+') 
87
 
    FROM qatracker_milestone m2
88
 
    WHERE m2.status IN (0,1)
89
 
    AND m2.siteid = m.siteid
90
 
)
91
 
AND tt.status IN (0, 2)
92
 
ORDER by m.id DESC, importance_order, l.status", array(":siteid" => intval($siteid)));
93
 
 
94
 
    return $result->fetchAll();
 
78
        ELSE 5 END", 'importance_order');
 
79
    $query->join('qatracker_product', 'p', 'p.id = b.productid');
 
80
    $query->join('qatracker_build_milestone', 'bm', 'bm.buildid = b.id');
 
81
    $query->join('qatracker_milestone', 'm', 'bm.milestoneid = m.id');
 
82
    $query->join('qatracker_testsuite_product', 'tp', 'tp.productid = b.productid AND tp.milestone_seriesid = m.seriesid');
 
83
    $query->join('qatracker_testsuite_testcase', 'tt', 'tt.testsuiteid = tp.testsuiteid');
 
84
    $query->join('qatracker_testcase', 't', 'tt.testcaseid = t.id');
 
85
    $query->join('qatracker_result', 'r', '(r.testcaseid = t.id AND r.buildid = b.id)');
 
86
    $query->join('qatracker_bug', 'g', 'g.resultid = r.id');
 
87
    $query->join('qatracker_launchpad_bug', 'l', 'g.bugnumber = l.originalbug');
 
88
    $query->condition('m.siteid', intval($siteid));
 
89
 
 
90
    $subquery = db_select('qatracker_milestone', 'm2');
 
91
    $subquery->distinct();
 
92
    $subquery->addExpression("SUBSTRING(m2.title, '^[^ ]+')");
 
93
    $or = db_or();
 
94
    $or->condition('m2.status', 0, '=');
 
95
    $or->condition('m2.status', 1, '=');
 
96
    $subquery->condition($or);
 
97
    $subquery->condition('m2.siteid', 'm.siteid');
 
98
 
 
99
    $query->addExpression("SUBSTRING(m.title, '^[^ ]+') IN (" . $subquery->__toString() . ')');
 
100
    $or = db_or();
 
101
    $or->condition('tt.status', 0, '=');
 
102
    $or->condition('tt.status', 2, '=');
 
103
    $query->condition($or);
 
104
    $query->condition('tt.status', array(0, 2), 'IN');
 
105
    $query->orderBy('m.id', 'DESC');
 
106
    $query->orderByHeader($header);
 
107
    return $query->execute()->fetchAll();
95
108
}
96
109
 
97
110
 
122
135
 
123
136
    $header = array(
124
137
        array('data' => 'Bug #'),
125
 
        array('data' => 'Title'),
126
 
        array('data' => 'Affects'),
127
 
        array('data' => 'Status'),
128
 
        array('data' => 'Importance'),
129
 
        array('data' => 'Assignee'),
130
 
        array('data' => 'Com.'),
131
 
        array('data' => 'Sub.'),
132
 
        array('data' => 'Dup.'),
 
138
        array('data' => 'Title', 'field' => 'btitle', 'sort' => 'DESC'),
 
139
        array('data' => 'Affects', 'field' => 'l.product', 'sort' => 'DESC'),
 
140
        array('data' => 'Status', 'field' => 'l.status', 'sort' => 'DESC'),
 
141
        array('data' => 'Importance', 'field' => 'l.importance', 'sort' => 'DESC'),
 
142
        array('data' => 'Assignee', 'field' => 'l.assignee', 'sort' => 'DESC'),
 
143
        array('data' => 'Com.', 'field' => 'l.commentscount', 'sort' => 'DESC'),
 
144
        array('data' => 'Sub.', 'field' => 'l.subscriberscount', 'sort' => 'DESC'),
 
145
        array('data' => 'Dup.', 'field' => 'l.duplicatescount', 'sort' => 'DESC'),
133
146
    );
134
147
 
135
 
    $bugs = qatracker_getbugs_for_release($siteid);
 
148
    $bugs = qatracker_getbugs_for_release($siteid, $header);
136
149
 
137
150
    $curr_milestone = "";
138
151
    $rows = array();