Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ArrayRepository.php

function ArrayRepository::search

@inheritDoc

Overrides RepositoryInterface::search

4 calls to ArrayRepository::search()
ComposerRepository::search in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc
ComposerRepository::search in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc
PlatformRepository::search in vendor/composer/composer/src/Composer/Repository/PlatformRepository.php
@inheritDoc
PlatformRepository::search in vendor/composer/composer/src/Composer/Repository/PlatformRepository.php
@inheritDoc
2 methods override ArrayRepository::search()
ComposerRepository::search in vendor/composer/composer/src/Composer/Repository/ComposerRepository.php
@inheritDoc
PlatformRepository::search in vendor/composer/composer/src/Composer/Repository/PlatformRepository.php
@inheritDoc

File

vendor/composer/composer/src/Composer/Repository/ArrayRepository.php, line 149

Class

ArrayRepository
A repository implementation that simply stores packages in an array

Namespace

Composer\Repository

Code

public function search(string $query, int $mode = 0, ?string $type = null) {
    if ($mode === self::SEARCH_FULLTEXT) {
        $regex = '{(?:' . implode('|', Preg::split('{\\s+}', preg_quote($query))) . ')}i';
    }
    else {
        // vendor/name searches expect the caller to have preg_quoted the query
        $regex = '{(?:' . implode('|', Preg::split('{\\s+}', $query)) . ')}i';
    }
    $matches = [];
    foreach ($this->getPackages() as $package) {
        $name = $package->getName();
        if ($mode === self::SEARCH_VENDOR) {
            [
                $name,
            ] = explode('/', $name);
        }
        if (isset($matches[$name])) {
            continue;
        }
        if (null !== $type && $package->getType() !== $type) {
            continue;
        }
        if (Preg::isMatch($regex, $name) || $mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && Preg::isMatch($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) {
            if ($mode === self::SEARCH_VENDOR) {
                $matches[$name] = [
                    'name' => $name,
                    'description' => null,
                ];
            }
            else {
                $matches[$name] = [
                    'name' => $package->getPrettyName(),
                    'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null,
                ];
                if ($package instanceof CompletePackageInterface && $package->isAbandoned()) {
                    $matches[$name]['abandoned'] = $package->getReplacementPackage() ?: true;
                }
            }
        }
    }
    return array_values($matches);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal