Location: PHPKode > scripts > Xindice > xindice/class_xindice.php
<?
// ##################################################################################
// Title                     : class_xindice.php
// Version                   : 1.0
// Author                    : Luis Argerich (hide@address.com)
// Last modification date    : 05-15-2002
// Description               : This class allows you to use an Xindice server
//                             from PHP using the XML-RPC API.
// ##################################################################################
// History: 
// 05-15-2002     First release of this class
// ##################################################################################
// To-Dos:
// ##################################################################################
// How to use it:
// Check the example "test.php" for several examples about how to use this class
// usage is straightforward.
// ##################################################################################

include_once("xmlrpc/xmlrpc.inc");

class Xindice {
  var $client;
  var $error;

  function getError() {
    return $this->error;
  }

  function setXmlRpcDebug($debug) {
    $this->client->setDebug($debug);
  }

  function Xindice($server_uri,$server_port=4080) {
    $this->client=new xmlrpc_client("/",$server_uri,$server_port);
  }

  // Collection management functions 

  function listCollections($collection) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."listCollections";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string")));
    return $this->sendMsg($msg);
  }


  function getDocumentCount($collectionPath) {
    $paths=split('/',$collectionPath);
    $method=$paths[1].'.'."getDocumentCount";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collectionPath,"string")));
    return $this->sendMsg($msg);
  } 

  function createCollection($base,$collectionName) {
    $paths=split('/',$base);
    $method=$paths[1].'.'."createCollection";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($base,"string"),new xmlrpcval($collectionName,"string"))); 
    return $this->sendMsg($msg);
  }

  function dropCollection($collectionPath) {
    $paths=split('/',$collectionPath);
    $method=$paths[1].'.'."dropCollection";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collectionPath)));
    return $this->sendMsg($msg);
  }  

  // Document management functions

  function insertDocument($collection,$id,$content) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."insertDocument";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($id,"string"),new xmlrpcval($content,"string")));
    return $this->sendMsg($msg);
  }

  function setDocument($collection,$id,$content) {

  }  

  function getDocument($collection,$id) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."getDocument";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($id,"string")));
    return $this->sendMsg($msg);
  }

  function listDocuments($collection) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."listDocuments";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string")));
    return $this->sendMsg($msg);
  }

  function removeDocument($collection,$id) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."removeDocument";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($id,"string")));
    return $this->sendMsg($msg);
  }

  // Index management functions
  function createIndexer($collection,$indexName,$pattern) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."createIndexer";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($indexName,"string"),new xmlrpcval($pattern,"string")));
    return $this->sendMsg($msg);
  }
 
  function dropIndexer($collection,$indexName) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."dropIndexer";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($indexName,"string")));
    return $this->sendMsg($msg);
  }

  function listIndexers($collection) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."listIndexer";
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string")));                    
    return $this->sendMsg($msg);
  }  
 
  // Query functions

  function queryDocument($collection,$type,$query,$id) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."queryDocument"; 
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($type,"string"),new xmlrpcval($query),new xmlrpcval(Array(),"struct"),new xmlrpcval($id,"string")));
    return $this->sendMsg($msg);

  }

  function queryCollection($collection,$type,$query) {
    $paths=split('/',$collection);
    $method=$paths[1].'.'."queryCollection"; 
    $msg=new xmlrpcmsg($method,array(new xmlrpcval($collection,"string"),new xmlrpcval($type,"string"),new xmlrpcval($query),new xmlrpcval(Array(),"struct")));
    return $this->sendMsg($msg);

  }

  // PRIVATE METHODS
  function getBase($collection) {
    $paths=split('/',$collection);
    return $paths[0];
  }

  function sendMsg($msg) {
    $result=$this->client->send($msg);
    if(!$result) {
      $this->error='Cannot send xmlrpc message to the server';
      return 0;
    }
    if($result->faultCode()) {
      $this->error=$result->faultString();
      return 0;
    }
    $ret=xmlrpc_decode($result->value());
    return $ret;
  }


}

?>


Return current item: Xindice