get_type(); if ( empty( $step_type ) ) { throw new Exception( 'The step_type must be set' ); } if ( isset( self::$_steps[ $step_type ] ) ) { throw new Exception( 'Step type already registered: ' . $step_type ); } self::$_steps[ $step_type ] = $step; } public static function exists( $step_type ) { return isset( self::$_steps[ $step_type ] ); } /** * @param $step_type * * @return Gravity_Flow_Step */ public static function get_instance( $step_type ) { return isset( self::$_steps[ $step_type ] ) ? self::$_steps[ $step_type ] : false; } /** * Alias for get_instance() * * @param $step_type * * @return Gravity_Flow_Step */ public static function get( $step_type ) { return self::get_instance( $step_type ); } /** * @return Gravity_Flow_Step[] */ public static function get_all() { return self::$_steps; } /** * @param $feed * * @return Gravity_Flow_Step | bool */ public static function create( $feed, $entry = null ) { $step_type = $feed['meta']['step_type']; if ( empty( $step_type ) || ! isset( self::$_steps[ $step_type ] ) ) { return false; } $class = self::$_steps[ $step_type ]; $class_name = get_class( $class ); $step = new $class_name( $feed, $entry ); return $step; } }