izap/redmine-api

Redmine API 客户端

v1.5.11 2016-10-05 20:20 UTC

README

使用 PHP5 编写的 Redmine API 简单面向对象包装。

使用 Redmine API

特性

  • 遵循 PSR-0 规范和编码标准:自动加载友好
  • API 入口实现状态
  • OK 附件
  • OK 组
  • OK 自定义字段
  • OK 问题
  • OK 问题类别
  • OK 问题优先级
  • NOK 问题关系 - 仅部分实现
  • OK 问题状态
  • OK 新闻
  • OK 项目
  • OK 项目成员
  • OK 查询
  • OK 角色
  • OK 时间条目
  • OK 时间条目活动
  • OK 跟踪器
  • OK 用户
  • OK 版本
  • OK 维基

待办事项

限制

Redmine 缺少一些 API 以实现数据的完整远程管理

解决此问题的可能方法是为缺少的入口点创建额外的 API。有关现有努力的更多信息,请参阅: https://github.com/rschobbert/redmine-miss-api

要求

  • PHP >= 5.4
  • PHP cURL 扩展
  • PHP SimpleXML 扩展
  • PHP JSON 扩展
  • PHPUnit >= 4.0(可选)以运行测试套件
  • 为您的 Redmine 项目启用“启用 REST Web 服务”(/settings/edit?tab=authentication)
  • 然后在您的个人资料页面中获取您的 API 访问密钥:/my/account
  • 或使用您的 用户名 & 密码

安装

Composer

Composer 用户可以在项目根目录下简单运行

$ php composer.phar require kbsali/redmine-api:~1.0

要使用库,请在使用 Redmine 类的脚本中包含 Composer 的 vendor/autoload.php

例如,

<?php
// This file is generated by Composer
require_once 'vendor/autoload.php';
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

手动

也可以自行安装库,无论是局部到项目还是全局;例如,在 /usr/share/php 中。

首先,在某个位置下载并解压库。例如,以下步骤将库 v1.5.1 解压到 vendor/php-redmine-api-1.5.1 目录中

$ mkdir vendor
$ wget -q https://github.com/kbsali/php-redmine-api/archive/v1.5.1.tar.gz
$ tar -xf v1.5.1.tar.gz -C vendor/
$ rm v1.5.1.tar.gz

现在,在将使用 Redmine 类的任何脚本中,包含从 php-redmine-api 目录中的 lib/autoload.php 文件。例如,

<?php
// This file ships with php-redmine-api
require 'vendor/php-redmine-api-1.5.1/lib/autoload.php';
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

运行测试套件

如果您已安装 PHPUnit >= 4.0,您可以通过在 php-redmine-api 目录中运行 phpunit 来运行测试套件,以确保库在您的系统上正常工作。例如,

$ phpunit
PHPUnit 4.3.1 by Sebastian Bergmann.

Configuration read from ./phpunit.xml.dist

...............................................................  63 / 276 ( 22%)
............................................................... 126 / 276 ( 45%)
............................................................... 189 / 276 ( 68%)
............................................................... 252 / 276 ( 91%)
........................

Time: 591 ms, Memory: 10.50Mb

php-redmine-api 客户端的简单使用

<?php

// For Composer users (this file is generated by Composer)
require_once 'vendor/autoload.php';

// Or if you've installed the library manually, use this instead.
// require 'vendor/php-redmine-api-x.y.z/lib/autoload.php';

$client = new Redmine\Client('http://redmine.example.com', 'API_ACCESS_KEY');
//-- OR --
$client = new Redmine\Client('http://redmine.example.com', 'username', 'password');

$client->user->all();
$client->user->listing();

$client->issue->create([
    'project_id'  => 'test',
    'subject'     => 'some subject',
    'description' => 'a long description blablabla',
    'assigned_to' => 'user1',
]);
$client->issue->all([
    'limit' => 1000
]);

请参阅 example.php 以获取更多示例。

用户伪装

从 Redmine V2.2 开始,您可以通过 REST API 伪装用户

$client = new Redmine\Client('http://redmine.example.com', 'API_ACCESS_KEY');

// impersonate user
$client->setImpersonateUser('jsmith');

// create a time entry for jsmith
$client->time_entry->create($data);

// remove impersonation for further calls
$client->setImpersonateUser(null);

谢谢!