00001 <?php
00002
00003
00004
00005
00006
00007
00008 class BlockRepository {
00009 private static $blocks = array();
00010
00011
00012
00013
00014
00015
00016
00017 public static function add($key, IBlock $block) {
00018 self::$blocks[$key] = $block;
00019 }
00020
00021
00022
00023
00024
00025
00026
00027 public static function get($key) {
00028 return Arr::get_item(self::$blocks, $key, false);
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 public static function enable(PageData $page_data, $position, $blocks, $start_index = 1000, $increment = 10) {
00041 $enable_blocks = array();
00042 foreach(Arr::force($blocks) as $key) {
00043 if ($key instanceof IBlock) {
00044 $enable_blocks[] = $key;
00045 }
00046 else {
00047 $block = self::get($key);
00048 if ($block) {
00049 $enable_blocks[] = $block;
00050 }
00051 }
00052 }
00053
00054 foreach($enable_blocks as $block) {
00055 $page_data->add_block($block, $position, $start_index);
00056 $start_index += $increment;
00057 }
00058 }
00059 }