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