protected static function handleQuotaUpdate(ilObjMediaObject $a_mob)
 {
     $parent_obj_ids = array();
     foreach ($a_mob->getUsages() as $item) {
         $parent_obj_id = $a_mob->getParentObjectIdForUsage($item);
         if ($parent_obj_id && !in_array($parent_obj_id, $parent_obj_ids)) {
             $parent_obj_ids[] = $parent_obj_id;
         }
     }
     // we could suppress this if object is present in a (repository) media pool
     // but this would lead to "quota-breaches" when the pool item is deleted
     // and "suddenly" all workspace owners get filesize added to their
     // respective quotas, regardless of current status
     include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
     ilDiskQuotaHandler::handleUpdatedSourceObject($a_mob->getType(), $a_mob->getId(), ilUtil::dirSize($a_mob->getDataDirectory()), $parent_obj_ids);
 }
예제 #2
0
 protected static function handleQuotaUpdate(ilObjMediaObject $a_mob)
 {
     global $ilSetting;
     // if neither workspace nor portfolios are activated, we skip
     // the quota update here. this due to performance reasons on installations
     // that do not use workspace/portfolios, but heavily copy content.
     // in extreme cases (media object in pool and personal blog, deactivate workspace, change media object,
     // this may lead to incorrect data in the quota calculation)
     if ($ilSetting->get("disable_personal_workspace") && !$ilSetting->get('user_portfolios')) {
         return;
     }
     $parent_obj_ids = array();
     foreach ($a_mob->getUsages() as $item) {
         $parent_obj_id = $a_mob->getParentObjectIdForUsage($item);
         if ($parent_obj_id && !in_array($parent_obj_id, $parent_obj_ids)) {
             $parent_obj_ids[] = $parent_obj_id;
         }
     }
     // we could suppress this if object is present in a (repository) media pool
     // but this would lead to "quota-breaches" when the pool item is deleted
     // and "suddenly" all workspace owners get filesize added to their
     // respective quotas, regardless of current status
     include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
     ilDiskQuotaHandler::handleUpdatedSourceObject($a_mob->getType(), $a_mob->getId(), ilUtil::dirSize($a_mob->getDataDirectory()), $parent_obj_ids);
 }
 /**
  * Check access to media object
  *
  * @param
  * @return
  */
 function checkAccessMob($obj_id)
 {
     $usages = ilObjMediaObject::lookupUsages($obj_id);
     foreach ($usages as $usage) {
         $oid = ilObjMediaObject::getParentObjectIdForUsage($usage, true);
         // for content snippets we must get their usages and check them
         if ($usage["type"] == "mep:pg") {
             include_once "./Modules/MediaPool/classes/class.ilMediaPoolPage.php";
             $usages2 = ilMediaPoolPage::lookupUsages($usage["id"]);
             foreach ($usages2 as $usage2) {
                 $oid2 = ilObjMediaObject::getParentObjectIdForUsage($usage2, true);
                 if ($this->checkAccessMobUsage($usage2, $oid2)) {
                     return true;
                 }
             }
         } else {
             if ($this->checkAccessMobUsage($usage, $oid)) {
                 return true;
             }
         }
     }
     return false;
 }
 /**
  * Standard Version of Fill Row. Most likely to
  * be overwritten by derived class.
  */
 protected function fillRow($a_set)
 {
     global $lng, $ilCtrl, $ilAccess;
     $usage = $a_set;
     //var_dump($usage);
     if (is_int(strpos($usage["type"], ":"))) {
         $us_arr = explode(":", $usage["type"]);
         $usage["type"] = $us_arr[1];
         $cont_type = $us_arr[0];
     }
     include_once './Services/Link/classes/class.ilLink.php';
     switch ($usage["type"]) {
         case "pg":
             include_once "./Services/COPage/classes/class.ilPageObjectFactory.php";
             $page_obj = ilPageObjectFactory::getInstance($cont_type, $usage["id"]);
             $item = array();
             //$this->tpl->setVariable("TXT_OBJECT", $usage["type"].":".$usage["id"]);
             switch ($cont_type) {
                 case "lm":
                     require_once "./Modules/LearningModule/classes/class.ilObjContentObject.php";
                     require_once "./Modules/LearningModule/classes/class.ilObjLearningModule.php";
                     require_once "./Modules/LearningModule/classes/class.ilLMObject.php";
                     if (ilObject::_lookupType($page_obj->getParentId()) == "lm") {
                         $lm_obj =& new ilObjLearningModule($page_obj->getParentId(), false);
                         $item["obj_type_txt"] = $this->lng->txt("obj_" . $cont_type);
                         $item["obj_title"] = $lm_obj->getTitle();
                         $item["sub_txt"] = $this->lng->txt("pg");
                         $item["sub_title"] = ilLMObject::_lookupTitle($page_obj->getId());
                         $ref_id = $this->getFirstWritableRefId($lm_obj->getId());
                         if ($ref_id > 0) {
                             $item["obj_link"] = ilLink::_getStaticLink($page_obj->getId() . "_" . $ref_id, "pg");
                         }
                     }
                     break;
                 case "dbk":
                     require_once "./Modules/LearningModule/classes/class.ilObjContentObject.php";
                     require_once "./Modules/LearningModule/classes/class.ilLMObject.php";
                     require_once "./Modules/LearningModule/classes/class.ilObjDlBook.php";
                     if (ilObject::_lookupType($page_obj->getParentId()) == "dbk") {
                         $lm_obj =& new ilObjDlBook($page_obj->getParentId(), false);
                         $item["obj_type_txt"] = $this->lng->txt("obj_" . $cont_type);
                         $item["obj_title"] = $lm_obj->getTitle();
                         $item["sub_txt"] = $this->lng->txt("pg");
                         $item["sub_title"] = ilLMObject::_lookupTitle($page_obj->getId());
                         $ref_id = $this->getFirstWritableRefId($lm_obj->getId());
                         if ($ref_id > 0) {
                             $item["obj_link"] = ilLink::_getStaticLink($page_obj->getId() . "_" . $ref_id, "pg");
                         }
                     }
                     break;
                 case "wpg":
                     require_once "./Modules/Wiki/classes/class.ilWikiPage.php";
                     $item["obj_type_txt"] = $this->lng->txt("obj_wiki");
                     $item["obj_title"] = ilObject::_lookupTitle($page_obj->getParentId());
                     $item["sub_txt"] = $this->lng->txt("pg");
                     $item["sub_title"] = ilWikiPage::lookupTitle($page_obj->getId());
                     $ref_id = $this->getFirstWritableRefId($page_obj->getParentId());
                     if ($ref_id > 0) {
                         $item["obj_link"] = ilLink::_getStaticLink($ref_id, "wiki");
                     }
                     break;
                 case "gdf":
                     require_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php";
                     require_once "./Modules/Glossary/classes/class.ilGlossaryDefinition.php";
                     $term_id = ilGlossaryDefinition::_lookupTermId($page_obj->getId());
                     $glo_id = ilGlossaryTerm::_lookGlossaryId($term_id);
                     $item["obj_type_txt"] = $this->lng->txt("obj_glo");
                     $item["obj_title"] = ilObject::_lookupTitle($glo_id);
                     $item["sub_txt"] = $this->lng->txt("cont_term");
                     $item["sub_title"] = ilGlossaryTerm::_lookGlossaryTerm($term_id);
                     $ref_id = $this->getFirstWritableRefId($page_obj->getParentId());
                     if ($ref_id > 0) {
                         $item["obj_link"] = ilLink::_getStaticLink($ref_id, "glo");
                     }
                     break;
                 case "cont":
                     $item["obj_type_txt"] = $this->lng->txt("obj_" . $cont_type);
                     $item["obj_title"] = ilObject::_lookupTitle($page_obj->getId());
                     $ref_id = $this->getFirstWritableRefId($page_obj->getId());
                     if ($ref_id > 0) {
                         $item["obj_link"] = ilLink::_getStaticLink($ref_id, $cont_type);
                     }
                     break;
                 default:
                     include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
                     $oid = ilObjMediaObject::getParentObjectIdForUsage($a_set);
                     if ($oid > 0) {
                         $type = ilObject::_lookupType($oid);
                         $item["obj_type_txt"] = $this->lng->txt("obj_" . $type);
                         $item["obj_title"] = ilObject::_lookupTitle($oid);
                         $ref_id = $this->getFirstWritableRefId($oid);
                         if ($ref_id > 0) {
                             $item["obj_link"] = ilLink::_getStaticLink($ref_id, $type);
                         }
                     }
                     break;
             }
             break;
         case "mep":
             $item["obj_type_txt"] = $this->lng->txt("obj_mep");
             $item["obj_title"] = ilObject::_lookupTitle($usage["id"]);
             $ref_id = $this->getFirstWritableRefId($usage["id"]);
             if ($ref_id > 0) {
                 $item["obj_link"] = ilLink::_getStaticLink($ref_id, "mep");
             }
             break;
         case "map":
             $item["obj_type_txt"] = $this->lng->txt("obj_mob");
             $item["obj_title"] = ilObject::_lookupTitle($usage["id"]);
             $item["sub_txt"] = $this->lng->txt("cont_link_area");
             break;
     }
     // show versions
     if ($this->include_hist) {
         $ver = "";
         if (is_array($usage["hist_nr"]) && (count($usage["hist_nr"]) > 1 || $usage["hist_nr"][0] > 0)) {
             asort($usage["hist_nr"]);
             $ver = $sep = "";
             if ($usage["hist_nr"][0] == 0) {
                 array_shift($usage["hist_nr"]);
                 $usage["hist_nr"][] = 0;
             }
             if (count($usage["hist_nr"]) > 5) {
                 $ver .= "..., ";
                 $cnt = count($usage["hist_nr"]) - 5;
                 for ($i = 0; $i < $cnt; $i++) {
                     unset($usage["hist_nr"][$i]);
                 }
             }
             foreach ($usage["hist_nr"] as $nr) {
                 if ($nr > 0) {
                     $ver .= $sep . $nr;
                 } else {
                     $ver .= $sep . $this->lng->txt("cont_current_version");
                 }
                 $sep = ", ";
             }
         }
         $this->tpl->setCurrentBlock("versions");
         $this->tpl->setVariable("VAL_VERSIONS", $ver);
         $this->tpl->parseCurrentBlock();
     }
     if ($item["obj_type_txt"] != "") {
         $this->tpl->setVariable("VAL_TYPE", $item["obj_type_txt"]);
     }
     if ($usage["type"] != "clip") {
         if ($item["obj_link"]) {
             $this->tpl->setCurrentBlock("linked_item");
             $this->tpl->setVariable("TXT_OBJECT", $item["obj_title"]);
             $this->tpl->setVariable("HREF_LINK", $item["obj_link"]);
             $this->tpl->parseCurrentBlock();
         } else {
             $this->tpl->setVariable("TXT_OBJECT_NO_LINK", $item["obj_title"]);
         }
         if ($item["sub_txt"] != "") {
             $this->tpl->setVariable("SEP", ", ");
             $this->tpl->setVariable("SUB_TXT", $item["sub_txt"]);
             if ($item["sub_title"] != "") {
                 $this->tpl->setVariable("SEP2", ": ");
                 $this->tpl->setVariable("SUB_TITLE", $item["sub_title"]);
             }
         }
     } else {
         $this->tpl->setVariable("TXT_OBJECT_NO_LINK", $this->lng->txt("cont_users_have_mob_in_clip1") . " " . $usage["cnt"] . " " . $this->lng->txt("cont_users_have_mob_in_clip2"));
     }
 }
예제 #5
0
 protected static function handleQuotaUpdate(ilObjFile $a_file)
 {
     include_once "Services/MediaObjects/classes/class.ilObjMediaObject.php";
     $mob = new ilObjMediaObject();
     // file itself could be workspace item
     $parent_obj_ids = array($a_file->getId());
     foreach ($a_file->getUsages() as $item) {
         $parent_obj_id = $mob->getParentObjectIdForUsage($item);
         if ($parent_obj_id && !in_array($parent_obj_id, $parent_obj_ids)) {
             $parent_obj_ids[] = $parent_obj_id;
         }
     }
     include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
     ilDiskQuotaHandler::handleUpdatedSourceObject($a_file->getType(), $a_file->getId(), $a_file->getDiskUsage(), $parent_obj_ids);
 }