function display_reassignedTasks() { global $NF_CONF, $_USER, $_CONF, $_TABLES, $actionurl, $usermodeUID; global $optLinkVars, $errmsg, $NF_TaskStatus; $imgset = $_CONF['layout_url'] . '/nexflow/images/'; $p = new Template($_CONF['path_layout'] . 'nexflow/taskconsole'); $p->set_file(array('report' => 'viewreassignedtasks.thtml', 'records' => 'viewreassignedtask_record.thtml', 'javascript' => 'javascript/taskconsole.thtml')); $p->set_var('layout_url', $_CONF['layout_url']); $p->set_var('site_url', $_CONF['site_url']); $p->set_var('imgset', $imgset); $p->set_var('actionurl', $actionurl); $p->set_var('heading1', 'Project'); $p->set_var('heading2', 'Re-Assigned Tasks'); $p->set_var('heading3', 'Owner'); $p->set_var('heading4', 'Date'); $p->set_var('heading5', 'Actions'); $sql .= "SELECT a.id,a.uid,a.assignBack_uid,a.task_id,a.last_updated,b.nf_processID,b.createdDate,b.startedDate,c.taskname,b.nf_templateDataID,c.nf_templateID "; $sql .= "FROM {$_TABLES['nf_productionassignments']} a LEFT JOIN {$_TABLES['nf_queue']} b on b.id=a.task_id "; $sql .= "LEFT JOIN {$_TABLES['nf_templatedata']} c on c.id=b.nf_templateDataID "; $sql .= "WHERE assignBack_uid = {$usermodeUID} "; $query = DB_query($sql); $project_detailsLink = '<a href="#" onClick=\'ajaxViewProjectDetails(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/details.png" border="0" TITLE="View Project Details"></a> '; $project_detailsLink .= '<a href="#" onClick=\'ajaxViewProjectComments(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/comment.gif" border="0" TITLE="View Project Comments"></a> '; $i = 1; while ($reassignRec = DB_fetchArray($query, false)) { $nfclass = new nexflow($reassignRec['nf_processID']); $project_id = $nfclass->get_processVariable('PID'); // If task is for a project on hold or in a Recycled or Killed status then do not show it // There should never be any tasks appearing for Killed as that workflow has been forced to complete state. $project_state = DB_getItem($_TABLES['nf_projects'], 'status', "id='{$project_id}'"); if ($project_state != 5 and $project_state != 6 and $project_state != 7) { // Retrieve the project description for this task - used as Project Title $description = DB_getItem($_TABLES['nf_projects'], 'description', "id='{$project_id}'"); $project_number = DB_getItem($_TABLES['nf_projects'], 'project_num', "id='{$project_id}'"); if (trim($description) == '') { //$description = 'Not Available'; $description = DB_getItem($_TABLES['nf_template'], 'templateName', "id='{$reassignRec['nf_templateID']}'"); } elseif ($project_number != '') { $description = "{$project_number} - {$description}"; } $p->set_var('project_title', $description); $p->set_var('task_name', $reassignRec['taskname']); $p->set_var('task_id', $reassignRec['task_id']); $p->set_var('rowid', $i); $p->set_var('csscode', $i % 2 + 1); if ($reassignRec['last_updated'] == NULL or $reassignRec['last_updated'] == 0) { $p->set_var('task_icon', 'new_task.gif'); $p->set_var('task_started_date', ",task not started"); } else { $p->set_var('task_icon', 'task.gif'); $p->set_var('task_started_date', ",started:{$reassignRec['last_updated']}"); } $p->set_var('reassigned_date', strftime("%Y-%m-%d", $reassignRec['last_updated'])); $p->set_var('reassigned_owner', COM_getDisplayName($reassignRec['uid'])); $reclaimlink = "<a href=\"{$actionurl}?op=reclaimtask&id={$reassignRec['id']}\" onclick=\"return confirm('Send request to current task owner to reclaim task?');\">"; $reclaimlink .= "<img src=\"{$imgset}/assignback.gif\" border=\"0\" TITLE=\"Reclaim Task\"></a>"; $p->set_var('reclaim', $reclaimlink); $deletelink = "<a href=\"{$actionurl}?op=delreassignedtask&id={$reassignRec['id']}\" onclick=\"return confirm('Delete this re-assignment notice?');\">"; $deletelink .= "<img src=\"{$imgset}/delete.gif\" border=\"0\" TITLE=\"Delete Reassignment Notification\"></a>"; if (is_numeric($projectid)) { $p->set_var('project_details', sprintf($project_detailsLink, $i, $projectid, $usermodeUID, $reassignRec['task_id'], $i, $projectid, $usermodeUID, $reassignRec['task_id'])); } else { $p->set_var('project_details', '<span style="padding-right:14px;"> </span>'); } $p->set_var('delete', $deletelink); $p->set_var('showdetail', 'none'); $p->parse('view_records', 'records', true); $i++; } $p->set_var('num_records', $i); } $p->parse('javascript_code', 'javascript'); $p->parse('output', 'report'); return $p->finish($p->get_var('output')); }
/** * Called from nf_formatEmailMessage in plugins/nexflow/library.php * to allow modification of the notification subject and/or message. * * The parameters passed include the workflow process id, queue record id and the template task id * which are sufficent to be able to look up template or process details and form results. * * @param array $parms array('pid' => $processId, 'tid' => $tid, 'qid' => $qid, 'user' => $user); * @param string $taskname current taskname * @return array containg the taskname * */ function PLG_Nexflow_taskname($parms, $taskname) { global $_TABLES, $_CONF, $NF_MYAPP; $retval = array('taskname' => $taskame); if ($parms['tid'] == $NF_MYAPP['tasks']['mytask']) { if ($parms['pid'] > 0) { $fasttrack = 0; $nfclass = new nexflow($parms['pid']); $project_id = $nfclass->get_processVariable('PID'); $request_result = DB_getItem($_TABLES['nf_projectforms'], 'results_id', "project_id='{$project_id}' AND form_id={$NF_COGECO['forms']['capital_request']}"); if ($request_result > 0) { $fasttrack = nf_getFormResultData($request_result, $NF_MYAPP['formfield']['fasttrack']); } if ($fasttrack == 1) { $retval['taskname'] = "{$taskname} (Fast Track)"; } COM_errorLog("project:{$project_id}, fasttrack:{$fasttrack}"); } } return $retval; }
function nf_approveEditForm_posthandler($processid, $taskid, $userid, $projectid) { global $_CONF, $_TABLES, $_DB_table_prefix; $nfclass = new nexflow($processid); if ($projectid == '' or $projectid == 0) { $projectid = $nfclass->get_processVariable('PID'); } $actionopt = COM_applyFilter($_POST['actionopt']); $taskid = COM_applyFilter($_POST['taskid']); $formid = COM_applyFilter($_POST['formid']); $processid = COM_applyFilter($_POST['processid']); if ($projectid > 0) { $prj_formid = DB_getItem($_TABLES['nf_projectforms'], 'id', "project_id='{$projectid}' AND form_id='{$formid}'"); } $status = DB_getItem($_TABLES['nf_projectforms'], 'status', "id='{$prj_formid}'"); if (DB_count($_TABLES['nf_project_approvals'], array('uid', 'form_id', 'process_id'), array($userid, $prj_formid, $processid)) == 0) { DB_query("INSERT INTO {$_TABLES['nf_project_approvals']} (process_id,form_id,uid) VALUES ('{$processid}','{$prj_formid}','{$userid}')"); } if ($actionopt == 'accept') { DB_query("UPDATE {$_TABLES['nf_project_approvals']} SET status='3', date_updated=UNIX_TIMESTAMP() WHERE uid='{$userid}' AND form_id='{$prj_formid}'"); } elseif ($actionopt == 'reject') { DB_query("UPDATE {$_TABLES['nf_project_approvals']} SET status='6', date_updated=UNIX_TIMESTAMP() WHERE uid='{$userid}' AND form_id='{$prj_formid}'"); } if (trim($_POST['notes']) != '') { $notes = ppPrepareForDB($_POST['notes']); if (DB_count($_TABLES['nf_projectcomments'], array('project_id', 'task_id'), array($projectid, $taskid)) == 0) { $sql = "INSERT INTO {$_TABLES['nf_projectcomments']} (project_id, task_id, uid, timestamp, comment) "; $sql .= "VALUES ('{$projectid}','{$taskid}','{$userid}',UNIX_TIMESTAMP(),'{$notes}')"; } else { $sql = "UPDATE {$_TABLES['nf_projectcomments']} SET comment='{$notes}', timestamp=UNIX_TIMESTAMP() "; $sql .= "WHERE project_id='{$projectid}' AND task_id='{$taskid}' "; } DB_query($sql); } $formtype = DB_getItem($_TABLES['nf_projectforms'], 'formtype', "id='{$prj_formid}'"); if ($_POST['taskaction'] == 'Complete Task') { if ($processid > 0 and $taskid > 0) { $nfclass = new nexflow($processid, $userid); if ($actionopt == 'accept') { $statusmsg = "{$formtype} approved"; nf_updateStatusLog($projectid, $prj_formid, $statusmsg); $status = DB_getItem($_TABLES['nf_projectforms'], 'status', "id='{$prj_formid}'"); $nfclass = new nexflow($processid, $userid); // Set Process Variable to true which may be checked in the workflow $nfclass->set_ProcessVariable('Review_Approval', 0); $nfclass->complete_task($taskid); // If the form has not yet been rejected by another member then mark it accepted if ($status != 6) { DB_query("UPDATE {$_TABLES['nf_projectforms']} SET status='3' WHERE id='{$prj_formid}'"); } } elseif ($actionopt == 'reject') { DB_query("UPDATE {$_TABLES['nf_projectforms']} SET status='6' WHERE id='{$prj_formid}'"); $statusmsg = "{$formtype} Rejected"; nf_updateStatusLog($projectid, $prj_formid, $statusmsg); // Set Process Variable to false which may be checked in the workflow $nfclass->set_ProcessVariable('Review_Approval', 1); $nfclass->cancel_task($taskid); } else { return "Need to check 'Reject' or 'Accept' to complete the task"; } } } }
function nf_sleep($taskid, $processid) { $nfclass = new nexflow($processid); $nfclass->set_currentTaskid($taskid); $wakeup_time = $nfclass->get_processVariable($nfclass->get_taskOptionalParm()); $current_time = time(); if ($current_time > $wakeup_time) { return true; } else { return false; } }