/** * @param IIndexable $object */ public function saveToMySql(IIndexable $object) { $id = $object->getId(); if (!$id) { KalturaLog::err("Object [" . get_class($object) . "] id [" . $object->getId() . "] could not be saved to MySql, id is empty"); return false; } $searchObject = self::getMySqlSearchObject($object->getObjectIndexName(), $id); $fields = $object->getIndexFieldsMap(); foreach ($fields as $field => $getterName) { $setterName = str_replace('_', '', $field); $getter = "get{$getterName}"; $setter = "set{$setterName}"; if (!method_exists($searchObject, $setter)) { continue; } $value = call_user_func(array($object, $getter)); call_user_func(array($searchObject, $setter), $value); } $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaSearchDataContributor'); $pluginsData = array(); foreach ($pluginInstances as $pluginName => $pluginInstance) { KalturaLog::debug("Loading {$pluginName} search texts"); $pluginData = null; try { $pluginData = $pluginInstance->getSearchData($object); } catch (Exception $e) { KalturaLog::err($e->getMessage()); continue; } if ($pluginData) { KalturaLog::debug("Search data for {$pluginName} [{$pluginData}]"); $pluginsData[] = $pluginData; } } if (count($pluginsData)) { $searchObject->setPluginData(implode(',', $pluginsData)); } $searchObject->save(); }
/** * @param string $sql * @param IIndexable $object * @return bool */ public function execSphinx($sql, IIndexable $object) { KalturaLog::debug($sql); $sphinxConnection = null; $sphinxConnectionId = null; if (kConf::hasParam('exec_sphinx') && kConf::get('exec_sphinx')) { $sphinxConnection = DbManager::getSphinxConnection(false); $sphinxServer = SphinxLogServerPeer::retrieveByLocalServer($sphinxConnection->getHostName()); if ($sphinxServer) { $sphinxConnectionId = $sphinxServer->getId(); } } $sphinxLog = new SphinxLog(); $sphinxLog->setExecutedServerId($sphinxConnectionId); $sphinxLog->setObjectId($object->getId()); $sphinxLog->setObjectType(get_class($object)); $sphinxLog->setEntryId($object->getEntryId()); $sphinxLog->setPartnerId($object->getPartnerId()); $sphinxLog->setSql($sql); $sphinxLog->save(myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_SPHINX_LOG)); if (!$sphinxConnection) { return true; } $sphinxConnection = DbManager::getSphinxConnection(false); $ret = $sphinxConnection->exec($sql); if ($ret) { return true; } $arr = $sphinxConnection->errorInfo(); KalturaLog::err($arr[2]); return false; }