*/ public static function steps( bool $connected, int $mapped_categories, bool $contact_set, bool $previewed ): array { $steps = array( array( 'id' => self::WELCOME, 'done' => true, ), array( 'id' => self::CONNECT, 'done' => $connected && $contact_set, ), array( 'id' => self::CATEGORIES, 'done' => $mapped_categories > 0, ), array( 'id' => self::PREVIEW, 'done' => $previewed, ), ); $all = true; foreach ( $steps as $step ) { $all = $all && $step['done']; } $steps[] = array( 'id' => self::DONE, 'done' => $all, ); return $steps; } /** * The first step that is not done (DONE when everything is). * * @param bool $connected Connected. * @param int $mapped_categories Mapped categories. * @param bool $contact_set Contact set. * @param bool $previewed Previewed. */ public static function current( bool $connected, int $mapped_categories, bool $contact_set, bool $previewed ): string { foreach ( self::steps( $connected, $mapped_categories, $contact_set, $previewed ) as $step ) { if ( ! $step['done'] ) { return $step['id']; } } return self::DONE; } }