original_string: public static function search_contacts($searchtext, $onlymycourses = false) {
          global $CFG, $USER, $PAGE;
          require_once($CFG->dirroot . '/user/lib.php');
  
          // Check if messaging is enabled.
          if (empty($CFG->messaging)) {
              throw new moodle_exception('disabled', 'message');
          }
  
          require_once($CFG->libdir . '/enrollib.php');
  
          $params = array('searchtext' => $searchtext, 'onlymycourses' => $onlymycourses);
          $params = self::validate_parameters(self::search_contacts_parameters(), $params);
  
          // Extra validation, we do not allow empty queries.
          if ($params['searchtext'] === '') {
              throw new moodle_exception('querystringcannotbeempty');
          }
  
          $courseids = array();
          if ($params['onlymycourses']) {
              $mycourses = enrol_get_my_courses(array('id'));
              foreach ($mycourses as $mycourse) {
                  $courseids[] = $mycourse->id;
              }
          } else {
              $courseids[] = SITEID;
          }
  
          // Retrieving the users matching the query.
          $users = message_search_users($courseids, $params['searchtext']);
          $results = array();
          foreach ($users as $user) {
              $results[$user->id] = $user;
          }
  
          // Reorganising information.
          foreach ($results as &$user) {
              $newuser = array(
                  'id' => $user->id,
                  'fullname' => fullname($user)
              );
  
              // Avoid undefined property notice as phone not specified.
              $user->phone1 = null;
              $user->phone2 = null;
  
              $userpicture = new user_picture($user);
              $userpicture->size = 1; // Size f1.
              $newuser['profileimageurl'] = $userpicture->get_url($PAGE)->out(false);
              $userpicture->size = 0; // Size f2.
              $newuser['profileimageurlsmall'] = $userpicture->get_url($PAGE)->out(false);
  
              $user = $newuser;
          }
  
          return $results;
      }
code: public static function search_contacts($searchtext, $onlymycourses = false) {
          global $CFG, $USER, $PAGE;
          require_once($CFG->dirroot . '/user/lib.php');
  
          // Check if messaging is enabled.
          if (empty($CFG->messaging)) {
              throw new moodle_exception('disabled', 'message');
          }
  
          require_once($CFG->libdir . '/enrollib.php');
  
          $params = array('searchtext' => $searchtext, 'onlymycourses' => $onlymycourses);
          $params = self::validate_parameters(self::search_contacts_parameters(), $params);
  
          // Extra validation, we do not allow empty queries.
          if ($params['searchtext'] === '') {
              throw new moodle_exception('querystringcannotbeempty');
          }
  
          $courseids = array();
          if ($params['onlymycourses']) {
              $mycourses = enrol_get_my_courses(array('id'));
              foreach ($mycourses as $mycourse) {
                  $courseids[] = $mycourse->id;
              }
          } else {
              $courseids[] = SITEID;
          }
  
          // Retrieving the users matching the query.
          $users = message_search_users($courseids, $params['searchtext']);
          $results = array();
          foreach ($users as $user) {
              $results[$user->id] = $user;
          }
  
          // Reorganising information.
          foreach ($results as &$user) {
              $newuser = array(
                  'id' => $user->id,
                  'fullname' => fullname($user)
              );
  
              // Avoid undefined property notice as phone not specified.
              $user->phone1 = null;
              $user->phone2 = null;
  
              $userpicture = new user_picture($user);
              $userpicture->size = 1; // Size f1.
              $newuser['profileimageurl'] = $userpicture->get_url($PAGE)->out(false);
              $userpicture->size = 0; // Size f2.
              $newuser['profileimageurlsmall'] = $userpicture->get_url($PAGE)->out(false);
  
              $user = $newuser;
          }
  
          return $results;
      }
code_tokens: public static function search_contacts ( $ searchtext , $ onlymycourses = false ) { global $ CFG , $ USER , $ PAGE ; require_once ( $ CFG -> dirroot . '/user/lib.php' ) ; // Check if messaging is enabled. if ( empty ( $ CFG -> messaging ) ) { throw new moodle_exception ( 'disabled' , 'message' ) ; } require_once ( $ CFG -> libdir . '/enrollib.php' ) ; $ params = array ( 'searchtext' => $ searchtext , 'onlymycourses' => $ onlymycourses ) ; $ params = self :: validate_parameters ( self :: search_contacts_parameters ( ) , $ params ) ; // Extra validation, we do not allow empty queries. if ( $ params [ 'searchtext' ] === '' ) { throw new moodle_exception ( 'querystringcannotbeempty' ) ; } $ courseids = array ( ) ; if ( $ params [ 'onlymycourses' ] ) { $ mycourses = enrol_get_my_courses ( array ( 'id' ) ) ; foreach ( $ mycourses as $ mycourse ) { $ courseids [ ] = $ mycourse -> id ; } } else { $ courseids [ ] = SITEID ; } // Retrieving the users matching the query. $ users = message_search_users ( $ courseids , $ params [ 'searchtext' ] ) ; $ results = array ( ) ; foreach ( $ users as $ user ) { $ results [ $ user -> id ] = $ user ; } // Reorganising information. foreach ( $ results as & $ user ) { $ newuser = array ( 'id' => $ user -> id , 'fullname' => fullname ( $ user ) ) ; // Avoid undefined property notice as phone not specified. $ user -> phone1 = null ; $ user -> phone2 = null ; $ userpicture = new user_picture ( $ user ) ; $ userpicture -> size = 1 ; // Size f1. $ newuser [ 'profileimageurl' ] = $ userpicture -> get_url ( $ PAGE ) -> out ( false ) ; $ userpicture -> size = 0 ; // Size f2. $ newuser [ 'profileimageurlsmall' ] = $ userpicture -> get_url ( $ PAGE ) -> out ( false ) ; $ user = $ newuser ; } return $ results ; }
docstring: Search contacts.
  
  @param string $searchtext query string.
  @param bool $onlymycourses limit the search to the user's courses only.
  @return external_description
  @since Moodle 2.5
docstring_tokens: Search contacts .