Pliki cookies na stronie. Aby zapewnic poprawne dzialanie strony na stronie wykorzystujemy pliki cookies. Wraz z wejsciem na strone, niektore pliki mogly juz zostac zapisane w folderze przegladarki.
Nie pokazuj wiecej tego powiadomienia.

wtorek 21 października 2008





Mając kilka serwisów www chciałem dać użytkownikom możliwość zgłaszania ewentualnych błędów i/lub nowych propozycji. Jednak fajnie by było gdyby wszystkie one były zbierane w jednym miejscu które dawało by możliwość zarządzania nimi. Dobrym programem do zamieszczania takich zgłoszeń jest Mantis ale dodawanie do niego informacji jest dość kłopotliwe zwłaszcza dla mało doświadczonych użytkowników. Dlatego opracowałem sposób który umożliwia mi zamieszczenie prostego formularza w dowolnym serwisie a zbierania wszystkich zgłoszeń w jednym Mantisie.

Zdaje sobie sprawę, że przedstawione rozwiązanie ma wiele wad jednak jego udoskonalenie nie jest bardzo kłopotliwe i pozostawiam je osobą zainteresowanym.

Instalacja:

Plik mantis.php umieszczam w swoim serwisie. Tak naprawdę jest to formularz który przesyła dane do Mantisa. W tagu form atrybut action należy wpisać adres URL do pliku remote.php umieszczonego razem z Mantisem. W tagu oznaczonym jako endPage należy umieścić adres URL strony która ma zostać załadowana po dodaniu zgłoszenia.

Plik remote.php należy umieścić w katalogu głównym Mantisa. I w nim trzeba wpisać dwie rzeczy $idProjektu i $idZglaszajacego gdzie pierwsze to identyfikator projektu do którego będą dokonywane zgłoszenia a drugie to identyfikator użytkownika który będzie zgłaszał (ważne tylko w przypadku jeśli nie ma użytkownika anonimowego).


Plik mantis.php:

<html>

<body>

<form action="remote.php" method="post">

<input type="hidden" name="endPage" value="http://onet.pl">

<label>

Temat zgłoszenia:

<input type="text" name="summary">

</label>

<label>

Opis zgłoszenia:

<textarea rows="10" cols="40" name="description"></textarea>

</label>

<input type="submit" value="Wyślij">

</form>

</body>

</html>


Plik remote.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;

}

//--------------------------------------------------------------------------------------------------------------

$idProjektu = 2;

$idZglaszajacego = 3;

$dataZgloszenia = date($g_complete_date_format);

$kategoria = 'Zgłoszenie zdalne z http://'.$_SERVER["SERVER_NAME"];

$tytulZgloszenia = $_POST['summary'];

$opisZgloszenia = $_POST['description']."\n\n".'-- '."\n".'Zgłoszenie zdalne z http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];;

$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);

}

//————————————————————————————————————–

if($w[‚redirect’]) {

?>

<html>

<head>

<META HTTP-EQUIV=”Refresh” CONTENT=”0,URL=<?=$_POST[‚endPage’] ?>”>

</head>

<body>

</body>

</html>

<?

}

else {

?>

<html>

<head>

</head>

<body>

<?=$w[‚komunikat’] ?>

</body>

</html>

<?

}

//————————————————————————————————————–

?>





Zostaw Komentarz

*