1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22class CRow extends CTag { 23 24 protected $heading_column; 25 26 /** 27 * @param CTag|array|null $item 28 * @param int|null $heading_column Column index for heading column. Starts from 0. 'null' if no heading column. 29 */ 30 public function __construct($item = null, $heading_column = null) { 31 parent::__construct('tr', true); 32 $this->heading_column = $heading_column; 33 $this->addItem($item); 34 } 35 36 /** 37 * Add row content. 38 * 39 * @param CTag|array $item Column tag, column data or array with them. 40 * 41 * @return CRow 42 */ 43 public function addItem($item) { 44 if ($item instanceof CCol) { 45 parent::addItem($item); 46 } 47 elseif (is_array($item)) { 48 foreach ($item as $el) { 49 if ($el instanceof CCol) { 50 parent::addItem($el); 51 } 52 elseif ($el !== null) { 53 parent::addItem($this->createCell($el)); 54 } 55 } 56 } 57 elseif ($item !== null) { 58 parent::addItem($this->createCell($item)); 59 } 60 61 return $this; 62 } 63 64 /** 65 * Create cell (td or th tag) with given content. 66 * 67 * @param CTag|array $el Cell content. 68 * 69 * @return CCol 70 */ 71 protected function createCell($el) { 72 return ($this->heading_column !== null && $this->itemsCount() == $this->heading_column) 73 ? (new CColHeader($el)) 74 : (new CCol($el)); 75 } 76} 77