DbUserGroupBackend: Do not use the repository abstraction internally

That's overhead which is not necessary.

refs #8826
This commit is contained in:
Johannes Meyer 2015-05-13 10:34:00 +02:00
parent 7d982068a5
commit 47dfcf5e1d

View File

@ -102,19 +102,23 @@ class DbUserGroupBackend extends DbRepository implements UserGroupBackendInterfa
*/ */
public function getMemberships(User $user) public function getMemberships(User $user)
{ {
$groupStmt = $this->ds->select()
->from($this->prependTablePrefix('group'), array('name', 'parent'))
->getSelectQuery()
->query();
$groups = array(); $groups = array();
$groupsStmt = $this->select(array('group_name', 'parent_name'))->getQuery()->getSelectQuery()->query(); foreach ($groupStmt as $group) {
foreach ($groupsStmt as $group) { $groups[$group->name] = $group->parent;
$groups[$group->group_name] = $group->parent_name;
} }
$memberships = array(); $membershipStmt = $this->ds->select() // TODO: Join this table
$membershipsStmt = $this->ds->getDbAdapter() // TODO: Use the join feature, once available ->from($this->prependTablePrefix('group_membership'), array('group_name'))
->select() ->where('username', $user->getUsername())
->from($this->ds->getTablePrefix() . 'group_membership', array('group_name')) ->getSelectQuery()
->where('username = ?', $user->getUsername())
->query(); ->query();
foreach ($membershipsStmt as $membership) { $memberships = array();
foreach ($membershipStmt as $membership) {
$memberships[] = $membership->group_name; $memberships[] = $membership->group_name;
$parent = $groups[$membership->group_name]; $parent = $groups[$membership->group_name];
while ($parent !== null) { while ($parent !== null) {