PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.2
Independent Analytics – WordPress Analytics Plugin v2.15.2
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
AbstractCsv.php 2 weeks ago ByteSequence.php 2 weeks ago CannotInsertRecord.php 2 weeks ago CharsetConverter.php 2 weeks ago ColumnConsistency.php 2 weeks ago EncloseField.php 2 weeks ago EscapeFormula.php 2 weeks ago Exception.php 9 months ago HTMLConverter.php 2 weeks ago Info.php 2 weeks ago InvalidArgument.php 9 months ago MapIterator.php 2 weeks ago RFC4180Field.php 2 weeks ago Reader.php 2 weeks ago ResultSet.php 2 weeks ago Statement.php 2 weeks ago Stream.php 2 weeks ago SyntaxError.php 2 weeks ago TabularDataReader.php 2 weeks ago UnableToProcessCsv.php 9 months ago UnavailableFeature.php 9 months ago UnavailableStream.php 9 months ago Writer.php 2 weeks ago XMLConverter.php 2 weeks ago functions.php 9 months ago functions_include.php 9 months ago
HTMLConverter.php
129 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 /** table class attribute value. */
25 protected string $class_name = 'table-csv-data';
26 /** table id attribute value. */
27 protected string $id_value = '';
28 protected XMLConverter $xml_converter;
29 public static function create() : self
30 {
31 return new self();
32 }
33 /**
34 * DEPRECATION WARNING! This method will be removed in the next major point release.
35 *
36 * @deprecated since version 9.7.0
37 * @see HTMLConverterTest::create()
38 */
39 public function __construct()
40 {
41 $this->xml_converter = XMLConverter::create()->rootElement('table')->recordElement('tr')->fieldElement('td');
42 }
43 /**
44 * Converts a tabular data collection into a HTML table string.
45 *
46 * @param string[] $header_record An optional array of headers outputted using the`<thead>` section
47 * @param string[] $footer_record An optional array of footers to output to the table using `<tfoot>` and `<th>` elements
48 */
49 public function convert(iterable $records, array $header_record = [], array $footer_record = []) : string
50 {
51 $doc = new DOMDocument('1.0');
52 if ([] === $header_record && [] === $footer_record) {
53 $table = $this->xml_converter->import($records, $doc);
54 $this->addHTMLAttributes($table);
55 $doc->appendChild($table);
56 /** @var string $content */
57 $content = $doc->saveHTML();
58 return $content;
59 }
60 $table = $doc->createElement('table');
61 $this->addHTMLAttributes($table);
62 $this->appendHeaderSection('thead', $header_record, $table);
63 $this->appendHeaderSection('tfoot', $footer_record, $table);
64 $table->appendChild($this->xml_converter->rootElement('tbody')->import($records, $doc));
65 $doc->appendChild($table);
66 /** @var string $content */
67 $content = $doc->saveHTML();
68 return $content;
69 }
70 /**
71 * Creates a DOMElement representing a HTML table heading section.
72 */
73 protected function appendHeaderSection(string $node_name, array $record, DOMElement $table) : void
74 {
75 if ([] === $record) {
76 return;
77 }
78 /** @var DOMDocument $ownerDocument */
79 $ownerDocument = $table->ownerDocument;
80 $node = $this->xml_converter->rootElement($node_name)->recordElement('tr')->fieldElement('th')->import([$record], $ownerDocument);
81 /** @var DOMElement $element */
82 foreach ($node->getElementsByTagName('th') as $element) {
83 $element->setAttribute('scope', 'col');
84 }
85 $table->appendChild($node);
86 }
87 /**
88 * Adds class and id attributes to an HTML tag.
89 */
90 protected function addHTMLAttributes(DOMElement $node) : void
91 {
92 $node->setAttribute('class', $this->class_name);
93 $node->setAttribute('id', $this->id_value);
94 }
95 /**
96 * HTML table class name setter.
97 *
98 * @throws DOMException if the id_value contains any type of whitespace
99 */
100 public function table(string $class_name, string $id_value = '') : self
101 {
102 if (1 === preg_match(",\\s,", $id_value)) {
103 throw new DOMException("the id attribute's value must not contain whitespace (spaces, tabs etc.)");
104 }
105 $clone = clone $this;
106 $clone->class_name = $class_name;
107 $clone->id_value = $id_value;
108 return $clone;
109 }
110 /**
111 * HTML tr record offset attribute setter.
112 */
113 public function tr(string $record_offset_attribute_name) : self
114 {
115 $clone = clone $this;
116 $clone->xml_converter = $this->xml_converter->recordElement('tr', $record_offset_attribute_name);
117 return $clone;
118 }
119 /**
120 * HTML td field name attribute setter.
121 */
122 public function td(string $fieldname_attribute_name) : self
123 {
124 $clone = clone $this;
125 $clone->xml_converter = $this->xml_converter->fieldElement('td', $fieldname_attribute_name);
126 return $clone;
127 }
128 }
129