<?php
/**
* Perforce Swarm
*
* @copyright 2012 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
namespace Jobs;
use Activity\Model\Activity;
use Application\Filter\Linkify;
use Projects\Model\Project;
use Users\Model\User;
use Zend\Mvc\MvcEvent;
class Module
{
/**
* Connect to queue event manager to handle jobs.
*
* @param MvcEvent $event the bootstrap event
* @return void
*/
public function onBootstrap(MvcEvent $event)
{
$application = $event->getApplication();
$services = $application->getServiceManager();
$events = $services->get('queue')->getEventManager();
// fetch job object for job events
$events->attach(
'task.job',
function ($event) use ($services) {
$p4Admin = $services->get('p4_admin');
$id = $event->getParam('id');
try {
$job = \P4\Spec\Job::fetch($id, $p4Admin);
$event->setParam('job', $job);
// determine event author
// by default there is no modified-by field, but if we
// can find one in the jobspec, we will use it here.
$user = $job->hasModifiedByField()
? $job->get($job->getModifiedByField())
: $job->getUser();
// determine action the user took
$action = 'modified';
if ($job->hasCreatedDateField() && $job->hasModifiedDateField()) {
$created = $job->get($job->getCreatedDateField());
$modified = $job->get($job->getModifiedDateField());
$action = $created === $modified ? 'created' : 'modified';
}
// prepare data model for activity streams
$activity = new Activity;
$activity->set(
array(
'type' => 'job',
'link' => array('job', array('job' => $job->getId())),
'user' => $user,
'action' => $action,
'target' => $job->getId(),
'description' => $job->getDescription(),
'topic' => 'jobs/' . $job->getId(),
'time' => $event->getParam('time'),
'projects' => Project::getAffectedByJob($job, $p4Admin)
)
);
// ensure any @mention'ed users are included
$mentions = User::filter(Linkify::getCallouts($job->getDescription()), $p4Admin);
$activity->addFollowers($mentions);
$event->setParam('activity', $activity);
} catch (\Exception $e) {
$services->get('logger')->err($e);
}
},
100
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|