pdapps / kanbani-data
PHP 的 Kanbani 数据解析器
Requires
- php: >=5.6.0
Suggests
- ext-openssl: Required for manipulating encrypted profiles
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);
辅助方法
一些 QrCodeWebTransport
有 testConnection()
方法,它在成功时返回 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!"; }