original_string: public static function get_chats_by_courses($courseids = array()) {
          global $CFG;
  
          $returnedchats = array();
          $warnings = array();
  
          $params = self::validate_parameters(self::get_chats_by_courses_parameters(), array('courseids' => $courseids));
  
          $courses = array();
          if (empty($params['courseids'])) {
              $courses = enrol_get_my_courses();
              $params['courseids'] = array_keys($courses);
          }
  
          // Ensure there are courseids to loop through.
          if (!empty($params['courseids'])) {
  
              list($courses, $warnings) = external_util::validate_courses($params['courseids'], $courses);
  
              // Get the chats in this course, this function checks users visibility permissions.
              // We can avoid then additional validate_context calls.
              $chats = get_all_instances_in_courses("chat", $courses);
              foreach ($chats as $chat) {
                  $chatcontext = context_module::instance($chat->coursemodule);
                  // Entry to return.
                  $chatdetails = array();
                  // First, we return information that any user can see in the web interface.
                  $chatdetails['id'] = $chat->id;
                  $chatdetails['coursemodule']      = $chat->coursemodule;
                  $chatdetails['course']            = $chat->course;
                  $chatdetails['name']              = external_format_string($chat->name, $chatcontext->id);
                  // Format intro.
                  list($chatdetails['intro'], $chatdetails['introformat']) =
                      external_format_text($chat->intro, $chat->introformat, $chatcontext->id, 'mod_chat', 'intro', null);
                  $chatdetails['introfiles'] = external_util::get_area_files($chatcontext->id, 'mod_chat', 'intro', false, false);
  
                  if (has_capability('mod/chat:chat', $chatcontext)) {
                      $chatdetails['chatmethod']    = $CFG->chat_method;
                      $chatdetails['keepdays']      = $chat->keepdays;
                      $chatdetails['studentlogs']   = $chat->studentlogs;
                      $chatdetails['chattime']      = $chat->chattime;
                      $chatdetails['schedule']      = $chat->schedule;
                  }
  
                  if (has_capability('moodle/course:manageactivities', $chatcontext)) {
                      $chatdetails['timemodified']  = $chat->timemodified;
                      $chatdetails['section']       = $chat->section;
                      $chatdetails['visible']       = $chat->visible;
                      $chatdetails['groupmode']     = $chat->groupmode;
                      $chatdetails['groupingid']    = $chat->groupingid;
                  }
                  $returnedchats[] = $chatdetails;
              }
          }
          $result = array();
          $result['chats'] = $returnedchats;
          $result['warnings'] = $warnings;
          return $result;
      }
code: public static function get_chats_by_courses($courseids = array()) {
          global $CFG;
  
          $returnedchats = array();
          $warnings = array();
  
          $params = self::validate_parameters(self::get_chats_by_courses_parameters(), array('courseids' => $courseids));
  
          $courses = array();
          if (empty($params['courseids'])) {
              $courses = enrol_get_my_courses();
              $params['courseids'] = array_keys($courses);
          }
  
          // Ensure there are courseids to loop through.
          if (!empty($params['courseids'])) {
  
              list($courses, $warnings) = external_util::validate_courses($params['courseids'], $courses);
  
              // Get the chats in this course, this function checks users visibility permissions.
              // We can avoid then additional validate_context calls.
              $chats = get_all_instances_in_courses("chat", $courses);
              foreach ($chats as $chat) {
                  $chatcontext = context_module::instance($chat->coursemodule);
                  // Entry to return.
                  $chatdetails = array();
                  // First, we return information that any user can see in the web interface.
                  $chatdetails['id'] = $chat->id;
                  $chatdetails['coursemodule']      = $chat->coursemodule;
                  $chatdetails['course']            = $chat->course;
                  $chatdetails['name']              = external_format_string($chat->name, $chatcontext->id);
                  // Format intro.
                  list($chatdetails['intro'], $chatdetails['introformat']) =
                      external_format_text($chat->intro, $chat->introformat, $chatcontext->id, 'mod_chat', 'intro', null);
                  $chatdetails['introfiles'] = external_util::get_area_files($chatcontext->id, 'mod_chat', 'intro', false, false);
  
                  if (has_capability('mod/chat:chat', $chatcontext)) {
                      $chatdetails['chatmethod']    = $CFG->chat_method;
                      $chatdetails['keepdays']      = $chat->keepdays;
                      $chatdetails['studentlogs']   = $chat->studentlogs;
                      $chatdetails['chattime']      = $chat->chattime;
                      $chatdetails['schedule']      = $chat->schedule;
                  }
  
                  if (has_capability('moodle/course:manageactivities', $chatcontext)) {
                      $chatdetails['timemodified']  = $chat->timemodified;
                      $chatdetails['section']       = $chat->section;
                      $chatdetails['visible']       = $chat->visible;
                      $chatdetails['groupmode']     = $chat->groupmode;
                      $chatdetails['groupingid']    = $chat->groupingid;
                  }
                  $returnedchats[] = $chatdetails;
              }
          }
          $result = array();
          $result['chats'] = $returnedchats;
          $result['warnings'] = $warnings;
          return $result;
      }
code_tokens: public static function get_chats_by_courses ( $ courseids = array ( ) ) { global $ CFG ; $ returnedchats = array ( ) ; $ warnings = array ( ) ; $ params = self :: validate_parameters ( self :: get_chats_by_courses_parameters ( ) , array ( 'courseids' => $ courseids ) ) ; $ courses = array ( ) ; if ( empty ( $ params [ 'courseids' ] ) ) { $ courses = enrol_get_my_courses ( ) ; $ params [ 'courseids' ] = array_keys ( $ courses ) ; } // Ensure there are courseids to loop through. if ( ! empty ( $ params [ 'courseids' ] ) ) { list ( $ courses , $ warnings ) = external_util :: validate_courses ( $ params [ 'courseids' ] , $ courses ) ; // Get the chats in this course, this function checks users visibility permissions. // We can avoid then additional validate_context calls. $ chats = get_all_instances_in_courses ( "chat" , $ courses ) ; foreach ( $ chats as $ chat ) { $ chatcontext = context_module :: instance ( $ chat -> coursemodule ) ; // Entry to return. $ chatdetails = array ( ) ; // First, we return information that any user can see in the web interface. $ chatdetails [ 'id' ] = $ chat -> id ; $ chatdetails [ 'coursemodule' ] = $ chat -> coursemodule ; $ chatdetails [ 'course' ] = $ chat -> course ; $ chatdetails [ 'name' ] = external_format_string ( $ chat -> name , $ chatcontext -> id ) ; // Format intro. list ( $ chatdetails [ 'intro' ] , $ chatdetails [ 'introformat' ] ) = external_format_text ( $ chat -> intro , $ chat -> introformat , $ chatcontext -> id , 'mod_chat' , 'intro' , null ) ; $ chatdetails [ 'introfiles' ] = external_util :: get_area_files ( $ chatcontext -> id , 'mod_chat' , 'intro' , false , false ) ; if ( has_capability ( 'mod/chat:chat' , $ chatcontext ) ) { $ chatdetails [ 'chatmethod' ] = $ CFG -> chat_method ; $ chatdetails [ 'keepdays' ] = $ chat -> keepdays ; $ chatdetails [ 'studentlogs' ] = $ chat -> studentlogs ; $ chatdetails [ 'chattime' ] = $ chat -> chattime ; $ chatdetails [ 'schedule' ] = $ chat -> schedule ; } if ( has_capability ( 'moodle/course:manageactivities' , $ chatcontext ) ) { $ chatdetails [ 'timemodified' ] = $ chat -> timemodified ; $ chatdetails [ 'section' ] = $ chat -> section ; $ chatdetails [ 'visible' ] = $ chat -> visible ; $ chatdetails [ 'groupmode' ] = $ chat -> groupmode ; $ chatdetails [ 'groupingid' ] = $ chat -> groupingid ; } $ returnedchats [ ] = $ chatdetails ; } } $ result = array ( ) ; $ result [ 'chats' ] = $ returnedchats ; $ result [ 'warnings' ] = $ warnings ; return $ result ; }
docstring: Returns a list of chats in a provided list of courses,
  if no list is provided all chats that the user can view will be returned.
  
  @param array $courseids the course ids
  @return array of chats details
  @since Moodle 3.0
docstring_tokens: Returns a list of chats in a provided list of courses if no list is provided all chats that the user can view will be returned .