Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * 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;
 }