ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilContainer.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24// note: the values are derived from ilObjCourse constants
25// to enable easy migration from course view setting to container view setting
26
27require_once "./Services/Object/classes/class.ilObject.php";
28
39class ilContainer extends ilObject
40{
41 protected $order_type = 0;
42 protected $hiddenfilesfound = false;
43
44 // container view constants
45 const VIEW_SESSIONS = 0;
46 const VIEW_OBJECTIVE = 1;
47 const VIEW_TIMING = 2;
48 const VIEW_ARCHIVE = 3;
49 const VIEW_SIMPLE = 4;
50 const VIEW_BY_TYPE = 5;
51 const VIEW_INHERIT = 6;
52 const VIEW_ILINC = 7;
53
55
56
57 const SORT_TITLE = 0;
58 const SORT_MANUAL = 1;
59 const SORT_ACTIVATION = 2;
60 const SORT_INHERIT = 3;
61 const SORT_CREATION = 4;
62
65
68
72
73
74 static $data_preloaded = false;
75
82 function ilContainer($a_id = 0, $a_call_by_reference = true)
83 {
84 parent::__construct($a_id, $a_call_by_reference);
85 }
86
87
88
94 {
95 $webspace_dir = ilUtil::getWebspaceDir();
96 $cont_dir = $webspace_dir."/container_data";
97 if (!is_dir($cont_dir))
98 {
99 ilUtil::makeDir($cont_dir);
100 }
101 $obj_dir = $cont_dir."/obj_".$this->getId();
102 if (!is_dir($obj_dir))
103 {
104 ilUtil::makeDir($obj_dir);
105 }
106 }
107
114 {
115 return $this->_getContainerDirectory($this->getId());
116 }
117
124 {
125 return ilUtil::getWebspaceDir()."/container_data/obj_".$a_id;
126 }
127
134 function getBigIconPath()
135 {
136 return self::_lookupIconPath($this->getId());
137 }
138
146 {
147 return self::_lookupIconPath($this->getId());
148 }
149
157 {
158 return self::_lookupIconPath($this->getId());
159 }
160
167 {
168 return self::_lookupIconPath($this->getId());
169 }
170
171
177 function setHiddenFilesFound($a_hiddenfilesfound)
178 {
179 $this->hiddenfilesfound = $a_hiddenfilesfound;
180 }
181
188 {
190 }
191
196 {
197 return $this->style_id;
198 }
199
203 function setStyleSheetId($a_style_id)
204 {
205 $this->style_id = $a_style_id;
206 }
207
216 function _lookupContainerSetting($a_id, $a_keyword, $a_default_value = NULL)
217 {
218 global $ilDB;
219
220 $q = "SELECT * FROM container_settings WHERE ".
221 " id = ".$ilDB->quote($a_id ,'integer')." AND ".
222 " keyword = ".$ilDB->quote($a_keyword ,'text');
223 $set = $ilDB->query($q);
224 $rec = $set->fetchRow(DB_FETCHMODE_ASSOC);
225
226 if(isset($rec['value']))
227 {
228 return $rec["value"];
229 }
230 if($a_default_value === NULL)
231 {
232 return '';
233 }
234 return $a_default_value;
235 }
236
237 function _writeContainerSetting($a_id, $a_keyword, $a_value)
238 {
239 global $ilDB;
240
241 $query = "DELETE FROM container_settings WHERE ".
242 "id = ".$ilDB->quote($a_id,'integer')." ".
243 "AND keyword = ".$ilDB->quote($a_keyword,'text');
244 $res = $ilDB->manipulate($query);
245
246 $query = "INSERT INTO container_settings (id, keyword, value) VALUES (".
247 $ilDB->quote($a_id ,'integer').", ".
248 $ilDB->quote($a_keyword ,'text').", ".
249 $ilDB->quote($a_value ,'text').
250 ")";
251 $res = $ilDB->manipulate($query);
252 }
253
254 public static function _getContainerSettings($a_id)
255 {
256 global $ilDB;
257
258 $res = array();
259
260 $sql = "SELECT * FROM container_settings WHERE ".
261 " id = ".$ilDB->quote($a_id ,'integer');
262 $set = $ilDB->query($sql);
263 while($row = $ilDB->fetchAssoc($set))
264 {
265 $res[$row["keyword"]] = $row["value"];
266 }
267
268 return $res;
269 }
270
271 public static function _deleteContainerSettings($a_id, $a_keyword = null, $a_keyword_like = false)
272 {
273 global $ilDB;
274
275 if(!$a_id)
276 {
277 return;
278 }
279
280 $sql = "DELETE FROM container_settings WHERE ".
281 " id = ".$ilDB->quote($a_id ,'integer');
282 if($a_keyword)
283 {
284 if(!$a_keyword_like)
285 {
286 $sql .= " AND keyword = ".$ilDB->quote($a_keyword, "text");
287 }
288 else
289 {
290 $sql .= " AND ".$ilDB->like("keyword", "text", $a_keyword);
291 }
292 }
293 $ilDB->manipulate($sql);
294 }
295
296 public static function _exportContainerSettings(ilXmlWriter $a_xml, $a_obj_id)
297 {
298 // container settings
299 $settings = self::_getContainerSettings($a_obj_id);
300 if(sizeof($settings))
301 {
302 $a_xml->xmlStartTag("ContainerSettings");
303
304 foreach($settings as $keyword => $value)
305 {
306 // :TODO: proper custom icon export/import
307 if(stristr($keyword, "icon"))
308 {
309 continue;
310 }
311
312 $a_xml->xmlStartTag(
313 'ContainerSetting',
314 array(
315 'id' => $keyword,
316 )
317 );
318
319 $a_xml->xmlData($value);
320 $a_xml->xmlEndTag("ContainerSetting");
321 }
322
323 $a_xml->xmlEndTag("ContainerSettings");
324 }
325 }
326
333 function _lookupIconPath($a_id, $a_size = "big")
334 {
335 if ($a_size == "")
336 {
337 $a_size = "big";
338 }
339 $size = $a_size;
340
341 if (ilContainer::_lookupContainerSetting($a_id, "icon_custom"))
342 {
343 $cont_dir = ilContainer::_getContainerDirectory($a_id);
344
345 $file_name = $cont_dir."/icon_custom.svg";
346 if (is_file($file_name))
347 {
348 return $file_name;
349 }
350 }
351
352 return "";
353 }
354
358 function saveIcons($a_custom_icon)
359 {
360 global $ilDB;
361
363 $cont_dir = $this->getContainerDirectory();
364
365 $file_name = "";
366 if ($a_custom_icon != "")
367 {
368 $file_name = $cont_dir."/icon_custom.svg";
369 ilUtil::moveUploadedFile($a_custom_icon, "icon_custom.svg", $file_name);
370
371 if ($file_name != "" && is_file($file_name))
372 {
373 ilContainer::_writeContainerSetting($this->getId(), "icon_custom", 1);
374 }
375 else
376 {
377 ilContainer::_writeContainerSetting($this->getId(), "icon_custom", 0);
378 }
379 }
380 }
381
386 {
387 $cont_dir = $this->getContainerDirectory();
388 $small_file_name = $cont_dir."/icon_custom.svg";
389 @unlink($small_file_name);
390 ilContainer::_writeContainerSetting($this->getId(), "icon_custom", 0);
391 }
392
401 public function cloneObject($a_target_id,$a_copy_id = 0)
402 {
403 global $ilLog;
404
405 $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
406
407 include_once('./Services/Container/classes/class.ilContainerSortingSettings.php');
408 #18624 - copy all sorting settings
409 ilContainerSortingSettings::_cloneSettings($this->getId(), $new_obj->getId());
410
411 // copy content page
412 include_once("./Services/Container/classes/class.ilContainerPage.php");
413 if (ilContainerPage::_exists("cont",
414 $this->getId()))
415 {
416 $orig_page = new ilContainerPage($this->getId());
417 $orig_page->copy($new_obj->getId(), "cont", $new_obj->getId());
418 }
419
420 // #10271 - copy start objects page
421 include_once("./Services/Container/classes/class.ilContainerStartObjectsPage.php");
423 $this->getId()))
424 {
425 $orig_page = new ilContainerStartObjectsPage($this->getId());
426 $orig_page->copy($new_obj->getId(), "cstr", $new_obj->getId());
427 }
428
429 // #10271
430 foreach(self::_getContainerSettings($this->getId()) as $keyword => $value)
431 {
432 self::_writeContainerSetting($new_obj->getId(), $keyword, $value);
433
434 // copy custom icons
435 if($keyword == "icon_custom" &&
436 $value)
437 {
438 // see saveIcons()
439 $new_obj->createContainerDirectory();
440 $tgt_dir = $new_obj->getContainerDirectory();
441 $src_dir = $this->getContainerDirectory();
442 $file = "icon_custom.svg";
443 $src_file = $src_dir."/".$file;
444 if(file_exists($src_file))
445 {
446 copy($src_file, $tgt_dir."/".$file);
447 }
448 }
449 }
450
451 return $new_obj;
452 }
453
462 public function cloneDependencies($a_target_id,$a_copy_id)
463 {
464 global $ilLog;
465
466 parent::cloneDependencies($a_target_id, $a_copy_id);
467
468 include_once('./Services/Container/classes/class.ilContainerSorting.php');
469 ilContainerSorting::_getInstance($this->getId())->cloneSorting($a_target_id,$a_copy_id);
470
471 // fix item group references in page content
472 include_once("./Modules/ItemGroup/classes/class.ilObjItemGroup.php");
474
475 include_once('Services/Object/classes/class.ilObjectLP.php');
476 $olp = ilObjectLP::getInstance($this->getId());
477 $collection = $olp->getCollectionInstance();
478 if($collection)
479 {
480 $collection->cloneCollection($a_target_id, $a_copy_id);
481 }
482
483 return true;
484 }
485
497 public function cloneAllObject($session_id, $client_id, $new_type, $ref_id, $clone_source, $options, $soap_call = false)
498 {
499 global $ilLog;
500
501 include_once('./Services/Link/classes/class.ilLink.php');
502 include_once('Services/CopyWizard/classes/class.ilCopyWizardOptions.php');
503
504 global $ilAccess,$ilErr,$rbacsystem,$tree,$ilUser;
505
506 // Save wizard options
508 $wizard_options = ilCopyWizardOptions::_getInstance($copy_id);
509 $wizard_options->saveOwner($ilUser->getId());
510 $wizard_options->saveRoot($clone_source);
511
512 // add entry for source container
513 $wizard_options->initContainer($clone_source, $ref_id);
514
515 foreach($options as $source_id => $option)
516 {
517 $wizard_options->addEntry($source_id,$option);
518 }
519 $wizard_options->read();
520 $wizard_options->storeTree($clone_source);
521
522 // Special handling for course in existing courses
523 if($new_type == 'crs' and ilObject::_lookupType(ilObject::_lookupObjId($ref_id)) == 'crs')
524 {
525 $ilLog->write(__METHOD__.': Copy course in course...');
526 $ilLog->write(__METHOD__.': Added mapping, source ID: '.$clone_source.', target ID: '.$ref_id);
527 $wizard_options->read();
528 $wizard_options->dropFirstNode();
529 $wizard_options->appendMapping($clone_source,$ref_id);
530 }
531
532 #print_r($options);
533 // Duplicate session to avoid logout problems with backgrounded SOAP calls
534 $new_session_id = ilSession::_duplicate($session_id);
535 // Start cloning process using soap call
536 include_once 'Services/WebServices/SOAP/classes/class.ilSoapClient.php';
537
538 $soap_client = new ilSoapClient();
539 $soap_client->setResponseTimeout(30);
540 $soap_client->enableWSDL(true);
541
542 $ilLog->write(__METHOD__.': Trying to call Soap client...');
543 if($soap_client->init())
544 {
545 $ilLog->write(__METHOD__.': Calling soap clone method...');
546 $res = $soap_client->call('ilClone',array($new_session_id.'::'.$client_id, $copy_id));
547 }
548 else
549 {
550 $ilLog->write(__METHOD__.': SOAP call failed. Calling clone method manually. ');
551 $wizard_options->disableSOAP();
552 $wizard_options->read();
553 include_once('./webservice/soap/include/inc.soap_functions.php');
554 $res = ilSoapFunctions::ilClone($new_session_id.'::'.$client_id, $copy_id);
555 }
556 // Check if copy is in progress or if this has been called by soap (don't wait for finishing)
557 if($soap_call || ilCopyWizardOptions::_isFinished($copy_id))
558 {
559 return $res;
560 }
561 else
562 {
563 return $ref_id;
564 }
565 }
566
570 function getViewMode()
571 {
573 }
574
578 function getOrderType()
579 {
580 return $this->order_type ? $this->order_type : ilContainer::SORT_TITLE;
581 }
582
583 function setOrderType($a_value)
584 {
585 $this->order_type = $a_value;
586 }
587
596 function getSubItems($a_admin_panel_enabled = false, $a_include_side_block = false,
597 $a_get_single = 0)
598 {
599 global $objDefinition, $ilBench, $tree, $ilObjDataCache, $ilUser, $rbacsystem,
601
602 // Caching
603 if (is_array($this->items[(int) $a_admin_panel_enabled][(int) $a_include_side_block]) &&
604 !$a_get_single)
605 {
606 return $this->items[(int) $a_admin_panel_enabled][(int) $a_include_side_block];
607 }
608
609 $type_grps = $this->getGroupedObjTypes();
610 $objects = $tree->getChilds($this->getRefId(), "title");
611
612 $objects = self::getCompleteDescriptions($objects);
613
614 $found = false;
615 $all_ref_ids = array();
616
617 if(!self::$data_preloaded)
618 {
619 include_once("./Services/Object/classes/class.ilObjectListGUIPreloader.php");
621 }
622
623 include_once('Services/Container/classes/class.ilContainerSorting.php');
624 $sort = ilContainerSorting::_getInstance($this->getId());
625
626 // TODO: check this
627 // get items attached to a session
628 include_once './Modules/Session/classes/class.ilEventItems.php';
629 $event_items = ilEventItems::_getItemsOfContainer($this->getRefId());
630
631 foreach ($objects as $key => $object)
632 {
633 if ($a_get_single > 0 && $object["child"] != $a_get_single)
634 {
635 continue;
636 }
637
638 // hide object types in devmode
639 if ($objDefinition->getDevMode($object["type"]) || $object["type"] == "adm"
640 || $object["type"] == "rolf")
641 {
642 continue;
643 }
644
645 // remove inactive plugins
646 if ($objDefinition->isInactivePlugin($object["type"]))
647 {
648 continue;
649 }
650
651 // BEGIN WebDAV: Don't display hidden Files, Folders and Categories
652 if (in_array($object['type'], array('file','fold','cat')))
653 {
654 include_once 'Modules/File/classes/class.ilObjFileAccess.php';
655 if (ilObjFileAccess::_isFileHidden($object['title']))
656 {
657 $this->setHiddenFilesFound(true);
658 if (!$a_admin_panel_enabled)
659 {
660 continue;
661 }
662 }
663 }
664 // END WebDAV: Don't display hidden Files, Folders and Categories
665
666 // including event items!
667 if (!self::$data_preloaded)
668 {
669 $preloader->addItem($object["obj_id"], $object["type"], $object["child"]);
670 }
671
672 // filter out items that are attached to an event
673 if (in_array($object['ref_id'],$event_items))
674 {
675 continue;
676 }
677
678 // filter side block items
679 if(!$a_include_side_block && $objDefinition->isSideBlock($object['type']))
680 {
681 continue;
682 }
683
684 $all_ref_ids[] = $object["child"];
685 }
686
687 // data preloader
688 if (!self::$data_preloaded)
689 {
690 $preloader->preload();
691 unset($preloader);
692
693 self::$data_preloaded = true;
694 }
695
696 foreach($objects as $key => $object)
697 {
698 // see above, objects were filtered
699 if(!in_array($object["child"], $all_ref_ids))
700 {
701 continue;
702 }
703
704 // group object type groups together (e.g. learning resources)
705 $type = $objDefinition->getGroupOfObj($object["type"]);
706 if ($type == "")
707 {
708 $type = $object["type"];
709 }
710
711 // this will add activation properties
712 $this->addAdditionalSubItemInformation($object);
713
714 $this->items[$type][$key] = $object;
715
716 $this->items["_all"][$key] = $object;
717 if ($object["type"] != "sess")
718 {
719 $this->items["_non_sess"][$key] = $object;
720 }
721 }
722
723 $this->items[(int) $a_admin_panel_enabled][(int) $a_include_side_block]
724 = $sort->sortItems($this->items);
725
726 return $this->items[(int) $a_admin_panel_enabled][(int) $a_include_side_block];
727 }
728
732 function gotItems()
733 {
734 if (is_array($this->items["_all"]) && count($this->items["_all"]) > 0)
735 {
736 return true;
737 }
738 return false;
739 }
740
746 {
747 }
748
755 {
756 global $objDefinition;
757
758 if (empty($this->type_grps))
759 {
760 $this->type_grps = $objDefinition->getGroupedRepositoryObjectTypes($this->getType());
761 }
762 return $this->type_grps;
763 }
764
769 {
770 global $ilSetting;
771
772 // @todo: this will need a more general approach
773 if ($ilSetting->get("enable_cat_page_edit"))
774 {
775 return true;
776 }
777 }
778
782 function create()
783 {
784 $ret = parent::create();
785
786 if (((int) $this->getStyleSheetId()) > 0)
787 {
788 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
790 }
791
792 return $ret;
793 }
794
798 function update()
799 {
800 $ret = parent::update();
801
802 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
804
805 return $ret;
806 }
807
808
816 public function read()
817 {
818 parent::read();
819
820 include_once("./Services/Container/classes/class.ilContainerSortingSettings.php");
822
823 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
825 }
826
834 public static function getCompleteDescriptions(array $objects)
835 {
836 global $ilSetting, $ilObjDataCache;
837 // using long descriptions?
838 $short_desc = $ilSetting->get("rep_shorten_description");
839 $short_desc_max_length = $ilSetting->get("rep_shorten_description_length");
840 if(!$short_desc || $short_desc_max_length != ilObject::DESC_LENGTH)
841 {
842 // using (part of) shortened description
843 if($short_desc && $short_desc_max_length && $short_desc_max_length < ilObject::DESC_LENGTH)
844 {
845 foreach($objects as $key => $object)
846 {
847 $objects[$key]["description"] = ilUtil::shortenText($object["description"], $short_desc_max_length, true);
848 }
849 }
850 // using (part of) long description
851 else
852 {
853 $obj_ids = array();
854 foreach($objects as $key => $object)
855 {
856 $obj_ids[] = $object["obj_id"];
857 }
858 if(sizeof($obj_ids))
859 {
861 foreach($objects as $key => $object)
862 {
863 // #12166 - keep translation, ignore long description
864 if($ilObjDataCache->isTranslatedDescription($object["obj_id"]))
865 {
866 $long_desc[$object["obj_id"]] = $object["description"];
867 }
868 if($short_desc && $short_desc_max_length)
869 {
870 $long_desc[$object["obj_id"]] = ilUtil::shortenText($long_desc[$object["obj_id"]], $short_desc_max_length, true);
871 }
872 $objects[$key]["description"] = $long_desc[$object["obj_id"]];
873 }
874 }
875 }
876 }
877 return $objects;
878 }
879
880} // END class ilContainer
881?>
print $file
$size
Definition: RandomTest.php:79
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
Container page object.
static _cloneSettings($a_old_id, $a_new_id)
Clone settings.
static _lookupSortMode($a_obj_id)
lookup sort mode
static _getInstance($a_obj_id)
get instance by obj_id
Container start objects page object.
Class ilContainer.
_lookupIconPath($a_id, $a_size="big")
lookup icon path
const SORT_DIRECTION_DESC
saveIcons($a_custom_icon)
save container icons
cloneDependencies($a_target_id, $a_copy_id)
Clone object dependencies (container sorting)
static $data_preloaded
getGroupedObjTypes()
Get grouped repository object types.
getSubItems($a_admin_panel_enabled=false, $a_include_side_block=false, $a_get_single=0)
Get subitems of container.
getStyleSheetId()
get ID of assigned style sheet object
static _exportContainerSettings(ilXmlWriter $a_xml, $a_obj_id)
static getCompleteDescriptions(array $objects)
overwrites description fields to long or short description in an assoc array keys needed (obj_id and ...
static _deleteContainerSettings($a_id, $a_keyword=null, $a_keyword_like=false)
const SORT_NEW_ITEMS_ORDER_ACTIVATION
getBigIconPath()
Get path for big icon.
getContainerDirectory()
Get the container directory.
getCustomIconPath()
Get path for custom icon.
createContainerDirectory()
Create directory for the container.
setHiddenFilesFound($a_hiddenfilesfound)
Set Found hidden files (set by getSubItems).
addAdditionalSubItemInformation(&$object)
Add additional information to sub item, e.g.
static _getContainerSettings($a_id)
const SORT_NEW_ITEMS_ORDER_TITLE
_lookupContainerSetting($a_id, $a_keyword, $a_default_value=NULL)
Lookup a container setting.
setOrderType($a_value)
getHiddenFilesFound()
Get Found hidden files (set by getSubItems).
_getContainerDirectory($a_id)
Get the container directory.
setStyleSheetId($a_style_id)
set ID of assigned style sheet object
const SORT_NEW_ITEMS_ORDER_CREATION
_writeContainerSetting($a_id, $a_keyword, $a_value)
getSmallIconPath()
Get path for small icon.
const SORT_NEW_ITEMS_POSITION_BOTTOM
removeCustomIcon()
remove small icon
getOrderType()
Get order type default implementation.
const SORT_NEW_ITEMS_POSITION_TOP
ilContainer($a_id=0, $a_call_by_reference=true)
Constructor @access public.
const SORT_DIRECTION_ASC
gotItems()
Check whether we got any items.
getViewMode()
Get container view mode.
cloneAllObject($session_id, $client_id, $new_type, $ref_id, $clone_source, $options, $soap_call=false)
clone all objects according to this container
enablePageEditing()
Check whether page editing is allowed for container.
cloneObject($a_target_id, $a_copy_id=0)
Clone container settings.
getTinyIconPath()
Get path for tiny icon.
static _allocateCopyId()
Allocate a copy for further entries.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
static _isFinished($a_copy_id)
check if copy is finished
_getItemsOfContainer($a_ref_id)
static _isFileHidden($a_file_name)
Returns true, if a file with the specified name, is usually hidden from the user.
static fixContainerItemGroupRefsAfterCloning($a_source_container, $a_copy_id)
Fix container item group references after a container has been cloned.
static lookupObjectStyle($a_obj_id)
Lookup object style.
static writeStyleUsage($a_obj_id, $a_style_id)
Write style usage.
static getInstance($a_obj_id)
Preloader for object list GUIs.
Class ilObject Basic functions for all objects.
getType()
get object type @access public
static _lookupObjId($a_id)
getRefId()
get reference id @access public
getId()
get object id @access public
const DESC_LENGTH
static getLongDescriptions(array $a_obj_ids)
Get long description data.
static _lookupType($a_id, $a_reference=false)
lookup object type
static _exists($a_parent_type, $a_id, $a_lang="")
Checks whether page exists.
static _duplicate($a_session_id)
Duplicate session.
static ilClone($sid, $copy_identifier)
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static shortenText($a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
static getWebspaceDir($mode="filesystem")
get webspace directory
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
XML writer class.
xmlEndTag($tag)
Writes an endtag.
xmlData($data, $encode=TRUE, $escape=TRUE)
Writes data.
xmlStartTag($tag, $attrs=NULL, $empty=FALSE, $encode=TRUE, $escape=TRUE)
Writes a starttag.
global $ilBench
Definition: ilias.php:18
$client_id
global $ilSetting
Definition: privfeed.php:40
global $ilDB
if(!is_array($argv)) $options
global $ilUser
Definition: imgupload.php:15