summaryrefslogtreecommitdiffstats
path: root/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php632
1 files changed, 632 insertions, 0 deletions
diff --git a/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php b/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php
new file mode 100644
index 0000000..db18268
--- /dev/null
+++ b/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Document/Properties.php
@@ -0,0 +1,632 @@
+<?php
+
+namespace PhpOffice\PhpSpreadsheet\Document;
+
+class Properties
+{
+ /** constants */
+ const PROPERTY_TYPE_BOOLEAN = 'b';
+ const PROPERTY_TYPE_INTEGER = 'i';
+ const PROPERTY_TYPE_FLOAT = 'f';
+ const PROPERTY_TYPE_DATE = 'd';
+ const PROPERTY_TYPE_STRING = 's';
+ const PROPERTY_TYPE_UNKNOWN = 'u';
+
+ /**
+ * Creator.
+ *
+ * @var string
+ */
+ private $creator = 'Unknown Creator';
+
+ /**
+ * LastModifiedBy.
+ *
+ * @var string
+ */
+ private $lastModifiedBy;
+
+ /**
+ * Created.
+ *
+ * @var int
+ */
+ private $created;
+
+ /**
+ * Modified.
+ *
+ * @var int
+ */
+ private $modified;
+
+ /**
+ * Title.
+ *
+ * @var string
+ */
+ private $title = 'Untitled Spreadsheet';
+
+ /**
+ * Description.
+ *
+ * @var string
+ */
+ private $description = '';
+
+ /**
+ * Subject.
+ *
+ * @var string
+ */
+ private $subject = '';
+
+ /**
+ * Keywords.
+ *
+ * @var string
+ */
+ private $keywords = '';
+
+ /**
+ * Category.
+ *
+ * @var string
+ */
+ private $category = '';
+
+ /**
+ * Manager.
+ *
+ * @var string
+ */
+ private $manager = '';
+
+ /**
+ * Company.
+ *
+ * @var string
+ */
+ private $company = 'Microsoft Corporation';
+
+ /**
+ * Custom Properties.
+ *
+ * @var string
+ */
+ private $customProperties = [];
+
+ /**
+ * Create a new Document Properties instance.
+ */
+ public function __construct()
+ {
+ // Initialise values
+ $this->lastModifiedBy = $this->creator;
+ $this->created = time();
+ $this->modified = time();
+ }
+
+ /**
+ * Get Creator.
+ *
+ * @return string
+ */
+ public function getCreator()
+ {
+ return $this->creator;
+ }
+
+ /**
+ * Set Creator.
+ *
+ * @param string $creator
+ *
+ * @return $this
+ */
+ public function setCreator($creator)
+ {
+ $this->creator = $creator;
+
+ return $this;
+ }
+
+ /**
+ * Get Last Modified By.
+ *
+ * @return string
+ */
+ public function getLastModifiedBy()
+ {
+ return $this->lastModifiedBy;
+ }
+
+ /**
+ * Set Last Modified By.
+ *
+ * @param string $pValue
+ *
+ * @return $this
+ */
+ public function setLastModifiedBy($pValue)
+ {
+ $this->lastModifiedBy = $pValue;
+
+ return $this;
+ }
+
+ /**
+ * Get Created.
+ *
+ * @return int
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+
+ /**
+ * Set Created.
+ *
+ * @param int|string $time
+ *
+ * @return $this
+ */
+ public function setCreated($time)
+ {
+ if ($time === null) {
+ $time = time();
+ } elseif (is_string($time)) {
+ if (is_numeric($time)) {
+ $time = (int) $time;
+ } else {
+ $time = strtotime($time);
+ }
+ }
+
+ $this->created = $time;
+
+ return $this;
+ }
+
+ /**
+ * Get Modified.
+ *
+ * @return int
+ */
+ public function getModified()
+ {
+ return $this->modified;
+ }
+
+ /**
+ * Set Modified.
+ *
+ * @param int|string $time
+ *
+ * @return $this
+ */
+ public function setModified($time)
+ {
+ if ($time === null) {
+ $time = time();
+ } elseif (is_string($time)) {
+ if (is_numeric($time)) {
+ $time = (int) $time;
+ } else {
+ $time = strtotime($time);
+ }
+ }
+
+ $this->modified = $time;
+
+ return $this;
+ }
+
+ /**
+ * Get Title.
+ *
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+
+ /**
+ * Set Title.
+ *
+ * @param string $title
+ *
+ * @return $this
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+
+ return $this;
+ }
+
+ /**
+ * Get Description.
+ *
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+
+ /**
+ * Set Description.
+ *
+ * @param string $description
+ *
+ * @return $this
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+
+ return $this;
+ }
+
+ /**
+ * Get Subject.
+ *
+ * @return string
+ */
+ public function getSubject()
+ {
+ return $this->subject;
+ }
+
+ /**
+ * Set Subject.
+ *
+ * @param string $subject
+ *
+ * @return $this
+ */
+ public function setSubject($subject)
+ {
+ $this->subject = $subject;
+
+ return $this;
+ }
+
+ /**
+ * Get Keywords.
+ *
+ * @return string
+ */
+ public function getKeywords()
+ {
+ return $this->keywords;
+ }
+
+ /**
+ * Set Keywords.
+ *
+ * @param string $keywords
+ *
+ * @return $this
+ */
+ public function setKeywords($keywords)
+ {
+ $this->keywords = $keywords;
+
+ return $this;
+ }
+
+ /**
+ * Get Category.
+ *
+ * @return string
+ */
+ public function getCategory()
+ {
+ return $this->category;
+ }
+
+ /**
+ * Set Category.
+ *
+ * @param string $category
+ *
+ * @return $this
+ */
+ public function setCategory($category)
+ {
+ $this->category = $category;
+
+ return $this;
+ }
+
+ /**
+ * Get Company.
+ *
+ * @return string
+ */
+ public function getCompany()
+ {
+ return $this->company;
+ }
+
+ /**
+ * Set Company.
+ *
+ * @param string $company
+ *
+ * @return $this
+ */
+ public function setCompany($company)
+ {
+ $this->company = $company;
+
+ return $this;
+ }
+
+ /**
+ * Get Manager.
+ *
+ * @return string
+ */
+ public function getManager()
+ {
+ return $this->manager;
+ }
+
+ /**
+ * Set Manager.
+ *
+ * @param string $manager
+ *
+ * @return $this
+ */
+ public function setManager($manager)
+ {
+ $this->manager = $manager;
+
+ return $this;
+ }
+
+ /**
+ * Get a List of Custom Property Names.
+ *
+ * @return array of string
+ */
+ public function getCustomProperties()
+ {
+ return array_keys($this->customProperties);
+ }
+
+ /**
+ * Check if a Custom Property is defined.
+ *
+ * @param string $propertyName
+ *
+ * @return bool
+ */
+ public function isCustomPropertySet($propertyName)
+ {
+ return isset($this->customProperties[$propertyName]);
+ }
+
+ /**
+ * Get a Custom Property Value.
+ *
+ * @param string $propertyName
+ *
+ * @return mixed
+ */
+ public function getCustomPropertyValue($propertyName)
+ {
+ if (isset($this->customProperties[$propertyName])) {
+ return $this->customProperties[$propertyName]['value'];
+ }
+ }
+
+ /**
+ * Get a Custom Property Type.
+ *
+ * @param string $propertyName
+ *
+ * @return string
+ */
+ public function getCustomPropertyType($propertyName)
+ {
+ if (isset($this->customProperties[$propertyName])) {
+ return $this->customProperties[$propertyName]['type'];
+ }
+ }
+
+ /**
+ * Set a Custom Property.
+ *
+ * @param string $propertyName
+ * @param mixed $propertyValue
+ * @param string $propertyType
+ * 'i' : Integer
+ * 'f' : Floating Point
+ * 's' : String
+ * 'd' : Date/Time
+ * 'b' : Boolean
+ *
+ * @return $this
+ */
+ public function setCustomProperty($propertyName, $propertyValue = '', $propertyType = null)
+ {
+ if (
+ ($propertyType === null) || (!in_array($propertyType, [self::PROPERTY_TYPE_INTEGER,
+ self::PROPERTY_TYPE_FLOAT,
+ self::PROPERTY_TYPE_STRING,
+ self::PROPERTY_TYPE_DATE,
+ self::PROPERTY_TYPE_BOOLEAN,
+ ]))
+ ) {
+ if ($propertyValue === null) {
+ $propertyType = self::PROPERTY_TYPE_STRING;
+ } elseif (is_float($propertyValue)) {
+ $propertyType = self::PROPERTY_TYPE_FLOAT;
+ } elseif (is_int($propertyValue)) {
+ $propertyType = self::PROPERTY_TYPE_INTEGER;
+ } elseif (is_bool($propertyValue)) {
+ $propertyType = self::PROPERTY_TYPE_BOOLEAN;
+ } else {
+ $propertyType = self::PROPERTY_TYPE_STRING;
+ }
+ }
+
+ $this->customProperties[$propertyName] = [
+ 'value' => $propertyValue,
+ 'type' => $propertyType,
+ ];
+
+ return $this;
+ }
+
+ /**
+ * Implement PHP __clone to create a deep clone, not just a shallow copy.
+ */
+ public function __clone()
+ {
+ $vars = get_object_vars($this);
+ foreach ($vars as $key => $value) {
+ if (is_object($value)) {
+ $this->$key = clone $value;
+ } else {
+ $this->$key = $value;
+ }
+ }
+ }
+
+ public static function convertProperty($propertyValue, $propertyType)
+ {
+ switch ($propertyType) {
+ case 'empty': // Empty
+ return '';
+
+ break;
+ case 'null': // Null
+ return null;
+
+ break;
+ case 'i1': // 1-Byte Signed Integer
+ case 'i2': // 2-Byte Signed Integer
+ case 'i4': // 4-Byte Signed Integer
+ case 'i8': // 8-Byte Signed Integer
+ case 'int': // Integer
+ return (int) $propertyValue;
+
+ break;
+ case 'ui1': // 1-Byte Unsigned Integer
+ case 'ui2': // 2-Byte Unsigned Integer
+ case 'ui4': // 4-Byte Unsigned Integer
+ case 'ui8': // 8-Byte Unsigned Integer
+ case 'uint': // Unsigned Integer
+ return abs((int) $propertyValue);
+
+ break;
+ case 'r4': // 4-Byte Real Number
+ case 'r8': // 8-Byte Real Number
+ case 'decimal': // Decimal
+ return (float) $propertyValue;
+
+ break;
+ case 'lpstr': // LPSTR
+ case 'lpwstr': // LPWSTR
+ case 'bstr': // Basic String
+ return $propertyValue;
+
+ break;
+ case 'date': // Date and Time
+ case 'filetime': // File Time
+ return strtotime($propertyValue);
+
+ break;
+ case 'bool': // Boolean
+ return $propertyValue == 'true';
+
+ break;
+ case 'cy': // Currency
+ case 'error': // Error Status Code
+ case 'vector': // Vector
+ case 'array': // Array
+ case 'blob': // Binary Blob
+ case 'oblob': // Binary Blob Object
+ case 'stream': // Binary Stream
+ case 'ostream': // Binary Stream Object
+ case 'storage': // Binary Storage
+ case 'ostorage': // Binary Storage Object
+ case 'vstream': // Binary Versioned Stream
+ case 'clsid': // Class ID
+ case 'cf': // Clipboard Data
+ return $propertyValue;
+
+ break;
+ }
+
+ return $propertyValue;
+ }
+
+ public static function convertPropertyType($propertyType)
+ {
+ switch ($propertyType) {
+ case 'i1': // 1-Byte Signed Integer
+ case 'i2': // 2-Byte Signed Integer
+ case 'i4': // 4-Byte Signed Integer
+ case 'i8': // 8-Byte Signed Integer
+ case 'int': // Integer
+ case 'ui1': // 1-Byte Unsigned Integer
+ case 'ui2': // 2-Byte Unsigned Integer
+ case 'ui4': // 4-Byte Unsigned Integer
+ case 'ui8': // 8-Byte Unsigned Integer
+ case 'uint': // Unsigned Integer
+ return self::PROPERTY_TYPE_INTEGER;
+
+ break;
+ case 'r4': // 4-Byte Real Number
+ case 'r8': // 8-Byte Real Number
+ case 'decimal': // Decimal
+ return self::PROPERTY_TYPE_FLOAT;
+
+ break;
+ case 'empty': // Empty
+ case 'null': // Null
+ case 'lpstr': // LPSTR
+ case 'lpwstr': // LPWSTR
+ case 'bstr': // Basic String
+ return self::PROPERTY_TYPE_STRING;
+
+ break;
+ case 'date': // Date and Time
+ case 'filetime': // File Time
+ return self::PROPERTY_TYPE_DATE;
+
+ break;
+ case 'bool': // Boolean
+ return self::PROPERTY_TYPE_BOOLEAN;
+
+ break;
+ case 'cy': // Currency
+ case 'error': // Error Status Code
+ case 'vector': // Vector
+ case 'array': // Array
+ case 'blob': // Binary Blob
+ case 'oblob': // Binary Blob Object
+ case 'stream': // Binary Stream
+ case 'ostream': // Binary Stream Object
+ case 'storage': // Binary Storage
+ case 'ostorage': // Binary Storage Object
+ case 'vstream': // Binary Versioned Stream
+ case 'clsid': // Class ID
+ case 'cf': // Clipboard Data
+ return self::PROPERTY_TYPE_UNKNOWN;
+
+ break;
+ }
+
+ return self::PROPERTY_TYPE_UNKNOWN;
+ }
+}