diff --git a/README.md b/README.md index 8a17cac1..1e69648e 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,42 @@ try { ?> ```` +## Add comment + +````php +setBody($body) + ->setVisibility('role', 'Users'); + ; + + $issueService = new IssueService(); + $ret = $issueService->addComment($issueKey, $comment); + print_r($ret); +} catch (JIRAException $e) { + $this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage()); +} + +?> +```` + # License Apache V2 License diff --git a/src/config.jira.example.php b/src/config.jira.example.php new file mode 100644 index 00000000..6603b1c3 --- /dev/null +++ b/src/config.jira.example.php @@ -0,0 +1,19 @@ + 'https://jira.example.com', + 'username' => 'username', + 'password' => 'password', + + // Options + 'CURLOPT_SSL_VERIFYHOST' => false, + 'CURLOPT_SSL_VERIFYPEER' => false, + 'CURLOPT_VERBOSE' => true, + 'LOG_FILE' => 'QQjira-rest-client.log', + 'LOG_LEVEL' => 'DEBUG' + ); +} + +?> diff --git a/src/issue/Comment.php b/src/issue/Comment.php new file mode 100644 index 00000000..ed5b0e20 --- /dev/null +++ b/src/issue/Comment.php @@ -0,0 +1,55 @@ +body = $body; + return $this; + } + + public function setVisibility($type, $value) { + if (is_null($this->visibility)) + $this->visibility = array(); + + $this->visibility['type'] = $type; + $this->visibility['value'] = $value; + return $this; + } + + public function jsonSerialize() + { + return array_filter(get_object_vars($this)); + } +} + +?> \ No newline at end of file diff --git a/src/issue/Comments.php b/src/issue/Comments.php index fa01cc88..2b3106ab 100644 --- a/src/issue/Comments.php +++ b/src/issue/Comments.php @@ -2,34 +2,6 @@ namespace JiraRestApi\Issue; -class Comment implements \JsonSerializable { - /* @var string */ - public $self; - - /* @var string */ - public $id; - - /* @var Reporter */ - public $author; - - /* @var string */ - public $body; - - /* @var Reporter */ - public $updateAuthor; - - /* @var DateTime */ - public $created; - - /* @var DateTime */ - public $updated; - - public function jsonSerialize() - { - return array_filter(get_object_vars($this)); - } -} - class Comments implements \JsonSerializable { /* @var int */ public $startAt; diff --git a/src/issue/IssueService.php b/src/issue/IssueService.php index d81be9dd..196fa077 100644 --- a/src/issue/IssueService.php +++ b/src/issue/IssueService.php @@ -97,6 +97,30 @@ public function update($issueIdOrKey, $issueField) { return $ret; } + + /** + * Adds a new comment to an issue. + * + * @param issueIdOrKey Issue id or key + * @param comment . + * + * @return Comment class + */ + public function addComment($issueIdOrKey, $comment) { + + $this->log->addInfo("addComment=\n"); + + $data = json_encode($comment); + + $ret = $this->exec($this->uri . "/$issueIdOrKey/comment", $data); + + $this->log->addDebug("add comment result=" . var_export($ret, true)); + $comment = $this->json_mapper->map( + json_decode($ret), new Comment() + ); + + return $comment; + } } ?> diff --git a/tests/IssueTest.php b/tests/IssueTest.php index 49ec1135..7809a554 100644 --- a/tests/IssueTest.php +++ b/tests/IssueTest.php @@ -2,6 +2,7 @@ use JiraRestApi\Issue\IssueService; use JiraRestApi\Issue\IssueField; +use JiraRestApi\Issue\Comment; class IssueTest extends PHPUnit_Framework_TestCase { @@ -86,7 +87,7 @@ public function testUpdateIssue($issueKey) try { $issueField = new IssueField(true); - $issueField->setAssigneeName("admin") + $issueField->setAssigneeName("lesstif") ->setPriorityName("Major") ->setIssueType("Task") ->addLabel("test-label-first") @@ -99,11 +100,44 @@ public function testUpdateIssue($issueKey) $issueService = new IssueService(); $issueService->update($issueKey, $issueField); + + return $issueKey; } catch (JIRAException $e) { $this->assertTrue(FALSE, "update Failed : " . $e->getMessage()); } } + /** + * @depends testUpdateIssue + * + */ + public function testAddcommnet($issueKey) + { + //$this->markTestIncomplete(); + try { + $comment = new Comment(); + + $body = <<setBody($body) + ->setVisibility('role', 'Users'); + ; + + $issueService = new IssueService(); + $ret = $issueService->addComment($issueKey, $comment); + print_r($ret); + + return $issueKey; + } catch (JIRAException $e) { + $this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage()); + } + } + } ?>