Ejemplo n.º 1
0
 /**
  * @see	\wcf\system\cache\builder\AbstractCacheBuilder::rebuild()
  */
 public function rebuild(array $parameters)
 {
     $data = array('codes' => array(), 'countryCodes' => array(), 'languages' => array(), 'default' => 0, 'categories' => array(), 'categoryIDs' => array(), 'multilingualismEnabled' => false);
     // get languages
     $languageList = new LanguageList();
     $languageList->readObjects();
     $data['languages'] = $languageList->getObjects();
     foreach ($languageList->getObjects() as $language) {
         // default language
         if ($language->isDefault) {
             $data['default'] = $language->languageID;
         }
         // multilingualism
         if ($language->hasContent) {
             $data['multilingualismEnabled'] = true;
         }
         // language code to language id
         $data['codes'][$language->languageCode] = $language->languageID;
         // country code to language id
         $data['countryCode'][$language->languageID] = $language->countryCode;
     }
     DatabaseObject::sort($data['languages'], 'languageName');
     // get language categories
     $languageCategoryList = new LanguageCategoryList();
     $languageCategoryList->readObjects();
     foreach ($languageCategoryList->getObjects() as $languageCategory) {
         $data['categories'][$languageCategory->languageCategory] = $languageCategory;
         $data['categoryIDs'][$languageCategory->languageCategoryID] = $languageCategory->languageCategory;
     }
     return $data;
 }
Ejemplo n.º 2
0
 /**
  * @see	\wcf\data\IEditableObject::create()
  */
 public static function create(array $parameters = array())
 {
     $descriptions = array();
     if (isset($parameters['description']) && is_array($parameters['description'])) {
         if (count($parameters['description']) > 1) {
             $descriptions = $parameters['description'];
             $parameters['description'] = '';
         } else {
             $parameters['description'] = reset($parameters['description']);
         }
     }
     $cronjob = parent::create($parameters);
     // save cronjob description
     if (!empty($descriptions)) {
         // set default value
         if (isset($descriptions[''])) {
             $defaultValue = $descriptions[''];
         } else {
             if (isset($descriptions['en'])) {
                 // fallback to English
                 $defaultValue = $descriptions['en'];
             } else {
                 if (isset($descriptions[WCF::getLanguage()->getFixedLanguageCode()])) {
                     // fallback to the language of the current user
                     $defaultValue = $descriptions[WCF::getLanguage()->getFixedLanguageCode()];
                 } else {
                     // fallback to first description
                     $defaultValue = reset($descriptions);
                 }
             }
         }
         // fetch data directly from database during framework installation
         if (!PACKAGE_ID) {
             $sql = "SELECT\t*\n\t\t\t\t\tFROM\twcf" . WCF_N . "_language_category\n\t\t\t\t\tWHERE\tlanguageCategory = ?";
             $statement = WCF::getDB()->prepareStatement($sql);
             $statement->execute(array('wcf.acp.cronjob'));
             $languageCategory = $statement->fetchObject('wcf\\data\\language\\category\\LanguageCategory');
             $languages = new LanguageList();
             $languages->readObjects();
         } else {
             $languages = LanguageFactory::getInstance()->getLanguages();
             $languageCategory = LanguageFactory::getInstance()->getCategory('wcf.acp.cronjob');
         }
         $sql = "INSERT INTO\twcf" . WCF_N . "_language_item\n\t\t\t\t\t\t(languageID, languageItem, languageItemValue, languageCategoryID, packageID)\n\t\t\t\tVALUES\t\t(?, ?, ?, ?, ?)\n\t\t\t\tON DUPLICATE KEY UPDATE languageItemValue = VALUES(languageItemValue)";
         $statement = WCF::getDB()->prepareStatement($sql);
         foreach ($languages as $language) {
             $value = $defaultValue;
             if (isset($descriptions[$language->languageCode])) {
                 $value = $descriptions[$language->languageCode];
             }
             $statement->execute(array($language->languageID, 'wcf.acp.cronjob.description.cronjob' . $cronjob->cronjobID, $value, $languageCategory->languageCategoryID, $cronjob->packageID));
         }
         // update cronjob
         $cronjobEditor = new CronjobEditor($cronjob);
         $cronjobEditor->update(array('description' => 'wcf.acp.cronjob.description.cronjob' . $cronjob->cronjobID));
     }
     return $cronjob;
 }
Ejemplo n.º 3
0
 /**
  * @see wcf\system\cache\ICacheBuilder::getData()
  */
 public function getData(array $cacheResource)
 {
     $data = array('codes' => array(), 'countryCodes' => array(), 'languages' => array(), 'packages' => array(), 'default' => 0, 'categories' => array());
     // get language to packages
     $sql = "SELECT \t\tpackage.languageID, package.packageID\n\t\t\tFROM\t\twcf" . WCF_N . "_language_to_package package\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_language language\n\t\t\tON\t\t(language.languageID = package.languageID)\n\t\t\tORDER BY\tlanguage.isDefault DESC,\n\t\t\t\t\tlanguage.languageCode ASC";
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute();
     while ($row = $statement->fetchArray()) {
         // package to languages
         if (!isset($data['packages'][$row['packageID']])) {
             $data['packages'][$row['packageID']] = array();
         }
         $data['packages'][$row['packageID']][] = $row['languageID'];
     }
     // get languages
     $languageList = new LanguageList();
     $languageList->sqlLimit = 0;
     $languageList->readObjects();
     $data['languages'] = $languageList->getObjects();
     foreach ($languageList->getObjects() as $language) {
         // default language
         if ($language->isDefault) {
             $data['default'] = $language->languageID;
         }
         // language code to language id
         $data['codes'][$language->languageCode] = $language->languageID;
         // country code to language id
         $data['countryCode'][$language->languageID] = $language->countryCode;
     }
     // get language categories
     $languageCategoryList = new LanguageCategoryList();
     $languageCategoryList->sqlLimit = 0;
     $languageCategoryList->readObjects();
     foreach ($languageCategoryList->getObjects() as $languageCategory) {
         $data['categories'][$languageCategory->languageCategory] = $languageCategory;
     }
     return $data;
 }
	/**
	 * Saves the localized package infos.
	 * 
	 * @todo	license and readme
	 */
	protected function saveLocalizedPackageInfos() {
		$package = new Package($this->queue->packageID);
		
		// localize package information
		$sql = "INSERT INTO	wcf".WCF_N."_language_item
					(languageID, languageItem, languageItemValue, languageCategoryID, packageID)
			VALUES		(?, ?, ?, ?, ?)";
		$statement = WCF::getDB()->prepareStatement($sql);
		
		// get language list
		$languageList = new LanguageList();
		$languageList->readObjects();
		
		// workaround for WCFSetup
		if (!PACKAGE_ID) {
			$sql = "SELECT	*
				FROM	wcf".WCF_N."_language_category
				WHERE	languageCategory = ?";
			$statement2 = WCF::getDB()->prepareStatement($sql);
			$statement2->execute(array('wcf.acp.package'));
			$languageCategory = $statement2->fetchObject('wcf\data\language\category\LanguageCategory');
		}
		else {
			$languageCategory = LanguageFactory::getInstance()->getCategory('wcf.acp.package');
		}
		
		// save package name
		$this->saveLocalizedPackageInfo($statement, $languageList, $languageCategory, $package, 'packageName');
		
		// save package description
		$this->saveLocalizedPackageInfo($statement, $languageList, $languageCategory, $package, 'packageDescription');
		
		// update description and name
		$packageEditor = new PackageEditor($package);
		$packageEditor->update(array(
			'packageDescription' => 'wcf.acp.package.packageDescription.package'.$this->queue->packageID,
			'packageName' => 'wcf.acp.package.packageName.package'.$this->queue->packageID
		));
	}
Ejemplo n.º 5
0
 /**
  * Saves localized style descriptions.
  * 
  * @param	\wcf\data\style\StyleEditor	$styleEditor
  * @param	array<string>			$descriptions
  */
 protected static function saveLocalizedDescriptions(StyleEditor $styleEditor, array $descriptions)
 {
     // localize package information
     $sql = "REPLACE INTO\twcf" . WCF_N . "_language_item\n\t\t\t\t\t(languageID, languageItem, languageItemValue, languageCategoryID, packageID)\n\t\t\tVALUES\t\t(?, ?, ?, ?, ?)";
     $statement = WCF::getDB()->prepareStatement($sql);
     // get language list
     $languageList = new LanguageList();
     $languageList->readObjects();
     // workaround for WCFSetup
     if (!PACKAGE_ID) {
         $sql = "SELECT\t*\n\t\t\t\tFROM\twcf" . WCF_N . "_language_category\n\t\t\t\tWHERE\tlanguageCategory = ?";
         $statement2 = WCF::getDB()->prepareStatement($sql);
         $statement2->execute(array('wcf.style'));
         $languageCategory = $statement2->fetchObject('wcf\\data\\language\\category\\LanguageCategory');
     } else {
         $languageCategory = LanguageFactory::getInstance()->getCategory('wcf.style');
     }
     foreach ($languageList as $language) {
         if (isset($descriptions[$language->languageCode])) {
             $statement->execute(array($language->languageID, 'wcf.style.styleDescription' . $styleEditor->styleID, $descriptions[$language->languageCode], $languageCategory->languageCategoryID, $styleEditor->packageID));
         }
     }
     $styleEditor->update(array('styleDescription' => 'wcf.style.styleDescription' . $styleEditor->styleID));
 }