ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilAdvancedMDRecordExportFiles.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 
33 {
34  protected $export_dir = '';
35 
42  public function __construct($a_obj_id = null)
43  {
44  $this->export_dir = ilUtil::getDataDir() . '/ilAdvancedMetaData/export';
45  if ($a_obj_id) {
46  $this->export_dir .= "_" . $a_obj_id;
47  }
48  $this->init();
49  }
50 
57  public function readFilesInfo()
58  {
59  $file_info = array();
60  foreach ($this->getFiles() as $name => $data) {
61  if ($data['type'] != 'file') {
62  continue;
63  }
64  $file_parts = explode('.', $name);
65  if (!is_numeric($file_parts[0]) or (strcmp('xml', $file_parts[1]) != 0)) {
66  continue;
67  }
68  $file_info[$file_parts[0]]['size'] = $data['size'];
69  $file_info[$file_parts[0]]['date'] = $file_parts[0];
70 
71  if ($xml = simplexml_load_file($this->export_dir . '/' . $name)) {
72  $records = array();
73  foreach ($xml->xpath('Record/Title') as $title) {
74  $records[] = (string) $title;
75  }
76  $file_info[$file_parts[0]]['name'] = $records;
77  }
78  }
79  return $file_info ? $file_info : array();
80  }
81 
88  public function getFiles()
89  {
90  if (!@is_dir($this->export_dir)) {
91  return array();
92  }
93  foreach (ilUtil::getDir($this->export_dir) as $file_name => $file_data) {
94  $files[$file_name] = $file_data;
95  }
96  return $files ? $files : array();
97  }
98 
106  public function create($a_xml)
107  {
108  global $ilLog;
109 
110  if (!$fp = @fopen($this->export_dir . '/' . time() . '.xml', 'w+')) {
111  $ilLog->write(__METHOD__ . ': Cannot open file ' . $this->export_dir . '/' . time() . '.xml');
112 
113  require_once './Services/Exceptions/classes/class.ilException.php';
114  throw new ilException('Cannot write export file.');
115  }
116 
117  @fwrite($fp, $a_xml);
118  @fclose($fp);
119  }
120 
127  public function deleteByFileId($a_timest)
128  {
129  global $ilLog;
130 
131  if (!unlink($this->export_dir . '/' . $a_timest . '.xml')) {
132  $ilLog->write(__METHOD__ . ': Cannot delete file ' . $this->export_dir . '/' . $a_timest . '.xml');
133  return false;
134  }
135  return true;
136  }
137 
145  public function getAbsolutePathByFileId($a_file_basename)
146  {
147  global $ilLog;
148 
149  if (!@file_exists($this->export_dir . '/' . $a_file_basename . '.xml')) {
150  $ilLog->write(__METHOD__ . ': Cannot find file ' . $this->export_dir . '/' . $a_file_basename . '.xml');
151  return false;
152  }
153  return $this->export_dir . '/' . $a_file_basename . '.xml';
154  }
155 
162  private function init()
163  {
164  if (!@is_dir($this->export_dir)) {
165  ilUtil::makeDirParents($this->export_dir);
166  }
167  }
168 }
$files
Definition: add-vimline.php:18
static makeDirParents($a_dir)
Create a new directory and all parent directories.
Add rich text string
create($a_xml)
Create new export file from xml string.
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
$records
Definition: simple_test.php:22
$xml
Definition: metadata.php:240
if($format !==null) $name
Definition: metadata.php:146
getAbsolutePathByFileId($a_file_basename)
Get absolut path by file id.
Create styles array
The data for the language used.
static getDataDir()
get data directory (outside webspace)
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.