summaryrefslogtreecommitdiffstats
path: root/library/SSRS/Object/Abstract.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/SSRS/Object/Abstract.php')
-rwxr-xr-xlibrary/SSRS/Object/Abstract.php22
1 files changed, 17 insertions, 5 deletions
diff --git a/library/SSRS/Object/Abstract.php b/library/SSRS/Object/Abstract.php
index 40482a0..4658b48 100755
--- a/library/SSRS/Object/Abstract.php
+++ b/library/SSRS/Object/Abstract.php
@@ -19,12 +19,10 @@ class SSRS_Object_Abstract {
}
public function setData($data) {
- if ($data instanceof stdClass) {
- $data = get_object_vars($data);
- }
+ $clean = $this->_sanitizeData($data);
- if (is_array($data)) {
- foreach ($data AS $key => $value) {
+ if (is_array($clean)) {
+ foreach ($clean AS $key => $value) {
$this->$key = $value;
}
}
@@ -41,6 +39,20 @@ class SSRS_Object_Abstract {
}
}
+ protected function _sanitizeData($data, $recursive = false) {
+ if (is_object($data)) {
+ $data = get_object_vars($data);
+ }
+
+ if ($recursive && is_array($data)) {
+ foreach ($data AS $key => $value) {
+ $data[$key] = $this->_sanitizeData($value);
+ }
+ }
+
+ return $data;
+ }
+
public function __get($key) {
return isset($this->data[$key]) ? $this->data[$key] : null;
}