original_string: public static function get_course_notes($courseid, $userid = 0) {
          global $CFG, $USER;
  
          if (empty($CFG->enablenotes)) {
              throw new moodle_exception('notesdisabled', 'notes');
          }
  
          $warnings = array();
          $arrayparams = array(
              'courseid' => $courseid,
              'userid'   => $userid,
          );
          $params = self::validate_parameters(self::get_course_notes_parameters(), $arrayparams);
  
          if (empty($params['courseid'])) {
              $params['courseid'] = SITEID;
          }
          $user = null;
          if (!empty($params['userid'])) {
              $user = core_user::get_user($params['userid'], '*', MUST_EXIST);
              core_user::require_active_user($user);
          }
  
          $course = get_course($params['courseid']);
  
          $systemcontext = context_system::instance();
          $canmanagesystemnotes = has_capability('moodle/notes:manage', $systemcontext);
  
          if ($course->id == SITEID) {
              $context = $systemcontext;
              $canmanagecoursenotes = $canmanagesystemnotes;
          } else {
              $context = context_course::instance($course->id);
              $canmanagecoursenotes = has_capability('moodle/notes:manage', $context);
          }
          self::validate_context($context);
  
          $sitenotes = array();
          $coursenotes = array();
          $personalnotes = array();
  
          if ($course->id != SITEID) {
  
              require_capability('moodle/notes:view', $context);
              $sitenotes = self::create_note_list(0, $systemcontext, $params['userid'], NOTES_STATE_SITE);
              $coursenotes = self::create_note_list($course->id, $context, $params['userid'], NOTES_STATE_PUBLIC);
              $personalnotes = self::create_note_list($course->id, $context, $params['userid'], NOTES_STATE_DRAFT,
                                                          $USER->id);
          } else {
              if (has_capability('moodle/notes:view', $context)) {
                  $sitenotes = self::create_note_list(0, $context, $params['userid'], NOTES_STATE_SITE);
              }
              // It returns notes only for a specific user!
              if (!empty($user)) {
                  $usercourses = enrol_get_users_courses($user->id, true);
                  foreach ($usercourses as $c) {
                      // All notes at course level, only if we have capability on every course.
                      if (has_capability('moodle/notes:view', context_course::instance($c->id))) {
                          $coursenotes += self::create_note_list($c->id, $context, $params['userid'], NOTES_STATE_PUBLIC);
                      }
                  }
              }
          }
  
          $results = array(
              'sitenotes'     => $sitenotes,
              'coursenotes'   => $coursenotes,
              'personalnotes' => $personalnotes,
              'canmanagesystemnotes' => $canmanagesystemnotes,
              'canmanagecoursenotes' => $canmanagecoursenotes,
              'warnings'      => $warnings
          );
          return $results;
  
      }
code: public static function get_course_notes($courseid, $userid = 0) {
          global $CFG, $USER;
  
          if (empty($CFG->enablenotes)) {
              throw new moodle_exception('notesdisabled', 'notes');
          }
  
          $warnings = array();
          $arrayparams = array(
              'courseid' => $courseid,
              'userid'   => $userid,
          );
          $params = self::validate_parameters(self::get_course_notes_parameters(), $arrayparams);
  
          if (empty($params['courseid'])) {
              $params['courseid'] = SITEID;
          }
          $user = null;
          if (!empty($params['userid'])) {
              $user = core_user::get_user($params['userid'], '*', MUST_EXIST);
              core_user::require_active_user($user);
          }
  
          $course = get_course($params['courseid']);
  
          $systemcontext = context_system::instance();
          $canmanagesystemnotes = has_capability('moodle/notes:manage', $systemcontext);
  
          if ($course->id == SITEID) {
              $context = $systemcontext;
              $canmanagecoursenotes = $canmanagesystemnotes;
          } else {
              $context = context_course::instance($course->id);
              $canmanagecoursenotes = has_capability('moodle/notes:manage', $context);
          }
          self::validate_context($context);
  
          $sitenotes = array();
          $coursenotes = array();
          $personalnotes = array();
  
          if ($course->id != SITEID) {
  
              require_capability('moodle/notes:view', $context);
              $sitenotes = self::create_note_list(0, $systemcontext, $params['userid'], NOTES_STATE_SITE);
              $coursenotes = self::create_note_list($course->id, $context, $params['userid'], NOTES_STATE_PUBLIC);
              $personalnotes = self::create_note_list($course->id, $context, $params['userid'], NOTES_STATE_DRAFT,
                                                          $USER->id);
          } else {
              if (has_capability('moodle/notes:view', $context)) {
                  $sitenotes = self::create_note_list(0, $context, $params['userid'], NOTES_STATE_SITE);
              }
              // It returns notes only for a specific user!
              if (!empty($user)) {
                  $usercourses = enrol_get_users_courses($user->id, true);
                  foreach ($usercourses as $c) {
                      // All notes at course level, only if we have capability on every course.
                      if (has_capability('moodle/notes:view', context_course::instance($c->id))) {
                          $coursenotes += self::create_note_list($c->id, $context, $params['userid'], NOTES_STATE_PUBLIC);
                      }
                  }
              }
          }
  
          $results = array(
              'sitenotes'     => $sitenotes,
              'coursenotes'   => $coursenotes,
              'personalnotes' => $personalnotes,
              'canmanagesystemnotes' => $canmanagesystemnotes,
              'canmanagecoursenotes' => $canmanagecoursenotes,
              'warnings'      => $warnings
          );
          return $results;
  
      }
code_tokens: public static function get_course_notes ( $ courseid , $ userid = 0 ) { global $ CFG , $ USER ; if ( empty ( $ CFG -> enablenotes ) ) { throw new moodle_exception ( 'notesdisabled' , 'notes' ) ; } $ warnings = array ( ) ; $ arrayparams = array ( 'courseid' => $ courseid , 'userid' => $ userid , ) ; $ params = self :: validate_parameters ( self :: get_course_notes_parameters ( ) , $ arrayparams ) ; if ( empty ( $ params [ 'courseid' ] ) ) { $ params [ 'courseid' ] = SITEID ; } $ user = null ; if ( ! empty ( $ params [ 'userid' ] ) ) { $ user = core_user :: get_user ( $ params [ 'userid' ] , '*' , MUST_EXIST ) ; core_user :: require_active_user ( $ user ) ; } $ course = get_course ( $ params [ 'courseid' ] ) ; $ systemcontext = context_system :: instance ( ) ; $ canmanagesystemnotes = has_capability ( 'moodle/notes:manage' , $ systemcontext ) ; if ( $ course -> id == SITEID ) { $ context = $ systemcontext ; $ canmanagecoursenotes = $ canmanagesystemnotes ; } else { $ context = context_course :: instance ( $ course -> id ) ; $ canmanagecoursenotes = has_capability ( 'moodle/notes:manage' , $ context ) ; } self :: validate_context ( $ context ) ; $ sitenotes = array ( ) ; $ coursenotes = array ( ) ; $ personalnotes = array ( ) ; if ( $ course -> id != SITEID ) { require_capability ( 'moodle/notes:view' , $ context ) ; $ sitenotes = self :: create_note_list ( 0 , $ systemcontext , $ params [ 'userid' ] , NOTES_STATE_SITE ) ; $ coursenotes = self :: create_note_list ( $ course -> id , $ context , $ params [ 'userid' ] , NOTES_STATE_PUBLIC ) ; $ personalnotes = self :: create_note_list ( $ course -> id , $ context , $ params [ 'userid' ] , NOTES_STATE_DRAFT , $ USER -> id ) ; } else { if ( has_capability ( 'moodle/notes:view' , $ context ) ) { $ sitenotes = self :: create_note_list ( 0 , $ context , $ params [ 'userid' ] , NOTES_STATE_SITE ) ; } // It returns notes only for a specific user! if ( ! empty ( $ user ) ) { $ usercourses = enrol_get_users_courses ( $ user -> id , true ) ; foreach ( $ usercourses as $ c ) { // All notes at course level, only if we have capability on every course. if ( has_capability ( 'moodle/notes:view' , context_course :: instance ( $ c -> id ) ) ) { $ coursenotes += self :: create_note_list ( $ c -> id , $ context , $ params [ 'userid' ] , NOTES_STATE_PUBLIC ) ; } } } } $ results = array ( 'sitenotes' => $ sitenotes , 'coursenotes' => $ coursenotes , 'personalnotes' => $ personalnotes , 'canmanagesystemnotes' => $ canmanagesystemnotes , 'canmanagecoursenotes' => $ canmanagecoursenotes , 'warnings' => $ warnings ) ; return $ results ; }
docstring: Get a list of course notes
  
  @param int $courseid ID of the Course
  @param int $userid ID of the User
  @return array of site, course and personal notes and warnings
  @since Moodle 2.9
  @throws moodle_exception
docstring_tokens: Get a list of course notes