0

私はOTRSのダッシュボードとして機能するためにいくつかのPHPページをまとめようとしています。アイデアは、オフィスのディスプレイに出力して、最初の応答に近づいているチケットを表示し、エスカレーションを更新することです。私はこれまでのところ、これに苦労している開発者ではありません。エスカレーション時間が設定されているチケットのみを出力することができました...素晴らしいです!ただし、エスカレーションまでの時間を表示したいと思います。これは私が絶対に無知なところです。運が悪かったので、php/mysqlガイドをいじくりまわしてみました。

私はこれまでに私のコードを含めました...誰かがエスカレーション列に時間を追加する方向に私を向けることができることを期待するだけでなく(これは現在の日付に従ってescalation_update_time(Unix)を操作することを含むと私は推測しています/ time?)だけでなく、誰かが私が達成しようとしているのと同じことをするのに役立つかもしれません...これはかなり便利です!(obvはIP /ユーザー名/パスを変更しました)。

要約すると、理想的には、以下のスクリプトに追加したいものは次のとおりです。

(Unixではなく)標準の日付/時刻形式でエスカレーション時間を表示する機能エスカレーションまでのカウントダウンを表示する機能(例:チケットごとに3時間15分または2日3時間14分など)

これは私が推測するOTRSに固有のものではなく、すべてのmySQL / PHP環境に適用されるので、うまくいけば、このことを理解している気まぐれな子供がそこにいます!

誰かが提供できるかもしれないガイダンスや助けを事前に感謝します:)

<html><head><title>OTRS - First Contact</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head><body>
<?php
$db_host = '192.168.1.254';
$db_user = 'myuser';
$db_pwd = 'mypassword';

$database = 'otrs';
$table = 'users';

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// sending query
$result = mysql_query("SELECT  q.name AS queue_name, t.tn, t.customer_id,a .a_from,      t.title, a.create_time, create_time_unix, escalation_update_time
FROM    queue AS q, ticket AS t, article AS a, (
        SELECT  _a.ticket_id, MAX(_a.create_time) AS create_time
        FROM    ticket AS _t, ticket_state AS _t_s, article AS _a
        WHERE   _t_s.name IN ('new', 'open')
        AND     _t.ticket_state_id = _t_s.id
        AND     _a.ticket_id = _t.id            
        GROUP   BY _a.ticket_id
    ) a_max
WHERE   q.id = t.queue_id
AND     t.id = a_max.ticket_id
AND     a.create_time = a_max.create_time
AND     q.name = 'Service Desk'
AND      escalation_response_time >0
GROUP   BY t.id
ORDER   BY a.create_time ASC");
if (!$result) {
die("Query to show fields from table failed");
}

$fields_num = mysql_num_fields($result);

echo "<h1>Ticket Escalations (First Contact)</h1>";
echo "<table border='1'><tr>";
// printing table headers

echo "<td>Queue</td>";
echo "<td>Ticket#</td>";
echo "<td>Store</td>";
echo "<td>Customer</td>";
echo "<td>Subject</td>";
echo "<td>Last Update</td>";
echo "<td>Created Time (Unix)</td>";
echo "<td>Escalation Time</td>";

echo "</tr>\n";
// printing table rows

while($row = mysql_fetch_row($result))
{
echo "<tr>";

// $row is array... foreach( .. ) puts every element
// of $row to $cell variable
foreach($row as $cell)
    echo "<td>$cell</td>";   
echo "</tr>\n";
}
mysql_free_result($result);
?>
</body></html>
4

2 に答える 2

0

PHP の date() および strtotime() 関数を試してみてください。カウントダウンオプションについてはhttp://keith-wood.name/countdown.html

于 2012-10-12T10:37:57.000 に答える
0

アプローチを変更する必要があると思います: Perl とOTRS APIを使用している場合は、エスカレーション時間を検索できる TicketSearch オブジェクトを使用できます。

    # you can use all following escalation options with this four different ways of escalations
    # TicketEscalationTime...
    # TicketEscalationUpdateTime...
    # TicketEscalationResponseTime...
    # TicketEscalationSolutionTime...

    # ticket escalation time of more than 60 minutes ago (optional)
    TicketEscalationTimeOlderMinutes => -60,
    # ticket escalation time of less than 120 minutes ago (optional)
    TicketEscalationTimeNewerMinutes => -120,

    # tickets with escalation time after ... (optional)
    TicketEscalationTimeNewerDate => '2006-01-09 00:00:01',
    # tickets with escalation time before ... (optional)
    TicketEscalationTimeOlderDate => '2006-01-09 23:59:59',
于 2013-03-19T14:46:05.573 に答える