*/
public $definitionInterfaces = [];
+ /**
+ * data for object type definition-specific xml element children
+ * @var array
+ */
+ public $definitionElementChildren = [];
+
/**
* Returns the id of the object type definition with the given name.
*
}
}))
]);
+ $this->definitionElementChildren['com.woltlab.wcf.adLocation'] = [
+ 'page' => '',
+ 'categoryname' => '',
+ 'cssclassname' => ''
+ ];
// com.woltlab.wcf.attachment.objectType
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.attachment.objectType')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.attachment.objectType.private')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.attachment.objectType.private.description')
);
+ $this->definitionElementChildren['com.woltlab.wcf.attachment.objectType'] = ['private' => 0];
// com.woltlab.wcf.bulkProcessing.user.action
$this->addBulkProcessingActionFields($form, 'com.woltlab.wcf.bulkProcessing.user.action');
// com.woltlab.wcf.bulkProcessing.user.condition
$bulkProcessingUserConditionContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.bulkProcessing.user.condition');
- $this->addConditionFields($bulkProcessingUserConditionContainer, false, true);
+ $this->addConditionFields($bulkProcessingUserConditionContainer, 'com.woltlab.wcf.bulkProcessing.user.condition', false, true);
// com.woltlab.wcf.category
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.category')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.category.defaultPermission')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.category.defaultPermission.description')
);
+ $this->definitionElementChildren['com.woltlab.wcf.category'] = ['defaultpermission' => 0];
// com.woltlab.wcf.clipboardItem
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.clipboardItem')
->required()
->parentClass(DatabaseObjectList::class)
);
+ $this->definitionElementChildren['com.woltlab.wcf.clipboardItem'] = ['listclassname'];
// com.woltlab.wcf.condition.ad
$conditionAdContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.condition.ad');
- $this->addConditionFields($conditionAdContainer, true, true);
+ $this->addConditionFields($conditionAdContainer,'com.woltlab.wcf.condition.ad', true, true);
// com.woltlab.wcf.condition.notice
$conditionAdContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.condition.notice');
- $this->addConditionFields($conditionAdContainer);
+ $this->addConditionFields($conditionAdContainer, 'com.woltlab.wcf.condition.notice');
// com.woltlab.wcf.condition.trophy
$conditionAdContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.condition.trophy');
- $this->addConditionFields($conditionAdContainer, false, true);
+ $this->addConditionFields($conditionAdContainer, 'com.woltlab.wcf.condition.trophy', false, true);
// com.woltlab.wcf.condition.userGroupAssignment
$conditionAdContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.condition.userGroupAssignment');
- $this->addConditionFields($conditionAdContainer, false, true);
+ $this->addConditionFields($conditionAdContainer, 'com.woltlab.wcf.condition.userGroupAssignment', false, true);
// com.woltlab.wcf.condition.userSearch
$conditionAdContainer = $this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.condition.userSearch');
- $this->addConditionFields($conditionAdContainer, false, true);
+ $this->addConditionFields($conditionAdContainer, 'com.woltlab.wcf.condition.userSearch',false, true);
// com.woltlab.wcf.message
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.message')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.message.enableToc')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.message.enableToc.description')
]);
+ $this->definitionElementChildren['com.woltlab.wcf.message'] = ['enableToc' => 0];
// com.woltlab.wcf.notification.objectType
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.notification.objectType')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.supportsReactions')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.notification.objectType.supportsReactions.description')
]);
+ $this->definitionElementChildren['com.woltlab.wcf.notification.objectType'] = [
+ 'category' => 0,
+ 'supportsReactions' => 0
+ ];
// com.woltlab.wcf.rebuildData
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.rebuildData')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.rebuildData.niceValue.description')
->nullable()
);
+ $this->definitionElementChildren['com.woltlab.wcf.rebuildData'] = ['nicevalue' => null];
// com.woltlab.wcf.searchableObjectType
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.searchableObjectType')
}
}))
);
+ $this->definitionElementChildren['com.woltlab.wcf.searchableObjectType'] = ['searchindex'];
// com.woltlab.wcf.sitemap.object
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.sitemap.object')
->required()
->minimum(0)
]);
+ $this->definitionElementChildren['com.woltlab.wcf.sitemap.object'] = ['priority', 'changeFreq', 'rebuildTime'];
// com.woltlab.wcf.statDailyHandler
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.statDailyHandler')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.isDefault')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.statDailyHandler.isDefault.description')
]);
+ $this->definitionElementChildren['com.woltlab.wcf.statDailyHandler'] = [
+ 'categoryname' => '',
+ 'default' => 0
+ ];
// com.woltlab.wcf.tagging.taggableObject
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.tagging.taggableObject')
array_keys($this->installation->getPackage()->getAllRequiredPackages())
))
]);
+ $this->definitionElementChildren['com.woltlab.wcf.tagging.taggableObject'] = [
+ 'options' => '',
+ 'permissions' => ''
+ ];
// com.woltlab.wcf.user.activityPointEvent
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.user.activityPointEvent')
->minimum(0)
->required()
);
+ $this->definitionElementChildren['com.woltlab.wcf.user.activityPointEvent'] = ['points'];
// com.woltlab.wcf.user.recentActivityEvent
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.user.recentActivityEvent')
->label('wcf.acp.pip.objectType.com.woltlab.wcf.user.recentActivityEvent.supportsReactions')
->description('wcf.acp.pip.objectType.com.woltlab.wcf.user.recentActivityEvent.supportsReactions.description')
);
+ $this->definitionElementChildren['com.woltlab.wcf.user.recentActivityEvent'] = ['supportsReactions' => 0];
// com.woltlab.wcf.versionTracker.objectType
$this->getObjectTypeDefinitionDataContainer($form, 'com.woltlab.wcf.versionTracker.objectType')
}
})),
]);
+ $this->definitionElementChildren['com.woltlab.wcf.versionTracker.objectType'] = ['tableName', 'tablePrimaryKey'];
}
/**
* @since 3.2
*/
protected function doCreateXmlElement(\DOMDocument $document, IFormDocument $form) {
- $type = $document->createElement($this->tagName);
- foreach ($form->getData()['data'] as $key => $value) {
- if ($key === 'definitionID') {
- $key = 'definitionname';
- $value = ObjectTypeCache::getInstance()->getDefinition($value)->definitionName;
- }
-
- if ($value !== '') {
- if (is_string($value)) {
- $type->appendChild($document->createElement($key, $this->getAutoCdataValue($value)));
- }
- else {
- $type->appendChild($document->createElement($key, (string) $value));
- }
- }
+ $data = $form->getData()['data'];
+ $definitionName = ObjectTypeCache::getInstance()->getDefinition($data['definitionID'])->definitionName;
+
+ $objectType = $document->createElement($this->tagName);
+ $objectType->appendChild($document->createElement('name', $data['name']));
+ $objectType->appendChild($document->createElement('definitionname', $definitionName));
+
+ $this->appendElementChildren(
+ $objectType,
+ ['classname' => ''],
+ $form
+ );
+
+ if (isset($this->definitionElementChildren[$definitionName])) {
+ $this->appendElementChildren(
+ $objectType,
+ $this->definitionElementChildren[$definitionName],
+ $form
+ );
}
- return $type;
+ return $objectType;
}
/**
array_keys($this->installation->getPackage()->getAllRequiredPackages())
))
]);
+ $this->definitionElementChildren[$objectTypeDefinition] = [
+ 'action' => '',
+ 'options' => '',
+ 'permissions' => ''
+ ];
}
/**
* Adds all condition specific fields to the given form container.
*
* @param IFormContainer $dataContainer
+ * @param string $objectTypeDefinition
* @param bool $addConditionObject
* @param bool $addConditionGroup
* @since 3.2
*/
- public function addConditionFields(IFormContainer $dataContainer, $addConditionObject = true, $addConditionGroup = true) {
+ public function addConditionFields(IFormContainer $dataContainer, $objectTypeDefinition, $addConditionObject = true, $addConditionGroup = true) {
$prefix = preg_replace('~Fields$~', '', $dataContainer->getId());
+ $this->definitionElementChildren[$objectTypeDefinition] = [];
+
if ($addConditionObject) {
$dataContainer->appendChild(
TextFormField::create($prefix . 'ConditionObject')
->required()
->addValidator(self::getObjectTypeAlikeValueValidator('wcf.acp.pip.objectType.condition.conditionObject'))
);
+ $this->definitionElementChildren[$objectTypeDefinition][] = 'conditionobject';
}
if ($addConditionGroup) {
}
}))
);
+ $this->definitionElementChildren[$objectTypeDefinition]['conditiongroup'] = '';
}
// classes extending `AbstractIntegerCondition`
->values([UserGroupCondition::class])
)
);
+ $this->definitionElementChildren[$objectTypeDefinition]['includeguests'] = 0;
// `UserIntegerPropertyCondition`
$dataContainer->appendChild(
'wcf' . WCF_N . '_user'
)->required()
);
+ $this->definitionElementChildren[$objectTypeDefinition]['propertyname'] = '';
// `UserTimestampPropertyCondition`
$dataContainer->appendChild(
'wcf' . WCF_N . '_user'
)->required()
);
+ // already added above:
+ // $this->definitionElementChildren[$objectTypeDefinition]['propertyname'] = '';
$parameters = [
'dataContainer' => $dataContainer,
->objectProperty('minvalue')
->label('wcf.acp.pip.objectType.condition.integer.minValue')
->description('wcf.acp.pip.objectType.condition.integer.minValue.description')
+ ->nullable()
->addDependency(
ValueFormFieldDependency::create('className')
->field($className)
->objectProperty('maxvalue')
->label('wcf.acp.pip.objectType.condition.integer.maxValue')
->description('wcf.acp.pip.objectType.condition.integer.maxValue.description')
+ ->nullable()
->addDependency(
ValueFormFieldDependency::create('className')
->field($className)
->values($integerConditions)
)
]);
+ $this->definitionElementChildren[$objectTypeDefinition]['minvalue'] = null;
+ $this->definitionElementChildren[$objectTypeDefinition]['maxvalue'] = null;
}
/**