Fix some IDE warnings about undefined methods
[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
7d739af0 10 * @copyright 2001-2016 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
058cbd6a 38 $existingTemplates = $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]);
577229e3
MW
46 while ($row = $statement->fetchArray()) {
47 $existingTemplates[$row['templateName']] = $row['templateID'];
48 }
2d63c13c 49
577229e3
MW
50 // save new templates
51 $sql = "INSERT INTO wcf".WCF_N."_template
04727c8b
MS
52 (packageID, templateName, lastModificationTime, application)
53 VALUES (?, ?, ?, ?)";
577229e3
MW
54 $statement = WCF::getDB()->prepareStatement($sql);
55 foreach ($files as $file) {
56 if (isset($existingTemplates[$file])) {
57 $updateTemplateIDs[] = $existingTemplates[$file];
58 continue;
59 }
60
058cbd6a 61 $statement->execute([
577229e3
MW
62 $packageID,
63 $file,
04727c8b
MS
64 TIME_NOW,
65 $this->application
058cbd6a 66 ]);
577229e3
MW
67 }
68
69 if (!empty($updateTemplateIDs)) {
70 // update old templates
71 $conditionBuilder = new PreparedStatementConditionBuilder();
058cbd6a 72 $conditionBuilder->add('templateID IN (?)', [$updateTemplateIDs]);
577229e3
MW
73
74 $sql = "UPDATE wcf".WCF_N."_template
75 SET lastModificationTime = ?
76 ".$conditionBuilder;
77 $statement = WCF::getDB()->prepareStatement($sql);
058cbd6a 78 $statement->execute(array_merge([TIME_NOW], $conditionBuilder->getParameters()));
577229e3
MW
79 }
80 }
11ade432 81}