diff --git a/PHPCI/Command/InstallCommand.php b/PHPCI/Command/InstallCommand.php index 6e846ab6..3b8ca701 100644 --- a/PHPCI/Command/InstallCommand.php +++ b/PHPCI/Command/InstallCommand.php @@ -103,18 +103,6 @@ class InstallCommand extends Command $this->writeConfigFile($conf); $this->setupDatabase($output); $this->createAdminUser($output, $dialog); - - /* - $conf['phpci']['email_settings']['smtp_address'] = $this->ask('(Optional) Smtp server address: ', true); - $conf['phpci']['email_settings']['smtp_port'] = $this->ask('(Optional) Smtp port: ', true); - $conf['phpci']['email_settings']['smtp_encryption'] = $this->ask('(Optional) Smtp encryption: ', true); - $conf['phpci']['email_settings']['smtp_username'] = $this->ask('(Optional) Smtp Username: ', true); - $conf['phpci']['email_settings']['smtp_password'] = $this->ask('(Optional) Smtp Password: ', true); - $conf['phpci']['email_settings']['from_address'] = $this->ask('(Optional) Email address to send from: ', true); - - $ask = '(Optional) Default address to email notifications to: '; - $conf['phpci']['email_settings']['default_mailto_address'] = $this->ask($ask, true); - */ } /** diff --git a/PHPCI/Controller/SettingsController.php b/PHPCI/Controller/SettingsController.php index 6f8f544c..c2ea099b 100644 --- a/PHPCI/Controller/SettingsController.php +++ b/PHPCI/Controller/SettingsController.php @@ -39,7 +39,15 @@ class SettingsController extends Controller public function index() { $this->view->settings = $this->settings; + + $emailSettings = array(); + + if (isset($this->settings['phpci']['email_settings'])) { + $emailSettings = $this->settings['phpci']['email_settings']; + } + $this->view->github = $this->getGithubForm(); + $this->view->emailSettings = $this->getEmailForm($emailSettings); if (!empty($this->settings['phpci']['github']['token'])) { $this->view->githubUser = $this->getGithubUser($this->settings['phpci']['github']['token']); @@ -52,17 +60,28 @@ class SettingsController extends Controller { $this->settings['phpci']['github']['id'] = $this->getParam('githubid', ''); $this->settings['phpci']['github']['secret'] = $this->getParam('githubsecret', ''); - $error = $this->storeSettings(); - if($error) - { + if($error) { header('Location: ' . PHPCI_URL . 'settings?saved=2'); - } - else - { + } else { header('Location: ' . PHPCI_URL . 'settings?saved=1'); } + + die; + } + + public function email() + { + $this->settings['phpci']['email_settings'] = $this->getParams(); + $error = $this->storeSettings(); + + if ($error) { + header('Location: ' . PHPCI_URL . 'settings?saved=2'); + } else { + header('Location: ' . PHPCI_URL . 'settings?saved=1'); + } + die; } @@ -120,18 +139,23 @@ class SettingsController extends Controller $field->setLabel('Application ID'); $field->setClass('form-control'); $field->setContainerClass('form-group'); - $field->setValue($this->settings['phpci']['github']['id']); $form->addField($field); + if (isset($this->settings['phpci']['github']['id'])) { + $field->setValue($this->settings['phpci']['github']['id']); + } + $field = new Form\Element\Text('githubsecret'); $field->setRequired(true); $field->setPattern('[a-zA-Z0-9]+'); $field->setLabel('Application Secret'); $field->setClass('form-control'); $field->setContainerClass('form-group'); - $field->setValue($this->settings['phpci']['github']['secret']); $form->addField($field); + if (isset($this->settings['phpci']['github']['secret'])) { + $field->setValue($this->settings['phpci']['github']['secret']); + } $field = new Form\Element\Submit(); $field->setValue('Save »'); @@ -141,6 +165,76 @@ class SettingsController extends Controller return $form; } + protected function getEmailForm($values = array()) + { + $form = new Form(); + $form->setMethod('POST'); + $form->setAction(PHPCI_URL . 'settings/email'); + $form->addField(new Form\Element\Csrf('csrf')); + + $field = new Form\Element\Text('smtp_address'); + $field->setRequired(false); + $field->setLabel('SMTP Server'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $field->setValue('localhost'); + $form->addField($field); + + $field = new Form\Element\Text('smtp_port'); + $field->setRequired(false); + $field->setPattern('[0-9]+'); + $field->setLabel('SMTP Port'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $field->setValue(25); + $form->addField($field); + + $field = new Form\Element\Text('smtp_username'); + $field->setRequired(false); + $field->setLabel('SMTP Username'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $form->addField($field); + + $field = new Form\Element\Text('smtp_password'); + $field->setRequired(false); + $field->setLabel('SMTP Password'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $form->addField($field); + + $field = new Form\Element\Email('from_address'); + $field->setRequired(false); + $field->setLabel('From Email Address'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $form->addField($field); + + $field = new Form\Element\Email('default_mailto_address'); + $field->setRequired(false); + $field->setLabel('Default Notification Address'); + $field->setClass('form-control'); + $field->setContainerClass('form-group'); + $form->addField($field); + + $field = new Form\Element\Checkbox('smtp_encryption'); + $field->setCheckedValue(1); + $field->setRequired(false); + $field->setLabel('Use SMTP encryption?'); + $field->setContainerClass('form-group'); + $field->setValue(1); + $form->addField($field); + + $field = new Form\Element\Submit(); + $field->setValue('Save »'); + $field->setClass('btn btn-success pull-right'); + $form->addField($field); + + $form->setValues($values); + + return $form; + } + protected function getGithubUser($token) { $http = new HttpClient('https://api.github.com'); diff --git a/PHPCI/View/Settings/index.phtml b/PHPCI/View/Settings/index.phtml index be0c88b2..3f0eb5ec 100644 --- a/PHPCI/View/Settings/index.phtml +++ b/PHPCI/View/Settings/index.phtml @@ -28,7 +28,12 @@

Github Application

@@ -66,3 +71,27 @@ + +
+
+
+

Email Settings

+ + + +

+ Before PHPCI can send build status emails, you need to configure your SMTP settings below. +

+ + +
+ +
+ +
+ +
+ +
+
+
\ No newline at end of file