/** * @see \wcf\system\importer\IImporter::import() */ public function import($oldID, array $data, array $additionalData = array()) { $data['packageID'] = 1; // set temporary option name $data['optionName'] = StringUtil::getRandomID(); if ($data['optionType'] == 'boolean' || $data['optionType'] == 'integer') { if (isset($data['defaultValue'])) { $data['defaultValue'] = intval($data['defaultValue']); } } // create category $this->createCategory($data['categoryName']); // save option $action = new UserOptionAction(array(), 'create', array('data' => $data)); $returnValues = $action->executeAction(); $userOption = $returnValues['returnValues']; // update generic option name $editor = new UserOptionEditor($userOption); $editor->update(array('optionName' => 'option' . $userOption->optionID)); // save name $sql = "INSERT IGNORE INTO\twcf" . WCF_N . "_language_item\n\t\t\t\t\t\t(languageID, languageItem, languageItemValue, languageItemOriginIsSystem, languageCategoryID, packageID)\n\t\t\tVALUES\t\t\t(?, ?, ?, ?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array(LanguageFactory::getInstance()->getDefaultLanguageID(), 'wcf.user.option.option' . $userOption->optionID, $additionalData['name'], 0, $this->languageCategoryID, 1)); ImportHandler::getInstance()->saveNewID('com.woltlab.wcf.user.option', $oldID, $userOption->optionID); return $userOption->optionID; }
/** * @see \wcf\form\IForm::save() */ public function save() { parent::save(); $this->objectAction = new UserOptionAction(array(), 'create', array('data' => array_merge($this->additionalFields, array('optionName' => StringUtil::getRandomID(), 'categoryName' => $this->categoryName, 'optionType' => $this->optionType, 'defaultValue' => $this->defaultValue, 'showOrder' => $this->showOrder, 'outputClass' => $this->outputClass, 'validationPattern' => $this->validationPattern, 'selectOptions' => $this->selectOptions, 'required' => $this->required, 'askDuringRegistration' => $this->askDuringRegistration, 'searchable' => $this->searchable, 'editable' => $this->editable, 'visible' => $this->visible, 'packageID' => 1, 'additionalData' => $this->optionType == 'select' ? serialize(array('allowEmptyValue' => true)) : '')))); $this->objectAction->executeAction(); $returnValues = $this->objectAction->getReturnValues(); $userOption = $returnValues['returnValues']; // save language vars I18nHandler::getInstance()->save('optionName', 'wcf.user.option.option' . $userOption->optionID, 'wcf.user.option'); I18nHandler::getInstance()->save('optionDescription', 'wcf.user.option.option' . $userOption->optionID . '.description', 'wcf.user.option'); $editor = new UserOptionEditor($userOption); $editor->update(array('optionName' => 'option' . $userOption->optionID)); $this->saved(); // reset values $this->optionName = $this->optionDescription = $this->categoryName = $this->optionType = $this->defaultValue = $this->validationPattern = $this->selectOptions = $this->outputClass = ''; $this->optionType = 'text'; $this->required = $this->searchable = $this->showOrder = $this->askDuringRegistration = 0; $this->editable = 3; $this->visible = 15; I18nHandler::getInstance()->reset(); // show success WCF::getTPL()->assign('success', true); }
/** * @see wcf\system\package\plugin\AbstractOptionPackageInstallationPlugin::saveOption() */ protected function saveOption($option, $categoryName, $existingOptionID = 0) { // default values $optionName = $optionType = $defaultValue = $validationPattern = $outputClass = $selectOptions = $enableOptions = $permissions = $options = ''; $required = $editable = $visible = $searchable = $disabled = $askDuringRegistration = 0; $showOrder = null; // get values if (isset($option['name'])) { $optionName = $option['name']; } if (isset($option['optiontype'])) { $optionType = $option['optiontype']; } if (isset($option['defaultvalue'])) { $defaultValue = $option['defaultvalue']; } if (isset($option['validationpattern'])) { $validationPattern = $option['validationpattern']; } if (isset($option['required'])) { $required = intval($option['required']); } if (isset($option['askduringregistration'])) { $askDuringRegistration = intval($option['askduringregistration']); } if (isset($option['editable'])) { $editable = intval($option['editable']); } if (isset($option['visible'])) { $visible = intval($option['visible']); } if (isset($option['searchable'])) { $searchable = intval($option['searchable']); } if (isset($option['showorder'])) { $showOrder = intval($option['showorder']); } if (isset($option['outputclass'])) { $outputClass = $option['outputclass']; } if (isset($option['selectoptions'])) { $selectOptions = $option['selectoptions']; } if (isset($option['enableoptions'])) { $enableOptions = $option['enableoptions']; } if (isset($option['disabled'])) { $disabled = intval($option['disabled']); } $showOrder = $this->getShowOrder($showOrder, $categoryName, 'categoryName'); if (isset($option['permissions'])) { $permissions = $option['permissions']; } if (isset($option['options'])) { $options = $option['options']; } // check if optionType exists $className = 'wcf\\system\\option\\' . StringUtil::firstCharToUpperCase($optionType) . 'OptionType'; if (!class_exists($className)) { throw new SystemException("unable to find class '" . $className . "'"); } // collect additional tags and their values $additionalData = array(); foreach ($option as $tag => $value) { if (!in_array($tag, self::$reservedTags)) { $additionalData[$tag] = $value; } } // get optionID if it was installed by this package already $sql = "SELECT\t*\n\t\t\tFROM \twcf" . WCF_N . "_" . $this->tableName . "\n\t\t\tWHERE \toptionName = ?\n\t\t\tAND\tpackageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($optionName, $this->installation->getPackageID())); $result = $statement->fetchArray(); // build data array $data = array('categoryName' => $categoryName, 'optionType' => $optionType, 'defaultValue' => $defaultValue, 'validationPattern' => $validationPattern, 'selectOptions' => $selectOptions, 'enableOptions' => $enableOptions, 'required' => $required, 'askDuringRegistration' => $askDuringRegistration, 'editable' => $editable, 'visible' => $visible, 'outputClass' => $outputClass, 'searchable' => $searchable, 'showOrder' => $showOrder, 'disabled' => $disabled, 'permissions' => $permissions, 'options' => $options, 'additionalData' => serialize($additionalData)); // update option if (!empty($result['optionID']) && $this->installation->getAction() == 'update') { $userOption = new UserOption(null, $result); $userOptionEditor = new UserOptionEditor($userOption); $userOptionEditor->update($data); } else { // append option name $data['optionName'] = $optionName; $data['packageID'] = $this->installation->getPackageID(); UserOptionEditor::create($data); } }
/** * @see wcf\system\package\plugin\AbstractOptionPackageInstallationPlugin::saveOption() */ protected function saveOption($option, $categoryName, $existingOptionID = 0) { // default values $optionName = $optionType = $validationPattern = $outputClass = $selectOptions = $enableOptions = $permissions = $options = ''; $required = $editable = $visible = $searchable = $isDisabled = $askDuringRegistration = 0; $defaultValue = $showOrder = null; // get values if (isset($option['name'])) $optionName = $option['name']; if (isset($option['optiontype'])) $optionType = $option['optiontype']; if (isset($option['defaultvalue'])) $defaultValue = $option['defaultvalue']; if (isset($option['validationpattern'])) $validationPattern = $option['validationpattern']; if (isset($option['required'])) $required = intval($option['required']); if (isset($option['askduringregistration'])) $askDuringRegistration = intval($option['askduringregistration']); if (isset($option['editable'])) $editable = intval($option['editable']); if (isset($option['visible'])) $visible = intval($option['visible']); if (isset($option['searchable'])) $searchable = intval($option['searchable']); if (isset($option['showorder'])) $showOrder = intval($option['showorder']); if (isset($option['outputclass'])) $outputClass = $option['outputclass']; if (isset($option['selectoptions'])) $selectOptions = $option['selectoptions']; if (isset($option['enableoptions'])) $enableOptions = $option['enableoptions']; if (isset($option['isdisabled'])) $isDisabled = intval($option['isdisabled']); $showOrder = $this->getShowOrder($showOrder, $categoryName, 'categoryName'); if (isset($option['permissions'])) $permissions = $option['permissions']; if (isset($option['options'])) $options = $option['options']; // collect additional tags and their values $additionalData = array(); foreach ($option as $tag => $value) { if (!in_array($tag, self::$reservedTags)) $additionalData[$tag] = $value; } // get optionID if it was installed by this package already $sql = "SELECT * FROM wcf".WCF_N."_".$this->tableName." WHERE optionName = ? AND packageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array( $optionName, $this->installation->getPackageID() )); $result = $statement->fetchArray(); // build data array $data = array( 'categoryName' => $categoryName, 'optionType' => $optionType, 'defaultValue' => $defaultValue, 'validationPattern' => $validationPattern, 'selectOptions' => $selectOptions, 'enableOptions' => $enableOptions, 'required' => $required, 'askDuringRegistration' => $askDuringRegistration, 'editable' => $editable, 'visible' => $visible, 'outputClass' => $outputClass, 'searchable' => $searchable, 'showOrder' => $showOrder, 'isDisabled' => $isDisabled, 'permissions' => $permissions, 'options' => $options, 'additionalData' => serialize($additionalData) ); // update option if (!empty($result['optionID']) && $this->installation->getAction() == 'update') { $userOption = new UserOption(null, $result); $userOptionEditor = new UserOptionEditor($userOption); $userOptionEditor->update($data); } // insert new option else { // append option name $data['optionName'] = $optionName; $data['packageID'] = $this->installation->getPackageID(); UserOptionEditor::create($data); } }