Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / template / TemplateAction.class.php
CommitLineData
158bd3ca
TD
1<?php
2namespace wcf\data\template;
3use wcf\data\AbstractDatabaseObjectAction;
2d8a8589 4use wcf\system\language\LanguageFactory;
158bd3ca
TD
5
6/**
7 * Executes template-related actions.
8 *
9 * @author Alexander Ebert
c839bd49 10 * @copyright 2001-2018 WoltLab GmbH
158bd3ca 11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
e71525e4 12 * @package WoltLabSuite\Core\Data\Template
0e8867ac
MS
13 *
14 * @method TemplateEditor[] getObjects()
15 * @method TemplateEditor getSingleObject()
158bd3ca
TD
16 */
17class TemplateAction extends AbstractDatabaseObjectAction {
18 /**
0fcfe5f6 19 * @inheritDoc
158bd3ca 20 */
157054c9 21 protected $className = TemplateEditor::class;
158bd3ca
TD
22
23 /**
0fcfe5f6 24 * @inheritDoc
158bd3ca 25 */
058cbd6a 26 protected $permissionsCreate = ['admin.template.canManageTemplate'];
158bd3ca
TD
27
28 /**
0fcfe5f6 29 * @inheritDoc
158bd3ca 30 */
058cbd6a 31 protected $permissionsDelete = ['admin.template.canManageTemplate'];
158bd3ca
TD
32
33 /**
0fcfe5f6 34 * @inheritDoc
158bd3ca 35 */
058cbd6a 36 protected $permissionsUpdate = ['admin.template.canManageTemplate'];
12aa6f89 37
bae8dd1e 38 /**
0fcfe5f6 39 * @inheritDoc
bae8dd1e 40 */
058cbd6a 41 protected $requireACP = ['create', 'delete', 'update'];
bae8dd1e 42
12aa6f89 43 /**
0fcfe5f6 44 * @inheritDoc
0e8867ac 45 * @return Template
12aa6f89
MW
46 */
47 public function create() {
0e8867ac 48 /** @var Template $template */
12aa6f89
MW
49 $template = parent::create();
50
51 if (isset($this->parameters['source'])) {
52 $editor = new TemplateEditor($template);
53 $editor->setSource($this->parameters['source']);
54 }
55
56 return $template;
57 }
58
2d8a8589 59 /**
0fcfe5f6 60 * @inheritDoc
2d8a8589
AE
61 */
62 public function delete() {
63 $count = parent::delete();
64
65 LanguageFactory::getInstance()->deleteLanguageCache();
66
67 return $count;
68 }
69
12aa6f89 70 /**
0fcfe5f6 71 * @inheritDoc
12aa6f89
MW
72 */
73 public function update() {
74 parent::update();
e3369fd2 75
4a130a51 76 foreach ($this->getObjects() as $template) {
12aa6f89
MW
77 // rename file
78 $templateName = (isset($this->parameters['data']['templateName']) ? $this->parameters['data']['templateName'] : $template->templateName);
79 $templateGroupID = (isset($this->parameters['data']['templateGroupID']) ? $this->parameters['data']['templateGroupID'] : $template->templateGroupID);
80 if ($templateName != $template->templateName || $templateGroupID != $template->templateGroupID) {
81 $template->rename($templateName, $templateGroupID);
82 }
83
84 // update source
85 if (isset($this->parameters['source'])) {
86 $template->setSource($this->parameters['source']);
87 }
88 }
89 }
dcb3a44c 90}