? 530338-url-alter.patch
? purl_provider_monogamy.patch
Index: includes/purl_path.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/purl/includes/Attic/purl_path.inc,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 purl_path.inc
--- includes/purl_path.inc	22 Nov 2009 15:03:23 -0000	1.1.2.3
+++ includes/purl_path.inc	17 Dec 2009 21:28:28 -0000
@@ -25,12 +25,18 @@ class purl_path implements purl_processo
 
   /**
    * Tear apart the path and iterate thought it looking for valid values.
+   * The parser will not parse more than a single value per provider. For
+   * example, if both 'foo' and 'bar' are valid values for provider 'baz',
+   * foo/bar/node/5 will only return the value corresponding to the 'foo'
+   * element.
    */
   public function parse($valid_values, $q) {
+    $providers = array();
     $parsed = array();
     $args = explode('/', $q);
     $arg = current($args);
-    while (isset($valid_values[$arg])) {
+    while (isset($valid_values[$arg]) && !in_array($valid_values[$arg]['provider'], $providers, TRUE)) {
+      $providers[] = $valid_values[$arg]['provider'];
       $parsed[$arg] = $valid_values[$arg];
       array_shift($args);
       $arg = current($args);
