Theme_model::load_themes PHP Method

load_themes() public method

Scans the themes directory and loads the config files if found.
public load_themes ( $default ) : arr
return arr
    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;
    }