55 function _set_rewrite_map( $PackageScriptPath =
false , $FileName =
'local_rewrite_map' )
60 if( $PackageScriptPath !==
false )
63 if( $RewriteMap ===
false )
67 $RewriteMap = str_replace(
"\r" ,
"\n" , $RewriteMap );
68 $RewriteMap = str_replace(
"\n\n" ,
"\n" , $RewriteMap );
69 if( $RewriteMap !=
'' )
71 $RewriteMap = explode(
"\n" , $RewriteMap );
72 for( $i = 0 ; $i < count( $RewriteMap ) ; $i++ )
74 $RewriteMap[ $i ] = explode(
'#' , $RewriteMap[ $i ] );
108 catch( Exception $e )
141 $FullPackageVersion =
'';
143 $Packages = explode(
'::' , $PackageName );
144 if( isset( $Packages[ 1 ] ) )
146 $l = count( $Packages ) - 1;
147 for( $i = 0 ; $i < $l ; $i++ )
149 $FullPackageVersion .=
'last::';
153 return( $FullPackageVersion );
187 if( isset( $MakeFullVersionCache[
"$PackageName.$PackageVersion" ] ) )
189 return( $MakeFullVersionCache[
"$PackageName.$PackageVersion" ] );
192 $FullPackageVersion = $PackageVersion;
193 if( $PackageVersion ==
'last' || strpos( $PackageVersion ,
'::' ) ===
false )
199 $MakeFullVersionCacheChanged =
true;
201 return( $MakeFullVersionCache[
"$PackageName.$PackageVersion" ] = $FullPackageVersion );
203 catch( Exception $e )
245 foreach( $RewriteMap as $i => $r )
247 if( preg_match( $r[ 0 ] , $PackageName.
'.'.$PackageVersion ) > 0 )
249 $PackageName = $r[ 1 ];
250 $PackageVersion = $r[ 2 ];
255 return( array( $PackageName , $PackageVersion ) );
257 catch( Exception $e )
293 if( preg_match( $r[ 0 ] , $PackageNameSegments[ $j ].
'.'.$PackageVersionSegments[ $j ] ) > 0 )
295 $PackageNameSegments[ $j ] = $r[ 1 ];
296 $PackageInfoParts = explode(
'.' , $r[ 2 ] );
298 if( count( $PackageInfoParts ) == 2 )
300 $PackageVersionSegments[ $j ] = $PackageInfoParts[ 0 ];
304 $PackageVersionSegments[ $j ] = $PackageInfoParts[ 0 ].
'.';
305 $PackageVersionSegments[ $j ] .= $PackageInfoParts[ 1 ].
'.';
306 $PackageVersionSegments[ $j ] .= $PackageInfoParts[ 2 ];
314 catch( Exception $e )
356 $PackageNameSegments = explode(
'::' , $PackageName );
357 $PackageVersionSegments = explode(
'::' , $PackageVersion );
359 foreach( $RewriteMap as $r )
361 for( $j = 0 ; $j < count( $PackageNameSegments ) ; $j++ )
370 $PackageName = implode(
'::' , $PackageNameSegments );
371 $PackageVersion = implode(
'::' , $PackageVersionSegments );
373 return( array( $PackageName , $PackageVersion ) );
375 catch( Exception $e )
419 $NameParts = explode(
'::' , $PackageName );
420 $VersionParts = explode(
'::' , $PackageVersion );
426 return( array( $PackageName , $PackageVersion ) );
428 catch( Exception $e )
472 if( $RewriteMap !==
false )
474 # \~russian пытаемся применить карты рерайтов ко всему имени пакета
475 # \~english trying to apply rewrite map to the hole package name and version
480 return( array( $PackageName , $PackageVersion ) );
482 catch( Exception $e )
529 $Key =
"$Name $Version $ROOT_DIR";
530 if( isset( $RewritedPackageCache[ $Key ] ) ===
false )
532 _set_rewrite_map(
"$ROOT_DIR/packages/_core_data/unexisting_file" ,
"cf_global_rewrite_rules" );
534 if( $RewriteMap !==
false )
541 $RewritedPackageCacheChanged =
true;
542 $RewritedPackageCache[ $Key ] = array( $Name , $Version );
544 return( $RewritedPackageCache[ $Key ] );
546 catch( Exception $e )
592 # глобальная переадресация
600 return( array( $PackageName , $PackageVersion ) );
602 catch( Exception $e )
647 if( $ENABLE_REWRITES )
656 $RewritesCacheChanged =
true;
659 catch( Exception $e )
701 $Key =
"$PackageName $PackageVersion $PackageScriptPath";
703 if( isset( $RewritesCache[ $Key ] ) )
705 return( $RewritesCache[ $Key ] );
711 return( $RewritesCache[ $Key ] = array( 0 => $PackageName , 1 => $PackageVersion ) );
713 catch( Exception $e )