<?php
/**
 * Wrap an OpenDocument spreadsheet row
 *
 * Requires PHP 5.0.3
 *
 * @version $Id: Calc_Row.php,v 1.1 2005-02-27 10:58:44 marand Exp $
 * @license CeCILL 2.0
 * @copyright 2005 Ouest Systemes Informatiques
 */

$erCalc_Row = error_reporting(E_ALL | E_STRICT);

class Calc_Row
  {
  /**
   * @var DOMElement $row
   */
  protected $row;
  
  /**
   * Analyze a spreadsheet row and return the cells as an array of Calc_Cell
   * 
   * @return array
   */
  function getCells ()
    {
    $cellNodeList = $this->row->childNodes;
    $cells = array();

    $iCell = 0;
    for ($icol = 0 ; $icol < $cellNodeList->length ; $icol++)
      {
      $cellElement = $cellNodeList->item($icol);
      $count = NULL;
      if (is_object($cellElement))
        {
        $count = $cellElement->getAttributeNS(Calc_Reader::NS_TABLE, 'number-columns-repeated');
        }
      if (empty($count))
        { 
        $count = 1;
        }
      for ($j = 0 ; $j < $count  ; $j++)
        {
        $cells[$iprop++] = new Calc_Cell($cellElement);  
        }
      }
    
    return $cells;
    }
    
  /**
   * Construct a Calc_Row from the DOMElement representing it.
   * 
   * This DOMElement must bear a table:table-row tag
   * 
   * @param DOMNodeList $row
   * @return void
   */
  function __construct(DOMElement $row)
    {
    if ((!is_a($row, 'DOMElement')) || ($row->tagName != 'table:table-row'))
      {
      die('Calc_Row::__construct() needs a DOMElement parameter for a table-row element ');
      }
    $this->row = $row;
    }
  }
  
error_reporting($erCalc_Row);
unset($erCalc_Row);