ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
DocumentProperties.php
Go to the documentation of this file.
1 <?php
37 {
39  const PROPERTY_TYPE_BOOLEAN = 'b';
40  const PROPERTY_TYPE_INTEGER = 'i';
41  const PROPERTY_TYPE_FLOAT = 'f';
42  const PROPERTY_TYPE_DATE = 'd';
43  const PROPERTY_TYPE_STRING = 's';
44  const PROPERTY_TYPE_UNKNOWN = 'u';
45 
46 
52  private $_creator = 'Unknown Creator';
53 
60 
66  private $_created;
67 
73  private $_modified;
74 
80  private $_title = 'Untitled Spreadsheet';
81 
87  private $_description = '';
88 
94  private $_subject = '';
95 
101  private $_keywords = '';
102 
108  private $_category = '';
109 
115  private $_manager = '';
116 
122  private $_company = 'Microsoft Corporation';
123 
129  private $_customProperties = array();
130 
131 
135  public function __construct()
136  {
137  // Initialise values
138  $this->_lastModifiedBy = $this->_creator;
139  $this->_created = time();
140  $this->_modified = time();
141  }
142 
148  public function getCreator() {
149  return $this->_creator;
150  }
151 
158  public function setCreator($pValue = '') {
159  $this->_creator = $pValue;
160  return $this;
161  }
162 
168  public function getLastModifiedBy() {
169  return $this->_lastModifiedBy;
170  }
171 
178  public function setLastModifiedBy($pValue = '') {
179  $this->_lastModifiedBy = $pValue;
180  return $this;
181  }
182 
188  public function getCreated() {
189  return $this->_created;
190  }
191 
198  public function setCreated($pValue = null) {
199  if (is_null($pValue)) {
200  $pValue = time();
201  } elseif (is_string($pValue)) {
202  if (is_numeric($pValue)) {
203  $pValue = intval($pValue);
204  } else {
205  $pValue = strtotime($pValue);
206  }
207  }
208 
209  $this->_created = $pValue;
210  return $this;
211  }
212 
218  public function getModified() {
219  return $this->_modified;
220  }
221 
228  public function setModified($pValue = null) {
229  if (is_null($pValue)) {
230  $pValue = time();
231  } elseif (is_string($pValue)) {
232  if (is_numeric($pValue)) {
233  $pValue = intval($pValue);
234  } else {
235  $pValue = strtotime($pValue);
236  }
237  }
238 
239  $this->_modified = $pValue;
240  return $this;
241  }
242 
248  public function getTitle() {
249  return $this->_title;
250  }
251 
258  public function setTitle($pValue = '') {
259  $this->_title = $pValue;
260  return $this;
261  }
262 
268  public function getDescription() {
269  return $this->_description;
270  }
271 
278  public function setDescription($pValue = '') {
279  $this->_description = $pValue;
280  return $this;
281  }
282 
288  public function getSubject() {
289  return $this->_subject;
290  }
291 
298  public function setSubject($pValue = '') {
299  $this->_subject = $pValue;
300  return $this;
301  }
302 
308  public function getKeywords() {
309  return $this->_keywords;
310  }
311 
318  public function setKeywords($pValue = '') {
319  $this->_keywords = $pValue;
320  return $this;
321  }
322 
328  public function getCategory() {
329  return $this->_category;
330  }
331 
338  public function setCategory($pValue = '') {
339  $this->_category = $pValue;
340  return $this;
341  }
342 
348  public function getCompany() {
349  return $this->_company;
350  }
351 
358  public function setCompany($pValue = '') {
359  $this->_company = $pValue;
360  return $this;
361  }
362 
368  public function getManager() {
369  return $this->_manager;
370  }
371 
378  public function setManager($pValue = '') {
379  $this->_manager = $pValue;
380  return $this;
381  }
382 
388  public function getCustomProperties() {
389  return array_keys($this->_customProperties);
390  }
391 
398  public function isCustomPropertySet($propertyName) {
399  return isset($this->_customProperties[$propertyName]);
400  }
401 
408  public function getCustomPropertyValue($propertyName) {
409  if (isset($this->_customProperties[$propertyName])) {
410  return $this->_customProperties[$propertyName]['value'];
411  }
412 
413  }
414 
421  public function getCustomPropertyType($propertyName) {
422  if (isset($this->_customProperties[$propertyName])) {
423  return $this->_customProperties[$propertyName]['type'];
424  }
425 
426  }
427 
441  public function setCustomProperty($propertyName,$propertyValue='',$propertyType=NULL) {
442  if ((is_null($propertyType)) || (!in_array($propertyType,array(self::PROPERTY_TYPE_INTEGER,
443  self::PROPERTY_TYPE_FLOAT,
444  self::PROPERTY_TYPE_STRING,
445  self::PROPERTY_TYPE_DATE,
446  self::PROPERTY_TYPE_BOOLEAN)))) {
447  if (is_null($propertyValue)) {
448  $propertyType = self::PROPERTY_TYPE_STRING;
449  } elseif (is_float($propertyValue)) {
450  $propertyType = self::PROPERTY_TYPE_FLOAT;
451  } elseif(is_int($propertyValue)) {
452  $propertyType = self::PROPERTY_TYPE_INTEGER;
453  } elseif (is_bool($propertyValue)) {
454  $propertyType = self::PROPERTY_TYPE_BOOLEAN;
455  } else {
456  $propertyType = self::PROPERTY_TYPE_STRING;
457  }
458  }
459 
460  $this->_customProperties[$propertyName] = array('value' => $propertyValue, 'type' => $propertyType);
461  return $this;
462  }
463 
467  public function __clone() {
468  $vars = get_object_vars($this);
469  foreach ($vars as $key => $value) {
470  if (is_object($value)) {
471  $this->$key = clone $value;
472  } else {
473  $this->$key = $value;
474  }
475  }
476  }
477 
478  public static function convertProperty($propertyValue,$propertyType) {
479  switch ($propertyType) {
480  case 'empty' : // Empty
481  return '';
482  break;
483  case 'null' : // Null
484  return NULL;
485  break;
486  case 'i1' : // 1-Byte Signed Integer
487  case 'i2' : // 2-Byte Signed Integer
488  case 'i4' : // 4-Byte Signed Integer
489  case 'i8' : // 8-Byte Signed Integer
490  case 'int' : // Integer
491  return (int) $propertyValue;
492  break;
493  case 'ui1' : // 1-Byte Unsigned Integer
494  case 'ui2' : // 2-Byte Unsigned Integer
495  case 'ui4' : // 4-Byte Unsigned Integer
496  case 'ui8' : // 8-Byte Unsigned Integer
497  case 'uint' : // Unsigned Integer
498  return abs((int) $propertyValue);
499  break;
500  case 'r4' : // 4-Byte Real Number
501  case 'r8' : // 8-Byte Real Number
502  case 'decimal' : // Decimal
503  return (float) $propertyValue;
504  break;
505  case 'lpstr' : // LPSTR
506  case 'lpwstr' : // LPWSTR
507  case 'bstr' : // Basic String
508  return $propertyValue;
509  break;
510  case 'date' : // Date and Time
511  case 'filetime' : // File Time
512  return strtotime($propertyValue);
513  break;
514  case 'bool' : // Boolean
515  return ($propertyValue == 'true') ? True : False;
516  break;
517  case 'cy' : // Currency
518  case 'error' : // Error Status Code
519  case 'vector' : // Vector
520  case 'array' : // Array
521  case 'blob' : // Binary Blob
522  case 'oblob' : // Binary Blob Object
523  case 'stream' : // Binary Stream
524  case 'ostream' : // Binary Stream Object
525  case 'storage' : // Binary Storage
526  case 'ostorage' : // Binary Storage Object
527  case 'vstream' : // Binary Versioned Stream
528  case 'clsid' : // Class ID
529  case 'cf' : // Clipboard Data
530  return $propertyValue;
531  break;
532  }
533  return $propertyValue;
534  }
535 
536  public static function convertPropertyType($propertyType) {
537  switch ($propertyType) {
538  case 'i1' : // 1-Byte Signed Integer
539  case 'i2' : // 2-Byte Signed Integer
540  case 'i4' : // 4-Byte Signed Integer
541  case 'i8' : // 8-Byte Signed Integer
542  case 'int' : // Integer
543  case 'ui1' : // 1-Byte Unsigned Integer
544  case 'ui2' : // 2-Byte Unsigned Integer
545  case 'ui4' : // 4-Byte Unsigned Integer
546  case 'ui8' : // 8-Byte Unsigned Integer
547  case 'uint' : // Unsigned Integer
549  break;
550  case 'r4' : // 4-Byte Real Number
551  case 'r8' : // 8-Byte Real Number
552  case 'decimal' : // Decimal
554  break;
555  case 'empty' : // Empty
556  case 'null' : // Null
557  case 'lpstr' : // LPSTR
558  case 'lpwstr' : // LPWSTR
559  case 'bstr' : // Basic String
561  break;
562  case 'date' : // Date and Time
563  case 'filetime' : // File Time
565  break;
566  case 'bool' : // Boolean
568  break;
569  case 'cy' : // Currency
570  case 'error' : // Error Status Code
571  case 'vector' : // Vector
572  case 'array' : // Array
573  case 'blob' : // Binary Blob
574  case 'oblob' : // Binary Blob Object
575  case 'stream' : // Binary Stream
576  case 'ostream' : // Binary Stream Object
577  case 'storage' : // Binary Storage
578  case 'ostorage' : // Binary Storage Object
579  case 'vstream' : // Binary Versioned Stream
580  case 'clsid' : // Class ID
581  case 'cf' : // Clipboard Data
583  break;
584  }
586  }
587 
588 }