/** * * * * **/ public static function getInstance($driver) { if (!(strcasecmp(substr($driver, strlen($driver) - strlen('driver')), 'driver') === 0)) { $driver .= 'Driver'; } if (!file_exists(dirname(__FILE__) . '/Template/' . $driver . '.php')) { $s = new self(); $s->printFatalError($s->lang->translate('No such template driver: [' . $driver . ']')); } self::$_driver = $driver; if (!isset(self::$_drivers[$driver]) || !is_object(self::$_drivers[$driver])) { require dirname(__FILE__) . '/Template/DriverDecorator.php'; require dirname(__FILE__) . '/Template/' . $driver . '.php'; $driver = 'CAT_Helper_Template_' . $driver; self::$_drivers[$driver] = new CAT_Helper_Template_DriverDecorator(new $driver()); self::$_drivers[$driver]->setGlobals(array('CAT_ADMIN_URL' => CAT_ADMIN_URL, 'CAT_URL' => CAT_URL, 'CAT_PATH' => CAT_PATH, 'LEPTON_URL' => CAT_URL, 'CAT_PATH' => CAT_PATH, 'CAT_THEME_URL' => CAT_THEME_URL, 'URL_HELP' => URL_HELP)); $defs = get_defined_constants(true); foreach ($defs['user'] as $const => $value) { if (preg_match('~^DEFAULT_~', $const)) { // DEFAULT_CHARSET etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } if (preg_match('~^WEBSITE_~', $const)) { // WEBSITE_HEADER etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } if (preg_match('~^SHOW_~', $const)) { // SHOW_SEARCH etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } if (preg_match('~^FRONTEND_~', $const)) { // FRONTEND_LOGIN etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } if (preg_match('~_FORMAT$~', $const)) { // DATE_FORMAT etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } if (preg_match('~^ENABLE_~', $const)) { // ENABLE_HTMLPURIFIER etc. self::$_drivers[$driver]->setGlobals($const, $value); continue; } } // This is for old language strings global $HEADING, $TEXT, $MESSAGE; foreach (array('TEXT', 'HEADING', 'MESSAGE') as $global) { if (isset(${$global}) && is_array(${$global})) { self::$_drivers[$driver]->setGlobals($global, ${$global}); } } } return self::$_drivers[$driver]; }