Passed
Push — master ( b08068...da3a14 )
by Slye
01:33
created
src/System.php 1 patch
Indentation   +183 added lines, -183 removed lines patch added patch discarded remove patch
@@ -25,201 +25,201 @@
 block discarded – undo
25 25
  */
26 26
 class System
27 27
 {
28
-    /**
29
-     * @var Dotenv
30
-     */
31
-    protected Dotenv $env;
32
-    /**
33
-     * @var array
34
-     */
35
-    protected array $errors = [];
36
-    /**
37
-     * @var bool
38
-     */
39
-    protected bool $isCli;
40
-    /**
41
-     * @var array
42
-     */
43
-    protected array $files = [];
28
+	/**
29
+	 * @var Dotenv
30
+	 */
31
+	protected Dotenv $env;
32
+	/**
33
+	 * @var array
34
+	 */
35
+	protected array $errors = [];
36
+	/**
37
+	 * @var bool
38
+	 */
39
+	protected bool $isCli;
40
+	/**
41
+	 * @var array
42
+	 */
43
+	protected array $files = [];
44 44
 
45
-    /**
46
-     * System constructor.
47
-     */
48
-    public function __construct()
49
-    {
50
-        $this->isCli = PHP_SAPI === 'cli';
51
-        $this->loadConfigurationEnvironment();
52
-    }
45
+	/**
46
+	 * System constructor.
47
+	 */
48
+	public function __construct()
49
+	{
50
+		$this->isCli = PHP_SAPI === 'cli';
51
+		$this->loadConfigurationEnvironment();
52
+	}
53 53
 
54
-    /**
55
-     * Start System initialization
56
-     * @return void
57
-     * @throws RuntimeException
58
-     */
59
-    public function loadConfigurationEnvironment(): void
60
-    {
61
-        if (!file_exists(dirname(__DIR__) . DIRECTORY_SEPARATOR . '.env')) {
62
-            throw new RuntimeException('Please configure this script with .env-dist to .env file');
63
-        }
64
-        $this->env = Dotenv::createImmutable(dirname(__DIR__));
65
-        $this->env->load();
66
-        if (!$this->isCli && !(bool)getenv('ALLOW_EXECUTE_IN_HTTP_BROWSER')) {
67
-            die('Unauthorized to execute this script in your browser !');
68
-        }
69
-        if (PHP_VERSION_ID < 70400) {
70
-            die('PHP VERSION IS NOT SUPPORTED, PLEASE USE THIS SCRIPT WITH TO PHP 7.4 VERSION OR HIGHTER');
71
-        }
72
-    }
54
+	/**
55
+	 * Start System initialization
56
+	 * @return void
57
+	 * @throws RuntimeException
58
+	 */
59
+	public function loadConfigurationEnvironment(): void
60
+	{
61
+		if (!file_exists(dirname(__DIR__) . DIRECTORY_SEPARATOR . '.env')) {
62
+			throw new RuntimeException('Please configure this script with .env-dist to .env file');
63
+		}
64
+		$this->env = Dotenv::createImmutable(dirname(__DIR__));
65
+		$this->env->load();
66
+		if (!$this->isCli && !(bool)getenv('ALLOW_EXECUTE_IN_HTTP_BROWSER')) {
67
+			die('Unauthorized to execute this script in your browser !');
68
+		}
69
+		if (PHP_VERSION_ID < 70400) {
70
+			die('PHP VERSION IS NOT SUPPORTED, PLEASE USE THIS SCRIPT WITH TO PHP 7.4 VERSION OR HIGHTER');
71
+		}
72
+	}
73 73
 
74
-    /**
75
-     * @return Validator
76
-     */
77
-    public function checkRequirements(): Validator
78
-    {
79
-        return $this->env->required(
80
-            [
81
-                'DB_HOST',
82
-                'DB_USER',
83
-                'DB_PASSWORD',
84
-                'MAIL_FROM',
85
-                'MAIL_FROM_NAME',
86
-                'MAIL_TO',
87
-                'MAIL_TO_NAME',
88
-                'MAIL_SEND_ON_ERROR',
89
-                'MAIL_SEND_ON_SUCCESS',
90
-                'MAIL_SMTP_HOST',
91
-                'MAIL_SMTP_PORT',
92
-                'FILES_DAYS_HISTORY',
93
-                'FILES_PATH_TO_SAVE_BACKUP',
94
-                'ALLOW_EXECUTE_IN_HTTP_BROWSER'
95
-            ]
96
-        )->notEmpty();
97
-    }
74
+	/**
75
+	 * @return Validator
76
+	 */
77
+	public function checkRequirements(): Validator
78
+	{
79
+		return $this->env->required(
80
+			[
81
+				'DB_HOST',
82
+				'DB_USER',
83
+				'DB_PASSWORD',
84
+				'MAIL_FROM',
85
+				'MAIL_FROM_NAME',
86
+				'MAIL_TO',
87
+				'MAIL_TO_NAME',
88
+				'MAIL_SEND_ON_ERROR',
89
+				'MAIL_SEND_ON_SUCCESS',
90
+				'MAIL_SMTP_HOST',
91
+				'MAIL_SMTP_PORT',
92
+				'FILES_DAYS_HISTORY',
93
+				'FILES_PATH_TO_SAVE_BACKUP',
94
+				'ALLOW_EXECUTE_IN_HTTP_BROWSER'
95
+			]
96
+		)->notEmpty();
97
+	}
98 98
 
99
-    /**
100
-     * @return array
101
-     */
102
-    public function getExcludedDatabases(): array
103
-    {
104
-        if (empty(trim(getenv('DB_EXCLUDE_DATABASES')))) {
105
-            return [];
106
-        }
107
-        return (array)$this->parseAndSanitize(getenv('DB_EXCLUDE_DATABASES'));
108
-    }
99
+	/**
100
+	 * @return array
101
+	 */
102
+	public function getExcludedDatabases(): array
103
+	{
104
+		if (empty(trim(getenv('DB_EXCLUDE_DATABASES')))) {
105
+			return [];
106
+		}
107
+		return (array)$this->parseAndSanitize(getenv('DB_EXCLUDE_DATABASES'));
108
+	}
109 109
 
110
-    /**
111
-     * @return array
112
-     */
113
-    public function getDatabases(): array
114
-    {
115
-        $pdo = new PDO(
116
-            'mysql:host=' . getenv('DB_HOST') . ';charset=UTF8', getenv('DB_USER'), getenv('DB_PASSWORD'),
117
-            [
118
-                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
119
-                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
120
-            ]
121
-        );
122
-        return $pdo->query('SHOW DATABASES')->fetchAll();
123
-    }
110
+	/**
111
+	 * @return array
112
+	 */
113
+	public function getDatabases(): array
114
+	{
115
+		$pdo = new PDO(
116
+			'mysql:host=' . getenv('DB_HOST') . ';charset=UTF8', getenv('DB_USER'), getenv('DB_PASSWORD'),
117
+			[
118
+				PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
119
+				PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
120
+			]
121
+		);
122
+		return $pdo->query('SHOW DATABASES')->fetchAll();
123
+	}
124 124
 
125
-    /**
126
-     * Process to backup databases
127
-     * @return bool
128
-     */
129
-    public function process(): bool
130
-    {
131
-        foreach ($this->getDatabases() as $database) {
132
-            if (!\in_array($database->Database, $this->getExcludedDatabases(), true)) {
133
-                $file_format = $database->Database . '-' . time() . '.sql';
134
-                try {
135
-                    $dumper = new Mysqldump(
136
-                        'mysql:host=' . getenv('DB_HOST') . ';dbname=' . $database->Database . ';charset=UTF8',
137
-                        getenv('DB_USER'), getenv('DB_PASSWORD')
138
-                    );
139
-                    $dumper->start(getenv('FILES_PATH_TO_SAVE_BACKUP') . DIRECTORY_SEPARATOR . $file_format);
140
-                    $this->files[] = getenv('FILES_PATH_TO_SAVE_BACKUP') . DIRECTORY_SEPARATOR . $file_format;
141
-                } catch (Exception $e) {
142
-                    $this->errors[] = [
143
-                        'dbname' => $database->Database,
144
-                        'error_message' => $e->getMessage(),
145
-                        'error_code' => $e->getCode()
146
-                    ];
147
-                    return false;
148
-                }
149
-            }
150
-        }
151
-        $this->sendMail();
152
-        return true;
153
-    }
125
+	/**
126
+	 * Process to backup databases
127
+	 * @return bool
128
+	 */
129
+	public function process(): bool
130
+	{
131
+		foreach ($this->getDatabases() as $database) {
132
+			if (!\in_array($database->Database, $this->getExcludedDatabases(), true)) {
133
+				$file_format = $database->Database . '-' . time() . '.sql';
134
+				try {
135
+					$dumper = new Mysqldump(
136
+						'mysql:host=' . getenv('DB_HOST') . ';dbname=' . $database->Database . ';charset=UTF8',
137
+						getenv('DB_USER'), getenv('DB_PASSWORD')
138
+					);
139
+					$dumper->start(getenv('FILES_PATH_TO_SAVE_BACKUP') . DIRECTORY_SEPARATOR . $file_format);
140
+					$this->files[] = getenv('FILES_PATH_TO_SAVE_BACKUP') . DIRECTORY_SEPARATOR . $file_format;
141
+				} catch (Exception $e) {
142
+					$this->errors[] = [
143
+						'dbname' => $database->Database,
144
+						'error_message' => $e->getMessage(),
145
+						'error_code' => $e->getCode()
146
+					];
147
+					return false;
148
+				}
149
+			}
150
+		}
151
+		$this->sendMail();
152
+		return true;
153
+	}
154 154
 
155
-    /**
156
-     * @param string $data
157
-     * @return array|string
158
-     */
159
-    private function parseAndSanitize(string $data)
160
-    {
161
-        $results = explode(',', $data);
162
-        if (\count($results) > 1) {
163
-            foreach ($results as $k => $v) {
164
-                $results[$k] = trim($v);
165
-                if (empty($v)) {
166
-                    unset($results[$k]);
167
-                }
168
-            }
169
-            return $results;
170
-        }
171
-        return trim($results[0]);
172
-    }
155
+	/**
156
+	 * @param string $data
157
+	 * @return array|string
158
+	 */
159
+	private function parseAndSanitize(string $data)
160
+	{
161
+		$results = explode(',', $data);
162
+		if (\count($results) > 1) {
163
+			foreach ($results as $k => $v) {
164
+				$results[$k] = trim($v);
165
+				if (empty($v)) {
166
+					unset($results[$k]);
167
+				}
168
+			}
169
+			return $results;
170
+		}
171
+		return trim($results[0]);
172
+	}
173 173
 
174
-    /**
175
-     * Send a mail if error or success backup database
176
-     */
177
-    private function sendMail(): void
178
-    {
179
-        $smtpTransport = new Swift_SmtpTransport(getenv('MAIL_SMTP_HOST'), (int)getenv('MAIL_SMTP_PORT'));
180
-        $smtpTransport->setUsername(getenv('MAIL_SMTP_USER'))->setPassword(getenv('MAIL_SMTP_PASSWORD'));
181
-        $mailer = new Swift_Mailer($smtpTransport);
182
-        if (empty($this->errors)) {
183
-            if ((bool)getenv('MAIL_SEND_ON_SUCCESS')) {
184
-                $body = "<strong>The backup of the databases has been successful!</strong>";
185
-                if ((bool)getenv('MAIL_SEND_BACKUP_FILE')) {
186
-                    $body .= "<br><br>You will find a copy of the backup attached to this email.";
187
-                }
188
-                $message = (new Swift_Message('Backup performed!'))
189
-                    ->setFrom(getenv('MAIL_FROM'), getenv('MAIL_FROM_NAME'))
190
-                    ->setTo(getenv('MAIL_TO'), getenv('MAIL_TO_NAME'))
191
-                    ->setBody($body)
192
-                    ->setCharset('utf-8')
193
-                    ->setContentType('text/html');
194
-                if ((bool)getenv('MAIL_SEND_BACKUP_FILE')) {
195
-                    foreach ($this->files as $file) {
196
-                        $attachment = Swift_Attachment::fromPath($file)->setContentType('application/sql');
197
-                        $message->attach($attachment);
198
-                    }
199
-                }
200
-                $mailer->send($message);
201
-            }
202
-        } else {
203
-            if ((bool)getenv('MAIL_SEND_ON_ERROR')) {
204
-                $body = "<strong>The backup of databases has encountered errors: </strong><br><br><ul>";
205
-                foreach ($this->errors as $error) {
206
-                    $body .= "<li>
174
+	/**
175
+	 * Send a mail if error or success backup database
176
+	 */
177
+	private function sendMail(): void
178
+	{
179
+		$smtpTransport = new Swift_SmtpTransport(getenv('MAIL_SMTP_HOST'), (int)getenv('MAIL_SMTP_PORT'));
180
+		$smtpTransport->setUsername(getenv('MAIL_SMTP_USER'))->setPassword(getenv('MAIL_SMTP_PASSWORD'));
181
+		$mailer = new Swift_Mailer($smtpTransport);
182
+		if (empty($this->errors)) {
183
+			if ((bool)getenv('MAIL_SEND_ON_SUCCESS')) {
184
+				$body = "<strong>The backup of the databases has been successful!</strong>";
185
+				if ((bool)getenv('MAIL_SEND_BACKUP_FILE')) {
186
+					$body .= "<br><br>You will find a copy of the backup attached to this email.";
187
+				}
188
+				$message = (new Swift_Message('Backup performed!'))
189
+					->setFrom(getenv('MAIL_FROM'), getenv('MAIL_FROM_NAME'))
190
+					->setTo(getenv('MAIL_TO'), getenv('MAIL_TO_NAME'))
191
+					->setBody($body)
192
+					->setCharset('utf-8')
193
+					->setContentType('text/html');
194
+				if ((bool)getenv('MAIL_SEND_BACKUP_FILE')) {
195
+					foreach ($this->files as $file) {
196
+						$attachment = Swift_Attachment::fromPath($file)->setContentType('application/sql');
197
+						$message->attach($attachment);
198
+					}
199
+				}
200
+				$mailer->send($message);
201
+			}
202
+		} else {
203
+			if ((bool)getenv('MAIL_SEND_ON_ERROR')) {
204
+				$body = "<strong>The backup of databases has encountered errors: </strong><br><br><ul>";
205
+				foreach ($this->errors as $error) {
206
+					$body .= "<li>
207 207
                             <ul>
208 208
                                 <li>Database: {$error['dbname']}</li>
209 209
                                 <li>Error code: {$error['error_code']}</li>
210 210
                                 <li>Error message: {$error['error_message']}</li>
211 211
                             </ul>
212 212
                            </li>";
213
-                }
214
-                $body .= '</ul>';
215
-                $message = (new Swift_Message('Backup failed!'))
216
-                    ->setFrom(getenv('MAIL_FROM'), getenv('MAIL_FROM_NAME'))
217
-                    ->setTo(getenv('MAIL_TO'), getenv('MAIL_TO_NAME'))
218
-                    ->setBody($body)
219
-                    ->setCharset('utf-8')
220
-                    ->setContentType('text/html');
221
-                $mailer->send($message);
222
-            }
223
-        }
224
-    }
213
+				}
214
+				$body .= '</ul>';
215
+				$message = (new Swift_Message('Backup failed!'))
216
+					->setFrom(getenv('MAIL_FROM'), getenv('MAIL_FROM_NAME'))
217
+					->setTo(getenv('MAIL_TO'), getenv('MAIL_TO_NAME'))
218
+					->setBody($body)
219
+					->setCharset('utf-8')
220
+					->setContentType('text/html');
221
+				$mailer->send($message);
222
+			}
223
+		}
224
+	}
225 225
 }
Please login to merge, or discard this patch.