mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
ENHANCEMENT Extension arguments are now passed through to add_to_class()
static function on Extension classes. BUGFIX FulltextSearchable didn't pass through arguments, use now available $args parameter with FulltextSearchable::add_to_class()
This commit is contained in:
parent
d63efeb4a5
commit
f63497d6f9
@ -52,7 +52,7 @@ abstract class Extension {
|
||||
* @static
|
||||
* @param $class
|
||||
*/
|
||||
static function add_to_class($class, $extensionClass) {
|
||||
static function add_to_class($class, $extensionClass, $args) {
|
||||
Config::add_static_source($class, $extensionClass);
|
||||
}
|
||||
|
||||
|
@ -547,12 +547,12 @@ abstract class Object {
|
||||
if($extensions = Config::inst()->get($class, 'extensions', Config::UNINHERITED)) {
|
||||
foreach($extensions as $extension) {
|
||||
// Get the extension class for this extension
|
||||
$extensionClass = Extension::get_classname_without_arguments($extension);
|
||||
list($extensionClass, $extensionArgs) = self::parse_class_spec($extension);
|
||||
|
||||
// If we haven't told that extension it's attached to this class yet, do that now
|
||||
if (!isset(self::$_added_extensions[$extensionClass][$class])) {
|
||||
// First call the add_to_class method - this will inherit down & is defined on Extension, so if not defined, no worries
|
||||
call_user_func(array($extensionClass, 'add_to_class'), $class, $extensionClass);
|
||||
call_user_func(array($extensionClass, 'add_to_class'), $class, $extensionClass, $extensionArgs);
|
||||
|
||||
// Then register it as having been told about us
|
||||
if (!isset(self::$_added_extensions[$extensionClass])) self::$_added_extensions[$extensionClass] = array($class => true);
|
||||
|
@ -32,7 +32,7 @@ abstract class DataExtension extends Extension {
|
||||
);
|
||||
|
||||
|
||||
static function add_to_class($class, $extensionClass) {
|
||||
static function add_to_class($class, $extensionClass, $args) {
|
||||
if(method_exists($class, 'extraDBFields')) {
|
||||
$extraStaticsMethod = 'extraDBFields';
|
||||
} else {
|
||||
@ -57,7 +57,7 @@ abstract class DataExtension extends Extension {
|
||||
DataObject::$cache_has_own_table_field[$class] = null;
|
||||
}
|
||||
|
||||
parent::add_to_class($class, $extensionClass);
|
||||
parent::add_to_class($class, $extensionClass, $args);
|
||||
}
|
||||
|
||||
public static function unload_extra_statics($class, $extension) {
|
||||
|
@ -25,9 +25,9 @@ class Hierarchy extends DataExtension {
|
||||
function augmentWrite(&$manipulation) {
|
||||
}
|
||||
|
||||
static function add_to_class($class, $extensionClass) {
|
||||
static function add_to_class($class, $extensionClass, $args) {
|
||||
Config::inst()->update($class, 'has_one', array('Parent' => $class));
|
||||
parent::add_to_class($class, $extensionClass);
|
||||
parent::add_to_class($class, $extensionClass, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,9 +107,9 @@ class Versioned extends DataExtension {
|
||||
'Version' => 'Int'
|
||||
);
|
||||
|
||||
static function add_to_class($class, $extensionClass) {
|
||||
static function add_to_class($class, $extensionClass, $args) {
|
||||
Config::inst()->update($class, 'has_many', array('Versions' => $class));
|
||||
parent::add_to_class($class, $extensionClass);
|
||||
parent::add_to_class($class, $extensionClass, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -77,26 +77,14 @@ class FulltextSearchable extends DataExtension {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $class
|
||||
* @param string $extension
|
||||
* @return array
|
||||
*/
|
||||
function extraStatics($class=null, $extension=null) {
|
||||
if($extension && preg_match('/\([\'"](.*)[\'"]\)/', $extension, $matches)) {
|
||||
$searchFields = $matches[1];
|
||||
static function add_to_class($class, $extensionClass, $args) {
|
||||
Config::inst()->update($class, 'indexes', array('SearchFields' => array(
|
||||
'type' => 'fulltext',
|
||||
'name' => 'SearchFields',
|
||||
'value' => $args[0]
|
||||
)));
|
||||
|
||||
return array(
|
||||
'indexes' => array(
|
||||
"SearchFields" => Array(
|
||||
'type'=>'fulltext',
|
||||
'name'=>'SearchFields',
|
||||
'value'=> $searchFields
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
parent::add_to_class($class, $extensionClass, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user