示例#1
0
 /**
  * @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;
 }