[TASK] Add preset for mail SMTP settings in install tool
[Packages/TYPO3.CMS.git] / typo3 / sysext / install / Classes / Configuration / Mail / SendmailPreset.php
1 <?php
2 namespace TYPO3\CMS\Install\Configuration\Mail;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Install\Configuration;
18
19 /**
20 * Sendmail path handling preset
21 */
22 class SendmailPreset extends Configuration\AbstractPreset
23 {
24 /**
25 * @var string Name of preset
26 */
27 protected $name = 'Sendmail';
28
29 /**
30 * @var int Priority of preset
31 */
32 protected $priority = 50;
33
34 /**
35 * @var array Configuration values handled by this preset
36 */
37 protected $configurationValues = [
38 'MAIL/transport' => 'sendmail',
39 'MAIL/transport_sendmail_command' => '',
40 'MAIL/transport_smtp_server' => '',
41 'MAIL/transport_smtp_encrypt' => '',
42 'MAIL/transport_smtp_username' => '',
43 'MAIL/transport_smtp_password' => '',
44 ];
45
46 /**
47 * Get configuration values to activate prefix
48 *
49 * @return array Configuration values needed to activate prefix
50 */
51 public function getConfigurationValues()
52 {
53 $configurationValues = $this->configurationValues;
54 $configurationValues['MAIL/transport_sendmail_command'] = $this->getSendmailPath();
55 if ($this->postValues['Mail']['enable'] === 'Sendmail') {
56 $configurationValues['MAIL/transport'] = 'sendmail';
57 }
58 return $configurationValues;
59 }
60
61 /**
62 * Check if sendmail path if set
63 *
64 * @return bool TRUE if sendmail path if set
65 */
66 public function isAvailable()
67 {
68 return !empty($this->getSendmailPath());
69 }
70
71 /**
72 * Path where executable was found
73 *
74 * @return string|bool Sendmail path or FALSE if not set
75 */
76 public function getSendmailPath()
77 {
78 return ini_get('sendmail_path');
79 }
80
81 /**
82 * Check is preset is currently active on the system
83 *
84 * @return bool TRUE if preset is active
85 */
86 public function isActive()
87 {
88 $this->configurationValues['MAIL/transport_sendmail_command'] = $this->getSendmailPath();
89 return parent::isActive();
90 }
91 }