/**
  * Gives selected capabilities to specified roles.
  */
 public static function set_course_role_permissions($courseid, $publisherroles, $creatorroles)
 {
     $coursecontext = context_course::instance($courseid);
     // Clear capabilities from all of course's roles to be reassigned.
     self::clear_capabilities_for_course($courseid);
     foreach ($publisherroles as $role) {
         if (isset($role) && trim($role) !== '') {
             assign_capability('block/panopto:provision_aspublisher', CAP_ALLOW, $role, $coursecontext, $overwrite = false);
         }
     }
     foreach ($creatorroles as $role) {
         if (isset($role) && trim($role) !== '') {
             assign_capability('block/panopto:provision_asteacher', CAP_ALLOW, $role, $coursecontext, $overwrite = false);
         }
     }
     // Mark dirty (moodle standard for capability changes at context level).
     $coursecontext->mark_dirty();
     panopto_data::set_course_role_mappings($courseid, $publisherroles, $creatorroles);
 }