original_string: public static function update_plan(stdClass $record) {
          static::require_enabled();
  
          $plan = new plan($record->id);
  
          // Validate that the plan as it is can be managed.
          if (!$plan->can_manage()) {
              throw new required_capability_exception($plan->get_context(), 'moodle/competency:planmanage', 'nopermissions', '');
  
          } else if ($plan->get('status') == plan::STATUS_COMPLETE) {
              // A completed plan cannot be edited.
              throw new coding_exception('Completed plan cannot be edited.');
  
          } else if ($plan->is_based_on_template()) {
              // Prevent a plan based on a template to be edited.
              throw new coding_exception('Cannot update a plan that is based on a template.');
  
          } else if (isset($record->templateid) && $plan->get('templateid') != $record->templateid) {
              // Prevent a plan to be based on a template.
              throw new coding_exception('Cannot base a plan on a template.');
  
          } else if (isset($record->userid) && $plan->get('userid') != $record->userid) {
              // Prevent change of ownership as the capabilities are checked against that.
              throw new coding_exception('A plan cannot be transfered to another user');
  
          } else if (isset($record->status) && $plan->get('status') != $record->status) {
              // Prevent change of status.
              throw new coding_exception('To change the status of a plan use the appropriate methods.');
  
          }
  
          $plan->from_record($record);
          $plan->update();
  
          // Trigger updated event.
          \core\event\competency_plan_updated::create_from_plan($plan)->trigger();
  
          return $plan;
      }
code: public static function update_plan(stdClass $record) {
          static::require_enabled();
  
          $plan = new plan($record->id);
  
          // Validate that the plan as it is can be managed.
          if (!$plan->can_manage()) {
              throw new required_capability_exception($plan->get_context(), 'moodle/competency:planmanage', 'nopermissions', '');
  
          } else if ($plan->get('status') == plan::STATUS_COMPLETE) {
              // A completed plan cannot be edited.
              throw new coding_exception('Completed plan cannot be edited.');
  
          } else if ($plan->is_based_on_template()) {
              // Prevent a plan based on a template to be edited.
              throw new coding_exception('Cannot update a plan that is based on a template.');
  
          } else if (isset($record->templateid) && $plan->get('templateid') != $record->templateid) {
              // Prevent a plan to be based on a template.
              throw new coding_exception('Cannot base a plan on a template.');
  
          } else if (isset($record->userid) && $plan->get('userid') != $record->userid) {
              // Prevent change of ownership as the capabilities are checked against that.
              throw new coding_exception('A plan cannot be transfered to another user');
  
          } else if (isset($record->status) && $plan->get('status') != $record->status) {
              // Prevent change of status.
              throw new coding_exception('To change the status of a plan use the appropriate methods.');
  
          }
  
          $plan->from_record($record);
          $plan->update();
  
          // Trigger updated event.
          \core\event\competency_plan_updated::create_from_plan($plan)->trigger();
  
          return $plan;
      }
code_tokens: public static function update_plan ( stdClass $ record ) { static :: require_enabled ( ) ; $ plan = new plan ( $ record -> id ) ; // Validate that the plan as it is can be managed. if ( ! $ plan -> can_manage ( ) ) { throw new required_capability_exception ( $ plan -> get_context ( ) , 'moodle/competency:planmanage' , 'nopermissions' , '' ) ; } else if ( $ plan -> get ( 'status' ) == plan :: STATUS_COMPLETE ) { // A completed plan cannot be edited. throw new coding_exception ( 'Completed plan cannot be edited.' ) ; } else if ( $ plan -> is_based_on_template ( ) ) { // Prevent a plan based on a template to be edited. throw new coding_exception ( 'Cannot update a plan that is based on a template.' ) ; } else if ( isset ( $ record -> templateid ) && $ plan -> get ( 'templateid' ) != $ record -> templateid ) { // Prevent a plan to be based on a template. throw new coding_exception ( 'Cannot base a plan on a template.' ) ; } else if ( isset ( $ record -> userid ) && $ plan -> get ( 'userid' ) != $ record -> userid ) { // Prevent change of ownership as the capabilities are checked against that. throw new coding_exception ( 'A plan cannot be transfered to another user' ) ; } else if ( isset ( $ record -> status ) && $ plan -> get ( 'status' ) != $ record -> status ) { // Prevent change of status. throw new coding_exception ( 'To change the status of a plan use the appropriate methods.' ) ; } $ plan -> from_record ( $ record ) ; $ plan -> update ( ) ; // Trigger updated event. \ core \ event \ competency_plan_updated :: create_from_plan ( $ plan ) -> trigger ( ) ; return $ plan ; }
docstring: Updates a plan.
  
  @param stdClass $record
  @return \core_competency\plan
docstring_tokens: Updates a plan .