Skip to content
Snippets Groups Projects
Commit 0a8bbf52 authored by Lidiya Gelemeev's avatar Lidiya Gelemeev
Browse files

Account details are in NC in oc_preferences and not in on_accounts

parent ae8a30cf
No related branches found
No related tags found
1 merge request!1Devel
This commit is part of merge request !1. Comments created here will be created in the context of that merge request.
......@@ -130,13 +130,17 @@ class FilecacheMapper extends ExtMapper {
private function joinUserAccounts(IQueryBuilder $query) {
if ($this->accountsState != 0) {
$query->join('fc', StoragesMapper::STORAGES_TABLE, 's', 's.numeric_id = fc.storage')
->join('s', AccountsMapper::ACCOUNTS_TABLE, 'a', "CONCAT('home::', a.user_id) = s.id");
->join('s', PreferencesMapper::PREFERENCES_TABLE, 'p', "CONCAT('home::', p.userid) = s.id");
}
}
private function addUserAccountsCondition(IQueryBuilder $query) {
if ($this->accountsState != 0) {
$query->andWhere($query->expr()->eq('a.state', $query->createPositionalParameter($this->accountsState, IQueryBuilder::PARAM_INT)));
$query->andWhere(
$query->expr()->andX($query->expr()->eq('configkey',
$query->createParameter('enabled')),
$query->expr()->in('configvalue', $query->createParameter('true'))
));
}
}
......
......@@ -9,11 +9,11 @@ use OCP\IDBConnection;
use OCP\DB\QueryBuilder\IQueryBuilder;
class AccountsMapper extends ExtMapper {
const ACCOUNTS_TABLE = 'accounts';
class PreferencesMapper extends ExtMapper {
const PREFERENCES_TABLE = 'preferences';
public function __construct(IDBConnection $db, int $chunkSize) {
parent::__construct($db, self::ACCOUNTS_TABLE, $chunkSize);
parent::__construct($db, self::PREFERENCES_TABLE, $chunkSize);
}
public function queryTotalCount(int $state) {
......@@ -21,7 +21,7 @@ class AccountsMapper extends ExtMapper {
'state' => $state,
'count' => 0
];
$this->chunkedQuery('id', array($this, 'queryTotalCountCallback'), $data);
$this->chunkedQuery('userid', array($this, 'queryTotalCountCallback'), $data);
return $data['count'];
}
......@@ -30,9 +30,10 @@ class AccountsMapper extends ExtMapper {
$query->selectAlias($query->createFunction('COUNT(*)'), 'c')
->selectAlias($query->createFunction('MAX(id)'), 'm')
->from(self::ACCOUNTS_TABLE)
->where($query->expr()->eq('state', $query->createPositionalParameter($state, IQueryBuilder::PARAM_INT)));
$this->addChunkCondition($query,'id', $offset);
->from(self::PREFERENCES_TABLE)
->where($query->expr()->eq('configkey', $query->createNamedParameter('enabled')))
->andWhere($query->expr()->in('configvalue', $query->createParameter($state)));
$this->addChunkCondition($query,'userid', $offset);
// Query values and add up count
$values = $this->queryValues($query, ['c', 'm']);
......@@ -46,7 +47,7 @@ class AccountsMapper extends ExtMapper {
'since' => $since,
'count' => 0
];
$this->chunkedQuery('id', array($this, 'queryActiveCountCallback'), $data);
$this->chunkedQuery('userid', array($this, 'queryActiveCountCallback'), $data);
return $data['count'];
}
......@@ -55,9 +56,10 @@ class AccountsMapper extends ExtMapper {
$query->selectAlias($query->createFunction('COUNT(*)'), 'c')
->selectAlias($query->createFunction('MAX(id)'), 'm')
->from(self::ACCOUNTS_TABLE)
->where($query->expr()->gte('last_login', $query->createPositionalParameter($since, IQueryBuilder::PARAM_INT)));
$this->addChunkCondition($query,'id', $offset);
->from(self::PREFERENCES_TABLE)
->where($query->expr()->gte('configkey', $query->createNamedParameter('lastLogin')))
->andWhere($query->expr()->in('configvalue', $query->createParameter($since)));
$this->addChunkCondition($query,'userid', $offset);
// Query values and add up count
$values = $this->queryValues($query, ['c', 'm']);
......@@ -70,7 +72,7 @@ class AccountsMapper extends ExtMapper {
$data = [
'storages' => []
];
$this->chunkedQuery('id', array($this, 'queryUserStoragesCallback'), $data);
$this->chunkedQuery('userid', array($this, 'queryUserStoragesCallback'), $data);
return $data['storages'];
}
......@@ -78,13 +80,18 @@ class AccountsMapper extends ExtMapper {
$storages = &$data['storages'];
$query->selectAlias('fc.size', 's')
->selectAlias('a.id', 'i')
->from(self::ACCOUNTS_TABLE, 'a')
->join('a', StoragesMapper::STORAGES_TABLE, 's', "s.id = CONCAT('home::', a.user_id)")
->selectAlias('p.userid', 'i')
->from(self::PREFERENCES_TABLE, 'p')
->join('p', StoragesMapper::STORAGES_TABLE, 's', "s.id = CONCAT('home::', p.userid)")
->join('s', FilecacheMapper::FILECACHE_TABLE, 'fc', 'fc.storage = s.numeric_id')
->where($query->expr()->eq('a.state', $query->createPositionalParameter('1'))) #Account::STATE_ENABLED
->where($query->expr()->orX(
$query->expr()->andX($query->expr()->eq('configkey',
$query->createParameter('enabled')),
$query->expr()->in('configvalue', $query->createParameter('true'))
),
$query->expr()->isNull('configkey')))
->andWhere($query->expr()->eq('fc.path', $query->createPositionalParameter('files')));
$this->addChunkCondition($query,'a.id', $offset);
$this->addChunkCondition($query,'p.userid', $offset);
// Add storages and get highest ID
$highestID = 0;
......@@ -110,8 +117,13 @@ class AccountsMapper extends ExtMapper {
$quotas = &$data['quotas'];
$query->select('id', 'user_id', 'quota', 'backend')
->from(self::ACCOUNTS_TABLE)
->where($query->expr()->eq('state', $query->createPositionalParameter('1', IQueryBuilder::PARAM_INT))) #Account::STATE_ENABLED
->from(self::PREFERENCES_TABLE)
->where($query->expr()->orX(
$query->expr()->andX($query->expr()->eq('configkey',
$query->createParameter('enabled')),
$query->expr()->in('configvalue', $query->createParameter('true'))
),
$query->expr()->isNull('configkey')))
->andWhere($query->expr()->isNotNull('quota'))
->andWhere($query->expr()->neq('quota', $query->createPositionalParameter('')))
->andWhere($query->expr()->neq($query->createFunction('LOWER(quota)'), $query->createPositionalParameter('none')));
......
......@@ -2,7 +2,7 @@
namespace OCA\SccuotNG\Stats\Collector;
use OCA\SccuotNG\Db\OC\AccountsMapper;
use OCA\SccuotNG\Db\OC\PreferencesMapper;
use OCA\SccuotNG\Misc\TimePeriods;
use OCA\SccuotNG\Service\ConfigService;
use OCA\SccuotNG\Stats\Value\UsersCountValue;
......@@ -11,9 +11,9 @@ use OCP\IDBConnection;
class UsersCountCollector extends BaseCollector {
protected function collectData(IDBConnection $db, int $timestamp, int $chunkSize, ConfigService $config): array {
$mapper = new AccountsMapper($db, $chunkSize);
$activeUsers = $mapper->queryTotalCount(1); #enabled
$closedUsers = $mapper->queryTotalCount(0); #disabled
$mapper = new PreferencesMapper($db, $chunkSize);
$activeUsers = $mapper->queryTotalCount('true');
$closedUsers = $mapper->queryTotalCount('false');
$values = [UsersCountValue::TOTAL_COUNT => $activeUsers + $closedUsers, UsersCountValue::CLOSED_COUNT => $closedUsers];
foreach (TimePeriods::periods() as $k => $period) {
$values[$k] = $mapper->queryActiveCount($period->before($timestamp));
......
......@@ -2,7 +2,7 @@
namespace OCA\SccuotNG\Stats\Collector;
use OCA\SccuotNG\Db\OC\AccountsMapper;
use OCA\SccuotNG\Db\OC\PreferencesMapper;
use OCA\SccuotNG\Db\OC\StoragesMapper;
use OCA\SccuotNG\Service\ConfigService;
use OCA\SccuotNG\Util\FileSize;
......@@ -11,7 +11,7 @@ use OCP\IDBConnection;
class UsersQuotaCollector extends BaseCollector {
protected function collectData(IDBConnection $db, int $timestamp, int $chunkSize, ConfigService $config) {
$accMapper = new AccountsMapper($db, $chunkSize);
$accMapper = new PreferencesMapper($db, $chunkSize);
$storeMapper = new StoragesMapper($db, $chunkSize);
$userQuotas = $accMapper->queryUserQuotas($this->getDefaultQuotas($config));
$quotaUsages = [];
......
......@@ -2,14 +2,14 @@
namespace OCA\SccuotNG\Stats\Collector;
use OCA\SccuotNG\Db\OC\AccountsMapper;
use OCA\SccuotNG\Db\OC\PreferencesMapper;
use OCA\SccuotNG\Service\ConfigService;
use OCP\IDBConnection;
class UsersStorageCollector extends BaseCollector {
protected function collectData(IDBConnection $db, int $timestamp, int $chunkSize, ConfigService $config) {
$mapper = new AccountsMapper($db, $chunkSize);
$mapper = new PreferencesMapper($db, $chunkSize);
$filesSizes = $mapper->queryUserStorages();
sort($filesSizes);
return $filesSizes;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment