decole/planka-php-sdk

一个易于使用的PHP类,用于访问Planka的API。

1.1.4 2024-08-16 06:28 UTC

This package is auto-updated.

Last update: 2024-09-16 06:40:17 UTC


README

Planka REST API的包装器(https://github.com/plankanban/planka

在Planka版本上测试

  • 1.10.3
  • 1.11

实现了1.10.3版本及以后的入口点。

安装

composer require decole/planka-php-sdk

如何使用

包装器执行Planka通过Websocket或隐藏的REST API发出的请求。包装器使用隐藏的REST API。请参阅https://github.com/plankanban/planka/blob/master/server/config/routes.js中的端点

要了解如何使用包装器,您可以前往Websocket,并查看Websocket的Web客户端如何与其服务器交互。请求和响应是相同的。我只是在DTO中标准化了答案。DTO内的数据与服务器响应相同。

了解您正在特定用户下工作也不是很重要。相应地,如果您看不到项目或某些看板,这意味着此用户由于访问权限而被禁止访问。

您需要添加用户。为此,您需要在所需的项目和看板中使用包装器。

包装器端点 - /src/PlankaClient.php

<?php

use Planka\Bridge\PlankaClient;
use Planka\Bridge\TransportClients\Client;

require __DIR__ . '/vendor/autoload.php';

$config = new Config(
    user: 'login',
    password: '***************',
    baseUri: 'http://192.168.1.101', // https://your.domain.com
    port: 3000                       // 443
);

$planka = new PlankaClient($config);

$planka->authenticate();

$result = $planka->project->list();

var_dump($result);

示例 - 删除空看板

<?php

use Planka\Bridge\PlankaClient;
use Planka\Bridge\TransportClients\Client;

require __DIR__ . '/vendor/autoload.php';

$config = new Config(
    user: 'login',
    password: '***************',
    baseUri: 'http://192.168.1.101', // https://your.domain.com
    port: 3000                       // 443
);

$planka = new PlankaClient($config);

$planka->authenticate();

// Only projects and boards assigned to your user are available
$dto = $planka->project->list();

//        dd($dto->items); // list projects

// the list will only contain boards available to your user
$boards = $dto->included->boards;

/** @var BoardItemDto $item */
foreach ($boards as $item) {
    // we request each board separately
    $board = $planka->board->get($item->id);

    // list of board cards
    $cardList = $board->included->cards;

    if (empty($cardList)) {
        // removing a board without cards
        $planka->board->delete($item->id);
    }
}

您可以使用测试脚本测试此包的Rest API,在文件夹/tests/index.php中。在那里您将找到脚本的主要使用示例。

config.example.php复制为config.php,并根据您的Planka凭据进行自定义。

在测试脚本中,注释描述了正在执行的操作,项目、看板和卡片也会创建并执行相应的操作,最后删除卡片、看板和项目。

所有必要的入口点都方便地分成了控制器。您可以在src/Controllers/文件夹中查看控制器。

结果数据输出是强类型化的,并以Dto对象的形式返回

发现的问题

使用Symfony\Component\HttpClient\NativeHttpClient - 作为内部客户端,您可以使用特殊字符()\|/"'发送密码,但如果您使用Symfony\Component\HttpClient\CurlHttpClient - 就不能使用复杂的密码。在内部进行URL编码的转义,因此Planka的密码无法完整。因此,无法使用账户登录。

为开发

阅读手册

静态分析代码

Psalm分析: ./vendor/bin/psalm --no-cache --no-file-cache

如果您使用Linux,请使用make psalm