コード例 #1
0
 /**
  * @see	\wcf\page\IPage::readData()
  */
 public function readData()
 {
     parent::readData();
     // get languages
     $this->availableLanguages = LanguageFactory::getInstance()->getLanguages();
     // get categories
     $languageCategoryList = new LanguageCategoryList();
     $languageCategoryList->readObjects();
     $this->availableLanguageCategories = $languageCategoryList->getObjects();
     // check parameters
     if (!isset($this->availableLanguages[$this->languageID])) {
         $this->languageID = key($this->availableLanguages);
     }
     if ($this->languageCategoryID && !isset($this->availableLanguageCategories[$this->languageCategoryID])) {
         $this->languageCategoryID = 0;
     }
     // get items
     $this->languageItemList = new LanguageItemList();
     $this->languageItemList->getConditionBuilder()->add('languageID = ?', array($this->languageID));
     if ($this->languageCategoryID) {
         $this->languageItemList->getConditionBuilder()->add('languageCategoryID = ?', array($this->languageCategoryID));
     }
     if ($this->languageItem) {
         $this->languageItemList->getConditionBuilder()->add('languageItem LIKE ?', array('%' . $this->languageItem . '%'));
     }
     if ($this->languageItemValue) {
         $this->languageItemList->getConditionBuilder()->add('((languageUseCustomValue = 0 AND languageItemValue LIKE ?) OR languageCustomItemValue LIKE ?)', array('%' . $this->languageItemValue . '%', '%' . $this->languageItemValue . '%'));
     }
     if ($this->hasCustomValue) {
         $this->languageItemList->getConditionBuilder()->add("languageCustomItemValue IS NOT NULL");
     }
     $this->languageItemList->sqlLimit = 100;
     if (!empty($_POST)) {
         $this->count = $this->languageItemList->countObjects();
         $maxPages = ceil($this->count / 100);
         $this->pageNo = max(min($this->pageNo, $maxPages), 1);
         if ($this->pageNo > 1) {
             $this->languageItemList->sqlOffset = ($this->pageNo - 1) * 100;
         }
     }
     $this->languageItemList->readObjects();
 }
コード例 #2
0
 /**
  * Updates the language items of a language category.
  * 
  * @param	array						$items
  * @param	\wcf\data\language\category\LanguageCategory	$category
  * @param	integer						$packageID
  * @param	array						$useCustom
  */
 public function updateItems(array $items, LanguageCategory $category, $packageID = PACKAGE_ID, array $useCustom = array())
 {
     if (empty($items)) {
         return;
     }
     // find existing language items
     $languageItemList = new LanguageItemList();
     $languageItemList->getConditionBuilder()->add("language_item.languageItem IN (?)", array(array_keys($items)));
     $languageItemList->getConditionBuilder()->add("languageID = ?", array($this->languageID));
     $languageItemList->readObjects();
     foreach ($languageItemList->getObjects() as $languageItem) {
         $languageItemEditor = new LanguageItemEditor($languageItem);
         $languageItemEditor->update(array('languageCustomItemValue' => $items[$languageItem->languageItem], 'languageUseCustomValue' => isset($useCustom[$languageItem->languageItem]) ? 1 : 0));
         // remove updated items, leaving items to be created within
         unset($items[$languageItem->languageItem]);
     }
     // create remaining items
     if (!empty($items)) {
         // bypass LanguageItemEditor::create() for performance reasons
         $sql = "INSERT INTO\twcf" . WCF_N . "_language_item\n\t\t\t\t(languageID, languageItem, languageItemValue, languageItemOriginIsSystem, languageCategoryID, packageID)\n\t\t\t\tVALUES\t\t(?, ?, ?, ?, ?, ?)";
         $statement = WCF::getDB()->prepareStatement($sql);
         foreach ($items as $itemName => $itemValue) {
             $statement->execute(array($this->languageID, $itemName, $itemValue, 0, $category->languageCategoryID, $packageID));
         }
     }
     // update the relevant language files
     self::deleteLanguageFiles($this->languageID, $category->languageCategory, $packageID);
     // delete relevant template compilations
     $this->deleteCompiledTemplates();
 }