/**
  * 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;
 }