diff --git a/pift.cron.inc b/pift.cron.inc index 3121218..0de0c69 100644 --- a/pift.cron.inc +++ b/pift.cron.inc @@ -23,40 +23,38 @@ function pift_cron_retest() { // Only attempt query if both values are not empty. if ($api_versions && $sids) { - $retest_time = time() - PIFT_RETEST; - - // Loop over 'ON' clause to remove an 'OR' which should be more efficient. - foreach (array('u.nid = pi.nid', 'cu.nid = pi.nid') as $clause) { - db_query("UPDATE {pift_test} - SET status = %d - WHERE type = %d - AND id IN ( - SELECT f.fid - FROM {files} f - LEFT JOIN {upload} u - ON f.fid = u.fid - LEFT JOIN {comment_upload} cu - ON f.fid = cu.fid - - JOIN {project_issues} pi - ON " . $clause . " - JOIN {pift_project} p - ON pi.pid = p.pid - JOIN {project_release_nodes} r - ON pi.rid = r.nid - - JOIN {node} n - ON r.nid = n.nid - JOIN {term_node} t - ON (n.vid = t.vid AND t.tid IN (" . db_placeholders($api_versions, 'int') . ")) - - WHERE pi.sid IN (" . db_placeholders($sids, 'int') . ") - ) - AND status > %d - AND last_tested < %d", - array_merge(array(PIFT_STATUS_QUEUE, PIFT_TYPE_FILE), $api_versions, $sids, - array(PIFT_STATUS_SENT, $retest_time))); + //$retest_time = time() - PIFT_RETEST; + $retest_time = time(); + + drupal_set_message(print_r($api_versions, TRUE)); + drupal_set_message(print_r($sids, TRUE)); + drupal_set_message(time()); + + $result = db_query("SELECT test_id FROM {pift_test} + WHERE id IN ( + SELECT tmp.id FROM ( + SELECT MAX(pt.id) as id + FROM {pift_test} pt + JOIN {project_issues} pi + ON (pt.nid = pi.nid AND pi.sid IN (" . db_placeholders($sids, 'int') . ")) + JOIN {project_release_nodes} prn + ON pi.rid = prn.nid + JOIN {node} n + ON prn.nid = n.nid + JOIN {term_node} t + ON (n.vid = t.vid AND t.tid IN (" . db_placeholders($api_versions, 'int') . ")) + WHERE pt.type = %d + AND pt.status > %d + AND pt.last_tested < %d + GROUP BY pt.nid + ) AS tmp + )", + array_merge($sids, $api_versions, (array) PIFT_TEST_FILE, (array) PIFT_STATUS_SENT, (array) $retest_time)); + + while ($data = db_fetch_array($result)) { + $retest_ids[] = $data['test_id']; } + drupal_set_message("Retest IDs: \n" . print_r($retest_ids, TRUE)); } }