/**
  * Enable the default configuration of MySQL full-text searching on the given data classes.
  * It can be used to limit the searched classes, but not to add your own classes.
  * For this purpose, please use {@link Object::add_extension()} directly:
  * <code>
  * Object::add_extension('MyObject', "FulltextSearchable('MySearchableField,'MyOtherField')");
  * </code>
  * 
  * Caution: This is a wrapper method that should only be used in _config.php,
  * and only be called once in your code.
  * 
  * @param Array $searchableClasses The extension will be applied to all DataObject subclasses
  *  listed here. Default: {@link SiteTree} and {@link File}.
  */
 static function enable($searchableClasses = array('SiteTree', 'File'))
 {
     $defaultColumns = array('SiteTree' => 'Title,MenuTitle,Content,MetaTitle,MetaDescription,MetaKeywords', 'File' => 'Filename,Title,Content');
     if (!is_array($searchableClasses)) {
         $searchableClasses = array($searchableClasses);
     }
     foreach ($searchableClasses as $class) {
         if (isset($defaultColumns[$class])) {
             Object::add_extension($class, "FulltextSearchable('{$defaultColumns[$class]}')");
         } else {
             throw new Exception("FulltextSearchable::enable() I don't know the default search columns for class '{$class}'");
         }
     }
     self::$searchable_classes = $searchableClasses;
     Object::add_extension("ContentController", "ContentControllerSearchExtension");
 }
 /**
  * Enable the default configuration of MySQL full-text searching on the given data classes.
  * It can be used to limit the searched classes, but not to add your own classes.
  * For this purpose, please use {@link Object::add_extension()} directly:
  * <code>
  * MyObject::add_extension("FulltextSearchable('MySearchableField,'MyOtherField')");
  * </code>
  *
  * Caution: This is a wrapper method that should only be used in _config.php,
  * and only be called once in your code.
  *
  * @param Array $searchableClasses The extension will be applied to all DataObject subclasses
  *  listed here. Default: {@link SiteTree} and {@link File}.
  */
 public static function enable($searchableClasses = array('SiteTree', 'File'))
 {
     $defaultColumns = array('SiteTree' => '"Title","MenuTitle","Content","MetaDescription"', 'File' => '"Name","Title"');
     if (!is_array($searchableClasses)) {
         $searchableClasses = array($searchableClasses);
     }
     foreach ($searchableClasses as $class) {
         if (!class_exists($class)) {
             continue;
         }
         if (isset($defaultColumns[$class])) {
             Config::inst()->update($class, 'create_table_options', array(MySQLSchemaManager::ID => 'ENGINE=MyISAM'));
             $class::add_extension("FulltextSearchable('{$defaultColumns[$class]}')");
         } else {
             throw new Exception("FulltextSearchable::enable() I don't know the default search columns for class '{$class}'");
         }
     }
     self::$searchable_classes = $searchableClasses;
     if (class_exists("ContentController")) {
         ContentController::add_extension("ContentControllerSearchExtension");
     }
 }
Example #3
0
 /**
  * Enable the default configuration of MySQL full-text searching on the given data classes.
  * It can be used to limit the searched classes, but not to add your own classes.
  * For this purpose, please use {@link Object::add_extension()} directly:
  * <code>
  * Object::add_extension('MyObject', "FulltextSearchable('MySearchableField,'MyOtherField')");
  * </code>
  * 
  * Caution: This is a wrapper method that should only be used in _config.php,
  * and only be called once in your code.
  * 
  * @param Array $searchableClasses The extension will be applied to all DataObject subclasses
  *  listed here. Default: {@link SiteTree} and {@link File}.
  */
 static function enable($searchableClasses = array('SiteTree', 'File'))
 {
     $defaultColumns = array('SiteTree' => 'Title,MenuTitle,Content,MetaTitle,MetaDescription,MetaKeywords', 'File' => 'Filename,Title,Content');
     if (!is_array($searchableClasses)) {
         $searchableClasses = array($searchableClasses);
     }
     foreach ($searchableClasses as $class) {
         if (!class_exists($class)) {
             continue;
         }
         if (isset($defaultColumns[$class])) {
             Config::inst()->update($class, 'create_table_options', array('MySQLDatabase' => 'ENGINE=MyISAM'));
             Object::add_extension($class, "FulltextSearchable('{$defaultColumns[$class]}')");
         } else {
             throw new Exception("FulltextSearchable::enable() I don't know the default search columns for class '{$class}'");
         }
     }
     self::$searchable_classes = $searchableClasses;
     if (class_exists("ContentController")) {
         Object::add_extension("ContentController", "ContentControllerSearchExtension");
     }
 }