ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
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()
43  {
44  $this->export_dir = ilUtil::getDataDir().'/ilAdvancedMetaData/export';
45  $this->init();
46  }
47 
54  public function readFilesInfo()
55  {
56  $file_info = array();
57  foreach($this->getFiles() as $name => $data)
58  {
59  if($data['type'] != 'file')
60  {
61  continue;
62  }
63  $file_parts = explode('.',$name);
64  if(!is_numeric($file_parts[0]) or (strcmp('xml',$file_parts[1]) != 0))
65  {
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  {
73  $records = array();
74  foreach($xml->xpath('Record/Title') as $title)
75  {
76  $records[] = (string) $title;
77  }
78  $file_info[$file_parts[0]]['name'] = $records;
79  }
80  }
81  return $file_info ? $file_info : array();
82  }
83 
90  public function getFiles()
91  {
92  if(!@is_dir($this->export_dir))
93  {
94  return array();
95  }
96  foreach(ilUtil::getDir($this->export_dir) as $file_name => $file_data)
97  {
98  $files[$file_name] = $file_data;
99  }
100  return $files ? $files : array();
101  }
102 
110  public function create($a_xml)
111  {
112  global $ilLog,$ilErr;
113 
114  if(!$fp = @fopen($this->export_dir.'/'.time().'.xml','w+'))
115  {
116  $ilLog->write(__METHOD__.': Cannot open file '.$this->export_dir.'/'.time().'.xml');
117  $ilErr->raiseError('Cannot write export file.',$ilErr->WARNING);
118  }
119 
120  @fwrite($fp,$a_xml);
121  @fclose($fp);
122  }
123 
130  public function deleteByFileId($a_timest)
131  {
132  global $ilLog;
133 
134  if(!unlink($this->export_dir.'/'.$a_timest.'.xml'))
135  {
136  $ilLog->write(__METHOD__.': Cannot delete file '.$this->export_dir.'/'.$a_timest.'.xml');
137  return false;
138  }
139  return true;
140  }
141 
149  public function getAbsolutePathByFileId($a_file_basename)
150  {
151  global $ilLog;
152 
153  if(!@file_exists($this->export_dir.'/'.$a_file_basename.'.xml'))
154  {
155  $ilLog->write(__METHOD__.': Cannot find file '.$this->export_dir.'/'.$a_file_basename.'.xml');
156  return false;
157  }
158  return $this->export_dir.'/'.$a_file_basename.'.xml';
159  }
160 
167  private function init()
168  {
169  if(!@is_dir($this->export_dir))
170  {
171  ilUtil::makeDirParents($this->export_dir);
172  }
173  }
174 }
175 ?>