2017-07-14 11 views
0

oSTicket APIを使用して1つのウェブサイトでチケットを作成しています。私たちの会社は同じチケットを別のウェブサイトに複製する必要があります。エラーがどこにあるのかわからないのは、APIコードを複製することです。複数のチケットを作成するosTicket API

以下は2つのコードを1つにまとめたものです。情報は、前のページのフォームから引き出されます。 1つのチケットにAPIを使用するとうまく動作します。私は2つの異なるAPIキー

<?php 
//eTrack case file create. 

date_default_timezone_set('Africa/Johannesburg'); 
$today = date("Y-m-d"); 
$time = date("H:i:s"); 
if(!isset($_POST['submit'])) 
{ 
//This page should not be accessed directly. Need to submit the form. 
    echo "Submitted"; 
} 

$province = $_POST['province']; 
$usergroup = $_POST['usergroup']; 
$usermail = $_POST['usermail']; 
$topicId = $_POST['topicId']; 

// If 1, display things to debug. 
$debug="0"; 

// You must configure the url and key in the array below. 

$config = array(
     'url'=>'http://****.biz/incidents/api/tickets.json', // URL to site.tld/api/tickets.json 
     'key'=>'****D66F84' // API Key goes here 
); 
# NOTE: some people have reported having to use "http://your.domain.tld/api/http.php/tickets.json" instead. 

if($config['url'] === 'http://e-****.biz.tld/incidents/api/http.php/tickets.json') { 
    echo "<p style=\"color:red;\"><b>Error: No URL</b><br>You have not configured this script with your URL!</p>"; 
    echo "Please edit this file ".__FILE__." and add your URL at line 18.</p>"; 
    die(); 
}  
if(IsNullOrEmptyString($config['key']) || ($config['key'] === '*******')) { 
    echo "<p style=\"color:red;\"><b>Error: No API Key</b><br>You have not configured this script with an API Key!</p>"; 
    echo "<p>Please log into System as an admin and navigate to: Admin panel -> Manage -> Api Keys then add a new API Key.<br>"; 
    echo "Once you have your key edit this file ".__FILE__." and add the key at line 19.</p>"; 
    die(); 
} 

# Fill in the data for the new ticket, this will likely come from $_POST. 
# NOTE: your variable names in osT are case sensiTive. 
# So when adding custom lists or fields make sure you use the same case 
# For examples on how to do that see Agency and Site below. 
$data = array(
    'name'  =>  'Control', // Client or Company Name 
    'email'  =>  "$usermail", // Person opening the case file email 
    'phone'  =>  '**', // Contact number of the person opening the case file. In this instance our Office Number 
    'subject' =>  "$casetype - $client - $reg", // Case type description, Testing multiple POST replies to string 
    'date2'  =>  "$date", 
    'time'  =>  "$time", 
    'message' =>  " 
    Case Type:     $casetype 
    Vehicle Registration:  $reg 
    Vehicle Make:    $make 
    Client:      $name 
    Where was it Taken:   $taken 
    Reported by:    $name2 of $client 
    Case Notes: 
    $notes", // test ticket body, aka Issue Details. 
    'ip'  =>  $_SERVER['REMOTE_ADDR'], // Should be IP address of the machine thats trying to open the ticket. 
    'topicId' =>  "$topicId", // the help Topic that you want to use for the ticket Help topic ID is linked to dropdown list 
    'date'  =>  "$date", //Reported date to Control room 
    'timerec' =>  "$time", // Reported time to control room 

    'email'  =>  "$usermail", 

); 

# more fields are available and are documented at: 
# https://github.com/osTicket/osTicket-1.8/blob/develop/setup/doc/api/tickets.md 

if($debug=='1') { 
    print_r($data); 
    die(); 
} 

# Add in attachments here if necessary 
# Note: there is something with this wrong with the file attachment here it does not work. 
//$data['attachments'][] = 
//array('file.txt' => 
    //  'data:text/plain;base64;' 
    //  .base64_encode(file_get_contents('/file.txt'))); // replace ./file.txt with /path/to/your/test/filename.txt 


#pre-checks 
function_exists('curl_version') or die('CURL support required'); 
function_exists('json_encode') or die('JSON support required'); 

#set timeout 
set_time_limit(30); 

#curl post 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $config['url']); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
curl_setopt($ch, CURLOPT_USERAGENT, 'osTicket API Client v1.8'); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:', 'X-API-Key: '.$config['key'])); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$result=curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 

if ($code != 201) 
    die('Unable to create ticket: '.$result); 

$ticket_id = (int) $result; 

# Continue onward here if necessary. $ticket_id has the ID number of the 
# newly-created ticket 

function IsNullOrEmptyString($question){ 
    return (!isset($question) || trim($question)===''); 
} 
?> 

<?php 
//Recovery Assist case file create. 

date_default_timezone_set('Africa/Johannesburg'); 
$today = date("Y-m-d"); 
$time = date("H:i:s"); 
# 
# Configuration: Enter the url and key. That is it. 
# url => URL to api/task/cron e.g # http://yourdomain.com/support/api/tickets.json 
# key => API's Key (see admin panel on how to generate a key) 
# $data add custom required fields to the array. 
# 
# Originally authored by [email protected] 
# Modified by [email protected]/tmib.net 
if(!isset($_POST['submit'])) 
{ 
//This page should not be accessed directly. Need to submit the form. 
    echo "Submitted"; 
} 
$name = $_POST['name']; 

$topicId = $_POST['topicId']; 

// If 1, display things to debug. 
$debug="0"; 

// You must configure the url and key in the array below. 

$config = array(
     'url'=>'http://***.co.za/report/api/tickets.json', // URL to site.tld/api/tickets.json 
     'key'=>'****DA3C6' // API Key goes here 
); 
# NOTE: some people have reported having to use "http://your.domain.tld/api/http.php/tickets.json" instead. 

if($config['url'] === 'http://***.co.za/report/api/http.php/tickets.json') { 
    echo "<p style=\"color:red;\"><b>Error: No URL</b><br>You have not configured this script with your URL!</p>"; 
    echo "Please edit this file ".__FILE__." and add your URL at line 18.</p>"; 
    die(); 
}  
if(IsNullOrEmptyString($config['key']) || ($config['key'] === '****')) { 
    echo "<p style=\"color:red;\"><b>Error: No API Key</b><br>You have not configured this script with an API Key!</p>"; 
    echo "<p>Please log into System as an admin and navigate to: Admin panel -> Manage -> Api Keys then add a new API Key.<br>"; 
    echo "Once you have your key edit this file ".__FILE__." and add the key at line 19.</p>"; 
    die(); 
} 

# Fill in the data for the new ticket, this will likely come from $_POST. 
# NOTE: your variable names in osT are case sensiTive. 
# So when adding custom lists or fields make sure you use the same case 
# For examples on how to do that see Agency and Site below. 
$data = array(
    'name'  =>  'Control', // Client or Company Name 
    'email'  =>  "$usermail", // Person opening the case file email 
    'phone'  =>  '****', // Contact number of the person opening the case file. In this instance our Office Number 
    'subject' =>  "$casetype - $client - $reg", // Case type description, Testing multiple POST replies to string 
    'date2'  =>  "$date", 
    'time'  =>  "$time", 
    'message' =>  " 
    Case Type:     $casetype 
    Vehicle Registration:  $reg 
    Vehicle Make:    $make 
    Client:      $name 
    Where was it Taken:   $taken 
    Reported by:    $name2 of $client 
    Case Notes: 
    $notes", // test ticket body, aka Issue Details. 
    'ip'  =>  $_SERVER['REMOTE_ADDR'], // Should be IP address of the machine thats trying to open the ticket. 
    'topicId' =>  "$topicId", // the help Topic that you want to use for the ticket Help topic ID is linked to dropdown list 
    'date'  =>  "$date", //Reported date to Control room 
    'timerec' =>  "$time", // Reported time to control room 
    'name'  =>  "$name", 
    'name2'  =>  "$name2", 

    'email'  =>  "$usermail", 

); 

# more fields are available and are documented at: 
# https://github.com/osTicket/osTicket-1.8/blob/develop/setup/doc/api/tickets.md 

if($debug=='1') { 
    print_r($data); 
    die(); 
} 

# Add in attachments here if necessary 
# Note: there is something with this wrong with the file attachment here it does not work. 
//$data['attachments'][] = 
//array('file.txt' => 
    //  'data:text/plain;base64;' 
    //  .base64_encode(file_get_contents('/file.txt'))); // replace ./file.txt with /path/to/your/test/filename.txt 


#pre-checks 
function_exists('curl_version') or die('CURL support required'); 
function_exists('json_encode') or die('JSON support required'); 

#set timeout 
set_time_limit(30); 

#curl post 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $config['url']); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
curl_setopt($ch, CURLOPT_USERAGENT, 'osTicket API Client v1.8'); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:', 'X-API-Key: '.$config['key'])); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$result=curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 

if ($code != 201) 
    die('Unable to create ticket: '.$result); 

$ticket_id = (int) $result; 

# Continue onward here if necessary. $ticket_id has the ID number of the 
# newly-created ticket 

function IsNullOrEmptyString($question){ 
    return (!isset($question) || trim($question)===''); 
} 
?> 

を使用しています

私が受け取るエラーは、次のとおりです。

IsNullOrEmptyStringを()再宣言することはできません(以前は/ home/www /のイー.BIZ /制御/ IFRAME/hollardで宣言されました/report_sub.php:350)/ホーム/ www /のイー .BIZ /制御/ IFRAME/hollard/report_sub.phpライン上に522

私は考えることができる唯一のことは、その原因コード、それを複製しています2番目のコードに競合があります。

PSは私がIsNullOrEmptyString機能がすでに定義されている

答えて

0

コードを小さくするPOSTコードの一部を削除しました。そのエラーを回避するには

、使用:

if (!function_exists('IsNullOrEmptyString')) { 
    function IsNullOrEmptyString($question){ 
     return (!isset($question) || trim($question)===''); 
    } 
} 

あなたはこのエラーを取得しているなぜあなたは上で、いくつかの注意を払う必要がありますが。通常、アプリケーションロジックに何か問題があることを示します。

コードを入力することは決してお勧めできません。共通/同一部品を見て、別々の機能として抽出してください。

関連する問題