redmine php版,A simple PHP Redmine API client, Object Oriented

岑熙云
2023-12-01

PHP Redmine API

A simple PHP Object Oriented wrapper for Redmine API.

Features

Follows PSR-0 conventions and coding standard: autoload friendly

API entry points implementation state :

OK Attachments

OK Groups

OK Custom Fields

OK Issues

OK Issue Categories

OK Issue Priorities

NOK Issue Relations - only partially implemented

OK Issue Statuses

OK News

OK Projects

OK Project Memberships

OK Queries

OK Roles

OK Time Entries

OK Time Entry Activities

OK Trackers

OK Users

OK Versions

OK Wiki

Todo

Limitations

Redmine is missing some APIs for a full remote management of the data :

A possible solution to this would be to create an extra APIs implementing the missing entry points. See existing effort in doing so : https://github.com/rschobbert/redmine-miss-api

Requirements

PHP >= 5.4

The PHP cURL extension

The PHP SimpleXML extension

The PHP JSON extension

PHPUnit >= 4.0 (optional) to run the test suite

"Enable REST web service" for your Redmine project (/settings/edit?tab=authentication)

then obtain your API access key in your profile page : /my/account

or use your username & password

Install

Composer

Composer users can simply run:

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

at the root of their projects. To utilize the library, include

Composer's vendor/autoload.php in the scripts that will use the

Redmine classes.

For example,

// This file is generated by Composer

require_once 'vendor/autoload.php';

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

Manual

It is also possible to install the library oneself, either locally to

a project or globally; say, in /usr/share/php.

First, download and extract the library somewhere. For example, the

following steps extract v1.5.18 of the library into the

vendor/php-redmine-api-1.5.18 directory:

$ mkdir vendor

$ wget -q https://github.com/kbsali/php-redmine-api/archive/v1.5.18.tar.gz

$ tar -xf v1.5.18.tar.gz -C vendor/

$ rm v1.5.18.tar.gz

Now, in any scripts that will use the Redmine classes, include the

src/autoload.php file from the php-redmine-api directory. For

example,

// This file ships with php-redmine-api

require 'vendor/php-redmine-api-1.5.18/src/autoload.php';

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

Running the test suite

You can run test suite to make sure the library will work properly on your system. Simply run vendor/bin/phpunit in the project's directory :

$ vendor/bin/phpunit

PHPUnit 6.5.14 by Sebastian Bergmann and contributors.

Error: No code coverage driver is available

............................................................... 63 / 285 ( 22%)

............................................................... 126 / 285 ( 44%)

............................................................... 189 / 285 ( 66%)

............................................................... 252 / 285 ( 88%)

................................. 285 / 285 (100%)

Time: 107 ms, Memory: 8.00MB

OK (285 tests, 662 assertions)

Basic usage of php-redmine-api client

// 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/src/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_id' => 123, // or 'assigned_to' => 'user1'

]);

$client->issue->all([

'limit' => 1000

]);

See example.php for further examples.

User Impersonation

As of Redmine V2.2 you can impersonate user through the 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);

Thanks!

Thanks to Thomas Spycher for the 1st version of the class.

Thanks to Thibault Duplessis aka. ornicar for the php-github-api library, great source of inspiration!

specially JanMalte for his impressive contribution to the test coverage! :)

 类似资料: