Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
Helper Class Reference
Inheritance diagram for Helper:
Helper AbstractHelper

Public Member Functions

 __construct (\Magento\Framework\App\ResourceConnection $resource, $modulePrefix, \Magento\Framework\Stdlib\DateTime\DateTime $coreDate)
 
 getTableDropSql ($tableName)
 
 getTableForeignKeysSql ($tableName=null)
 
 getTableCreateScript ($tableName, $addDropIfExists=false)
 
 getTableCreateSql ($tableName, $withForeignKeys=false)
 
 getHeader ()
 
 getFooter ()
 
 getTableDataBeforeSql ($tableName)
 
 getTableDataAfterSql ($tableName)
 
 getPartInsertSql ($tableName, $count=null, $offset=null)
 
 getInsertSql ($tableName)
 
 prepareTransactionIsolationLevel ()
 
 restoreTransactionIsolationLevel ()
 
 getTableTriggersSql ($tableName, $addDropIfExists=false, $stripDefiner=true)
 
- Public Member Functions inherited from Helper
 prepareColumnsList (\Magento\Framework\DB\Select $select, $groupByCondition=null)
 
 addGroupConcatColumn ( $select, $fieldAlias, $fields, $groupConcatDelimiter=',', $fieldsDelimiter='', $additionalWhere='')
 
 getDateDiff ($startDate, $endDate)
 
 addLikeEscape ($value, $options=[])
 
- Public Member Functions inherited from AbstractHelper
 __construct (\Magento\Framework\App\ResourceConnection $resource, $modulePrefix)
 
 escapeLikeValue ($value, $options=[])
 
 addLikeEscape ($value, $options=[])
 
 getCILike ($field, $value, $options=[])
 

Protected Member Functions

 _buildForeignKeysAlterTableSql ($tableName, $foreignKeys)
 
 _quoteRow ($tableName, array $row)
 
- Protected Member Functions inherited from Helper
 _prepareOrder (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _truncateAliasName ($field, $reverse=false)
 
 _prepareGroup (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _prepareHaving (\Magento\Framework\DB\Select $select, $autoReset=false)
 
 _assembleLimit ($query, $limitCount, $limitOffset, $columnList=[])
 
- Protected Member Functions inherited from AbstractHelper
 getConnection ()
 

Protected Attributes

 $_foreignKeys = []
 
 $_coreDate
 
- Protected Attributes inherited from AbstractHelper
 $_modulePrefix
 
 $_resource
 

Detailed Description

@api

Since
100.0.2

Definition at line 13 of file Helper.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Framework\App\ResourceConnection  $resource,
  $modulePrefix,
\Magento\Framework\Stdlib\DateTime\DateTime  $coreDate 
)
Parameters
\Magento\Framework\App\ResourceConnection$resource
string$modulePrefix
\Magento\Framework\Stdlib\DateTime\DateTime$coreDate

Definition at line 35 of file Helper.php.

39  {
40  parent::__construct($resource, $modulePrefix);
41  $this->_coreDate = $coreDate;
42  }
$resource
Definition: bulk.php:12

Member Function Documentation

◆ _buildForeignKeysAlterTableSql()

_buildForeignKeysAlterTableSql (   $tableName,
  $foreignKeys 
)
protected

Build sql that will add foreign keys to it

Parameters
string$tableName
array$foreignKeys
Returns
string

Definition at line 86 of file Helper.php.

87  {
88  if (!is_array($foreignKeys) || empty($foreignKeys)) {
89  return '';
90  }
91 
92  return sprintf(
93  "ALTER TABLE %s\n %s;\n",
94  $this->getConnection()->quoteIdentifier($tableName),
95  join(",\n ", $foreignKeys)
96  );
97  }
$tableName
Definition: trigger.php:13

◆ _quoteRow()

_quoteRow (   $tableName,
array  $row 
)
protected

Quote Table Row

Parameters
string$tableName
array$row
Returns
string

Definition at line 301 of file Helper.php.

302  {
303  $connection = $this->getConnection();
304  $describe = $connection->describeTable($tableName);
305  $dataTypes = ['bigint', 'mediumint', 'smallint', 'tinyint'];
306  $rowData = [];
307  foreach ($row as $key => $data) {
308  if ($data === null) {
309  $value = 'NULL';
310  } elseif (in_array(strtolower($describe[$key]['DATA_TYPE']), $dataTypes)) {
311  $value = $data;
312  } else {
313  $value = $connection->quoteInto('?', $data);
314  }
315  $rowData[] = $value;
316  }
317 
318  return sprintf('(%s)', implode(',', $rowData));
319  }
$tableName
Definition: trigger.php:13
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$value
Definition: gender.phtml:16
$connection
Definition: bulk.php:13

◆ getFooter()

getFooter ( )

Returns SQL footer data, move from original resource model

Returns
string

Definition at line 207 of file Helper.php.

208  {
209  $footer = "\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n" .
210  "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; \n" .
211  "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n" .
212  "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n" .
213  "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n" .
214  "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n" .
215  "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n" .
216  "\n-- Dump completed on " .
217  $this->_coreDate->gmtDate() .
218  " GMT";
219 
220  return $footer;
221  }

◆ getHeader()

getHeader ( )

Returns SQL header data, move from original resource model

Returns
string

Definition at line 176 of file Helper.php.

177  {
178  $dbConfig = $this->getConnection()->getConfig();
179 
180  $versionRow = $this->getConnection()->fetchRow('SHOW VARIABLES LIKE \'version\'');
181  $hostName = !empty($dbConfig['unix_socket'])
182  ? $dbConfig['unix_socket']
183  : (!empty($dbConfig['host']) ? $dbConfig['host'] : 'localhost');
184 
185  $header = "-- Magento DB backup\n" .
186  "--\n" .
187  "-- Host: {$hostName} Database: {$dbConfig['dbname']}\n" .
188  "-- ------------------------------------------------------\n" .
189  "-- Server version: {$versionRow['Value']}\n\n" .
190  "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n" .
191  "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n" .
192  "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n" .
193  "/*!40101 SET NAMES utf8 */;\n" .
194  "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n" .
195  "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n" .
196  "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n" .
197  "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n";
198 
199  return $header;
200  }

◆ getInsertSql()

getInsertSql (   $tableName)

Return table data SQL insert

Parameters
string$tableName
Returns
string

Definition at line 289 of file Helper.php.

290  {
291  return $this->getPartInsertSql($tableName);
292  }
$tableName
Definition: trigger.php:13
getPartInsertSql($tableName, $count=null, $offset=null)
Definition: Helper.php:259

◆ getPartInsertSql()

getPartInsertSql (   $tableName,
  $count = null,
  $offset = null 
)

Return table part data SQL insert

Parameters
string$tableName
int$count
int$offset
Returns
string

Definition at line 259 of file Helper.php.

260  {
261  $sql = null;
262  $connection = $this->getConnection();
263  $select = $connection->select()->from($tableName)->limit($count, $offset);
264  $query = $connection->query($select);
265 
266  while (true == ($row = $query->fetch())) {
267  if ($sql === null) {
268  $sql = sprintf('INSERT INTO %s VALUES ', $connection->quoteIdentifier($tableName));
269  } else {
270  $sql .= ',';
271  }
272 
273  $sql .= $this->_quoteRow($tableName, $row);
274  }
275 
276  if ($sql !== null) {
277  $sql .= ';' . "\n";
278  }
279 
280  return $sql;
281  }
$tableName
Definition: trigger.php:13
$count
Definition: recent.phtml:13
_quoteRow($tableName, array $row)
Definition: Helper.php:301
$connection
Definition: bulk.php:13

◆ getTableCreateScript()

getTableCreateScript (   $tableName,
  $addDropIfExists = false 
)

Get create script for table

Parameters
string$tableName
boolean$addDropIfExists
Returns
string

Definition at line 106 of file Helper.php.

107  {
108  $script = '';
109  $quotedTableName = $this->getConnection()->quoteIdentifier($tableName);
110 
111  if ($addDropIfExists) {
112  $script .= 'DROP TABLE IF EXISTS ' . $quotedTableName . ";\n";
113  }
114  //TODO fix me
115  $sql = 'SHOW CREATE TABLE ' . $quotedTableName;
116  $data = $this->getConnection()->fetchRow($sql);
117  $script .= isset($data['Create Table']) ? $data['Create Table'] . ";\n" : '';
118 
119  return $script;
120  }
$tableName
Definition: trigger.php:13

◆ getTableCreateSql()

getTableCreateSql (   $tableName,
  $withForeignKeys = false 
)

Retrieve SQL fragment for create table

Parameters
string$tableName
bool$withForeignKeys
Returns
string @SuppressWarnings(PHPMD.NPathComplexity)

Definition at line 130 of file Helper.php.

131  {
132  $connection = $this->getConnection();
133  $quotedTableName = $connection->quoteIdentifier($tableName);
134  $query = 'SHOW CREATE TABLE ' . $quotedTableName;
135  $row = $connection->fetchRow($query);
136 
137  if (!$row || !isset($row['Table']) || !isset($row['Create Table'])) {
138  return false;
139  }
140 
141  $regExp = '/,\s+CONSTRAINT `([^`]*)` FOREIGN KEY \(`([^`]*)`\) ' .
142  'REFERENCES `([^`]*)` \(`([^`]*)`\)' .
143  '( ON DELETE (RESTRICT|CASCADE|SET NULL|NO ACTION))?' .
144  '( ON UPDATE (RESTRICT|CASCADE|SET NULL|NO ACTION))?/';
145  $matches = [];
146  preg_match_all($regExp, $row['Create Table'], $matches, PREG_SET_ORDER);
147 
148  if (is_array($matches)) {
149  foreach ($matches as $match) {
150  $this->_foreignKeys[$tableName][] = sprintf(
151  'ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s%s',
152  $connection->quoteIdentifier($match[1]),
153  $connection->quoteIdentifier($match[2]),
154  $connection->quoteIdentifier($match[3]),
155  $connection->quoteIdentifier($match[4]),
156  isset($match[5]) ? $match[5] : '',
157  isset($match[7]) ? $match[7] : ''
158  );
159  }
160  }
161 
162  if ($withForeignKeys) {
163  $sql = $row['Create Table'];
164  } else {
165  $sql = preg_replace($regExp, '', $row['Create Table']);
166  }
167 
168  return $sql . ';';
169  }
$tableName
Definition: trigger.php:13
$connection
Definition: bulk.php:13

◆ getTableDataAfterSql()

getTableDataAfterSql (   $tableName)

Retrieve after insert data SQL fragment

Parameters
string$tableName
Returns
string

Definition at line 245 of file Helper.php.

246  {
247  $quotedTableName = $this->getConnection()->quoteIdentifier($tableName);
248  return "/*!40000 ALTER TABLE {$quotedTableName} ENABLE KEYS */;\n" . "UNLOCK TABLES;\n";
249  }
$tableName
Definition: trigger.php:13

◆ getTableDataBeforeSql()

getTableDataBeforeSql (   $tableName)

Retrieve before insert data SQL fragment

Parameters
string$tableName
Returns
string

Definition at line 229 of file Helper.php.

230  {
231  $quotedTableName = $this->getConnection()->quoteIdentifier($tableName);
232  return "\n--\n" .
233  "-- Dumping data for table {$quotedTableName}\n" .
234  "--\n\n" .
235  "LOCK TABLES {$quotedTableName} WRITE;\n" .
236  "/*!40000 ALTER TABLE {$quotedTableName} DISABLE KEYS */;\n";
237  }
$tableName
Definition: trigger.php:13

◆ getTableDropSql()

getTableDropSql (   $tableName)

Retrieve SQL fragment for drop table

Parameters
string$tableName
Returns
string

Definition at line 50 of file Helper.php.

51  {
52  $quotedTableName = $this->getConnection()->quoteIdentifier($tableName);
53  return sprintf('DROP TABLE IF EXISTS %s;', $quotedTableName);
54  }
$tableName
Definition: trigger.php:13

◆ getTableForeignKeysSql()

getTableForeignKeysSql (   $tableName = null)

Retrieve foreign keys for table(s)

Parameters
string | null$tableName
Returns
string|bool

Definition at line 62 of file Helper.php.

63  {
64  $sql = false;
65 
66  if ($tableName === null) {
67  $sql = '';
68  foreach ($this->_foreignKeys as $table => $foreignKeys) {
69  $sql .= $this->_buildForeignKeysAlterTableSql($table, $foreignKeys);
70  }
71  } elseif (isset($this->_foreignKeys[$tableName])) {
72  $foreignKeys = $this->_foreignKeys[$tableName];
73  $sql = $this->_buildForeignKeysAlterTableSql($tableName, $foreignKeys);
74  }
75 
76  return $sql;
77  }
$tableName
Definition: trigger.php:13
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
_buildForeignKeysAlterTableSql($tableName, $foreignKeys)
Definition: Helper.php:86
$table
Definition: trigger.php:14

◆ getTableTriggersSql()

getTableTriggersSql (   $tableName,
  $addDropIfExists = false,
  $stripDefiner = true 
)

Get create script for triggers.

Parameters
string$tableName
boolean$addDropIfExists
boolean$stripDefiner
Returns
string
Since
100.2.3

Definition at line 350 of file Helper.php.

351  {
352  $script = "--\n-- Triggers structure for table `{$tableName}`\n--\n";
353  $triggers = $this->getConnection()->query('SHOW TRIGGERS LIKE \''. $tableName . '\'')->fetchAll();
354 
355  if (!$triggers) {
356  return '';
357  }
358  foreach ($triggers as $trigger) {
359  if ($addDropIfExists) {
360  $script .= 'DROP TRIGGER IF EXISTS ' . $trigger['Trigger'] . ";\n";
361  }
362  $script .= "delimiter ;;\n";
363 
364  $triggerData = $this->getConnection()->query('SHOW CREATE TRIGGER '. $trigger['Trigger'])->fetch();
365  if ($stripDefiner) {
366  $cleanedScript = preg_replace('/DEFINER=[^\s]*/', '', $triggerData['SQL Original Statement']);
367  $script .= $cleanedScript . "\n";
368  } else {
369  $script .= $triggerData['SQL Original Statement'] . "\n";
370  }
371  $script .= ";;\n";
372  $script .= "delimiter ;\n";
373  }
374 
375  return $script;
376  }
$tableName
Definition: trigger.php:13
$trigger
Definition: trigger.php:27

◆ prepareTransactionIsolationLevel()

prepareTransactionIsolationLevel ( )

Prepare transaction isolation level for backup process

Returns
void

Definition at line 326 of file Helper.php.

327  {
328  $this->getConnection()->query('SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE');
329  }

◆ restoreTransactionIsolationLevel()

restoreTransactionIsolationLevel ( )

Restore transaction isolation level after backup

Returns
void

Definition at line 336 of file Helper.php.

337  {
338  $this->getConnection()->query('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
339  }

Field Documentation

◆ $_coreDate

$_coreDate
protected

Definition at line 28 of file Helper.php.

◆ $_foreignKeys

$_foreignKeys = []
protected

Definition at line 21 of file Helper.php.


The documentation for this class was generated from the following file: