You are here

class Github_Api_Issue in Bibliography Module 7.2

Listing issues, searching, editing and closing your projects issues.

@link http://develop.github.com/p/issues.html @author Thibault Duplessis <thibault.duplessis at gmail dot com> @license MIT License

Hierarchy

Expanded class hierarchy of Github_Api_Issue

File

modules/CiteProc/Github/Api/Issue.php, line 10

View source
class Github_Api_Issue extends Github_Api {

  /**
   * List issues by username, repo and state
   * http://develop.github.com/p/issues.html#list_a_projects_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $state            the issue state, can be open or closed
   * @return  array                     list of issues found
   */
  public function getList($username, $repo, $state = 'open') {
    $response = $this
      ->get('issues/list/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($state));
    return $response['issues'];
  }

  /**
   * Search issues by username, repo, state and search term
   * http://develop.github.com/p/issues.html#list_a_projects_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $state            the issue state, can be open or closed
   * @param   string  $searchTerm       the search term to filter issues by
   * @return  array                     list of issues found
   */
  public function search($username, $repo, $state, $searchTerm) {
    $response = $this
      ->get('issues/search/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($state) . '/' . urlencode($searchTerm));
    return $response['issues'];
  }

  /**
   * Search issues by label
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $label            the label to filter issues by
   * @return  array                     list of issues found
   */
  public function searchLabel($username, $repo, $label) {
    $response = $this
      ->get('issues/list/' . urlencode($username) . '/' . urlencode($repo) . '/label/' . urlencode($label));
    return $response['issues'];
  }

  /**
   * Get extended information about an issue by its username, repo and number
   * http://develop.github.com/p/issues.html#view_an_issue
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @return  array                     information about the issue
   */
  public function show($username, $repo, $issueNumber) {
    $response = $this
      ->get('issues/show/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber));
    return $response['issue'];
  }

  /**
   * Create a new issue for the given username and repo.
   * The issue is assigned to the authenticated user. Requires authentication.
   * http://develop.github.com/p/issues.html#open_and_close_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueTitle       the new issue title
   * @param   string   $issueBody       the new issue body
   * @return  array                     information about the issue
   */
  public function open($username, $repo, $issueTitle, $issueBody) {
    $response = $this
      ->post('issues/open/' . urlencode($username) . '/' . urlencode($repo), array(
      'title' => $issueTitle,
      'body' => $issueBody,
    ));
    return $response['issue'];
  }

  /**
   * Close an existing issue by username, repo and issue number. Requires authentication.
   * http://develop.github.com/p/issues.html#open_and_close_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @return  array                     information about the issue
   */
  public function close($username, $repo, $issueNumber) {
    $response = $this
      ->post('issues/close/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber));
    return $response['issue'];
  }

  /**
   * Update issue informations by username, repo and issue number. Requires authentication.
   * http://develop.github.com/p/issues.html#edit_existing_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @param   array   $data             key=>value user attributes to update.
   *                                    key can be title or body
   * @return  array                     information about the issue
   */
  public function update($username, $repo, $issueNumber, array $data) {
    $response = $this
      ->post('issues/edit/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber), $data);
    return $response['issue'];
  }

  /**
   * Repoen an existing issue by username, repo and issue number. Requires authentication.
   * http://develop.github.com/p/issues.html#open_and_close_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @return  array                     informations about the issue
   */
  public function reOpen($username, $repo, $issueNumber) {
    $response = $this
      ->post('issues/reopen/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber));
    return $response['issue'];
  }

  /**
   * List an issue comments by username, repo and issue number
   * http://develop.github.com/p/issues.html#list_an_issues_comments
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @return  array                     list of issue comments
   */
  public function getComments($username, $repo, $issueNumber) {
    $response = $this
      ->get('issues/comments/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber));
    return $response['comments'];
  }

  /**
   * Add a comment to the issue by username, repo and issue number
   * http://develop.github.com/p/issues.html#comment_on_issues
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @param   string  $comment          the comment body
   * @return  array                     the created comment
   */
  public function addComment($username, $repo, $issueNumber, $commentBody) {
    $response = $this
      ->post('issues/comment/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($issueNumber), array(
      'comment' => $commentBody,
    ));
    return $response['comment'];
  }

  /**
   * List all project labels by username and repo
   * http://develop.github.com/p/issues.html#listing_labels
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @return  array                     list of project labels
   */
  public function getLabels($username, $repo) {
    $response = $this
      ->get('issues/labels/' . urlencode($username) . '/' . urlencode($repo));
    return $response['labels'];
  }

  /**
   * Add a label to the issue by username, repo and issue number. Requires authentication.
   * http://develop.github.com/p/issues.html#add_and_remove_labels
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @param   string  $labelName        the label name
   * @return  array                     list of issue labels
   */
  public function addLabel($username, $repo, $labelName, $issueNumber) {
    $response = $this
      ->post('issues/label/add/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($labelName) . '/' . urlencode($issueNumber));
    return $response['labels'];
  }

  /**
   * Remove a label from the issue by username, repo, issue number and label name. Requires authentication.
   * http://develop.github.com/p/issues.html#add_and_remove_labels
   *
   * @param   string  $username         the username
   * @param   string  $repo             the repo
   * @param   string  $issueNumber      the issue number
   * @param   string  $labelName        the label name
   * @return  array                     list of issue labels
   */
  public function removeLabel($username, $repo, $labelName, $issueNumber) {
    $response = $this
      ->post('issues/label/remove/' . urlencode($username) . '/' . urlencode($repo) . '/' . urlencode($labelName) . '/' . urlencode($issueNumber));
    return $response['labels'];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Github_Api::$client private property The client
Github_Api::get protected function Call any path, GET method Ex: $api->get('repos/show/my-username/my-repo')
Github_Api::post protected function Call any path, POST method Ex: $api->post('repos/show/my-username', array('email' => 'my-new-email@provider.org'))
Github_Api::__construct public function
Github_Api_Issue::addComment public function Add a comment to the issue by username, repo and issue number http://develop.github.com/p/issues.html#comment_on_issues
Github_Api_Issue::addLabel public function Add a label to the issue by username, repo and issue number. Requires authentication. http://develop.github.com/p/issues.html#add_and_remove_labels
Github_Api_Issue::close public function Close an existing issue by username, repo and issue number. Requires authentication. http://develop.github.com/p/issues.html#open_and_close_issues
Github_Api_Issue::getComments public function List an issue comments by username, repo and issue number http://develop.github.com/p/issues.html#list_an_issues_comments
Github_Api_Issue::getLabels public function List all project labels by username and repo http://develop.github.com/p/issues.html#listing_labels
Github_Api_Issue::getList public function List issues by username, repo and state http://develop.github.com/p/issues.html#list_a_projects_issues
Github_Api_Issue::open public function Create a new issue for the given username and repo. The issue is assigned to the authenticated user. Requires authentication. http://develop.github.com/p/issues.html#open_and_close_issues
Github_Api_Issue::removeLabel public function Remove a label from the issue by username, repo, issue number and label name. Requires authentication. http://develop.github.com/p/issues.html#add_and_remove_labels
Github_Api_Issue::reOpen public function Repoen an existing issue by username, repo and issue number. Requires authentication. http://develop.github.com/p/issues.html#open_and_close_issues
Github_Api_Issue::search public function Search issues by username, repo, state and search term http://develop.github.com/p/issues.html#list_a_projects_issues
Github_Api_Issue::searchLabel public function Search issues by label
Github_Api_Issue::show public function Get extended information about an issue by its username, repo and number http://develop.github.com/p/issues.html#view_an_issue
Github_Api_Issue::update public function Update issue informations by username, repo and issue number. Requires authentication. http://develop.github.com/p/issues.html#edit_existing_issues