$locked */ public static function matrix(array $locked, ReleaseState $state = ReleaseState::Untested): CompatibilityMatrix { $features = []; foreach (DiviFeature::cases() as $feature) { $features[$feature->value] = in_array($feature, $locked, true) ? new FeatureStatus( $feature, $state, $state === ReleaseState::Incompatible ? ['Seiten: et_x() – Signatur geändert'] : [] ) : new FeatureStatus($feature, ReleaseState::Released, [], ReleaseStatus::SOURCE_CODE); } return new CompatibilityMatrix(DiviFeature::cases(), $features); } /** @param list $locked */ public static function status( array $locked, ReleaseState $state = ReleaseState::Untested, string $version = '5.3.0' ): ReleaseStatus { return ReleaseStatus::of($version, self::matrix($locked, $state)); } /** * Every feature released from $source (DiviReleases::TESTED = code, ReleaseStore = database, auto). * * @param array|null $release The database entry of a SOURCE_DATABASE release. */ public static function released( string $version = '5.2.1', string $source = ReleaseStatus::SOURCE_CODE, ?array $release = null ): ReleaseStatus { return ReleaseStatus::of($version, CompatibilityMatrix::allReleased(DiviFeature::cases(), $source), $release); } /** * Every feature in $state with $problems (an unreleased or broken Divi as a whole). * * @param list $problems */ public static function uniform(ReleaseState $state, string $version = '5.3.0', array $problems = []): ReleaseStatus { return ReleaseStatus::of($version, CompatibilityMatrix::uniform(DiviFeature::cases(), $state, $problems)); } }