| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- <?php
 
- /**
 
-  * Wrap an OpenDocument spreadsheet cell
 
-  *
 
-  * Requires PHP 5.3
 
-  *
 
-  * @license CeCILL 2.0
 
-  * @copyright 2005-2012 Ouest Systemes Informatiques
 
-  */
 
- namespace OSInet\Open_Document\Calc;
 
- use OSInet\Open_Document\Calc\Reader;
 
- /**
 
-  * OpenDocument Spreadsheet cell
 
-  */
 
- class Cell {
 
-   /**
 
-    * Values of the 'office:value-type' attribute
 
-    */
 
-   const TYPE_STRING = 'string';
 
-   const TYPE_FLOAT  = 'float';
 
-   const TYPE_EMPTY  = 'empty'; // used if attribute is missing
 
-   public $dataType;
 
-   public $dataValue;
 
-   public $displayValue;
 
-   /**
 
-    * @param \DOMNode $cellNode
 
-    */
 
-   function __construct(\DOMNode $cellNode) {
 
-     if ($cellNode instanceof \DOMElement) {
 
-       $this->dataType  = $cellNode->getAttributeNS(Reader::NS_OFFICE, 'value-type');
 
-       if ($cellNode->childNodes->length == 0) {
 
-         $this->dataType  = self::TYPE_EMPTY;
 
-         $this->dataValue = NULL;
 
-         $this->displayValue = '';
 
-       }
 
-       else {
 
-         $p = $cellNode->childNodes->item(0);
 
-         $this->displayValue = $p->textContent;
 
-         unset($p);
 
-         /**
 
-          * Note: cells with office:value-type==string don't have a office:value
 
-          */
 
-         if ($this->dataType == self::TYPE_STRING) {
 
-           //$this->dataValue = $this->displayValue;
 
-         }
 
-         else {
 
-           $this->dataValue = $cellNode->getAttributeNS(Reader::NS_OFFICE, 'value');
 
-         }
 
-       }
 
-     }
 
-     /* echo "children: " . $cellNode->childNodes->length
 
-      . ", type = "    . $this->dataType
 
-      . ", value = "   . substr($this->dataValue, 0, 20)
 
-      . ", display = <" . substr($this->displayValue, 0, 20)
 
-      . ">" . PHP_EOL; */
 
-   }
 
-   /**
 
-    * Convert a PHP value to a wrapped OpenDocument cell value
 
-    *
 
-    * @param mixed $x
 
-    */
 
-   function set($x = NULL) {
 
-     $type = gettype($x);
 
-     switch ($type) {
 
-       case 'NULL':
 
-         $this->dataType = self::TYPE_EMPTY;
 
-         $this->dataValue = NULL;
 
-         $this->displayValue = NULL;
 
-         break;
 
-       case 'string':
 
-         $this->dataType = self::TYPE_STRING;
 
-         $this->dataValue = NULL;
 
-         $this->displayValue = $x;
 
-         break;
 
-       case 'double':
 
-         $this->dataType = self::TYPE_FLOAT;
 
-         $this->dataValue = $x;
 
-         $this->displayValue = number_format($x);
 
-         break;
 
-       default:
 
-         $this->set();
 
-         throw new \Exception('Cell::set unsupported value type ', $type);
 
-         break;
 
-       }
 
-     }
 
-   /**
 
-    * implement magic method __toString
 
-    *
 
-    * @return string
 
-    */
 
-   function __toString() {
 
-     return (string) $this->displayValue;
 
-   }
 
- }
 
 
  |