示例#1
0
 /**
  * Assigns element values to template. Using request data once reading
  * initial database data is explicitly disallowed.
  * 
  * @param	boolean		$useRequestData
  */
 public function assignVariables($useRequestData = true)
 {
     $elementValues = array();
     $elementValuesI18n = array();
     foreach ($this->elementIDs as $elementID) {
         $value = '';
         $i18nValues = array();
         // use POST values instead of querying database
         if ($useRequestData) {
             if ($this->isPlainValue($elementID)) {
                 $value = $this->getValue($elementID);
             } else {
                 if ($this->hasI18nValues($elementID)) {
                     $i18nValues = $this->i18nValues[$elementID];
                     // encoding the entries for javascript
                     foreach ($i18nValues as $languageID => $value) {
                         $i18nValues[$languageID] = StringUtil::encodeJS(StringUtil::unifyNewlines($value));
                     }
                 } else {
                     $i18nValues = array();
                 }
             }
         } else {
             $isI18n = Regex::compile('^' . $this->elementOptions[$elementID]['pattern'] . '$')->match($this->elementOptions[$elementID]['value']);
             if (!$isI18n) {
                 // check if it's a regular language variable
                 $isI18n = Regex::compile('^([a-zA-Z0-9-_]+\\.)+[a-zA-Z0-9-_]+$')->match($this->elementOptions[$elementID]['value']);
             }
             if ($isI18n) {
                 // use i18n values from language items
                 $sql = "SELECT\tlanguageID, languageItemValue\n\t\t\t\t\t\tFROM\twcf" . WCF_N . "_language_item\n\t\t\t\t\t\tWHERE\tlanguageItem = ?";
                 $statement = WCF::getDB()->prepareStatement($sql);
                 $statement->execute(array($this->elementOptions[$elementID]['value']));
                 while ($row = $statement->fetchArray()) {
                     $languageItemValue = StringUtil::unifyNewlines($row['languageItemValue']);
                     $i18nValues[$row['languageID']] = StringUtil::encodeJS($languageItemValue);
                     if ($row['languageID'] == LanguageFactory::getInstance()->getDefaultLanguageID()) {
                         $value = $languageItemValue;
                     }
                 }
                 // item appeared to be a language item but either is not or does not exist
                 if (empty($i18nValues) && empty($value)) {
                     $value = $this->elementOptions[$elementID]['value'];
                 }
             } else {
                 // use data provided by setOptions()
                 $value = $this->elementOptions[$elementID]['value'];
             }
         }
         $elementValues[$elementID] = $value;
         $elementValuesI18n[$elementID] = $i18nValues;
     }
     WCF::getTPL()->assign(array('availableLanguages' => $this->availableLanguages, 'i18nPlainValues' => $elementValues, 'i18nValues' => $elementValuesI18n));
 }
	/**
	 * @see	wcf\system\template\IModifierTemplatePlugin::execute()
	 */
	public function execute($tagArgs, TemplateEngine $tplObj) {
		return StringUtil::encodeJS($tagArgs[0]);
	}