Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
TextBlobDefinition.php
Go to the documentation of this file.
1 <?php
8 
10 
15 {
23  private function parseTextSize($size)
24  {
25  $size = trim($size);
26  $last = strtolower(substr($size, -1));
27 
28  switch ($last) {
29  case 'k':
30  $size = intval($size) * 1024;
31  break;
32  case 'm':
33  $size = intval($size) * 1024 * 1024;
34  break;
35  case 'g':
36  $size = intval($size) * 1024 * 1024 * 1024;
37  break;
38  }
39 
40  if (empty($size)) {
42  }
43  if ($size >= Table::MAX_TEXT_SIZE) {
44  return Table::MAX_TEXT_SIZE;
45  }
46 
47  return intval($size);
48  }
49 
58  private function getCTypeByLength($ddlType, $length)
59  {
60  if ($length > 0 && $length <= 255) {
61  $cType = $ddlType == Table::TYPE_TEXT ? 'varchar' : 'varbinary';
62  } elseif ($length > 255 && $length <= 65536) {
63  $cType = $ddlType == Table::TYPE_TEXT ? 'text' : 'blob';
64  } elseif ($length > 65536 && $length <= 16777216) {
65  $cType = $ddlType == Table::TYPE_TEXT ? 'mediumtext' : 'mediumblob';
66  } else {
67  $cType = $ddlType == Table::TYPE_TEXT ? 'longtext' : 'longblob';
68  }
69 
70  return $cType;
71  }
72 
76  public function convertToDefinition(array $definition)
77  {
78  $length = $this->parseTextSize($definition['length'] ?? 0);
79  $ddlType = $definition['type'];
80  $cType = $this->getCTypeByLength($ddlType, $length);
81 
82  $newDefinition = [
83  'xsi:type' => $cType,
84  'name' => $definition['name'],
85  'nullable' => $definition['nullable'] ?? true,
86  'primary' => $definition['primary'] ?? false
87  ];
88 
89  if (in_array($cType, ['varchar', 'varbinary'])) {
90  $newDefinition['length'] = $length;
91  $newDefinition['default'] = $definition['default'] ?? null;
92  }
93 
94  return $newDefinition;
95  }
96 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
return false
Definition: gallery.phtml:36