/**
  * @param $header_object         HTMLTableHeader object
  * @param $allow_super_header    (false by default
  **/
 function appendHeader(HTMLTableHeader $header_object, $allow_super_header = false)
 {
     if (!$header_object instanceof HTMLTableHeader) {
         throw new Exception('Implementation error: appendHeader requires HTMLTableHeader as parameter');
     }
     $header_name = '';
     $subHeader_name = '';
     $header_object->getHeaderAndSubHeaderName($header_name, $subHeader_name);
     if ($header_object->isSuperHeader() && !$this->super && !$allow_super_header) {
         throw new Exception(sprintf('Implementation error: invalid super header name "%s"', $header_name));
     }
     if (!$header_object->isSuperHeader() && $this->super) {
         throw new Exception(sprintf('Implementation error: invalid super header name "%s"', $header_name));
     }
     if (!isset($this->headers[$header_name])) {
         $this->headers[$header_name] = array();
         $this->headers_order[] = $header_name;
         $this->headers_sub_order[$header_name] = array();
     }
     if (!isset($this->headers[$header_name][$subHeader_name])) {
         $this->headers_sub_order[$header_name][] = $subHeader_name;
     }
     $this->headers[$header_name][$subHeader_name] = $header_object;
     return $header_object;
 }
 /**
  * @param $header    HTMLTableHeader object
  **/
 function haveHeader(HTMLTableHeader $header)
 {
     //TODO $header_name AND $subHeader_name  not initialized
     $header->getHeaderAndSubHeaderName($header_name, $subheader_name);
     try {
         $subheaders = $this->getHeaders($header_name);
     } catch (HTMLTableUnknownHeaders $e) {
         try {
             $subheaders = $this->table->getHeaders($header_name);
         } catch (HTMLTableUnknownHeaders $e) {
             return false;
         }
     }
     return isset($subheaders[$subheader_name]);
 }
 /**
  * @param $header    HTMLTableHeader object
  **/
 function haveHeader(HTMLTableHeader $header)
 {
     $header_name = '';
     $subHeader_name = '';
     $header->getHeaderAndSubHeaderName($header_name, $subheader_name);
     try {
         $subheaders = $this->getHeaders($header_name);
     } catch (HTMLTableUnknownHeaders $e) {
         try {
             $subheaders = $this->table->getHeaders($header_name);
         } catch (HTMLTableUnknownHeaders $e) {
             return false;
         }
     }
     return isset($subheaders[$subheader_name]);
 }
 /**
  * @param $table              HTMLTableMain object: table owning the current header
  * @param $name      string   the name of the header
  * @param $content            see inc/HTMLTableEntity#__construct()
  * @param $father             HTMLTableSuperHeader objet (default NULL)
  **/
 function __construct(HTMLTableMain $table, $name, $content, HTMLTableSuperHeader $father = NULL)
 {
     $this->table = $table;
     parent::__construct($name, $content, $father);
 }
 /**
  * @param $son          HTMLTableCell object
  * @param $sons_header  HTMLTableHeader object
  **/
 function addSon(HTMLTableCell $son, HTMLTableHeader $sons_header)
 {
     if (!isset($this->sons[$sons_header->getName()])) {
         $this->sons[$sons_header->getName()] = array();
     }
     $this->sons[$sons_header->getName()][] = $son;
 }
 function getHeaderAndSubHeaderName(&$header_name, &$subheader_name)
 {
     $header_name = $this->header->getName();
     $subheader_name = parent::getName();
 }