namibia
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php namespace Workspace\Service; use Zend\ServiceManager\ServiceLocatorAwareInterface; use Zend\ServiceManager\ServiceLocatorInterface; /** * Abstract service node to provide global functionality to all workspace services. * @author andre.fourie */ abstract class Node implements ServiceLocatorAwareInterface { /** * @var ServiceLocatorInterface */ protected $services; /** * @var \Workspace\Workflow */ protected $workflow; /** * @var array */ protected $entityMap = array(); /** * @see \Zend\ServiceManager\ServiceLocatorAwareInterface::setServiceLocator() */ public function setServiceLocator(ServiceLocatorInterface $serviceLocator) { $this->services = $serviceLocator; $this->workflow->setServiceLocator($serviceLocator); } /** * @see \Zend\ServiceManager\ServiceLocatorAwareInterface::getServiceLocator() */ public function getServiceLocator() { return $this->services; } /** * Retrieve Doctrine Entity Manager. * @return \Doctrine\ORM\EntityManager */ public function getEntityManager() { return $this->services->get('doctrine.entitymanager.orm_default'); } /** * Validate unique value for a specified field. * @param \Workspace\Utility\ServiceInputParams $contract * @return multitype:string unknown NULL */ public function fieldIsUnique(\Workspace\Utility\ServiceInputParams $contract) { if (!isset($this->entityMap[$contract->Group])) { return $contract->error( 'Invalid `Group` specified.', 'System Error.' ); } $entityName = $this->entityMap[$contract->Group]; $entry = $this->getEntityManager() ->getRepository($entityName) ->findOneBy(array($contract->Field => $contract->Value)); return is_null($entry) ? $contract->success() : $contract->error('Value already used.', 'Value already used.'); } /** * List available tasks. * @param string $state * @return array */ public function listTasks($state = 'Global') { return $this->workflow->listStateTasks($state); } } |
Commits for namibiamodule/Workspace/src/Workspace/Service/Node.php
Revision | Author | Commited | Message |
---|---|---|---|
df0489 ... | Mark | Fri 14 Oct, 2016 10:01:00 +0000 | initial commit |