Add a "columns" attachment to the maniphest.search API method


Add a "columns" attachment to the maniphest.search API method

Ref T12074. This allows callers to identify which columns an object appears in (currently, always tasks).

There are a few major cases:

  • Object is in a normal column: we return column information.
  • Object is in a proxy column (subproject or milestone). For example, when you look at the board for "Some Parent Project", the task might show up in a milestone column. I've chosen to not return anything in this case: you can figure out that the task is there by looking at the project structure, and this is kind of an internal artifact of the implementation and probably not useful to callers.
  • Project does not have a workboard: we return nothing.

These seem fairly reasonable, I think?

Test Plan:

  • Queried for tasks, using the "columns" attachment.
  • Dragged a task across a board, querying it repeatedly. Got expected results for normal column (the column), subprojects with no board (nothing), milestones with no board (nothing) and mielstones/subprojects with a board (the column on that board, only, not the proxy column on the parent).

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12074

Differential Revision: https://secure.phabricator.com/D17156