/** * Create or update user_flags records * * @param int $seplmentid the seplment for which the userflags are created or updated * @param array $userflags An array of userflags to create or update * @return array containing success or failure information for each record * @since Moodle 2.6 */ public static function set_user_flags($seplmentid, $userflags = array()) { global $CFG, $DB; require_once $CFG->dirroot . "/mod/sepl/locallib.php"; $params = self::validate_parameters(self::set_user_flags_parameters(), array('seplmentid' => $seplmentid, 'userflags' => $userflags)); // Load seplment if it exists and if the user has the capability. $cm = get_coursemodule_from_instance('sepl', $params['seplmentid'], 0, false, MUST_EXIST); $context = context_module::instance($cm->id); self::validate_context($context); require_capability('mod/sepl:grade', $context); $sepl = new sepl($context, null, null); $results = array(); foreach ($params['userflags'] as $userflag) { $success = true; $result = array(); $record = $sepl->get_user_flags($userflag['userid'], false); if ($record) { if (isset($userflag['locked'])) { $record->locked = $userflag['locked']; } if (isset($userflag['mailed'])) { $record->mailed = $userflag['mailed']; } if (isset($userflag['extensionduedate'])) { $record->extensionduedate = $userflag['extensionduedate']; } if (isset($userflag['workflowstate'])) { $record->workflowstate = $userflag['workflowstate']; } if (isset($userflag['allocatedmarker'])) { $record->allocatedmarker = $userflag['allocatedmarker']; } if ($sepl->update_user_flags($record)) { $result['id'] = $record->id; $result['userid'] = $userflag['userid']; } else { $result['id'] = $record->id; $result['userid'] = $userflag['userid']; $result['errormessage'] = 'Record created but values could not be set'; } } else { $record = $sepl->get_user_flags($userflag['userid'], true); $setfields = isset($userflag['locked']) || isset($userflag['mailed']) || isset($userflag['extensionduedate']) || isset($userflag['workflowstate']) || isset($userflag['allocatedmarker']); if ($record) { if ($setfields) { if (isset($userflag['locked'])) { $record->locked = $userflag['locked']; } if (isset($userflag['mailed'])) { $record->mailed = $userflag['mailed']; } if (isset($userflag['extensionduedate'])) { $record->extensionduedate = $userflag['extensionduedate']; } if (isset($userflag['workflowstate'])) { $record->workflowstate = $userflag['workflowstate']; } if (isset($userflag['allocatedmarker'])) { $record->allocatedmarker = $userflag['allocatedmarker']; } if ($sepl->update_user_flags($record)) { $result['id'] = $record->id; $result['userid'] = $userflag['userid']; } else { $result['id'] = $record->id; $result['userid'] = $userflag['userid']; $result['errormessage'] = 'Record created but values could not be set'; } } else { $result['id'] = $record->id; $result['userid'] = $userflag['userid']; } } else { $result['id'] = -1; $result['userid'] = $userflag['userid']; $result['errormessage'] = 'Record could not be created'; } } $results[] = $result; } return $results; }