vineyardkoeln / churchtools-api
Requires
- php: ^8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.3
- guzzlehttp/psr7: ^1.6
- jane-php/open-api-3: ^7.2
Requires (Dev)
- squizlabs/php_codesniffer: ^3.5.4
README
ChurchTools API
以面向对象的方式,通过Composer与现代化PHP项目良好集成,访问ChurchTools的API,网址为https://api.churchtools.de/。
使用新(2019年)REST API的API v2可在README_API2.md中找到。
由Vineyard Köln提供的免费软件(既指免费啤酒,也指免费言论),许可协议为Apache 2.0。
[4]:
进一步开发
目前,此库未最近更新。如果您想参与开发,可以通过向主分支发送拉取请求来集成。
其他php CT API实现
https://github.com/5pm-HDH/churchtools-api
安装
composer require vineyardkoeln/churchtools-api
使用
前提:自动加载
如果您尚未在项目中配置自动加载,请先包含Composer自动加载器。
require __DIR__ . '/vendor/autoload.php';
登录以使用API
要使用ChurchTools API,您需要一个有效的登录。这可以是一个用户名/密码对,或者您可以使用登录ID和令牌。后者是推荐方式,因为它将您的API与任何用户账户分开,但用户名和密码对测试目的来说也行。
要使用用户名和密码登录,请使用以下代码片段
$api = \ChurchTools\Api\RestApi::createWithUsernamePassword('mychurch', 'username', 'password');
其中 mychurch 是您的教堂名称或子域,如您的Web界面的URL:https://mychurch.church.tools/。如果您自行托管ChurchTools,则使用安装的服务器完整名称,无需协议(例如:'mychurch.example.org')。
要使用登录ID和令牌登录,请使用以下代码片段(推荐)
$api = \ChurchTools\Api\RestApi::createWithLoginIdToken('mychurch', 1337, 'a really long seemingly random string of 256 alphanumeric characters');
您可以通过通过静态方法 getLoginToken() 使用用户名和密码一次登录到API来检索令牌(见下文)。
登录有效期为程序调用(脚本生命周期)的持续时间。这样,您可以通过您的选择之一静态构造方法只进行一次登录即可执行许多请求。
以下示例大多假设您已拥有有效的登录,并将API对象分配给变量 $api。
获取令牌
为了获取登录ID和令牌,您必须调用一次 getLoginToken 方法
$result = \ChurchTools\Api\RestApi::getLoginToken($churchHandle, $usernameOrEmail, $pass);
var_dump($result);
这将返回类似以下内容
array(2) {
["status"]=>
string(7) "success"
["data"]=>
array(2) {
["token"]=>
string(256) "this is the very long string of seemingly random 256 alphanumberic characters that you need to store"
["id"]=>
string(4) "1337"
}
}
获取所有日历条目
要获取现在到未来10天内的所有日历条目
$events = $api->getCalendarEvents([1,2,…]);
foreach ($events['data'] as $event) {
// …
}
此方法还有两个可选参数,$toDays 和 $fromDays,允许您选择所需的时间段。
获取主数据
要获取日历或服务主数据,请使用此方法
var_dump($api->getCalendarMasterData());
或
var_dump($api->getServiceMasterData());
TODO:在即将到来的alpha版本之一中,方法将返回模型对象而不是平面数组。
TODOs
- 包装更多API调用
- 使用模型类作为返回数据而不是平面数组
- 将来有一天,将所有可用的API调用都包装起来
- 记录每个可用的方法