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