/**
  * getInstance()
  *
  * Connect to the backend engine and store for later use
  *
  * @static
  * @return SugarSearchEngineInterface
  */
 public static function getInstance($name = '', $config = array(), $useDefaultWhenFTSDown = false)
 {
     require_once 'include/SugarSearchEngine/SugarSearchEngineAbstractBase.php';
     if ($useDefaultWhenFTSDown && SugarSearchEngineAbstractBase::isSearchEngineDown()) {
         $name = 'SugarSearchEngine';
     }
     if (!isset(self::$_instance[$name])) {
         self::$_instance[$name] = self::setupEngine($name, $config);
     }
     return self::$_instance[$name];
 }
 /**
  * Check FTS server status and update cache file and notification.
  *
  * @return boolean
  */
 protected function updateFTSServerStatus()
 {
     $GLOBALS['log']->debug('Going to check and update FTS Server status.');
     // check FTS server status
     $result = $this->SSEngine->getServerStatus();
     if ($result['valid']) {
         $GLOBALS['log']->debug('FTS Server is OK.');
         // server is ok
         if (SugarSearchEngineAbstractBase::isSearchEngineDown()) {
             $GLOBALS['log']->debug('Restoring FTS Server status.');
             // mark fts server as up
             SugarSearchEngineAbstractBase::markSearchEngineStatus(false);
             // remove notification
             $cfg = new Configurator();
             $cfg->config['fts_disable_notification'] = false;
             $cfg->handleOverride();
         }
         return true;
     } else {
         $GLOBALS['log']->info('FTS Server is down?');
         // server is down
         if (!SugarSearchEngineAbstractBase::isSearchEngineDown()) {
             $GLOBALS['log']->fatal('Marking FTS Server as down.');
             // fts is not marked as down, so mark it as down
             SugarSearchEngineAbstractBase::markSearchEngineStatus(true);
         }
         return false;
     }
 }