Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / redirect / src / RedirectRepository.php
index 6c791990d66cc372dfb01354dd4bf0d9bf373159..f8a1cea9a02ce6ff4409e0b7ccc41b1a383391a1 100644 (file)
@@ -63,6 +63,7 @@ class RedirectRepository {
    * @throws \Drupal\redirect\Exception\RedirectLoopException
    */
   public function findMatchingRedirect($source_path, array $query = [], $language = Language::LANGCODE_NOT_SPECIFIED) {
+    $source_path = ltrim($source_path, '/');
     $hashes = [Redirect::generateHash($source_path, $query, $language)];
     if ($language != Language::LANGCODE_NOT_SPECIFIED) {
       $hashes[] = Redirect::generateHash($source_path, $query, Language::LANGCODE_NOT_SPECIFIED);
@@ -133,6 +134,23 @@ class RedirectRepository {
     return $this->manager->getStorage('redirect')->loadMultiple($ids);
   }
 
+  /**
+   * Finds redirects based on the destination URI.
+   *
+   * @param string[] $destination_uri
+   *   List of destination URIs, for example ['internal:/node/123'].
+   *
+   * @return \Drupal\redirect\Entity\Redirect[]
+   *   Array of redirect entities.
+   */
+  public function findByDestinationUri(array $destination_uri) {
+    $storage = $this->manager->getStorage('redirect');
+    $ids = $storage->getQuery()
+      ->condition('redirect_redirect.uri', $destination_uri, 'IN')
+      ->execute();
+    return $storage->loadMultiple($ids);
+  }
+
   /**
    * Load redirect entity by id.
    *