roundcubemail/program/include/rcmail_output_html.php
private function load_skin($skin_path)
    {
        $this->skin_paths[] = $skin_path;

        // read meta file and check for dependencies
        $meta = @file_get_contents(RCUBE_INSTALL_PATH . $skin_path . '/meta.json');
        $meta = @json_decode($meta, true);

        $meta['path']  = $skin_path;
        $path_elements = explode('/', $skin_path);
        $skin_id       = end($path_elements);

        if (!$meta['name']) {
            $meta['name'] = $skin_id;
        }

        $this->skins[$skin_id] = $meta;

        if ($meta['extends']) {
            $path = RCUBE_INSTALL_PATH . 'skins/';
            if (is_dir($path . $meta['extends']) && is_readable($path . $meta['extends'])) {
                $this->load_skin('skins/' . $meta['extends']);
            }
        }
    }
private function load_skin($skin_path)
    {
        $this->skin_paths[] = $skin_path;

        // read meta file and check for dependencies
        $meta = @file_get_contents(RCUBE_INSTALL_PATH . $skin_path . '/meta.json');
        $meta = @json_decode($meta, true);

        $meta['path']  = $skin_path;
        $path_elements = explode('/', $skin_path);
        $skin_id       = end($path_elements);

        if (!$meta['name']) {
            $meta['name'] = $skin_id;
        }

        $this->skins[$skin_id] = $meta;

        if ($meta['extends']) {
            $path = RCUBE_INSTALL_PATH . 'skins/';
            if (is_dir($path . $meta['extends']) && is_readable($path . $meta['extends'])) {
                $this->load_skin('skins/' . $meta['extends']);
            }
        }
    }
private function load_skin ( $ skin_path ) { $ this -> skin_paths [ ] = $ skin_path ; // read meta file and check for dependencies $ meta = @ file_get_contents ( RCUBE_INSTALL_PATH . $ skin_path . '/meta.json' ) ; $ meta = @ json_decode ( $ meta , true ) ; $ meta [ 'path' ] = $ skin_path ; $ path_elements = explode ( '/' , $ skin_path ) ; $ skin_id = end ( $ path_elements ) ; if ( ! $ meta [ 'name' ] ) { $ meta [ 'name' ] = $ skin_id ; } $ this -> skins [ $ skin_id ] = $ meta ; if ( $ meta [ 'extends' ] ) { $ path = RCUBE_INSTALL_PATH . 'skins/' ; if ( is_dir ( $ path . $ meta [ 'extends' ] ) && is_readable ( $ path . $ meta [ 'extends' ] ) ) { $ this -> load_skin ( 'skins/' . $ meta [ 'extends' ] ) ; } } }
Helper method to recursively read skin meta files and register search paths
Helper method to recursively read skin meta files and register search paths