2 namespace wcf\system\package
;
3 use wcf\system\database\util\PreparedStatementConditionBuilder
;
7 * File handler implementation for the installation of template files.
10 * @copyright 2001-2018 WoltLab GmbH
11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12 * @package WoltLabSuite\Core\System\Package
14 class TemplatesFileHandler
extends ACPTemplatesFileHandler
{
18 protected $supportsTemplateGroups = true;
23 protected $tableName = 'template';
28 public function logFiles(array $files) {
29 $packageID = $this->packageInstallation
->getPackageID();
31 // remove file extension
32 foreach ($files as &$file) {
33 $file = substr($file, 0, -4);
37 // get existing templates
38 $updateTemplateIDs = [];
39 $sql = "SELECT templateName, templateID
40 FROM wcf".WCF_N
."_template
43 AND templateGroupID IS NULL";
44 $statement = WCF
::getDB()->prepareStatement($sql);
45 $statement->execute([$packageID, $this->application
]);
46 $existingTemplates = $statement->fetchMap('templateName', 'templateID');
49 $sql = "INSERT INTO wcf".WCF_N
."_template
50 (packageID, templateName, lastModificationTime, application)
52 $statement = WCF
::getDB()->prepareStatement($sql);
53 foreach ($files as $file) {
54 if (isset($existingTemplates[$file])) {
55 $updateTemplateIDs[] = $existingTemplates[$file];
67 if (!empty($updateTemplateIDs)) {
68 // update old templates
69 $conditionBuilder = new PreparedStatementConditionBuilder();
70 $conditionBuilder->add('templateID IN (?)', [$updateTemplateIDs]);
72 $sql = "UPDATE wcf".WCF_N
."_template
73 SET lastModificationTime = ?
75 $statement = WCF
::getDB()->prepareStatement($sql);
76 $statement->execute(array_merge([TIME_NOW
], $conditionBuilder->getParameters()));