$fields="c.id as courseid, c.fullname as coursefullname, cat.name as category, dw.workflowid, w.title as workflow, dw.delayeduntil AS workflowdelay, d.delayeduntil AS globaldelay, maxtable.wfcount AS workflowcount";
$fields='c.id as courseid, c.fullname as coursefullname, cat.name as category, dw.workflowid, w.title as workflow, dw.delayeduntil AS workflowdelay, d.delayeduntil AS globaldelay, maxtable.wfcount AS workflowcount';
$from="(".
"SELECT courseid, MAX(dw.id) AS maxid, COUNT(*) AS wfcount ".
"FROM {tool_lifecycle_delayed_workf} dw ".
"JOIN {tool_lifecycle_workflow} w ON dw.workflowid = w.id ".// To make sure no outdated delays are counted.
"WHERE dw.delayeduntil >= :time ".
$from='('.
'SELECT courseid, MAX(dw.id) AS maxid, COUNT(*) AS wfcount '.
'FROM {tool_lifecycle_delayed_workf} dw '.
'JOIN {tool_lifecycle_workflow} w ON dw.workflowid = w.id '.// To make sure no outdated delays are counted.
'WHERE dw.delayeduntil >= :time '.
// TODO AND dw.workflowid IN $workflows
"GROUP BY courseid ".
") maxtable ".
"JOIN {tool_lifecycle_delayed_workf} dw ON maxtable.maxid = dw.id ".
"JOIN {tool_lifecycle_workflow} w ON dw.workflowid = w.id ".
"FULL JOIN {tool_lifecycle_delayed} d ON dw.courseid = d.courseid ".
"JOIN {course} c ON c.id = dw.courseid ".
"JOIN {course_categories} cat ON c.category = cat.id";
'GROUP BY courseid '.
') maxtable '.
'JOIN {tool_lifecycle_delayed_workf} dw ON maxtable.maxid = dw.id '.
'JOIN {tool_lifecycle_workflow} w ON dw.workflowid = w.id '.
'FULL JOIN {tool_lifecycle_delayed} d ON dw.courseid = d.courseid '.
'JOIN {course} c ON c.id = COALESCE(dw.courseid, d.courseid) '.
'JOIN {course_categories} cat ON c.category = cat.id';
$where='true';
$params=['time'=>time()];
...
...
@@ -70,27 +66,65 @@ class delayed_courses_table extends \table_sql {
$this->define_headers([
get_string('coursename','tool_lifecycle'),
get_string('category'),
get_string('workflow','tool_lifecycle'),
get_string('delays','tool_lifecycle'),
get_string('tools','tool_lifecycle')
]);
}
publicfunctioncol_workflow($row){
global$DB;
if($row->globaldelay>=time()){
if($row->workflowcount==1){
return$row->workflow.' UNTIL '.$row->workflowdelay;