original_string: public static function role_assigned(\core\event\role_assigned $event) {
          global $CFG, $DB;
  
          $context = context::instance_by_id($event->contextid, MUST_EXIST);
  
          // If contextlevel is course then only subscribe user. Role assignment
          // at course level means user is enroled in course and can subscribe to forum.
          if ($context->contextlevel != CONTEXT_COURSE) {
              return;
          }
  
          // Forum lib required for the constant used below.
          require_once($CFG->dirroot . '/mod/forum/lib.php');
  
          $userid = $event->relateduserid;
          $sql = "SELECT f.id, f.course as course, cm.id AS cmid, f.forcesubscribe
                    FROM {forum} f
                    JOIN {course_modules} cm ON (cm.instance = f.id)
                    JOIN {modules} m ON (m.id = cm.module)
               LEFT JOIN {forum_subscriptions} fs ON (fs.forum = f.id AND fs.userid = :userid)
                   WHERE f.course = :courseid
                     AND f.forcesubscribe = :initial
                     AND m.name = 'forum'
                     AND fs.id IS NULL";
          $params = array('courseid' => $context->instanceid, 'userid' => $userid, 'initial' => FORUM_INITIALSUBSCRIBE);
  
          $forums = $DB->get_records_sql($sql, $params);
          foreach ($forums as $forum) {
              // If user doesn't have allowforcesubscribe capability then don't subscribe.
              $modcontext = context_module::instance($forum->cmid);
              if (has_capability('mod/forum:allowforcesubscribe', $modcontext, $userid)) {
                  \mod_forum\subscriptions::subscribe_user($userid, $forum, $modcontext);
              }
          }
      }
code: public static function role_assigned(\core\event\role_assigned $event) {
          global $CFG, $DB;
  
          $context = context::instance_by_id($event->contextid, MUST_EXIST);
  
          // If contextlevel is course then only subscribe user. Role assignment
          // at course level means user is enroled in course and can subscribe to forum.
          if ($context->contextlevel != CONTEXT_COURSE) {
              return;
          }
  
          // Forum lib required for the constant used below.
          require_once($CFG->dirroot . '/mod/forum/lib.php');
  
          $userid = $event->relateduserid;
          $sql = "SELECT f.id, f.course as course, cm.id AS cmid, f.forcesubscribe
                    FROM {forum} f
                    JOIN {course_modules} cm ON (cm.instance = f.id)
                    JOIN {modules} m ON (m.id = cm.module)
               LEFT JOIN {forum_subscriptions} fs ON (fs.forum = f.id AND fs.userid = :userid)
                   WHERE f.course = :courseid
                     AND f.forcesubscribe = :initial
                     AND m.name = 'forum'
                     AND fs.id IS NULL";
          $params = array('courseid' => $context->instanceid, 'userid' => $userid, 'initial' => FORUM_INITIALSUBSCRIBE);
  
          $forums = $DB->get_records_sql($sql, $params);
          foreach ($forums as $forum) {
              // If user doesn't have allowforcesubscribe capability then don't subscribe.
              $modcontext = context_module::instance($forum->cmid);
              if (has_capability('mod/forum:allowforcesubscribe', $modcontext, $userid)) {
                  \mod_forum\subscriptions::subscribe_user($userid, $forum, $modcontext);
              }
          }
      }
code_tokens: public static function role_assigned ( \ core \ event \ role_assigned $ event ) { global $ CFG , $ DB ; $ context = context :: instance_by_id ( $ event -> contextid , MUST_EXIST ) ; // If contextlevel is course then only subscribe user. Role assignment // at course level means user is enroled in course and can subscribe to forum. if ( $ context -> contextlevel != CONTEXT_COURSE ) { return ; } // Forum lib required for the constant used below. require_once ( $ CFG -> dirroot . '/mod/forum/lib.php' ) ; $ userid = $ event -> relateduserid ; $ sql = "SELECT f.id, f.course as course, cm.id AS cmid, f.forcesubscribe
                    FROM {forum} f
                    JOIN {course_modules} cm ON (cm.instance = f.id)
                    JOIN {modules} m ON (m.id = cm.module)
               LEFT JOIN {forum_subscriptions} fs ON (fs.forum = f.id AND fs.userid = :userid)
                   WHERE f.course = :courseid
                     AND f.forcesubscribe = :initial
                     AND m.name = 'forum'
                     AND fs.id IS NULL" ; $ params = array ( 'courseid' => $ context -> instanceid , 'userid' => $ userid , 'initial' => FORUM_INITIALSUBSCRIBE ) ; $ forums = $ DB -> get_records_sql ( $ sql , $ params ) ; foreach ( $ forums as $ forum ) { // If user doesn't have allowforcesubscribe capability then don't subscribe. $ modcontext = context_module :: instance ( $ forum -> cmid ) ; if ( has_capability ( 'mod/forum:allowforcesubscribe' , $ modcontext , $ userid ) ) { \ mod_forum \ subscriptions :: subscribe_user ( $ userid , $ forum , $ modcontext ) ; } } }
docstring: Observer for role_assigned event.
  
  @param \core\event\role_assigned $event
  @return void
docstring_tokens: Observer for role_assigned event .