DHL-PHP-SDK  v0.4
A wrapper for the DHL-XML-API Version 2
Response.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Petschko\DHL;
4 
21 class Response extends Version implements LabelResponse {
34  const DHL_ERROR_NOT_SET = -1;
35  const DHL_ERROR_NO_ERROR = 0;
38  const DHL_ERROR_GENERAL = 1000;
39  const DHL_ERROR_AUTH_FAILED = 1001;
42 
48  private $manifestData = null;
49 
64  private $statusCode = self::DHL_ERROR_NOT_SET;
65 
71  private $statusText = null;
72 
78  private $statusMessage = null;
79 
85  private $labelData = array();
86 
95  public function __construct($version, $response = null) {
96  parent::__construct($version);
97 
98  if($response !== null) {
99  switch($this->getMayor()) {
100  case 1:
101  trigger_error('[DHL-PHP-SDK]: Called Version 1 Method ' .__CLASS__ . '->' . __METHOD__ . ' is incomplete (does nothing)!', E_USER_WARNING);
102  break;
103  case 2:
104  default:
105  $this->loadResponse_v2($response);
106  }
107  }
108  }
109 
113  public function __destruct() {
114  parent::__destruct();
115  unset($this->manifestData);
116  unset($this->statusCode);
117  unset($this->statusText);
118  unset($this->statusMessage);
119  unset($this->labelData);
120  }
121 
127  public function getShipmentNumber() {
128  if($this->countLabelData() > 0)
129  return $this->getLabelData(0)->getShipmentNumber();
130 
131  return null;
132  }
133 
141  public function getPieceNumber() {
142  trigger_error('[DHL-PHP-SDK]: Version 1 Methods are deprecated and will removed soon (Called method ' . __METHOD__ . ')!', E_USER_DEPRECATED);
143 
144  return null;
145  }
146 
152  public function getLabel() {
153  if($this->countLabelData() > 0)
154  return $this->getLabelData(0)->getLabel();
155 
156  return null;
157  }
158 
164  public function getReturnLabel() {
165  if($this->countLabelData() > 0)
166  return $this->getLabelData(0)->getReturnLabel();
167 
168  return null;
169  }
170 
176  public function getExportDoc() {
177  if($this->countLabelData() > 0)
178  return $this->getLabelData(0)->getExportDoc();
179 
180  return null;
181  }
182 
188  public function getManifestData() {
189  return $this->manifestData;
190  }
191 
197  private function setManifestData($manifestData) {
198  $this->manifestData = $manifestData;
199  }
200 
206  public function getSequenceNumber() {
207  if($this->countLabelData() > 0)
208  return $this->getLabelData(0)->getSequenceNumber();
209 
210  return null;
211  }
212 
227  public function getStatusCode() {
228  return $this->statusCode;
229  }
230 
245  private function setStatusCode($statusCode) {
246  $this->statusCode = $statusCode;
247  }
248 
254  public function getStatusText() {
255  return $this->statusText;
256  }
257 
263  private function setStatusText($statusText) {
264  $this->statusText = $statusText;
265  }
266 
272  public function getStatusMessage() {
273  return $this->statusMessage;
274  }
275 
281  private function setStatusMessage($statusMessage) {
282  $this->statusMessage = $statusMessage;
283  }
284 
291  public function getLabelData($index = null) {
292  if($index === null)
293  return $this->labelData;
294  else
295  return $this->labelData[$index];
296  }
297 
303  private function addLabelData($labelData) {
304  $this->labelData[] = $labelData;
305  }
306 
312  public function countLabelData() {
313  return count($this->getLabelData());
314  }
315 
319  private function validateStatusCode() {
320  if($this->getStatusCode() === 0 && $this->getStatusText() !== 'ok')
321  $this->setStatusCode(self::DHL_ERROR_WEAK_WARNING);
322  }
323 
329  public function getCodLabel() {
330  if($this->countLabelData() > 0)
331  return $this->getLabelData(0)->getCodLabel();
332 
333  return null;
334  }
335 
341  private function handleMultiShipments($possibleMultiLabelObject) {
342  if(is_array($possibleMultiLabelObject)) {
343  $multiLabelArray = $possibleMultiLabelObject;
344 
345  foreach($multiLabelArray as &$singleLabel)
346  $this->addLabelData(new LabelData($this->getVersion(), $singleLabel));
347  } else
348  $this->addLabelData(new LabelData($this->getVersion(), $possibleMultiLabelObject));
349  }
350 
356  private function loadResponse_v2($response) {
357  // Set global Status-Values first
358  if(isset($response->Status)) {
359  if(isset($response->Status->statusCode))
360  $this->setStatusCode((int) $response->Status->statusCode);
361  if(isset($response->Status->statusText)) {
362  if(is_array($response->Status->statusText))
363  $this->setStatusText(implode(';', $response->Status->statusText));
364  else
365  $this->setStatusText($response->Status->statusText);
366  }
367  if(isset($response->Status->statusMessage)) {
368  if(is_array($response->Status->statusMessage))
369  $this->setStatusMessage(implode(';', $response->Status->statusMessage));
370  else
371  $this->setStatusMessage($response->Status->statusMessage);
372  }
373 
374  $this->validateStatusCode();
375  }
376 
377  // Set Manifest if exists (getManifest)
378  if(isset($response->manifestData)) {
379  $this->setManifestData($response->manifestData);
380 
381  return;
382  }
383 
384  /*
385  * Handle Shipment(s) | Calls on:
386  * 1 -> createShipmentOrder
387  * 2 -> deleteShipmentOrder
388  * 3 -> updateShipmentOrder [Only Single]
389  * 3 -> getLabel
390  * 4 -> validateShipment
391  * 5 -> getExportDoc
392  * 6 -> doManifest
393  */
394  if(isset($response->CreationState)) // 1
395  $this->handleMultiShipments($response->CreationState);
396  else if(isset($response->DeletionState)) // 2
397  $this->handleMultiShipments($response->DeletionState);
398  else if(isset($response->LabelData)) // 3
399  $this->handleMultiShipments($response->LabelData);
400  else if(isset($response->ValidationState)) // 4
401  $this->handleMultiShipments($response->ValidationState);
402  else if(isset($response->ExportDocData)) // 5
403  $this->handleMultiShipments($response->ExportDocData);
404  else if(isset($response->ManifestState)) // 6
405  $this->handleMultiShipments($response->ManifestState);
406  }
407 }
const DHL_ERROR_SERVICE_TMP_NOT_AVAILABLE
Definition: Response.php:37
__construct($version, $response=null)
Definition: Response.php:95
$version
Definition: test.php:17
getLabelData($index=null)
Definition: Response.php:291
const DHL_ERROR_UNKNOWN_SHIPMENT_NUMBER
Definition: Response.php:41
$response
Definition: test.php:90
const DHL_ERROR_HARD_VAL_ERROR
Definition: Response.php:40
const DHL_ERROR_WEAK_WARNING
Definition: Response.php:36
const DHL_ERROR_AUTH_FAILED
Definition: Response.php:39