lut 10

Dodawanie zgłoszeń do Mantisa przez WebService

Tag: phpTI @ 10-02-2009 15:03
Bookmark and Share

Jakiś czas temu napisałem skrypcik do zdalnego dodawanie zgłoszeń do Mantisa. Teraz go rozwinołem o wykorzystanie WebService.


Bazuje on na poprzedniej wersji więc nie będę wszystkiego dokładnie opisywał.

Potrzebujemy serwer WebService i jest on w pliku mantis_soap.php który umieszczamy w katalogu głównym Mantisa.

mantis_soap.php

[sourcecode lang="php"]
< ?php
//--------------------------------------------------------------------------------------------------------------
include "config_inc.php";
//--------------------------------------------------------------------------------------------------------------
function sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name) {
$result["wynik"] = true;
$result["komunikat"] = "";
$result["redirect"] = true;
$result["result"] = array();

$link = @mysql_connect($g_hostname, $g_db_username, $g_db_password);
if (!$link) {
$result["komunikat"] = "Nie można się połączyć z bazą danych: " . mysql_error();
$result["redirect"] = false;
$result["wynik"] = false;
return $result;
}

$db_selected = @mysql_select_db($g_database_name, $link);
if (!$db_selected) {
$result["komunikat"] = "Nie można wybrać bazy: " . mysql_error();
$result["redirect"] = false;
$result["wynik"] = false;
return $result;
}

@mysql_query("SET NAMES "utf8"");

$query = @mysql_query($sql);
if(!$query) {
$result["komunikat"] = "Zapytanie niepoprawne: "".$sql.""";
$result["redirect"] = false;
$result["wynik"] = false;
return $result;
}

while ($row = @mysql_fetch_assoc($query)) {
array_push($result["result"], $row);
}

@mysql_close($link);

return $result;
}

function dodajZgloszenie($summary, $description, $idProjektu = 1, $idZglaszajacego = 2, $info = "") {
global $g_complete_date_format;
global $g_hostname;
global $g_db_username;
global $g_db_password;
global $g_database_name;
//--------------------------------------------------------------------------------------------------------------
$dataZgloszenia = date($g_complete_date_format);
$kategoria = "Zgłoszenie zdalne";
$tytulZgloszenia = $summary;
$opisZgloszenia = $description."\n\n".$info;
$idZgloszenia = null;
//--------------------------------------------------------------------------------------------------------------
$sql = "SELECT id FROM mantis_user_table WHERE ".
"username = "$g_anonymous_account" ";
$w = sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name);
if($w["wynik"]) {
$idZglaszajacego = $w["result"][0]["id"];
}
//--------------------------------------------------------------------------------------------------------------
$sql = "INSERT INTO mantis_bug_text_table ".
"(description)".
" VALUES ".
"("$opisZgloszenia");";
$w = sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name);

if($w["wynik"]) {
$sql = "SELECT id FROM mantis_bug_text_table WHERE ".
"description = "$opisZgloszenia" ".
"ORDER BY id DESC";
$w = sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name);
$idZgloszenia = $w["result"][0]["id"];

$sql = "INSERT INTO mantis_bug_table ".
"(id, project_id, reporter_id, category, date_submitted, last_updated, bug_text_id, summary)".
" VALUES ".
"("$idZgloszenia", "$idProjektu", "$idZglaszajacego", "$kategoria", "$dataZgloszenia", "$dataZgloszenia", "$idZgloszenia", "$tytulZgloszenia");";
$w = sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name);

$sql = "INSERT INTO mantis_bug_history_table ".
"(user_id, bug_id, date_modified, type)".
" VALUES ".
"("$idZglaszajacego", "$idZgloszenia", "$dataZgloszenia", "1");";
$w = sql($sql, $g_hostname, $g_db_username, $g_db_password, $g_database_name);
}
return true;
}

$server = new SoapServer(null,
array("uri" => „urn:mantis_SOAP_dodajZgloszenie”));
$server->addFunction(„dodajZgloszenie”);
$server->handle();
?>
[/sourcecode]

A potem w dowolnym miejscu (serwisie) tworzymy klienta WebService który wygląda tak:
[sourcecode lang="php"]
$client = new SoapClient(null, array(
„location” => „http://example.org/mantis_soap.php”,
„uri” => „urn:mantis_SOAP_dodajZgloszenie”,
„trace” => 1 ));
$client->__soapCall(„dodajZgloszenie”,array(„test”,”testuje”, 1, 2, „dodatkowe info”));
[/sourcecode]
gdzie: http://example.org/mantis_soap.php to URL do serwera WebService
a parametry „test”,”testuje”, 1, 2, „dodatkowe info” to kolejno:
tytuł zgłoszenia, opis zgłoszenia, id projektu, id zgłaszającego, i jakeś dodatkowe informacje które nie sią obowiązkowe.

Zostaw komentarz