| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace ModulesGarden\Servers\ProxmoxVps\Core\App\Installer;
- use ModulesGarden\Servers\ProxmoxVps\Core\FileReader\Reader;
- use Illuminate\Database\Capsule\Manager;
- class DatabaseInstaller
- {
- const STATUS = 'status';
- const STATUS_SUCCESS = 'success';
- const STATUS_ERROR = 'error';
- const RAW_QUERY = 'rawQuery';
- const ERROR_MESSAGE = 'errorMessage';
- const FILE = 'file';
- protected $queryResults = [];
- public function performQueryFromFile($file = '')
- {
- $queries = $this->getQueries($file);
- array_map(function($query) use ($file)
- {
- $this->execute($query, $file);
- }, $queries);
- }
- protected function execute(&$query, $file)
- {
- try
- {
- $pdo = Manager::connection()->getPdo();
- if (empty($query) === false)
- {
- $statement = $pdo->prepare($query);
- $statement->execute();
- }
- }
- catch (\PDOException $exc)
- {
- $this->queryResults[] = [
- self::STATUS => self::STATUS_ERROR,
- self::ERROR_MESSAGE => $exc->getMessage(),
- self::FILE => $file,
- self::RAW_QUERY => str_replace(PHP_EOL, '<br>', $query)
- ];
- return null;
- }
- $this->queryResults[] = [
- self::STATUS => self::STATUS_SUCCESS,
- self::FILE => $file,
- self::RAW_QUERY => $query
- ];
- }
- protected function getQueries($file)
- {
- return array_filter(explode(';', Reader::read($file)->get()), function ($element) {
- $tElement = trim($element);
- if ($element === '' || $tElement === '')
- {
- return false;
- }
- return true;
- });
- }
- public function isInstallCorrect()
- {
- foreach ($this->queryResults as $result)
- {
- if ($result[self::STATUS] === self::STATUS_ERROR)
- {
- return false;
- }
- }
- return true;
- }
- public function getFailedQueries()
- {
- $failedList = [];
- foreach ($this->queryResults as $result)
- {
- if ($result[self::STATUS] === self::STATUS_ERROR)
- {
- $failedList[] = $result;
- }
- }
- return $failedList;
- }
- public function getQueriesResults()
- {
- return $this->queryResults;
- }
- }
|