Bristol SU Support Package
CompletionConditionManager.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use BristolSU\Support\Completion\Contracts\CompletionConditionManager as CompletionConditionManagerContract;
6 
10 class CompletionConditionManager implements CompletionConditionManagerContract
11 {
12 
25  protected $conditions = [];
26 
37  protected $global = [];
38 
47  public function registerGlobalCondition($alias, $class)
48  {
49  $this->global[$alias] = $class;
50  }
51 
61  public function register($moduleAlias, $alias, $class)
62  {
63  if (!isset($this->conditions[$moduleAlias])) {
64  $this->conditions[$moduleAlias] = [];
65  }
66  $this->conditions[$moduleAlias][$alias] = $class;
67  }
68 
76  public function getForModule($moduleAlias)
77  {
78  return (isset($this->conditions[$moduleAlias]) ?
79  array_merge($this->conditions[$moduleAlias], $this->global) : []);
80  }
81 
92  public function getClassFromAlias($moduleAlias, $alias)
93  {
94  if (isset($this->conditions[$moduleAlias]) && isset($this->conditions[$moduleAlias][$alias])) {
95  return $this->conditions[$moduleAlias][$alias];
96  }
97  if (isset($this->global[$alias])) {
98  return $this->global[$alias];
99  }
100  throw new \Exception(sprintf('Completion Condition alias [%s] not found for module [%s]', $alias, $moduleAlias));
101  }
102 }