From: Gunnar Wrobel
Date: Mon, 22 Mar 2010 15:11:58 +0000 (+0100)
Subject: Start spliting the namespace driver into the three subtypes needed. First one is...
X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=75e12f34d697a0010aed459c02a186bead1c9998;p=horde.git
Start spliting the namespace driver into the three subtypes needed. First one is the fixed implementation.
---
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php
index f51489628..7e9892e52 100644
--- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Driver.php
@@ -53,7 +53,7 @@ abstract class Horde_Kolab_Storage_Driver
*/
public function getNamespace()
{
- return new Horde_Kolab_Storage_Namespace();
+ return new Horde_Kolab_Storage_Namespace_Fixed();
}
}
\ No newline at end of file
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
index 8442e4e68..a5ef5ca8f 100644
--- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace.php
@@ -27,7 +27,7 @@
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Storage
*/
-class Horde_Kolab_Storage_Namespace
+abstract class Horde_Kolab_Storage_Namespace
{
/** The possible namespace types (RFC 2342 [5]) */
const PRIV = 'private';
@@ -39,7 +39,7 @@ class Horde_Kolab_Storage_Namespace
*
* @var array
*/
- private $_namespaces = array(
+ protected $_namespaces = array(
self::PRIV => array(
'INBOX' => '/',
),
@@ -56,14 +56,14 @@ class Horde_Kolab_Storage_Namespace
*
* @var string
*/
- private $_charset;
+ protected $_charset;
/**
* A prefix in the shared namespaces that will be ignored/removed.
*
* @var string
*/
- private $_sharedPrefix;
+ protected $_sharedPrefix;
/**
* Indicates the personal namespace that the class will use to create new
@@ -71,17 +71,7 @@ class Horde_Kolab_Storage_Namespace
*
* @var string
*/
- private $_primaryPersonalNamespace;
-
- /**
- * Constructor.
- */
- public function __construct()
- {
- $this->_charset = Horde_Nls::getCharset();
- $this->_sharedPrefix = 'shared.';
- $this->_primaryPersonalNamespace = 'INBOX';
- }
+ protected $_primaryPersonalNamespace;
/**
* Match a folder name with the corresponding namespace.
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace/Fixed.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace/Fixed.php
new file mode 100644
index 000000000..01eb8ae4a
--- /dev/null
+++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Namespace/Fixed.php
@@ -0,0 +1,72 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+
+/**
+ * The Horde_Kolab_Storage_Namespace_Fixed:: implements the default IMAP
+ * namespaces on the Kolab server.
+ *
+ * Copyright 2004-2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Kolab
+ * @package Kolab_Storage
+ * @author Gunnar Wrobel
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Storage
+ */
+class Horde_Kolab_Storage_Namespace_Fixed
+extends Horde_Kolab_Storage_Namespace
+{
+ /**
+ * The namespaces.
+ *
+ * @var array
+ */
+ protected $_namespaces = array(
+ self::PRIV => array(
+ 'INBOX' => '/',
+ ),
+ self::OTHER => array(
+ 'user' => '/',
+ ),
+ self::SHARED => array(
+ '' => '/',
+ ),
+ );
+
+ /**
+ * A prefix in the shared namespaces that will be ignored/removed.
+ *
+ * @var string
+ */
+ protected $_sharedPrefix = 'shared.';
+
+ /**
+ * Indicates the personal namespace that the class will use to create new
+ * folders.
+ *
+ * @var string
+ */
+ protected $_primaryPersonalNamespace = 'INBOX';
+
+ /**
+ * Constructor.
+ */
+ public function __construct()
+ {
+ $this->_charset = Horde_Nls::getCharset();
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Storage/package.xml b/framework/Kolab_Storage/package.xml
index 855236b70..74d52cddc 100644
--- a/framework/Kolab_Storage/package.xml
+++ b/framework/Kolab_Storage/package.xml
@@ -80,6 +80,9 @@
+
+
+
@@ -189,6 +192,7 @@
+
diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/NamespaceTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/NamespaceTest.php
index 5a24eedb4..519cb6a3b 100644
--- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/NamespaceTest.php
+++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/NamespaceTest.php
@@ -41,28 +41,28 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testFolderTitleIsEmptyForPrivateNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('INBOX');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('', $folder->getTitle());
}
public function testFolderTitleDoesNotContainPrivateNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('INBOX/test');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test', $folder->getTitle());
}
public function testFolderTitleOfOtherUserDoesNotContainUserPrefixAndOtherUserName()
{
$folder = new Horde_Kolab_Storage_Folder('user/test/his_folder');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('his_folder', $folder->getTitle());
}
public function testFolderTitleReplacesSeparatorWithDoubleColon()
{
$folder = new Horde_Kolab_Storage_Folder('INBOX/test/sub');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test:sub', $folder->getTitle());
}
@@ -71,7 +71,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
Horde_Nls::setCharset('UTF8');
$name = Horde_String::convertCharset('äöü', 'UTF8', 'UTF7-IMAP');
$folder = new Horde_Kolab_Storage_Folder('INBOX/' . $name);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('äöü', $folder->getTitle());
}
@@ -79,7 +79,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
$_SESSION['horde_auth']['userId'] = 'test';
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('test');
$this->assertEquals('test', $folder->getTitle());
}
@@ -88,7 +88,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
$_SESSION['horde_auth']['userId'] = 'test';
$folder = new Horde_Kolab_Storage_Folder('INBOX');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test', $folder->getOwner());
}
@@ -96,28 +96,28 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
$_SESSION['horde_auth']['userId'] = 'test';
$folder = new Horde_Kolab_Storage_Folder('INBOX/mine');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test', $folder->getOwner());
}
public function testFolderOwnerIsOtherUserIfPrefixMatchesOtherNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('user/test');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test', $folder->getOwner());
}
public function testFolderOwnerIsOtherUserIfPrefixContainsOtherNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('user/test/mine');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test', $folder->getOwner());
}
public function testFolderOwnerIsAnonymousIfPrefixContainsSharedNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('shared.test');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('anonymous', $folder->getOwner());
}
@@ -125,7 +125,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
$_SESSION['horde_auth']['userId'] = 'test';
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('test');
$this->assertEquals('test', $folder->getOwner());
}
@@ -134,21 +134,21 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
$_SESSION['horde_auth']['userId'] = 'test@example.com';
$folder = new Horde_Kolab_Storage_Folder('user/test/mine');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test@example.com', $folder->getOwner());
}
public function testFolderOwnerHasDomainFromCurrentUserIfNoFolderDomain()
{
$folder = new Horde_Kolab_Storage_Folder('user/test/mine@example.com');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('test@example.com', $folder->getOwner());
}
public function testSetnameDoesAddDefaultPersonalNamespace()
{
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('test:this');
$this->assertEquals('INBOX/test/this', $folder->getName());
}
@@ -156,7 +156,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testSetnameReplacesDoubleColonWithSeparator()
{
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('a:b:c');
$this->assertEquals('INBOX/a/b/c', $folder->getName());
}
@@ -165,7 +165,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
{
Horde_Nls::setCharset('UTF8');
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('äöü');
$this->assertEquals(
'INBOX/äöü',
@@ -176,7 +176,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testSetnameAllowsCreatingFoldersInSharedNamespace()
{
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('shared.test');
$this->assertEquals('shared.test', $folder->getName());
}
@@ -184,7 +184,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testSetnameAllowsCreatingFoldersInOthersNamespace()
{
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('user:test:test');
$this->assertEquals('user/test/test', $folder->getName());
}
@@ -192,7 +192,7 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testFolderSubpathIsAccessibleForNewFolders()
{
$folder = new Horde_Kolab_Storage_Folder(null);
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$folder->setName('test');
$this->assertEquals('test', $folder->getSubpath());
}
@@ -200,21 +200,21 @@ class Horde_Kolab_Storage_NamespaceTest extends PHPUnit_Framework_TestCase
public function testFolderSubpathDoesNotContainUsernameIfPrefixContainsOtherNamespace()
{
$folder = new Horde_Kolab_Storage_Folder('user/test/mine');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('mine', $folder->getSubpath());
}
public function testFolderSubpathReturnsSubpathWithoutNamespacePrefix()
{
$folder = new Horde_Kolab_Storage_Folder('INBOX/a/b');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('a/b', $folder->getSubpath());
}
public function testFolderSubpathReturnsSubpathWithoutSharedPrefix()
{
$folder = new Horde_Kolab_Storage_Folder('shared.a/b');
- $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace());
+ $folder->restore($this->_storage, $this->_connection, new Horde_Kolab_Storage_Namespace_Fixed());
$this->assertEquals('a/b', $folder->getSubpath());
}
}
\ No newline at end of file