original_string: public static function agree_site_policy() {
          global $CFG, $DB, $USER;
  
          $warnings = array();
  
          $context = context_system::instance();
          try {
              // We expect an exception here since the user didn't agree the site policy yet.
              self::validate_context($context);
          } catch (Exception $e) {
              // We are expecting only a sitepolicynotagreed exception.
              if (!($e instanceof moodle_exception) or $e->errorcode != 'sitepolicynotagreed') {
                  // In case we receive a different exception, throw it.
                  throw $e;
              }
          }
  
          $manager = new \core_privacy\local\sitepolicy\manager();
          if (!empty($USER->policyagreed)) {
              $status = false;
              $warnings[] = array(
                  'item' => 'user',
                  'itemid' => $USER->id,
                  'warningcode' => 'alreadyagreed',
                  'message' => 'The user already agreed the site policy.'
              );
          } else if (!$manager->is_defined()) {
              $status = false;
              $warnings[] = array(
                  'item' => 'user',
                  'itemid' => $USER->id,
                  'warningcode' => 'nositepolicy',
                  'message' => 'The site does not have a site policy configured.'
              );
          } else {
              $status = $manager->accept();
          }
  
          $result = array();
          $result['status'] = $status;
          $result['warnings'] = $warnings;
          return $result;
      }
code: public static function agree_site_policy() {
          global $CFG, $DB, $USER;
  
          $warnings = array();
  
          $context = context_system::instance();
          try {
              // We expect an exception here since the user didn't agree the site policy yet.
              self::validate_context($context);
          } catch (Exception $e) {
              // We are expecting only a sitepolicynotagreed exception.
              if (!($e instanceof moodle_exception) or $e->errorcode != 'sitepolicynotagreed') {
                  // In case we receive a different exception, throw it.
                  throw $e;
              }
          }
  
          $manager = new \core_privacy\local\sitepolicy\manager();
          if (!empty($USER->policyagreed)) {
              $status = false;
              $warnings[] = array(
                  'item' => 'user',
                  'itemid' => $USER->id,
                  'warningcode' => 'alreadyagreed',
                  'message' => 'The user already agreed the site policy.'
              );
          } else if (!$manager->is_defined()) {
              $status = false;
              $warnings[] = array(
                  'item' => 'user',
                  'itemid' => $USER->id,
                  'warningcode' => 'nositepolicy',
                  'message' => 'The site does not have a site policy configured.'
              );
          } else {
              $status = $manager->accept();
          }
  
          $result = array();
          $result['status'] = $status;
          $result['warnings'] = $warnings;
          return $result;
      }
code_tokens: public static function agree_site_policy ( ) { global $ CFG , $ DB , $ USER ; $ warnings = array ( ) ; $ context = context_system :: instance ( ) ; try { // We expect an exception here since the user didn't agree the site policy yet. self :: validate_context ( $ context ) ; } catch ( Exception $ e ) { // We are expecting only a sitepolicynotagreed exception. if ( ! ( $ e instanceof moodle_exception ) or $ e -> errorcode != 'sitepolicynotagreed' ) { // In case we receive a different exception, throw it. throw $ e ; } } $ manager = new \ core_privacy \ local \ sitepolicy \ manager ( ) ; if ( ! empty ( $ USER -> policyagreed ) ) { $ status = false ; $ warnings [ ] = array ( 'item' => 'user' , 'itemid' => $ USER -> id , 'warningcode' => 'alreadyagreed' , 'message' => 'The user already agreed the site policy.' ) ; } else if ( ! $ manager -> is_defined ( ) ) { $ status = false ; $ warnings [ ] = array ( 'item' => 'user' , 'itemid' => $ USER -> id , 'warningcode' => 'nositepolicy' , 'message' => 'The site does not have a site policy configured.' ) ; } else { $ status = $ manager -> accept ( ) ; } $ result = array ( ) ; $ result [ 'status' ] = $ status ; $ result [ 'warnings' ] = $ warnings ; return $ result ; }
docstring: Agree the site policy for the current user.
  
  @return array of warnings and status result
  @since Moodle 3.2
  @throws moodle_exception
docstring_tokens: Agree the site policy for the current user .