diff --git a/src/App/Tracker/Controller/Issue/Submit.php b/src/App/Tracker/Controller/Issue/Submit.php index 6432a7960..8bc93b93f 100644 --- a/src/App/Tracker/Controller/Issue/Submit.php +++ b/src/App/Tracker/Controller/Issue/Submit.php @@ -55,6 +55,9 @@ public function execute() throw new \Exception('No body received.'); } + $issueModel = new IssueModel($this->getContainer()->get('db')); + $issueModel->setProject($project); + if ($project->gh_user && $project->gh_project) { // Project is managed on GitHub @@ -86,7 +89,7 @@ public function execute() $data['modified_date'] = (new Date)->format($this->getContainer()->get('db')->getDateFormat()); $data['opened_by'] = $user->username; $data['modified_by'] = $user->username; - $data['number'] = '???'; + $data['number'] = $issueModel->getNextNumber(); $data['description'] = $gitHub->markdown->render($body, 'markdown'); } @@ -99,8 +102,7 @@ public function execute() // Store the issue try { - $model = new IssueModel($this->getContainer()->get('db')); - $model->add($data); + $issueModel->add($data); } catch (\Exception $e) { diff --git a/src/App/Tracker/Model/IssueModel.php b/src/App/Tracker/Model/IssueModel.php index e2beb5707..9e2beafa4 100644 --- a/src/App/Tracker/Model/IssueModel.php +++ b/src/App/Tracker/Model/IssueModel.php @@ -230,6 +230,25 @@ public function getRandomNumber() return $issueNumber; } + /** + * Get the next issue number - for local (non GitHub) projects. + * + * @return integer + * + * @since 1.0 + */ + public function getNextNumber() + { + $number = $this->db->setQuery( + $this->db->getQuery(true) + ->select('MAX(issue_number)') + ->from($this->db->quoteName('#__issues')) + ->where($this->db->quoteName('project_id') . ' = ' . $this->getProject()->project_id) + )->loadResult(); + + return $number + 1; + } + /** * Get a status list. *