API-Alt

1 min read

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:

email

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);

War die Seite hilfreich?
Aktualisiert am 3. September 2024