From c4d599834a81601b79589d9ab56fda59bbdc5608 Mon Sep 17 00:00:00 2001 From: MarvinF Date: Tue, 16 Jun 2026 21:06:47 +0200 Subject: [PATCH 1/3] Create dev_preview --- .github/workflows/dev_preview | 84 +++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 .github/workflows/dev_preview diff --git a/.github/workflows/dev_preview b/.github/workflows/dev_preview new file mode 100644 index 0000000..e5cf7f3 --- /dev/null +++ b/.github/workflows/dev_preview @@ -0,0 +1,84 @@ +# Builds the codebase and publishes a rolling dev-preview release (no version bump). +# The release uses a fixed tag "dev-preview" so each run replaces the previous one. + +name: Sportsmanager Dev Preview + +on: + workflow_dispatch: + inputs: + branch: + description: 'Branch to build' + required: true + default: 'sportsmanager2-prod' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.branch }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install npm dependencies + run: npm ci + + - name: Run build script + run: npm run release + + - name: Delete existing dev-preview release (if any) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + release_id=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/$REPO/releases/tags/dev-preview" \ + | jq -r '.id // empty') + + if [ -n "$release_id" ]; then + curl -s -X DELETE -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/$REPO/releases/$release_id" + echo "Deleted existing dev-preview release (ID: $release_id)" + else + echo "No existing dev-preview release found" + fi + + - name: Delete existing dev-preview tag (if any) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + status=$(curl -s -o /dev/null -w "%{http_code}" \ + -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/$REPO/git/refs/tags/dev-preview") + + if [ "$status" = "200" ]; then + curl -s -X DELETE -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/$REPO/git/refs/tags/dev-preview" + echo "Deleted existing dev-preview tag" + else + echo "No existing dev-preview tag found" + fi + + - name: Publish dev-preview release + uses: softprops/action-gh-release@v2 + with: + tag_name: dev-preview + name: "Dev Preview (${{ github.run_number }})" + body: | + Automated dev preview build from branch `${{ inputs.branch }}`. + Commit: ${{ github.sha }} + Run: ${{ github.run_number }} + + > This is a temporary preview release and will be replaced on the next run. + files: package/packages/com_sportsmanager.zip + draft: false + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From afb89dba6e025a77cc509343a51c7cc2b67a29ea Mon Sep 17 00:00:00 2001 From: MarvinF Date: Tue, 16 Jun 2026 21:07:55 +0200 Subject: [PATCH 2/3] Rename dev_preview to dev_preview.yml --- .github/workflows/{dev_preview => dev_preview.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{dev_preview => dev_preview.yml} (100%) diff --git a/.github/workflows/dev_preview b/.github/workflows/dev_preview.yml similarity index 100% rename from .github/workflows/dev_preview rename to .github/workflows/dev_preview.yml From 4c21d66fbef7def707b3dd74c5b98b3ef26caf5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 16 Jul 2026 14:27:34 +0200 Subject: [PATCH 3/3] Bei Teilnehmerzahl 1 oder weniger eines Ranglistenturnieres werden ohne weitere Berechnung 0 Punkte vergeben. --- src/structure/components/com_sportsmanager/tools.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index cfbeaad..e80fbc4 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -19,11 +19,17 @@ require_once JPATH_SITE . '/components/com_sportsmanager/database/init.php'; /** @noinspection PhpUnused */ function mathParserVerteilung($rohpunkte, $platz, $teilnehmer, $multiplikator) { + if ($teilnehmer <= 1){ + return 0; + } return max(round($multiplikator * round(((($rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1)), 1); } /** @noinspection PhpUnused */ function mathParserVerteilungR($rohpunkte, $platz, $teilnehmer, $multiplikator) { + if ($teilnehmer <= 1){ + return 0; + } return max(round(((($multiplikator * $rohpunkte - 1) * (-log($platz / $teilnehmer) * (1 - ($platz / $teilnehmer)))) / (-log(1 / $teilnehmer) * (1 - (1 / $teilnehmer)))) + 1), 1); }