Fix bug: task references are not unique
This commit is contained in:
@@ -139,7 +139,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function parseCommentIssueEvent(array $payload)
|
public function parseCommentIssueEvent(array $payload)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($payload['issue']['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $payload['issue']['number']);
|
||||||
$user = $this->user->getByUsername($payload['comment']['user']['login']);
|
$user = $this->user->getByUsername($payload['comment']['user']['login']);
|
||||||
|
|
||||||
if (! empty($task) && ! empty($user)) {
|
if (! empty($task) && ! empty($user)) {
|
||||||
@@ -196,7 +196,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueClosed(array $issue)
|
public function handleIssueClosed(array $issue)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
$event = array(
|
$event = array(
|
||||||
@@ -225,7 +225,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueReopened(array $issue)
|
public function handleIssueReopened(array $issue)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
$event = array(
|
$event = array(
|
||||||
@@ -255,7 +255,7 @@ class GithubWebhook extends Base
|
|||||||
public function handleIssueAssigned(array $issue)
|
public function handleIssueAssigned(array $issue)
|
||||||
{
|
{
|
||||||
$user = $this->user->getByUsername($issue['assignee']['login']);
|
$user = $this->user->getByUsername($issue['assignee']['login']);
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($user) && ! empty($task)) {
|
if (! empty($user) && ! empty($task)) {
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueUnassigned(array $issue)
|
public function handleIssueUnassigned(array $issue)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueLabeled(array $issue, array $label)
|
public function handleIssueLabeled(array $issue, array $label)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
|
|
||||||
@@ -350,7 +350,7 @@ class GithubWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueUnlabeled(array $issue, array $label)
|
public function handleIssueUnlabeled(array $issue, array $label)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['number']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['number']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ class GitlabWebhook extends Base
|
|||||||
*/
|
*/
|
||||||
public function handleIssueClosed(array $issue)
|
public function handleIssueClosed(array $issue)
|
||||||
{
|
{
|
||||||
$task = $this->taskFinder->getByReference($issue['id']);
|
$task = $this->taskFinder->getByReference($this->project_id, $issue['id']);
|
||||||
|
|
||||||
if (! empty($task)) {
|
if (! empty($task)) {
|
||||||
$event = array(
|
$event = array(
|
||||||
|
|||||||
@@ -204,12 +204,13 @@ class TaskFinder extends Base
|
|||||||
* Fetch a task by the reference (external id)
|
* Fetch a task by the reference (external id)
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
|
* @param integer $project_id Project id
|
||||||
* @param string $reference Task reference
|
* @param string $reference Task reference
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getByReference($reference)
|
public function getByReference($project_id, $reference)
|
||||||
{
|
{
|
||||||
return $this->db->table(Task::TABLE)->eq('reference', $reference)->findOne();
|
return $this->db->table(Task::TABLE)->eq('project_id', $project_id)->eq('reference', $reference)->findOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -88,9 +88,12 @@ class GitlabWebhookTest extends Base
|
|||||||
|
|
||||||
// Create a task with the issue reference
|
// Create a task with the issue reference
|
||||||
$this->assertEquals(1, $tc->create(array('title' => 'A', 'project_id' => 1, 'reference' => 103361)));
|
$this->assertEquals(1, $tc->create(array('title' => 'A', 'project_id' => 1, 'reference' => 103361)));
|
||||||
$task = $tf->getByReference(103361);
|
$task = $tf->getByReference(1, 103361);
|
||||||
$this->assertNotEmpty($task);
|
$this->assertNotEmpty($task);
|
||||||
|
|
||||||
|
$task = $tf->getByReference(2, 103361);
|
||||||
|
$this->assertEmpty($task);
|
||||||
|
|
||||||
$this->assertTrue($g->handleIssueClosed($event['object_attributes']));
|
$this->assertTrue($g->handleIssueClosed($event['object_attributes']));
|
||||||
|
|
||||||
$called = $this->container['dispatcher']->getCalledListeners();
|
$called = $this->container['dispatcher']->getCalledListeners();
|
||||||
|
|||||||
Reference in New Issue
Block a user