Completed
Push — master ( 1ff312...0fe670 )
by Gunnar
02:24
created
webroot/not-specified-table.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@
 block discarded – undo
41 41
 	],
42 42
 ];
43 43
 
44
-$table = $table->create([], $data, []);
44
+$table = $table->create([ ], $data, [ ]);
45 45
 
46 46
 ?>
47 47
 
Please login to merge, or discard this patch.
webroot/specified-table.php 2 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -55,34 +55,34 @@
 block discarded – undo
55 55
 
56 56
 $table = $table->create($tableSpecification, $data, [
57 57
 	'column1' => [
58
-        'title' => 'Table Header 1',
59
-    ],
58
+		'title' => 'Table Header 1',
59
+	],
60 60
 	'column2' => [
61
-    ],
62
-    'column4' => [
63
-        'title'     => 'Table Header 4',
61
+	],
62
+	'column4' => [
63
+		'title'     => 'Table Header 4',
64 64
 		'function'	=> function($link) {
65 65
 			return '<a href="'. $link . '">' . "Google" . '</a>';
66 66
 		}
67
-    ],
67
+	],
68 68
 	'column6' => [
69
-        'title'    	=> 'Table Header 6',
69
+		'title'    	=> 'Table Header 6',
70 70
 		'function' 	=> function($tableCell6) {
71
-        	return empty($tableCell6) ? 'Not present' :  'Present';
71
+			return empty($tableCell6) ? 'Not present' :  'Present';
72 72
    		}
73
-    ],
73
+	],
74 74
 	'tablefoot1' => [
75
-        'type'      => 'footer',
75
+		'type'      => 'footer',
76 76
 		'colspan'  	=> '2',
77 77
 		'value'		=> 'Footer Cell 1',
78
-    ],
78
+	],
79 79
 	'tablefoot2' => [
80
-        'type'      => 'footer',
80
+		'type'      => 'footer',
81 81
 		'colspan'  	=> 2,
82 82
 		'function'	=> function() {
83
-        	return '<a href="https://www.google.se">Link</a>';
83
+			return '<a href="https://www.google.se">Link</a>';
84 84
    		}
85
-    ],
85
+	],
86 86
 ]);
87 87
 
88 88
 ?>
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -84,13 +84,13 @@
 block discarded – undo
84 84
     'column4' => [
85 85
         'title'     => 'Table Header 4',
86 86
 		'function'	=> function($link) {
87
-			return '<a href="'. htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
87
+			return '<a href="' . htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
88 88
 		}
89 89
     ],
90 90
 	'column6' => [
91 91
         'title'    	=> 'Table Header 6',
92 92
 		'function' 	=> function($tableCell6) {
93
-        	return empty($tableCell6) ? 'Not present' :  'Present';
93
+        	return empty($tableCell6) ? 'Not present' : 'Present';
94 94
    		}
95 95
     ],
96 96
 	'tablefoot1' => [
Please login to merge, or discard this patch.
autoloader.php 2 patches
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -12,33 +12,33 @@
 block discarded – undo
12 12
  * @return void
13 13
  */
14 14
 spl_autoload_register(
15
-    function ($class) {
15
+	function ($class) {
16 16
 
17
-        // project-specific namespace prefix
18
-        //$prefix = 'Foo\\Bar\\';
19
-        $prefix = 'Guer\\';
17
+		// project-specific namespace prefix
18
+		//$prefix = 'Foo\\Bar\\';
19
+		$prefix = 'Guer\\';
20 20
 
21
-        // base directory for the namespace prefix
22
-        $base_dir = __DIR__ . '/src/';
21
+		// base directory for the namespace prefix
22
+		$base_dir = __DIR__ . '/src/';
23 23
 
24
-        // does the class use the namespace prefix?
25
-        $len = strlen($prefix);
26
-        if (strncmp($prefix, $class, $len) !== 0) {
27
-            // no, move to the next registered autoloader
28
-            return;
29
-        }
24
+		// does the class use the namespace prefix?
25
+		$len = strlen($prefix);
26
+		if (strncmp($prefix, $class, $len) !== 0) {
27
+			// no, move to the next registered autoloader
28
+			return;
29
+		}
30 30
 
31
-        // get the relative class name
32
-        $relative_class = substr($class, $len);
31
+		// get the relative class name
32
+		$relative_class = substr($class, $len);
33 33
 
34
-        // replace the namespace prefix with the base directory, replace namespace
35
-        // separators with directory separators in the relative class name, append
36
-        // with .php
37
-        $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
34
+		// replace the namespace prefix with the base directory, replace namespace
35
+		// separators with directory separators in the relative class name, append
36
+		// with .php
37
+		$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
38 38
 
39
-        // if the file exists, require it
40
-        if (file_exists($file)) {
41
-            include $file;
42
-        }
43
-    }
39
+		// if the file exists, require it
40
+		if (file_exists($file)) {
41
+			include $file;
42
+		}
43
+	}
44 44
 );
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -12,7 +12,7 @@
 block discarded – undo
12 12
  * @return void
13 13
  */
14 14
 spl_autoload_register(
15
-    function ($class) {
15
+    function($class) {
16 16
 
17 17
         // project-specific namespace prefix
18 18
         //$prefix = 'Foo\\Bar\\';
Please login to merge, or discard this patch.
src/HTMLTable/CHTMLTable.php 2 patches
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
      * @param mixed[] $data         table cell data.
35 35
      * @param mixed[] $columnSpecs  table columns cell settings.
36 36
      */
37
-    public function __construct($tableSpecs = [], $data = [], $columnSpecs = [])
37
+    public function __construct($tableSpecs = [ ], $data = [ ], $columnSpecs = [ ])
38 38
     {
39 39
         $this->create($tableSpecs, $data, $columnSpecs);
40 40
     }
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
      *
53 53
      * @return object the html table object.
54 54
      */
55
-    public function create($tableSpecs = [], $data = [], $columnSpecs = [])
55
+    public function create($tableSpecs = [ ], $data = [ ], $columnSpecs = [ ])
56 56
     {
57 57
         $this->resetTableTags();
58 58
         $this->setTableSpecifications($tableSpecs);
@@ -114,7 +114,7 @@  discard block
 block discarded – undo
114 114
      */
115 115
     private function isClassPresent($tableSpec)
116 116
     {
117
-        return isset($tableSpec['class']) ? true : false;
117
+        return isset($tableSpec[ 'class' ]) ? true : false;
118 118
     }
119 119
 
120 120
     /**
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
      * @return string[] the table specification without the CSS id tag.
128 128
      */
129 129
     private function removeId($tableSpec) {
130
-        $tableSpec['id'] = null;
130
+        $tableSpec[ 'id' ] = null;
131 131
 
132 132
         return $tableSpec;
133 133
     }
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
      */
174 174
     private function setColumnTitlesFromData($data)
175 175
     {
176
-        $firstRow = isset($data[0]) ? $data[0] : [];
176
+        $firstRow = isset($data[ 0 ]) ? $data[ 0 ] : [ ];
177 177
         foreach ($firstRow as $key => $value) {
178 178
             $this->tableHead .= "\n<th>";
179 179
             $this->tableHead .= $key;
@@ -215,8 +215,8 @@  discard block
 block discarded – undo
215 215
     private function isTableFooter($columnSpec)
216 216
     {
217 217
         $isFooter = false;
218
-        if (isset($columnSpec['type'])) {
219
-            if (strcmp($columnSpec['type'], self::FOOTER) === 0) {
218
+        if (isset($columnSpec[ 'type' ])) {
219
+            if (strcmp($columnSpec[ 'type' ], self::FOOTER) === 0) {
220 220
                 $isFooter = true;
221 221
             }
222 222
         }
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
      */
241 241
     private function getTitle($key, $columnSpec)
242 242
     {
243
-        return isset($columnSpec['title']) ? $columnSpec['title'] : $key;
243
+        return isset($columnSpec[ 'title' ]) ? $columnSpec[ 'title' ] : $key;
244 244
     }
245 245
 
246 246
     /**
@@ -341,7 +341,7 @@  discard block
 block discarded – undo
341 341
      */
342 342
     private function getColspan($columnSpec)
343 343
     {
344
-        return isset($columnSpec['colspan']) ? " colspan='{$columnSpec['colspan']}'" : null;
344
+        return isset($columnSpec[ 'colspan' ]) ? " colspan='{$columnSpec[ 'colspan' ]}'" : null;
345 345
     }
346 346
 
347 347
     /**
@@ -385,7 +385,7 @@  discard block
 block discarded – undo
385 385
      */
386 386
     private function isFunctionSpecified($columnSpec)
387 387
     {
388
-        return isset($columnSpec['function']) ? true : false;
388
+        return isset($columnSpec[ 'function' ]) ? true : false;
389 389
     }
390 390
 
391 391
     /**
@@ -418,8 +418,8 @@  discard block
 block discarded – undo
418 418
      */
419 419
     private function getValueThroughFunction($columnSpec, $dataValue)
420 420
     {
421
-        if (!empty($columnSpec['function'])) {
422
-            return call_user_func($columnSpec['function'], $dataValue);
421
+        if (!empty($columnSpec[ 'function' ])) {
422
+            return call_user_func($columnSpec[ 'function' ], $dataValue);
423 423
         } else {
424 424
             return $dataValue;
425 425
         }
@@ -467,9 +467,9 @@  discard block
 block discarded – undo
467 467
     private function getFooterData($columnSpec)
468 468
     {
469 469
         if ($this->isFunctionSpecified($columnSpec)) {
470
-            return call_user_func($columnSpec['function']);
470
+            return call_user_func($columnSpec[ 'function' ]);
471 471
         } else {
472
-            return isset($columnSpec['value']) ? $columnSpec['value'] : "";
472
+            return isset($columnSpec[ 'value' ]) ? $columnSpec[ 'value' ] : "";
473 473
         }
474 474
     }
475 475
 
@@ -482,9 +482,9 @@  discard block
 block discarded – undo
482 482
      */
483 483
     public function getHTMLTable()
484 484
     {
485
-        $id = isset($this->tableSpec['id']) ? " id='{$this->tableSpec['id']}'" : null;
486
-        $class = isset($this->tableSpec['class']) ? " class='{$this->tableSpec['class']}'" : null;
487
-        $caption = isset($this->tableSpec['caption']) ? "<caption>{$this->tableSpec['caption']}</caption>" : null;
485
+        $id = isset($this->tableSpec[ 'id' ]) ? " id='{$this->tableSpec[ 'id' ]}'" : null;
486
+        $class = isset($this->tableSpec[ 'class' ]) ? " class='{$this->tableSpec[ 'class' ]}'" : null;
487
+        $caption = isset($this->tableSpec[ 'caption' ]) ? "<caption>{$this->tableSpec[ 'caption' ]}</caption>" : null;
488 488
 
489 489
         $htmlTable = "<table{$id}{$class}>";
490 490
         $htmlTable .= $caption;
Please login to merge, or discard this patch.
Indentation   +482 added lines, -482 removed lines patch added patch discarded remove patch
@@ -16,486 +16,486 @@
 block discarded – undo
16 16
  */
17 17
 class CHTMLTable
18 18
 {
19
-    const FOOTER = 'footer';
20
-
21
-    private $tableSpec;
22
-    private $tableHead;
23
-    private $tableBody;
24
-    private $tableFoot;
25
-
26
-    /**
27
-     * Constructor
28
-     *
29
-     * Creates a table with table head, table body and if specified, a table
30
-     * footer. It is possible to specify the table and the tabel cells settings
31
-     * per column.
32
-     *
33
-     * @param string[] $tableSpecs  table settings.
34
-     * @param mixed[] $data         table cell data.
35
-     * @param mixed[] $columnSpecs  table columns cell settings.
36
-     */
37
-    public function __construct($tableSpecs = [], $data = [], $columnSpecs = [])
38
-    {
39
-        $this->create($tableSpecs, $data, $columnSpecs);
40
-    }
41
-
42
-    /**
43
-     * Creates a table with cell data.
44
-     *
45
-     * Creates a table with table head, table body with table data and if
46
-     * specified, a table footer. It is possible to specify the table and the
47
-     * tabel cells settings per column.
48
-     *
49
-     * @param string[] $tableSpecs  table settings.
50
-     * @param mixed[] $data         table cell data.
51
-     * @param mixed[] $columnSpecs  table columns cell settings.
52
-     *
53
-     * @return object the html table object.
54
-     */
55
-    public function create($tableSpecs = [], $data = [], $columnSpecs = [])
56
-    {
57
-        $this->resetTableTags();
58
-        $this->setTableSpecifications($tableSpecs);
59
-
60
-        $this->createTableHead($data, $columnSpecs);
61
-        $this->createTableBody($data, $columnSpecs);
62
-        $this->createTableFooter($columnSpecs);
63
-
64
-        return $this;
65
-    }
66
-
67
-    /**
68
-     * Helper method to reset main parts of table tags.
69
-     *
70
-     * Sets the table head, table body and table foot tag to null.
71
-     *
72
-     * @return void
73
-     */
74
-    private function resetTableTags()
75
-    {
76
-        $this->tableHead = null;
77
-        $this->tableBody = null;
78
-        $this->tableFoot = null;
79
-    }
80
-
81
-    /**
82
-     * Helper method to set the table specifications.
83
-     *
84
-     * Merges the table specifications with the default specifications.
85
-     * Default table CSS id is html-table.
86
-     *
87
-     * @param  string[] $tableSpec the table specification.
88
-     *
89
-     * @return void
90
-     */
91
-    private function setTableSpecifications($tableSpec)
92
-    {
93
-        $defaults = [
94
-            // Always have a id for the form
95
-            'id' => 'html-table',
96
-        ];
97
-
98
-        if ($this->isClassPresent($tableSpec)) {
99
-            $tableSpec = $this->removeId($tableSpec);
100
-        }
101
-
102
-        $this->tableSpec = array_merge($defaults, $tableSpec);
103
-    }
104
-
105
-    /**
106
-     * Helper method to check if a CSS class tag is present
107
-     *
108
-     * Checks if a CSS class tag is present in the table specification.
109
-     *
110
-     * @param  string[] $tableSpec the table specification.
111
-     *
112
-     * @return boolean  true if class is present in the table specification,
113
-     *                  false otherwise.
114
-     */
115
-    private function isClassPresent($tableSpec)
116
-    {
117
-        return isset($tableSpec['class']) ? true : false;
118
-    }
119
-
120
-    /**
121
-     * Helper method to reset the id tag.
122
-     *
123
-     * Sets the CSS id tag to null.
124
-     *
125
-     * @param  string[] $tableSpec the table specification.
126
-     *
127
-     * @return string[] the table specification without the CSS id tag.
128
-     */
129
-    private function removeId($tableSpec) {
130
-        $tableSpec['id'] = null;
131
-
132
-        return $tableSpec;
133
-    }
134
-
135
-    /**
136
-     * Helper method to create the table head.
137
-     *
138
-     * Creates the table head. The title of the columns are set according to
139
-     * the table tag in the column specifications. Otherwise, the title is set
140
-     * to the keys name in the table cell data array.
141
-     *
142
-     * @param  mixed[]  $data        table cell data.
143
-     * @param  mixed[]  $columnSpecs table columns cell settings.
144
-     *
145
-     * @return void
146
-     */
147
-    private function createTableHead($data, $columnSpecs)
148
-    {
149
-        $this->tableHead = "\n<thead>";
150
-        $this->tableHead .= "\n<tr>";
151
-
152
-        if (empty($columnSpecs))
153
-        {
154
-            $this->setColumnTitlesFromData($data);
155
-        } else {
156
-            $this->setColumnTitlesFromColumnSpecifications($columnSpecs);
157
-        }
158
-
159
-        $this->tableHead .= "\n</tr>";
160
-        $this->tableHead .= "\n</thead>";
161
-    }
162
-
163
-    /**
164
-     * Helper method to set the column titles from the data array.
165
-     *
166
-     * Uses the first row in the table cell data array to set the titles of
167
-     * the columns. The name of the columns are the key name for the objects in
168
-     * the array containing data for the table.
169
-     *
170
-     * @param  mixed[]  $data   table cell data.
171
-     *
172
-     * @return void
173
-     */
174
-    private function setColumnTitlesFromData($data)
175
-    {
176
-        $firstRow = isset($data[0]) ? $data[0] : [];
177
-        foreach ($firstRow as $key => $value) {
178
-            $this->tableHead .= "\n<th>";
179
-            $this->tableHead .= htmlentities($key, null, 'UTF-8');
180
-            $this->tableHead .= "</th>";
181
-        }
182
-    }
183
-
184
-    /**
185
-     * Helper method to set the column titles from column specifications.
186
-     *
187
-     * Uses column specifications to set the name of the columns in the table
188
-     * head.
189
-     *
190
-     * @param  mixed[]  $columnSpecs    table columns cell settings
191
-     *
192
-     * @return void
193
-     */
194
-    private function setColumnTitlesFromColumnSpecifications($columnSpecs)
195
-    {
196
-        foreach ($columnSpecs as $key => $columnSpec) {
197
-            if (!$this->isTableFooter($columnSpec)) {
198
-                $this->tableHead .= "\n<th>";
199
-                $this->tableHead .= $this->getTitle($key, $columnSpec);
200
-                $this->tableHead .= "</th>";
201
-            }
202
-        }
203
-    }
204
-
205
-    /**
206
-     * Helper method to check if the column cell belongs to the footer.
207
-     *
208
-     * Checks the type tag, in the column specification for one column, if the
209
-     * tag is present and set to footer.
210
-     *
211
-     * @param  mixed[]  $columnSpec cell settings for one column.
212
-     *
213
-     * @return boolean true if the cell type belongs to the footer, false otherwise.
214
-     */
215
-    private function isTableFooter($columnSpec)
216
-    {
217
-        $isFooter = false;
218
-        if (isset($columnSpec['type'])) {
219
-            if (strcmp($columnSpec['type'], self::FOOTER) === 0) {
220
-                $isFooter = true;
221
-            }
222
-        }
223
-
224
-        return $isFooter;
225
-    }
226
-
227
-    /**
228
-     * Helper method to get title from a column specification, if specified.
229
-     *
230
-     * Uses the title tag in the column specification for one column to get
231
-     * the title. If the title tag is not set, the title is the key for the
232
-     * objects int the array containing data for the table.
233
-     *
234
-     * @param  string   $key        the name of the key for the table cell data.
235
-     * @param  mixed[]  $columnSpec cell settings for one column.
236
-     *
237
-     * @return string[] the name from the title tag in the cell specification.
238
-     *                  Otherwise, the table cell data key name.
239
-     */
240
-    private function getTitle($key, $columnSpec)
241
-    {
242
-        return isset($columnSpec['title']) ? $columnSpec['title'] : $key;
243
-    }
244
-
245
-    /**
246
-     * Helper method to create the table body with table cell data.
247
-     *
248
-     * Sets the table cell data in the table body.
249
-     *
250
-     * @param  mixed[] $data        table cell data.
251
-     * @param  mixed[] $columnSpecs table columns cell settings.
252
-     *
253
-     * @return void
254
-     */
255
-    private function createTableBody($data, $columnSpecs)
256
-    {
257
-        $this->setTableData($data, $columnSpecs);
258
-        if (isset($this->tableBody)) {
259
-            $this->tableBody = "\n<tbody>" . $this->tableBody . "\n</tbody>";
260
-        }
261
-    }
262
-
263
-    /**
264
-     * Helper method to set table data in table body.
265
-     *
266
-     * Sets table data according to the column specifications, if it is
267
-     * specified. Otherwise it sets the data as it is stored in the data array.
268
-     *
269
-     * @param  mixed[] $data        table cell data.
270
-     * @param  mixed[] $columnSpecs table columns cell settings.
271
-     *
272
-     * @return void
273
-     */
274
-    private function setTableData($data, $columnSpecs)
275
-    {
276
-        if (empty($columnSpecs)) {
277
-            $this->setTableDataFromData($data);
278
-        } else {
279
-            $this->setTableDataAsSpecified($data, $columnSpecs);
280
-        }
281
-    }
282
-
283
-    /**
284
-     * Helper method to set table data from the data array.
285
-     *
286
-     * Sets table data from the data array.
287
-     *
288
-     * @param  mixed[]  $data   table cell data.
289
-     *
290
-     * @return void
291
-     */
292
-    private function setTableDataFromData($data)
293
-    {
294
-        foreach ($data as $row) {
295
-            $this->tableBody .= "\n<tr>";
296
-            foreach ($row as $value) {
297
-                $this->tableBody .= "\n<td>";
298
-                $this->tableBody .= htmlentities($value, null, 'UTF-8');
299
-                $this->tableBody .= "</td>";
300
-            }
301
-            $this->tableBody .= "\n</tr>";
302
-        }
303
-    }
304
-
305
-    /**
306
-     * Helper method to set table data according to the column specifications.
307
-     *
308
-     * Sets the table data according to the column specifications, if the cell
309
-     * does not belong to the footer. Adds a colspan tag, if it is specified
310
-     * for the cell in the column.
311
-     *
312
-     * @param  mixed[] $data         table cell data.
313
-     * @param  mixed[] $columnSpecs  table columns cell settings.
314
-     *
315
-     * @return void
316
-     */
317
-    private function setTableDataAsSpecified($data, $columnSpecs)
318
-    {
319
-        foreach ($data as $row) {
320
-            $this->tableBody .= "\n<tr>";
321
-            foreach ($columnSpecs as $key => $columnSpec) {
322
-                if (!$this->isTableFooter($columnSpec)) {
323
-                    $colspan = $this->getColspan($columnSpec);
324
-                    $this->tableBody .= "\n<td{$colspan}>";
325
-                    $this->tableBody .= $this->getValue($row, $key, $columnSpec);
326
-                    $this->tableBody .= "</td>";
327
-                }
328
-            }
329
-            $this->tableBody .= "\n</tr>";
330
-        }
331
-    }
332
-
333
-    /**
334
-     * Helper method to get the colspan value, if specified in the column
335
-     * specification for the cell.
336
-     *
337
-     * @param  mixed[]  $columnSpec cell settings for one column.
338
-     *
339
-     * @return int the colspan value if specified. Otherwise null.
340
-     */
341
-    private function getColspan($columnSpec)
342
-    {
343
-        return isset($columnSpec['colspan']) ? " colspan='{$columnSpec['colspan']}'" : null;
344
-    }
345
-
346
-    /**
347
-     * Helper method to get the value for a specific position in one row in
348
-     * the data array.
349
-     *
350
-     * Gets the data from a specific position in one row in the data array.
351
-     * If a function is specified for the cell in the column, the data is
352
-     * runned through the function before it is returned.If the object key is
353
-     * specified to object, the reference to the object is fetched from the
354
-     * array of objects.
355
-     *
356
-     * @param  object   $row        one row of in the array of table data.
357
-     * @param  string   $key        the name of the key in the associative data array.
358
-     * @param  mixed[]  $columnSpec cell settings for one column.
359
-     */
360
-    private function getValue($row, $key, $columnSpec)
361
-    {
362
-        if ($this->isFunctionSpecified($columnSpec)) {
363
-            if ($this->isObjectSpecifiedAsKey($key)) {
364
-                $dataValue = isset($row) ? $row : "";
365
-            } else {
366
-                $dataValue = isset($row->$key) ? $row->$key : "";
367
-            }
368
-
369
-            return $this->getValueThroughFunction($columnSpec, $dataValue);
370
-        } else {
371
-            return isset($row->$key) ? htmlentities($row->$key, null, 'UTF-8') : "";
372
-        }
373
-    }
374
-
375
-    /**
376
-     * Helper method t check if the function tag is specified for the cells in
377
-     * one column.
378
-     *
379
-     * Checks if the function tag is set for the cell in one column.
380
-     *
381
-     * @param  mixed[]  $columnSpec     cell settings for one column.
382
-     *
383
-     * @return boolean true if a function is connected to the cell, false otherwise.
384
-     */
385
-    private function isFunctionSpecified($columnSpec)
386
-    {
387
-        return isset($columnSpec['function']) ? true : false;
388
-    }
389
-
390
-    /**
391
-     * Helper method to check if the object key is specified to object.
392
-     *
393
-     * Checks if the object key starts with object. The check is case insensitive.
394
-     *
395
-     * @param  string  $key the name of the key for the object.
396
-     *
397
-     * @return boolean true if the key starts with object, false otherwise.
398
-     */
399
-    private function isObjectSpecifiedAsKey($key)
400
-    {
401
-        $keyRest = substr($key, 0, 6);
402
-
403
-        return strcasecmp($keyRest, "object") === 0 ? true : false;
404
-    }
405
-
406
-    /**
407
-     * Helper method to run the value through a function before it is returned.
408
-     *
409
-     * Runs the value through a function, if a function is connected to the cell
410
-     * in the column. If not function is connected to the cell through the
411
-     * column specification, the value is returned as it is.
412
-     *
413
-     * WHEN USING A FUNCTION, NO DATA IS CHECKED. TO BE PROTECTED AGAINST
414
-     * HARMFUL DATA, THE PROTECTION MUST BE ADDED WHEN THE FUNCTION IS SPECIFIED
415
-     * WHEN CREATING THE TABLE!
416
-     *
417
-     * @param mixed[]   $columnSpec     cell settings for one column
418
-     * @param mixed     $dataValue      the value to run through function, if specified.
419
-     *
420
-     * @return the value.
421
-     */
422
-    private function getValueThroughFunction($columnSpec, $dataValue)
423
-    {
424
-        if (!empty($columnSpec['function'])) {
425
-            return call_user_func($columnSpec['function'], $dataValue);
426
-        } else {
427
-            return $dataValue;
428
-        }
429
-    }
430
-
431
-    /**
432
-     * Helper method to create table footer with data.
433
-     *
434
-     * Creates table footer if the cell settings for the column is set to
435
-     * footer in the column specifications.
436
-     * Adds a colspan tag, if it is specified for the cell in the column.
437
-     *
438
-     * @param  mixed[] $columnSpecs table columns cell settings.
439
-     *
440
-     * @return void
441
-     */
442
-    private function createTableFooter($columnSpecs)
443
-    {
444
-        foreach ($columnSpecs as $columnSpec) {
445
-            if ($this->isTableFooter($columnSpec)) {
446
-                $colspan = $this->getColspan($columnSpec);
447
-                $this->tableFoot .= "\n<td{$colspan}>";
448
-                $this->tableFoot .= $this->getFooterData($columnSpec);
449
-                $this->tableFoot .= "</td>";
450
-            }
451
-        }
452
-
453
-        if (isset($this->tableFoot)) {
454
-            $this->tableFoot = "\n<tfoot>\n<tr>" . $this->tableFoot . "\n</tr>\n</tfoot>";
455
-        }
456
-    }
457
-
458
-    /**
459
-     * Helper method to get table footer data.
460
-     *
461
-     * Gets table footer data from the column specification. Checks if the
462
-     * value should be fetched from a function or from the value tag.
463
-     * If either the function or the value specified, an empty string is
464
-     * returned.
465
-     *
466
-     * @param  mixed[] $columnSpec  cell settings for one column.
467
-     *
468
-     * @return mixed    the cell data value.
469
-     */
470
-    private function getFooterData($columnSpec)
471
-    {
472
-        if ($this->isFunctionSpecified($columnSpec)) {
473
-            return call_user_func($columnSpec['function']);
474
-        } else {
475
-            return isset($columnSpec['value']) ? $columnSpec['value'] : "";
476
-        }
477
-    }
478
-
479
-    /**
480
-     * Gets the table.
481
-     *
482
-     * Gets the table with table data.
483
-     *
484
-     * @return html     the table with table data.
485
-     */
486
-    public function getHTMLTable()
487
-    {
488
-        $id = isset($this->tableSpec['id']) ? " id='{$this->tableSpec['id']}'" : null;
489
-        $class = isset($this->tableSpec['class']) ? " class='{$this->tableSpec['class']}'" : null;
490
-        $caption = isset($this->tableSpec['caption']) ? "<caption>{$this->tableSpec['caption']}</caption>" : null;
491
-
492
-        $htmlTable = "<table{$id}{$class}>";
493
-        $htmlTable .= $caption;
494
-        $htmlTable .= $this->tableHead;
495
-        $htmlTable .= $this->tableBody;
496
-        $htmlTable .= $this->tableFoot;
497
-        $htmlTable .= "\n</table>";
498
-
499
-        return $htmlTable;
500
-    }
19
+	const FOOTER = 'footer';
20
+
21
+	private $tableSpec;
22
+	private $tableHead;
23
+	private $tableBody;
24
+	private $tableFoot;
25
+
26
+	/**
27
+	 * Constructor
28
+	 *
29
+	 * Creates a table with table head, table body and if specified, a table
30
+	 * footer. It is possible to specify the table and the tabel cells settings
31
+	 * per column.
32
+	 *
33
+	 * @param string[] $tableSpecs  table settings.
34
+	 * @param mixed[] $data         table cell data.
35
+	 * @param mixed[] $columnSpecs  table columns cell settings.
36
+	 */
37
+	public function __construct($tableSpecs = [], $data = [], $columnSpecs = [])
38
+	{
39
+		$this->create($tableSpecs, $data, $columnSpecs);
40
+	}
41
+
42
+	/**
43
+	 * Creates a table with cell data.
44
+	 *
45
+	 * Creates a table with table head, table body with table data and if
46
+	 * specified, a table footer. It is possible to specify the table and the
47
+	 * tabel cells settings per column.
48
+	 *
49
+	 * @param string[] $tableSpecs  table settings.
50
+	 * @param mixed[] $data         table cell data.
51
+	 * @param mixed[] $columnSpecs  table columns cell settings.
52
+	 *
53
+	 * @return object the html table object.
54
+	 */
55
+	public function create($tableSpecs = [], $data = [], $columnSpecs = [])
56
+	{
57
+		$this->resetTableTags();
58
+		$this->setTableSpecifications($tableSpecs);
59
+
60
+		$this->createTableHead($data, $columnSpecs);
61
+		$this->createTableBody($data, $columnSpecs);
62
+		$this->createTableFooter($columnSpecs);
63
+
64
+		return $this;
65
+	}
66
+
67
+	/**
68
+	 * Helper method to reset main parts of table tags.
69
+	 *
70
+	 * Sets the table head, table body and table foot tag to null.
71
+	 *
72
+	 * @return void
73
+	 */
74
+	private function resetTableTags()
75
+	{
76
+		$this->tableHead = null;
77
+		$this->tableBody = null;
78
+		$this->tableFoot = null;
79
+	}
80
+
81
+	/**
82
+	 * Helper method to set the table specifications.
83
+	 *
84
+	 * Merges the table specifications with the default specifications.
85
+	 * Default table CSS id is html-table.
86
+	 *
87
+	 * @param  string[] $tableSpec the table specification.
88
+	 *
89
+	 * @return void
90
+	 */
91
+	private function setTableSpecifications($tableSpec)
92
+	{
93
+		$defaults = [
94
+			// Always have a id for the form
95
+			'id' => 'html-table',
96
+		];
97
+
98
+		if ($this->isClassPresent($tableSpec)) {
99
+			$tableSpec = $this->removeId($tableSpec);
100
+		}
101
+
102
+		$this->tableSpec = array_merge($defaults, $tableSpec);
103
+	}
104
+
105
+	/**
106
+	 * Helper method to check if a CSS class tag is present
107
+	 *
108
+	 * Checks if a CSS class tag is present in the table specification.
109
+	 *
110
+	 * @param  string[] $tableSpec the table specification.
111
+	 *
112
+	 * @return boolean  true if class is present in the table specification,
113
+	 *                  false otherwise.
114
+	 */
115
+	private function isClassPresent($tableSpec)
116
+	{
117
+		return isset($tableSpec['class']) ? true : false;
118
+	}
119
+
120
+	/**
121
+	 * Helper method to reset the id tag.
122
+	 *
123
+	 * Sets the CSS id tag to null.
124
+	 *
125
+	 * @param  string[] $tableSpec the table specification.
126
+	 *
127
+	 * @return string[] the table specification without the CSS id tag.
128
+	 */
129
+	private function removeId($tableSpec) {
130
+		$tableSpec['id'] = null;
131
+
132
+		return $tableSpec;
133
+	}
134
+
135
+	/**
136
+	 * Helper method to create the table head.
137
+	 *
138
+	 * Creates the table head. The title of the columns are set according to
139
+	 * the table tag in the column specifications. Otherwise, the title is set
140
+	 * to the keys name in the table cell data array.
141
+	 *
142
+	 * @param  mixed[]  $data        table cell data.
143
+	 * @param  mixed[]  $columnSpecs table columns cell settings.
144
+	 *
145
+	 * @return void
146
+	 */
147
+	private function createTableHead($data, $columnSpecs)
148
+	{
149
+		$this->tableHead = "\n<thead>";
150
+		$this->tableHead .= "\n<tr>";
151
+
152
+		if (empty($columnSpecs))
153
+		{
154
+			$this->setColumnTitlesFromData($data);
155
+		} else {
156
+			$this->setColumnTitlesFromColumnSpecifications($columnSpecs);
157
+		}
158
+
159
+		$this->tableHead .= "\n</tr>";
160
+		$this->tableHead .= "\n</thead>";
161
+	}
162
+
163
+	/**
164
+	 * Helper method to set the column titles from the data array.
165
+	 *
166
+	 * Uses the first row in the table cell data array to set the titles of
167
+	 * the columns. The name of the columns are the key name for the objects in
168
+	 * the array containing data for the table.
169
+	 *
170
+	 * @param  mixed[]  $data   table cell data.
171
+	 *
172
+	 * @return void
173
+	 */
174
+	private function setColumnTitlesFromData($data)
175
+	{
176
+		$firstRow = isset($data[0]) ? $data[0] : [];
177
+		foreach ($firstRow as $key => $value) {
178
+			$this->tableHead .= "\n<th>";
179
+			$this->tableHead .= htmlentities($key, null, 'UTF-8');
180
+			$this->tableHead .= "</th>";
181
+		}
182
+	}
183
+
184
+	/**
185
+	 * Helper method to set the column titles from column specifications.
186
+	 *
187
+	 * Uses column specifications to set the name of the columns in the table
188
+	 * head.
189
+	 *
190
+	 * @param  mixed[]  $columnSpecs    table columns cell settings
191
+	 *
192
+	 * @return void
193
+	 */
194
+	private function setColumnTitlesFromColumnSpecifications($columnSpecs)
195
+	{
196
+		foreach ($columnSpecs as $key => $columnSpec) {
197
+			if (!$this->isTableFooter($columnSpec)) {
198
+				$this->tableHead .= "\n<th>";
199
+				$this->tableHead .= $this->getTitle($key, $columnSpec);
200
+				$this->tableHead .= "</th>";
201
+			}
202
+		}
203
+	}
204
+
205
+	/**
206
+	 * Helper method to check if the column cell belongs to the footer.
207
+	 *
208
+	 * Checks the type tag, in the column specification for one column, if the
209
+	 * tag is present and set to footer.
210
+	 *
211
+	 * @param  mixed[]  $columnSpec cell settings for one column.
212
+	 *
213
+	 * @return boolean true if the cell type belongs to the footer, false otherwise.
214
+	 */
215
+	private function isTableFooter($columnSpec)
216
+	{
217
+		$isFooter = false;
218
+		if (isset($columnSpec['type'])) {
219
+			if (strcmp($columnSpec['type'], self::FOOTER) === 0) {
220
+				$isFooter = true;
221
+			}
222
+		}
223
+
224
+		return $isFooter;
225
+	}
226
+
227
+	/**
228
+	 * Helper method to get title from a column specification, if specified.
229
+	 *
230
+	 * Uses the title tag in the column specification for one column to get
231
+	 * the title. If the title tag is not set, the title is the key for the
232
+	 * objects int the array containing data for the table.
233
+	 *
234
+	 * @param  string   $key        the name of the key for the table cell data.
235
+	 * @param  mixed[]  $columnSpec cell settings for one column.
236
+	 *
237
+	 * @return string[] the name from the title tag in the cell specification.
238
+	 *                  Otherwise, the table cell data key name.
239
+	 */
240
+	private function getTitle($key, $columnSpec)
241
+	{
242
+		return isset($columnSpec['title']) ? $columnSpec['title'] : $key;
243
+	}
244
+
245
+	/**
246
+	 * Helper method to create the table body with table cell data.
247
+	 *
248
+	 * Sets the table cell data in the table body.
249
+	 *
250
+	 * @param  mixed[] $data        table cell data.
251
+	 * @param  mixed[] $columnSpecs table columns cell settings.
252
+	 *
253
+	 * @return void
254
+	 */
255
+	private function createTableBody($data, $columnSpecs)
256
+	{
257
+		$this->setTableData($data, $columnSpecs);
258
+		if (isset($this->tableBody)) {
259
+			$this->tableBody = "\n<tbody>" . $this->tableBody . "\n</tbody>";
260
+		}
261
+	}
262
+
263
+	/**
264
+	 * Helper method to set table data in table body.
265
+	 *
266
+	 * Sets table data according to the column specifications, if it is
267
+	 * specified. Otherwise it sets the data as it is stored in the data array.
268
+	 *
269
+	 * @param  mixed[] $data        table cell data.
270
+	 * @param  mixed[] $columnSpecs table columns cell settings.
271
+	 *
272
+	 * @return void
273
+	 */
274
+	private function setTableData($data, $columnSpecs)
275
+	{
276
+		if (empty($columnSpecs)) {
277
+			$this->setTableDataFromData($data);
278
+		} else {
279
+			$this->setTableDataAsSpecified($data, $columnSpecs);
280
+		}
281
+	}
282
+
283
+	/**
284
+	 * Helper method to set table data from the data array.
285
+	 *
286
+	 * Sets table data from the data array.
287
+	 *
288
+	 * @param  mixed[]  $data   table cell data.
289
+	 *
290
+	 * @return void
291
+	 */
292
+	private function setTableDataFromData($data)
293
+	{
294
+		foreach ($data as $row) {
295
+			$this->tableBody .= "\n<tr>";
296
+			foreach ($row as $value) {
297
+				$this->tableBody .= "\n<td>";
298
+				$this->tableBody .= htmlentities($value, null, 'UTF-8');
299
+				$this->tableBody .= "</td>";
300
+			}
301
+			$this->tableBody .= "\n</tr>";
302
+		}
303
+	}
304
+
305
+	/**
306
+	 * Helper method to set table data according to the column specifications.
307
+	 *
308
+	 * Sets the table data according to the column specifications, if the cell
309
+	 * does not belong to the footer. Adds a colspan tag, if it is specified
310
+	 * for the cell in the column.
311
+	 *
312
+	 * @param  mixed[] $data         table cell data.
313
+	 * @param  mixed[] $columnSpecs  table columns cell settings.
314
+	 *
315
+	 * @return void
316
+	 */
317
+	private function setTableDataAsSpecified($data, $columnSpecs)
318
+	{
319
+		foreach ($data as $row) {
320
+			$this->tableBody .= "\n<tr>";
321
+			foreach ($columnSpecs as $key => $columnSpec) {
322
+				if (!$this->isTableFooter($columnSpec)) {
323
+					$colspan = $this->getColspan($columnSpec);
324
+					$this->tableBody .= "\n<td{$colspan}>";
325
+					$this->tableBody .= $this->getValue($row, $key, $columnSpec);
326
+					$this->tableBody .= "</td>";
327
+				}
328
+			}
329
+			$this->tableBody .= "\n</tr>";
330
+		}
331
+	}
332
+
333
+	/**
334
+	 * Helper method to get the colspan value, if specified in the column
335
+	 * specification for the cell.
336
+	 *
337
+	 * @param  mixed[]  $columnSpec cell settings for one column.
338
+	 *
339
+	 * @return int the colspan value if specified. Otherwise null.
340
+	 */
341
+	private function getColspan($columnSpec)
342
+	{
343
+		return isset($columnSpec['colspan']) ? " colspan='{$columnSpec['colspan']}'" : null;
344
+	}
345
+
346
+	/**
347
+	 * Helper method to get the value for a specific position in one row in
348
+	 * the data array.
349
+	 *
350
+	 * Gets the data from a specific position in one row in the data array.
351
+	 * If a function is specified for the cell in the column, the data is
352
+	 * runned through the function before it is returned.If the object key is
353
+	 * specified to object, the reference to the object is fetched from the
354
+	 * array of objects.
355
+	 *
356
+	 * @param  object   $row        one row of in the array of table data.
357
+	 * @param  string   $key        the name of the key in the associative data array.
358
+	 * @param  mixed[]  $columnSpec cell settings for one column.
359
+	 */
360
+	private function getValue($row, $key, $columnSpec)
361
+	{
362
+		if ($this->isFunctionSpecified($columnSpec)) {
363
+			if ($this->isObjectSpecifiedAsKey($key)) {
364
+				$dataValue = isset($row) ? $row : "";
365
+			} else {
366
+				$dataValue = isset($row->$key) ? $row->$key : "";
367
+			}
368
+
369
+			return $this->getValueThroughFunction($columnSpec, $dataValue);
370
+		} else {
371
+			return isset($row->$key) ? htmlentities($row->$key, null, 'UTF-8') : "";
372
+		}
373
+	}
374
+
375
+	/**
376
+	 * Helper method t check if the function tag is specified for the cells in
377
+	 * one column.
378
+	 *
379
+	 * Checks if the function tag is set for the cell in one column.
380
+	 *
381
+	 * @param  mixed[]  $columnSpec     cell settings for one column.
382
+	 *
383
+	 * @return boolean true if a function is connected to the cell, false otherwise.
384
+	 */
385
+	private function isFunctionSpecified($columnSpec)
386
+	{
387
+		return isset($columnSpec['function']) ? true : false;
388
+	}
389
+
390
+	/**
391
+	 * Helper method to check if the object key is specified to object.
392
+	 *
393
+	 * Checks if the object key starts with object. The check is case insensitive.
394
+	 *
395
+	 * @param  string  $key the name of the key for the object.
396
+	 *
397
+	 * @return boolean true if the key starts with object, false otherwise.
398
+	 */
399
+	private function isObjectSpecifiedAsKey($key)
400
+	{
401
+		$keyRest = substr($key, 0, 6);
402
+
403
+		return strcasecmp($keyRest, "object") === 0 ? true : false;
404
+	}
405
+
406
+	/**
407
+	 * Helper method to run the value through a function before it is returned.
408
+	 *
409
+	 * Runs the value through a function, if a function is connected to the cell
410
+	 * in the column. If not function is connected to the cell through the
411
+	 * column specification, the value is returned as it is.
412
+	 *
413
+	 * WHEN USING A FUNCTION, NO DATA IS CHECKED. TO BE PROTECTED AGAINST
414
+	 * HARMFUL DATA, THE PROTECTION MUST BE ADDED WHEN THE FUNCTION IS SPECIFIED
415
+	 * WHEN CREATING THE TABLE!
416
+	 *
417
+	 * @param mixed[]   $columnSpec     cell settings for one column
418
+	 * @param mixed     $dataValue      the value to run through function, if specified.
419
+	 *
420
+	 * @return the value.
421
+	 */
422
+	private function getValueThroughFunction($columnSpec, $dataValue)
423
+	{
424
+		if (!empty($columnSpec['function'])) {
425
+			return call_user_func($columnSpec['function'], $dataValue);
426
+		} else {
427
+			return $dataValue;
428
+		}
429
+	}
430
+
431
+	/**
432
+	 * Helper method to create table footer with data.
433
+	 *
434
+	 * Creates table footer if the cell settings for the column is set to
435
+	 * footer in the column specifications.
436
+	 * Adds a colspan tag, if it is specified for the cell in the column.
437
+	 *
438
+	 * @param  mixed[] $columnSpecs table columns cell settings.
439
+	 *
440
+	 * @return void
441
+	 */
442
+	private function createTableFooter($columnSpecs)
443
+	{
444
+		foreach ($columnSpecs as $columnSpec) {
445
+			if ($this->isTableFooter($columnSpec)) {
446
+				$colspan = $this->getColspan($columnSpec);
447
+				$this->tableFoot .= "\n<td{$colspan}>";
448
+				$this->tableFoot .= $this->getFooterData($columnSpec);
449
+				$this->tableFoot .= "</td>";
450
+			}
451
+		}
452
+
453
+		if (isset($this->tableFoot)) {
454
+			$this->tableFoot = "\n<tfoot>\n<tr>" . $this->tableFoot . "\n</tr>\n</tfoot>";
455
+		}
456
+	}
457
+
458
+	/**
459
+	 * Helper method to get table footer data.
460
+	 *
461
+	 * Gets table footer data from the column specification. Checks if the
462
+	 * value should be fetched from a function or from the value tag.
463
+	 * If either the function or the value specified, an empty string is
464
+	 * returned.
465
+	 *
466
+	 * @param  mixed[] $columnSpec  cell settings for one column.
467
+	 *
468
+	 * @return mixed    the cell data value.
469
+	 */
470
+	private function getFooterData($columnSpec)
471
+	{
472
+		if ($this->isFunctionSpecified($columnSpec)) {
473
+			return call_user_func($columnSpec['function']);
474
+		} else {
475
+			return isset($columnSpec['value']) ? $columnSpec['value'] : "";
476
+		}
477
+	}
478
+
479
+	/**
480
+	 * Gets the table.
481
+	 *
482
+	 * Gets the table with table data.
483
+	 *
484
+	 * @return html     the table with table data.
485
+	 */
486
+	public function getHTMLTable()
487
+	{
488
+		$id = isset($this->tableSpec['id']) ? " id='{$this->tableSpec['id']}'" : null;
489
+		$class = isset($this->tableSpec['class']) ? " class='{$this->tableSpec['class']}'" : null;
490
+		$caption = isset($this->tableSpec['caption']) ? "<caption>{$this->tableSpec['caption']}</caption>" : null;
491
+
492
+		$htmlTable = "<table{$id}{$class}>";
493
+		$htmlTable .= $caption;
494
+		$htmlTable .= $this->tableHead;
495
+		$htmlTable .= $this->tableBody;
496
+		$htmlTable .= $this->tableFoot;
497
+		$htmlTable .= "\n</table>";
498
+
499
+		return $htmlTable;
500
+	}
501 501
 }
Please login to merge, or discard this patch.
webroot/table-anax-mvc.php 2 patches
Indentation   +87 added lines, -87 removed lines patch added patch discarded remove patch
@@ -39,93 +39,93 @@
 block discarded – undo
39 39
 
40 40
  // Home route
41 41
  $app->router->add('', function() use ($app) {
42
-     $app->theme->addStylesheet('css/html-table.css');
43
-     $app->theme->setTitle("Using CHTMLTable in ANAX-MVC");
44
-
45
-     // Create data objects.
46
-     $row0 = new stdClass();
47
-     $row0->column1 = "Table Cell 1";
48
-     $row0->column2 = "Table Cell 2";
49
-     $row0->column3 = "Table Cell 3";
50
-     $row0->column4 = "https://www.google.se";
51
-     $row0->column5 = "Table Cell 5";
52
-     $row0->column6 = "Table Cell 6";
53
-
54
-     $row1 = new stdClass();
55
-     $row1->column1 = "Table Cell 7";
56
-     $row1->column2 = "Table Cell 8";
57
-     $row1->column3 = "Table Cell 9";
58
-     $row1->column4 = "https://www.google.se";
59
-     $row1->column5 = "Table Cell 11";
60
-     $row1->column6 = "";
61
-
62
-     $row2 = new stdClass();
63
-     $row2->column1 = "Table Cell 13";
64
-     $row2->column2 = "Table Cell 14";
65
-     $row2->column3 = "Table Cell 15";
66
-     $row2->column4 = "https://www.google.se";
67
-     $row2->column5 = "Table Cell 17";
68
-     $row2->column6 = "Table Cell 18";
69
-
70
-     // Create table data, which is an array of data objects.
71
-     $data = [
72
-     	0 => $row0,
73
-     	1 => $row1,
74
-     	2 => $row2,
75
-     ];
76
-
77
-     // Create table specifiation.
78
-     $tableSpecification = [
79
-     	//'id'        => 'test-table',
80
-     	//'class'	  => 'test-table',
81
-     	'caption'	=> 'The table'
82
-     ];
83
-
84
-     $table = new \Guer\HTMLTable\CHTMLTable();
85
-
86
-     // Create table with table specification, table data and the column
87
-     // specification.
88
-     $table = $table->create($tableSpecification, $data, [
89
-         'column1' => [
90
-             'title' => 'Table Header 1',
91
-         ],
92
-         'object1' => [
93
-     		'title'     => 'Table Header 2',
94
-     		'function'	=> function($object) {
95
-     			return htmlentities($object->column2, null, 'UTF-8');
96
-     		}
97
-         ],
98
-         'column4' => [
99
-             'title'    => 'Table Header 4',
100
-             'function'	=> function($link) {
101
-                 return '<a href="'. htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
102
-             }
103
-         ],
104
-         'column6' => [
105
-             'title'    => 'Table Header 6',
106
-             'function' => function($isPresent) {
107
-                 return empty($isPresent) ? 'Not present' :  'Present';
108
-        	}
109
-         ],
110
-         'tablefoot1' => [
111
-             'type'     => 'footer',
112
-             'colspan'  => '2',
113
-             'value'	=> 'Footer Cell 1',
114
-         ],
115
-         'tablefoot2' => [
116
-             'type'      => 'footer',
117
-             'colspan'    => 2,
118
-             'function'   => function() {
119
-                 return '<a href="https://www.google.se">Link</a>';
120
-        	}
121
-         ],
122
-     ]);
123
-
124
-
125
-     $app->views->add('default/page', [
126
-         'title'        => "Example on using specified HTML table with CHTMLTable",
127
-         'content'      => $table->getHTMLTable(),
128
-     ]);
42
+	 $app->theme->addStylesheet('css/html-table.css');
43
+	 $app->theme->setTitle("Using CHTMLTable in ANAX-MVC");
44
+
45
+	 // Create data objects.
46
+	 $row0 = new stdClass();
47
+	 $row0->column1 = "Table Cell 1";
48
+	 $row0->column2 = "Table Cell 2";
49
+	 $row0->column3 = "Table Cell 3";
50
+	 $row0->column4 = "https://www.google.se";
51
+	 $row0->column5 = "Table Cell 5";
52
+	 $row0->column6 = "Table Cell 6";
53
+
54
+	 $row1 = new stdClass();
55
+	 $row1->column1 = "Table Cell 7";
56
+	 $row1->column2 = "Table Cell 8";
57
+	 $row1->column3 = "Table Cell 9";
58
+	 $row1->column4 = "https://www.google.se";
59
+	 $row1->column5 = "Table Cell 11";
60
+	 $row1->column6 = "";
61
+
62
+	 $row2 = new stdClass();
63
+	 $row2->column1 = "Table Cell 13";
64
+	 $row2->column2 = "Table Cell 14";
65
+	 $row2->column3 = "Table Cell 15";
66
+	 $row2->column4 = "https://www.google.se";
67
+	 $row2->column5 = "Table Cell 17";
68
+	 $row2->column6 = "Table Cell 18";
69
+
70
+	 // Create table data, which is an array of data objects.
71
+	 $data = [
72
+	 	0 => $row0,
73
+	 	1 => $row1,
74
+	 	2 => $row2,
75
+	 ];
76
+
77
+	 // Create table specifiation.
78
+	 $tableSpecification = [
79
+	 	//'id'        => 'test-table',
80
+	 	//'class'	  => 'test-table',
81
+	 	'caption'	=> 'The table'
82
+	 ];
83
+
84
+	 $table = new \Guer\HTMLTable\CHTMLTable();
85
+
86
+	 // Create table with table specification, table data and the column
87
+	 // specification.
88
+	 $table = $table->create($tableSpecification, $data, [
89
+		 'column1' => [
90
+			 'title' => 'Table Header 1',
91
+		 ],
92
+		 'object1' => [
93
+	 		'title'     => 'Table Header 2',
94
+	 		'function'	=> function($object) {
95
+	 			return htmlentities($object->column2, null, 'UTF-8');
96
+	 		}
97
+		 ],
98
+		 'column4' => [
99
+			 'title'    => 'Table Header 4',
100
+			 'function'	=> function($link) {
101
+				 return '<a href="'. htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
102
+			 }
103
+		 ],
104
+		 'column6' => [
105
+			 'title'    => 'Table Header 6',
106
+			 'function' => function($isPresent) {
107
+				 return empty($isPresent) ? 'Not present' :  'Present';
108
+			}
109
+		 ],
110
+		 'tablefoot1' => [
111
+			 'type'     => 'footer',
112
+			 'colspan'  => '2',
113
+			 'value'	=> 'Footer Cell 1',
114
+		 ],
115
+		 'tablefoot2' => [
116
+			 'type'      => 'footer',
117
+			 'colspan'    => 2,
118
+			 'function'   => function() {
119
+				 return '<a href="https://www.google.se">Link</a>';
120
+			}
121
+		 ],
122
+	 ]);
123
+
124
+
125
+	 $app->views->add('default/page', [
126
+		 'title'        => "Example on using specified HTML table with CHTMLTable",
127
+		 'content'      => $table->getHTMLTable(),
128
+	 ]);
129 129
  });
130 130
 
131 131
 
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  */
31 31
 
32 32
  // Get environment & autoloader.
33
- require __DIR__.'/config.php';
33
+ require __DIR__ . '/config.php';
34 34
 
35 35
  // Create services and inject into the app.
36 36
  $di  = new \Anax\DI\CDIFactoryDefault();
@@ -98,13 +98,13 @@  discard block
 block discarded – undo
98 98
          'column4' => [
99 99
              'title'    => 'Table Header 4',
100 100
              'function'	=> function($link) {
101
-                 return '<a href="'. htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
101
+                 return '<a href="' . htmlentities($link, null, 'UTF-8') . '">' . "Google" . '</a>';
102 102
              }
103 103
          ],
104 104
          'column6' => [
105 105
              'title'    => 'Table Header 6',
106 106
              'function' => function($isPresent) {
107
-                 return empty($isPresent) ? 'Not present' :  'Present';
107
+                 return empty($isPresent) ? 'Not present' : 'Present';
108 108
         	}
109 109
          ],
110 110
          'tablefoot1' => [
Please login to merge, or discard this patch.