diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php
index 2731ee1112555e280d7fb37f7528801f5d3ae4ab..13cf352b4ed604c84a92839b6976bf8032948649 100644
--- a/apps/files_encryption/hooks/hooks.php
+++ b/apps/files_encryption/hooks/hooks.php
@@ -166,8 +166,8 @@ class Hooks {
 	/**
 	 * @brief 
 	 */
-	public static function postShared( $params ) {
-	
+	public static function postShared($params) {
+
 		// NOTE: $params has keys:
 		// [itemType] => file
 		// itemSource -> int, filecache file ID
@@ -183,50 +183,46 @@ class Hooks {
 		// [fileSource] => 13
 		// [fileTarget] => /test8
 		// [id] => 10
-		// [token] => 
-		
+		// [token] =>
 		// TODO: Should other kinds of item be encrypted too?
-		if ( $params['itemType'] === 'file' ) {
-		
-			$view = new \OC_FilesystemView( '/' );
+		if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
+
+			$view = new \OC_FilesystemView('/');
 			$session = new Session($view);
 			$userId = \OCP\User::getUser();
-			$util = new Util( $view, $userId );
-			$path = $util->fileIdToPath( $params['itemSource'] );
+			$util = new Util($view, $userId);
+			$path = $util->fileIdToPath($params['itemSource']);
 
 			$sharingEnabled = \OCP\Share::isEnabled();
-			$usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path);
-			
-			// Recursively expand path to include subfiles
-			$allPaths = $util->getPaths( $path );
-			
-			$failed = array();
-			
-			// Loop through all subfiles
-			foreach ( $allPaths as $path ) {
-			
+
+			if ($params['itemType'] === 'folder') {
+				//list($owner, $ownerPath) = $util->getUidAndFilename($filePath);
+				$allFiles = $util->getAllFiles($path);
+			} else {
+				$allFiles = array($path);
+			}
+
+			foreach ($allFiles as $path) {
+				$usersSharing = $util->getSharingUsersArray($sharingEnabled, $path);
+
+				$failed = array();
+
 				// Attempt to set shareKey
-				if ( ! $util->setSharedFileKeyfiles( $session, $usersSharing, $path ) ) {
-				
+				if (!$util->setSharedFileKeyfiles($session, $usersSharing, $path)) {
+
 					$failed[] = $path;
-					
 				}
-				
 			}
-			
+
 			// If no attempts to set keyfiles failed
-			if ( empty( $failed ) ) {
-			
+			if (empty($failed)) {
+
 				return true;
-				
 			} else {
-			
+
 				return false;
-				
 			}
-		
 		}
-		
 	}
 	
 	/**
diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php
index 8807de7c2ad8381990bde111f6d72312caeebe76..b3df7f0db03882872c71af8d3eeacd2f4b604f4b 100644
--- a/apps/files_encryption/lib/util.php
+++ b/apps/files_encryption/lib/util.php
@@ -939,4 +939,24 @@ class Util {
 		
 	}
 
+	/**
+	 *@ brief geo recursively through a dir and collect all files and sub files.
+	 * @param type $dir relative to the users files folder
+	 * @return array with list of files relative to the users files folder
+	 */
+	public function getAllFiles($dir) {
+		$result = array();
+		$path = $this->view->getLocalFile();
+		$content = $this->view->getDirectoryContent("/".$this->userFilesDir.'/'.$this->filesFolderName.$dir);
+
+		foreach ($content as $c) {
+			if ($c['type'] === "dir" ) {
+				$result = array_merge($result, $this->getAllFiles(substr($c['path'],5)));
+			} else {
+				$result[] = substr($c['path'], 5);
+			}
+		}
+		return $result;
+	}
+
 }