27 require_once
"./Services/Object/classes/class.ilObject.php";
130 $this->db = $DIC->database();
131 $this->log = $DIC[
"ilLog"];
132 $this->access = $DIC->access();
133 $this->error = $DIC[
"ilErr"];
134 $this->rbacsystem = $DIC->rbac()->system();
135 $this->tree = $DIC->repositoryTree();
136 $this->
user = $DIC->user();
137 $this->obj_definition = $DIC[
"objDefinition"];
140 $this->setting = $DIC[
"ilSetting"];
141 parent::__construct($a_id, $a_reference);
142 include_once(
"./Services/Object/classes/class.ilObjectTranslation.php");
144 if ($this->
getId() > 0) {
174 $cont_dir = $webspace_dir .
"/container_data";
175 if (!is_dir($cont_dir)) {
178 $obj_dir = $cont_dir .
"/obj_" . $this->
getId();
179 if (!is_dir($obj_dir)) {
211 $this->hiddenfilesfound = $a_hiddenfilesfound;
229 return $this->style_id;
237 $this->style_id = $a_style_id;
247 $this->news_timeline = $a_val;
267 $this->news_timeline_auto_entries = $a_val;
287 $this->news_timeline_landing_page = $a_val;
297 return $this->news_timeline_landing_page;
340 $this->news_block_activated = $a_val;
350 return $this->news_block_activated;
360 $this->use_news = $a_val;
370 return $this->use_news;
385 $ilDB = $DIC->database();
387 $q =
"SELECT * FROM container_settings WHERE " .
388 " id = " .
$ilDB->quote($a_id,
'integer') .
" AND " .
389 " keyword = " .
$ilDB->quote($a_keyword,
'text');
390 $set =
$ilDB->query($q);
393 if (isset($rec[
'value'])) {
394 return $rec[
"value"];
396 if ($a_default_value === null) {
399 return $a_default_value;
411 $ilDB = $DIC->database();
413 $query =
"DELETE FROM container_settings WHERE " .
414 "id = " .
$ilDB->quote($a_id,
'integer') .
" " .
415 "AND keyword = " .
$ilDB->quote($a_keyword,
'text');
419 $log->debug(
"Write container setting, id: " . $a_id .
", keyword: " . $a_keyword .
", value: " . $a_value);
421 $query =
"INSERT INTO container_settings (id, keyword, value) VALUES (" .
422 $ilDB->quote($a_id,
'integer') .
", " .
423 $ilDB->quote($a_keyword,
'text') .
", " .
424 $ilDB->quote($a_value,
'text') .
434 $ilDB = $DIC->database();
438 $sql =
"SELECT * FROM container_settings WHERE " .
439 " id = " .
$ilDB->quote($a_id,
'integer');
440 $set =
$ilDB->query($sql);
442 $res[
$row[
"keyword"]] = $row[
"value"];
452 $ilDB = $DIC->database();
458 $sql =
"DELETE FROM container_settings WHERE " .
459 " id = " .
$ilDB->quote($a_id,
'integer');
461 if (!$a_keyword_like) {
462 $sql .=
" AND keyword = " .
$ilDB->quote($a_keyword,
"text");
464 $sql .=
" AND " .
$ilDB->like(
"keyword",
"text", $a_keyword);
467 $ilDB->manipulate($sql);
473 $settings = self::_getContainerSettings($a_obj_id);
474 if (
sizeof($settings)) {
477 foreach ($settings as $keyword => $value) {
479 if (stristr($keyword,
"icon")) {
506 public function cloneObject($a_target_id, $a_copy_id = 0, $a_omit_tree =
false)
509 $new_obj = parent::cloneObject($a_target_id, $a_copy_id, $a_omit_tree);
512 include_once(
"./Services/Object/classes/class.ilObjectTranslation.php");
514 $ot->copy($new_obj->getId());
516 include_once(
'./Services/Container/classes/class.ilContainerSortingSettings.php');
517 #18624 - copy all sorting settings 521 include_once(
"./Services/Container/classes/class.ilContainerPage.php");
527 $orig_page->copy($new_obj->getId(),
"cont", $new_obj->getId());
531 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
536 $new_id = $style_obj->ilClone();
537 $new_obj->setStyleSheetId($new_id);
545 include_once(
"./Services/Container/classes/class.ilContainerStartObjectsPage.php");
551 $orig_page->copy($new_obj->getId(),
"cstr", $new_obj->getId());
555 foreach (self::_getContainerSettings($this->
getId()) as $keyword => $value) {
556 self::_writeContainerSetting($new_obj->getId(), $keyword, $value);
566 $mom_noti->cloneSettings($new_obj->getRefId());
583 parent::cloneDependencies($a_target_id, $a_copy_id);
585 include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
589 ilContainer::fixInternalLinksAfterCopy($a_target_id, $a_copy_id, $this->
getRefId());
592 include_once(
"./Modules/ItemGroup/classes/class.ilObjItemGroup.php");
595 include_once(
'Services/Object/classes/class.ilObjectLP.php');
597 $collection = $olp->getCollectionInstance();
599 $collection->cloneCollection($a_target_id, $a_copy_id);
623 include_once(
'./Services/Link/classes/class.ilLink.php');
624 include_once(
'Services/CopyWizard/classes/class.ilCopyWizardOptions.php');
635 $wizard_options->saveOwner(
$ilUser->getId());
636 $wizard_options->saveRoot($clone_source);
639 $wizard_options->initContainer($clone_source,
$ref_id);
641 foreach (
$options as $source_id => $option) {
642 $wizard_options->addEntry($source_id, $option);
644 $wizard_options->read();
645 $wizard_options->storeTree($clone_source);
647 include_once
'./Services/Object/classes/class.ilObjectCopyGUI.php';
651 $wizard_options->read();
652 $wizard_options->dropFirstNode();
653 $wizard_options->appendMapping($clone_source, $ref_id);
661 include_once
'Services/WebServices/SOAP/classes/class.ilSoapClient.php';
664 $soap_client->setResponseTimeout(5);
665 $soap_client->enableWSDL(
true);
667 $ilLog->write(__METHOD__ .
': Trying to call Soap client...');
668 if ($soap_client->init()) {
670 $res = $soap_client->call(
'ilClone', array($new_session_id .
'::' .
$client_id, $copy_id));
673 $wizard_options->disableSOAP();
674 $wizard_options->read();
675 include_once(
'./webservice/soap/include/inc.soap_functions.php');
679 'copy_id' => $copy_id,
680 'ref_id' => (
int)
$res 689 public function delete()
692 if (!parent::delete()) {
696 $this->obj_trans->delete();
719 $this->order_type = $a_value;
730 public function getSubItems($a_admin_panel_enabled =
false, $a_include_side_block =
false, $a_get_single = 0)
736 if (is_array($this->items[(
int) $a_admin_panel_enabled][(
int) $a_include_side_block]) &&
738 return $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block];
744 $objects = self::getCompleteDescriptions($objects);
747 $all_ref_ids = array();
749 if (!self::$data_preloaded) {
750 include_once(
"./Services/Object/classes/class.ilObjectListGUIPreloader.php");
754 include_once(
'Services/Container/classes/class.ilContainerSorting.php');
759 include_once
'./Modules/Session/classes/class.ilEventItems.php';
762 foreach ($objects as
$key => $object) {
763 if ($a_get_single > 0 && $object[
"child"] != $a_get_single) {
768 if (
$objDefinition->getDevMode($object[
"type"]) || $object[
"type"] ==
"adm" 769 || $object[
"type"] ==
"rolf") {
779 if (in_array($object[
'type'], array(
'file',
'fold',
'cat'))) {
780 include_once
'Modules/File/classes/class.ilObjFileAccess.php';
783 if (!$a_admin_panel_enabled) {
791 if (!self::$data_preloaded) {
792 $preloader->addItem($object[
"obj_id"], $object[
"type"], $object[
"child"]);
796 if (in_array($object[
'ref_id'], $event_items)) {
801 if (!$a_include_side_block &&
$objDefinition->isSideBlock($object[
'type'])) {
805 $all_ref_ids[] = $object[
"child"];
809 if (!self::$data_preloaded) {
810 $preloader->preload();
813 self::$data_preloaded =
true;
816 foreach ($objects as
$key => $object) {
818 if (!in_array($object[
"child"], $all_ref_ids)) {
825 $type = $object[
"type"];
833 $this->items[
"_all"][
$key] = $object;
834 if ($object[
"type"] !=
"sess") {
835 $this->items[
"_non_sess"][
$key] = $object;
839 $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block]
840 = $sort->sortItems($this->items);
842 return $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block];
850 if (is_array($this->items[
"_all"]) && count($this->items[
"_all"]) > 0) {
873 if (empty($this->type_grps)) {
876 return $this->type_grps;
887 if (
$ilSetting->get(
"enable_cat_page_edit")) {
899 $lng = $DIC->language();
901 $ret = parent::create();
910 $lng->getDefaultLanguage(),
915 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
920 $log->debug(
"Create Container, id: " . $this->
getId());
925 include_once(
"./Services/Object/classes/class.ilObjectServiceSettingsGUI.php");
937 parent::putInTree($a_parent_ref);
941 self::_writeContainerSetting($this->
getId(),
"hide_header_icon_and_title",
true);
944 self::_writeContainerSetting($this->
getId(),
"hide_top_actions",
true);
956 $trans->setDefaultTitle($this->
getTitle());
960 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
964 $log->debug(
"Update Container, id: " . $this->
getId());
969 include_once(
"./Services/Object/classes/class.ilObjectServiceSettingsGUI.php");
988 include_once(
"./Services/Container/classes/class.ilContainerSortingSettings.php");
991 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
1009 include_once(
"./Services/Object/classes/class.ilObjectServiceSettingsGUI.php");
1013 $this->setting->get(
'block_activated_news',
true)
1031 $ilObjDataCache = $DIC[
"ilObjDataCache"];
1033 $short_desc =
$ilSetting->get(
"rep_shorten_description");
1034 $short_desc_max_length =
$ilSetting->get(
"rep_shorten_description_length");
1038 foreach ($objects as
$key => $object) {
1045 foreach ($objects as
$key => $object) {
1046 $obj_ids[] = $object[
"obj_id"];
1048 if (
sizeof($obj_ids)) {
1050 foreach ($objects as
$key => $object) {
1052 if ($ilObjDataCache->isTranslatedDescription($object[
"obj_id"])) {
1053 $long_desc[$object[
"obj_id"]] = $object[
"description"];
1055 if ($short_desc && $short_desc_max_length) {
1072 protected static function fixInternalLinksAfterCopy($a_target_id, $a_copy_id, $a_source_ref_id)
1080 include_once(
"./Services/Container/classes/class.ilContainerPage.php");
1082 include_once(
"./Services/CopyWizard/classes/class.ilCopyWizardOptions.php");
1084 $mapping = $cwo->getMappings();
1088 $pg->handleRepositoryLinksOnCopy($mapping, $a_source_ref_id);
1089 $pg->update(
true,
true);
1092 foreach ($mapping as $old_ref_id => $new_ref_id) {
1093 if (!is_numeric($old_ref_id) || !is_numeric($new_ref_id)) {
1100 $file = $loc .
'/class.' . $class .
'.php';
1102 if (is_file($file)) {
1104 $coll =
new $class();
1109 $page->handleRepositoryLinksOnCopy($mapping, $a_source_ref_id);
1110 $page->update(
true,
true);
1122 $this->obj_trans->delete();
1132 $this->obj_trans->removeLanguage($a_lang);
1133 $this->obj_trans->save();
1147 if (empty($a_title)) {
1148 $a_title =
"NO TITLE";
1151 $this->obj_trans->addLanguage($a_lang, $a_title, $a_desc, $a_lang_default,
true);
1152 $this->obj_trans->save();
deleteTranslation($a_lang)
Delete translation.
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
setNewsTimelineAutoEntries($a_val)
Set news timeline auto entries.
static _exportContainerSettings(ilXmlWriter $a_xml, $a_obj_id)
cloneDependencies($a_target_id, $a_copy_id)
Clone object dependencies (container sorting)
xmlStartTag($tag, $attrs=null, $empty=false, $encode=true, $escape=true)
Writes a starttag.
static _getContainerDirectory($a_id)
Get the container directory.
static shortenText( $a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
removeTranslations()
Remove all translations of container.
const SORT_NEW_ITEMS_POSITION_TOP
addTranslation($a_title, $a_desc, $a_lang, $a_lang_default)
Add translation.
setStyleSheetId($a_style_id)
set ID of assigned style sheet object
isNewsTimelineEffective()
Is news timeline effective?
static getLongDescriptions(array $a_obj_ids)
Get long description data.
Container start objects page object.
static _getItemsOfContainer($a_ref_id)
static ilClone($sid, $copy_identifier)
static _isFileHidden($a_file_name)
Returns true, if a file with the specified name, is usually hidden from the user. ...
getNewsTimelineLandingPage()
Get news timline is landing page.
setHiddenFilesFound($a_hiddenfilesfound)
Set Found hidden files (set by getSubItems).
setNewsBlockActivated($a_val)
Set news block activated.
getViewMode()
Get container view mode.
setUseNews($a_val)
Set use news.
getNewsTimelineAutoEntries()
Get news timeline auto entries.
xmlData($data, $encode=true, $escape=true)
Writes data.
static lookupObjectStyle($a_obj_id)
Lookup object style.
static _cloneSettings($a_old_id, $a_new_id)
Clone settings.
xmlEndTag($tag)
Writes an endtag.
getOrderType()
Get order type default implementation.
getSubItems($a_admin_panel_enabled=false, $a_include_side_block=false, $a_get_single=0)
Get subitems of container.
static _lookupStandard($a_id)
Lookup standard flag.
static writeStyleUsage($a_obj_id, $a_style_id)
Write style usage.
Preloader for object list GUIs.
const SORT_NEW_ITEMS_POSITION_BOTTOM
static _getInstance($a_copy_id)
Get instance of copy wizard options.
getContainerDirectory()
Get the container directory.
setNewsTimelineLandingPage($a_val)
Set news timline is landing page.
foreach($_POST as $key=> $value) $res
setObjectTranslation(ilObjectTranslation $obj_trans)
Get object translation.
getId()
get object id public
isNewsTimelineLandingPageEffective()
Is news timeline landing page effective?
static _deleteContainerSettings($a_id, $a_keyword=null, $a_keyword_like=false)
setNewsTimeline($a_val)
Set news timeline.
const SORT_NEW_ITEMS_ORDER_CREATION
getStyleSheetId()
get ID of assigned style sheet object
getNewsTimeline()
Get news timeline.
static _lookupObjId($a_id)
static _getContainerSettings($a_id)
enablePageEditing()
Check whether page editing is allowed for container.
gotItems()
Check whether we got any items.
getTitle()
get object title public
getDescription()
get object description
getHiddenFilesFound()
Get Found hidden files (set by getSubItems).
static _allocateCopyId()
Allocate a copy for further entries.
cloneAllObject($session_id, $client_id, $new_type, $ref_id, $clone_source, $options, $soap_call=false, $a_submode=1)
clone all objects according to this container
static cloneSettingsOfBlock(string $block_type, int $block_id, int $new_block_id)
Clone block settings.
getObjectTranslation()
Get object translation.
getType()
get object type public
$news_timeline_auto_entries
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _lookupType($a_id, $a_reference=false)
lookup object type
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
const SORT_NEW_ITEMS_ORDER_ACTIVATION
static fixContainerItemGroupRefsAfterCloning($a_source_container, $a_copy_id)
Fix container item group references after a container has been cloned.
update($pash, $contents, Config $config)
static getInstance($a_parent_type, $a_id=0, $a_old_nr=0, $a_lang="-")
Get page object instance.
static _duplicate($a_session_id)
Duplicate session.
readContainerSettings()
Read container settings.
addAdditionalSubItemInformation(&$object)
Add additional information to sub item, e.g.
__construct($a_id=0, $a_reference=true)
const SORT_DIRECTION_DESC
getUseNews()
Get use news.
static getInstance($a_obj_id)
Get instance.
getLongDescription()
get object long description (stored in object_description)
getRefId()
get reference id public
static _writeContainerSetting($a_id, $a_keyword, $a_value)
static getLogger($a_component_id)
Get component logger.
static _lookupSortMode($a_obj_id)
lookup sort mode
static _getInstance($a_obj_id)
get instance by obj_id
createContainerDirectory()
Create directory for the container.
getNewsBlockActivated()
Get news block activated.
getGroupedObjTypes()
Get grouped repository object types.
static getInstance($a_obj_id)
const SORT_NEW_ITEMS_ORDER_TITLE
Membership notification settings.
static getWebspaceDir($mode="filesystem")
get webspace directory
static getCompleteDescriptions(array $objects)
overwrites description fields to long or short description in an assoc array keys needed (obj_id and ...
const SUBMODE_CONTENT_ONLY
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
Class handles translation mode for an object.