public static function get_store_instance_summaries() {
        $return = array();
        $default = array();
        $instance = cache_config::instance();
        $stores = $instance->get_all_stores();
        $locks = $instance->get_locks();
        foreach ($stores as $name => $details) {
            $class = $details['class'];
            $store = false;
            if ($class::are_requirements_met()) {
                $store = new $class($details['name'], $details['configuration']);
            }
            $lock = (isset($details['lock'])) ? $locks[$details['lock']] : $instance->get_default_lock();
            $record = array(
                'name' => $name,
                'plugin' => $details['plugin'],
                'default' => $details['default'],
                'isready' => $store ? $store->is_ready() : false,
                'requirementsmet' => $class::are_requirements_met(),
                'mappings' => 0,
                'lock' => $lock,
                'modes' => array(
                    cache_store::MODE_APPLICATION =>
                        ($class::get_supported_modes($return) & cache_store::MODE_APPLICATION) == cache_store::MODE_APPLICATION,
                    cache_store::MODE_SESSION =>
                        ($class::get_supported_modes($return) & cache_store::MODE_SESSION) == cache_store::MODE_SESSION,
                    cache_store::MODE_REQUEST =>
                        ($class::get_supported_modes($return) & cache_store::MODE_REQUEST) == cache_store::MODE_REQUEST,
                ),
                'supports' => array(
                    'multipleidentifiers' => $store ? $store->supports_multiple_identifiers() : false,
                    'dataguarantee' => $store ? $store->supports_data_guarantee() : false,
                    'nativettl' => $store ? $store->supports_native_ttl() : false,
                    'nativelocking' => ($store instanceof cache_is_lockable),
                    'keyawareness' => ($store instanceof cache_is_key_aware),
                    'searchable' => ($store instanceof cache_is_searchable)
                ),
                'warnings' => $store ? $store->get_warnings() : array()
            );
            if (empty($details['default'])) {
                $return[$name] = $record;
            } else {
                $default[$name] = $record;
            }
        }

        ksort($return);
        ksort($default);
        $return = $return + $default;

        foreach ($instance->get_definition_mappings() as $mapping) {
            if (!array_key_exists($mapping['store'], $return)) {
                continue;
            }
            $return[$mapping['store']]['mappings']++;
        }

        return $return;
    }