1<?php
2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
3//
4// All Rights Reserved. See copyright.txt for details and a complete list of authors.
5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
6// $Id$
7
8use Symfony\Component\Yaml\Yaml;
9
10class Tiki_Profile_InstallHandler_Transition extends Tiki_Profile_InstallHandler
11{
12	function getData()
13	{
14		if ($this->data) {
15			return $this->data;
16		}
17
18		$defaults = ['preserve' => 'n', 'guards' => []];
19
20		$data = array_merge($defaults, $this->obj->getData());
21
22		foreach ($data['guards'] as & $guard) {
23			if (is_string($guard[2])) {
24				$guard[2] = reset(Yaml::parse("- " . $guard[2]));
25			}
26		}
27
28		$data = Tiki_Profile::convertYesNo($data);
29
30		return $this->data = $data;
31	}
32
33	function canInstall()
34	{
35		$data = $this->getData();
36		if (! isset($data['type'], $data['name'], $data['from'], $data['to'])) {
37			return false;
38		}
39		if (! is_array($data['guards'])) {
40			return false;
41		}
42
43		return true;
44	}
45
46	function _install()
47	{
48		require_once 'lib/transitionlib.php';
49
50		$data = $this->getData();
51
52		$this->replaceReferences($data);
53
54		$transitionlib = new TransitionLib($data['type']);
55		$id = $transitionlib->addTransition($data['from'], $data['to'], $data['name'], $data['preserve'] == 'y', $data['guards']);
56
57		return $id;
58	}
59}
60