3 namespace wcf\system\importer
;
5 use wcf\data\package\PackageCache
;
9 * Basic implementation of IImporter.
12 * @copyright 2001-2019 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 abstract class AbstractImporter
implements IImporter
18 * database object class name
21 protected $className = '';
26 public function getClassName()
28 return $this->className
;
32 * Imports a list of language items.
34 * @param string[][] $items
35 * @param string $languageCategory
36 * @param string $package
38 protected function importI18nValues(array $items, $languageCategory, $package)
41 $packageID = PackageCache
::getInstance()->getPackageID($package);
43 $sql = "INSERT INTO wcf" . WCF_N
. "_language_item
44 (languageID, languageItem, languageItemValue, languageCategoryID, packageID)
45 VALUES (?, ?, ?, ?, ?)
46 ON DUPLICATE KEY UPDATE languageItemValue = VALUES(languageItemValue)";
47 $statement = WCF
::getDB()->prepareStatement($sql);
48 WCF
::getDB()->beginTransaction();
49 foreach ($items as $itemData) {
51 $itemData['languageID'],
52 $itemData['languageItem'],
53 $itemData['languageItemValue'],
54 $this->getLanguageCategoryID($languageCategory),
58 WCF
::getDB()->commitTransaction();
62 * Returns the language category id.
64 * @param string $languageCategory
67 protected function getLanguageCategoryID($languageCategory)
69 static $languageCategoryIDs = [];
71 if (!isset($languageCategoryIDs[$languageCategory])) {
72 // get language category id
73 $sql = "SELECT languageCategoryID
74 FROM wcf" . WCF_N
. "_language_category
75 WHERE languageCategory = ?";
76 $statement = WCF
::getDB()->prepareStatement($sql);
77 $statement->execute([$languageCategory]);
79 $languageCategoryIDs[$languageCategory] = $statement->fetchSingleColumn();
82 return $languageCategoryIDs[$languageCategory];