3 namespace wcf\system\package
;
5 use wcf\system\database\util\PreparedStatementConditionBuilder
;
9 * File handler implementation for the installation of template files.
12 * @copyright 2001-2019 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 class TemplatesFileHandler
extends ACPTemplatesFileHandler
20 protected $supportsTemplateGroups = true;
25 protected $tableName = 'template';
30 public function logFiles(array $files)
32 $packageID = $this->packageInstallation
->getPackageID();
34 // remove file extension
35 foreach ($files as &$file) {
36 $file = \
substr($file, 0, -4);
40 // get existing templates
41 $updateTemplateIDs = [];
42 $sql = "SELECT templateName, templateID
43 FROM wcf" . WCF_N
. "_template
46 AND templateGroupID IS NULL";
47 $statement = WCF
::getDB()->prepareStatement($sql);
48 $statement->execute([$packageID, $this->application
]);
49 $existingTemplates = $statement->fetchMap('templateName', 'templateID');
52 $sql = "INSERT INTO wcf" . WCF_N
. "_template
53 (packageID, templateName, lastModificationTime, application)
55 $statement = WCF
::getDB()->prepareStatement($sql);
56 foreach ($files as $file) {
57 if (isset($existingTemplates[$file])) {
58 $updateTemplateIDs[] = $existingTemplates[$file];
70 if (!empty($updateTemplateIDs)) {
71 // update old templates
72 $conditionBuilder = new PreparedStatementConditionBuilder();
73 $conditionBuilder->add('templateID IN (?)', [$updateTemplateIDs]);
75 $sql = "UPDATE wcf" . WCF_N
. "_template
76 SET lastModificationTime = ?
77 " . $conditionBuilder;
78 $statement = WCF
::getDB()->prepareStatement($sql);
79 $statement->execute(\array_merge
([TIME_NOW
], $conditionBuilder->getParameters()));