LayoutManager.class.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. class LayoutManager {
  3. static $instance;
  4. protected function __construct()
  5. {
  6. }
  7. /**
  8. *
  9. * @return LayoutManager
  10. */
  11. static function instance()
  12. {
  13. if (empty(self::$instance)) {
  14. self::$instance = new LayoutManager();
  15. }
  16. return self::$instance;
  17. }
  18. protected $layouts = array();
  19. public function register($identifier, $name, $description, $isPublic = true, $catalyzIdentifier = null)
  20. {
  21. if(null == $catalyzIdentifier){
  22. $catalyzIdentifier = $identifier;
  23. }
  24. $this->layouts[$identifier] = array(
  25. 'id' => $identifier,
  26. 'name' => $name,
  27. 'public' => $isPublic,
  28. 'description' => $description,
  29. 'catalyz' => $catalyzIdentifier
  30. );
  31. }
  32. public function unregister($identifier)
  33. {
  34. unset($this->layouts[$identifier]);
  35. }
  36. public function getAll($withPrivate = false)
  37. {
  38. $result = $this->layouts;
  39. if(!$withPrivate){
  40. foreach($result as $id => $properties) {
  41. if (!$properties['public']) {
  42. unset($result[$id]);
  43. }
  44. }
  45. }
  46. return $result;
  47. }
  48. public function getSupportedLayouts($page) {
  49. if($page instanceof ICatalyzLayoutProvider){
  50. $result = $page->getAvailableLayouts();
  51. }else{
  52. $result = array_keys($this->getAll());
  53. }
  54. return $result;
  55. }
  56. public function getLayout($identifier){
  57. return isset($this->layouts[$identifier])?$this->layouts[$identifier]:null;
  58. }
  59. public function getCatalyzTemplate($template){
  60. return explode('/', $this->layouts[implode('/', $template)]['catalyz']);
  61. }
  62. }
  63. LayoutManager::instance()->register('catalyz/default', 'Default', 'Default layout', true);
  64. ?>