original_string: public static function get_all_versions() : array {
          global $CFG;
  
          self::init();
  
          $versions = array();
  
          // Main version first.
          $versions['core'] = self::fetch_core_version();
  
          // The problem here is tha the component cache might be stable,
          // we want this to work also on frontpage without resetting the component cache.
          $usecache = false;
          if (CACHE_DISABLE_ALL or (defined('IGNORE_COMPONENT_CACHE') and IGNORE_COMPONENT_CACHE)) {
              $usecache = true;
          }
  
          // Now all plugins.
          $plugintypes = core_component::get_plugin_types();
          foreach ($plugintypes as $type => $typedir) {
              if ($usecache) {
                  $plugs = core_component::get_plugin_list($type);
              } else {
                  $plugs = self::fetch_plugins($type, $typedir);
              }
              foreach ($plugs as $plug => $fullplug) {
                  $plugin = new stdClass();
                  $plugin->version = null;
                  $module = $plugin;
                  include($fullplug.'/version.php');
                  $versions[$type.'_'.$plug] = $plugin->version;
              }
          }
  
          return $versions;
      }
code: public static function get_all_versions() : array {
          global $CFG;
  
          self::init();
  
          $versions = array();
  
          // Main version first.
          $versions['core'] = self::fetch_core_version();
  
          // The problem here is tha the component cache might be stable,
          // we want this to work also on frontpage without resetting the component cache.
          $usecache = false;
          if (CACHE_DISABLE_ALL or (defined('IGNORE_COMPONENT_CACHE') and IGNORE_COMPONENT_CACHE)) {
              $usecache = true;
          }
  
          // Now all plugins.
          $plugintypes = core_component::get_plugin_types();
          foreach ($plugintypes as $type => $typedir) {
              if ($usecache) {
                  $plugs = core_component::get_plugin_list($type);
              } else {
                  $plugs = self::fetch_plugins($type, $typedir);
              }
              foreach ($plugs as $plug => $fullplug) {
                  $plugin = new stdClass();
                  $plugin->version = null;
                  $module = $plugin;
                  include($fullplug.'/version.php');
                  $versions[$type.'_'.$plug] = $plugin->version;
              }
          }
  
          return $versions;
      }
code_tokens: public static function get_all_versions ( ) : array { global $ CFG ; self :: init ( ) ; $ versions = array ( ) ; // Main version first. $ versions [ 'core' ] = self :: fetch_core_version ( ) ; // The problem here is tha the component cache might be stable, // we want this to work also on frontpage without resetting the component cache. $ usecache = false ; if ( CACHE_DISABLE_ALL or ( defined ( 'IGNORE_COMPONENT_CACHE' ) and IGNORE_COMPONENT_CACHE ) ) { $ usecache = true ; } // Now all plugins. $ plugintypes = core_component :: get_plugin_types ( ) ; foreach ( $ plugintypes as $ type => $ typedir ) { if ( $ usecache ) { $ plugs = core_component :: get_plugin_list ( $ type ) ; } else { $ plugs = self :: fetch_plugins ( $ type , $ typedir ) ; } foreach ( $ plugs as $ plug => $ fullplug ) { $ plugin = new stdClass ( ) ; $ plugin -> version = null ; $ module = $ plugin ; include ( $ fullplug . '/version.php' ) ; $ versions [ $ type . '_' . $ plug ] = $ plugin -> version ; } } return $ versions ; }
docstring: Returns hash of all versions including core and all plugins.
  
  This is relatively slow and not fully cached, use with care!
  
  @return array as (string)plugintype_pluginname => (int)version
docstring_tokens: Returns hash of all versions including core and all plugins .