protected function scanThemeDirectories($base)
    {
        $tree = array("themes" => array());

        $di = new \RecursiveDirectoryIterator($base);
        foreach (new \RecursiveIteratorIterator($di) as $filename => $file) {
            // Obtain the theme scope, add it to the stack if it wasn't
            // saved yet.
            $theme = null;
            if (preg_match("/themes\/(.+?)\//", $filename, $matches)) {
                $theme = $matches[1];
                if (!array_key_exists($theme, $tree["themes"])) {
                    $tree["themes"][$theme] = array(
                        "templates" => array(),
                        "libs"      => array()
                    );

                    $this->output->writeLn($this->tree(true) . "Scanning $theme");
                }
            }

            // Match for wordpress templates
            if (preg_match("/themes\/$theme\/template\-(.+?)\.php/", $filename, $matches)) {
                $template = $matches[1];
                if (!array_key_exists($template, $tree["themes"][$theme]["templates"])) {
                    $tree["themes"][$theme]["templates"][$template] = array();

                    $headerKeys = array("Template Name" => "Template Name", "Description" => "Description");
                    $templateDetails = $this->getFileData($filename, $headerKeys);

                    $tree["themes"][$theme]["templates"][$template]["filename"] = $filename;
                    foreach ($headerKeys as $key) {
                        $tree["themes"][$theme]["templates"][$template][$key] = $templateDetails[$key];
                    }
                }
            }

            // Match for custom lib files
            if (preg_match("/themes\/$theme\/lib\/(.+?)\.php/", $filename, $matches)) {
                $lib = $matches[1];

                if (!array_key_exists($lib, $tree["themes"][$theme]["libs"])) {
                    $tree["themes"][$theme]["libs"][$lib] = array();

                    $headerKeys = array("Name" => "Name", "Description" => "Description");
                    $libDetails = $this->getFileData($filename, $headerKeys);

                    $tree["themes"][$theme]["libs"][$lib]["filename"] = $filename;
                    foreach ($headerKeys as $key) {
                        $tree["themes"][$theme]["libs"][$lib][$key] = $libDetails[$key];
                    }
                }
            }
        }

        return $tree;
    }
protected function scanThemeDirectories($base)
    {
        $tree = array("themes" => array());

        $di = new \RecursiveDirectoryIterator($base);
        foreach (new \RecursiveIteratorIterator($di) as $filename => $file) {
            // Obtain the theme scope, add it to the stack if it wasn't
            // saved yet.
            $theme = null;
            if (preg_match("/themes\/(.+?)\//", $filename, $matches)) {
                $theme = $matches[1];
                if (!array_key_exists($theme, $tree["themes"])) {
                    $tree["themes"][$theme] = array(
                        "templates" => array(),
                        "libs"      => array()
                    );

                    $this->output->writeLn($this->tree(true) . "Scanning $theme");
                }
            }

            // Match for wordpress templates
            if (preg_match("/themes\/$theme\/template\-(.+?)\.php/", $filename, $matches)) {
                $template = $matches[1];
                if (!array_key_exists($template, $tree["themes"][$theme]["templates"])) {
                    $tree["themes"][$theme]["templates"][$template] = array();

                    $headerKeys = array("Template Name" => "Template Name", "Description" => "Description");
                    $templateDetails = $this->getFileData($filename, $headerKeys);

                    $tree["themes"][$theme]["templates"][$template]["filename"] = $filename;
                    foreach ($headerKeys as $key) {
                        $tree["themes"][$theme]["templates"][$template][$key] = $templateDetails[$key];
                    }
                }
            }

            // Match for custom lib files
            if (preg_match("/themes\/$theme\/lib\/(.+?)\.php/", $filename, $matches)) {
                $lib = $matches[1];

                if (!array_key_exists($lib, $tree["themes"][$theme]["libs"])) {
                    $tree["themes"][$theme]["libs"][$lib] = array();

                    $headerKeys = array("Name" => "Name", "Description" => "Description");
                    $libDetails = $this->getFileData($filename, $headerKeys);

                    $tree["themes"][$theme]["libs"][$lib]["filename"] = $filename;
                    foreach ($headerKeys as $key) {
                        $tree["themes"][$theme]["libs"][$lib][$key] = $libDetails[$key];
                    }
                }
            }
        }

        return $tree;
    }
protected function scanThemeDirectories ( $ base ) { $ tree = array ( "themes" => array ( ) ) ; $ di = new \ RecursiveDirectoryIterator ( $ base ) ; foreach ( new \ RecursiveIteratorIterator ( $ di ) as $ filename => $ file ) { // Obtain the theme scope, add it to the stack if it wasn't // saved yet. $ theme = null ; if ( preg_match ( "/themes\/(.+?)\//" , $ filename , $ matches ) ) { $ theme = $ matches [ 1 ] ; if ( ! array_key_exists ( $ theme , $ tree [ "themes" ] ) ) { $ tree [ "themes" ] [ $ theme ] = array ( "templates" => array ( ) , "libs" => array ( ) ) ; $ this -> output -> writeLn ( $ this -> tree ( true ) . "Scanning $theme" ) ; } } // Match for wordpress templates if ( preg_match ( "/themes\/$theme\/template\-(.+?)\.php/" , $ filename , $ matches ) ) { $ template = $ matches [ 1 ] ; if ( ! array_key_exists ( $ template , $ tree [ "themes" ] [ $ theme ] [ "templates" ] ) ) { $ tree [ "themes" ] [ $ theme ] [ "templates" ] [ $ template ] = array ( ) ; $ headerKeys = array ( "Template Name" => "Template Name" , "Description" => "Description" ) ; $ templateDetails = $ this -> getFileData ( $ filename , $ headerKeys ) ; $ tree [ "themes" ] [ $ theme ] [ "templates" ] [ $ template ] [ "filename" ] = $ filename ; foreach ( $ headerKeys as $ key ) { $ tree [ "themes" ] [ $ theme ] [ "templates" ] [ $ template ] [ $ key ] = $ templateDetails [ $ key ] ; } } } // Match for custom lib files if ( preg_match ( "/themes\/$theme\/lib\/(.+?)\.php/" , $ filename , $ matches ) ) { $ lib = $ matches [ 1 ] ; if ( ! array_key_exists ( $ lib , $ tree [ "themes" ] [ $ theme ] [ "libs" ] ) ) { $ tree [ "themes" ] [ $ theme ] [ "libs" ] [ $ lib ] = array ( ) ; $ headerKeys = array ( "Name" => "Name" , "Description" => "Description" ) ; $ libDetails = $ this -> getFileData ( $ filename , $ headerKeys ) ; $ tree [ "themes" ] [ $ theme ] [ "libs" ] [ $ lib ] [ "filename" ] = $ filename ; foreach ( $ headerKeys as $ key ) { $ tree [ "themes" ] [ $ theme ] [ "libs" ] [ $ lib ] [ $ key ] = $ libDetails [ $ key ] ; } } } } return $ tree ; }
Scans the theme directories of the current Wordpress installation and looks
for things useful for a programmer.
@param  string $base The base theme path.
@return array       A associative array of theme information
Scans the theme directories of the current Wordpress installation and looks for things useful for a programmer .