diff options
author | Simon Rettberg | 2018-04-05 15:08:52 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-04-05 15:08:52 +0200 |
commit | b409fbb72591b43df7431e83e30d6c00ea633f21 (patch) | |
tree | e16963094d5189c24220bf8331a054e8be33325b /modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php | |
parent | [locationinfo] Fix color of seat counter not updating properly (diff) | |
download | slx-admin-b409fbb72591b43df7431e83e30d6c00ea633f21.tar.gz slx-admin-b409fbb72591b43df7431e83e30d6c00ea633f21.tar.xz slx-admin-b409fbb72591b43df7431e83e30d6c00ea633f21.zip |
[locationinfo] Add exchange backend
Closes #3170
Diffstat (limited to 'modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php')
-rw-r--r-- | modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php b/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php new file mode 100644 index 00000000..89a25556 --- /dev/null +++ b/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Type.php @@ -0,0 +1,45 @@ +<?php +/** + * Contains \jamesiarmes\PhpEws\Type. + */ + +namespace jamesiarmes\PhpEws; + +/** + * Base class for Exchange Web Service Types. + * + * @package php-ews\Type + */ +abstract class Type +{ + /** + * Clones any object properties on a type object when it is cloned. Allows + * for a deep clone required when using object to represent data types when + * making a SOAP call. + */ + public function __clone() + { + // Iterate over all properties on the current object. + foreach (get_object_vars($this) as $property => $value) { + // If the value of the property is an object then clone it. + if (is_object($value)) { + $this->$property = clone $value; + } elseif (is_array($value)) { + // The value is an array that may use objects as values. Iterate + // over the array and clone any values that are objects into a + // new array. + // For some reason, if we try to set $this->$property to an + // empty array then update it as we go it ends up being empty. + // If we use a new array that we then set as the value of + // $this->$property all is well. + $new_value = array(); + foreach ($value as $index => $array_value) { + $new_value[$index] = (is_object($array_value) ? clone $array_value : $array_value); + } + + // Set the property to the new array. + $this->$property = $new_value; + } + } + } +} |