ILIAS  trunk Revision v11.0_alpha-2645-g16283d3b3f8
ILIAS\MediaPool\MediaPoolManager Class Reference
+ Collaboration diagram for ILIAS\MediaPool\MediaPoolManager:

Public Member Functions

 __construct (protected InternalDomainService $domain, protected int $obj_id)
 
 copySelectedFromEditClipboard (int $target_id)
 
 copyItemFromEditClipboard (string $insert_id, int $target_id)
 
 pasteFromClipboard (int $target_folder_id)
 
 isTargetWithinSource (int $source_id, int $target_folder_id)
 

Protected Member Functions

 copyMetadataOfItem (int $source_pool_id, int $target_pool_id, int $source_child_id, int $target_child_id)
 

Detailed Description

Definition at line 23 of file MediaPoolManager.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\MediaPool\MediaPoolManager::__construct ( protected InternalDomainService  $domain,
protected int  $obj_id 
)

Definition at line 25 of file MediaPoolManager.php.

28  {
29  }

Member Function Documentation

◆ copyItemFromEditClipboard()

ILIAS\MediaPool\MediaPoolManager::copyItemFromEditClipboard ( string  $insert_id,
int  $target_id 
)

Definition at line 39 of file MediaPoolManager.php.

References $id, ilObject\_lookupTitle(), ILIAS\MediaPool\MediaPoolManager\copyMetadataOfItem(), ilMediaPoolItem\getPoolForItemId(), ILIAS\Repository\int(), ilObjMediaPool\isForeignIdInTree(), ilObjMediaPool\isItemIdInTree(), and ilMediaPoolItem\lookupTitle().

Referenced by ILIAS\MediaPool\MediaPoolManager\copySelectedFromEditClipboard().

39  : void
40  {
41  $id = explode(":", $insert_id);
42  $type = $id[0];
43  $id = (int) $id[1];
44 
45  if ($type === "mob") { // media object
46  if (!\ilObjMediaPool::isForeignIdInTree($this->obj_id, $id)) {
47  $item = new \ilMediaPoolItem();
48  $item->setType("mob");
49  $item->setForeignId($id);
50  $item->setTitle(\ilObject::_lookupTitle($id));
51  $item->create();
52  if ($item->getId() > 0) {
53  $this->domain->tree($this->obj_id)->insertInMepTree($item->getId(), $target_id);
54  }
55  }
56  }
57  if ($type === "incl") { // content snippet
58  if (!\ilObjMediaPool::isItemIdInTree($this->obj_id, $id)) {
59  $original = new \ilMediaPoolPage($id);
60 
61  // copy the page into the pool
62  $item = new \ilMediaPoolItem();
63  $item->setType("pg");
64  $item->setTitle(\ilMediaPoolItem::lookupTitle($id));
65  $item->create();
66  if ($item->getId() > 0) {
67  $this->domain->tree($this->obj_id)->insertInMepTree($item->getId(), $target_id);
68 
69  // create page
70  $page = new \ilMediaPoolPage();
71  $page->setId($item->getId());
72  $page->setParentId($this->obj_id);
73  $page->create(false);
74 
75  // copy content
76  $original->copy($page->getId(), $page->getParentType(), $page->getParentId(), true);
77 
78 
79  // copy adv metadata
81  if (count($pool_ids) === 1) {
82  $source_pool_id = current($pool_ids);
83  $this->copyMetadataOfItem(
84  $source_pool_id,
85  $this->obj_id,
86  $id,
87  $page->getId()
88  );
89  }
90  }
91  }
92  }
93  }
static getPoolForItemId(int $a_id)
static lookupTitle(int $a_id)
static _lookupTitle(int $obj_id)
static isForeignIdInTree(int $a_pool_id, int $a_foreign_id)
Check whether foreign id is in tree.
copyMetadataOfItem(int $source_pool_id, int $target_pool_id, int $source_child_id, int $target_child_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static isItemIdInTree(int $a_pool_id, int $a_item_id)
Check whether a mep item id is in the media pool.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyMetadataOfItem()

ILIAS\MediaPool\MediaPoolManager::copyMetadataOfItem ( int  $source_pool_id,
int  $target_pool_id,
int  $source_child_id,
int  $target_child_id 
)
protected

Definition at line 147 of file MediaPoolManager.php.

References ilAdvancedMDValues\_cloneValues(), and ilMediaPoolItem\lookupType().

Referenced by ILIAS\MediaPool\MediaPoolManager\copyItemFromEditClipboard(), and ILIAS\MediaPool\MediaPoolManager\pasteFromClipboard().

152  : void {
153  if (\ilMediaPoolItem::lookupType($source_child_id) === "pg") {
155  0,
156  $source_pool_id,
157  $target_pool_id,
158  "mpg",
159  $source_child_id,
160  $target_child_id
161  );
162 
163  $this->domain->metadata()->cloneLOM(
164  $source_pool_id,
165  $source_child_id,
166  "mpg",
167  $target_pool_id,
168  $target_child_id,
169  "mpg"
170  );
171  }
172  }
static _cloneValues(int $copy_id, int $a_source_id, int $a_target_id, ?string $a_sub_type=null, ?int $a_source_sub_id=null, ?int $a_target_sub_id=null)
Clone Advanced Meta Data.
static lookupType(int $a_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copySelectedFromEditClipboard()

ILIAS\MediaPool\MediaPoolManager::copySelectedFromEditClipboard ( int  $target_id)

Definition at line 31 of file MediaPoolManager.php.

References $id, ilEditClipboardGUI\_getSelectedIDs(), and ILIAS\MediaPool\MediaPoolManager\copyItemFromEditClipboard().

31  : void
32  {
34  foreach ($ids as $id) {
35  $this->copyItemFromEditClipboard($id, $target_id);
36  }
37  }
copyItemFromEditClipboard(string $insert_id, int $target_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ isTargetWithinSource()

ILIAS\MediaPool\MediaPoolManager::isTargetWithinSource ( int  $source_id,
int  $target_folder_id 
)

Definition at line 174 of file MediaPoolManager.php.

References ilMediaPoolItem\getPoolForItemId(), and ILIAS\Repository\int().

Referenced by ILIAS\MediaPool\MediaPoolManager\pasteFromClipboard().

174  : bool
175  {
176  $pool_ids = \ilMediaPoolItem::getPoolForItemId($source_id);
177 
178  /*
179  $parent_id = $this->mep_request->getItemId();
180  if (ilMediaPoolItem::lookupType($parent_id) !== "fold") {
181  $parent_id = $target_tree->readRootId();
182  }*/
183 
184  $subnodes = [];
185  foreach ($pool_ids as $pool_id) {
186  $source_tree = $this->domain->tree($pool_id);
187 
188  // if source tree == target tree, check if target is within source tree
189  $subnodes = $source_tree->getSubtree($source_tree->getNodeData($source_id));
190  foreach ($subnodes as $subnode) {
191  if ((int) $subnode["child"] === (int) $target_folder_id) {
192  return true;
193  }
194  }
195  }
196  return false;
197  }
static getPoolForItemId(int $a_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pasteFromClipboard()

ILIAS\MediaPool\MediaPoolManager::pasteFromClipboard ( int  $target_folder_id)

Definition at line 96 of file MediaPoolManager.php.

References $id, ilSession\clear(), ILIAS\MediaPool\MediaPoolManager\copyMetadataOfItem(), ilSession\get(), ilMediaPoolItem\getPoolForItemId(), ILIAS\MediaPool\MediaPoolManager\isTargetWithinSource(), and ilMediaPoolItem\lookupType().

96  : void
97  {
98  $target_tree = $this->domain->tree($this->obj_id);
99 
100  // sanity check
101  $move_ids = \ilSession::get("mep_move_ids");
102  if (is_array($move_ids)) {
103  foreach ($move_ids as $id) {
104  $pool_ids = \ilMediaPoolItem::getPoolForItemId($id);
105 
106  if (!in_array(\ilMediaPoolItem::lookupType($target_folder_id), ["fold", "dummy"])) {
107  throw new InvalidTargetException("Invalid target " . $target_folder_id .
108  " (" . \ilMediaPoolItem::lookupType($target_folder_id) . ")");
109  }
110  if ($this->isTargetWithinSource($id, $target_folder_id)) {
111  throw new InvalidTargetException("Invalid target " . $target_folder_id .
112  " (" . \ilMediaPoolItem::lookupType($target_folder_id) . ")");
113  }
114 
115  $subnodes = [];
116  $source_pool_id = 0;
117  foreach ($pool_ids as $pool_id) {
118  $source_pool_id = $pool_id;
119  $source_tree = $this->domain->tree($pool_id);
120  $subnodes = $source_tree->getSubtree($source_tree->getNodeData($id));
121  $source_tree->deleteTree($source_tree->getNodeData($id));
122  }
123 
124  $target_tree->insertNode($id, $target_folder_id);
125  $this->copyMetadataOfItem(
126  $source_pool_id,
127  $this->obj_id,
128  $id,
129  $id
130  );
131  foreach ($subnodes as $node) {
132  if ($node["child"] != $id) {
133  $target_tree->insertNode($node["child"], $node["parent"]);
134  $this->copyMetadataOfItem(
135  $source_pool_id,
136  $this->obj_id,
137  (int) $node["child"],
138  (int) $node["child"]
139  );
140  }
141  }
142  }
143  }
144  \ilSession::clear("mep_move_ids");
145  }
static get(string $a_var)
static getPoolForItemId(int $a_id)
isTargetWithinSource(int $source_id, int $target_folder_id)
copyMetadataOfItem(int $source_pool_id, int $target_pool_id, int $source_child_id, int $target_child_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static lookupType(int $a_id)
static clear(string $a_var)
+ Here is the call graph for this function:

The documentation for this class was generated from the following file: