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

Aktualisiert am 11. April 2025
War diese Seite hilfreich für dich?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.