*/ /** * * Provides an interface to backend desktop * * @package stBackend * @subpackage libs */ class stBackendDesktop { protected static $instance = null; protected $modules = array(), $routing = null; /** * * Singleton * * @param stBackendDesktop $base_class * @return stBackendDesktop */ public static function getInstance($base_class = null) { if (null === self::$instance) { if (null === $base_class) { $base_class = __CLASS__; } self::$instance = new $base_class(); self::$instance->initialize(); } return self::$instance; } /** * Intializes this desktop */ public function initialize() { $this->routing = sfRouting::getInstance(); $modules = sfConfig::get('app_stBackend_desktop'); foreach ($modules as $module) { $this->addModule($module); } } /** * * Adds antother module * * @param mixed $params package name or custom custom array('label' => 'Module label', 'route' => '@myExampleRoute', 'icon' => 'myExample.png') */ public function addModule($params = array()) { $this->modules[] = new stBackendDesktopModule($this->routing, $params); } /** * * Retrieves modules * * @return array */ public function getModules() { return $this->modules; } }