Though Test Collab supports most of the major Issue Manager systems available in the market. But still if you don't find your Issue Manager in our list, with basic knowledge of PHP you integrate Test Collab with your issue manager.
Structure of IssueManager Module: All files of issue manager are located in /app/issue_managers. As pretty evident from this folder, there is one class for each issue manager, with name of file like <issue_manager_name>_issue_manager.php and name of Class like <IssueManagerName>IssueManager. Also all issue manager classes inherit class AbstractIssueManager which is in the file abstract_issue_manager.php. Any class with this structure will be automatically recognized by the system and will be shown in Issue managers list.
Step by Step Procedure to create your Issue Manager class:
Lets say you want to report issues to a issue manager called as Test, then create a file called as test_issue_manager.php in /app/issue_managers and a class with name of TestIssueManager inherting AbstractIssueManager.
Create a static method getFieldProperties which should return array of fields.
Create createDefect method with three parameters title,description and attachment. This is the main method which is used to report defect and contains the all logic to call your issue manager and report the issue.
If you want to send attachments added at time of reporting bug along with the issue then add logic to send attachments with issue also.
If issue is created then return Instance DefectInfo containing information about issue created else throw IssueCreateException.
Create checkConnection method to check connection with your issue manager server.
This is a basic starting guide to Integrate your Issue Manager. All the technical details regarding method parameters, properties are specified in comments of abstract_issue_manager.php. So you must go through all comments before integrating, also you can look at integration code of other issue manager classes.
AbstractIssueManager::$apiServerUrl, AbstractIssueManager::$username, AbstractIssueManager::$password can be used to call your server and for authentication.
There is no restriction that only issue managers with xml API can be used.
All issue manager classes which are packaged with this software, use logic depending upon their issue manager API's.
For Example :
JiraIssueManager - uses Soap and nu_soap classes.
UnfuddleIssueManager, RedmineIssueManager, FogbugzIssueManager - uses xml
LighthouseIssueManager and MantisIssueManager - Don't use any API rather replicate browser type behaviour by using Pear HttpRequest Class.
TracIssueManager and BugzillaIssueManager - Uses xml rpc and xml_rpc classes.