Funktionsweise der API #
Da ChurchTools die gesamte Kommunikation über AJAX steuert, kann jede Funktion auch über API aufgerufen werden.
Also z. B. https://xxx.churchtools.de/index.php?q=churchresource/ajax
Und per POST dann: func=getBookings (liefert alle Buchungen) oder z.B. func=getMasterData liefert alle notwendigen Stammdaten.
Wichtig ist, dass der Aufruf über POST-Befehl gesendet wird und die gewünschte Funktion in dem Parameter „func=functioname“ enthalten ist. Pro Modul gibt es verschiedene Aufrufe. Hierzu kann unter system/modulename/classes/CTModulename.class.php nachgeschaut werden.
Weitere Beispiele für API-Calls #
Also z. B. Login über
https://xxx.churchtools.de/?q=login
Per POST dann die Parameter:
password
directtool=yes
Abfrage von allen Personen
https://xxx.churchtools.de/?q=churchdb/ajax&func=getAllPersonData
Abfrage einer Person
https://xxx.churchtools.de/?q=churchdb/ajax&func=getPersonDetails&id=736
Beispiel eines API-Calls in PHP #
<?php /** * Example API call to ChurchTools Installation for PHP. The cookies will be stored to current directory * Author: Jens Martin Rauen * Copyright: 2015 **/ 
/**  * Get saved Cookies from filesystem and returns an array  * @return array of Cookies in string  */ function getCookies() {   $aCookies = glob("*.txt");   $n = count($aCookies);   if ($n !== 0) {    $counter = 0;
   while ($counter < $n) {     $sCombined .= file_get_contents($aCookies["$counter"]) . ';';     ++$counter;    }    return $sCombined;   } else {    return $n;   }} 
/**  * Save cookies from $aRH (http response header) to the filesystem  * @param $aRH  */ function saveCookies($aRH) {   $n = count($aRH); // Number of Pieces   $counter = 0;   while ($counter <= $n) {     if(preg_match('@Set-Cookie: (([^=]+)=[^;]+)@i', $aRH["$counter"], $matches)) {       $fp = fopen($matches["2"].'.txt', 'w');        fwrite($fp, $matches["1"]);       fclose($fp);     }     ++$counter;   } } 
/** 
 * Send request to $url with $data  * @param [type] $url  [description]  * @param [type] $data [description]  */ function sendRequest($url, $data) {   $options1 = array(     'http' => array(       'header'  => "Cookie: ".getCookies() . "rnContent-type: application/x-www-form-urlencodedrn",       'method'  => 'POST',       'content' => http_build_query($data),     ),   );   $context  = stream_context_create($options1);   $result = file_get_contents($url, false, $context);   print_r($result);   saveCookies($http_response_header); } 
// Login to mghh churchtools $url = 'https://mghh.churchtools.de/?q=login'; $data = array('email' => 'sabine@mghh.churchtools.de', 'password' => '1234', 'directtool' => 'yes'); sendRequest($url, $data); 
// Now get all Person data $url = 'https://mghh.churchtools.de/index.php?q=churchdb/ajax'; $data = array('func' => 'getAllPersonData'); sendRequest($url, $data);
