original_string: public static function set_lock_state($forumid, $discussionid, $targetstate) {
          global $DB, $PAGE, $USER;
  
          $params = self::validate_parameters(self::set_lock_state_parameters(), [
              'forumid' => $forumid,
              'discussionid' => $discussionid,
              'targetstate' => $targetstate
          ]);
  
          $vaultfactory = mod_forum\local\container::get_vault_factory();
          $forumvault = $vaultfactory->get_forum_vault();
          $forum = $forumvault->get_from_id($params['forumid']);
  
          $managerfactory = mod_forum\local\container::get_manager_factory();
          $capabilitymanager = $managerfactory->get_capability_manager($forum);
          if (!$capabilitymanager->can_manage_forum($USER)) {
              throw new moodle_exception('errorcannotlock', 'forum');
          }
  
          // If the targetstate(currentstate) is not 0 then it should be set to the current time.
          $lockedvalue = $targetstate ? 0 : time();
          self::validate_context($forum->get_context());
  
          $discussionvault = $vaultfactory->get_discussion_vault();
          $discussion = $discussionvault->get_from_id($params['discussionid']);
  
          // If the current state doesn't equal the desired state then update the current.
          // state to the desired state.
          $discussion->toggle_locked_state($lockedvalue);
          $response = $discussionvault->update_discussion($discussion);
          $discussion = !$response ? $response : $discussion;
          $exporterfactory = mod_forum\local\container::get_exporter_factory();
          $exporter = $exporterfactory->get_discussion_exporter($USER, $forum, $discussion);
          return $exporter->export($PAGE->get_renderer('mod_forum'));
      }
code: public static function set_lock_state($forumid, $discussionid, $targetstate) {
          global $DB, $PAGE, $USER;
  
          $params = self::validate_parameters(self::set_lock_state_parameters(), [
              'forumid' => $forumid,
              'discussionid' => $discussionid,
              'targetstate' => $targetstate
          ]);
  
          $vaultfactory = mod_forum\local\container::get_vault_factory();
          $forumvault = $vaultfactory->get_forum_vault();
          $forum = $forumvault->get_from_id($params['forumid']);
  
          $managerfactory = mod_forum\local\container::get_manager_factory();
          $capabilitymanager = $managerfactory->get_capability_manager($forum);
          if (!$capabilitymanager->can_manage_forum($USER)) {
              throw new moodle_exception('errorcannotlock', 'forum');
          }
  
          // If the targetstate(currentstate) is not 0 then it should be set to the current time.
          $lockedvalue = $targetstate ? 0 : time();
          self::validate_context($forum->get_context());
  
          $discussionvault = $vaultfactory->get_discussion_vault();
          $discussion = $discussionvault->get_from_id($params['discussionid']);
  
          // If the current state doesn't equal the desired state then update the current.
          // state to the desired state.
          $discussion->toggle_locked_state($lockedvalue);
          $response = $discussionvault->update_discussion($discussion);
          $discussion = !$response ? $response : $discussion;
          $exporterfactory = mod_forum\local\container::get_exporter_factory();
          $exporter = $exporterfactory->get_discussion_exporter($USER, $forum, $discussion);
          return $exporter->export($PAGE->get_renderer('mod_forum'));
      }
code_tokens: public static function set_lock_state ( $ forumid , $ discussionid , $ targetstate ) { global $ DB , $ PAGE , $ USER ; $ params = self :: validate_parameters ( self :: set_lock_state_parameters ( ) , [ 'forumid' => $ forumid , 'discussionid' => $ discussionid , 'targetstate' => $ targetstate ] ) ; $ vaultfactory = mod_forum \ local \ container :: get_vault_factory ( ) ; $ forumvault = $ vaultfactory -> get_forum_vault ( ) ; $ forum = $ forumvault -> get_from_id ( $ params [ 'forumid' ] ) ; $ managerfactory = mod_forum \ local \ container :: get_manager_factory ( ) ; $ capabilitymanager = $ managerfactory -> get_capability_manager ( $ forum ) ; if ( ! $ capabilitymanager -> can_manage_forum ( $ USER ) ) { throw new moodle_exception ( 'errorcannotlock' , 'forum' ) ; } // If the targetstate(currentstate) is not 0 then it should be set to the current time. $ lockedvalue = $ targetstate ? 0 : time ( ) ; self :: validate_context ( $ forum -> get_context ( ) ) ; $ discussionvault = $ vaultfactory -> get_discussion_vault ( ) ; $ discussion = $ discussionvault -> get_from_id ( $ params [ 'discussionid' ] ) ; // If the current state doesn't equal the desired state then update the current. // state to the desired state. $ discussion -> toggle_locked_state ( $ lockedvalue ) ; $ response = $ discussionvault -> update_discussion ( $ discussion ) ; $ discussion = ! $ response ? $ response : $ discussion ; $ exporterfactory = mod_forum \ local \ container :: get_exporter_factory ( ) ; $ exporter = $ exporterfactory -> get_discussion_exporter ( $ USER , $ forum , $ discussion ) ; return $ exporter -> export ( $ PAGE -> get_renderer ( 'mod_forum' ) ) ; }
docstring: Set the lock state.
  
  @param   int     $forumid
  @param   int     $discussionid
  @param   string    $targetstate
  @return  \stdClass
docstring_tokens: Set the lock state .