diff options
author | Thomas Mueller <thomas.mueller@tmit.eu> | 2013-05-15 23:43:46 +0200 |
---|---|---|
committer | Thomas Mueller <thomas.mueller@tmit.eu> | 2013-05-15 23:43:46 +0200 |
commit | 5dcec346e54d63b41906bd2b77cb92d77aa52780 (patch) | |
tree | a5023fafaa48c59db5fb11cbe5a09cbd0e20ff68 | |
parent | d91161186b87965eab165ea536e026dde47df88a (diff) | |
parent | dfddaf8fbf5ff515f26ff462c7ba6166b3d0ed18 (diff) | |
download | nextcloud-server-5dcec346e54d63b41906bd2b77cb92d77aa52780.tar.gz nextcloud-server-5dcec346e54d63b41906bd2b77cb92d77aa52780.zip |
Merge branch 'master' into fix-3353
-rwxr-xr-x | autotest.sh | 7 | ||||
-rw-r--r-- | lib/files/filesystem.php | 5 | ||||
-rw-r--r-- | lib/vobject/compoundproperty.php | 70 | ||||
-rw-r--r-- | tests/lib/vobject.php | 19 |
4 files changed, 99 insertions, 2 deletions
diff --git a/autotest.sh b/autotest.sh index fdf6d2fe098..267815e96d8 100755 --- a/autotest.sh +++ b/autotest.sh @@ -90,7 +90,12 @@ function execute_tests { rm -rf coverage-html-$1 mkdir coverage-html-$1 php -f enable_all.php - phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 + if [ "$1" == "pgsql" ] ; then + # no coverage with pg - causes segfault on ci.tmit.eu - reason unknown + phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml + else + phpunit --configuration phpunit-autotest.xml --log-junit autotest-results-$1.xml --coverage-clover autotest-clover-$1.xml --coverage-html coverage-html-$1 + fi } # diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index eadd8a93faf..d60d430d77c 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -222,7 +222,10 @@ class Filesystem { return false; } self::$defaultInstance = new View($root); - self::$mounts = new Mount\Manager(); + + if(!self::$mounts) { + self::$mounts = new Mount\Manager(); + } //load custom mount config self::initMountPoints($user); diff --git a/lib/vobject/compoundproperty.php b/lib/vobject/compoundproperty.php new file mode 100644 index 00000000000..d702ab802e0 --- /dev/null +++ b/lib/vobject/compoundproperty.php @@ -0,0 +1,70 @@ +<?php +/** + * ownCloud - VObject Compound Property + * + * @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() to not + * double escape commas and semi-colons in compound properties. +*/ +class CompoundProperty extends \Sabre\VObject\Property\Compound { + + /** + * 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', + ); + $str.=':' . str_replace($src, $out, $this->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; + + } + +}
\ No newline at end of file diff --git a/tests/lib/vobject.php b/tests/lib/vobject.php index 1103a4b3297..f28d22a1fcd 100644 --- a/tests/lib/vobject.php +++ b/tests/lib/vobject.php @@ -10,10 +10,29 @@ class Test_VObject extends PHPUnit_Framework_TestCase { public function setUp() { Sabre\VObject\Property::$classMap['SUMMARY'] = 'OC\VObject\StringProperty'; + Sabre\VObject\Property::$classMap['ORG'] = 'OC\VObject\CompoundProperty'; } function testStringProperty() { $property = Sabre\VObject\Property::create('SUMMARY', 'Escape;this,please'); $this->assertEquals("SUMMARY:Escape\;this\,please\r\n", $property->serialize()); } + + function testCompoundProperty() { + + $arr = array( + 'ABC, Inc.', + 'North American Division', + 'Marketing;Sales', + ); + + $property = Sabre\VObject\Property::create('ORG'); + $property->setParts($arr); + + $this->assertEquals('ABC\, Inc.;North American Division;Marketing\;Sales', $property->value); + $this->assertEquals('ORG:ABC\, Inc.;North American Division;Marketing\;Sales' . "\r\n", $property->serialize()); + $this->assertEquals(3, count($property->getParts())); + $parts = $property->getParts(); + $this->assertEquals('Marketing;Sales', $parts[2]); + } }
\ No newline at end of file |