Example #1
0
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>&nbsp;';
    $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>&nbsp;';
    $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;">&nbsp;</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'));
}
Example #2
0
/**
* 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;
    }
}