original_string: public static function delete_choice_responses($choiceid, $responses = array()) {
  
          $status = false;
          $warnings = array();
          $params = self::validate_parameters(self::delete_choice_responses_parameters(),
                                              array(
                                                  'choiceid' => $choiceid,
                                                  'responses' => $responses
                                              ));
  
          if (!$choice = choice_get_choice($params['choiceid'])) {
              throw new moodle_exception("invalidcoursemodule", "error");
          }
          list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice');
  
          $context = context_module::instance($cm->id);
          self::validate_context($context);
  
          require_capability('mod/choice:choose', $context);
  
          $candeleteall = has_capability('mod/choice:deleteresponses', $context);
          if ($candeleteall || $choice->allowupdate) {
  
              // Check if we can delete our own responses.
              if (!$candeleteall) {
                  $timenow = time();
                  if (!empty($choice->timeclose) && ($timenow > $choice->timeclose)) {
                      throw new moodle_exception("expired", "choice", '', userdate($choice->timeclose));
                  }
              }
  
              if (empty($params['responses'])) {
                  // No responses indicated so delete only my responses.
                  $todelete = array_keys(choice_get_my_response($choice));
              } else {
                  // Fill an array with the responses that can be deleted for this choice.
                  if ($candeleteall) {
                      // Teacher/managers can delete any.
                      $allowedresponses = array_keys(choice_get_all_responses($choice));
                  } else {
                      // Students can delete only their own responses.
                      $allowedresponses = array_keys(choice_get_my_response($choice));
                  }
  
                  $todelete = array();
                  foreach ($params['responses'] as $response) {
                      if (!in_array($response, $allowedresponses)) {
                          $warnings[] = array(
                              'item' => 'response',
                              'itemid' => $response,
                              'warningcode' => 'nopermissions',
                              'message' => 'Invalid response id, the response does not exist or you are not allowed to delete it.'
                          );
                      } else {
                          $todelete[] = $response;
                      }
                  }
              }
  
              $status = choice_delete_responses($todelete, $choice, $cm, $course);
          } else {
              // The user requires the capability to delete responses.
              throw new required_capability_exception($context, 'mod/choice:deleteresponses', 'nopermissions', '');
          }
  
          return array(
              'status' => $status,
              'warnings' => $warnings
          );
      }
code: public static function delete_choice_responses($choiceid, $responses = array()) {
  
          $status = false;
          $warnings = array();
          $params = self::validate_parameters(self::delete_choice_responses_parameters(),
                                              array(
                                                  'choiceid' => $choiceid,
                                                  'responses' => $responses
                                              ));
  
          if (!$choice = choice_get_choice($params['choiceid'])) {
              throw new moodle_exception("invalidcoursemodule", "error");
          }
          list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice');
  
          $context = context_module::instance($cm->id);
          self::validate_context($context);
  
          require_capability('mod/choice:choose', $context);
  
          $candeleteall = has_capability('mod/choice:deleteresponses', $context);
          if ($candeleteall || $choice->allowupdate) {
  
              // Check if we can delete our own responses.
              if (!$candeleteall) {
                  $timenow = time();
                  if (!empty($choice->timeclose) && ($timenow > $choice->timeclose)) {
                      throw new moodle_exception("expired", "choice", '', userdate($choice->timeclose));
                  }
              }
  
              if (empty($params['responses'])) {
                  // No responses indicated so delete only my responses.
                  $todelete = array_keys(choice_get_my_response($choice));
              } else {
                  // Fill an array with the responses that can be deleted for this choice.
                  if ($candeleteall) {
                      // Teacher/managers can delete any.
                      $allowedresponses = array_keys(choice_get_all_responses($choice));
                  } else {
                      // Students can delete only their own responses.
                      $allowedresponses = array_keys(choice_get_my_response($choice));
                  }
  
                  $todelete = array();
                  foreach ($params['responses'] as $response) {
                      if (!in_array($response, $allowedresponses)) {
                          $warnings[] = array(
                              'item' => 'response',
                              'itemid' => $response,
                              'warningcode' => 'nopermissions',
                              'message' => 'Invalid response id, the response does not exist or you are not allowed to delete it.'
                          );
                      } else {
                          $todelete[] = $response;
                      }
                  }
              }
  
              $status = choice_delete_responses($todelete, $choice, $cm, $course);
          } else {
              // The user requires the capability to delete responses.
              throw new required_capability_exception($context, 'mod/choice:deleteresponses', 'nopermissions', '');
          }
  
          return array(
              'status' => $status,
              'warnings' => $warnings
          );
      }
code_tokens: public static function delete_choice_responses ( $ choiceid , $ responses = array ( ) ) { $ status = false ; $ warnings = array ( ) ; $ params = self :: validate_parameters ( self :: delete_choice_responses_parameters ( ) , array ( 'choiceid' => $ choiceid , 'responses' => $ responses ) ) ; if ( ! $ choice = choice_get_choice ( $ params [ 'choiceid' ] ) ) { throw new moodle_exception ( "invalidcoursemodule" , "error" ) ; } list ( $ course , $ cm ) = get_course_and_cm_from_instance ( $ choice , 'choice' ) ; $ context = context_module :: instance ( $ cm -> id ) ; self :: validate_context ( $ context ) ; require_capability ( 'mod/choice:choose' , $ context ) ; $ candeleteall = has_capability ( 'mod/choice:deleteresponses' , $ context ) ; if ( $ candeleteall || $ choice -> allowupdate ) { // Check if we can delete our own responses. if ( ! $ candeleteall ) { $ timenow = time ( ) ; if ( ! empty ( $ choice -> timeclose ) && ( $ timenow > $ choice -> timeclose ) ) { throw new moodle_exception ( "expired" , "choice" , '' , userdate ( $ choice -> timeclose ) ) ; } } if ( empty ( $ params [ 'responses' ] ) ) { // No responses indicated so delete only my responses. $ todelete = array_keys ( choice_get_my_response ( $ choice ) ) ; } else { // Fill an array with the responses that can be deleted for this choice. if ( $ candeleteall ) { // Teacher/managers can delete any. $ allowedresponses = array_keys ( choice_get_all_responses ( $ choice ) ) ; } else { // Students can delete only their own responses. $ allowedresponses = array_keys ( choice_get_my_response ( $ choice ) ) ; } $ todelete = array ( ) ; foreach ( $ params [ 'responses' ] as $ response ) { if ( ! in_array ( $ response , $ allowedresponses ) ) { $ warnings [ ] = array ( 'item' => 'response' , 'itemid' => $ response , 'warningcode' => 'nopermissions' , 'message' => 'Invalid response id, the response does not exist or you are not allowed to delete it.' ) ; } else { $ todelete [ ] = $ response ; } } } $ status = choice_delete_responses ( $ todelete , $ choice , $ cm , $ course ) ; } else { // The user requires the capability to delete responses. throw new required_capability_exception ( $ context , 'mod/choice:deleteresponses' , 'nopermissions' , '' ) ; } return array ( 'status' => $ status , 'warnings' => $ warnings ) ; }
docstring: Delete the given submitted responses in a choice
  
  @param int $choiceid the choice instance id
  @param array $responses the response ids,  empty for deleting all the current user responses
  @return array status information and warnings
  @throws moodle_exception
  @since Moodle 3.0
docstring_tokens: Delete the given submitted responses in a choice