@@ -92,8 +92,8 @@ public function save($source, $alias, $langcode = LanguageInterface::LANGCODE_NO
9292
9393 $ context = $ this ->getSourceContext ($ source );
9494
95- if ($ context && strpos ($ alias , '/ ' . $ context . '/ ' ) === 0 ) {
96- $ alias = substr ($ alias , strlen ($ context ) + 2 );
95+ if ($ context && strpos ($ alias , '/-- ' . $ context . '-- / ' ) === 0 ) {
96+ $ alias = substr ($ alias , strlen ($ context ) + 6 );
9797 }
9898
9999 $ fields = [
@@ -179,7 +179,7 @@ public function load($conditions) {
179179 $ select ->orderBy ('context ' , 'ASC ' );
180180 }
181181
182- $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/', context, alias) END " , 'alias ' );
182+ $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/-- ', context, '--' , alias) END " , 'alias ' );
183183 // ENDCHANGE
184184
185185 foreach ($ conditions as $ field => $ value ) {
@@ -193,11 +193,14 @@ public function load($conditions) {
193193 $ aliasGroup = $ select ->orConditionGroup ();
194194 $ aliasGroup ->condition ($ field , $ this ->connection ->escapeLike ($ value ), 'LIKE ' );
195195 $ contextGroup = $ aliasGroup ->andConditionGroup ();
196- $ tail = explode ('/ ' , $ value );
197- $ head = array_shift ($ tail );
198- $ contextGroup
199- ->condition ('context ' , $ head )
200- ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
196+ if (substr ($ value , 0 , 3 ) == '/-- ' ) {
197+ $ tail = explode ('/ ' , $ value );
198+ $ head = substr (array_shift ($ tail ), 2 , -2 );
199+ $ contextGroup
200+ ->condition ('context ' , $ head )
201+ ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
202+ }
203+ $ aliasGroup ->condition ($ contextGroup );
201204 }
202205 else {
203206 $ select ->condition ($ field , $ this ->connection ->escapeLike ($ value ), 'LIKE ' );
@@ -251,7 +254,7 @@ public function preloadPathAlias($preloaded, $langcode) {
251254 $ select ->isNull ('context ' );
252255 }
253256
254- $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/', context, alias) END " , 'alias ' );
257+ $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/-- ', context, '--' , alias) END " , 'alias ' );
255258 // ENDCHANGE
256259
257260 // Always get the language-specific alias before the language-neutral one.
@@ -317,7 +320,7 @@ public function lookupPathAlias($path, $langcode) {
317320 }
318321
319322 if ($ context != $ currentContext ) {
320- $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/', context, alias) END " , 'alias ' );
323+ $ select ->addExpression ("CASE WHEN context = '' OR context IS NULL THEN alias ELSE CONCAT('/-- ', context, '--' , alias) END " , 'alias ' );
321324 }
322325 else {
323326 $ select ->addField (static ::TABLE , 'alias ' , 'alias ' );
@@ -353,24 +356,34 @@ public function lookupPathSource($path, $langcode) {
353356 $ nonContextGroup ->isNull ('context ' );
354357 $ aliasGroup ->condition ($ nonContextGroup );
355358 $ contextGroup = $ aliasGroup ->andConditionGroup ();
356- $ tail = explode ('/ ' , ltrim ($ alias , '/ ' ));
357- $ head = array_shift ($ tail );
358- $ contextGroup
359- ->condition ('context ' , $ head )
360- ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
361- $ aliasGroup ->condition ($ contextGroup );
359+ $ value = ltrim ($ alias , '/ ' );
360+
361+ if (substr ($ value , 0 , 2 ) == '-- ' ) {
362+ $ tail = explode ('/ ' , $ value );
363+ $ head = substr (array_shift ($ tail ), 2 , -2 );
364+ $ contextGroup
365+ ->condition ('context ' , $ head )
366+ ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
367+ $ aliasGroup ->condition ($ contextGroup );
368+ }
369+
362370 $ select ->condition ($ aliasGroup );
363371 }
364372 else {
365- $ tail = explode ('/ ' , ltrim ($ alias , '/ ' ));
366- $ head = array_shift ($ tail );
373+ $ value = ltrim ($ alias , '/ ' );
367374
368375 $ aliasGroup = $ select ->orConditionGroup ();
369- $ contextGroup = $ aliasGroup ->andConditionGroup ();
376+ if (substr ($ value , 0 , 2 ) == '-- ' ) {
377+ $ tail = explode ('/ ' , $ value );
378+ $ head = substr (array_shift ($ tail ), 2 , -2 );
379+ $ contextGroup = $ aliasGroup ->andConditionGroup ();
380+
381+ $ contextGroup
382+ ->condition ('context ' , $ head )
383+ ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
384+ $ aliasGroup ->condition ($ contextGroup );
385+ }
370386
371- $ contextGroup
372- ->condition ('context ' , $ head )
373- ->condition ('alias ' , $ this ->connection ->escapeLike ('/ ' . implode ('/ ' , $ tail )), 'LIKE ' );
374387
375388 $ nonContextGroup = $ aliasGroup ->andConditionGroup ();
376389 $ nonContextGroup ->condition ('alias ' , $ this ->connection ->escapeLike ($ alias ), 'LIKE ' );
@@ -380,7 +393,6 @@ public function lookupPathSource($path, $langcode) {
380393 $ nullContextGroup ->condition ('alias ' , $ this ->connection ->escapeLike ($ alias ), 'LIKE ' );
381394 $ nullContextGroup ->isNull ('context ' );
382395
383- $ aliasGroup ->condition ($ contextGroup );
384396 $ aliasGroup ->condition ($ nonContextGroup );
385397 $ aliasGroup ->condition ($ nullContextGroup );
386398 $ select ->condition ($ aliasGroup );
0 commit comments