Merge pull request #319 from muensmedia/gitlab-subgroups

Allow subgroups for self hosted GitLab instances
This commit is contained in:
Yahnis Elsts 2019-10-01 13:24:11 +03:00 committed by GitHub
commit 2f81129b47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 4 deletions

View File

@ -28,7 +28,7 @@ if ( !class_exists('Puc_v4p8_Vcs_GitLabApi', false) ):
*/
protected $accessToken;
public function __construct($repositoryUrl, $accessToken = null) {
public function __construct($repositoryUrl, $accessToken = null, $subgroup = null) {
//Parse the repository host to support custom hosts.
$port = parse_url($repositoryUrl, PHP_URL_PORT);
if ( !empty($port) ){
@ -55,6 +55,12 @@ if ( !class_exists('Puc_v4p8_Vcs_GitLabApi', false) ):
$this->userName = implode('/', $parts);
$this->repositoryName = $lastPart;
} else {
// there is a subgroup in the url: gitlab.domain.com/group/subgroup/repository
// maybe there nested subgroups: gitlab.domain.com/group/subgroup/subgroup2/repository
if ($subgroup !== null) {
$path = str_replace(trailingslashit($subgroup), '', $path);
}
//This is not a traditional url, it could be gitlab is in a deeper subdirectory.
//Get the path segments.
$segments = explode('/', untrailingslashit(ltrim($path, '/')));
@ -69,8 +75,15 @@ if ( !class_exists('Puc_v4p8_Vcs_GitLabApi', false) ):
$this->userName = $usernameRepo[0];
$this->repositoryName = $usernameRepo[1];
//Append the remaining segments to the host.
$this->repositoryHost = trailingslashit($this->repositoryHost) . implode('/', $segments);
//Append the remaining segments to the host if there are segments left.
if (count($segments) > 0) {
$this->repositoryHost = trailingslashit($this->repositoryHost) . implode('/', $segments);
}
// add subgroups to username
if ($subgroup !== null) {
$this->userName = $usernameRepo[0] . '/' . untrailingslashit($subgroup);
}
}
parent::__construct($repositoryUrl, $accessToken);

View File

@ -251,7 +251,16 @@ BitBucket doesn't have an equivalent to GitHub's releases, so the process is sli
);
//Optional: Add setAuthentication(...) and setBranch(...) as shown above.
```
If you're using a self-hosted GitLab instance and [subgroups or nested groups](https://docs.gitlab.com/ce/user/group/subgroups/index.html) you have to tell the update checker, which folders are subgroups:
```php
$myUpdateChecker = new Puc_v4p8_Vcs_PluginUpdateChecker(
new Puc_v4p8_Vcs_GitLabApi('https://myserver.com/group-name/subgroup-level1/subgroup-level2/subgroup-level3/repo-name/', null, 'subgroup-level1/subgroup-level2/subgroup-level3'),
__FILE__,
'unique-plugin-or-theme-slug'
);
```
3. Plugins only: Add a `readme.txt` file formatted according to the [WordPress.org plugin readme standard](https://wordpress.org/plugins/about/readme.txt) to your repository. The contents of this file will be shown when the user clicks the "View version 1.2.3 details" link.
#### How to Release an Update