Source of file RequireFieldsActionInstance.php
Size: 1,796 Bytes - Last Modified: 2021-12-23T10:49:13+00:00
/var/www/docs.ssmods.com/process/src/src/Actions/RequireFieldsActionInstance.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | <?php namespace Symbiote\AdvancedWorkflow\Actions; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowActionInstance; use SilverStripe\ORM\ArrayList; class RequireFieldsActionInstance extends WorkflowActionInstance { private static $table_name = 'RequireFieldsActionInstance'; public function getValidTransitions() { $transitions = parent::getValidTransitions(); $need = $this->getUnpopulatedFields(); if (count($need)) { $list = ArrayList::create(); $cancel = $this->BaseAction()->CancelTransition(); if ($cancel && $cancel->ID) { $list->push($cancel); } return $list; } return $transitions; } /** * @return array */ public function getUnpopulatedFields() { $req = $this->BaseAction()->RequiredFields; if ($req) { $req = $req->getValues(); if (!$req || !count($req)) { return []; } $target = $this->Workflow()->getTarget(); if (!$target) { return []; } $need = array_combine($req, $req); // let's look at whether the fields / relationships are populated foreach ($req as $field) { if ($target->$field) { unset($need[$field]); continue; } if ($target->hasValue($field)) { unset($need[$field]); continue; } if ($this->hasValue($field)) { unset($need[$field]); continue; } } return array_values($need); } return []; } } |