Commit 587fa357 authored by Sebastian Kummer's avatar Sebastian Kummer

Merge pull request #353 in ZP/z-push from...

Merge pull request #353 in ZP/z-push from bugfix/ZP-806-add-braces-to-force-desired-interpretation to feature/ZP-804-php-7-compatibility

* commit '0787b58d':
  ZP-806 Added curly braces {} to all calls in the format of $this->$a[b] so interpreter will treat as $this->{$a[b]}. Released under the Affero GNU General Public License (AGPL) version 3.
  ZP-806 Added curly braces {} to all calls in the format of $this->$a[b] so interpreter will treat as $this->{$a[b]}. Released under the Affero GNU General Public License (AGPL) version 3.
parents 2769fa7b 0787b58d
......@@ -111,16 +111,16 @@ class Streamer implements Serializable {
if(! ($entity[EN_FLAGS] & EN_FLAGS_CONTENT)) {
$map = $this->mapping[$entity[EN_TAG]];
if (isset($map[self::STREAMER_ARRAY])) {
$this->$map[self::STREAMER_VAR] = array();
$this->{$map[self::STREAMER_VAR]} = array();
}
else if (isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_SEND_EMPTY) {
$this->$map[self::STREAMER_VAR] = "1";
$this->{$map[self::STREAMER_VAR]} = "1";
}
else if(!isset($map[self::STREAMER_TYPE])) {
$this->$map[self::STREAMER_VAR] = "";
$this->{$map[self::STREAMER_VAR]} = "";
}
else if ($map[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE || $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE_DASHES ) {
$this->$map[self::STREAMER_VAR] = "";
$this->{$map[self::STREAMER_VAR]} = "";
}
continue;
}
......@@ -151,10 +151,10 @@ class Streamer implements Serializable {
$decoded = $decoder->getElementContent();
}
if(!isset($this->$map[self::STREAMER_VAR]))
$this->$map[self::STREAMER_VAR] = array($decoded);
if(!isset($this->{$map[self::STREAMER_VAR]}))
$this->{$map[self::STREAMER_VAR]} = array($decoded);
else
array_push($this->$map[self::STREAMER_VAR], $decoded);
array_push($this->{$map[self::STREAMER_VAR]}, $decoded);
if(!$decoder->getElementEndTag()) //end tag of a container element
return false;
......@@ -232,7 +232,7 @@ class Streamer implements Serializable {
}
}
// $decoded now contains data object (or string)
$this->$map[self::STREAMER_VAR] = $decoded;
$this->{$map[self::STREAMER_VAR]} = $decoded;
}
}
}
......@@ -258,13 +258,13 @@ class Streamer implements Serializable {
// A return value if anything was streamed. We need for empty tags.
$streamed = false;
foreach($this->mapping as $tag => $map) {
if(isset($this->$map[self::STREAMER_VAR])) {
if(isset($this->{$map[self::STREAMER_VAR]})) {
// Variable is available
if(is_object($this->$map[self::STREAMER_VAR])) {
if(is_object($this->{$map[self::STREAMER_VAR]})) {
// Subobjects can do their own encoding
if ($this->$map[self::STREAMER_VAR] instanceof Streamer) {
if ($this->{$map[self::STREAMER_VAR]} instanceof Streamer) {
$encoder->startTag($tag);
$res = $this->$map[self::STREAMER_VAR]->Encode($encoder);
$res = $this->{$map[self::STREAMER_VAR]}->Encode($encoder);
$encoder->endTag();
// nothing was streamed in previous encode but it should be streamed empty anyway
if (!$res && isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_SEND_EMPTY)
......@@ -275,7 +275,7 @@ class Streamer implements Serializable {
}
// Array of objects
else if(isset($map[self::STREAMER_ARRAY])) {
if (empty($this->$map[self::STREAMER_VAR]) && isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_SEND_EMPTY) {
if (empty($this->{$map[self::STREAMER_VAR]}) && isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_SEND_EMPTY) {
$encoder->startTag($tag, false, true);
}
else {
......@@ -284,7 +284,7 @@ class Streamer implements Serializable {
if (!isset($map[self::STREAMER_PROP]) || $map[self::STREAMER_PROP] != self::STREAMER_TYPE_NO_CONTAINER)
$encoder->startTag($tag);
foreach ($this->$map[self::STREAMER_VAR] as $element) {
foreach ($this->{$map[self::STREAMER_VAR]} as $element) {
if(is_object($element)) {
$encoder->startTag($map[self::STREAMER_ARRAY]); // Outputs object container (eg Attachment)
$element->Encode($encoder);
......@@ -313,7 +313,7 @@ class Streamer implements Serializable {
}
if ($encoder->getMultipart() && isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_MULTIPART) {
$encoder->addBodypartStream($this->$map[self::STREAMER_VAR]);
$encoder->addBodypartStream($this->{$map[self::STREAMER_VAR]});
$encoder->startTag(SYNC_ITEMOPERATIONS_PART);
$encoder->content($encoder->getBodypartsCount());
$encoder->endTag();
......@@ -321,7 +321,7 @@ class Streamer implements Serializable {
}
// Simple type
if(!isset($map[self::STREAMER_TYPE]) && strlen($this->$map[self::STREAMER_VAR]) == 0) {
if(!isset($map[self::STREAMER_TYPE]) && strlen($this->{$map[self::STREAMER_VAR]}) == 0) {
// send empty tags
if (isset($map[self::STREAMER_PROP]) && $map[self::STREAMER_PROP] == self::STREAMER_TYPE_SEND_EMPTY)
$encoder->startTag($tag, false, true);
......@@ -332,26 +332,26 @@ class Streamer implements Serializable {
$encoder->startTag($tag);
if(isset($map[self::STREAMER_TYPE]) && ($map[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE || $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE_DASHES)) {
if($this->$map[self::STREAMER_VAR] != 0) // don't output 1-1-1970
$encoder->content($this->formatDate($this->$map[self::STREAMER_VAR], $map[self::STREAMER_TYPE]));
if($this->{$map[self::STREAMER_VAR]} != 0) // don't output 1-1-1970
$encoder->content($this->formatDate($this->{$map[self::STREAMER_VAR]}, $map[self::STREAMER_TYPE]));
}
else if(isset($map[self::STREAMER_TYPE]) && $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_HEX) {
$encoder->content(strtoupper(bin2hex($this->$map[self::STREAMER_VAR])));
$encoder->content(strtoupper(bin2hex($this->{$map[self::STREAMER_VAR]})));
}
else if(isset($map[self::STREAMER_TYPE]) && $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASPLAIN) {
$encoder->contentStream($this->$map[self::STREAMER_VAR], false);
$encoder->contentStream($this->{$map[self::STREAMER_VAR]}, false);
}
else if(isset($map[self::STREAMER_TYPE]) && ($map[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASBASE64 || $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM)) {
$encoder->contentStream($this->$map[self::STREAMER_VAR], true);
$encoder->contentStream($this->{$map[self::STREAMER_VAR]}, true);
}
// implode comma or semicolon arrays into a string
else if(isset($map[self::STREAMER_TYPE]) && is_array($this->$map[self::STREAMER_VAR]) &&
else if(isset($map[self::STREAMER_TYPE]) && is_array($this->{$map[self::STREAMER_VAR]}) &&
($map[self::STREAMER_TYPE] == self::STREAMER_TYPE_COMMA_SEPARATED || $map[self::STREAMER_TYPE] == self::STREAMER_TYPE_SEMICOLON_SEPARATED)) {
$glue = ($map[self::STREAMER_TYPE] == self::STREAMER_TYPE_COMMA_SEPARATED)?", ":"; ";
$encoder->content(implode($glue, $this->$map[self::STREAMER_VAR]));
$encoder->content(implode($glue, $this->{$map[self::STREAMER_VAR]}));
}
else {
$encoder->content($this->$map[self::STREAMER_VAR]);
$encoder->content($this->{$map[self::STREAMER_VAR]});
}
$encoder->endTag();
$streamed = true;
......@@ -373,12 +373,12 @@ class Streamer implements Serializable {
*/
public function StripData() {
foreach ($this->mapping as $k=>$v) {
if (isset($this->$v[self::STREAMER_VAR])) {
if (is_object($this->$v[self::STREAMER_VAR]) && method_exists($this->$v[self::STREAMER_VAR], "StripData") ) {
$this->$v[self::STREAMER_VAR]->StripData();
if (isset($this->{$v[self::STREAMER_VAR]})) {
if (is_object($this->{$v[self::STREAMER_VAR]}) && method_exists($this->{$v[self::STREAMER_VAR]}, "StripData") ) {
$this->{$v[self::STREAMER_VAR]}->StripData();
}
else if (isset($v[self::STREAMER_ARRAY]) && !empty($this->$v[self::STREAMER_VAR])) {
foreach ($this->$v[self::STREAMER_VAR] as $element) {
else if (isset($v[self::STREAMER_ARRAY]) && !empty($this->{$v[self::STREAMER_VAR]})) {
foreach ($this->{$v[self::STREAMER_VAR]} as $element) {
if (is_object($element) && method_exists($element, "StripData") ) {
$element->StripData();
}
......@@ -400,8 +400,8 @@ class Streamer implements Serializable {
public function serialize() {
$values = array();
foreach ($this->mapping as $k=>$v) {
if (isset($this->$v[self::STREAMER_VAR]))
$values[$v[self::STREAMER_VAR]] = serialize($this->$v[self::STREAMER_VAR]);
if (isset($this->{$v[self::STREAMER_VAR]}))
$values[$v[self::STREAMER_VAR]] = serialize($this->{$v[self::STREAMER_VAR]});
}
return serialize($values);
......
......@@ -430,13 +430,13 @@ abstract class SyncObject extends Streamer {
foreach ($this->mapping as $k=>$v) {
// check sub-objects recursively
if (isset($v[self::STREAMER_TYPE]) && isset($this->$v[self::STREAMER_VAR])) {
if ($this->$v[self::STREAMER_VAR] instanceof SyncObject) {
if (! $this->$v[self::STREAMER_VAR]->Check($logAsDebug))
if (isset($v[self::STREAMER_TYPE]) && isset($this->{$v[self::STREAMER_VAR]})) {
if ($this->{$v[self::STREAMER_VAR]} instanceof SyncObject) {
if (! $this->{$v[self::STREAMER_VAR]}->Check($logAsDebug))
return false;
}
else if (is_array($this->$v[self::STREAMER_VAR])) {
foreach ($this->$v[self::STREAMER_VAR] as $subobj)
else if (is_array($this->{$v[self::STREAMER_VAR]})) {
foreach ($this->{$v[self::STREAMER_VAR]} as $subobj)
if ($subobj instanceof SyncObject && !$subobj->Check($logAsDebug))
return false;
}
......@@ -445,33 +445,33 @@ abstract class SyncObject extends Streamer {
if (isset($v[self::STREAMER_CHECKS])) {
foreach ($v[self::STREAMER_CHECKS] as $rule => $condition) {
// check REQUIRED settings
if ($rule === self::STREAMER_CHECK_REQUIRED && (!isset($this->$v[self::STREAMER_VAR]) || $this->$v[self::STREAMER_VAR] === '' ) ) {
if ($rule === self::STREAMER_CHECK_REQUIRED && (!isset($this->{$v[self::STREAMER_VAR]}) || $this->{$v[self::STREAMER_VAR]} === '' ) ) {
// parameter is not set but ..
// requested to set to 0
if ($condition === self::STREAMER_CHECK_SETZERO) {
$this->$v[self::STREAMER_VAR] = 0;
$this->{$v[self::STREAMER_VAR]} = 0;
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to 0", $objClass, $v[self::STREAMER_VAR]));
}
// requested to be set to 1
else if ($condition === self::STREAMER_CHECK_SETONE) {
$this->$v[self::STREAMER_VAR] = 1;
$this->{$v[self::STREAMER_VAR]} = 1;
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to 1", $objClass, $v[self::STREAMER_VAR]));
}
// requested to be set to 2
else if ($condition === self::STREAMER_CHECK_SETTWO) {
$this->$v[self::STREAMER_VAR] = 2;
$this->{$v[self::STREAMER_VAR]} = 2;
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to 2", $objClass, $v[self::STREAMER_VAR]));
}
// requested to be set to ''
else if ($condition === self::STREAMER_CHECK_SETEMPTY) {
if (!isset($this->$v[self::STREAMER_VAR])) {
$this->$v[self::STREAMER_VAR] = '';
if (!isset($this->{$v[self::STREAMER_VAR]})) {
$this->{$v[self::STREAMER_VAR]} = '';
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to ''", $objClass, $v[self::STREAMER_VAR]));
}
}
// there is another value !== false
else if ($condition !== false) {
$this->$v[self::STREAMER_VAR] = $condition;
$this->{$v[self::STREAMER_VAR]} = $condition;
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to '%s'", $objClass, $v[self::STREAMER_VAR], $condition));
}
......@@ -484,19 +484,19 @@ abstract class SyncObject extends Streamer {
// check STREAMER_CHECK_ZEROORONE
if ($rule === self::STREAMER_CHECK_ZEROORONE && isset($this->$v[self::STREAMER_VAR])) {
if ($this->$v[self::STREAMER_VAR] != 0 && $this->$v[self::STREAMER_VAR] != 1) {
if ($rule === self::STREAMER_CHECK_ZEROORONE && isset($this->{$v[self::STREAMER_VAR]})) {
if ($this->{$v[self::STREAMER_VAR]} != 0 && $this->{$v[self::STREAMER_VAR]} != 1) {
$newval = $condition === self::STREAMER_CHECK_SETZERO ? 0:1;
$this->$v[self::STREAMER_VAR] = $newval;
$this->{$v[self::STREAMER_VAR]} = $newval;
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): Fixed object from type %s: parameter '%s' is set to '%s' as it was not 0 or 1", $objClass, $v[self::STREAMER_VAR], $newval));
}
}// end STREAMER_CHECK_ZEROORONE
// check STREAMER_CHECK_ONEVALUEOF
if ($rule === self::STREAMER_CHECK_ONEVALUEOF && isset($this->$v[self::STREAMER_VAR])) {
if (!in_array($this->$v[self::STREAMER_VAR], $condition)) {
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): object from type %s: parameter '%s'->'%s' is not in the range of allowed values.", $objClass, $v[self::STREAMER_VAR], $this->$v[self::STREAMER_VAR]));
if ($rule === self::STREAMER_CHECK_ONEVALUEOF && isset($this->{$v[self::STREAMER_VAR]})) {
if (!in_array($this->{$v[self::STREAMER_VAR]}, $condition)) {
ZLog::Write($defaultLogLevel, sprintf("SyncObject->Check(): object from type %s: parameter '%s'->'%s' is not in the range of allowed values.", $objClass, $v[self::STREAMER_VAR], $this->{$v[self::STREAMER_VAR]}));
return false;
}
}// end STREAMER_CHECK_ONEVALUEOF
......@@ -504,7 +504,7 @@ abstract class SyncObject extends Streamer {
// Check value compared to other value or literal
if ($rule === self::STREAMER_CHECK_CMPHIGHER || $rule === self::STREAMER_CHECK_CMPLOWER) {
if (isset($this->$v[self::STREAMER_VAR])) {
if (isset($this->{$v[self::STREAMER_VAR]})) {
$cmp = false;
// directly compare against literals
if (is_int($condition)) {
......@@ -525,8 +525,8 @@ abstract class SyncObject extends Streamer {
ZLog::Write(LOGLEVEL_WARN, sprintf("SyncObject->Check(): Unmet condition in object from type %s: parameter '%s' can not be compared, as the comparable is not set. Check failed!", $objClass, $v[self::STREAMER_VAR]));
return false;
}
if ( ($rule == self::STREAMER_CHECK_CMPHIGHER && $this->$v[self::STREAMER_VAR] < $cmp) ||
($rule == self::STREAMER_CHECK_CMPLOWER && $this->$v[self::STREAMER_VAR] > $cmp)
if ( ($rule == self::STREAMER_CHECK_CMPHIGHER && $this->{$v[self::STREAMER_VAR]} < $cmp) ||
($rule == self::STREAMER_CHECK_CMPLOWER && $this->{$v[self::STREAMER_VAR]} > $cmp)
) {
ZLog::Write(LOGLEVEL_WARN, sprintf("SyncObject->Check(): Unmet condition in object from type %s: parameter '%s' is %s than '%s'. Check failed!",
......@@ -541,14 +541,14 @@ abstract class SyncObject extends Streamer {
// check STREAMER_CHECK_LENGTHMAX
if ($rule === self::STREAMER_CHECK_LENGTHMAX && isset($this->$v[self::STREAMER_VAR])) {
if ($rule === self::STREAMER_CHECK_LENGTHMAX && isset($this->{$v[self::STREAMER_VAR]})) {
if (is_array($this->$v[self::STREAMER_VAR])) {
if (is_array($this->{$v[self::STREAMER_VAR]})) {
// implosion takes 2bytes, so we just assume ", " here
$chkstr = implode(", ", $this->$v[self::STREAMER_VAR]);
$chkstr = implode(", ", $this->{$v[self::STREAMER_VAR]});
}
else
$chkstr = $this->$v[self::STREAMER_VAR];
$chkstr = $this->{$v[self::STREAMER_VAR]};
if (strlen($chkstr) > $condition) {
ZLog::Write(LOGLEVEL_WARN, sprintf("SyncObject->Check(): object from type %s: parameter '%s' is longer than %d. Check failed", $objClass, $v[self::STREAMER_VAR], $condition));
......@@ -560,18 +560,18 @@ abstract class SyncObject extends Streamer {
// check STREAMER_CHECK_EMAIL
// if $condition is false then the check really fails. Otherwise invalid emails are removed.
// if nothing is left (all emails were false), the parameter is set to condition
if ($rule === self::STREAMER_CHECK_EMAIL && isset($this->$v[self::STREAMER_VAR])) {
if ($condition === false && ( (is_array($this->$v[self::STREAMER_VAR]) && empty($this->$v[self::STREAMER_VAR])) || strlen($this->$v[self::STREAMER_VAR]) == 0) )
if ($rule === self::STREAMER_CHECK_EMAIL && isset($this->{$v[self::STREAMER_VAR]})) {
if ($condition === false && ( (is_array($this->{$v[self::STREAMER_VAR]}) && empty($this->{$v[self::STREAMER_VAR]})) || strlen($this->{$v[self::STREAMER_VAR]}) == 0) )
continue;
$as_array = false;
if (is_array($this->$v[self::STREAMER_VAR])) {
$mails = $this->$v[self::STREAMER_VAR];
if (is_array($this->{$v[self::STREAMER_VAR]})) {
$mails = $this->{$v[self::STREAMER_VAR]};
$as_array = true;
}
else {
$mails = array( $this->$v[self::STREAMER_VAR] );
$mails = array( $this->{$v[self::STREAMER_VAR]} );
}
$output = array();
......@@ -592,9 +592,9 @@ abstract class SyncObject extends Streamer {
// if we are allowed to rewrite the attribute, we do that
if ($as_array)
$this->$v[self::STREAMER_VAR] = $output;
$this->{$v[self::STREAMER_VAR]} = $output;
else
$this->$v[self::STREAMER_VAR] = $output[0];
$this->{$v[self::STREAMER_VAR]} = $output[0];
}
}// end STREAMER_CHECK_EMAIL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment