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