44 if( isset( $PackageRelativePathCache[ $File ] ) )
46 return( $PackageRelativePathCache[ $File ] );
50 $Dir = dirname( $File );
53 $RelativePath =
'/packages/'.basename( $Dir ).$RelativePath;
54 $Dir = dirname( dirname( $Dir ) );
56 while( file_exists( $Dir.
'/../../packages/core/data/package_list' ) );
59 $PackageRelativePathCacheChanged =
true;
61 return( $PackageRelativePathCache[ $File ] =
'.'.$RelativePath );
99 $PackageName = explode(
'::' , $PackageName );
100 $PackageName = array_pop( $PackageName );
104 $PackageVersion = explode(
'::' , $PackageVersion );
105 $PackageVersion = array_pop( $PackageVersion );
107 return( array( $PackageName , $PackageVersion ) );
109 catch( Exception $e )
158 $PackageNameAndVersion = $PackageName.
'.'.$Version;
160 foreach( $Info as $pi )
162 if( $pi[ 0 ][ 0 ] === $PackageNameAndVersion[ 0 ] && strpos( $pi[ 0 ] , $PackageNameAndVersion ) === 0 )
164 return( $ROOT_DIR.
'/packages/'.$pi[ 1 ] );
168 throw(
new Exception(
'Package '.$PackageName.
' with version '.$Version.
' was not found' ) );
170 catch( Exception $e )
211 $Key =
"$PackageName $PackageVersion $ROOT_DIR";
213 if( isset( $PackagePathCache[ $Key ] ) ===
false )
215 list( $PackageName , $PackageVersion ) =
get_top_data( $PackageName , $PackageVersion );
218 $PackagePathCacheChanged =
true;
219 $PackagePathCache[ $Key ] =
_fetch_package_path( $PackageName , $PackageVersion , $ROOT_DIR );
222 return( $PackagePathCache[ $Key ] );
224 catch( Exception $e )
267 $PackageNames = explode(
'::' , $thePackageName );
268 $PackageVersions = explode(
'::' , $thePackageVersion );
269 $PackageName = substr_replace( $thePackageName ,
'' , 0 , strlen( $PackageNames[ 0 ] ) + 2 );
270 $PackageVersion = substr_replace( $thePackageVersion ,
'', 0 , strlen( $PackageVersions[ 0 ] ) + 2 );
276 return( array( $PackagePath , $PackageName , $PackageVersion ) );
278 catch( Exception $e )
319 $Key =
"$thePackageName $thePackageVersion $ROOT_DIR";
321 if( isset( $RootDirCache[ $Key ] ) ==
false )
323 list( $PackagePath , $PackageName , $PackageVersion ) =
324 _prepare_data( $thePackageName , $thePackageVersion , $ROOT_DIR );
326 $RootDirCacheChanged =
true;
328 $RootDirCache[ $Key ] = $PackageName ==
'' ? $ROOT_DIR :
_get_root_dir(
329 $PackageName , $PackageVersion , $PackagePath
333 return( $RootDirCache[ $Key ] );
335 catch( Exception $e )