Habari\AdminThemesHandler::prepare_block_list PHP Метод

prepare_block_list() публичный Метод

Load the block types and block instances into the appropriate structures for the theme to output
public prepare_block_list ( )
    function prepare_block_list()
    {
        $block_types = Plugins::filter('block_list', array());
        $dash_blocks = Plugins::filter('dashboard_block_list', array());
        $block_types = array_diff_key($block_types, $dash_blocks);
        $all_block_instances = DB::get_results('SELECT b.* FROM {blocks} b ORDER BY b.title ASC', array(), 'Block');
        $block_instances = array();
        $invalid_block_instances = array();
        // get dashboard block instances from plugins that may not be active
        $dash_blocks_instances = array();
        $scopes = $this->theme->get_scopes('dashboard');
        foreach ($scopes as $scope) {
            $dash_blocks_instances = array_merge($dash_blocks, $this->theme->get_blocks('dashboard', $scope->id, $this->theme));
        }
        $dash_blocks_instances = array_merge($dash_blocks_instances, $this->theme->get_blocks('dashboard', 0, $this->theme));
        foreach ($dash_blocks_instances as $dash_instance) {
            $dash_blocks[$dash_instance->type] = $dash_instance->type;
        }
        foreach ($all_block_instances as $instance) {
            if (isset($block_types[$instance->type])) {
                $block_instances[] = $instance;
            } elseif (isset($dash_blocks[$instance->type])) {
                // Do not add this dashboard block to the block instance list on the theme page
            } else {
                $instance->invalid_message = _t('This data is for a block of type "%s", which is no longer provided by a theme or plugin.', array($instance->type));
                $invalid_block_instances[] = $instance;
            }
        }
        $this->theme->blocks = $block_types;
        $this->theme->block_instances = $block_instances;
        $this->theme->invalid_block_instances = $invalid_block_instances;
    }