/** * @see wcf\system\package\plugin\AbstractOptionPackageInstallationPlugin::saveOption() */ protected function saveOption($option, $categoryName, $existingOptionID = 0) { // default values $optionName = $optionType = $defaultValue = $adminDefaultValue = $validationPattern = $enableOptions = $permissions = $options = ''; $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['admindefaultvalue'])) { $adminDefaultValue = $option['admindefaultvalue']; } if (isset($option['validationpattern'])) { $validationPattern = $option['validationpattern']; } if (!empty($option['showorder'])) { $showOrder = intval($option['showorder']); } $showOrder = $this->getShowOrder($showOrder, $categoryName, 'categoryName'); if (isset($option['enableoptions'])) { $enableOptions = $option['enableoptions']; } if (isset($option['permissions'])) { $permissions = $option['permissions']; } if (isset($option['options'])) { $options = $option['options']; } // check if optionType exists $className = 'wcf\\system\\option\\user\\group\\' . StringUtil::firstCharToUpperCase($optionType) . 'UserGroupOptionType'; 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; } } // check if the otion exist already and was installed by this package $sql = "SELECT\toptionID\n\t\t\tFROM \twcf" . WCF_N . "_user_group_option\n\t\t\tWHERE \toptionName = ?\n\t\t\tAND\tpackageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($optionName, $this->installation->getPackageID())); $row = $statement->fetchArray(); $data = array('categoryName' => $categoryName, 'optionType' => $optionType, 'defaultValue' => $defaultValue, 'adminDefaultValue' => $adminDefaultValue, 'validationPattern' => $validationPattern, 'showOrder' => $showOrder, 'enableOptions' => $enableOptions, 'permissions' => $permissions, 'options' => $options, 'additionalData' => serialize($additionalData)); if (!empty($row['optionID'])) { $groupOption = new UserGroupOption(null, $row); $groupOptionEditor = new UserGroupOptionEditor($groupOption); $groupOptionEditor->update($data); } else { // add new option $data['packageID'] = $this->installation->getPackageID(); $data['optionName'] = $optionName; $groupOptionEditor = UserGroupOptionEditor::create($data); $optionID = $groupOptionEditor->optionID; // get default group ("everyone") $sql = "SELECT\tgroupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_group\n\t\t\t\tWHERE\tgroupType = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array(UserGroup::EVERYONE)); $row = $statement->fetchArray(); // save default value $sql = "INSERT INTO\twcf" . WCF_N . "_user_group_option_value\n\t\t\t\t\t\t(groupID, optionID, optionValue)\n\t\t\t\tVALUES\t\t(?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($row['groupID'], $optionID, $defaultValue)); if ($adminDefaultValue && $defaultValue != $adminDefaultValue) { $sql = "SELECT\tgroupID\n\t\t\t\t\tFROM\twcf" . WCF_N . "_user_group_option_value\n\t\t\t\t\tWHERE\toptionID = (\n\t\t\t\t\t\t\tSELECT\toptionID\n\t\t\t\t\t\t\tFROM\twcf" . WCF_N . "_user_group_option\n\t\t\t\t\t\t\tWHERE\toptionName = ?\n\t\t\t\t\t\t)\n\t\t\t\t\t\tAND optionValue = '1'"; $statement2 = WCF::getDB()->prepareStatement($sql); $statement2->execute(array('admin.general.canUseAcp')); $acpGroups = array(); while ($row = $statement2->fetchArray()) { $acpGroups[] = $row['groupID']; } $statement2->execute(array('admin.user.canEditGroup')); while ($row = $statement2->fetchArray()) { if (!in_array($row['groupID'], $acpGroups)) { continue; } $statement->execute(array($row['groupID'], $optionID, $adminDefaultValue)); } } } }
/** * @see wcf\system\package\plugin\AbstractOptionPackageInstallationPlugin::saveOption() */ protected function saveOption($option, $categoryName, $existingOptionID = 0) { // default values $optionName = $optionType = $defaultValue = $adminDefaultValue = $validationPattern = $enableOptions = $permissions = $options = ''; $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['admindefaultvalue'])) $adminDefaultValue = $option['admindefaultvalue']; if (isset($option['validationpattern'])) $validationPattern = $option['validationpattern']; if (!empty($option['showorder'])) $showOrder = intval($option['showorder']); $showOrder = $this->getShowOrder($showOrder, $categoryName, 'categoryName'); if (isset($option['enableoptions'])) $enableOptions = $option['enableoptions']; 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; } // check if the otion exist already and was installed by this package $sql = "SELECT optionID FROM wcf".WCF_N."_user_group_option WHERE optionName = ? AND packageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array( $optionName, $this->installation->getPackageID() )); $row = $statement->fetchArray(); $data = array( 'categoryName' => $categoryName, 'optionType' => $optionType, 'defaultValue' => $defaultValue, 'adminDefaultValue' => $adminDefaultValue, 'validationPattern' => $validationPattern, 'showOrder' => $showOrder, 'enableOptions' => $enableOptions, 'permissions' => $permissions, 'options' => $options, 'additionalData' => serialize($additionalData) ); if (!empty($row['optionID'])) { $groupOption = new UserGroupOption(null, $row); $groupOptionEditor = new UserGroupOptionEditor($groupOption); $groupOptionEditor->update($data); } else { // add new option $data['packageID'] = $this->installation->getPackageID(); $data['optionName'] = $optionName; $groupOptionEditor = UserGroupOptionEditor::create($data); $optionID = $groupOptionEditor->optionID; // save default value $sql = "INSERT INTO wcf".WCF_N."_user_group_option_value (groupID, optionID, optionValue) VALUES (?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array( $this->getEveryoneGroupID(), $optionID, $defaultValue )); if ($adminDefaultValue && $defaultValue != $adminDefaultValue) { $adminGroupIDs = self::getAdminGroupIDs(); WCF::getDB()->beginTransaction(); foreach ($adminGroupIDs as $groupID) { $statement->execute(array( $groupID, $optionID, $adminDefaultValue )); } WCF::getDB()->commitTransaction(); } } }
/** * @see \wcf\system\package\plugin\AbstractOptionPackageInstallationPlugin::saveOption() */ protected function saveOption($option, $categoryName, $existingOptionID = 0) { // default values $optionName = $optionType = $defaultValue = $adminDefaultValue = $modDefaultValue = $userDefaultValue = $validationPattern = $enableOptions = $permissions = $options = ''; $usersOnly = 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['admindefaultvalue'])) { $adminDefaultValue = $option['admindefaultvalue']; } if (isset($option['moddefaultvalue'])) { $modDefaultValue = $option['moddefaultvalue']; } if (isset($option['userdefaultvalue'])) { $userDefaultValue = $option['userdefaultvalue']; } if (isset($option['validationpattern'])) { $validationPattern = $option['validationpattern']; } if (!empty($option['showorder'])) { $showOrder = intval($option['showorder']); } $showOrder = $this->getShowOrder($showOrder, $categoryName, 'categoryName'); if (isset($option['enableoptions'])) { $enableOptions = $option['enableoptions']; } if (isset($option['permissions'])) { $permissions = $option['permissions']; } if (isset($option['options'])) { $options = $option['options']; } if (isset($option['usersonly'])) { $usersOnly = $option['usersonly']; } // collect additional tags and their values $additionalData = array(); foreach ($option as $tag => $value) { if (!in_array($tag, self::$reservedTags)) { $additionalData[$tag] = $value; } } // check if the otion exist already and was installed by this package $sql = "SELECT\toptionID\n\t\t\tFROM\twcf" . WCF_N . "_user_group_option\n\t\t\tWHERE\toptionName = ?\n\t\t\tAND\tpackageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($optionName, $this->installation->getPackageID())); $row = $statement->fetchArray(); $data = array('categoryName' => $categoryName, 'optionType' => $optionType, 'defaultValue' => isset($option['userdefaultvalue']) ? $userDefaultValue : $defaultValue, 'validationPattern' => $validationPattern, 'showOrder' => $showOrder, 'enableOptions' => $enableOptions, 'permissions' => $permissions, 'options' => $options, 'usersOnly' => $usersOnly, 'additionalData' => serialize($additionalData)); if (!empty($row['optionID'])) { $groupOption = new UserGroupOption(null, $row); $groupOptionEditor = new UserGroupOptionEditor($groupOption); $groupOptionEditor->update($data); } else { // add new option $data['packageID'] = $this->installation->getPackageID(); $data['optionName'] = $optionName; $groupOptionEditor = UserGroupOptionEditor::create($data); $optionID = $groupOptionEditor->optionID; $this->getGroupIDs(); $values = array(); foreach ($this->groupIDs['all'] as $groupID) { $values[$groupID] = $defaultValue; } if (isset($option['userdefaultvalue'])) { foreach ($this->groupIDs['registered'] as $groupID) { $values[$groupID] = $userDefaultValue; } } if (isset($option['moddefaultvalue'])) { foreach ($this->groupIDs['mod'] as $groupID) { $values[$groupID] = $modDefaultValue; } } if (isset($option['admindefaultvalue'])) { foreach ($this->groupIDs['admin'] as $groupID) { $values[$groupID] = $adminDefaultValue; } } // save values $sql = "INSERT INTO\twcf" . WCF_N . "_user_group_option_value\n\t\t\t\t\t\t(groupID, optionID, optionValue)\n\t\t\t\tVALUES\t\t(?, ?, ?)"; $statement = WCF::getDB()->prepareStatement($sql); WCF::getDB()->beginTransaction(); foreach ($values as $groupID => $value) { $statement->execute(array($groupID, $optionID, $value)); } WCF::getDB()->commitTransaction(); } }