Updating release date
[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
ca4ba303 10 * @copyright 2001-2014 WoltLab GmbH
11ade432
AE
11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12 * @package com.woltlab.wcf
13 * @subpackage system.package
9f959ced 14 * @category Community Framework
11ade432
AE
15 */
16class TemplatesFileHandler extends ACPTemplatesFileHandler {
701dd384 17 /**
0ad90fc3 18 * @see \wcf\system\package\ACPTemplatesFileHandler::$tableName
701dd384
MS
19 */
20 protected $tableName = 'template';
577229e3
MW
21
22 /**
0ad90fc3 23 * @see \wcf\system\setup\IFileHandler::logFiles()
577229e3
MW
24 */
25 public function logFiles(array $files) {
26 $packageID = $this->packageInstallation->getPackageID();
2d63c13c 27
577229e3
MW
28 // remove file extension
29 foreach ($files as &$file) {
e4adbaef 30 $file = substr($file, 0, -4);
577229e3
MW
31 }
32 unset($file);
2d63c13c 33
577229e3
MW
34 // get existing templates
35 $existingTemplates = $updateTemplateIDs = array();
36 $sql = "SELECT templateName, templateID
37 FROM wcf".WCF_N."_template
38 WHERE packageID = ?
04727c8b 39 AND application = ?
577229e3
MW
40 AND templateGroupID IS NULL";
41 $statement = WCF::getDB()->prepareStatement($sql);
04727c8b 42 $statement->execute(array($packageID, $this->application));
577229e3
MW
43 while ($row = $statement->fetchArray()) {
44 $existingTemplates[$row['templateName']] = $row['templateID'];
45 }
2d63c13c 46
577229e3
MW
47 // save new templates
48 $sql = "INSERT INTO wcf".WCF_N."_template
04727c8b
MS
49 (packageID, templateName, lastModificationTime, application)
50 VALUES (?, ?, ?, ?)";
577229e3
MW
51 $statement = WCF::getDB()->prepareStatement($sql);
52 foreach ($files as $file) {
53 if (isset($existingTemplates[$file])) {
54 $updateTemplateIDs[] = $existingTemplates[$file];
55 continue;
56 }
57
58 $statement->execute(array(
59 $packageID,
60 $file,
04727c8b
MS
61 TIME_NOW,
62 $this->application
577229e3
MW
63 ));
64 }
65
66 if (!empty($updateTemplateIDs)) {
67 // update old templates
68 $conditionBuilder = new PreparedStatementConditionBuilder();
69 $conditionBuilder->add('templateID IN (?)', array($updateTemplateIDs));
70
71 $sql = "UPDATE wcf".WCF_N."_template
72 SET lastModificationTime = ?
73 ".$conditionBuilder;
74 $statement = WCF::getDB()->prepareStatement($sql);
75 $statement->execute(array_merge(array(TIME_NOW), $conditionBuilder->getParameters()));
76 }
77 }
11ade432 78}