GithubHelp home page GithubHelp logo

lessmind / php-redmine-api Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kbsali/php-redmine-api

0.0 2.0 0.0 488 KB

A simple PHP Redmine API client, Object Oriented

License: MIT License

PHP 100.00%

php-redmine-api's Introduction

PHP Redmine API

A simple Object Oriented wrapper for Redmine API, written with PHP5.

Uses 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,

<?php
// 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.1 of the library into the vendor/php-redmine-api-1.5.1 directory:

$ 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

Now, in any scripts that will use the Redmine classes, include the lib/autoload.php file from the php-redmine-api directory. For example,

<?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');

Running the test suite

If you have PHPUnit >= 4.0 installed, you can run the test suite to make sure that the library will function properly on your system. Simply run phpunit in the php-redmine-api directory. For example,

$ 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

Basic usage of php-redmine-api client

<?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
]);

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!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.