diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 13:26:02 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 13:26:02 +0000 |
commit | fcbf3ce37ca8f90a3e36d524a3274ffc063a40e3 (patch) | |
tree | 84c735df2e97350a721273e9dd425729d43cc8a2 /application/forms/ChromeBinaryForm.php | |
parent | Initial commit. (diff) | |
download | icingaweb2-module-pdfexport-upstream.tar.xz icingaweb2-module-pdfexport-upstream.zip |
Adding upstream version 0.10.2+dfsg1.upstream/0.10.2+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'application/forms/ChromeBinaryForm.php')
-rw-r--r-- | application/forms/ChromeBinaryForm.php | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/application/forms/ChromeBinaryForm.php b/application/forms/ChromeBinaryForm.php new file mode 100644 index 0000000..c72d933 --- /dev/null +++ b/application/forms/ChromeBinaryForm.php @@ -0,0 +1,94 @@ +<?php + +/* Icinga PDF Export | (c) 2019 Icinga GmbH | GPLv2 */ + +namespace Icinga\Module\Pdfexport\Forms; + +use Exception; +use Icinga\Forms\ConfigForm; +use Icinga\Module\Pdfexport\HeadlessChrome; +use Zend_Validate_Callback; + +class ChromeBinaryForm extends ConfigForm +{ + public function init() + { + $this->setName('pdfexport_binary'); + $this->setSubmitLabel($this->translate('Save Changes')); + } + + public function createElements(array $formData) + { + $this->addElement('text', 'chrome_binary', [ + 'label' => $this->translate('Local Binary'), + 'placeholder' => '/usr/bin/google-chrome', + 'validators' => [new Zend_Validate_Callback(function ($value) { + $chrome = (new HeadlessChrome()) + ->setBinary($value); + + try { + $version = $chrome->getVersion(); + } catch (Exception $e) { + $this->getElement('chrome_binary')->addError($e->getMessage()); + return true; + } + + if ($version < 59) { + $this->getElement('chrome_binary')->addError(sprintf( + $this->translate( + 'Chrome/Chromium supporting headless mode required' + . ' which is provided since version 59. Version detected: %s' + ), + $version + )); + } + + return true; + })] + ]); + + $this->addElement('checkbox', 'chrome_force_temp_storage', [ + 'label' => $this->translate('Force local temp storage') + ]); + + $this->addElement('text', 'chrome_host', [ + 'label' => $this->translate('Remote Host'), + 'validators' => [new Zend_Validate_Callback(function ($value) { + if ($value === null) { + return true; + } + + $port = $this->getValue('chrome_port') ?: 9222; + + $chrome = (new HeadlessChrome()) + ->setRemote($value, $port); + + try { + $version = $chrome->getVersion(); + } catch (Exception $e) { + $this->getElement('chrome_host')->addError($e->getMessage()); + return true; + } + + if ($version < 59) { + $this->getElement('chrome_host')->addError(sprintf( + $this->translate( + 'Chrome/Chromium supporting headless mode required' + . ' which is provided since version 59. Version detected: %s' + ), + $version + )); + } + + return true; + })] + ]); + + $this->addElement('number', 'chrome_port', [ + 'label' => $this->translate('Remote Port'), + 'placeholder' => 9222, + 'min' => 1, + 'max' => 65535 + ]); + } +} |