Commit | Line | Data |
---|---|---|
c2836ca3 MW |
1 | <?php |
2 | namespace wcf\system\importer; | |
112dcc44 AE |
3 | use wcf\data\package\PackageCache; |
4 | use wcf\system\WCF; | |
c2836ca3 MW |
5 | |
6 | /** | |
7 | * Basic implementation of IImporter. | |
e3369fd2 | 8 | * |
c2836ca3 | 9 | * @author Marcel Werk |
c839bd49 | 10 | * @copyright 2001-2018 WoltLab GmbH |
c2836ca3 | 11 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
e71525e4 | 12 | * @package WoltLabSuite\Core\System\Importer |
c2836ca3 MW |
13 | */ |
14 | abstract class AbstractImporter implements IImporter { | |
15 | /** | |
16 | * database object class name | |
06355ec3 | 17 | * @var string |
c2836ca3 MW |
18 | */ |
19 | protected $className = ''; | |
20 | ||
21 | /** | |
0fcfe5f6 | 22 | * @inheritDoc |
c2836ca3 MW |
23 | */ |
24 | public function getClassName() { | |
25 | return $this->className; | |
26 | } | |
112dcc44 AE |
27 | |
28 | /** | |
29 | * Imports a list of language items. | |
30 | * | |
31 | * @param string[][] $items | |
32 | * @param string $languageCategory | |
33 | * @param string $package | |
34 | */ | |
35 | protected function importI18nValues(array $items, $languageCategory, $package) { | |
36 | // get package id | |
37 | $packageID = PackageCache::getInstance()->getPackageID($package); | |
38 | ||
39 | $sql = "INSERT INTO wcf".WCF_N."_language_item | |
40 | (languageID, languageItem, languageItemValue, languageCategoryID, packageID) | |
41 | VALUES (?, ?, ?, ?, ?) | |
42 | ON DUPLICATE KEY | |
43 | UPDATE languageItemValue = VALUES(languageItemValue)"; | |
44 | $statement = WCF::getDB()->prepareStatement($sql); | |
45 | WCF::getDB()->beginTransaction(); | |
46 | foreach ($items as $itemData) { | |
47 | $statement->execute([ | |
48 | $itemData['languageID'], | |
49 | $itemData['languageItem'], | |
50 | $itemData['languageItemValue'], | |
51 | $this->getLanguageCategoryID($languageCategory), | |
52 | $packageID | |
53 | ]); | |
54 | } | |
55 | WCF::getDB()->commitTransaction(); | |
56 | } | |
57 | ||
58 | /** | |
59 | * Returns the language category id. | |
60 | * | |
61 | * @param string $languageCategory | |
62 | * @return integer | |
63 | */ | |
64 | protected function getLanguageCategoryID($languageCategory) { | |
65 | static $languageCategoryIDs = []; | |
66 | ||
67 | if (!isset($languageCategoryIDs[$languageCategory])) { | |
68 | // get language category id | |
69 | $sql = "SELECT languageCategoryID | |
70 | FROM wcf" . WCF_N . "_language_category | |
71 | WHERE languageCategory = ?"; | |
72 | $statement = WCF::getDB()->prepareStatement($sql); | |
73 | $statement->execute([$languageCategory]); | |
74 | ||
75 | $languageCategoryIDs[$languageCategory] = $statement->fetchSingleColumn(); | |
76 | } | |
77 | ||
78 | return $languageCategoryIDs[$languageCategory]; | |
79 | } | |
c2836ca3 | 80 | } |