diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index e54d4d7b74fd43ea709bb55030c30f5000ae8b17..982351c589ebf4fea5f6d1e8e8e10d3d3af955ec 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -219,8 +219,11 @@ $(document).ready(function() {
 					$( '#uploadsize-message' ).dialog({
 						modal: true,
 						buttons: {
-							Close: function() {
-								$( this ).dialog( 'close' );
+							Close: {
+								text:t('files', 'Close'),
+								click:function() {
+									$( this ).dialog( 'close' );
+								}
 							}
 						}
 					});
diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 9cbb21ead0e6c39dbfd7b7651f22f3fa5547a83f..b2244c17c0eab53c58982b4cd0ad8526014c944e 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -79,7 +79,13 @@ abstract class Access {
 		if(isset($result[$attr]) && $result[$attr]['count'] > 0) {
 			$values = array();
 			for($i=0;$i<$result[$attr]['count'];$i++) {
-				$values[] = $this->resemblesDN($attr) ? $this->sanitizeDN($result[$attr][$i]) : $result[$attr][$i];
+				if($this->resemblesDN($attr)) {
+					$values[] = $this->sanitizeDN($result[$attr][$i]);
+				} elseif(strtolower($attr) == 'objectguid') {
+					$values[] = $this->convertObjectGUID2Str($result[$attr][$i]);
+				} else {
+					$values[] = $result[$attr][$i];
+				}
 			}
 			return $values;
 		}
@@ -729,6 +735,34 @@ abstract class Access {
 		return $uuid;
 	}
 
+	/**
+	 * @brief converts a binary ObjectGUID into a string representation
+	 * @param $oguid the ObjectGUID in it's binary form as retrieved from AD
+	 * @returns String
+	 *
+	 * converts a binary ObjectGUID into a string representation
+	 * http://www.php.net/manual/en/function.ldap-get-values-len.php#73198
+	 */
+	private function convertObjectGUID2Str($oguid) {
+		$hex_guid = bin2hex($oguid);
+		$hex_guid_to_guid_str = '';
+		for($k = 1; $k <= 4; ++$k) {
+			$hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2);
+		}
+		$hex_guid_to_guid_str .= '-';
+		for($k = 1; $k <= 2; ++$k) {
+			$hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2);
+		}
+		$hex_guid_to_guid_str .= '-';
+		for($k = 1; $k <= 2; ++$k) {
+			$hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2);
+		}
+		$hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4);
+		$hex_guid_to_guid_str .= '-' . substr($hex_guid, 20);
+
+		return strtoupper($hex_guid_to_guid_str);
+	}
+
 	/**
 	 * @brief get a cookie for the next LDAP paged search
 	 * @param $filter the search filter to identify the correct search
diff --git a/core/setup.php b/core/setup.php
new file mode 100644
index 0000000000000000000000000000000000000000..1c03e3397aff29cd356da67f3d2e032a22bb7b8c
--- /dev/null
+++ b/core/setup.php
@@ -0,0 +1,53 @@
+<?php
+
+// Check for autosetup:
+$autosetup_file = OC::$SERVERROOT."/config/autoconfig.php";
+if( file_exists( $autosetup_file )) {
+	OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO);
+	include $autosetup_file;
+	$_POST['install'] = 'true';
+	$_POST = array_merge ($_POST, $AUTOCONFIG);
+	unlink($autosetup_file);
+}
+
+OC_Util::addScript('setup');
+
+$hasSQLite = (is_callable('sqlite_open') or class_exists('SQLite3'));
+$hasMySQL = is_callable('mysql_connect');
+$hasPostgreSQL = is_callable('pg_connect');
+$hasOracle = is_callable('oci_connect');
+$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
+
+// Test if  .htaccess is working
+$content = "deny from all";
+file_put_contents(OC::$SERVERROOT.'/data/.htaccess', $content);
+
+$opts = array(
+	'hasSQLite' => $hasSQLite,
+	'hasMySQL' => $hasMySQL,
+	'hasPostgreSQL' => $hasPostgreSQL,
+	'hasOracle' => $hasOracle,
+	'directory' => $datadir,
+	'secureRNG' => OC_Util::secureRNG_available(),
+	'htaccessWorking' => OC_Util::ishtaccessworking(),
+	'errors' => array(),
+);
+
+if(isset($_POST['install']) AND $_POST['install']=='true') {
+	// We have to launch the installation process :
+	$e = OC_Setup::install($_POST);
+	$errors = array('errors' => $e);
+
+	if(count($e) > 0) {
+		//OC_Template::printGuestPage("", "error", array("errors" => $errors));
+		$options = array_merge($_POST, $opts, $errors);
+		OC_Template::printGuestPage("", "installation", $options);
+	}
+	else {
+		header("Location: ".OC::$WEBROOT.'/');
+		exit();
+	}
+}
+else {
+	OC_Template::printGuestPage("", "installation", $opts);
+}
diff --git a/lib/base.php b/lib/base.php
index 50617081b1fa99020a07e2037dc0256b2c9f4f94..c97700b3dbfc311d197e8d1a31f8ab733c94bd8d 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -227,9 +227,7 @@ class OC{
 				if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) {
 					if(!OC_Util::ishtaccessworking()) {
 						if(!file_exists(OC::$SERVERROOT.'/data/.htaccess')) {
-							$content = "deny from all\n";
-							$content.= "IndexIgnore *";
-							file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content);
+							OC_Setup::protectDataDirectory();
 						}
 					}
 				}
@@ -481,17 +479,7 @@ class OC{
 	 */
 	public static function handleRequest() {
 		if (!OC_Config::getValue('installed', false)) {
-			// Check for autosetup:
-			$autosetup_file = OC::$SERVERROOT."/config/autoconfig.php";
-			if( file_exists( $autosetup_file )) {
-				OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO);
-				include $autosetup_file;
-				$_POST['install'] = 'true';
-				$_POST = array_merge ($_POST, $AUTOCONFIG);
-				unlink($autosetup_file);
-			}
-			OC_Util::addScript('setup');
-			require_once 'setup.php';
+			require_once 'core/setup.php';
 			exit();
 		}
 		// Handle WebDAV
diff --git a/lib/public/share.php b/lib/public/share.php
index 24de4dcd5b21f7f73046bd28f38058c3601e66e1..dcb1b5c278efdae59659df58cd88519864bb1c8d 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -548,7 +548,7 @@ class Share {
 					$itemTypes = $collectionTypes;
 				}
 				$placeholders = join(',', array_fill(0, count($itemTypes), '?'));
-				$where .= ' WHERE item_type IN ('.$placeholders.'))';
+				$where .= ' WHERE `item_type` IN ('.$placeholders.'))';
 				$queryArgs = $itemTypes;
 			} else {
 				$where = ' WHERE `item_type` = ?';
@@ -625,7 +625,7 @@ class Share {
 			$queryArgs[] = $item;
 			if ($includeCollections && $collectionTypes) {
 				$placeholders = join(',', array_fill(0, count($collectionTypes), '?'));
-				$where .= ' OR item_type IN ('.$placeholders.'))';
+				$where .= ' OR `item_type` IN ('.$placeholders.'))';
 				$queryArgs = array_merge($queryArgs, $collectionTypes);
 			}
 		}
@@ -673,6 +673,9 @@ class Share {
 		$root = strlen($root);
 		$query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit);
 		$result = $query->execute($queryArgs);
+		if (\OC_DB::isError($result)) {
+			\OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where, \OC_Log::ERROR);
+		}
 		$items = array();
 		$targets = array();
 		while ($row = $result->fetchRow()) {
diff --git a/lib/setup.php b/lib/setup.php
index 013ae2f6efc9422f82a599e6599a0928848237c5..264cd55795e575d0ed08853966157a59da71b814 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -1,45 +1,5 @@
 <?php
 
-$hasSQLite = (is_callable('sqlite_open') or class_exists('SQLite3'));
-$hasMySQL = is_callable('mysql_connect');
-$hasPostgreSQL = is_callable('pg_connect');
-$hasOracle = is_callable('oci_connect');
-$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
-
-// Test if  .htaccess is working
-$content = "deny from all";
-file_put_contents(OC::$SERVERROOT.'/data/.htaccess', $content);
-
-$opts = array(
-	'hasSQLite' => $hasSQLite,
-	'hasMySQL' => $hasMySQL,
-	'hasPostgreSQL' => $hasPostgreSQL,
-	'hasOracle' => $hasOracle,
-	'directory' => $datadir,
-	'secureRNG' => OC_Util::secureRNG_available(),
-	'htaccessWorking' => OC_Util::ishtaccessworking(),
-	'errors' => array(),
-);
-
-if(isset($_POST['install']) AND $_POST['install']=='true') {
-	// We have to launch the installation process :
-	$e = OC_Setup::install($_POST);
-	$errors = array('errors' => $e);
-
-	if(count($e) > 0) {
-		//OC_Template::printGuestPage("", "error", array("errors" => $errors));
-		$options = array_merge($_POST, $opts, $errors);
-		OC_Template::printGuestPage("", "installation", $options);
-	}
-	else {
-		header("Location: ".OC::$WEBROOT.'/');
-		exit();
-	}
-}
-else {
-	OC_Template::printGuestPage("", "installation", $opts);
-}
-
 class OC_Setup {
 	public static function install($options) {
 		$error = array();
@@ -607,6 +567,10 @@ class OC_Setup {
 		$content.= "Options -Indexes\n";
 		@file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it
 
+		self::protectDataDirectory();
+	}
+
+	public static function protectDataDirectory() {
 		$content = "deny from all\n";
 		$content.= "IndexIgnore *";
 		file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content);
diff --git a/settings/js/users.js b/settings/js/users.js
index 89718b5a1b66b58237d901d07e6d6d5b3ff99534..249d529df4f6354c744170cfaac44349ecdc9817 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -16,7 +16,10 @@ var UserList={
 	 * finishDelete() completes the process. This allows for 'undo'.
 	 */
 	do_delete:function( uid ) {
-		
+		if (typeof UserList.deleteUid !== 'undefined') {
+			//Already a user in the undo queue
+			UserList.finishDelete(null);
+		}
 		UserList.deleteUid = uid;
 		
 		// Set undo flag