summaryrefslogtreecommitdiff
path: root/app/Job
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-05-23 20:43:51 -0400
committerFrederic Guillot <fred@kanboard.net>2016-05-23 20:43:51 -0400
commit8314c99b56e66c2b86dd32432bcf5ed94a3ece02 (patch)
tree564ed1c270a0907efb5be8da1d971526cd235c6e /app/Job
parentdc6176fca23ea697380ab115aea976fa8271f047 (diff)
Added QueueManager to process background jobs
Diffstat (limited to 'app/Job')
-rw-r--r--app/Job/BaseJob.php33
-rw-r--r--app/Job/EmailJob.php54
-rw-r--r--app/Job/ProjectMetricJob.php40
3 files changed, 127 insertions, 0 deletions
diff --git a/app/Job/BaseJob.php b/app/Job/BaseJob.php
new file mode 100644
index 00000000..60522ac6
--- /dev/null
+++ b/app/Job/BaseJob.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Kanboard\Job;
+
+use Kanboard\Core\Base;
+
+/**
+ * Class BaseJob
+ *
+ * @package Kanboard\Job
+ * @author Frederic Guillot
+ */
+abstract class BaseJob extends Base
+{
+ /**
+ * Job parameters
+ *
+ * @access protected
+ * @var array
+ */
+ protected $jobParams = array();
+
+ /**
+ * Get job parameters
+ *
+ * @access public
+ * @return array
+ */
+ public function getJobParams()
+ {
+ return $this->jobParams;
+ }
+}
diff --git a/app/Job/EmailJob.php b/app/Job/EmailJob.php
new file mode 100644
index 00000000..9293a1d4
--- /dev/null
+++ b/app/Job/EmailJob.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Kanboard\Job;
+
+/**
+ * Class EmailJob
+ *
+ * @package Kanboard\Job
+ * @author Frederic Guillot
+ */
+class EmailJob extends BaseJob
+{
+ /**
+ * Set job parameters
+ *
+ * @access public
+ * @param string $email
+ * @param string $name
+ * @param string $subject
+ * @param string $html
+ * @param string $author
+ * @return $this
+ */
+ public function withParams($email, $name, $subject, $html, $author)
+ {
+ $this->jobParams = array($email, $name, $subject, $html, $author);
+ return $this;
+ }
+
+ /**
+ * Execute job
+ *
+ * @access public
+ * @param string $email
+ * @param string $name
+ * @param string $subject
+ * @param string $html
+ * @param string $author
+ */
+ public function execute($email, $name, $subject, $html, $author)
+ {
+ $this->logger->debug(__METHOD__.' Sending email to '.$email.' via '.MAIL_TRANSPORT);
+ $startTime = microtime(true);
+
+ $this->emailClient
+ ->getTransport(MAIL_TRANSPORT)
+ ->sendEmail($email, $name, $subject, $html, $author)
+ ;
+
+ if (DEBUG) {
+ $this->logger->debug('Email sent in '.round(microtime(true) - $startTime, 6).' seconds');
+ }
+ }
+}
diff --git a/app/Job/ProjectMetricJob.php b/app/Job/ProjectMetricJob.php
new file mode 100644
index 00000000..2c3e589c
--- /dev/null
+++ b/app/Job/ProjectMetricJob.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Kanboard\Job;
+
+/**
+ * Class ProjectMetricJob
+ *
+ * @package Kanboard\Job
+ * @author Frederic Guillot
+ */
+class ProjectMetricJob extends BaseJob
+{
+ /**
+ * Set job parameters
+ *
+ * @access public
+ * @param integer $projectId
+ * @return $this
+ */
+ public function withParams($projectId)
+ {
+ $this->jobParams = array($projectId);
+ return $this;
+ }
+
+ /**
+ * Execute job
+ *
+ * @access public
+ * @param integer $projectId
+ */
+ public function execute($projectId)
+ {
+ $this->logger->debug(__METHOD__.' Run project metrics calculation');
+ $now = date('Y-m-d');
+
+ $this->projectDailyColumnStats->updateTotals($projectId, $now);
+ $this->projectDailyStats->updateTotals($projectId, $now);
+ }
+}