original_string: public function process() {
          if ($this->progress >= self::PROGRESS_PROCESSED) {
              throw new restore_ui_exception('restoreuialreadyprocessed');
          }
          $this->progress = self::PROGRESS_PROCESSED;
  
          if (optional_param('previous', false, PARAM_BOOL) && $this->stage->get_stage() > self::STAGE_CONFIRM) {
              $this->stage = $this->initialise_stage($this->stage->get_prev_stage(), $this->stage->get_params());
              return false;
          }
  
          // Process the stage.
          $processoutcome = $this->stage->process();
          if ($processoutcome !== false && !($this->get_stage() == self::STAGE_PROCESS && optional_param('substage', false, PARAM_BOOL))) {
              $this->stage = $this->initialise_stage($this->stage->get_next_stage(), $this->stage->get_params());
          }
  
          // Process UI event after to check changes are valid.
          $this->controller->process_ui_event();
          return $processoutcome;
      }
code: public function process() {
          if ($this->progress >= self::PROGRESS_PROCESSED) {
              throw new restore_ui_exception('restoreuialreadyprocessed');
          }
          $this->progress = self::PROGRESS_PROCESSED;
  
          if (optional_param('previous', false, PARAM_BOOL) && $this->stage->get_stage() > self::STAGE_CONFIRM) {
              $this->stage = $this->initialise_stage($this->stage->get_prev_stage(), $this->stage->get_params());
              return false;
          }
  
          // Process the stage.
          $processoutcome = $this->stage->process();
          if ($processoutcome !== false && !($this->get_stage() == self::STAGE_PROCESS && optional_param('substage', false, PARAM_BOOL))) {
              $this->stage = $this->initialise_stage($this->stage->get_next_stage(), $this->stage->get_params());
          }
  
          // Process UI event after to check changes are valid.
          $this->controller->process_ui_event();
          return $processoutcome;
      }
code_tokens: public function process ( ) { if ( $ this -> progress >= self :: PROGRESS_PROCESSED ) { throw new restore_ui_exception ( 'restoreuialreadyprocessed' ) ; } $ this -> progress = self :: PROGRESS_PROCESSED ; if ( optional_param ( 'previous' , false , PARAM_BOOL ) && $ this -> stage -> get_stage ( ) > self :: STAGE_CONFIRM ) { $ this -> stage = $ this -> initialise_stage ( $ this -> stage -> get_prev_stage ( ) , $ this -> stage -> get_params ( ) ) ; return false ; } // Process the stage. $ processoutcome = $ this -> stage -> process ( ) ; if ( $ processoutcome !== false && ! ( $ this -> get_stage ( ) == self :: STAGE_PROCESS && optional_param ( 'substage' , false , PARAM_BOOL ) ) ) { $ this -> stage = $ this -> initialise_stage ( $ this -> stage -> get_next_stage ( ) , $ this -> stage -> get_params ( ) ) ; } // Process UI event after to check changes are valid. $ this -> controller -> process_ui_event ( ) ; return $ processoutcome ; }
docstring: This processes the current stage of the restore
  @throws restore_ui_exception if the progress is wrong.
  @return bool
docstring_tokens: This processes the current stage of the restore