ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilVerificationObject.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once ('./Services/Object/classes/class.ilObject2.php');
5
15abstract class ilVerificationObject extends ilObject2
16{
17 protected $map = array();
18 protected $properties = array();
19
20 const TYPE_STRING = 1;
21 const TYPE_BOOL = 2;
22 const TYPE_INT = 3;
23 const TYPE_DATE = 4;
24 const TYPE_RAW = 5;
25 const TYPE_ARRAY = 6;
26
27 function __construct($a_id = 0, $a_reference = true)
28 {
29 $this->map = $this->getPropertyMap();
30 parent::__construct($a_id, $a_reference);
31 }
32
38 abstract protected function getPropertyMap();
39
46 public function hasProperty($a_name)
47 {
48 return array_key_exists($a_name, $this->map);
49 }
50
57 public function getPropertyType($a_name)
58 {
59 if($this->hasProperty($a_name))
60 {
61 return $this->map[$a_name];
62 }
63 }
64
71 public function getProperty($a_name)
72 {
73 if($this->hasProperty($a_name))
74 {
75 return $this->properties[$a_name];
76 }
77 }
78
85 public function setProperty($a_name, $a_value)
86 {
87 if($this->hasProperty($a_name))
88 {
89 $this->properties[$a_name] = $a_value;
90 }
91 }
92
100 protected function importProperty($a_type, $a_data = null, $a_raw_data = null)
101 {
102 $data_type = $this->getPropertyType($a_type);
103 if($data_type)
104 {
105 $value = null;
106
107 switch($data_type)
108 {
110 $value = (string)$a_data;
111 break;
112
113 case self::TYPE_BOOL:
114 $value = (bool)$a_data;
115 break;
116
117 case self::TYPE_INT:
118 $value = (int)$a_data;
119 break;
120
121 case self::TYPE_DATE:
122 $value = new ilDate($a_data, IL_CAL_DATE);
123 break;
124
125 case self::TYPE_ARRAY:
126 if($a_data)
127 {
128 $value = unserialize($a_data);
129 }
130 break;
131
132 case self::TYPE_RAW:
133 $value = $a_raw_data;
134 break;
135 }
136
137 $this->setProperty($a_type, $value);
138 }
139 }
140
146 protected function exportProperty($a_name)
147 {
148 $data_type = $this->getPropertyType($a_name);
149 if($data_type)
150 {
151 $value = $this->getProperty($a_name);
152 $raw_data = null;
153
154 switch($data_type)
155 {
156 case self::TYPE_DATE:
157 if($value)
158 {
159 $value = $value->get(IL_CAL_DATE);
160 }
161 break;
162
163 case self::TYPE_ARRAY:
164 if($value)
165 {
166 $value = serialize($value);
167 }
168 break;
169
170 case self::TYPE_RAW:
171 $raw_data = $value;
172 $value = null;
173 break;
174 }
175
176 return array("parameters" => $value,
177 "raw_data" => $raw_data);
178 }
179 }
180
186 protected function doRead()
187 {
188 global $ilDB;
189
190 if($this->id)
191 {
192 $set = $ilDB->query("SELECT * FROM il_verification".
193 " WHERE id = ".$ilDB->quote($this->id, "integer"));
194 if($ilDB->numRows($set))
195 {
196 while($row = $ilDB->fetchAssoc($set))
197 {
198 $this->importProperty($row["type"], $row["parameters"],
199 $row["raw_data"]);
200 }
201 }
202 return true;
203 }
204 return false;
205 }
206
207 public function doCreate()
208 {
209 return $this->saveProperties();
210 }
211
212 public function doUpdate()
213 {
214 return $this->saveProperties();
215 }
216
222 protected function saveProperties()
223 {
224 global $ilDB;
225
226 if($this->id)
227 {
228 // remove all existing properties
229 $ilDB->manipulate("DELETE FROM il_verification".
230 " WHERE id = ".$ilDB->quote($this->id, "integer"));
231
232 foreach($this->getPropertyMap() as $name => $type)
233 {
234 $property = $this->exportProperty($name);
235
236 $fields = array("id" => array("integer", $this->id),
237 "type" => array("text", $name),
238 "parameters" => array("text", $property["parameters"]),
239 "raw_data" => array("text", $property["raw_data"]));
240
241 $ilDB->insert("il_verification", $fields);
242 }
243
244 $this->handleQuotaUpdate();
245
246 return true;
247 }
248 return false;
249 }
250
251
257 public function doDelete()
258 {
259 global $ilDB;
260
261 if($this->id)
262 {
263 // remove all files
264 include_once "Services/Verification/classes/class.ilVerificationStorageFile.php";
265 $storage = new ilVerificationStorageFile($this->id);
266 $storage->delete();
267
268 $this->handleQuotaUpdate();
269
270 $ilDB->manipulate("DELETE FROM il_verification".
271 " WHERE id = ".$ilDB->quote($this->id, "integer"));
272 return true;
273 }
274 return false;
275 }
276
277 public static function initStorage($a_id, $a_subdir = null)
278 {
279 include_once "Services/Verification/classes/class.ilVerificationStorageFile.php";
280 $storage = new ilVerificationStorageFile($a_id);
281 $storage->create();
282
283 $path = $storage->getAbsolutePath()."/";
284
285 if($a_subdir)
286 {
287 $path .= $a_subdir."/";
288
289 if(!is_dir($path))
290 {
291 mkdir($path);
292 }
293 }
294
295 return $path;
296 }
297
298 public function getFilePath()
299 {
300 $file = $this->getProperty("file");
301 if($file)
302 {
303 $path = $this->initStorage($this->getId(), "certificate");
304 return $path.$file;
305 }
306 }
307
308 public function getOfflineFilename()
309 {
310 return ilUtil::getASCIIFilename($this->getTitle()).".pdf";
311 }
312
313 protected function handleQuotaUpdate()
314 {
315 include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
317 $this->getId(),
318 ilUtil::dirsize($this->initStorage($this->getId())),
319 array($this->getId()),
320 true);
321 }
322}
323
324?>
print $file
const IL_CAL_DATE
Class for single dates.
static handleUpdatedSourceObject($a_src_obj_type, $a_src_obj_id, $a_src_filesize, $a_owner_obj_ids=null, $a_is_prtf=false)
Find and update/create all related entries for source object.
Class ilObject2 This is an intermediate progress of ilObject class.
getType()
get object type @access public
getId()
get object id @access public
getTitle()
get object title @access public
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static dirsize($directory)
get size of a directory or a file.
Verification object base class.
hasProperty($a_name)
Check if given property is valid.
setProperty($a_name, $a_value)
Set property value.
exportProperty($a_name)
Export property to database.
doDelete()
Delete entry from database.
__construct($a_id=0, $a_reference=true)
Constructor @access public.
getProperty($a_name)
Get property value.
saveProperties()
Save current properties to database.
static initStorage($a_id, $a_subdir=null)
getPropertyMap()
Return property map (name => type)
importProperty($a_type, $a_data=null, $a_raw_data=null)
Import property from database.
getPropertyType($a_name)
Get property data type.
$path
Definition: index.php:22
global $ilDB