MySQL Remote je jednoduché rozhraní pro přebírání dat z BISí databáze. Můžete ho použít třeba pro kalendář akcí na webu vašeho ZČ. BIS neumožňuje přímé čtení z databáze, jelikož při každé změně datového modelu, každé úpravě a nové verzi BISu, bych musel kontrolovat, zdali nejnovější změny vám nerozhází vaše weby. MySQL Remote má oproti tomu stálé rozhraní, které se s novými verzemi BISu nemění.
MySQL Remote se drží zásady Keep it Short and Simple - z vašeho webserveru pošlete HTTP požadavek na BISí server a vrátí se vám data v XML formátu. Nic komplikovaného.
Poznámka: 9.11.2012 jsem sjednotil přihlašování přes MySQL Remote s běžným přihlašováním. Stáhněte si novou verzi klientské knihovny a pro autentizaci použijte stejný login a heslo, jaký používá váš ZČ pro přístup do BISu. Stará autentizace pouze přes heslo je zachovaná.
Základní URL požadavku je http://bis.brontosaurus.cz/remote.php. Parametry se předávají jako array v čtvrtém argumentu funkce myr_query. Základní parametr query určuje samotný dotaz do databáze a je povinný. Další parametry upřesňují konkrétní dotaz.
U všech požadavků můžete omezit počet vrácených řádků parametry limit_from, limit_count, které mají stejný význam jako SQL příkaz LIMIT.
Seznam požadavků samozřejmě není konečný, implementoval jsem je podle aktuálních potřeb na brontowebu. Pokud byste chtěli nějaká další data anebo filtry, nebojte se mi napsat a nějak se domluvíme.
Seznam ZČ a klubů. Parametrem filter=klub, filter=zc nebo filter=rc lze filtrovat kluby, základní články a regionální centra.
Vrácená data mají políčko uroven, kde hodnota 1 značí klub, 2 značí ZČ, 3 značí RC a 4 značí ústředí.
Seznam akcí. Vrací pouze plánované akce, které mají příznak Zveřejnit na brontosauřím webu. Výpis lze filtrovat níže uvedenými parametry. Tyto parametry jsou nepovinné
Je-li zadaný, BIS vrátí informace pouze o konkrétní akci se zadaným ID.
Vrátí pouze klubové akce, víkendovky, tábory nebo akce v programu Ekostan.
Kombinovaný filtr, vrací víkendovky a tábory (resp. ekostany) dohromady
Vrátí pouze akce daného typu.
Vrátí pouze akce v daném programu.
Vrátí pouze akce pro danou cílovou skupinu.
Vrátí pouze akce pořádané danými ZČ nebo kluby. Tento parametr lze zadat vícekrát za sebou, pokud potřebujete vybírat akce od více ZČ (proto jsou zde potřeba ty hranaté závorky). ID základního článku je číslo, které zjistíte v seznamu ZČ/klubů v BISu. Když kliknete nebo najedete na název článku, je zde odkaz typu bis.brontosaurus.cz?clen.php&id=id-článku.
Zjišťovat ID článku je možná pracnější, na druhou stranu, samotný název ZČ není spolehlivě stabilní. Občas ho nahradí zkratkou či naopak, jindy k němu přidají "ZČ HB" a podobně.
Vrátí akce proběhlé od nebo do daného data. Datum zadávejte v SQL formátu YYYY-MM-DD.
Vrátí akce proběhlé v daném roce. Pokud není zadané nic, vrátí všechny budoucí akce.
Pokud je tento parametr zadaný, BIS vrátí všechny akce vyhovující daným kritériím, tj. včetně těch, které nemají příznak Zveřejnit na brontosauřím webu. Použijte jej, pokud potřebujete zobrazit i regionální akce nebo interní akce vašeho článku.
Detaily o táboru. Zde je povinný parametr id. Dotaz vrací stejné údaje jako při query=akce&id=XXX, ale navíc údaje zadávané jen pro tábory.
Vrátí seznam udělených kvalifikací OHB, HVLT a PVČ.
Vrátí seznam účastníků dané akce s kontaktními údaji. Lze použít pouze pro akce pořádané vaším ZČ, jinak vrátí chybu v autorizaci.
ID akce (zjistíte z předchozího dotazu s query=akce). Povinný parametr.
Vrátí seznam aktuálních termínů (=ne starších než 1 týden)
Pokud si chcete prohlédnout strukturu vráceného XML, použijte funkci
myr_dump(url-požadavku, heslo) se shodnými argumenty jako
myr_query(). Tato funkce rovnou vypíše vrácené XML na výstup.
Kódování vráceného XML je UTF-8.
Funkce při chybě vrací hodnotu FALSE. Chybový kód najdete v globální proměnné myr_last_error. Slovní popis chyby získáte zavoláním funkce myr_last_error().
Vypíše seznam plánovaných víkedndovek.
include('myr_client.php');
$res = myr_query('http://bis.brontosaurus.cz/remote.php?query=akce&filter=vik', 'vášlogin', 'vašeheslo');
if ($res === FALSE) {
die(myr_last_error());
} else {
for ($i = 0; $i < count($res); $i++) {
$akce = $res[$i];
echo "<b>$akce->nazev</b>, od: $akce->od, do: $akce->do<br />";
}
}
© 2009 Robert-Antonio