WebAPI pro integraci STM na web

Cílem API je zajištění jednoduché konfigurace STM pro integraci na web, abyste mohli s STM pracovat když aplikace ve skutečnosti není v provozu. (např. kvůli výpadku databáze). Celou vaši konfiguraci STM pro web zajistí jeden konfigurační soubor a vy získáte data pro svoje šablony přes WebAPI.

API také zajišťuje, že k inicializaci STM dojde, až když je opravdu potřeba přístup do databáze. Tedy pokud chcete třeba jen vypsat seznam soutěží pro filtr, který je definovaným v JSON souboru, tak se API nebude připojovat do databáze, ani inicializovat STM.

Obsah JSON konfiguračního souboru

  • Nastavení STM - cestu k bootstrap souboru a zda STM běží.
  • ID uživatelů s přístupem do administrace webu - abyste mohli STM použít pro autentizaci k editaci webu.
  • Soutěže a týmy - definujte seznamy soutěží pro jednotlivé týmy, soutěže lze rozdělit vlastními značkami (třeba typ soutěže, zda eviduje hráčské statistiky, vývoj postavení v tabulce apod.). Každá skupiná se dále dělí na aktuální a archivní soutěže.
  • Transformace - pro seřazení týmových/klubových členů, pro převod statistik na žebříčky pro jednotlivé zápasové akce a převod informací o zápase, jako jsou zápasové akce nebo transformace sestavy do "řádkové" podoby.

Odkazy

Ukázka použití

Kódy vychází z ukázkového souboru z Gitlab. Použití WebAPI v akci můžete vidět na webu TJ Sokol Morašice. Při tvorbě API jsem vycházel právě z použití STM na morašickém webu. Pokud by Vám v API něco chybělo nebo nebylo jasné, tak se stačí ozvat třeba v komentářích.

Konfigurační soubor stm.json

{ "bootstrap": "/demo/stm/bootstrap.php", "isRunning": true, "webAdministrators": [1, 3, 5], "organizations": { "teams": [1], "clubs": [1] }, "competitions": { "defaultIdCompetition": 1, "defaultIdTeam": 1, "currentSeason": "2013-2014", "competitions": [ { "idTeam": 1, "team": "Muži A", "url": "", "current": [ { "idCompetition": 1, "name": "Muži A - 1.B třída skupina B (2012/2013)", "tags": ["season", "playersStats", "tablePositions"] }, { "idCompetition": 17, "name": "Muži - letní příprava (2013/2014)", "tags": [] } ], "archive": [ { "idCompetition": 5, "name": "Muži - 1.A třída (2011/2012)", "tags": ["season"] } ] }, { "idTeam": 3, "team": "Žáci", "url": "zaci", "current": [], "archive": [ { "idCompetition": 10, "name": "Žáci - okresní přebor žáků (2011/2012)", "tags": ["season"] }, { "idCompetition": 11, "name": "Žáci - okresní přebor žáků (2010/2011)", "tags": ["season"] }, { "idCompetition": 12, "name": "Žáci - okresní přebor žáků (2009/2010)", "tags": ["season"] } ] } ] }, "transformations": { "membersOrder": { "teams": ["Brankář", "Obránce", "Záložník", "Útočník"], "clubs": ["Majitel", "Člen"] }, "stats": [ { "matchAction": "Gól", "heading": "Tabulka střelců", "onEmpty": "Stále čekáme na prvního střelce" }, { "matchAction": "playedMatches", "heading": "Počty odehraných zápasů", "onEmpty": "Nikdo zatím neodehrál ani jeden zápas. Buď sezóna ještě nezačala, nebo se něco nepovedlo při načtení dat" } ], "matchActions": [ { "matchAction": "Gól", "heading": "Góly" } ] } }

Práce s API

$stmApi = \STM\Plugin\WebAPI\StmAPIProxy::getInstance(); // Týmoví členové $teamMembers = $stmApi->members()->getTeamMembers(); $sortedTeamMembers = $stmApi->transformations()->sortTeamMembers($teamMembers); // Seznam aktuálních soutěží $currentCompetitions = $stmApi->competitions()->getTeamsWithCurrentCompetitions(); // Všechny dostupné soutěže $statsCompetitions = $stmApi->competitions()->competitions(); // Seznam soutěží s evidovanými statistikami - soutěže, které obsahují playersStats v tags $availableTags = $stmApi->competitions()->getAvailableTags(); $statsCompetitions = $stmApi->competitions()->competitions('playersStats'); // Informace o příštím zápase týmu s url=muzi $preview = $stmApi->results()->getTeamMatchPreview('muzi'); // Detail zápasu $matchInfo = $stmApi->match()->getMatchInfo(6); $matchArray = $stmApi->transformations()->transformMatchInfo($matchInfo, 1);