diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php
index 969070360fe..352885121f9 100644
--- a/apps/files_external/lib/amazons3.php
+++ b/apps/files_external/lib/amazons3.php
@@ -560,4 +560,16 @@ class AmazonS3 extends \OC\Files\Storage\Common {
return false;
}
}
+
+ /**
+ * check if curl is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('curl_init')) {
+ return true;
+ } else {
+ return array('curl');
+ }
+ }
+
}
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 2112266efc4..242cdff911c 100755
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -524,50 +524,85 @@ class OC_Mount_Config {
* check dependencies
*/
public static function checkDependencies() {
- $dependencyMessages = array();
+ $dependencies = array();
foreach (OC_Mount_Config::$backends as $class => $backend) {
if (isset($backend['has_dependencies']) and $backend['has_dependencies'] === true) {
$result = $class::checkDependencies();
- if ($result !== true and OC_Mount_Config::findFirstSentence($dependencyMessages, $result) < 0) {
- $dependencyMessages[] = $result;
+ if ($result !== true) {
+ foreach ($result as $key => $value) {
+ if (is_numeric($key)) {
+ OC_Mount_Config::addDependency($dependencies, $value, $backend['backend']);
+ } else {
+ OC_Mount_Config::addDependency($dependencies, $key, $backend['backend'], $value);
+ }
+ }
}
}
}
- if (count($dependencyMessages) > 0) {
- return implode('
', $dependencyMessages);
+ if (count($dependencies) > 0) {
+ return OC_Mount_Config::generateDependencyMessage($dependencies);
}
return '';
}
- /**
- * Finds the first string in an array that has the same first sentence (or part thereof)
- * as a given comparison string
- * @param $arr array An array of strings
- * @param $str string The string to find
- * @return int The position of the first occurrence or -1 if not found
- */
- private static function findFirstSentence($arr, $str) {
- foreach ($arr as $i => $item) {
- $itemPos = strpos($item, '.');
- $strPos = strpos($str, '.');
-
- if ($itemPos < 0 && $strPos < 0) {
- $itemPos = strpos($item, ',');
- $strPos = strpos($str, ',');
-
- if ($itemPos < 0 && $strPos < 0) {
- $itemPos = strlen($item);
- $strPos = strlen($str);
+ private static function addDependency(&$dependencies, $module, $backend, $message=null) {
+ if (!isset($dependencies[$module])) {
+ $dependencies[$module] = array();
+ }
+
+ if ($message === null) {
+ $dependencies[$module][] = $backend;
+ } else {
+ $dependencies[$module][] = array('backend' => $backend, 'message' => $message);
+ }
+ }
+
+ private static function generateDependencyMessage($dependencies) {
+ $l = new \OC_L10N('files_external');
+ $dependencyMessage = '';
+ foreach ($dependencies as $module => $backends) {
+ $dependencyGroup = array();
+ foreach ($backends as $backend) {
+ if (is_array($backend)) {
+ $dependencyMessage .= '
' . $l->t('Note: ') . $backend['message'];
+ } else {
+ $dependencyGroup[] = $backend;
}
}
- if ($itemPos === $strPos and strncasecmp($item, $str, $itemPos) === 0) {
- return $i;
+ if (count($dependencyGroup) > 0) {
+ $backends = '';
+ for ($i = 0; $i < count($dependencyGroup); $i++) {
+ if ($i > 0 && $i === count($dependencyGroup) - 1) {
+ $backends .= $l->t(' and ');
+ } elseif ($i > 0) {
+ $backends .= ', ';
+ }
+ $backends .= '' . $dependencyGroup[$i] . '';
+ }
+ $dependencyMessage .= '
' . OC_Mount_Config::getSingleDependencyMessage($l, $module, $backends);
}
}
+ return $dependencyMessage;
+ }
- return -1;
+ /**
+ * Returns a dependency missing message
+ * @param $l OC_L10N
+ * @param $module string
+ * @param $backend string
+ * @return string
+ */
+ private static function getSingleDependencyMessage($l, $module, $backend) {
+ switch (strtolower($module)) {
+ case 'curl':
+ return $l->t('Note: The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+ case 'ftp':
+ return $l->t('Note: The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+ default:
+ return $l->t('Note: "%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', array($module, $backend));
+ }
}
/**
diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php
index f6a54bc0ca8..38de3360f2b 100755
--- a/apps/files_external/lib/dropbox.php
+++ b/apps/files_external/lib/dropbox.php
@@ -33,18 +33,6 @@ class Dropbox extends \OC\Files\Storage\Common {
private static $tempFiles = array();
- /**
- * check if curl is installed
- */
- public static function checkDependencies() {
- if (function_exists('curl_init')) {
- return true;
- } else {
- $l = new \OC_L10N('files_external');
- return $l->t('Note: The cURL support in PHP is not enabled or installed. Mounting of Dropbox is not possible. Please ask your system administrator to install it.');
- }
- }
-
public function __construct($params) {
if (isset($params['configured']) && $params['configured'] == 'true'
&& isset($params['app_key'])
@@ -323,4 +311,15 @@ class Dropbox extends \OC\Files\Storage\Common {
return true;
}
+ /**
+ * check if curl is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('curl_init')) {
+ return true;
+ } else {
+ return array('curl');
+ }
+ }
+
}
diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php
index a6a775ff6d1..b3f8b1444ae 100644
--- a/apps/files_external/lib/ftp.php
+++ b/apps/files_external/lib/ftp.php
@@ -17,18 +17,6 @@ class FTP extends \OC\Files\Storage\StreamWrapper{
private static $tempFiles=array();
- /**
- * check if php-ftp is installed
- */
- public static function checkDependencies() {
- if (function_exists('ftp_login')) {
- return(true);
- } else {
- $l = new \OC_L10N('files_external');
- return $l->t('Note: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it.');
- }
- }
-
public function __construct($params) {
if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
$this->host=$params['host'];
@@ -131,4 +119,16 @@ class FTP extends \OC\Files\Storage\StreamWrapper{
unlink($tmpFile);
}
}
+
+ /**
+ * check if php-ftp is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('ftp_login')) {
+ return(true);
+ } else {
+ return array('ftp');
+ }
+ }
+
}
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index cfb7005c4c7..56c0d451651 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -41,18 +41,6 @@ class Google extends \OC\Files\Storage\Common {
const DRAWING = 'application/vnd.google-apps.drawing';
const PRESENTATION = 'application/vnd.google-apps.presentation';
- /**
- * check if curl is installed
- */
- public static function checkDependencies() {
- if (function_exists('curl_init')) {
- return true;
- } else {
- $l = new \OC_L10N('files_external');
- return $l->t('Note: The cURL support in PHP is not enabled or installed. Mounting of Google Drive is not possible. Please ask your system administrator to install it.');
- }
- }
-
public function __construct($params) {
if (isset($params['configured']) && $params['configured'] === 'true'
&& isset($params['client_id']) && isset($params['client_secret'])
@@ -598,4 +586,15 @@ class Google extends \OC\Files\Storage\Common {
return false;
}
+ /**
+ * check if curl is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('curl_init')) {
+ return true;
+ } else {
+ return array('curl');
+ }
+ }
+
}
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index 6fb262323ff..3ef13b633a9 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -17,20 +17,6 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
private $root;
private $share;
- /**
- * check if smbclient is installed
- */
- public static function checkDependencies() {
- if (function_exists('shell_exec')) {
- $output = shell_exec('which smbclient');
- if (!empty($output)) {
- return true;
- }
- }
- $l = new \OC_L10N('files_external');
- return $l->t('Note: "smbclient" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it.');
- }
-
public function __construct($params) {
if (isset($params['host']) && isset($params['user']) && isset($params['password']) && isset($params['share'])) {
$this->host=$params['host'];
@@ -148,4 +134,18 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
}
return $lastCtime;
}
+
+ /**
+ * check if smbclient is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('shell_exec')) {
+ $output = shell_exec('which smbclient');
+ if (!empty($output)) {
+ return true;
+ }
+ }
+ return array('smbclient');
+ }
+
}
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index a66d53fc1a8..a202d3843cb 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -65,16 +65,16 @@ class Swift extends \OC\Files\Storage\Common {
return $path;
}
+ const SUBCONTAINER_FILE='.subcontainers';
+
/**
- * check if curl is installed
+ * translate directory path to container name
+ * @param string $path
+ * @return string
*/
- public static function checkDependencies() {
- if (function_exists('curl_init')) {
- return true;
- } else {
- $l = new \OC_L10N('files_external');
- return $l->t('Note: The cURL support in PHP is not enabled or installed. Mounting of OpenStack Swift is not possible. Please ask your system administrator to install it.');
- }
+ private function getContainerName($path) {
+ $path=trim(trim($this->root, '/') . "/".$path, '/.');
+ return str_replace('/', '\\', $path);
}
/**
@@ -502,4 +502,16 @@ class Swift extends \OC\Files\Storage\Common {
), $tmpFile);
unlink($tmpFile);
}
+
+ /**
+ * check if curl is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('curl_init')) {
+ return true;
+ } else {
+ return array('curl');
+ }
+ }
+
}
diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php
index 0ea7a085041..b43c65e8e6c 100644
--- a/apps/files_external/lib/webdav.php
+++ b/apps/files_external/lib/webdav.php
@@ -23,18 +23,6 @@ class DAV extends \OC\Files\Storage\Common {
private static $tempFiles = array();
- /**
- * check if curl is installed
- */
- public static function checkDependencies() {
- if (function_exists('curl_init')) {
- return true;
- } else {
- $l = new \OC_L10N('files_external');
- return $l->t('Note: The cURL support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV is not possible. Please ask your system administrator to install it.');
- }
- }
-
public function __construct($params) {
if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
$host = $params['host'];
@@ -397,5 +385,16 @@ class DAV extends \OC\Files\Storage\Common {
return false;
}
}
+
+ /**
+ * check if curl is installed
+ */
+ public static function checkDependencies() {
+ if (function_exists('curl_init')) {
+ return true;
+ } else {
+ return array('curl');
+ }
+ }
}
diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php
index e8815acaf16..84d9d3408d1 100644
--- a/apps/files_external/templates/settings.php
+++ b/apps/files_external/templates/settings.php
@@ -1,170 +1,162 @@
-
| - | class="remove"
- style="visibility:hidden;"
- > |
-