/**
* {@inheritDoc}
**/
public function getIssues($statuses, $offset = 0, $limit = 500, $sort = 'id')
{
$statusIds = $this->convertStatusesToIds($statuses);
$walker = new Issues\Walker($this->api);
$statusFilter = implode(' OR ', array_map(function ($id) {
return 'status = ' . $id;
}, $statusIds));
$walker->push("{$statusFilter} ORDER BY {$sort}");
$result = [];
foreach ($walker as $issue) {
$branches = [];
$date = '20990101';
foreach ($issue->getFields() as $fieldName => $value) {
$matches = [];
if (is_string($fieldName) && preg_match("/Branch \\((.*)\\)/", $fieldName, $matches) && !empty($value)) {
$branch = trim($value);
$branches[$matches[1]] = $branch;
$currentDate = substr($branch, 4, 8);
//get date from the branch
if ($currentDate < $date) {
$date = $currentDate;
}
}
}
$result[$issue->getKey()] = ['id' => $issue->getKey(), 'author' => $issue->getReporter()['displayName'], 'asignee' => $issue->getAssignee()['displayName'], 'subject' => $issue->getSummary(), 'status' => $this->statusIdsFlipped[$issue->getStatus()['id']], 'date' => empty($branches) ? null : date('Y-m-d', strtotime($date)), 'branches' => $branches, 'issueTracker' => $this];
}
return $result;
}