PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.6
Independent Analytics – WordPress Analytics Plugin v2.14.6
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / league / csv / src / HTMLConverter.php
independent-analytics / vendor / league / csv / src Last commit date
Polyfill 10 months ago AbstractCsv.php 10 months ago ByteSequence.php 10 months ago CannotInsertRecord.php 10 months ago CharsetConverter.php 10 months ago ColumnConsistency.php 10 months ago EncloseField.php 10 months ago EscapeFormula.php 10 months ago Exception.php 10 months ago HTMLConverter.php 10 months ago Info.php 10 months ago InvalidArgument.php 10 months ago MapIterator.php 10 months ago RFC4180Field.php 10 months ago Reader.php 10 months ago ResultSet.php 10 months ago Statement.php 10 months ago Stream.php 10 months ago SyntaxError.php 10 months ago TabularDataReader.php 10 months ago UnableToProcessCsv.php 10 months ago UnavailableFeature.php 10 months ago UnavailableStream.php 10 months ago Writer.php 10 months ago XMLConverter.php 10 months ago functions.php 10 months ago functions_include.php 10 months ago
HTMLConverter.php
138 lines
1 <?php
2
3 /**
4 * League.Csv (https://csv.thephpleague.com)
5 *
6 * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 declare (strict_types=1);
12 namespace IAWPSCOPED\League\Csv;
13
14 use DOMDocument;
15 use DOMElement;
16 use DOMException;
17 use function preg_match;
18 /**
19 * Converts tabular data into an HTML Table string.
20 * @internal
21 */
22 class HTMLConverter
23 {
24 /**
25 * table class attribute value.
26 *
27 * @var string
28 */
29 protected $class_name = 'table-csv-data';
30 /**
31 * table id attribute value.
32 *
33 * @var string
34 */
35 protected $id_value = '';
36 /** @var XMLConverter */
37 protected $xml_converter;
38 public static function create() : self
39 {
40 return new self();
41 }
42 /**
43 * DEPRECATION WARNING! This method will be removed in the next major point release.
44 *
45 * @deprecated since version 9.7.0
46 * @see HTMLConverterTest::create()
47 */
48 public function __construct()
49 {
50 $this->xml_converter = XMLConverter::create()->rootElement('table')->recordElement('tr')->fieldElement('td');
51 }
52 /**
53 * Converts a tabular data collection into a HTML table string.
54 *
55 * @param string[] $header_record An optional array of headers outputted using the`<thead>` section
56 * @param string[] $footer_record An optional array of footers to output to the table using `<tfoot>` and `<th>` elements
57 */
58 public function convert(iterable $records, array $header_record = [], array $footer_record = []) : string
59 {
60 $doc = new DOMDocument('1.0');
61 if ([] === $header_record && [] === $footer_record) {
62 $table = $this->xml_converter->import($records, $doc);
63 $this->addHTMLAttributes($table);
64 $doc->appendChild($table);
65 /** @var string $content */
66 $content = $doc->saveHTML();
67 return $content;
68 }
69 $table = $doc->createElement('table');
70 $this->addHTMLAttributes($table);
71 $this->appendHeaderSection('thead', $header_record, $table);
72 $this->appendHeaderSection('tfoot', $footer_record, $table);
73 $table->appendChild($this->xml_converter->rootElement('tbody')->import($records, $doc));
74 $doc->appendChild($table);
75 /** @var string $content */
76 $content = $doc->saveHTML();
77 return $content;
78 }
79 /**
80 * Creates a DOMElement representing a HTML table heading section.
81 */
82 protected function appendHeaderSection(string $node_name, array $record, DOMElement $table) : void
83 {
84 if ([] === $record) {
85 return;
86 }
87 /** @var DOMDocument $ownerDocument */
88 $ownerDocument = $table->ownerDocument;
89 $node = $this->xml_converter->rootElement($node_name)->recordElement('tr')->fieldElement('th')->import([$record], $ownerDocument);
90 /** @var DOMElement $element */
91 foreach ($node->getElementsByTagName('th') as $element) {
92 $element->setAttribute('scope', 'col');
93 }
94 $table->appendChild($node);
95 }
96 /**
97 * Adds class and id attributes to an HTML tag.
98 */
99 protected function addHTMLAttributes(DOMElement $node) : void
100 {
101 $node->setAttribute('class', $this->class_name);
102 $node->setAttribute('id', $this->id_value);
103 }
104 /**
105 * HTML table class name setter.
106 *
107 * @throws DOMException if the id_value contains any type of whitespace
108 */
109 public function table(string $class_name, string $id_value = '') : self
110 {
111 if (1 === preg_match(",\\s,", $id_value)) {
112 throw new DOMException("the id attribute's value must not contain whitespace (spaces, tabs etc.)");
113 }
114 $clone = clone $this;
115 $clone->class_name = $class_name;
116 $clone->id_value = $id_value;
117 return $clone;
118 }
119 /**
120 * HTML tr record offset attribute setter.
121 */
122 public function tr(string $record_offset_attribute_name) : self
123 {
124 $clone = clone $this;
125 $clone->xml_converter = $this->xml_converter->recordElement('tr', $record_offset_attribute_name);
126 return $clone;
127 }
128 /**
129 * HTML td field name attribute setter.
130 */
131 public function td(string $fieldname_attribute_name) : self
132 {
133 $clone = clone $this;
134 $clone->xml_converter = $this->xml_converter->fieldElement('td', $fieldname_attribute_name);
135 return $clone;
136 }
137 }
138