/** * Returns the StateMachine object * which has to be an IStateMachine implementation * * @access public * @throws FatalNotImplementedException * @throws HTTPReturnCodeException * @return object implementation of IStateMachine */ public static function GetStateMachine() { if (!isset(ZPush::$stateMachine)) { // the backend could also return an own IStateMachine implementation $backendStateMachine = self::GetBackend()->GetStateMachine(); // if false is returned, use the default StateMachine if ($backendStateMachine !== false) { ZLog::Write(LOGLEVEL_DEBUG, "Backend implementation of IStateMachine: " . get_class($backendStateMachine)); if (in_array('IStateMachine', class_implements($backendStateMachine))) { ZPush::$stateMachine = $backendStateMachine; } else { throw new FatalNotImplementedException("State machine returned by the backend does not implement the IStateMachine interface!"); } } else { // Initialize the default StateMachine if (defined('STATE_MACHINE') && STATE_MACHINE == 'SQL') { ZPush::$stateMachine = new SqlStateMachine(); } else { ZPush::$stateMachine = new FileStateMachine(); } } if (ZPush::$stateMachine->GetStateVersion() !== ZPush::GetLatestStateVersion()) { if (class_exists("TopCollector")) { self::GetTopCollector()->AnnounceInformation("Run migration script!", true); } throw new HTTPReturnCodeException(sprintf("The state version available to the %s is not the latest version - please run the state upgrade script. See release notes for more information.", get_class(ZPush::$stateMachine)), HTTP_CODE_500); } } return ZPush::$stateMachine; }
/** * Returns the StateMachine object * which has to be an IStateMachine implementation * * @access public * @return object implementation of IStateMachine * @throws FatalNotImplementedException */ public static function GetStateMachine() { if (!isset(ZPush::$stateMachine)) { // the backend could also return an own IStateMachine implementation $backendStateMachine = self::GetBackend()->GetStateMachine(); // if false is returned, use the default StateMachine if ($backendStateMachine !== false) { ZLog::Write(LOGLEVEL_DEBUG, "Backend implementation of IStateMachine: " . get_class($backendStateMachine)); if (in_array('IStateMachine', class_implements($backendStateMachine))) { ZPush::$stateMachine = $backendStateMachine; } else { throw new FatalNotImplementedException("State machine returned by the backend does not implement the IStateMachine interface!"); } } else { // Initialize the default StateMachine include_once 'lib/default/filestatemachine.php'; ZPush::$stateMachine = new FileStateMachine(); } } return ZPush::$stateMachine; }