BUGFIX: Reapply decorator statics if it has been removed and re-added. (merged from r100706)

This commit is contained in:
Sam Minnee 2011-09-23 10:03:28 +02:00 committed by Ingo Schommer
parent 8302af1ea8
commit 0601384cda
2 changed files with 14 additions and 0 deletions

View File

@ -596,6 +596,16 @@ abstract class Object {
* @param string $extension Classname of an {@link Extension} subclass, without parameters
*/
public static function remove_extension($class, $extension) {
// unload statics now for DataObject classes
if(ClassInfo::is_subclass_of($class, 'DataObject')) {
if(!preg_match('/^([^(]*)/', $extension, $matches)) {
user_error("Bad extension '$extension'", E_USER_WARNING);
} else {
$extensionClass = $matches[1];
DataObjectDecorator::unload_extra_statics($class, $extensionClass);
}
}
if(self::has_extension($class, $extension)) {
self::set_static(
$class,

View File

@ -89,6 +89,10 @@ abstract class DataExtension extends Extension {
}
}
public static function unload_extra_statics($class, $extension) {
self::$extra_statics_loaded[$class][$extension] = false;
}
/**
* Edit the given query object to support queries for this extension
*