Add a displayname to the database group backend
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
88b6dc5eaf
commit
45506adc5c
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OC\Core\Migrations;
|
||||
|
||||
use Closure;
|
||||
use Doctrine\DBAL\Types\Type;
|
||||
use OCP\DB\ISchemaWrapper;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\Migration\SimpleMigrationStep;
|
||||
use OCP\Migration\IOutput;
|
||||
|
||||
class Version18000Date20190920085628 extends SimpleMigrationStep {
|
||||
|
||||
/** @var IDBConnection */
|
||||
protected $connection;
|
||||
|
||||
public function __construct(IDBConnection $connection) {
|
||||
$this->connection = $connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
* @return null|ISchemaWrapper
|
||||
*/
|
||||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
|
||||
/** @var ISchemaWrapper $schema */
|
||||
$schema = $schemaClosure();
|
||||
|
||||
if ($schema->hasTable('groups')) {
|
||||
$table = $schema->getTable('groups');
|
||||
|
||||
$table->addColumn('displayname', Type::STRING, [
|
||||
'notnull' => true,
|
||||
'length' => 255,
|
||||
]);
|
||||
}
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IOutput $output
|
||||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
|
||||
* @param array $options
|
||||
*/
|
||||
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
|
||||
$query = $this->connection->getQueryBuilder();
|
||||
$query->update('groups')
|
||||
->set('displayname', 'gid');
|
||||
$query->execute();
|
||||
}
|
||||
}
|
|
@ -49,6 +49,8 @@ use OCP\Group\Backend\ICountDisabledInGroup;
|
|||
use OCP\Group\Backend\ICountUsersBackend;
|
||||
use OCP\Group\Backend\ICreateGroupBackend;
|
||||
use OCP\Group\Backend\IDeleteGroupBackend;
|
||||
use OCP\Group\Backend\IGetDisplayNameBackend;
|
||||
use OCP\Group\Backend\IGroupDetailsBackend;
|
||||
use OCP\Group\Backend\IRemoveFromGroupBackend;
|
||||
use OCP\IDBConnection;
|
||||
|
||||
|
@ -61,6 +63,8 @@ class Database extends ABackend
|
|||
ICountUsersBackend,
|
||||
ICreateGroupBackend,
|
||||
IDeleteGroupBackend,
|
||||
IGetDisplayNameBackend,
|
||||
IGroupDetailsBackend,
|
||||
IRemoveFromGroupBackend {
|
||||
|
||||
/** @var string[] */
|
||||
|
@ -391,7 +395,7 @@ class Database extends ABackend
|
|||
*/
|
||||
public function countDisabledInGroup(string $gid): int {
|
||||
$this->fixDI();
|
||||
|
||||
|
||||
$query = $this->dbConn->getQueryBuilder();
|
||||
$query->select($query->createFunction('COUNT(DISTINCT ' . $query->getColumnName('uid') . ')'))
|
||||
->from('preferences', 'p')
|
||||
|
@ -400,11 +404,11 @@ class Database extends ABackend
|
|||
->andWhere($query->expr()->eq('configkey', $query->createNamedParameter('enabled')))
|
||||
->andWhere($query->expr()->eq('configvalue', $query->createNamedParameter('false'), IQueryBuilder::PARAM_STR))
|
||||
->andWhere($query->expr()->eq('gid', $query->createNamedParameter($gid), IQueryBuilder::PARAM_STR));
|
||||
|
||||
|
||||
$result = $query->execute();
|
||||
$count = $result->fetchColumn();
|
||||
$result->closeCursor();
|
||||
|
||||
|
||||
if ($count !== false) {
|
||||
$count = (int)$count;
|
||||
} else {
|
||||
|
@ -414,4 +418,36 @@ class Database extends ABackend
|
|||
return $count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $gid
|
||||
* @return string
|
||||
* @since 17.0.0
|
||||
*/
|
||||
public function getDisplayName(string $gid): string {
|
||||
$query = $this->dbConn->getQueryBuilder();
|
||||
$query->select('displayname')
|
||||
->from('groups')
|
||||
->where($query->expr()->eq('gid', $query->createNamedParameter($gid)));
|
||||
|
||||
$result = $query->execute();
|
||||
$displayName = $result->fetchColumn();
|
||||
$result->closeCursor();
|
||||
|
||||
return (string) $displayName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $gid
|
||||
* @return array
|
||||
* @since 14.0.0
|
||||
*/
|
||||
public function getGroupDetails(string $gid): array {
|
||||
$displayName = $this->getDisplayName($gid);
|
||||
if ($displayName !== '') {
|
||||
return ['displayName' => $displayName];
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,10 @@ namespace OCP\Group\Backend;
|
|||
* @since 17.0.0
|
||||
*/
|
||||
interface IGetDisplayNameBackend {
|
||||
|
||||
/**
|
||||
* @param string $gid
|
||||
* @return string
|
||||
* @since 17.0.0
|
||||
*/
|
||||
public function getDisplayName(string $gid): string;
|
||||
|
|
Loading…
Reference in New Issue