3 namespace wcf\acp\form
;
5 use wcf\data\
object\type\ObjectType
;
6 use wcf\data\
object\type\ObjectTypeCache
;
7 use wcf\data\
object\type\ObjectTypeEditor
;
8 use wcf\form\AbstractForm
;
9 use wcf\system\exception\UserInputException
;
11 use wcf\util\ArrayUtil
;
14 * Provides the user activity point option form.
16 * @author Tim Duesterhus
17 * @copyright 2001-2019 WoltLab GmbH
18 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
19 * @package WoltLabSuite\Core\Acp\Form
21 class UserActivityPointOptionForm
extends AbstractForm
26 public $activeMenuItem = 'wcf.acp.menu.link.activityPoint';
31 public $neededPermissions = ['admin.user.canEditActivityPoints'];
34 * points to objectType
43 public $objectTypes = [];
48 public function readFormParameters()
50 parent
::readFormParameters();
52 if (isset($_POST['points']) && \
is_array($_POST['points'])) {
53 $this->points
= ArrayUtil
::toIntegerArray($_POST['points']);
60 public function validate()
64 foreach ($this->points
as $objectTypeID => $points) {
66 throw new UserInputException($objectTypeID, 'greaterThan');
74 public function readData()
76 $this->objectTypes
= ObjectTypeCache
::getInstance()->getObjectTypes('com.woltlab.wcf.user.activityPointEvent');
78 foreach ($this->objectTypes
as $objectType) {
79 $this->points
[$objectType->objectTypeID
] = $objectType->points
;
89 public function save()
93 foreach ($this->objectTypes
as $objectType) {
94 if (!isset($this->points
[$objectType->objectTypeID
])) {
97 $editor = new ObjectTypeEditor($objectType);
98 $data = $objectType->additionalData
;
99 $data['points'] = $this->points
[$objectType->objectTypeID
];
100 $editor->update(['additionalData' => \
serialize($data)]);
103 ObjectTypeEditor
::resetCache();
107 WCF
::getTPL()->assign('success', true);
113 public function assignVariables()
115 parent
::assignVariables();
117 WCF
::getTPL()->assign([
118 'objectTypes' => $this->objectTypes
,
119 'points' => $this->points
,