1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-28 01:32:42 +01:00
phorge-phorge/src/applications/project/engineextension
epriestley 26ba4e8717 Materialize parent project memberships
Summary:
Ref T10010. Subprojects have the following general membership rule: if you are a member of a subproject ("Engineering > Backend"), you are also a member of the parent project.

It would be unreasonably difficult to implement this rule directly in SQL when querying `withMemberPHIDs()`, because we'd have to do an arbitrarily large number of arbitrarily deep joins, or fetch and then requery a lot of data.

Instead, introduce "materailized members", which are just a copy of all the effective members of a project. When a subproject has a membership change, we go recompute the effective membership of all the parent projects. Then we can just JOIN to satisfy `withMemberPHIDs()`.

Having this process avialable will also be useful in the future, when a project's membership might be defined by some external source.

Also make milestones mostly work like we'd expect them to with respect to membership and visibility.

Test Plan:
  - Added and executed unit tests.
  - Changed project members, verified materialized members populated correctly in the database.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10010

Differential Revision: https://secure.phabricator.com/D14863
2015-12-23 14:39:09 -08:00
..
PhabricatorProjectsEditEngineExtension.php Improve Conduit type handling for *.edit endpoints 2015-12-16 08:45:46 -08:00
PhabricatorProjectsFulltextEngineExtension.php Modularize fulltext indexing of Projects, Subscriptions and Custom Fields 2015-12-21 17:04:25 -08:00
PhabricatorProjectsMembershipIndexEngineExtension.php Materialize parent project memberships 2015-12-23 14:39:09 -08:00
PhabricatorProjectsSearchEngineAttachment.php Add a "projects" Search attachment for Conduit APIs 2015-12-14 11:53:17 -08:00
PhabricatorProjectsSearchEngineExtension.php Add a "content" attachment for Pastes for Conduit API 2015-12-14 11:53:32 -08:00