. * * @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 { const PLUGIN_VERSION = '2.0.0'; /** * 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; } return parent::onAutoload($cls); } /** * 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')) { // TRANS: Server exception. throw new ServerException(_m('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; } /** * Provide plugin version information. * * This data is used when showing the version page. * * @param array &$versions array of version data arrays; see EVENTS.txt * * @return boolean hook value */ public function onPluginVersion(array &$versions): bool { $url = GNUSOCIAL_ENGINE_REPO_URL . 'tree/master/plugins/SphinxSearch'; $versions[] = array('name' => 'SphinxSearch', 'version' => self::PLUGIN_VERSION, 'author' => 'Brion Vibber', 'homepage' => $url, 'rawdescription' => // TRANS: Plugin description. _m('Plugin for Sphinx search backend.')); return true; } }