pdapps/kanbani-data

PHP 的 Kanbani 数据解析器

v1.0 2020-09-22 08:52 UTC

This package is auto-updated.

Last update: 2024-09-22 18:33:41 UTC


README

这些脚本允许与 Kanbani 进行交互 - 一个免费的 Android 任务管理器。特别是,它们用于 Kanbani Web Viewer - 一个简单的 Trello-like Kanbani 板浏览器。

composer require pdapps/kanbani-data

要求

  • PHP 5.6 或 7.x
  • openssl(如果处理加密配置文件)

内容

脚本独立。您只需包含所需的脚本。

sync.php - 数据同步操作

提供一系列类,允许读取和写入(反序列化和序列化)Kanbani 同步时生成的数据(使用任何传输方式,如本地文件或 WebDAV)。

如果 PHP 的 openssl 模块可用,您还可以操作加密同步数据以及明文数据。

// Creating a sync file from scratch:
$syncData = new Kanbani\SyncData;
$syncData->boards = [$board1, $board2, ...];
$syncData->serializeFile('foobar.kanbani');
// Or, encrypted:
$syncData->serializeFile('foobar.kanbani', "TheSecretString");

// Reading an existing sync file:
$syncData = new Kanbani\SyncData;
$syncData->unserializeFile('foobar.kanbani');
// Or, if encrypted:
$syncData->unserializeFile('foobar.kanbani', "TheSecretString", "sOmOzK...");
echo count($syncData->boards);

// Can also chain like so:
$syncData = (new Kanbani\SyncData($boards))
    ->serializeFile(...);

$syncData = (new Kanbani\SyncData)
    ->unserializeFile(...);

在内部,SyncData 使用 SyncFile - 一个不知道它具体序列化什么的类,只知道它是一个字符串。您可以分别使用这两个类。

// Get plain text JSON:
// {"sync_version": 1, "client_version": 1, "boards": [...]}
echo json_encode($syncData);

// Get CSV (to read back CSV use Kanbani Web Viewer's import plugin):
// board;agEi...P4F7;1577836800000;"Welcome Board";
echo $syncData->serializeToCSV();

假设 $object 的格式描述如 此处

// Creating a sync file from scratch:
$data = json_encode($object);
(new Kanbani\SyncFile)->serializeFile("foobar.kanbani", $data);

// Reading an existing sync file:
$sync = (new Kanbani\SyncFile)->unserializeFile("foobar.kanbani");
$object = json_decode($sync->data);

// Reading file info only (faster, doesn't parse the data):
$syncFile = (new Kanbani\SyncFile)->unserializeHeader(file_get_contents(...));
echo $syncFile->isEncrypted() ? "Encrypted data" : "Plain text";

辅助方法

SyncFile 可以生成与 Kanbani 兼容的加密版块文件名

$syncFile = new Kanbani\SyncFile;
$syncFile->secret = "TheSecretString";
$syncFile->boardID = "sOmOzK...";
echo $syncFile->encryptedFileName(), ".kanbani";

SyncData 可以将数据序列化(导出)为几种其他格式(它不能导入它们,请参阅 Kanbani Web Viewer 的导入插件

$syncData->serializeToJSON();       // plain text JSON
$syncData->serializeToCSV();        // CSV format similar to Trello
$syncData->serializeToExcelCSV();   // CSV compatible with MS Excel

命令行使用

直接从命令行调用 sync.php 以反序列化和转储文件(用于调试很有用)

php sync.php Board.kanbani [secret board-id]

qrcode.php - QR 码数据操作

提供一系列类,代表当作为 QR 码编码以与其他设备共享时的 Kanbani 同步配置文件数据。它标识传输、服务器位置、加密设置等。

注意:QR 码包含 JSON 数据;这些类在数据上工作,但它们不扫描或生成 QR 码图像 - 使用类似 phpqrcode 的库来处理这些。

从头生成 QR 码数据

$qrCode = new Kanbani\QrCodeData;
$qrCode->title = "Generated sync profile";

$baseURL = "https://deep.secret/kanbani/";
$auth = new Kanbani\QrCodePassword("PDApps", "4Ever!");
$qrCode->transport = new Kanbani\QrCodeSFTP($baseURL, $auth);

$data = json_encode($qrCode);

// $data can now be encoded as an image:
require_once "phpqrcode.php";
QRcode::png($data);

解析 QR 码数据

$qrCode = new Kanbani\QrCodeData;
$qrCode->unserialize(json_decode($data));
echo $qrCode->title;
echo get_class($qrCode->transport);

辅助方法

一些 QrCodeWebTransporttestConnection() 方法,它在成功时返回 null 或数组 ["id", "msg"](错误标识符和可读性强的消息)- 有助于检查用户输入。

$dav = new QrCodeWebDAV("https://dav.user.pdapps.org", null /*no auth*/);
$error = $dav->testConnection();
if ($error) {
    echo "Problem '$error[0]': $error[1]";
} else {
    echo "Connection test OK!";
}