PluginProbe
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin / 6.5.1.7
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin v6.5.1.7
6.5.1.7 6.5.1.6 6.5.1.5 6.5.1.4 6.5.1.3 6.5.1.2 6.5.1.1 6.5.0.9 6.5.0.8 6.5.0.7 6.5.0.6 trunk 3.4.2.40 3.4.2.41 3.4.2.42 3.4.2.43 3.4.2.44 3.4.2.45 3.4.2.46 3.4.2.47 3.4.2.48 3.4.2.49 3.4.2.50 6.3.2 6.3.3.1 All 47 releases
wpdatatables / lib / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Cell / DefaultValueBinder.php

DefaultValueBinder.php in wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin 6.5.1.7, at lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php

84 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PhpOffice\PhpSpreadsheet\Cell;
4
5 use DateTimeInterface;
6 use PhpOffice\PhpSpreadsheet\RichText\RichText;
7 use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
8
9 class DefaultValueBinder implements IValueBinder
10 {
11 /**
12 * Bind value to a cell.
13 *
14 * @param Cell $cell Cell to bind value to
15 * @param mixed $value Value to bind in cell
16 *
17 * @return bool
18 */
19 public function bindValue(Cell $cell, $value)
20 {
21 // sanitize UTF-8 strings
22 if (is_string($value)) {
23 $value = StringHelper::sanitizeUTF8($value);
24 } elseif (is_object($value)) {
25 // Handle any objects that might be injected
26 if ($value instanceof DateTimeInterface) {
27 $value = $value->format('Y-m-d H:i:s');
28 } elseif (!($value instanceof RichText)) {
29 // Attempt to cast any unexpected objects to string
30 $value = (string) $value; // @phpstan-ignore-line
31 }
32 }
33
34 // Set value explicit
35 $cell->setValueExplicit($value, static::dataTypeForValue($value));
36
37 // Done!
38 return true;
39 }
40
41 /**
42 * DataType for value.
43 *
44 * @param mixed $value
45 *
46 * @return string
47 */
48 public static function dataTypeForValue($value)
49 {
50 // Match the value against a few data types
51 if ($value === null) {
52 return DataType::TYPE_NULL;
53 } elseif (is_float($value) || is_int($value)) {
54 return DataType::TYPE_NUMERIC;
55 } elseif (is_bool($value)) {
56 return DataType::TYPE_BOOL;
57 } elseif ($value === '') {
58 return DataType::TYPE_STRING;
59 } elseif ($value instanceof RichText) {
60 return DataType::TYPE_INLINE;
61 } elseif (is_string($value) && strlen($value) > 1 && $value[0] === '=') {
62 return DataType::TYPE_FORMULA;
63 } elseif (preg_match('/^[\+\-]?(\d+\.?\d*|\d*\.?\d+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $value)) {
64 $tValue = ltrim($value, '+-');
65 if (is_string($value) && strlen($tValue) > 1 && $tValue[0] === '0' && $tValue[1] !== '.') {
66 return DataType::TYPE_STRING;
67 } elseif ((strpos($value, '.') === false) && ($value > PHP_INT_MAX)) {
68 return DataType::TYPE_STRING;
69 } elseif (!is_numeric($value)) {
70 return DataType::TYPE_STRING;
71 }
72
73 return DataType::TYPE_NUMERIC;
74 } elseif (is_string($value)) {
75 $errorCodes = DataType::getErrorCodes();
76 if (isset($errorCodes[$value])) {
77 return DataType::TYPE_ERROR;
78 }
79 }
80
81 return DataType::TYPE_STRING;
82 }
83 }
84