3e1d91b7b4101deb9a2d309b33686de01dab1a8b
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / option / PaymentMethodSelectOptionType.class.php
1 <?php
2 namespace wcf\system\option;
3 use wcf\data\option\Option;
4 use wcf\system\exception\UserInputException;
5 use wcf\system\payment\method\PaymentMethodHandler;
6 use wcf\system\WCF;
7
8 /**
9 * Option type implementation for selecting payment methods.
10 *
11 * @author Marcel Werk
12 * @copyright 2001-2014 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 * @package com.woltlab.wcf
15 * @subpackage system.option
16 * @category Community Framework
17 */
18 class PaymentMethodSelectOptionType extends AbstractOptionType {
19 /**
20 * @see \wcf\system\option\IOptionType::getFormElement()
21 */
22 public function getFormElement(Option $option, $value) {
23 $selectOptions = PaymentMethodHandler::getInstance()->getPaymentMethodSelection();
24
25 return WCF::getTPL()->fetch('paymentMethodSelectOptionType', 'wcf', array(
26 'selectOptions' => $selectOptions,
27 'option' => $option,
28 'value' => explode(',', $value)
29 ));
30 }
31
32 /**
33 * @see \wcf\system\option\IOptionType::validate()
34 */
35 public function validate(Option $option, $newValue) {
36 if (!is_array($newValue)) {
37 $newValue = array();
38 }
39
40 $selectOptions = PaymentMethodHandler::getInstance()->getPaymentMethodSelection();
41 foreach ($newValue as $optionName) {
42 if (!isset($selectOptions[$optionName])) {
43 throw new UserInputException($option->optionName, 'validationFailed');
44 }
45 }
46 }
47
48 /**
49 * @see \wcf\system\option\IOptionType::getData()
50 */
51 public function getData(Option $option, $newValue) {
52 if (!is_array($newValue)) return '';
53 return implode(',', $newValue);
54 }
55 }