name; if ( empty( $name ) ) { throw new Exception( 'The name property must be set' ); } self::$class_names[ $assignee->name ] = get_class( $assignee ); } /** * Create the Assignee class, if available. * * @since 2.1 * * @param null|array $args The arguments used to initialize the class. * @param Gravity_Flow_Step $step The step. * * @return Gravity_Flow_Assignee|false */ public static function create( $args, $step = null ) { $type = false; if ( is_string( $args ) ) { $parts = explode( '|', $args ); $type = $parts[0]; } elseif ( is_array( $args ) ) { $type = rgar( $args, 'type' ); } if ( ! $type ) { return false; } $classes = self::get_class_names(); if ( isset( $classes[ $type ] ) ) { $class_name = $classes[ $type ]; $assignee = new $class_name( $args, $step ); } else { $assignee = new Gravity_Flow_Assignee( $args, $step ); } return $assignee; } /** * Returns an array of the name properties of each assignee class. * * @since 2.1.2 * * @return array */ public static function get_names() { $classes = self::get_class_names(); $names = array_keys( $classes ); return $names; } }