Gush\ThirdParty\Bitbucket\BitbucketIssueTracker::getIssues PHP Метод

getIssues() публичный Метод

public getIssues ( array $parameters = [], $limit = 30 )
$parameters array
    public function getIssues(array $parameters = [], $limit = 30)
    {
        $this->client->getResultPager()->setPerPage(null);
        $this->client->getResultPager()->setPage(1);
        // since, labels and mentioned are supported, but requires an API change or custom resultPager when limiting
        $response = $this->client->apiIssues()->all($this->getUsername(), $this->getRepository(), $this->prepareParameters($this->prepareFilter($parameters)));
        $resultArray = json_decode($response->getContent(), true);
        $issues = [];
        $priorities = [];
        $kinds = [];
        $versions = [];
        $components = [];
        if (!empty($parameters['labels']) && false !== strpos($parameters['labels'], ',')) {
            $labels = explode(',', $parameters['labels']);
            $labels = array_map('trim', $labels);
            foreach ($labels as $label) {
                switch ($this->detectLabelType($label)) {
                    case 'priority':
                        $priorities[] = $label;
                        break;
                    case 'kind':
                        $kinds[] = $label;
                        break;
                    case 'version':
                        $versions[] = $label;
                        break;
                    default:
                        $components[] = $label;
                        break;
                }
            }
        }
        if (!empty($parameters['since'])) {
            $parameters['since'] = strtotime($parameters['since']);
        }
        foreach ($this->client->getResultPager()->fetch($resultArray, 'issues') as $issue) {
            if (!empty($parameters['since'])) {
                $issueSince = empty($issue['utc_last_updated']) ? $issue['utc_created_on'] : $issue['utc_last_updated'];
                $issueSince = strtotime($issueSince);
                // Only issues updated at or after this time are returned.
                if ($parameters['since'] < $issueSince) {
                    continue;
                }
            }
            // Note this also match in markdown
            // Use a regex to prevent half name matches, @user also matching @username
            if (!empty($parameters['mentioned']) && !preg_match(sprintf('{@%s($|\\s)}', preg_quote($parameters['mentioned'])), $issue['content'])) {
                continue;
            }
            if ([] !== $priorities && !in_array($issue['priority'], $priorities, true)) {
                continue;
            }
            if ([] !== $kinds && !in_array($issue['metadata']['kind'], $kinds, true)) {
                continue;
            }
            if ([] !== $versions && !in_array($issue['metadata']['version'], $versions, true)) {
                continue;
            }
            if ([] !== $components && !in_array($issue['metadata']['component'], $components, true)) {
                continue;
            }
            $issues[] = $this->adaptIssueStructure($issue);
        }
        $this->client->getResultPager()->setPage(null);
        return $issues;
    }