Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00036 require_once "classes/class.ilObject.php";
00037 require_once "classes/class.ilMetaData.php";
00038 require_once("classes/class.ilObjFolder.php");
00039
00040 class ilObjMediaPool extends ilObject
00041 {
00042 var $tree;
00043
00050 function ilObjMediaPool($a_id = 0,$a_call_by_reference = true)
00051 {
00052
00053 $this->type = "mep";
00054 $this->ilObject($a_id,$a_call_by_reference);
00055 }
00056
00057 function read()
00058 {
00059 parent::read();
00060 $this->tree =& new ilTree($this->getId());
00061 $this->tree->setTreeTablePK("mep_id");
00062 $this->tree->setTableNames('mep_tree','object_data');
00063 }
00064
00065
00069 function create()
00070 {
00071 parent::create();
00072
00073
00074 $this->tree =& new ilTree($this->getId());
00075 $this->tree->setTreeTablePK("mep_id");
00076 $this->tree->setTableNames('mep_tree','object_data');
00077 $this->tree->addTree($this->getId(), 1);
00078
00079 }
00080
00084 function &getTree()
00085 {
00086 return $this->tree;
00087 }
00088
00095 function update()
00096 {
00097 if (!parent::update())
00098 {
00099 return false;
00100 }
00101
00102
00103
00104 return true;
00105 }
00106
00114 function ilClone($a_parent_ref)
00115 {
00116 global $rbacadmin;
00117
00118
00119 $new_ref_id = parent::ilClone($a_parent_ref);
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134 return $new_ref_id;
00135 }
00136
00147 function delete()
00148 {
00149
00150 if (!parent::delete())
00151 {
00152 return false;
00153 }
00154
00155
00156 $childs = $this->tree->getSubTree($this->tree->getNodeData($this->tree->readRootId()));
00157
00158
00159 $this->tree->removeTree($this->tree->getTreeId());
00160
00161
00162 foreach ($childs as $child)
00163 {
00164 switch ($child["type"])
00165 {
00166 case "mob":
00167 include_once("content/classes/Media/class.ilObjMediaObject.php");
00168 $mob = new ilObjMediaObject($child["obj_id"]);
00169 $mob->delete();
00170 break;
00171
00172 case "fold":
00173 include_once("classes/class.ilObjFolder.php");
00174 $fold = new ilObjFolder($child["obj_id"], false);
00175 $fold->delete();
00176 break;
00177 }
00178 }
00179
00180
00181
00182 return true;
00183 }
00184
00194 function initDefaultRoles()
00195 {
00196 global $rbacadmin;
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208 return $roles ? $roles : array();
00209 }
00210
00224 function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
00225 {
00226 global $tree;
00227
00228 switch ($a_event)
00229 {
00230 case "link":
00231
00232
00233
00234
00235 break;
00236
00237 case "cut":
00238
00239
00240
00241 break;
00242
00243 case "copy":
00244
00245
00246
00247
00248 break;
00249
00250 case "paste":
00251
00252
00253
00254 break;
00255
00256 case "new":
00257
00258
00259
00260 break;
00261 }
00262
00263
00264 if ($a_node_id==$_GET["ref_id"])
00265 {
00266 $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
00267 $parent_type = $parent_obj->getType();
00268 if($parent_type == $this->getType())
00269 {
00270 $a_node_id = (int) $tree->getParentId($a_node_id);
00271 }
00272 }
00273
00274 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
00275 }
00276
00277
00281 function getChilds($obj_id = "", $a_type = "")
00282 {
00283 $objs = array();
00284 $mobs = array();
00285 if ($obj_id == "")
00286 {
00287 $obj_id = $this->tree->getRootId();
00288 }
00289
00290 if ($a_type != "mob")
00291 {
00292 $objs = $this->tree->getChildsByType($obj_id, "fold");
00293 }
00294 if ($a_type != "fold")
00295 {
00296 $mobs = $this->tree->getChildsByType($obj_id, "mob");
00297 }
00298 foreach($mobs as $key => $mob)
00299 {
00300 $objs[] = $mob;
00301 }
00302
00303 return $objs;
00304 }
00305
00306 function getParentId($obj_id = "")
00307 {
00308 if ($obj_id == "")
00309 {
00310 return false;
00311 }
00312 if ($obj_id == $this->tree->getRootId())
00313 {
00314 return false;
00315 }
00316
00317 return $this->tree->getParentId($obj_id);
00318 }
00319
00320 function insertInTree($a_obj_id, $a_parent = "")
00321 {
00322 if (!$this->tree->isInTree($a_obj_id))
00323 {
00324 $parent = ($a_parent == "")
00325 ? $this->tree->getRootId()
00326 : $a_parent;
00327 $this->tree->insertNode($a_obj_id, $parent);
00328 return true;
00329 }
00330 else
00331 {
00332 return false;
00333 }
00334 }
00335
00336
00337 function deleteChild($obj_id)
00338 {
00339 $type = ilObject::_lookupType($obj_id);
00340 $title = ilObject::_lookupTitle($obj_id);
00341
00342
00343 $node_data = $this->tree->getNodeData($obj_id);
00344 $subtree = $this->tree->getSubtree($node_data);
00345
00346
00347 if($this->tree->isInTree($obj_id))
00348 {
00349 $this->tree->deleteTree($node_data);
00350 }
00351
00352
00353 foreach ($subtree as $node)
00354 {
00355 if ($node["type"] == "mob")
00356 {
00357 $obj =& new ilObjMediaObject($node["child"]);
00358 $obj->delete();
00359 }
00360
00361 if ($node["type"] == "fold")
00362 {
00363 $obj =& new ilObjFolder($node["child"], false);
00364 $obj->delete();
00365 }
00366 }
00367 }
00368 }
00369 ?>