Resolve language item-related PIP GUI todos
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / package / TemplatesFileHandler.class.php
CommitLineData
11ade432
AE
1<?php
2namespace wcf\system\package;
577229e3
MW
3use wcf\system\database\util\PreparedStatementConditionBuilder;
4use wcf\system\WCF;
11ade432
AE
5
6/**
a17de04e 7 * File handler implementation for the installation of template files.
11ade432 8 *
577229e3 9 * @author Marcel Werk
c839bd49 10 * @copyright 2001-2018 WoltLab GmbH
11ade432 11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
e71525e4 12 * @package WoltLabSuite\Core\System\Package
11ade432
AE
13 */
14class TemplatesFileHandler extends ACPTemplatesFileHandler {
596a7675 15 /**
0fcfe5f6 16 * @inheritDoc
596a7675
AE
17 */
18 protected $supportsTemplateGroups = true;
19
701dd384 20 /**
0fcfe5f6 21 * @inheritDoc
701dd384
MS
22 */
23 protected $tableName = 'template';
577229e3
MW
24
25 /**
0fcfe5f6 26 * @inheritDoc
577229e3
MW
27 */
28 public function logFiles(array $files) {
29 $packageID = $this->packageInstallation->getPackageID();
2d63c13c 30
577229e3
MW
31 // remove file extension
32 foreach ($files as &$file) {
e4adbaef 33 $file = substr($file, 0, -4);
577229e3
MW
34 }
35 unset($file);
2d63c13c 36
577229e3 37 // get existing templates
0557bb04 38 $updateTemplateIDs = [];
577229e3
MW
39 $sql = "SELECT templateName, templateID
40 FROM wcf".WCF_N."_template
41 WHERE packageID = ?
04727c8b 42 AND application = ?
577229e3
MW
43 AND templateGroupID IS NULL";
44 $statement = WCF::getDB()->prepareStatement($sql);
058cbd6a 45 $statement->execute([$packageID, $this->application]);
0557bb04 46 $existingTemplates = $statement->fetchMap('templateName', 'templateID');
2d63c13c 47
577229e3
MW
48 // save new templates
49 $sql = "INSERT INTO wcf".WCF_N."_template
04727c8b
MS
50 (packageID, templateName, lastModificationTime, application)
51 VALUES (?, ?, ?, ?)";
577229e3
MW
52 $statement = WCF::getDB()->prepareStatement($sql);
53 foreach ($files as $file) {
54 if (isset($existingTemplates[$file])) {
55 $updateTemplateIDs[] = $existingTemplates[$file];
56 continue;
57 }
58
058cbd6a 59 $statement->execute([
577229e3
MW
60 $packageID,
61 $file,
04727c8b
MS
62 TIME_NOW,
63 $this->application
058cbd6a 64 ]);
577229e3
MW
65 }
66
67 if (!empty($updateTemplateIDs)) {
68 // update old templates
69 $conditionBuilder = new PreparedStatementConditionBuilder();
058cbd6a 70 $conditionBuilder->add('templateID IN (?)', [$updateTemplateIDs]);
577229e3
MW
71
72 $sql = "UPDATE wcf".WCF_N."_template
73 SET lastModificationTime = ?
74 ".$conditionBuilder;
75 $statement = WCF::getDB()->prepareStatement($sql);
058cbd6a 76 $statement->execute(array_merge([TIME_NOW], $conditionBuilder->getParameters()));
577229e3
MW
77 }
78 }
11ade432 79}