Merge remote-tracking branch 'refs/remotes/origin/next' into next-lantia
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / acp / form / PackageUpdateServerAddForm.class.php
1 <?php
2 namespace wcf\acp\form;
3 use wcf\data\package\update\server\PackageUpdateServer;
4 use wcf\data\package\update\server\PackageUpdateServerAction;
5 use wcf\form\AbstractForm;
6 use wcf\system\exception\UserInputException;
7 use wcf\system\WCF;
8 use wcf\system\WCFACP;
9 use wcf\util\StringUtil;
10
11 /**
12 * Shows the server add form.
13 *
14 * @author Marcel Werk
15 * @copyright 2001-2015 WoltLab GmbH
16 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
17 * @package com.woltlab.wcf
18 * @subpackage acp.form
19 * @category Community Framework
20 */
21 class PackageUpdateServerAddForm extends AbstractForm {
22 /**
23 * @see \wcf\page\AbstractPage::$activeMenuItem
24 */
25 public $activeMenuItem = 'wcf.acp.menu.link.package';
26
27 /**
28 * @see \wcf\page\AbstractPage::$neededPermissions
29 */
30 public $neededPermissions = array('admin.configuration.package.canEditServer');
31
32 /**
33 * server url
34 * @var string
35 */
36 public $serverURL = '';
37
38 /**
39 * server login username
40 * @var string
41 */
42 public $loginUsername = '';
43
44 /**
45 * server login password
46 * @var string
47 */
48 public $loginPassword = '';
49
50 /**
51 * @see \wcf\form\IForm::readFormParameters()
52 */
53 public function readFormParameters() {
54 parent::readFormParameters();
55
56 if (isset($_POST['serverURL'])) $this->serverURL = StringUtil::trim($_POST['serverURL']);
57 if (isset($_POST['loginUsername'])) $this->loginUsername = $_POST['loginUsername'];
58 if (isset($_POST['loginPassword'])) $this->loginPassword = $_POST['loginPassword'];
59 }
60
61 /**
62 * @see \wcf\form\IForm::validate()
63 */
64 public function validate() {
65 parent::validate();
66
67 if (empty($this->serverURL)) {
68 throw new UserInputException('serverURL');
69 }
70
71 if (!PackageUpdateServer::isValidServerURL($this->serverURL)) {
72 throw new UserInputException('serverURL', 'notValid');
73 }
74 }
75
76 /**
77 * @see \wcf\form\IForm::save()
78 */
79 public function save() {
80 parent::save();
81
82 // save server
83 $this->objectAction = new PackageUpdateServerAction(array(), 'create', array('data' => array_merge($this->additionalFields, array(
84 'serverURL' => $this->serverURL,
85 'loginUsername' => $this->loginUsername,
86 'loginPassword' => $this->loginPassword
87 ))));
88 $this->objectAction->executeAction();
89 $this->saved();
90
91 // reset values
92 $this->serverURL = $this->loginUsername = $this->loginPassword = '';
93
94 // show success message
95 WCF::getTPL()->assign('success', true);
96 }
97
98 /**
99 * @see \wcf\page\IPage::assignVariables()
100 */
101 public function assignVariables() {
102 parent::assignVariables();
103
104 WCF::getTPL()->assign(array(
105 'serverURL' => $this->serverURL,
106 'loginUsername' => $this->loginUsername,
107 'loginPassword' => $this->loginPassword,
108 'action' => 'add'
109 ));
110 }
111
112 /**
113 * @see \wcf\page\IPage::assignVariables()
114 */
115 public function show() {
116 // check master password
117 WCFACP::checkMasterPassword();
118
119 parent::show();
120 }
121 }