1<?php
2
3namespace Mpdf\Tag;
4
5use Mpdf\Css\Border;
6
7class Tr extends Tag
8{
9
10	public function open($attr, &$ahtml, &$ihtml)
11	{
12
13		$this->mpdf->lastoptionaltag = 'TR'; // Save current HTML specified optional endtag
14		$this->cssManager->tbCSSlvl++;
15		$this->mpdf->row++;
16		$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr'] ++;
17		$this->mpdf->col = -1;
18		$properties = $this->cssManager->MergeCSS('TABLE', 'TR', $attr);
19
20		if (!$this->mpdf->simpleTables && (!isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['borders_separate'])
21				|| !$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['borders_separate'])) {
22			if (!empty($properties['BORDER-LEFT'])) {
23				$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-left'][$this->mpdf->row] = $properties['BORDER-LEFT'];
24			}
25			if (!empty($properties['BORDER-RIGHT'])) {
26				$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-right'][$this->mpdf->row] = $properties['BORDER-RIGHT'];
27			}
28			if (!empty($properties['BORDER-TOP'])) {
29				$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-top'][$this->mpdf->row] = $properties['BORDER-TOP'];
30			}
31			if (!empty($properties['BORDER-BOTTOM'])) {
32				$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-bottom'][$this->mpdf->row] = $properties['BORDER-BOTTOM'];
33			}
34		}
35
36		if (isset($properties['BACKGROUND-COLOR'])) {
37			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] : [];
38			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$this->mpdf->row] = $properties['BACKGROUND-COLOR'];
39		} elseif (isset($attr['BGCOLOR'])) {
40			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] : [];
41			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$this->mpdf->row] = $attr['BGCOLOR'];
42		}
43
44		/* -- BACKGROUNDS -- */
45		if (isset($properties['BACKGROUND-GRADIENT']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) {
46			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$this->mpdf->row] = $properties['BACKGROUND-GRADIENT'];
47		}
48
49		// FIXME: undefined variable $currblk
50		if (!empty($properties['BACKGROUND-IMAGE']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) {
51			$ret = $this->mpdf->SetBackground($properties, $currblk['inner_width']);
52			if ($ret) {
53				$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$this->mpdf->row] = $ret;
54			}
55		}
56		/* -- END BACKGROUNDS -- */
57
58		if (isset($properties['TEXT-ROTATE'])) {
59			$this->mpdf->trow_text_rotate = $properties['TEXT-ROTATE'];
60		}
61		if (isset($attr['TEXT-ROTATE'])) {
62			$this->mpdf->trow_text_rotate = $attr['TEXT-ROTATE'];
63		}
64
65		if ($this->mpdf->tablethead) {
66			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead'][$this->mpdf->row] = true;
67		}
68		if ($this->mpdf->tabletfoot) {
69			$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'][$this->mpdf->row] = true;
70		}
71	}
72
73	public function close(&$ahtml, &$ihtml)
74	{
75		if ($this->mpdf->tableLevel) {
76			// If Border set on TR - Update right border
77			if (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-left'][$this->mpdf->row])) {
78				$c = & $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col];
79				if ($c) {
80					if ($this->mpdf->packTableData) {
81						$cell = $this->mpdf->_unpackCellBorder($c['borderbin']);
82					} else {
83						$cell = $c;
84					}
85					$cell['border_details']['R'] = $this->mpdf->border_details(
86						$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-right'][$this->mpdf->row]
87					);
88					$this->mpdf->setBorder($cell['border'], Border::RIGHT, $cell['border_details']['R']['s']);
89					if ($this->mpdf->packTableData) {
90						$c['borderbin'] = $this->mpdf->_packCellBorder($cell);
91						unset($c['border'], $c['border_details']);
92					} else {
93						$c = $cell;
94					}
95				}
96			}
97			$this->mpdf->lastoptionaltag = '';
98			unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]);
99			$this->cssManager->tbCSSlvl--;
100			$this->mpdf->trow_text_rotate = '';
101			$this->mpdf->tabletheadjustfinished = false;
102		}
103	}
104}
105