/** * Deletes all conditions of the objects with the given ids. * * @param string $definitionName * @param array<integer> $objectIDs */ public function deleteConditions($definitionName, array $objectIDs) { if (empty($objectIDs)) { return; } $definition = ObjectTypeCache::getInstance()->getDefinitionByName($definitionName); if ($definition === null) { throw new SystemException("Unknown object type definition with name '" . $definitionName . "'"); } $objectTypes = ObjectTypeCache::getInstance()->getObjectTypes($definitionName); $objectTypeIDs = array(); foreach ($objectTypes as $objectType) { $objectTypeIDs[] = $objectType->objectTypeID; } if (empty($objectTypeIDs)) { return; } $conditionList = new ConditionList(); $conditionList->getConditionBuilder()->add('objectTypeID IN (?)', array($objectTypeIDs)); $conditionList->getConditionBuilder()->add('objectID IN (?)', array($objectIDs)); $conditionList->readObjects(); if (count($conditionList)) { $conditionAction = new ConditionAction($conditionList->getObjects(), 'delete'); $conditionAction->executeAction(); } }
/** * @see \wcf\system\cache\builder\AbstractCacheBuilder::rebuild() */ public function rebuild(array $parameters) { if (!isset($parameters['definitionID'])) { throw new SystemException("Missing 'definitionID' parameter"); } $definition = ObjectTypeCache::getInstance()->getDefinition($parameters['definitionID']); if ($definition === null) { throw new SystemException("Unknown object type definition with id '" . $parameters['definitionID'] . "'"); } $objectTypes = ObjectTypeCache::getInstance()->getObjectTypes($definition->definitionName); if (empty($objectTypes)) { return array(); } $objectTypeIDs = array(); foreach ($objectTypes as $objectType) { $objectTypeIDs[] = $objectType->objectTypeID; } $conditionList = new ConditionList(); $conditionList->getConditionBuilder()->add('condition_table.objectTypeID IN (?)', array($objectTypeIDs)); $conditionList->readObjects(); $groupedConditions = array(); foreach ($conditionList as $condition) { if (!isset($groupedConditions[$condition->objectID])) { $groupedConditions[$condition->objectID] = array(); } $groupedConditions[$condition->objectID][$condition->conditionID] = $condition; } return $groupedConditions; }