. * */ namespace OCA\Contacts\VObject; use Sabre\VObject; /** * This class overrides \Sabre\VObject\Property::serialize() properly * escape commas and semi-colons in string properties. */ class StringProperty extends VObject\Property { /** * Turns the object back into a serialized blob. * * @return string */ public function serialize() { $str = $this->name; if ($this->group) { $str = $this->group . '.' . $this->name; } foreach($this->parameters as $param) { $str.=';' . $param->serialize(); } $src = array( '\\', "\n", ';', ',', ); $out = array( '\\\\', '\n', '\;', '\,', ); $value = strtr($this->value, array('\,' => ',', '\;' => ';', '\\\\' => '\\')); $str.=':' . str_replace($src, $out, $value); $out = ''; while(strlen($str) > 0) { if (strlen($str) > 75) { $out .= mb_strcut($str, 0, 75, 'utf-8') . "\r\n"; $str = ' ' . mb_strcut($str, 75, strlen($str), 'utf-8'); } else { $out .= $str . "\r\n"; $str = ''; break; } } return $out; } }