<?php
# Copyright (C) 2008 John Reese
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
if ( false === include_once( config_get( 'plugin_path' ) . 'Source/MantisSourcePlugin.class.php' ) ) {
return;
}
class SourceGithubPlugin extends MantisSourcePlugin {
function register() {
$this->name = lang_get( 'plugin_SourceGithub_title' );
$this->description = lang_get( 'plugin_SourceGithub_description' );
$this->version = '0.1';
$this->requires = array(
'MantisCore' => '1.2.0',
'Source' => '0.9a',
);
$this->author = 'John Reese';
$this->contact = 'jreese@leetcode.net';
$this->url = 'http://leetcode.net';
}
function get_types( $p_event ) {
return array( 'github' => lang_get( 'plugin_SourceGithub_github' ) );
}
function show_type( $p_event, $p_type ) {
if ( 'github' == $p_type ) {
return lang_get( 'plugin_SourceGithub_github' );
}
}
function show_changeset( $p_event, $p_repo, $p_changeset ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$t_ref = substr( $p_changeset->revision, 0, 8 );
$t_branch = $p_changeset->branch;
return "$p_repo->name $t_ref ($t_branch)";
}
function show_file( $p_event, $p_repo, $p_changeset, $p_file ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
return "$p_action - $p_file->filename";
}
function url_repo( $p_event, $p_repo, $t_changeset=null ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$t_username = $p_repo->info['hub_username'];
$t_reponame = $p_repo->info['hub_reponame'];
if ( !is_null( $t_changeset ) ) {
$t_ref = "/$t_changeset->revision";
}
return "http://github.com/$t_username/$t_reponame/tree$t_ref";
}
function url_changeset( $p_event, $p_repo, $p_changeset ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$t_username = $p_repo->info['hub_username'];
$t_reponame = $p_repo->info['hub_reponame'];
$t_ref = "$t_changeset->revision";
return "http://github.com/$t_username/$t_reponame/commit/$t_ref";
}
function url_file( $p_event, $p_repo, $p_changeset, $p_file ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$t_username = $p_repo->info['hub_username'];
$t_reponame = $p_repo->info['hub_reponame'];
$t_ref = "$t_changeset->revision";
$t_filename = $t_file->filename;
return "http://github.com/$t_username/$t_reponame/tree/$t_ref/$t_filename";
}
function url_diff( $p_event, $p_repo, $p_changeset, $p_file ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$t_username = $p_repo->info['hub_username'];
$t_reponame = $p_repo->info['hub_reponame'];
$t_ref = "$t_changeset->revision";
$t_filename = $t_file->filename;
return "http://github.com/$t_username/$t_reponame/commit/$t_ref";
}
function update_repo_form( $p_event, $p_repo ) {
if ( 'github' != $p_repo->type ) {
return;
}
if ( isset( $t_repo->info['hub_username'] ) ) {
$t_username = $t_repo->info['hub_username'];
}
if ( isset( $t_repo->info['hub_reponame'] ) ) {
$t_username = $t_repo->info['hub_reponame'];
}
?>
<tr <?php echo helper_alternate_class() ?>>
<td class="category"><?php echo lang_get( 'plugin_SourceGithub_hub_username' ) ?></td>
<td><input name="hub_username" maxlength="250" size="40" value="<?php echo $t_hub_username ?>"/></td>
</tr>
<tr <?php echo helper_alternate_class() ?>>
<td class="category"><?php echo lang_get( 'plugin_SourceGithub_hub_reponame' ) ?></td>
<td><input name="hub_reponame" maxlength="250" size="40" value="<?php echo $t_hub_reponame ?>"/></td>
</tr>
<?php
}
function update_repo( $p_event, $p_repo ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
$f_hub_username = gpc_get_string( 'hub_username' );
$f_hub_reponame = gpc_get_string( 'hub_reponame' );
$p_repo->info['hub_username'] = $f_hub_username;
$p_repo->info['hub_reponame'] = $f_hub_reponame;
return $p_repo;
}
function commit( $p_event, $p_repo, $p_data ) {
}
function import_repo( $p_event, $p_repo ) {
if ( 'github' != $p_repo->type ) {
return $p_repo;
}
echo '<pre>';
$t_uri_base = 'http://github.com/api/v1/json/' .
urlencode( $p_repo->info['hub_username'] ) . '/' .
urlencode( $p_repo->info['hub_reponame'] ) . '/';
$t_json = file_get_contents( $t_uri_base . 'commits/master' );
$t_data = json_decode( $t_json, true );
var_dump( $t_data );
die();
}
}