<?php
/**
 * Wrap an OpenDocument spreadsheet row
 *
 * Requires PHP 5.3
 *
 * @license CeCILL 2.0
 * @copyright 2005-2012 Ouest Systemes Informatiques
 */

namespace OSInet\Open_Document\Calc;

class 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(Reader::NS_TABLE, 'number-columns-repeated');
      }
      if (empty($count)) {
        $count = 1;
      }
      for ($j = 0 ; $j < $count  ; $j++) {
        $cells[$iCell++] = new Cell($cellElement);
      }
    }

    return $cells;
  }

  /**
   * Construct a 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('Row::__construct() needs a DOMElement parameter for a table-row element ');
    }
    $this->row = $row;
  }
}