// ----------------------------------------------------------------------------------------------- // MAIN CONTENT // New project object to work with.. $project = new qa_project($project_id); // Administrator status.. $have_admin = $project->qa_process->have_admin; // Viewing approvals history? if (!isset($view_history)) { $view_history = "no"; } // --------------------------------------------------------------------- // Make sure we have a valid QA step.. if (!isset($qastep)) { if (isset($project_id) && isset($step_id)) { $qastep = new qa_project_step(); $qastep->get($project_id, $step_id); if (!$qastep->valid) { unset($qastep); } } } $s = ""; if (isset($qastep)) { // PROCESS POSTED UPDATES.. if (isset($submit) && $submit == "Update") { if ($project->request_id > 0) { // Possible approval type updates.. if ($project->POSTprocess_approval_updates($qastep->qa_step_id)) { $project->get_project(); } // Possible assignment/re-assignment..
/** * Process the POST of approval types addition and removal changes * for this project. Returns true if changes were made. * @param mixed $step_id If provided, limit POST checking to the given step * @return boolean True if one or more changes were made */ function POSTprocess_approval_updates($step_id = false) { $res = false; // This will be posted as an array var.. $postvar = "step_approval_types"; global ${$postvar}; if (isset(${$postvar})) { $posted_approvals = ${$postvar}; // (a) Process approval types being removed.. $q = "SELECT * FROM qa_project_step_approval"; $q .= " WHERE project_id={$this->request_id}"; if ($step_id !== false) { $q .= " AND qa_step_id={$step_id}"; } $qry = new PgQuery($q); if ($qry->Exec("qa_project::POSTprocess_approval_updates") && $qry->rows > 0) { while ($row = $qry->Fetch()) { // Can only change if in 'not started' status.. $status = $row->last_approval_status; $step_id = $row->qa_step_id; $ap_type_id = $row->qa_approval_type_id; if (!in_array($step_id . "|" . $ap_type_id, $posted_approvals)) { if ($status == "") { $qastep = new qa_project_step(); $qastep->get($this->request_id, $step_id); $qastep->remove_required_approval($ap_type_id); $res = true; } } // Keep record of currently required approvals.. $reqd_approvals[] = $step_id . "|" . $ap_type_id; } // while } // (b) Process approval types being added.. if (count($posted_approvals) > 0) { foreach ($posted_approvals as $key) { $bits = explode("|", $key); $new_step_id = $bits[0]; $new_ap_type_id = $bits[1]; if (!in_array($new_step_id . "|" . $new_ap_type_id, $reqd_approvals)) { $q = "INSERT INTO qa_project_step_approval ("; $q .= " project_id, qa_step_id, qa_approval_type_id "; $q .= ") "; $q .= "VALUES(?, ?, ?);"; $qry = new PgQuery($q, $this->request_id, $new_step_id, $new_ap_type_id); if (!$qry->Exec("qa_project::POSTprocess_approval_updates")) { $client_messages[] = "{$qry->errorstring}"; } $res = true; } } // foreach } } // Indication that changes were made.. return $res; }