<?php
/**
 * Wrap an OpenDocument spreadsheet row
 *
 * Requires PHP 5.2
 *
 * @version $Id: Calc_Row.php,v 1.4 2007-09-09 19:49:24 marand Exp $
 * @license CeCILL 2.0
 * @copyright 2005-2006 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[$iCell++] = 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 ((!($row instanceof 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);