Merge pull request #351 from Flynsarmy/themeFixes

Add Theme::exists(), Fix getPath()
This commit is contained in:
Samuel Georges 2014-06-25 19:00:43 +10:00
commit 460039cb57

View File

@ -7,7 +7,7 @@ use Config;
use System\Classes\SystemException; use System\Classes\SystemException;
/** /**
* This class represents the CMS theme. * This class represents the CMS theme.
* CMS theme is a directory that contains all CMS objects - pages, layouts, partials and asset files.. * CMS theme is a directory that contains all CMS objects - pages, layouts, partials and asset files..
* The theme parameters are specified in the theme.ini file in the theme root directory. * The theme parameters are specified in the theme.ini file in the theme root directory.
* *
@ -31,10 +31,13 @@ class Theme
/** /**
* Returns the absolute theme path. * Returns the absolute theme path.
* @param string $dir Optional theme directory. Defaults to $this->getDirName()
*/ */
public function getPath() public function getPath($dir = NULL)
{ {
return base_path().Config::get('cms.themesDir').'/'.$this->dirName; if ( !$dir ) $dir = $this->getDirName();
return base_path().Config::get('cms.themesDir').'/'.$dir;
} }
/** /**
@ -46,6 +49,19 @@ class Theme
return $this->dirName; return $this->dirName;
} }
/**
* Determines if a theme with given path exists
* @param string $dir The theme directory
* @return bool
*/
public static function exists($dir)
{
$theme = new self;
$path = $theme->getPath($dir);
return File::isDirectory($path);
}
/** /**
* Returns a list of pages in the theme. * Returns a list of pages in the theme.
* This method is used internally in the routing process and in the back-end UI. * This method is used internally in the routing process and in the back-end UI.
@ -112,4 +128,4 @@ class Theme
return $theme; return $theme;
} }
} }