]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add command line tool to show numbers of users and user directories
authorArthur Schiwon <blizzz@owncloud.com>
Tue, 7 Jan 2014 22:06:37 +0000 (23:06 +0100)
committerArthur Schiwon <blizzz@owncloud.com>
Tue, 7 Jan 2014 22:06:37 +0000 (23:06 +0100)
core/command/user/report.php [new file with mode: 0644]
core/register_command.php

diff --git a/core/command/user/report.php b/core/command/user/report.php
new file mode 100644 (file)
index 0000000..f95ba25
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Copyright (c) 2014 Arthur Schiwon <blizzz@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Core\Command\User;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Helper\TableHelper;
+
+class Report extends Command {
+       protected function configure() {
+               $this
+                       ->setName('user:report')
+                       ->setDescription('shows how many users have access');
+       }
+
+       protected function execute(InputInterface $input, OutputInterface $output) {
+               $table = $this->getHelperSet()->get('table');
+               $table->setHeaders(array('User Report', ''));
+               $userCountArray = $this->countUsers();
+               if(!empty($userCountArray)) {
+                       $total = 0;
+                       $rows = array();
+                       foreach($userCountArray as $classname => $users) {
+                               $total += $users;
+                               $rows[] = array($classname, $users);
+                       }
+
+                       $rows[] = array(' ');
+                       $rows[] = array('total users', $total);
+               } else {
+                       $rows[] = array('No backend enabled that supports user counting', '');
+               }
+
+               $userDirectoryCount = $this->countUserDirectories();
+               $rows[] = array(' ');
+               $rows[] = array('user directories', $userDirectoryCount);
+
+               $table->setRows($rows);
+               $table->render($output);
+       }
+
+       private function countUsers() {
+               \OC_App::loadApps(array('authentication'));
+               $userManager = \OC::$server->getUserManager();
+               return $userManager->countUsers();
+       }
+
+       private function countUserDirectories() {
+               $dataview = new \OC\Files\View('/');
+               $userDirectories = $dataview->getDirectoryContent('/', 'httpd/unix-directory');
+               return count($userDirectories);
+       }
+}
\ No newline at end of file
index e4f3b124365b92c08321fb7fc94eed343852882d..2efa838e9ee9b8c69c1e8b3e195862d6be086a0d 100644 (file)
@@ -15,3 +15,4 @@ $application->add(new OC\Core\Command\App\Disable());
 $application->add(new OC\Core\Command\App\Enable());
 $application->add(new OC\Core\Command\App\ListApps());
 $application->add(new OC\Core\Command\Maintenance\Repair(new \OC\Repair()));
+$application->add(new OC\Core\Command\User\Report());