Author: sevein
Date: Mon Aug 13 19:11:45 2012
New Revision: 12090
Log:
Add getRepositories method to QubitUser class, use it to print repository
affiliation in the user profile page when the app is configured as
multirepository. Fixes issue 1915.
Modified:
trunk/apps/qubit/modules/user/templates/indexSuccess.php
trunk/lib/model/QubitUser.php
Modified: trunk/apps/qubit/modules/user/templates/indexSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/user/templates/indexSuccess.php Mon Aug 13
18:41:20 2012 (r12089)
+++ trunk/apps/qubit/modules/user/templates/indexSuccess.php Mon Aug 13
19:11:45 2012 (r12090)
@@ -47,6 +47,21 @@
</div>
<?php endif; ?>
+ <?php if (sfConfig::get('app_multi_repository')): ?>
+ <?php if (0 < count($repositories = $resource->getRepositories())): ?>
+ <div class="field">
+ <h3><?php echo __('Repository affiliation') ?></h3>
+ <div>
+ <ul>
+ <?php foreach ($repositories as $item): ?>
+ <li><?php echo render_title($item) ?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endif; ?>
+
</div>
<?php echo get_partial('showActions', array('resource' => $resource)) ?>
Modified: trunk/lib/model/QubitUser.php
==============================================================================
--- trunk/lib/model/QubitUser.php Mon Aug 13 18:41:20 2012 (r12089)
+++ trunk/lib/model/QubitUser.php Mon Aug 13 19:11:45 2012 (r12090)
@@ -144,7 +144,7 @@
if (!$user->active)
{
$error = 'inactive user';
-
+
return null;
}
@@ -223,4 +223,72 @@
}
}
}
-} // User
+
+ /**
+ * Get an array of QubitRepository objects where the current user has been
+ * added explicit access via its own user of any of its groups
+ *
+ * @return QubitUser
+ */
+ public function getRepositories()
+ {
+ // Get user's groups
+ $userGroups = array();
+ if (0 < count($aclUserGroups = $this->aclUserGroups))
+ {
+ foreach ($aclUserGroups as $aclUserGroup)
+ {
+ $userGroups[] = $aclUserGroup->groupId;
+ }
+ }
+ else
+ {
+ // User is *always* part of authenticated group
+ $userGroups = array(QubitAclGroup::AUTHENTICATED_ID);
+ }
+
+ // Get access control permissions
+ $criteria = new Criteria;
+ $criteria->addJoin(QubitAclPermission::OBJECT_ID, QubitObject::ID,
Criteria::LEFT_JOIN);
+ $c1 = $criteria->getNewCriterion(QubitAclPermission::USER_ID, $this->id);
+
+ // Add group criteria
+ if (1 == count($userGroups))
+ {
+ $c2 = $criteria->getNewCriterion(QubitAclPermission::GROUP_ID,
$userGroups[0]);
+ }
+ else
+ {
+ $c2 = $criteria->getNewCriterion(QubitAclPermission::GROUP_ID,
$userGroups, Criteria::IN);
+ }
+ $c1->addOr($c2);
+
+ // Add information object criteria
+ $c3 = $criteria->getNewCriterion(QubitObject::CLASS_NAME,
'QubitInformationObject');
+ $c4 = $criteria->getNewCriterion(QubitAclPermission::OBJECT_ID, null,
Criteria::ISNULL);
+ $c3->addOr($c4);
+ $c1->addAnd($c3);
+ $criteria->add($c1);
+
+ // Sort
+ $criteria->addAscendingOrderByColumn(QubitAclPermission::CONSTANTS);
+ $criteria->addAscendingOrderByColumn(QubitAclPermission::OBJECT_ID);
+ $criteria->addAscendingOrderByColumn(QubitAclPermission::USER_ID);
+ $criteria->addAscendingOrderByColumn(QubitAclPermission::GROUP_ID);
+
+ // Build ACL
+ $repositories = array();
+ if (0 < count($permissions = QubitAclPermission::get($criteria)))
+ {
+ foreach ($permissions as $item)
+ {
+ if (null !== $constant = $item->getConstants(array('name' =>
'repository')))
+ {
+ $repositories[] = QubitRepository::getBySlug($constant);
+ }
+ }
+ }
+
+ return $repositories;
+ }
+}
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.