Updating minified JavaScript files
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / package / PackageInstallationFormManager.class.php
CommitLineData
11ade432
AE
1<?php
2namespace wcf\system\Package;
3use wcf\data\package\installation\queue\PackageInstallationQueue;
4use wcf\system\form\FormDocument;
5use wcf\system\WCF;
6use wcf\util\StringUtil;
7
8/**
a17de04e 9 * Handels form documents associated with a queue.
9f959ced 10 *
11ade432 11 * @author Alexander Ebert
7405c637 12 * @copyright 2001-2013 WoltLab GmbH
11ade432
AE
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 * @package com.woltlab.wcf
15 * @subpackage system.package.form
9f959ced 16 * @category Community Framework
11ade432
AE
17 */
18abstract class PackageInstallationFormManager {
19 /**
20 * Handles a POST or GET request.
9f959ced 21 *
11ade432
AE
22 * @param PackageInstallationQueue $queue
23 */
24 public static function handleRequest(PackageInstallationQueue $queue) {
25 $formName = (isset($_REQUEST['formName'])) ? StringUtil::trim($_REQUEST['formName']) : '';
26
27 // ignore request
28 if (empty($formName) || !self::findForm($queue, $formName)) return;
29
30 // get document
31 $document = self::getForm($queue, $formName);
32 $document->handleRequest();
33
34 self::updateForm($queue, $document);
35 }
36
37 /**
38 * Registers a form document.
9f959ced 39 *
11ade432
AE
40 * @param PackageInstallationQueue $queue
41 * @param FormDocument $document
42 */
43 public static function registerForm(PackageInstallationQueue $queue, FormDocument $document) {
44 if (self::findForm($queue, $document->getName())) {
45 self::updateForm($queue, $document);
46 }
47 else {
48 self::insertForm($queue, $document);
49 }
50 }
51
52 /**
53 * Searches for an existing form document associated with given queue.
9f959ced 54 *
11ade432
AE
55 * @param PackageInstallationQueue $queue
56 * @param string $formName
57 * @return boolean
58 */
59 public static function findForm(PackageInstallationQueue $queue, $formName) {
60 $sql = "SELECT COUNT(*) AS count
61 FROM wcf".WCF_N."_package_installation_form
62 WHERE queueID = ?
63 AND formName = ?";
64 $statement = WCF::getDB()->prepareStatement($sql);
65 $statement->execute(array(
66 $queue->queueID,
67 $formName
68 ));
69 $row = $statement->fetchArray();
70
71 return (bool)$row['count'];
72 }
73
74 /**
75 * Inserts a form document into database.
9f959ced 76 *
11ade432
AE
77 * @param PackageInstallationQueue $queue
78 * @param FormDocument $document
79 */
80 private static function insertForm(PackageInstallationQueue $queue, FormDocument $document) {
81 $sql = "INSERT INTO wcf".WCF_N."_package_installation_form
82 (queueID, formName, document)
83 VALUES (?, ?, ?)";
84 $statement = WCF::getDB()->prepareStatement($sql);
85 $statement->execute(array(
86 $queue->queueID,
87 $document->getName(),
fcc4e5b5 88 base64_encode(serialize($document))
11ade432
AE
89 ));
90 }
91
92 /**
93 * Updates a form document database entry.
9f959ced 94 *
11ade432
AE
95 * @param PackageInstallationQueue $queue
96 * @param FormDocument $document
97 */
98 private static function updateForm(PackageInstallationQueue $queue, FormDocument $document) {
99 $sql = "UPDATE wcf".WCF_N."_package_installation_form
100 SET document = ?
101 WHERE queueID = ?
102 AND formName = ?";
103 $statement = WCF::getDB()->prepareStatement($sql);
104 $statement->execute(array(
fcc4e5b5 105 base64_encode(serialize($document)),
11ade432
AE
106 $queue->queueID,
107 $document->formName
108 ));
109 }
110
111 /**
112 * Deletes form documents associated with given queue.
9f959ced 113 *
11ade432
AE
114 * @param PackageInstallationQueue $queue
115 */
116 public static function deleteForms(PackageInstallationQueue $queue) {
117 $sql = "DELETE FROM wcf".WCF_N."_package_installation_form
118 WHERE queueID = ?";
119 $statement = WCF::getDB()->prepareStatement($sql);
120 $statement->execute(array($queue->queueID));
121 }
122
123 /**
124 * Returns a form document from database.
9f959ced 125 *
11ade432
AE
126 * @param PackageInstallationQueue $queue
127 * @param string $formName
128 * @return FormDocument
129 */
130 public static function getForm(PackageInstallationQueue $queue, $formName) {
131 $sql = "SELECT document
132 FROM wcf".WCF_N."_package_installation_form
133 WHERE queueID = ?
134 AND formName = ?";
135 $statement = WCF::getDB()->prepareStatement($sql);
136 $statement->execute(array(
137 $queue->queueID,
138 $formName
139 ));
140 $row = $statement->fetchArray();
141
142 if ($row) {
fcc4e5b5 143 $document = unserialize(base64_decode($row['document']));
11ade432
AE
144 return $document;
145 }
146
147 return null;
148 }
149}