ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilCtrlSingleClassPath.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
27{
32
41 {
43
44 $this->context = $context;
45
46 try {
47 $this->cid_path = $this->getCidPathByClass($target_class);
48 } catch (ilCtrlException $exception) {
49 $this->exception = $exception;
50 }
51 }
52
65 private function getCidPathByClass(string $target_class): string
66 {
67 $target_cid = $this->structure->getClassCidByName($target_class);
68
69 // abort if the target class is unknown.
70 if (null === $target_cid) {
71 throw new ilCtrlException("Class '$target_class' was not found in the control structure, try `composer du` to read artifacts.");
72 }
73
74 // if the target class is already the current command
75 // class of this context, nothing has to be changed.
76 if ($target_cid === $this->context->getPath()->getCurrentCid()) {
77 return $this->context->getPath()->getCidPath();
78 }
79
80 // check if the target is related to a class within
81 // the current context's path.
82 $related_class_path = $this->getPathToRelatedClassInContext($this->context, $target_class);
83 if (null !== $related_class_path) {
84 return $this->appendCid($target_cid, $related_class_path);
85 }
86
87 // fix https://mantis.ilias.de/view.php?id=33094:
88 // prioritise baseclasses less than relationships,
89 // therefore test at last if the target class is a
90 // baseclass.
91 if ($this->structure->isBaseClass($target_class)) {
92 return $target_cid;
93 }
94
95 throw new ilCtrlException("ilCtrl cannot find a path for '$target_class' that reaches '{$this->context->getBaseClass()}'");
96 }
97}
Class ilCtrlAbstractPath.
getPathToRelatedClassInContext(ilCtrlContextInterface $context, string $target_class)
Returns the path to a class within the given contexts current path that has a relation to the given t...
appendCid(string $cid, ?string $path=null)
Helper function to add CIDs to a given path.
ilCtrlStructureInterface $structure
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilCtrlSingleClassPath.
ilCtrlContextInterface $context
getCidPathByClass(string $target_class)
Returns a cid path that reaches from the current context's baseclass to the given class.
__construct(ilCtrlStructureInterface $structure, ilCtrlContextInterface $context, string $target_class)
ilCtrlSingleClassPath Constructor
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc