Fragen\GitHub_Updater\Base::parse_tags PHP Method

parse_tags() protected method

Parse tags and set object data.
protected parse_tags ( $response, $repo_type ) : boolean
$response
$repo_type
return boolean
    protected function parse_tags($response, $repo_type)
    {
        $tags = array();
        $rollback = array();
        if (false !== $response) {
            switch ($repo_type['repo']) {
                case 'github':
                    foreach ((array) $response as $tag) {
                        $download_base = implode('/', array($repo_type['base_uri'], 'repos', $this->type->owner, $this->type->repo, 'zipball/'));
                        $tags[] = $tag;
                        $rollback[$tag] = $download_base . $tag;
                    }
                    break;
                case 'bitbucket':
                    foreach ((array) $response as $tag) {
                        $download_base = implode('/', array($repo_type['base_download'], $this->type->owner, $this->type->repo, 'get/'));
                        $tags[] = $tag;
                        $rollback[$tag] = $download_base . $tag . '.zip';
                    }
                    break;
                case 'gitlab':
                    foreach ((array) $response as $tag) {
                        $download_link = implode('/', array($repo_type['base_download'], $this->type->owner, $this->type->repo, 'repository/archive.zip'));
                        $download_link = add_query_arg('ref', $tag, $download_link);
                        $tags[] = $tag;
                        $rollback[$tag] = $download_link;
                    }
                    break;
            }
        }
        if (empty($tags)) {
            return false;
        }
        usort($tags, 'version_compare');
        krsort($rollback);
        $newest_tag = null;
        $newest_tag_key = key(array_slice($tags, -1, 1, true));
        $newest_tag = $tags[$newest_tag_key];
        $this->type->newest_tag = $newest_tag;
        $this->type->tags = $tags;
        $this->type->rollback = $rollback;
        return true;
    }