D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
local
/
psa
/
admin
/
plib
/
modules
/
git
/
vendor
/
plesk
/
db-upgrader
/
src
/
Filename :
Migration.php
back
Copy
<?php // Copyright 1999-2022. Parallels IP Holdings GmbH. All Rights Reserved. namespace PleskExt\Upgrader; class Migration { /** * @var string[] list of SQL queries to upgrade database */ private $_queries = []; /** * @var string */ private $_version; /** * @var string */ private $_name; public function __construct($migrationFileFullPath) { $migration = file_get_contents($migrationFileFullPath); $migration = preg_replace('/^--.*$/m', '', $migration); $this->_queries = array_filter(array_map( 'trim', explode(';', str_replace(["\n", "\r"], '', $migration)) )); $migrationFileName = basename($migrationFileFullPath); $firstDashPosition = strpos($migrationFileName, '_'); $this->_version = substr($migrationFileName, 0, $firstDashPosition); $nameWithoutVersion = substr(basename($migrationFileName, '.sql'), $firstDashPosition + 1); $this->_name = static::fromCamelCase(preg_replace('/_+/', ' ', $nameWithoutVersion)); } /** * Converts camelCase string to have spaces between each. * @param $camelCaseString * @param string $glue * * @return string */ public static function fromCamelCase($camelCaseString, $glue = ' ') { return join($glue, preg_split('/(?<=[a-z])(?=[A-Z])/x', $camelCaseString)); } public function run(\Zend_Db_Adapter_Abstract $dbAdapter) { try { $dbAdapter->beginTransaction(); foreach ($this->_queries as $query) { $dbAdapter->query($query); } $dbAdapter->commit(); (new Versions(['db' => $dbAdapter]))->setDbVersion($this->_version); } catch (\Zend_Db_Exception $e) { $dbAdapter->rollBack(); throw new Exception($e->getMessage()); } } }