. * * @category Plugin * @package StatusNet * @author Brion Vibber * @copyright 2009 Control Yourself, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://laconi.ca/ */ if (!defined('STATUSNET')) { exit(1); } // Set defaults if not already set in the config array... global $config; $sphinxDefaults = array('enabled' => true, 'server' => 'localhost', 'port' => 3312); foreach($sphinxDefaults as $key => $val) { if (!isset($config['sphinx'][$key])) { $config['sphinx'][$key] = $val; } } /** * Plugin for Sphinx search backend. * * @category Plugin * @package StatusNet * @author Brion Vibber * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://laconi.ca/ * @link http://twitter.com/ */ class SphinxSearchPlugin extends Plugin { /** * Automatically load any classes used * * @param string $cls the class * @return boolean hook return */ function onAutoload($cls) { switch ($cls) { case 'SphinxSearch': include_once INSTALLDIR . '/plugins/SphinxSearch/' . strtolower($cls) . '.php'; return false; default: return true; } } /** * Create sphinx search engine object for the given table type. * * @param Memcached_DataObject $target * @param string $table * @param out &$search_engine SearchEngine object on output if successful * @ return boolean hook return */ function onGetSearchEngine(Memcached_DataObject $target, $table, &$search_engine) { if (common_config('sphinx', 'enabled')) { if (!class_exists('SphinxClient')) { throw new ServerException('Sphinx PHP extension must be installed.'); } $engine = new SphinxSearch($target, $table); if ($engine->is_connected()) { $search_engine = $engine; return false; } } // Sphinx disabled or disconnected return true; } }