ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilPCFileList Class Reference

Class ilPCFileList. More...

+ Inheritance diagram for ilPCFileList:
+ Collaboration diagram for ilPCFileList:

Public Member Functions

 init ()
 Init page content component. More...
 
 setNode (&$a_node)
 Set xml node of page content. More...
 
 create (&$a_pg_obj, $a_hier_id, $a_pc_id="")
 
 appendItem ($a_id, $a_location, $a_format)
 
 setListTitle ($a_title, $a_language)
 
 getListTitle ()
 
 getLanguage ()
 
 getFileList ()
 Get list of files. More...
 
 deleteFileItems ($a_ids)
 Delete file items. More...
 
 savePositions ($a_pos)
 Save positions of file items. More...
 
 getAllClasses ()
 Get all style classes. More...
 
 saveStyleClasses ($a_class)
 Save style classes of file items. More...
 
- Public Member Functions inherited from ilPageContent
 __construct ($a_pg_obj)
 Constructor. More...
 
 setPage ($a_val)
 Set page. More...
 
 getPage ()
 Get page. More...
 
 init ()
 Init object. More...
 
 getType ()
 Get type of page content. More...
 
 setNode (&$a_node)
 Set xml node of page content. More...
 
getNode ()
 Get xml node of page content. More...
 
 getJavascriptFiles ()
 Get Javascript files. More...
 
 getCssFiles ()
 Get css files. More...
 
 getOnloadCode ()
 Get on load code. More...
 
 setHierId ($a_hier_id)
 Set hierarchical ID in xml structure. More...
 
 getHierId ()
 Get hierarchical id. More...
 
 lookupHierId ()
 Get hierarchical id from dom. More...
 
 readHierId ()
 Read PC Id. More...
 
 setPcId ($a_pcid)
 Set PC Id. More...
 
 getPCId ()
 Get PC Id. More...
 
 readPCId ()
 Read PC Id. More...
 
 writePCId ($a_pc_id)
 Write pc id. More...
 
 isGreaterHierId ($a, $b)
 Check whether Hier ID $a is greater than Hier ID $b. More...
 
 setEnabled ($value)
 Set Enabled value for page content component. More...
 
 enable ()
 Enable page content. More...
 
 disable ()
 Disable page content. More...
 
 isEnabled ()
 Check whether page content is enabled. More...
 
 createPageContentNode ($a_set_this_node=true)
 Create page content node (always use this method first when adding a new element) More...
 
 modifyPageContentPostXsl ($a_output, $a_mode)
 Modify page content after xsl. More...
 

Static Public Member Functions

static getLangVars ()
 Get lang vars needed for editing. More...
 
static afterPageUpdate ($a_page, DOMDocument $a_domdoc, $a_xml, $a_creation)
 After page has been updated (or created) More...
 
static beforePageDelete ($a_page)
 Before page is being deleted. More...
 
static afterPageHistoryEntry ($a_page, DOMDocument $a_old_domdoc, $a_old_xml, $a_old_nr)
 After page history entry has been created. More...
 
static saveFileUsage ($a_page, $a_domdoc, $a_old_nr=0)
 Save file usages. More...
 
static collectFileItems ($a_page, $a_domdoc)
 Get all file items that are used within the page. More...
 
- Static Public Member Functions inherited from ilPageContent
static incEdId ($ed_id)
 Increases an hierarchical editing id at lowest level (last number) More...
 
static decEdId ($ed_id)
 Decreases an hierarchical editing id at lowest level (last number) More...
 
static haveSameContainer ($ed_id1, $ed_id2)
 Check, if two ids are in same container. More...
 
static sortHierIds ($a_array)
 Sort an array of Hier IDS in ascending order. More...
 
static getLangVars ()
 Get lang vars needed for editing. More...
 
static handleCopiedContent (DOMDocument $a_domdoc, $a_self_ass=true, $a_clone_mobs=false)
 Handle copied content. More...
 
static afterPageUpdate ($a_page, DOMDocument $a_domdoc, $a_xml, $a_creation)
 After page has been updated (or created) More...
 
static beforePageDelete ($a_page)
 Before page is being deleted. More...
 
static afterPageHistoryEntry ($a_page, DOMDocument $a_old_domdoc, $a_old_xml, $a_old_nr)
 After page history entry has been created. More...
 

Data Fields

 $list_node
 
- Data Fields inherited from ilPageContent
 $hier_id
 
 $node
 
 $dom
 

Additional Inherited Members

- Protected Member Functions inherited from ilPageContent
 setType ($a_type)
 Set Type. More...
 

Detailed Description

Class ilPCFileList.

File List content object (see ILIAS DTD)

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 18 of file class.ilPCFileList.php.

Member Function Documentation

◆ afterPageHistoryEntry()

static ilPCFileList::afterPageHistoryEntry (   $a_page,
DOMDocument  $a_old_domdoc,
  $a_old_xml,
  $a_old_nr 
)
static

After page history entry has been created.

Parameters
object$a_pagepage object
DOMDocument$a_old_domdocold dom document
string$a_old_xmlold xml
integer$a_old_nrhistory number

Reimplemented from ilPageContent.

Definition at line 324 of file class.ilPCFileList.php.

325 {
326 self::saveFileUsage($a_page, $a_old_domdoc, $a_old_nr);
327 }
static saveFileUsage($a_page, $a_domdoc, $a_old_nr=0)
Save file usages.

References saveFileUsage().

+ Here is the call graph for this function:

◆ afterPageUpdate()

static ilPCFileList::afterPageUpdate (   $a_page,
DOMDocument  $a_domdoc,
  $a_xml,
  $a_creation 
)
static

After page has been updated (or created)

Parameters
object$a_pagepage object
DOMDocument$a_domdocdom document
string$a_xmlxml
bool$a_creationtrue on creation, otherwise false

Reimplemented from ilPageContent.

Definition at line 262 of file class.ilPCFileList.php.

263 {
264 if (!$a_page->getImportMode())
265 {
266 // pc filelist
267 include_once("./Modules/File/classes/class.ilObjFile.php");
269 $a_page->getParentType().":pg", $a_page->getId(), 0, $a_page->getLanguage());
270 self::saveFileUsage($a_page, $a_domdoc);
271
272 foreach($file_ids as $file) // check, whether file object can be deleted
273 {
275 {
276 $file_obj = new ilObjFile($file, false);
277 $usages = $file_obj->getUsages();
278 if (count($usages) == 0) // delete, if no usage exists
279 {
280 if ($file_obj->getMode() == "filelist") // non-repository object
281 {
282 $file_obj->delete();
283 }
284 }
285 }
286 }
287 }
288
289 }
print $file
Class ilObjFile.
static _getFilesOfObject($a_type, $a_id, $a_usage_hist_nr=0, $a_usage_lang="-")
get all files of an object
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupType($a_id, $a_reference=false)
lookup object type

References $file, ilObject\_exists(), ilObjFile\_getFilesOfObject(), ilObject\_lookupType(), and saveFileUsage().

+ Here is the call graph for this function:

◆ appendItem()

ilPCFileList::appendItem (   $a_id,
  $a_location,
  $a_format 
)

Definition at line 54 of file class.ilPCFileList.php.

55 {
56 // File Item
57 $new_item =& $this->dom->create_element("FileItem");
58 $new_item =& $this->list_node->append_child($new_item);
59
60 // Identifier
61 $id_node =& $this->dom->create_element("Identifier");
62 $id_node =& $new_item->append_child($id_node);
63 $id_node->set_attribute("Catalog", "ILIAS");
64 $id_node->set_attribute("Entry", "il__file_".$a_id);
65
66 // Location
67 $loc_node =& $this->dom->create_element("Location");
68 $loc_node =& $new_item->append_child($loc_node);
69 $loc_node->set_attribute("Type", "LocalFile");
70 $loc_node->set_content($a_location);
71
72 // Format
73 $form_node =& $this->dom->create_element("Format");
74 $form_node =& $new_item->append_child($form_node);
75 $form_node->set_content($a_format);
76 }

◆ beforePageDelete()

static ilPCFileList::beforePageDelete (   $a_page)
static

Before page is being deleted.

Parameters
object$a_pagepage object

Reimplemented from ilPageContent.

Definition at line 296 of file class.ilPCFileList.php.

297 {
298 $files = self::collectFileItems($a_page, $a_page->getDomDoc());
299
300 // delete all file usages
301 include_once("./Modules/File/classes/class.ilObjFile.php");
302 ilObjFile::_deleteAllUsages($a_page->getParentType().":pg", $a_page->getId(), false,
303 $a_page->getLanguage());
304
305 include_once("./Modules/File/classes/class.ilObjFile.php");
306 foreach ($files as $file_id)
307 {
308 if (ilObject::_exists($file_id))
309 {
310 $file_obj = new ilObjFile($file_id, false);
311 $file_obj->delete();
312 }
313 }
314 }
static _deleteAllUsages($a_type, $a_id, $a_usage_hist_nr=0, $a_usage_lang="-")
static delete all usages of
static collectFileItems($a_page, $a_domdoc)
Get all file items that are used within the page.

References ilObjFile\_deleteAllUsages(), ilObject\_exists(), and collectFileItems().

+ Here is the call graph for this function:

◆ collectFileItems()

static ilPCFileList::collectFileItems (   $a_page,
  $a_domdoc 
)
static

Get all file items that are used within the page.

Definition at line 347 of file class.ilPCFileList.php.

348 {
349 $xpath = new DOMXPath($a_domdoc);
350 $nodes = $xpath->query('//FileItem/Identifier');
351 $file_ids = array();
352 foreach($nodes as $node)
353 {
354 $id_arr = explode("_", $node->getAttribute("Entry"));
355 $file_id = $id_arr[count($id_arr) - 1];
356 if ($file_id > 0 && ($id_arr[1] == "" || $id_arr[1] == IL_INST_ID || $id_arr[1] == 0))
357 {
358 $file_ids[$file_id] = $file_id;
359 }
360 }
361 // file items in download links
362 $xpath = new DOMXPath($a_domdoc);
363 $nodes = $xpath->query("//IntLink[@Type='File']");
364 foreach($nodes as $node)
365 {
366 $t = $node->getAttribute("Target");
367 if (substr($t, 0, 9) == "il__dfile")
368 {
369 $id_arr = explode("_", $t);
370 $file_id = $id_arr[count($id_arr) - 1];
371 $file_ids[$file_id] = $file_id;
372 }
373 }
374 return $file_ids;
375 }

References ilPageContent\$node, and $t.

Referenced by beforePageDelete(), ilPageObjectGUI\downloadFile(), ilSCORM2004Asset\exportHTMLPageObjects(), ilObjGlossary\exportXML(), ilGlossaryDefinition\exportXMLDefinition(), ilLMPageObject\exportXMLPageContent(), ilSCORM2004Page\exportXMLPageContent(), ilObjTest\exportXMLPageObjects(), ilObjQuestionPool\exportXMLPageObjects(), ilSCORM2004ScoGUI\getExportResources(), saveFileUsage(), and ilContObjectManifestBuilder\writeResources().

+ Here is the caller graph for this function:

◆ create()

ilPCFileList::create ( $a_pg_obj,
  $a_hier_id,
  $a_pc_id = "" 
)

Definition at line 36 of file class.ilPCFileList.php.

37 {
38 $this->node = $this->createPageContentNode();
39 $a_pg_obj->insertContent($this, $a_hier_id, IL_INSERT_AFTER, $a_pc_id);
40 $this->list_node =& $this->dom->create_element("FileList");
41 $this->list_node =& $this->node->append_child($this->list_node);
42 }
const IL_INSERT_AFTER
createPageContentNode($a_set_this_node=true)
Create page content node (always use this method first when adding a new element)

References ilPageContent\createPageContentNode(), and IL_INSERT_AFTER.

+ Here is the call graph for this function:

◆ deleteFileItems()

ilPCFileList::deleteFileItems (   $a_ids)

Delete file items.

Definition at line 151 of file class.ilPCFileList.php.

152 {
153 $files = array();
154
155 // File Item
156 $childs = $this->list_node->child_nodes();
157
158 for ($i=0; $i<count($childs); $i++)
159 {
160 if ($childs[$i]->node_name() == "FileItem")
161 {
162 $id = $entry = "";
163 $pc_id = $childs[$i]->get_attribute("PCID");
164 $hier_id = $childs[$i]->get_attribute("HierId");
165
166 if (in_array($hier_id.":".$pc_id, $a_ids))
167 {
168 $childs[$i]->unlink($childs[$i]);
169 }
170 }
171 }
172 }

References ilPageContent\$hier_id.

◆ getAllClasses()

ilPCFileList::getAllClasses ( )

Get all style classes.

Definition at line 208 of file class.ilPCFileList.php.

209 {
210 $classes = array();
211
212 // File Item
213 $childs = $this->list_node->child_nodes();
214
215 for ($i=0; $i<count($childs); $i++)
216 {
217 if ($childs[$i]->node_name() == "FileItem")
218 {
219 $classes[$childs[$i]->get_attribute("HierId").":".
220 $childs[$i]->get_attribute("PCID")] = $childs[$i]->get_attribute("Class");
221 }
222 }
223
224 return $classes;
225 }

◆ getFileList()

ilPCFileList::getFileList ( )

Get list of files.

Definition at line 114 of file class.ilPCFileList.php.

115 {
116 $files = array();
117
118 // File Item
119 $childs = $this->list_node->child_nodes();
120 for ($i=0; $i<count($childs); $i++)
121 {
122 if ($childs[$i]->node_name() == "FileItem")
123 {
124 $id = $entry = "";
125 $pc_id = $childs[$i]->get_attribute("PCID");
126 $hier_id = $childs[$i]->get_attribute("HierId");
127 $class = $childs[$i]->get_attribute("Class");
128
129 // Identifier
130 $id_node = $childs[$i]->first_child();
131 if ($id_node->node_name() == "Identifier")
132 {
133 $entry = $id_node->get_attribute("Entry");
134 if (substr($entry, 0, 9) == "il__file_")
135 {
136 $id = substr($entry, 9);
137 }
138 }
139 $files[] = array("entry" => $entry, "id" => $id,
140 "pc_id" => $pc_id, "hier_id" => $hier_id,
141 "class" => $class);
142 }
143 }
144
145 return $files;
146 }

References ilPageContent\$hier_id.

◆ getLanguage()

ilPCFileList::getLanguage ( )

Definition at line 98 of file class.ilPCFileList.php.

99 {
100 $chlds =& $this->list_node->child_nodes();
101 for($i=0; $i<count($chlds); $i++)
102 {
103 if ($chlds[$i]->node_name() == "Title")
104 {
105 return $chlds[$i]->get_attribute("Language");
106 }
107 }
108 return "";
109 }

◆ getLangVars()

static ilPCFileList::getLangVars ( )
static

Get lang vars needed for editing.

Returns
array array of lang var keys

Reimplemented from ilPageContent.

Definition at line 249 of file class.ilPCFileList.php.

250 {
251 return array("ed_edit_files", "ed_insert_filelist", "pc_flist");
252 }

◆ getListTitle()

ilPCFileList::getListTitle ( )

Definition at line 85 of file class.ilPCFileList.php.

86 {
87 $chlds =& $this->list_node->child_nodes();
88 for($i=0; $i<count($chlds); $i++)
89 {
90 if ($chlds[$i]->node_name() == "Title")
91 {
92 return $chlds[$i]->get_content();
93 }
94 }
95 return "";
96 }

◆ init()

ilPCFileList::init ( )

Init page content component.

Reimplemented from ilPageContent.

Definition at line 25 of file class.ilPCFileList.php.

26 {
27 $this->setType("flst");
28 }
setType($a_type)
Set Type.

References ilPageContent\setType().

+ Here is the call graph for this function:

◆ saveFileUsage()

static ilPCFileList::saveFileUsage (   $a_page,
  $a_domdoc,
  $a_old_nr = 0 
)
static

Save file usages.

Definition at line 332 of file class.ilPCFileList.php.

333 {
334 $file_ids = self::collectFileItems($a_page, $a_domdoc);
335 include_once("./Modules/File/classes/class.ilObjFile.php");
336 ilObjFile::_deleteAllUsages($a_page->getParentType().":pg", $a_page->getId(), $a_old_nr, $a_page->getLanguage());
337 foreach($file_ids as $file_id)
338 {
339 ilObjFile::_saveUsage($file_id, $a_page->getParentType().":pg", $a_page->getId(), $a_old_nr,
340 $a_page->getLanguage());
341 }
342 }
static _saveUsage($a_file_id, $a_type, $a_id, $a_usage_hist_nr=0, $a_usage_lang="-")
save usage

References ilObjFile\_deleteAllUsages(), ilObjFile\_saveUsage(), and collectFileItems().

Referenced by afterPageHistoryEntry(), and afterPageUpdate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ savePositions()

ilPCFileList::savePositions (   $a_pos)

Save positions of file items.

Definition at line 177 of file class.ilPCFileList.php.

178 {
179 asort($a_pos);
180
181 // File Item
182 $childs = $this->list_node->child_nodes();
183 $nodes = array();
184 for ($i=0; $i<count($childs); $i++)
185 {
186 if ($childs[$i]->node_name() == "FileItem")
187 {
188 $id = $entry = "";
189 $pc_id = $childs[$i]->get_attribute("PCID");
190 $hier_id = $childs[$i]->get_attribute("HierId");
191 $nodes[$hier_id.":".$pc_id] = $childs[$i];
192 $childs[$i]->unlink($childs[$i]);
193 }
194 }
195
196 foreach($a_pos as $k => $v)
197 {
198 if (is_object($nodes[$k]))
199 {
200 $nodes[$k] = $this->list_node->append_child($nodes[$k]);
201 }
202 }
203 }

References ilPageContent\$hier_id.

◆ saveStyleClasses()

ilPCFileList::saveStyleClasses (   $a_class)

Save style classes of file items.

Definition at line 230 of file class.ilPCFileList.php.

231 {
232 // File Item
233 $childs = $this->list_node->child_nodes();
234 for ($i=0; $i<count($childs); $i++)
235 {
236 if ($childs[$i]->node_name() == "FileItem")
237 {
238 $childs[$i]->set_attribute("Class",
239 $a_class[$childs[$i]->get_attribute("HierId").":".
240 $childs[$i]->get_attribute("PCID")]);
241 }
242 }
243 }

◆ setListTitle()

ilPCFileList::setListTitle (   $a_title,
  $a_language 
)

Definition at line 78 of file class.ilPCFileList.php.

79 {
81 $this->list_node, "Title", array("FileItem"),
82 $a_title, array("Language" => $a_language));
83 }
setFirstOptionalElement(&$doc, &$parent_node, $a_node_name, $a_successors, $a_content, $a_attributes, $a_remove_childs=true)
searches for an element $a_node_name within the childs of $parent_node if no node is found,...

References ilDOMUtil\setFirstOptionalElement().

+ Here is the call graph for this function:

◆ setNode()

ilPCFileList::setNode ( $a_node)

Set xml node of page content.

Parameters
object$a_nodenode object

Reimplemented from ilPageContent.

Definition at line 30 of file class.ilPCFileList.php.

31 {
32 parent::setNode($a_node); // this is the PageContent node
33 $this->list_node =& $a_node->first_child(); // this is the Table node
34 }

Field Documentation

◆ $list_node

ilPCFileList::$list_node

Definition at line 20 of file class.ilPCFileList.php.


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