Completed
Push — stable10 ( d1b390...0bd063 )
by Lukas
27:03 queued 26:40
created
apps/files/lib/BackgroundJob/DeleteOrphanedItems.php 2 patches
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -32,123 +32,123 @@
 block discarded – undo
32 32
  */
33 33
 class DeleteOrphanedItems extends TimedJob {
34 34
 
35
-	const CHUNK_SIZE = 200;
36
-
37
-	/** @var \OCP\IDBConnection */
38
-	protected $connection;
39
-
40
-	/** @var \OCP\ILogger */
41
-	protected $logger;
42
-
43
-	/**
44
-	 * Default interval in minutes
45
-	 *
46
-	 * @var int $defaultIntervalMin
47
-	 **/
48
-	protected $defaultIntervalMin = 60;
49
-
50
-	/**
51
-	 * sets the correct interval for this timed job
52
-	 */
53
-	public function __construct() {
54
-		$this->interval = $this->defaultIntervalMin * 60;
55
-		$this->connection = \OC::$server->getDatabaseConnection();
56
-		$this->logger = \OC::$server->getLogger();
57
-	}
58
-
59
-	/**
60
-	 * Makes the background job do its work
61
-	 *
62
-	 * @param array $argument unused argument
63
-	 */
64
-	public function run($argument) {
65
-		$this->cleanSystemTags();
66
-		$this->cleanUserTags();
67
-		$this->cleanComments();
68
-		$this->cleanCommentMarkers();
69
-	}
70
-
71
-	/**
72
-	 * Deleting orphaned system tag mappings
73
-	 *
74
-	 * @param string $table
75
-	 * @param string $idCol
76
-	 * @param string $typeCol
77
-	 * @return int Number of deleted entries
78
-	 */
79
-	protected function cleanUp($table, $idCol, $typeCol) {
80
-		$deletedEntries = 0;
81
-
82
-		$query = $this->connection->getQueryBuilder();
83
-		$query->select('t1.' . $idCol)
84
-			->from($table, 't1')
85
-			->where($query->expr()->eq($typeCol, $query->expr()->literal('files')))
86
-			->andWhere($query->expr()->isNull('t2.fileid'))
87
-			->leftJoin('t1', 'filecache', 't2', $query->expr()->eq($query->expr()->castColumn('t1.' . $idCol, IQueryBuilder::PARAM_INT), 't2.fileid'))
88
-			->groupBy('t1.' . $idCol)
89
-			->setMaxResults(self::CHUNK_SIZE);
90
-
91
-		$deleteQuery = $this->connection->getQueryBuilder();
92
-		$deleteQuery->delete($table)
93
-			->where($deleteQuery->expr()->eq($idCol, $deleteQuery->createParameter('objectid')));
94
-
95
-		$deletedInLastChunk = self::CHUNK_SIZE;
96
-		while ($deletedInLastChunk === self::CHUNK_SIZE) {
97
-			$result = $query->execute();
98
-			$deletedInLastChunk = 0;
99
-			while ($row = $result->fetch()) {
100
-				$deletedInLastChunk++;
101
-				$deletedEntries += $deleteQuery->setParameter('objectid', (int) $row[$idCol])
102
-					->execute();
103
-			}
104
-			$result->closeCursor();
105
-		}
106
-
107
-		return $deletedEntries;
108
-	}
109
-
110
-	/**
111
-	 * Deleting orphaned system tag mappings
112
-	 *
113
-	 * @return int Number of deleted entries
114
-	 */
115
-	protected function cleanSystemTags() {
116
-		$deletedEntries = $this->cleanUp('systemtag_object_mapping', 'objectid', 'objecttype');
117
-		$this->logger->debug("$deletedEntries orphaned system tag relations deleted", ['app' => 'DeleteOrphanedItems']);
118
-		return $deletedEntries;
119
-	}
120
-
121
-	/**
122
-	 * Deleting orphaned user tag mappings
123
-	 *
124
-	 * @return int Number of deleted entries
125
-	 */
126
-	protected function cleanUserTags() {
127
-		$deletedEntries = $this->cleanUp('vcategory_to_object', 'objid', 'type');
128
-		$this->logger->debug("$deletedEntries orphaned user tag relations deleted", ['app' => 'DeleteOrphanedItems']);
129
-		return $deletedEntries;
130
-	}
131
-
132
-	/**
133
-	 * Deleting orphaned comments
134
-	 *
135
-	 * @return int Number of deleted entries
136
-	 */
137
-	protected function cleanComments() {
138
-		$deletedEntries = $this->cleanUp('comments', 'object_id', 'object_type');
139
-		$this->logger->debug("$deletedEntries orphaned comments deleted", ['app' => 'DeleteOrphanedItems']);
140
-		return $deletedEntries;
141
-	}
142
-
143
-	/**
144
-	 * Deleting orphaned comment read markers
145
-	 *
146
-	 * @return int Number of deleted entries
147
-	 */
148
-	protected function cleanCommentMarkers() {
149
-		$deletedEntries = $this->cleanUp('comments_read_markers', 'object_id', 'object_type');
150
-		$this->logger->debug("$deletedEntries orphaned comment read marks deleted", ['app' => 'DeleteOrphanedItems']);
151
-		return $deletedEntries;
152
-	}
35
+    const CHUNK_SIZE = 200;
36
+
37
+    /** @var \OCP\IDBConnection */
38
+    protected $connection;
39
+
40
+    /** @var \OCP\ILogger */
41
+    protected $logger;
42
+
43
+    /**
44
+     * Default interval in minutes
45
+     *
46
+     * @var int $defaultIntervalMin
47
+     **/
48
+    protected $defaultIntervalMin = 60;
49
+
50
+    /**
51
+     * sets the correct interval for this timed job
52
+     */
53
+    public function __construct() {
54
+        $this->interval = $this->defaultIntervalMin * 60;
55
+        $this->connection = \OC::$server->getDatabaseConnection();
56
+        $this->logger = \OC::$server->getLogger();
57
+    }
58
+
59
+    /**
60
+     * Makes the background job do its work
61
+     *
62
+     * @param array $argument unused argument
63
+     */
64
+    public function run($argument) {
65
+        $this->cleanSystemTags();
66
+        $this->cleanUserTags();
67
+        $this->cleanComments();
68
+        $this->cleanCommentMarkers();
69
+    }
70
+
71
+    /**
72
+     * Deleting orphaned system tag mappings
73
+     *
74
+     * @param string $table
75
+     * @param string $idCol
76
+     * @param string $typeCol
77
+     * @return int Number of deleted entries
78
+     */
79
+    protected function cleanUp($table, $idCol, $typeCol) {
80
+        $deletedEntries = 0;
81
+
82
+        $query = $this->connection->getQueryBuilder();
83
+        $query->select('t1.' . $idCol)
84
+            ->from($table, 't1')
85
+            ->where($query->expr()->eq($typeCol, $query->expr()->literal('files')))
86
+            ->andWhere($query->expr()->isNull('t2.fileid'))
87
+            ->leftJoin('t1', 'filecache', 't2', $query->expr()->eq($query->expr()->castColumn('t1.' . $idCol, IQueryBuilder::PARAM_INT), 't2.fileid'))
88
+            ->groupBy('t1.' . $idCol)
89
+            ->setMaxResults(self::CHUNK_SIZE);
90
+
91
+        $deleteQuery = $this->connection->getQueryBuilder();
92
+        $deleteQuery->delete($table)
93
+            ->where($deleteQuery->expr()->eq($idCol, $deleteQuery->createParameter('objectid')));
94
+
95
+        $deletedInLastChunk = self::CHUNK_SIZE;
96
+        while ($deletedInLastChunk === self::CHUNK_SIZE) {
97
+            $result = $query->execute();
98
+            $deletedInLastChunk = 0;
99
+            while ($row = $result->fetch()) {
100
+                $deletedInLastChunk++;
101
+                $deletedEntries += $deleteQuery->setParameter('objectid', (int) $row[$idCol])
102
+                    ->execute();
103
+            }
104
+            $result->closeCursor();
105
+        }
106
+
107
+        return $deletedEntries;
108
+    }
109
+
110
+    /**
111
+     * Deleting orphaned system tag mappings
112
+     *
113
+     * @return int Number of deleted entries
114
+     */
115
+    protected function cleanSystemTags() {
116
+        $deletedEntries = $this->cleanUp('systemtag_object_mapping', 'objectid', 'objecttype');
117
+        $this->logger->debug("$deletedEntries orphaned system tag relations deleted", ['app' => 'DeleteOrphanedItems']);
118
+        return $deletedEntries;
119
+    }
120
+
121
+    /**
122
+     * Deleting orphaned user tag mappings
123
+     *
124
+     * @return int Number of deleted entries
125
+     */
126
+    protected function cleanUserTags() {
127
+        $deletedEntries = $this->cleanUp('vcategory_to_object', 'objid', 'type');
128
+        $this->logger->debug("$deletedEntries orphaned user tag relations deleted", ['app' => 'DeleteOrphanedItems']);
129
+        return $deletedEntries;
130
+    }
131
+
132
+    /**
133
+     * Deleting orphaned comments
134
+     *
135
+     * @return int Number of deleted entries
136
+     */
137
+    protected function cleanComments() {
138
+        $deletedEntries = $this->cleanUp('comments', 'object_id', 'object_type');
139
+        $this->logger->debug("$deletedEntries orphaned comments deleted", ['app' => 'DeleteOrphanedItems']);
140
+        return $deletedEntries;
141
+    }
142
+
143
+    /**
144
+     * Deleting orphaned comment read markers
145
+     *
146
+     * @return int Number of deleted entries
147
+     */
148
+    protected function cleanCommentMarkers() {
149
+        $deletedEntries = $this->cleanUp('comments_read_markers', 'object_id', 'object_type');
150
+        $this->logger->debug("$deletedEntries orphaned comment read marks deleted", ['app' => 'DeleteOrphanedItems']);
151
+        return $deletedEntries;
152
+    }
153 153
 
154 154
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -80,12 +80,12 @@
 block discarded – undo
80 80
 		$deletedEntries = 0;
81 81
 
82 82
 		$query = $this->connection->getQueryBuilder();
83
-		$query->select('t1.' . $idCol)
83
+		$query->select('t1.'.$idCol)
84 84
 			->from($table, 't1')
85 85
 			->where($query->expr()->eq($typeCol, $query->expr()->literal('files')))
86 86
 			->andWhere($query->expr()->isNull('t2.fileid'))
87
-			->leftJoin('t1', 'filecache', 't2', $query->expr()->eq($query->expr()->castColumn('t1.' . $idCol, IQueryBuilder::PARAM_INT), 't2.fileid'))
88
-			->groupBy('t1.' . $idCol)
87
+			->leftJoin('t1', 'filecache', 't2', $query->expr()->eq($query->expr()->castColumn('t1.'.$idCol, IQueryBuilder::PARAM_INT), 't2.fileid'))
88
+			->groupBy('t1.'.$idCol)
89 89
 			->setMaxResults(self::CHUNK_SIZE);
90 90
 
91 91
 		$deleteQuery = $this->connection->getQueryBuilder();
Please login to merge, or discard this patch.
apps/files/lib/BackgroundJob/ScanFiles.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -36,80 +36,80 @@
 block discarded – undo
36 36
  * @package OCA\Files\BackgroundJob
37 37
  */
38 38
 class ScanFiles extends \OC\BackgroundJob\TimedJob {
39
-	/** @var IConfig */
40
-	private $config;
41
-	/** @var IUserManager */
42
-	private $userManager;
43
-	/** @var IDBConnection */
44
-	private $dbConnection;
45
-	/** @var ILogger */
46
-	private $logger;
47
-	/** Amount of users that should get scanned per execution */
48
-	const USERS_PER_SESSION = 500;
39
+    /** @var IConfig */
40
+    private $config;
41
+    /** @var IUserManager */
42
+    private $userManager;
43
+    /** @var IDBConnection */
44
+    private $dbConnection;
45
+    /** @var ILogger */
46
+    private $logger;
47
+    /** Amount of users that should get scanned per execution */
48
+    const USERS_PER_SESSION = 500;
49 49
 
50
-	/**
51
-	 * @param IConfig|null $config
52
-	 * @param IUserManager|null $userManager
53
-	 * @param IDBConnection|null $dbConnection
54
-	 * @param ILogger|null $logger
55
-	 */
56
-	public function __construct(IConfig $config = null,
57
-								IUserManager $userManager = null,
58
-								IDBConnection $dbConnection = null,
59
-								ILogger $logger = null) {
60
-		// Run once per 10 minutes
61
-		$this->setInterval(60 * 10);
50
+    /**
51
+     * @param IConfig|null $config
52
+     * @param IUserManager|null $userManager
53
+     * @param IDBConnection|null $dbConnection
54
+     * @param ILogger|null $logger
55
+     */
56
+    public function __construct(IConfig $config = null,
57
+                                IUserManager $userManager = null,
58
+                                IDBConnection $dbConnection = null,
59
+                                ILogger $logger = null) {
60
+        // Run once per 10 minutes
61
+        $this->setInterval(60 * 10);
62 62
 
63
-		if (is_null($userManager) || is_null($config)) {
64
-			$this->fixDIForJobs();
65
-		} else {
66
-			$this->config = $config;
67
-			$this->userManager = $userManager;
68
-			$this->logger = $logger;
69
-		}
70
-	}
63
+        if (is_null($userManager) || is_null($config)) {
64
+            $this->fixDIForJobs();
65
+        } else {
66
+            $this->config = $config;
67
+            $this->userManager = $userManager;
68
+            $this->logger = $logger;
69
+        }
70
+    }
71 71
 
72
-	protected function fixDIForJobs() {
73
-		$this->config = \OC::$server->getConfig();
74
-		$this->userManager = \OC::$server->getUserManager();
75
-		$this->logger = \OC::$server->getLogger();
76
-	}
72
+    protected function fixDIForJobs() {
73
+        $this->config = \OC::$server->getConfig();
74
+        $this->userManager = \OC::$server->getUserManager();
75
+        $this->logger = \OC::$server->getLogger();
76
+    }
77 77
 
78
-	/**
79
-	 * @param IUser $user
80
-	 */
81
-	protected function runScanner(IUser $user) {
82
-		try {
83
-			$scanner = new Scanner(
84
-					$user->getUID(),
85
-					$this->dbConnection,
86
-					$this->logger
87
-			);
88
-			$scanner->backgroundScan('');
89
-		} catch (\Exception $e) {
90
-			$this->logger->logException($e, ['app' => 'files']);
91
-		}
92
-		\OC_Util::tearDownFS();
93
-	}
78
+    /**
79
+     * @param IUser $user
80
+     */
81
+    protected function runScanner(IUser $user) {
82
+        try {
83
+            $scanner = new Scanner(
84
+                    $user->getUID(),
85
+                    $this->dbConnection,
86
+                    $this->logger
87
+            );
88
+            $scanner->backgroundScan('');
89
+        } catch (\Exception $e) {
90
+            $this->logger->logException($e, ['app' => 'files']);
91
+        }
92
+        \OC_Util::tearDownFS();
93
+    }
94 94
 
95
-	/**
96
-	 * @param $argument
97
-	 * @throws \Exception
98
-	 */
99
-	protected function run($argument) {
100
-		$offset = $this->config->getAppValue('files', 'cronjob_scan_files', 0);
101
-		$users = $this->userManager->search('', self::USERS_PER_SESSION, $offset);
102
-		if (!count($users)) {
103
-			// No users found, reset offset and retry
104
-			$offset = 0;
105
-			$users = $this->userManager->search('', self::USERS_PER_SESSION);
106
-		}
95
+    /**
96
+     * @param $argument
97
+     * @throws \Exception
98
+     */
99
+    protected function run($argument) {
100
+        $offset = $this->config->getAppValue('files', 'cronjob_scan_files', 0);
101
+        $users = $this->userManager->search('', self::USERS_PER_SESSION, $offset);
102
+        if (!count($users)) {
103
+            // No users found, reset offset and retry
104
+            $offset = 0;
105
+            $users = $this->userManager->search('', self::USERS_PER_SESSION);
106
+        }
107 107
 
108
-		$offset += self::USERS_PER_SESSION;
109
-		$this->config->setAppValue('files', 'cronjob_scan_files', $offset);
108
+        $offset += self::USERS_PER_SESSION;
109
+        $this->config->setAppValue('files', 'cronjob_scan_files', $offset);
110 110
 
111
-		foreach ($users as $user) {
112
-			$this->runScanner($user);
113
-		}
114
-	}
111
+        foreach ($users as $user) {
112
+            $this->runScanner($user);
113
+        }
114
+    }
115 115
 }
Please login to merge, or discard this patch.
apps/files/lib/Settings/Admin.php 2 patches
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -31,56 +31,56 @@
 block discarded – undo
31 31
 
32 32
 class Admin implements ISettings {
33 33
 
34
-	/** @var IniGetWrapper */
35
-	private $iniWrapper;
34
+    /** @var IniGetWrapper */
35
+    private $iniWrapper;
36 36
 
37
-	/** @var IRequest */
38
-	private $request;
37
+    /** @var IRequest */
38
+    private $request;
39 39
 
40
-	public function __construct(IniGetWrapper $iniWrapper, IRequest $request) {
41
-		$this->iniWrapper = $iniWrapper;
42
-		$this->request = $request;
43
-	}
40
+    public function __construct(IniGetWrapper $iniWrapper, IRequest $request) {
41
+        $this->iniWrapper = $iniWrapper;
42
+        $this->request = $request;
43
+    }
44 44
 
45
-	/**
46
-	 * @return TemplateResponse
47
-	 */
48
-	public function getForm() {
49
-		$htaccessWorking  = (getenv('htaccessWorking') == 'true');
50
-		$htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess');
51
-		$userIniWritable  = is_writable(\OC::$SERVERROOT.'/.user.ini');
45
+    /**
46
+     * @return TemplateResponse
47
+     */
48
+    public function getForm() {
49
+        $htaccessWorking  = (getenv('htaccessWorking') == 'true');
50
+        $htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess');
51
+        $userIniWritable  = is_writable(\OC::$SERVERROOT.'/.user.ini');
52 52
 
53
-		$upload_max_filesize = $this->iniWrapper->getBytes('upload_max_filesize');
54
-		$post_max_size = $this->iniWrapper->getBytes('post_max_size');
55
-		$maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size));
53
+        $upload_max_filesize = $this->iniWrapper->getBytes('upload_max_filesize');
54
+        $post_max_size = $this->iniWrapper->getBytes('post_max_size');
55
+        $maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size));
56 56
 
57
-		$parameters = [
58
-			'uploadChangable'              => (($htaccessWorking and $htaccessWritable) or $userIniWritable ),
59
-			'uploadMaxFilesize'            => $maxUploadFilesize,
60
-			// max possible makes only sense on a 32 bit system
61
-			'displayMaxPossibleUploadSize' => PHP_INT_SIZE === 4,
62
-			'maxPossibleUploadSize'        => Util::humanFileSize(PHP_INT_MAX),
63
-		];
57
+        $parameters = [
58
+            'uploadChangable'              => (($htaccessWorking and $htaccessWritable) or $userIniWritable ),
59
+            'uploadMaxFilesize'            => $maxUploadFilesize,
60
+            // max possible makes only sense on a 32 bit system
61
+            'displayMaxPossibleUploadSize' => PHP_INT_SIZE === 4,
62
+            'maxPossibleUploadSize'        => Util::humanFileSize(PHP_INT_MAX),
63
+        ];
64 64
 
65
-		return new TemplateResponse('files', 'admin', $parameters, '');
66
-	}
65
+        return new TemplateResponse('files', 'admin', $parameters, '');
66
+    }
67 67
 
68
-	/**
69
-	 * @return string the section ID, e.g. 'sharing'
70
-	 */
71
-	public function getSection() {
72
-		return 'additional';
73
-	}
68
+    /**
69
+     * @return string the section ID, e.g. 'sharing'
70
+     */
71
+    public function getSection() {
72
+        return 'additional';
73
+    }
74 74
 
75
-	/**
76
-	 * @return int whether the form should be rather on the top or bottom of
77
-	 * the admin section. The forms are arranged in ascending order of the
78
-	 * priority values. It is required to return a value between 0 and 100.
79
-	 *
80
-	 * E.g.: 70
81
-	 */
82
-	public function getPriority() {
83
-		return 5;
84
-	}
75
+    /**
76
+     * @return int whether the form should be rather on the top or bottom of
77
+     * the admin section. The forms are arranged in ascending order of the
78
+     * priority values. It is required to return a value between 0 and 100.
79
+     *
80
+     * E.g.: 70
81
+     */
82
+    public function getPriority() {
83
+        return 5;
84
+    }
85 85
 
86 86
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@
 block discarded – undo
55 55
 		$maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size));
56 56
 
57 57
 		$parameters = [
58
-			'uploadChangable'              => (($htaccessWorking and $htaccessWritable) or $userIniWritable ),
58
+			'uploadChangable'              => (($htaccessWorking and $htaccessWritable) or $userIniWritable),
59 59
 			'uploadMaxFilesize'            => $maxUploadFilesize,
60 60
 			// max possible makes only sense on a 32 bit system
61 61
 			'displayMaxPossibleUploadSize' => PHP_INT_SIZE === 4,
Please login to merge, or discard this patch.
apps/files/download.php 2 patches
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -30,11 +30,11 @@
 block discarded – undo
30 30
 $filename = $_GET["file"];
31 31
 
32 32
 if(!\OC\Files\Filesystem::file_exists($filename)) {
33
-	header("HTTP/1.0 404 Not Found");
34
-	$tmpl = new OCP\Template( '', '404', 'guest' );
35
-	$tmpl->assign('file', $filename);
36
-	$tmpl->printPage();
37
-	exit;
33
+    header("HTTP/1.0 404 Not Found");
34
+    $tmpl = new OCP\Template( '', '404', 'guest' );
35
+    $tmpl->assign('file', $filename);
36
+    $tmpl->printPage();
37
+    exit;
38 38
 }
39 39
 
40 40
 $ftype=\OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType( $filename ));
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -29,15 +29,15 @@  discard block
 block discarded – undo
29 29
 
30 30
 $filename = $_GET["file"];
31 31
 
32
-if(!\OC\Files\Filesystem::file_exists($filename)) {
32
+if (!\OC\Files\Filesystem::file_exists($filename)) {
33 33
 	header("HTTP/1.0 404 Not Found");
34
-	$tmpl = new OCP\Template( '', '404', 'guest' );
34
+	$tmpl = new OCP\Template('', '404', 'guest');
35 35
 	$tmpl->assign('file', $filename);
36 36
 	$tmpl->printPage();
37 37
 	exit;
38 38
 }
39 39
 
40
-$ftype=\OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType( $filename ));
40
+$ftype = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
41 41
 
42 42
 header('Content-Type:'.$ftype);
43 43
 OCP\Response::setContentDispositionHeader(basename($filename), 'attachment');
@@ -45,4 +45,4 @@  discard block
 block discarded – undo
45 45
 OCP\Response::setContentLengthHeader(\OC\Files\Filesystem::filesize($filename));
46 46
 
47 47
 OC_Util::obEnd();
48
-\OC\Files\Filesystem::readfile( $filename );
48
+\OC\Files\Filesystem::readfile($filename);
Please login to merge, or discard this patch.
apps/files/appinfo/update.php 1 patch
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -51,48 +51,48 @@
 block discarded – undo
51 51
  * @param \OCP\IDBConnection $conn
52 52
  */
53 53
 function owncloud_reset_encrypted_flag(\OCP\IDBConnection $conn) {
54
-	$conn->executeUpdate('UPDATE `*PREFIX*filecache` SET `encrypted` = 0 WHERE `encrypted` = 1');
54
+    $conn->executeUpdate('UPDATE `*PREFIX*filecache` SET `encrypted` = 0 WHERE `encrypted` = 1');
55 55
 }
56 56
 
57 57
 // Current version of ownCloud before the update is 8.1.0 or 8.2.0.(0-2)
58 58
 if ($installedVersion === '1.1.9' && (
59
-		// 8.1.0.x
60
-		(((int) $ocVersion[0]) === 8 && ((int) $ocVersion[1]) === 1 && ((int) $ocVersion[2]) === 0)
61
-		||
62
-		// < 8.2.0.3
63
-		(((int) $ocVersion[0]) === 8 && ((int) $ocVersion[1]) === 2 && ((int) $ocVersion[2]) === 0 && ((int) $ocVersion[3]) < 3)
64
-	)) {
59
+        // 8.1.0.x
60
+        (((int) $ocVersion[0]) === 8 && ((int) $ocVersion[1]) === 1 && ((int) $ocVersion[2]) === 0)
61
+        ||
62
+        // < 8.2.0.3
63
+        (((int) $ocVersion[0]) === 8 && ((int) $ocVersion[1]) === 2 && ((int) $ocVersion[2]) === 0 && ((int) $ocVersion[3]) < 3)
64
+    )) {
65 65
 
66
-	// Encryption is not enabled
67
-	if (!\OC::$server->getEncryptionManager()->isEnabled()) {
68
-		$conn = \OC::$server->getDatabaseConnection();
66
+    // Encryption is not enabled
67
+    if (!\OC::$server->getEncryptionManager()->isEnabled()) {
68
+        $conn = \OC::$server->getDatabaseConnection();
69 69
 
70
-		// Old encryption is not known in app config
71
-		$oldEncryption = \OC::$server->getConfig()->getAppKeys('files_encryption');
72
-		if (empty($oldEncryption)) {
73
-			owncloud_reset_encrypted_flag($conn);
74
-		} else {
75
-			$query = $conn->prepare('SELECT * FROM `*PREFIX*filecache` WHERE `encrypted` = 1 AND `unencrypted_size` > 0', 1);
76
-			$query->execute();
77
-			$empty = $query->fetch();
70
+        // Old encryption is not known in app config
71
+        $oldEncryption = \OC::$server->getConfig()->getAppKeys('files_encryption');
72
+        if (empty($oldEncryption)) {
73
+            owncloud_reset_encrypted_flag($conn);
74
+        } else {
75
+            $query = $conn->prepare('SELECT * FROM `*PREFIX*filecache` WHERE `encrypted` = 1 AND `unencrypted_size` > 0', 1);
76
+            $query->execute();
77
+            $empty = $query->fetch();
78 78
 
79
-			if (empty($empty)) {
80
-				owncloud_reset_encrypted_flag($conn);
81
-			} else {
82
-				/**
83
-				 * Sorry in case you are a false positive, but we are not 100% that
84
-				 * you don't have any encrypted files anymore, so we can not reset
85
-				 * the value safely
86
-				 */
87
-				\OC::$server->getLogger()->warning(
88
-					'If you have a problem with files not being accessible and '
89
-					. 'you are not using encryption, please have a look at the following'
90
-					. 'issue: {issue}',
91
-					[
92
-						'issue' => 'https://github.com/owncloud/core/issues/17846',
93
-					]
94
-				);
95
-			}
96
-		}
97
-	}
79
+            if (empty($empty)) {
80
+                owncloud_reset_encrypted_flag($conn);
81
+            } else {
82
+                /**
83
+                 * Sorry in case you are a false positive, but we are not 100% that
84
+                 * you don't have any encrypted files anymore, so we can not reset
85
+                 * the value safely
86
+                 */
87
+                \OC::$server->getLogger()->warning(
88
+                    'If you have a problem with files not being accessible and '
89
+                    . 'you are not using encryption, please have a look at the following'
90
+                    . 'issue: {issue}',
91
+                    [
92
+                        'issue' => 'https://github.com/owncloud/core/issues/17846',
93
+                    ]
94
+                );
95
+            }
96
+        }
97
+    }
98 98
 }
Please login to merge, or discard this patch.
apps/user_ldap/templates/part.wizardcontrols.php 1 patch
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,17 +1,17 @@
 block discarded – undo
1 1
 <div class="ldapWizardControls">
2
-	<span class="ldap_saving hidden"><?php p($l->t('Saving'));?> <img class="wizSpinner" src="<?php p(image_path('core', 'loading.gif')); ?>"/></span>
2
+	<span class="ldap_saving hidden"><?php p($l->t('Saving')); ?> <img class="wizSpinner" src="<?php p(image_path('core', 'loading.gif')); ?>"/></span>
3 3
 	<span class="ldap_config_state_indicator"></span> <span class="ldap_config_state_indicator_sign"></span>
4 4
 	<button class="ldap_action_back invisible" name="ldap_action_back"
5 5
 			type="button">
6
-		<?php p($l->t('Back'));?>
6
+		<?php p($l->t('Back')); ?>
7 7
 	</button>
8 8
 	<button class="ldap_action_continue" name="ldap_action_continue" type="button">
9
-		<?php p($l->t('Continue'));?>
9
+		<?php p($l->t('Continue')); ?>
10 10
 	</button>
11 11
 	<a href="<?php p(link_to_docs('admin-ldap')); ?>"
12 12
 		target="_blank" rel="noreferrer">
13 13
 		<img src="<?php print_unescaped(image_path('', 'actions/info.svg')); ?>"
14 14
 			style="height:1.75ex" />
15
-		<span class="ldap_grey"><?php p($l->t('Help'));?></span>
15
+		<span class="ldap_grey"><?php p($l->t('Help')); ?></span>
16 16
 	</a>
17 17
 </div>
Please login to merge, or discard this patch.
apps/user_ldap/templates/part.settingcontrols.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@
 block discarded – undo
1 1
 <div class="ldapSettingControls">
2 2
 	<button type="button" class="ldap_action_test_connection" name="ldap_action_test_connection">
3
-		<?php p($l->t('Test Configuration'));?>
3
+		<?php p($l->t('Test Configuration')); ?>
4 4
 	</button>
5 5
 	<a href="<?php p(link_to_docs('admin-ldap')); ?>"
6 6
 		target="_blank" rel="noreferrer">
7 7
 		<img src="<?php print_unescaped(image_path('', 'actions/info.svg')); ?>"
8 8
 			style="height:1.75ex" />
9
-		<?php p($l->t('Help'));?>
9
+		<?php p($l->t('Help')); ?>
10 10
 	</a>
11 11
 </div>
Please login to merge, or discard this patch.
apps/user_ldap/templates/settings.php 3 patches
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -5,46 +5,46 @@  discard block
 block discarded – undo
5 5
 vendor_style('user_ldap', 'ui-multiselect/jquery.multiselect');
6 6
 
7 7
 script('user_ldap', [
8
-	'wizard/controller',
9
-	'wizard/configModel',
10
-	'wizard/view',
11
-	'wizard/wizardObject',
12
-	'wizard/wizardTabGeneric',
13
-	'wizard/wizardTabElementary',
14
-	'wizard/wizardTabAbstractFilter',
15
-	'wizard/wizardTabUserFilter',
16
-	'wizard/wizardTabLoginFilter',
17
-	'wizard/wizardTabGroupFilter',
18
-	'wizard/wizardTabAdvanced',
19
-	'wizard/wizardTabExpert',
20
-	'wizard/wizardDetectorQueue',
21
-	'wizard/wizardDetectorGeneric',
22
-	'wizard/wizardDetectorPort',
23
-	'wizard/wizardDetectorBaseDN',
24
-	'wizard/wizardDetectorFeatureAbstract',
25
-	'wizard/wizardDetectorUserObjectClasses',
26
-	'wizard/wizardDetectorGroupObjectClasses',
27
-	'wizard/wizardDetectorGroupsForUsers',
28
-	'wizard/wizardDetectorGroupsForGroups',
29
-	'wizard/wizardDetectorSimpleRequestAbstract',
30
-	'wizard/wizardDetectorFilterUser',
31
-	'wizard/wizardDetectorFilterLogin',
32
-	'wizard/wizardDetectorFilterGroup',
33
-	'wizard/wizardDetectorUserCount',
34
-	'wizard/wizardDetectorGroupCount',
35
-	'wizard/wizardDetectorEmailAttribute',
36
-	'wizard/wizardDetectorUserDisplayNameAttribute',
37
-	'wizard/wizardDetectorUserGroupAssociation',
38
-	'wizard/wizardDetectorAvailableAttributes',
39
-	'wizard/wizardDetectorTestAbstract',
40
-	'wizard/wizardDetectorTestLoginName',
41
-	'wizard/wizardDetectorTestBaseDN',
42
-	'wizard/wizardDetectorTestConfiguration',
43
-	'wizard/wizardDetectorClearUserMappings',
44
-	'wizard/wizardDetectorClearGroupMappings',
45
-	'wizard/wizardFilterOnType',
46
-	'wizard/wizardFilterOnTypeFactory',
47
-	'wizard/wizard'
8
+    'wizard/controller',
9
+    'wizard/configModel',
10
+    'wizard/view',
11
+    'wizard/wizardObject',
12
+    'wizard/wizardTabGeneric',
13
+    'wizard/wizardTabElementary',
14
+    'wizard/wizardTabAbstractFilter',
15
+    'wizard/wizardTabUserFilter',
16
+    'wizard/wizardTabLoginFilter',
17
+    'wizard/wizardTabGroupFilter',
18
+    'wizard/wizardTabAdvanced',
19
+    'wizard/wizardTabExpert',
20
+    'wizard/wizardDetectorQueue',
21
+    'wizard/wizardDetectorGeneric',
22
+    'wizard/wizardDetectorPort',
23
+    'wizard/wizardDetectorBaseDN',
24
+    'wizard/wizardDetectorFeatureAbstract',
25
+    'wizard/wizardDetectorUserObjectClasses',
26
+    'wizard/wizardDetectorGroupObjectClasses',
27
+    'wizard/wizardDetectorGroupsForUsers',
28
+    'wizard/wizardDetectorGroupsForGroups',
29
+    'wizard/wizardDetectorSimpleRequestAbstract',
30
+    'wizard/wizardDetectorFilterUser',
31
+    'wizard/wizardDetectorFilterLogin',
32
+    'wizard/wizardDetectorFilterGroup',
33
+    'wizard/wizardDetectorUserCount',
34
+    'wizard/wizardDetectorGroupCount',
35
+    'wizard/wizardDetectorEmailAttribute',
36
+    'wizard/wizardDetectorUserDisplayNameAttribute',
37
+    'wizard/wizardDetectorUserGroupAssociation',
38
+    'wizard/wizardDetectorAvailableAttributes',
39
+    'wizard/wizardDetectorTestAbstract',
40
+    'wizard/wizardDetectorTestLoginName',
41
+    'wizard/wizardDetectorTestBaseDN',
42
+    'wizard/wizardDetectorTestConfiguration',
43
+    'wizard/wizardDetectorClearUserMappings',
44
+    'wizard/wizardDetectorClearGroupMappings',
45
+    'wizard/wizardFilterOnType',
46
+    'wizard/wizardFilterOnTypeFactory',
47
+    'wizard/wizard'
48 48
 ]);
49 49
 
50 50
 style('user_ldap', 'settings');
@@ -67,12 +67,12 @@  discard block
 block discarded – undo
67 67
 		<li class="ldapSettingsTabs"><a href="#ldapSettings-1"><?php p($l->t('Advanced'));?></a></li>
68 68
 	</ul>
69 69
 	<?php if(OCP\App::isEnabled('user_webdavauth')) {
70
-		print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them.').'</p>');
71
-	}
72
-	if(!function_exists('ldap_connect')) {
73
-		print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'</p>');
74
-	}
75
-	?>
70
+        print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them.').'</p>');
71
+    }
72
+    if(!function_exists('ldap_connect')) {
73
+        print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'</p>');
74
+    }
75
+    ?>
76 76
 	<?php require_once(__DIR__ . '/part.wizard-server.php'); ?>
77 77
 	<?php require_once(__DIR__ . '/part.wizard-userfilter.php'); ?>
78 78
 	<?php require_once(__DIR__ . '/part.wizard-loginfilter.php'); ?>
Please login to merge, or discard this patch.
Braces   +10 added lines, -1 removed lines patch added patch discarded remove patch
@@ -97,7 +97,16 @@
 block discarded – undo
97 97
 				<p><label for="ldap_group_display_name"><?php p($l->t('Group Display Name Field'));?></label><input type="text" id="ldap_group_display_name" name="ldap_group_display_name" data-default="<?php p($_['ldap_group_display_name_default']); ?>" title="<?php p($l->t('The LDAP attribute to use to generate the groups\'s display name.'));?>" /></p>
98 98
 				<p><label for="ldap_base_groups"><?php p($l->t('Base Group Tree'));?></label><textarea id="ldap_base_groups" name="ldap_base_groups" placeholder="<?php p($l->t('One Group Base DN per line'));?>" data-default="<?php p($_['ldap_base_groups_default']); ?>" title="<?php p($l->t('Base Group Tree'));?>"></textarea></p>
99 99
 				<p><label for="ldap_attributes_for_group_search"><?php p($l->t('Group Search Attributes'));?></label><textarea id="ldap_attributes_for_group_search" name="ldap_attributes_for_group_search" placeholder="<?php p($l->t('Optional; one attribute per line'));?>" data-default="<?php p($_['ldap_attributes_for_group_search_default']); ?>" title="<?php p($l->t('Group Search Attributes'));?>"></textarea></p>
100
-				<p><label for="ldap_group_member_assoc_attribute"><?php p($l->t('Group-Member association'));?></label><select id="ldap_group_member_assoc_attribute" name="ldap_group_member_assoc_attribute" data-default="<?php p($_['ldap_group_member_assoc_attribute_default']); ?>" ><option value="uniqueMember"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'uniqueMember')) p(' selected'); ?>>uniqueMember</option><option value="memberUid"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'memberUid')) p(' selected'); ?>>memberUid</option><option value="member"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'member')) p(' selected'); ?>>member (AD)</option></select></p>
100
+				<p><label for="ldap_group_member_assoc_attribute"><?php p($l->t('Group-Member association'));?></label><select id="ldap_group_member_assoc_attribute" name="ldap_group_member_assoc_attribute" data-default="<?php p($_['ldap_group_member_assoc_attribute_default']); ?>" ><option value="uniqueMember"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'uniqueMember')) {
101
+    p(' selected');
102
+}
103
+?>>uniqueMember</option><option value="memberUid"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'memberUid')) {
104
+    p(' selected');
105
+}
106
+?>>memberUid</option><option value="member"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'member')) {
107
+    p(' selected');
108
+}
109
+?>>member (AD)</option></select></p>
101 110
 				<p><label for="ldap_dynamic_group_member_url"><?php p($l->t('Dynamic Group Member URL'));?></label><input type="text" id="ldap_dynamic_group_member_url" name="ldap_dynamic_group_member_url" title="<?php p($l->t('The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)'));?>" data-default="<?php p($_['ldap_dynamic_group_member_url_default']); ?>" /></p>
102 111
 				<p><label for="ldap_nested_groups"><?php p($l->t('Nested Groups'));?></label><input type="checkbox" id="ldap_nested_groups" name="ldap_nested_groups" value="1" data-default="<?php p($_['ldap_nested_groups_default']); ?>"  title="<?php p($l->t('When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)'));?>" /></p>
103 112
 				<p><label for="ldap_paging_size"><?php p($l->t('Paging chunksize'));?></label><input type="number" id="ldap_paging_size" name="ldap_paging_size" title="<?php p($l->t('Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)'));?>" data-default="<?php p($_['ldap_paging_size_default']); ?>" /></p>
Please login to merge, or discard this patch.
Spacing   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -59,70 +59,70 @@
 block discarded – undo
59 59
 
60 60
 	<div id="ldapSettings">
61 61
 	<ul>
62
-		<li id="#ldapWizard1"><a href="#ldapWizard1"><?php p($l->t('Server'));?></a></li>
63
-		<li id="#ldapWizard2"><a href="#ldapWizard2"><?php p($l->t('Users'));?></a></li>
64
-		<li id="#ldapWizard3"><a href="#ldapWizard3"><?php p($l->t('Login Attributes'));?></a></li>
65
-		<li id="#ldapWizard4"><a href="#ldapWizard4"><?php p($l->t('Groups'));?></a></li>
66
-		<li class="ldapSettingsTabs"><a href="#ldapSettings-2"><?php p($l->t('Expert'));?></a></li>
67
-		<li class="ldapSettingsTabs"><a href="#ldapSettings-1"><?php p($l->t('Advanced'));?></a></li>
62
+		<li id="#ldapWizard1"><a href="#ldapWizard1"><?php p($l->t('Server')); ?></a></li>
63
+		<li id="#ldapWizard2"><a href="#ldapWizard2"><?php p($l->t('Users')); ?></a></li>
64
+		<li id="#ldapWizard3"><a href="#ldapWizard3"><?php p($l->t('Login Attributes')); ?></a></li>
65
+		<li id="#ldapWizard4"><a href="#ldapWizard4"><?php p($l->t('Groups')); ?></a></li>
66
+		<li class="ldapSettingsTabs"><a href="#ldapSettings-2"><?php p($l->t('Expert')); ?></a></li>
67
+		<li class="ldapSettingsTabs"><a href="#ldapSettings-1"><?php p($l->t('Advanced')); ?></a></li>
68 68
 	</ul>
69
-	<?php if(OCP\App::isEnabled('user_webdavauth')) {
69
+	<?php if (OCP\App::isEnabled('user_webdavauth')) {
70 70
 		print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them.').'</p>');
71 71
 	}
72
-	if(!function_exists('ldap_connect')) {
72
+	if (!function_exists('ldap_connect')) {
73 73
 		print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'</p>');
74 74
 	}
75 75
 	?>
76
-	<?php require_once(__DIR__ . '/part.wizard-server.php'); ?>
77
-	<?php require_once(__DIR__ . '/part.wizard-userfilter.php'); ?>
78
-	<?php require_once(__DIR__ . '/part.wizard-loginfilter.php'); ?>
79
-	<?php require_once(__DIR__ . '/part.wizard-groupfilter.php'); ?>
76
+	<?php require_once(__DIR__.'/part.wizard-server.php'); ?>
77
+	<?php require_once(__DIR__.'/part.wizard-userfilter.php'); ?>
78
+	<?php require_once(__DIR__.'/part.wizard-loginfilter.php'); ?>
79
+	<?php require_once(__DIR__.'/part.wizard-groupfilter.php'); ?>
80 80
 	<fieldset id="ldapSettings-1">
81 81
 		<div id="ldapAdvancedAccordion">
82
-			<h3><?php p($l->t('Connection Settings'));?></h3>
82
+			<h3><?php p($l->t('Connection Settings')); ?></h3>
83 83
 			<div>
84
-				<p><label for="ldap_configuration_active"><?php p($l->t('Configuration Active'));?></label><input type="checkbox" id="ldap_configuration_active" name="ldap_configuration_active" value="1" data-default="<?php p($_['ldap_configuration_active_default']); ?>"  title="<?php p($l->t('When unchecked, this configuration will be skipped.'));?>" /></p>
85
-				<p><label for="ldap_backup_host"><?php p($l->t('Backup (Replica) Host'));?></label><input type="text" id="ldap_backup_host" name="ldap_backup_host" data-default="<?php p($_['ldap_backup_host_default']); ?>" title="<?php p($l->t('Give an optional backup host. It must be a replica of the main LDAP/AD server.'));?>"></p>
86
-				<p><label for="ldap_backup_port"><?php p($l->t('Backup (Replica) Port'));?></label><input type="number" id="ldap_backup_port" name="ldap_backup_port" data-default="<?php p($_['ldap_backup_port_default']); ?>"  /></p>
87
-				<p><label for="ldap_override_main_server"><?php p($l->t('Disable Main Server'));?></label><input type="checkbox" id="ldap_override_main_server" name="ldap_override_main_server" value="1" data-default="<?php p($_['ldap_override_main_server_default']); ?>"  title="<?php p($l->t('Only connect to the replica server.'));?>" /></p>
88
-				<p><label for="ldap_turn_off_cert_check"><?php p($l->t('Turn off SSL certificate validation.'));?></label><input type="checkbox" id="ldap_turn_off_cert_check" name="ldap_turn_off_cert_check" title="<?php p($l->t('Not recommended, use it for testing only! If connection only works with this option, import the LDAP server\'s SSL certificate in your %s server.', $theme->getName() ));?>" data-default="<?php p($_['ldap_turn_off_cert_check_default']); ?>" value="1"><br/></p>
89
-				<p><label for="ldap_cache_ttl"><?php p($l->t('Cache Time-To-Live'));?></label><input type="number" id="ldap_cache_ttl" name="ldap_cache_ttl" title="<?php p($l->t('in seconds. A change empties the cache.'));?>" data-default="<?php p($_['ldap_cache_ttl_default']); ?>" /></p>
84
+				<p><label for="ldap_configuration_active"><?php p($l->t('Configuration Active')); ?></label><input type="checkbox" id="ldap_configuration_active" name="ldap_configuration_active" value="1" data-default="<?php p($_['ldap_configuration_active_default']); ?>"  title="<?php p($l->t('When unchecked, this configuration will be skipped.')); ?>" /></p>
85
+				<p><label for="ldap_backup_host"><?php p($l->t('Backup (Replica) Host')); ?></label><input type="text" id="ldap_backup_host" name="ldap_backup_host" data-default="<?php p($_['ldap_backup_host_default']); ?>" title="<?php p($l->t('Give an optional backup host. It must be a replica of the main LDAP/AD server.')); ?>"></p>
86
+				<p><label for="ldap_backup_port"><?php p($l->t('Backup (Replica) Port')); ?></label><input type="number" id="ldap_backup_port" name="ldap_backup_port" data-default="<?php p($_['ldap_backup_port_default']); ?>"  /></p>
87
+				<p><label for="ldap_override_main_server"><?php p($l->t('Disable Main Server')); ?></label><input type="checkbox" id="ldap_override_main_server" name="ldap_override_main_server" value="1" data-default="<?php p($_['ldap_override_main_server_default']); ?>"  title="<?php p($l->t('Only connect to the replica server.')); ?>" /></p>
88
+				<p><label for="ldap_turn_off_cert_check"><?php p($l->t('Turn off SSL certificate validation.')); ?></label><input type="checkbox" id="ldap_turn_off_cert_check" name="ldap_turn_off_cert_check" title="<?php p($l->t('Not recommended, use it for testing only! If connection only works with this option, import the LDAP server\'s SSL certificate in your %s server.', $theme->getName())); ?>" data-default="<?php p($_['ldap_turn_off_cert_check_default']); ?>" value="1"><br/></p>
89
+				<p><label for="ldap_cache_ttl"><?php p($l->t('Cache Time-To-Live')); ?></label><input type="number" id="ldap_cache_ttl" name="ldap_cache_ttl" title="<?php p($l->t('in seconds. A change empties the cache.')); ?>" data-default="<?php p($_['ldap_cache_ttl_default']); ?>" /></p>
90 90
 			</div>
91
-			<h3><?php p($l->t('Directory Settings'));?></h3>
91
+			<h3><?php p($l->t('Directory Settings')); ?></h3>
92 92
 			<div>
93
-				<p><label for="ldap_display_name"><?php p($l->t('User Display Name Field'));?></label><input type="text" id="ldap_display_name" name="ldap_display_name" data-default="<?php p($_['ldap_display_name_default']); ?>" title="<?php p($l->t('The LDAP attribute to use to generate the user\'s display name.'));?>" /></p>
94
-				<p><label for="ldap_user_display_name_2"><?php p($l->t('2nd User Display Name Field'));?></label><input type="text" id="ldap_user_display_name_2" name="ldap_user_display_name_2" data-default="<?php p($_['ldap_user_display_name_2_default']); ?>" title="<?php p($l->t('Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe ([email protected])«.'));?>" /></p>
95
-				<p><label for="ldap_base_users"><?php p($l->t('Base User Tree'));?></label><textarea id="ldap_base_users" name="ldap_base_users" placeholder="<?php p($l->t('One User Base DN per line'));?>" data-default="<?php p($_['ldap_base_users_default']); ?>" title="<?php p($l->t('Base User Tree'));?>"></textarea></p>
96
-				<p><label for="ldap_attributes_for_user_search"><?php p($l->t('User Search Attributes'));?></label><textarea id="ldap_attributes_for_user_search" name="ldap_attributes_for_user_search" placeholder="<?php p($l->t('Optional; one attribute per line'));?>" data-default="<?php p($_['ldap_attributes_for_user_search_default']); ?>" title="<?php p($l->t('User Search Attributes'));?>"></textarea></p>
97
-				<p><label for="ldap_group_display_name"><?php p($l->t('Group Display Name Field'));?></label><input type="text" id="ldap_group_display_name" name="ldap_group_display_name" data-default="<?php p($_['ldap_group_display_name_default']); ?>" title="<?php p($l->t('The LDAP attribute to use to generate the groups\'s display name.'));?>" /></p>
98
-				<p><label for="ldap_base_groups"><?php p($l->t('Base Group Tree'));?></label><textarea id="ldap_base_groups" name="ldap_base_groups" placeholder="<?php p($l->t('One Group Base DN per line'));?>" data-default="<?php p($_['ldap_base_groups_default']); ?>" title="<?php p($l->t('Base Group Tree'));?>"></textarea></p>
99
-				<p><label for="ldap_attributes_for_group_search"><?php p($l->t('Group Search Attributes'));?></label><textarea id="ldap_attributes_for_group_search" name="ldap_attributes_for_group_search" placeholder="<?php p($l->t('Optional; one attribute per line'));?>" data-default="<?php p($_['ldap_attributes_for_group_search_default']); ?>" title="<?php p($l->t('Group Search Attributes'));?>"></textarea></p>
100
-				<p><label for="ldap_group_member_assoc_attribute"><?php p($l->t('Group-Member association'));?></label><select id="ldap_group_member_assoc_attribute" name="ldap_group_member_assoc_attribute" data-default="<?php p($_['ldap_group_member_assoc_attribute_default']); ?>" ><option value="uniqueMember"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'uniqueMember')) p(' selected'); ?>>uniqueMember</option><option value="memberUid"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'memberUid')) p(' selected'); ?>>memberUid</option><option value="member"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'member')) p(' selected'); ?>>member (AD)</option></select></p>
101
-				<p><label for="ldap_dynamic_group_member_url"><?php p($l->t('Dynamic Group Member URL'));?></label><input type="text" id="ldap_dynamic_group_member_url" name="ldap_dynamic_group_member_url" title="<?php p($l->t('The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)'));?>" data-default="<?php p($_['ldap_dynamic_group_member_url_default']); ?>" /></p>
102
-				<p><label for="ldap_nested_groups"><?php p($l->t('Nested Groups'));?></label><input type="checkbox" id="ldap_nested_groups" name="ldap_nested_groups" value="1" data-default="<?php p($_['ldap_nested_groups_default']); ?>"  title="<?php p($l->t('When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)'));?>" /></p>
103
-				<p><label for="ldap_paging_size"><?php p($l->t('Paging chunksize'));?></label><input type="number" id="ldap_paging_size" name="ldap_paging_size" title="<?php p($l->t('Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)'));?>" data-default="<?php p($_['ldap_paging_size_default']); ?>" /></p>
93
+				<p><label for="ldap_display_name"><?php p($l->t('User Display Name Field')); ?></label><input type="text" id="ldap_display_name" name="ldap_display_name" data-default="<?php p($_['ldap_display_name_default']); ?>" title="<?php p($l->t('The LDAP attribute to use to generate the user\'s display name.')); ?>" /></p>
94
+				<p><label for="ldap_user_display_name_2"><?php p($l->t('2nd User Display Name Field')); ?></label><input type="text" id="ldap_user_display_name_2" name="ldap_user_display_name_2" data-default="<?php p($_['ldap_user_display_name_2_default']); ?>" title="<?php p($l->t('Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe ([email protected])«.')); ?>" /></p>
95
+				<p><label for="ldap_base_users"><?php p($l->t('Base User Tree')); ?></label><textarea id="ldap_base_users" name="ldap_base_users" placeholder="<?php p($l->t('One User Base DN per line')); ?>" data-default="<?php p($_['ldap_base_users_default']); ?>" title="<?php p($l->t('Base User Tree')); ?>"></textarea></p>
96
+				<p><label for="ldap_attributes_for_user_search"><?php p($l->t('User Search Attributes')); ?></label><textarea id="ldap_attributes_for_user_search" name="ldap_attributes_for_user_search" placeholder="<?php p($l->t('Optional; one attribute per line')); ?>" data-default="<?php p($_['ldap_attributes_for_user_search_default']); ?>" title="<?php p($l->t('User Search Attributes')); ?>"></textarea></p>
97
+				<p><label for="ldap_group_display_name"><?php p($l->t('Group Display Name Field')); ?></label><input type="text" id="ldap_group_display_name" name="ldap_group_display_name" data-default="<?php p($_['ldap_group_display_name_default']); ?>" title="<?php p($l->t('The LDAP attribute to use to generate the groups\'s display name.')); ?>" /></p>
98
+				<p><label for="ldap_base_groups"><?php p($l->t('Base Group Tree')); ?></label><textarea id="ldap_base_groups" name="ldap_base_groups" placeholder="<?php p($l->t('One Group Base DN per line')); ?>" data-default="<?php p($_['ldap_base_groups_default']); ?>" title="<?php p($l->t('Base Group Tree')); ?>"></textarea></p>
99
+				<p><label for="ldap_attributes_for_group_search"><?php p($l->t('Group Search Attributes')); ?></label><textarea id="ldap_attributes_for_group_search" name="ldap_attributes_for_group_search" placeholder="<?php p($l->t('Optional; one attribute per line')); ?>" data-default="<?php p($_['ldap_attributes_for_group_search_default']); ?>" title="<?php p($l->t('Group Search Attributes')); ?>"></textarea></p>
100
+				<p><label for="ldap_group_member_assoc_attribute"><?php p($l->t('Group-Member association')); ?></label><select id="ldap_group_member_assoc_attribute" name="ldap_group_member_assoc_attribute" data-default="<?php p($_['ldap_group_member_assoc_attribute_default']); ?>" ><option value="uniqueMember"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'uniqueMember')) p(' selected'); ?>>uniqueMember</option><option value="memberUid"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'memberUid')) p(' selected'); ?>>memberUid</option><option value="member"<?php if (isset($_['ldap_group_member_assoc_attribute']) && ($_['ldap_group_member_assoc_attribute'] === 'member')) p(' selected'); ?>>member (AD)</option></select></p>
101
+				<p><label for="ldap_dynamic_group_member_url"><?php p($l->t('Dynamic Group Member URL')); ?></label><input type="text" id="ldap_dynamic_group_member_url" name="ldap_dynamic_group_member_url" title="<?php p($l->t('The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)')); ?>" data-default="<?php p($_['ldap_dynamic_group_member_url_default']); ?>" /></p>
102
+				<p><label for="ldap_nested_groups"><?php p($l->t('Nested Groups')); ?></label><input type="checkbox" id="ldap_nested_groups" name="ldap_nested_groups" value="1" data-default="<?php p($_['ldap_nested_groups_default']); ?>"  title="<?php p($l->t('When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)')); ?>" /></p>
103
+				<p><label for="ldap_paging_size"><?php p($l->t('Paging chunksize')); ?></label><input type="number" id="ldap_paging_size" name="ldap_paging_size" title="<?php p($l->t('Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)')); ?>" data-default="<?php p($_['ldap_paging_size_default']); ?>" /></p>
104 104
 			</div>
105
-			<h3><?php p($l->t('Special Attributes'));?></h3>
105
+			<h3><?php p($l->t('Special Attributes')); ?></h3>
106 106
 			<div>
107
-				<p><label for="ldap_quota_attr"><?php p($l->t('Quota Field'));?></label><input type="text" id="ldap_quota_attr" name="ldap_quota_attr" data-default="<?php p($_['ldap_quota_attr_default']); ?>"/></p>
108
-				<p><label for="ldap_quota_def"><?php p($l->t('Quota Default'));?></label><input type="text" id="ldap_quota_def" name="ldap_quota_def" data-default="<?php p($_['ldap_quota_def_default']); ?>" title="<?php p($l->t('in bytes'));?>" /></p>
109
-				<p><label for="ldap_email_attr"><?php p($l->t('Email Field'));?></label><input type="text" id="ldap_email_attr" name="ldap_email_attr" data-default="<?php p($_['ldap_email_attr_default']); ?>" /></p>
110
-				<p><label for="home_folder_naming_rule"><?php p($l->t('User Home Folder Naming Rule'));?></label><input type="text" id="home_folder_naming_rule" name="home_folder_naming_rule" title="<?php p($l->t('Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute.'));?>" data-default="<?php p($_['home_folder_naming_rule_default']); ?>" /></p>
107
+				<p><label for="ldap_quota_attr"><?php p($l->t('Quota Field')); ?></label><input type="text" id="ldap_quota_attr" name="ldap_quota_attr" data-default="<?php p($_['ldap_quota_attr_default']); ?>"/></p>
108
+				<p><label for="ldap_quota_def"><?php p($l->t('Quota Default')); ?></label><input type="text" id="ldap_quota_def" name="ldap_quota_def" data-default="<?php p($_['ldap_quota_def_default']); ?>" title="<?php p($l->t('in bytes')); ?>" /></p>
109
+				<p><label for="ldap_email_attr"><?php p($l->t('Email Field')); ?></label><input type="text" id="ldap_email_attr" name="ldap_email_attr" data-default="<?php p($_['ldap_email_attr_default']); ?>" /></p>
110
+				<p><label for="home_folder_naming_rule"><?php p($l->t('User Home Folder Naming Rule')); ?></label><input type="text" id="home_folder_naming_rule" name="home_folder_naming_rule" title="<?php p($l->t('Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute.')); ?>" data-default="<?php p($_['home_folder_naming_rule_default']); ?>" /></p>
111 111
 			</div>
112 112
 		</div>
113 113
 		<?php print_unescaped($_['settingControls']); ?>
114 114
 	</fieldset>
115 115
 	<fieldset id="ldapSettings-2">
116
-		<p><strong><?php p($l->t('Internal Username'));?></strong></p>
117
-		<p class="ldapIndent"><?php p($l->t('By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ].  Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users.'));?></p>
118
-		<p class="ldapIndent"><label for="ldap_expert_username_attr"><?php p($l->t('Internal Username Attribute:'));?></label><input type="text" id="ldap_expert_username_attr" name="ldap_expert_username_attr" data-default="<?php p($_['ldap_expert_username_attr_default']); ?>" /></p>
119
-		<p><strong><?php p($l->t('Override UUID detection'));?></strong></p>
120
-		<p class="ldapIndent"><?php p($l->t('By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.'));?></p>
121
-		<p class="ldapIndent"><label for="ldap_expert_uuid_user_attr"><?php p($l->t('UUID Attribute for Users:'));?></label><input type="text" id="ldap_expert_uuid_user_attr" name="ldap_expert_uuid_user_attr" data-default="<?php p($_['ldap_expert_uuid_user_attr_default']); ?>" /></p>
122
-		<p class="ldapIndent"><label for="ldap_expert_uuid_group_attr"><?php p($l->t('UUID Attribute for Groups:'));?></label><input type="text" id="ldap_expert_uuid_group_attr" name="ldap_expert_uuid_group_attr" data-default="<?php p($_['ldap_expert_uuid_group_attr_default']); ?>" /></p>
123
-		<p><strong><?php p($l->t('Username-LDAP User Mapping'));?></strong></p>
124
-		<p class="ldapIndent"><?php p($l->t('Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.'));?></p>
125
-		<p class="ldapIndent"><button type="button" id="ldap_action_clear_user_mappings" name="ldap_action_clear_user_mappings"><?php p($l->t('Clear Username-LDAP User Mapping'));?></button><br/><button type="button" id="ldap_action_clear_group_mappings" name="ldap_action_clear_group_mappings"><?php p($l->t('Clear Groupname-LDAP Group Mapping'));?></button></p>
116
+		<p><strong><?php p($l->t('Internal Username')); ?></strong></p>
117
+		<p class="ldapIndent"><?php p($l->t('By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ].  Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users.')); ?></p>
118
+		<p class="ldapIndent"><label for="ldap_expert_username_attr"><?php p($l->t('Internal Username Attribute:')); ?></label><input type="text" id="ldap_expert_username_attr" name="ldap_expert_username_attr" data-default="<?php p($_['ldap_expert_username_attr_default']); ?>" /></p>
119
+		<p><strong><?php p($l->t('Override UUID detection')); ?></strong></p>
120
+		<p class="ldapIndent"><?php p($l->t('By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.')); ?></p>
121
+		<p class="ldapIndent"><label for="ldap_expert_uuid_user_attr"><?php p($l->t('UUID Attribute for Users:')); ?></label><input type="text" id="ldap_expert_uuid_user_attr" name="ldap_expert_uuid_user_attr" data-default="<?php p($_['ldap_expert_uuid_user_attr_default']); ?>" /></p>
122
+		<p class="ldapIndent"><label for="ldap_expert_uuid_group_attr"><?php p($l->t('UUID Attribute for Groups:')); ?></label><input type="text" id="ldap_expert_uuid_group_attr" name="ldap_expert_uuid_group_attr" data-default="<?php p($_['ldap_expert_uuid_group_attr_default']); ?>" /></p>
123
+		<p><strong><?php p($l->t('Username-LDAP User Mapping')); ?></strong></p>
124
+		<p class="ldapIndent"><?php p($l->t('Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.')); ?></p>
125
+		<p class="ldapIndent"><button type="button" id="ldap_action_clear_user_mappings" name="ldap_action_clear_user_mappings"><?php p($l->t('Clear Username-LDAP User Mapping')); ?></button><br/><button type="button" id="ldap_action_clear_group_mappings" name="ldap_action_clear_group_mappings"><?php p($l->t('Clear Groupname-LDAP Group Mapping')); ?></button></p>
126 126
 		<?php print_unescaped($_['settingControls']); ?>
127 127
 	</fieldset>
128 128
 	</div>
Please login to merge, or discard this patch.
apps/user_ldap/templates/part.wizard-groupfilter.php 1 patch
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@  discard block
 block discarded – undo
1 1
 <fieldset id="ldapWizard4">
2 2
 	<div>
3 3
 		<p>
4
-			<?php p($l->t('Groups meeting these criteria are available in %s:', $theme->getName()));?>
4
+			<?php p($l->t('Groups meeting these criteria are available in %s:', $theme->getName())); ?>
5 5
 		</p>
6 6
 		<p>
7 7
 			<label for="ldap_groupfilter_objectclass">
8
-				<?php p($l->t('Only these object classes:'));?>
8
+				<?php p($l->t('Only these object classes:')); ?>
9 9
 			</label>
10 10
 
11 11
 			<select id="ldap_groupfilter_objectclass" multiple="multiple"
@@ -14,10 +14,10 @@  discard block
 block discarded – undo
14 14
 		</p>
15 15
 		<p>
16 16
 			<label for="ldap_groupfilter_groups">
17
-				<?php p($l->t('Only from these groups:'));?>
17
+				<?php p($l->t('Only from these groups:')); ?>
18 18
 			</label>
19 19
 
20
-			<input type="text" class="ldapManyGroupsSupport ldapManyGroupsSearch hidden" placeholder="<?php p($l->t('Search groups'));?>" />
20
+			<input type="text" class="ldapManyGroupsSupport ldapManyGroupsSearch hidden" placeholder="<?php p($l->t('Search groups')); ?>" />
21 21
 
22 22
 			<select id="ldap_groupfilter_groups" multiple="multiple"
23 23
 			 name="ldap_groupfilter_groups" class="multiSelectPlugin">
@@ -27,25 +27,25 @@  discard block
 block discarded – undo
27 27
 		<p class="ldapManyGroupsSupport hidden">
28 28
 			<label></label>
29 29
 			<select class="ldapGroupList ldapGroupListAvailable" multiple="multiple"
30
-					title="<?php p($l->t('Available groups'));?>"></select>
30
+					title="<?php p($l->t('Available groups')); ?>"></select>
31 31
 			<span class="buttonSpan">
32 32
 				<button class="ldapGroupListSelect" type="button">&gt;</button><br/>
33 33
 				<button class="ldapGroupListDeselect" type="button">&lt;</button>
34 34
 			</span>
35 35
 			<select class="ldapGroupList ldapGroupListSelected" multiple="multiple"
36
-					title="<?php p($l->t('Selected groups'));?>"></select>
36
+					title="<?php p($l->t('Selected groups')); ?>"></select>
37 37
 		</p>
38 38
 		<p>
39
-			<label><a id='toggleRawGroupFilter' class='ldapToggle'>↓ <?php p($l->t('Edit LDAP Query'));?></a></label>
39
+			<label><a id='toggleRawGroupFilter' class='ldapToggle'>↓ <?php p($l->t('Edit LDAP Query')); ?></a></label>
40 40
 		</p>
41 41
 		<p id="ldapReadOnlyGroupFilterContainer" class="hidden ldapReadOnlyFilterContainer">
42
-			<label><?php p($l->t('LDAP Filter:'));?></label>
42
+			<label><?php p($l->t('LDAP Filter:')); ?></label>
43 43
 			<span class="ldapFilterReadOnlyElement ldapInputColElement"></span>
44 44
 		</p>
45 45
 		<p id="rawGroupFilterContainer" class="invisible">
46 46
 			<textarea type="text" id="ldap_group_filter" name="ldap_group_filter"
47
-					  placeholder="<?php p($l->t('Edit LDAP Query'));?>"
48
-					  title="<?php p($l->t('The filter specifies which LDAP groups shall have access to the %s instance.', $theme->getName()));?>">
47
+					  placeholder="<?php p($l->t('Edit LDAP Query')); ?>"
48
+					  title="<?php p($l->t('The filter specifies which LDAP groups shall have access to the %s instance.', $theme->getName())); ?>">
49 49
 			</textarea>
50 50
 		</p>
51 51
 		<p>
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
 		</p>
54 54
 		<p class="ldap_count">
55 55
 			<button class="ldapGetEntryCount ldapGetGroupCount" name="ldapGetEntryCount" type="button">
56
-				<?php p($l->t('Verify settings and count groups'));?>
56
+				<?php p($l->t('Verify settings and count groups')); ?>
57 57
 			</button>
58 58
 			<span id="ldap_group_count"></span>
59 59
 		</p>
Please login to merge, or discard this patch.