Browse Source
Add OC\VObject\StringProperty. Partial fix for owncloud/apps#762
remotes/origin/stable6
Add OC\VObject\StringProperty. Partial fix for owncloud/apps#762
remotes/origin/stable6
1 changed files with 80 additions and 0 deletions
@ -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; |
|||
|
|||
} |
|||
|
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue