@ -186,21 +186,6 @@ namespace MediaBrowser.Controller.Entities
}
}
}
}
[IgnoreDataMember]
public string SlugName
{
get
{
var name = Name ;
if ( string . IsNullOrWhiteSpace ( name ) )
{
return string . Empty ;
}
return SlugReplaceChars . Aggregate ( name , ( current , c ) = > current . Replace ( c , SlugChar ) ) ;
}
}
[IgnoreDataMember]
[IgnoreDataMember]
public bool IsUnaired
public bool IsUnaired
{
{
@ -664,27 +649,34 @@ namespace MediaBrowser.Controller.Entities
}
}
var sortable = Name . Trim ( ) . ToLower ( ) ;
var sortable = Name . Trim ( ) . ToLower ( ) ;
sortable = ConfigurationManager . Configuration . SortRemoveCharacters . Aggregate ( sortable , ( current , search ) = > current . Replace ( search . ToLower ( ) , string . Empty ) ) ;
sortable = ConfigurationManager . Configuration . SortReplaceCharacters . Aggregate ( sortable , ( current , search ) = > current . Replace ( search . ToLower ( ) , " " ) ) ;
foreach ( var removeChar in ConfigurationManager . Configuration . SortRemoveCharacters )
{
sortable = sortable . Replace ( removeChar , string . Empty ) ;
}
foreach ( var replaceChar in ConfigurationManager . Configuration . SortReplaceCharacters )
{
sortable = sortable . Replace ( replaceChar , " " ) ;
}
foreach ( var search in ConfigurationManager . Configuration . SortRemoveWords )
foreach ( var search in ConfigurationManager . Configuration . SortRemoveWords )
{
{
var searchLower = search . ToLower ( ) ;
// Remove from beginning if a space follows
// Remove from beginning if a space follows
if ( sortable . StartsWith ( searchLower + " " ) )
if ( sortable . StartsWith ( search + " " ) )
{
{
sortable = sortable . Remove ( 0 , searchLower . Length + 1 ) ;
sortable = sortable . Remove ( 0 , search . Length + 1 ) ;
}
}
// Remove from middle if surrounded by spaces
// Remove from middle if surrounded by spaces
sortable = sortable . Replace ( " " + search Lower + " " , " " ) ;
sortable = sortable . Replace ( " " + search + " " , " " ) ;
// Remove from end if followed by a space
// Remove from end if followed by a space
if ( sortable . EndsWith ( " " + search Lower ) )
if ( sortable . EndsWith ( " " + search ) )
{
{
sortable = sortable . Remove ( sortable . Length - ( search Lower . Length + 1 ) ) ;
sortable = sortable . Remove ( sortable . Length - ( search . Length + 1 ) ) ;
}
}
}
}
return ModifySortChunks ( sortable ) ;
return ModifySortChunks ( sortable ) ;
}
}
@ -771,7 +763,15 @@ namespace MediaBrowser.Controller.Entities
public T FindParent < T > ( )
public T FindParent < T > ( )
where T : Folder
where T : Folder
{
{
return GetParents ( ) . OfType < T > ( ) . FirstOrDefault ( ) ;
foreach ( var parent in GetParents ( ) )
{
var item = parent as T ;
if ( item ! = null )
{
return item ;
}
}
return null ;
}
}
[IgnoreDataMember]
[IgnoreDataMember]
@ -2140,8 +2140,8 @@ namespace MediaBrowser.Controller.Entities
}
}
var filename = System . IO . Path . GetFileNameWithoutExtension ( Path ) ;
var filename = System . IO . Path . GetFileNameWithoutExtension ( Path ) ;
var extensions = new [ ] { ".nfo" , ".xml" , ".srt" } . ToList ( ) ;
var extensions = new List < string > { ".nfo" , ".xml" , ".srt" } ;
extensions . AddRange ( SupportedImageExtensions List ) ;
extensions . AddRange ( SupportedImageExtensions ) ;
return FileSystem . GetFiles ( FileSystem . GetDirectoryName ( Path ) , extensions . ToArray ( extensions . Count ) , false , false )
return FileSystem . GetFiles ( FileSystem . GetDirectoryName ( Path ) , extensions . ToArray ( extensions . Count ) , false , false )
. Where ( i = > System . IO . Path . GetFileNameWithoutExtension ( i . FullName ) . StartsWith ( filename , StringComparison . OrdinalIgnoreCase ) )
. Where ( i = > System . IO . Path . GetFileNameWithoutExtension ( i . FullName ) . StartsWith ( filename , StringComparison . OrdinalIgnoreCase ) )
@ -2392,7 +2392,14 @@ namespace MediaBrowser.Controller.Entities
return this ;
return this ;
}
}
return GetParents ( ) . FirstOrDefault ( i = > i . IsTopParent ) ;
foreach ( var parent in GetParents ( ) )
{
if ( parent . IsTopParent )
{
return parent ;
}
}
return null ;
}
}
[IgnoreDataMember]
[IgnoreDataMember]