forked from tk-sls.de/linuxfoo-gitlab
implement releases=all|latest
This commit is contained in:
@ -50,6 +50,10 @@ class LinuxfooGitlab {
|
||||
}
|
||||
|
||||
static function list_commits($atts, $content, $tag) {
|
||||
return self::show_project($atts, $content, $tag);
|
||||
}
|
||||
|
||||
static function show_project($atts, $content, $tag) {
|
||||
global $post;
|
||||
|
||||
if(
|
||||
@ -117,7 +121,7 @@ class LinuxfooGitlab {
|
||||
|
||||
$commits = json_decode($commits_json);
|
||||
|
||||
if(is_null($project)) {
|
||||
if(is_null($commits)) {
|
||||
return self::error(__('Commits information not readable.', 'linuxfoo-gitlab'));
|
||||
}
|
||||
|
||||
@ -162,6 +166,53 @@ class LinuxfooGitlab {
|
||||
}
|
||||
|
||||
$out .= '</ul>';
|
||||
|
||||
if(!is_null($atts['releases'])) {
|
||||
if(!preg_match('/^(all|latest)$/', $atts['releases'])) {
|
||||
return self::error(__('Invalid value for parameter "releases".', 'linuxfoo-gitlab'));
|
||||
}
|
||||
|
||||
$releases_url = $project_url.'/releases?';
|
||||
$releases_json = file_get_contents($releases_url);
|
||||
|
||||
if(is_null($releases_json)) {
|
||||
return self::error(__('Releases URL not reachable.', 'linuxfoo-gitlab'));
|
||||
}
|
||||
|
||||
$releases = json_decode($releases_json);
|
||||
|
||||
if(is_null($releases)) {
|
||||
return self::error(__('Releases information not readable.', 'linuxfoo-gitlab'));
|
||||
}
|
||||
|
||||
if(count($releases)==0) {
|
||||
$out .= '<p class="releases">'.__('This project has currently no releases.', 'linuxfoo-gitlab').'</p>';
|
||||
}
|
||||
elseif($atts['releases']=='latest') {
|
||||
$out .=
|
||||
'<p class="releases">'.
|
||||
__('Latest release', 'linuxfoo-gitlab').': '.
|
||||
'<a href="'.$releases[0]->evidences->_links->self.'">'.$releases[0]->name.'</a>'.
|
||||
'</p>';
|
||||
}
|
||||
elseif($atts['releases']=='all') {
|
||||
$out .=
|
||||
'<p class="releases">'.
|
||||
__('Releases', 'linuxfoo-gitlab').': '.
|
||||
'</p>'.
|
||||
'<ul class="releases">';
|
||||
|
||||
foreach($releases as $release) {
|
||||
$out .=
|
||||
'<li>'.
|
||||
'<a href="'.$release->evidences->_links->self.'">'.$release->name.'</a>'.
|
||||
'</li>';
|
||||
}
|
||||
|
||||
$out .= '</ul>';
|
||||
}
|
||||
}
|
||||
|
||||
$out .= '</div>';
|
||||
|
||||
return $out;
|
||||
@ -171,4 +222,5 @@ class LinuxfooGitlab {
|
||||
add_action('plugins_loaded', 'LinuxfooGitlab::load_textdomain');
|
||||
add_action('wp_enqueue_scripts', 'LinuxfooGitlab::css' );
|
||||
add_shortcode('gitlab-list-commits', 'LinuxfooGitlab::list_commits');
|
||||
add_shortcode('gitlab-show-project', 'LinuxfooGitlab::show_project');
|
||||
|
||||
|
Reference in New Issue
Block a user