Git Repository Public Repository

namibia

URLs

Copy to Clipboard
 
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

Diff revisions: vs.
Revision Author Commited Message
df0489 ... Mark Fri 14 Oct, 2016 10:01:00 +0000

initial commit