_immutable_completed = $this->user_progress[ self::IMMUTABLE_COMPLETION_KEY ] ?? false; if ( ! $is_immutable_completed && $this->get_is_completion_immutable() && $this->is_absolute_completed() ) { $this->update_step( [ self::MARKED_AS_COMPLETED_KEY => false, self::IMMUTABLE_COMPLETION_KEY => true, ] ); } } /** * Returns the step marked as completed value * * @return bool */ public function is_marked_as_completed(): bool { return $this->user_progress[ self::MARKED_AS_COMPLETED_KEY ]; } /** * Returns the step completed value * * @return bool */ public function is_immutable_completed(): bool { return $this->get_is_completion_immutable() && $this->user_progress[ self::IMMUTABLE_COMPLETION_KEY ] ?? false; } /** * Sets and returns the initial progress of the step * * @return array */ public function get_step_initial_progress(): array { $initial_progress = [ self::MARKED_AS_COMPLETED_KEY => false, self::IMMUTABLE_COMPLETION_KEY => false, ]; $this->module->set_step_progress( $this->get_id(), $initial_progress ); return $initial_progress; } /** * @return ?array */ public function get_promotion_data(): ?array { return $this->promotion_data; } /** * Sets the step progress * * @return void */ private function set_step_progress(): void { $this->module->set_step_progress( $this->get_id(), $this->user_progress ); } }