public function load_themes($default)
{
// set the folders that are not avialble for theme files.
$not_available = array(".", "..", ".DS_Store", ".svn", "modules", "index.htm", "cp");
// Set available to blank as a fall back.
$available_theme = '';
// Load the benchmark so we can how slow this is.
$this->benchmark->mark('load_themes_start');
// Set the counter to 0. Used in the array built below.
$i = 0;
if ($handle = opendir($this->theme_dir)) {
while (false !== ($file = readdir($handle))) {
if (is_dir($this->theme_dir . $file) && $file != $default && !in_array($file, $not_available)) {
$preview = $this->theme_dir . $file . '/preview.png';
if (file_exists($preview)) {
$preview = base_url() . 'themes/' . $file . '/preview.png';
} else {
$preview = base_url() . 'themes/cp/images/nopreview.gif';
}
if (file_exists($this->theme_dir . $file . '/config.php')) {
include $this->theme_dir . $file . '/config.php';
$available_theme[$i]['title'] = $data['theme']['name'];
$available_theme[$i]['description'] = $data['theme']['description'];
$available_theme[$i]['version'] = $data['theme']['version'];
$available_theme[$i]['file'] = $file;
$available_theme[$i]['preview'] = $preview;
$available_theme[$i]['name'] = $file;
$available_theme[$i]['preview'] = $preview;
if (file_exists($this->theme_dir . $file . '/admin.php')) {
$available_theme[$i]['admin'] = TRUE;
} else {
$available_theme[$i]['admin'] = FALSE;
}
unset($data);
} else {
$available_theme[$i]['title'] = $file;
$available_theme[$i]['preview'] = $preview;
$available_theme[$i]['file'] = $file;
$available_theme[$i]['admin'] = FALSE;
}
}
++$i;
}
closedir($handle);
}
$this->benchmark->mark('load_themes_end');
return $available_theme;
}