Add OC\VObject\StringProperty. Partial fix for owncloud/apps#762
parent
5fe5e1e17e
commit
ae9548bc6e
@ -0,0 +1,80 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud - VObject String Property |
||||
* |
||||
* This class adds escaping of simple string properties. |
||||
* |
||||
* @author Thomas Tanghus |
||||
* @author Evert Pot (http://www.rooftopsolutions.nl/) |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
* License as published by the Free Software Foundation; either |
||||
* version 3 of the License, or any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public |
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\VObject; |
||||
|
||||
/** |
||||
* This class overrides \Sabre\VObject\Property::serialize() properly |
||||
* escape commas and semi-colons in string properties. |
||||
*/ |
||||
class StringProperty extends \Sabre\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; |
||||
|
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue