<?php
/**
 * XML-RPC protocol support for AbEressource
 *
 * @package AbEressource
 */
error_reporting(E_ALL);
/**
 * Whether this is a XMLRPC Request
 *
 * @var bool
 */
error_reporting(E_ERROR);

define('XMLRPC_REQUEST', true);
require_once 'XML/RPC2/Server.php';

// Some browser-embedded clients send cookies. We don't want them.
$_COOKIE = array();

/*
$fp = fopen("/tmp/debug.log","a");
fwrite($fp, "$HTTP_RAW_POST_DATA");
fclose($fp);
*/

//inutile ???
// A bug in PHP < 5.2.2 makes $HTTP_RAW_POST_DATA not set by default,
// but we can do it ourself.
if ( !isset( $HTTP_RAW_POST_DATA ) ) {
	$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}


// fix for mozBlog and other cases where '<?xml' isn't on the very first line
if ( isset($HTTP_RAW_POST_DATA) )
	$HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);

// Include the bootstrap for setting up WordPress environment 
//include('./wp-load.php');


if ( isset( $_GET['rsd'] ) ) { // http://archipelago.phrasewise.com/rsd
header('Content-Type: text/xml; charset=UTF-8')
?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?'.'>'; ?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
  <service>
    <engineName>AbEressource</engineName>
    <engineLink>http://mediatheque.abuledu.org/</engineLink>
    <homePageLink>http://mediatheque.abuledu.org/</homePageLink>
    <apis>
      <api name="abe" preferred="true" blogID="" apiLink="http://mediatheque.abuledu.org/Xserver2.php" />
    </apis>
  </service>
</rsd>
<?php
exit;
}

// partie principale
include_once ("./parametres.php");
include_once ("./connect.php");
include_once ("./listOfItems.inc");
include_once ("./balises.inc.php");
mysql_query("SET NAMES 'utf8'");

// Let's define a class with public static methods
// PHPDOC comments are really important because they are used for automatic
// signature checking

class RessourceServer {

    /**
     * echoes the message received
     * 
     * @param string strong
     * @return string The echo
     */
    public static function echoecho($strong) {
        return $strong;
    }

    /**
     * retourne les listes de choix
     *
     * @param string  Message
     * @return Array
     */
    public static function getAllListsOfItems($string) {
	global $LIST_MATIERES_ITEM, $LIST_NIVEAUX_ITEM, $LIST_TYPES_ITEM, $LIST_FORMATS_ITEM;

        $ret = Array('MATIERES' => $LIST_MATIERES_ITEM,
	'NIVEAUX' => $LIST_NIVEAUX_ITEM,
	'TYPES' => $LIST_TYPES_ITEM,
	'FORMATS' => $LIST_FORMATS_ITEM);
	return $ret;
    }
    /**
     * retourne une liste de choix
     *
     * @param string ______ 'MATIERES', 'NIVEAUX', 'TYPES', 'FORMATS'
     * @return Array
     */
    public static function getListOfItems($list) {
	global $LIST_MATIERES_ITEM, $LIST_NIVEAUX_ITEM, $LIST_TYPES_ITEM, $LIST_FORMATS_ITEM;
	switch ($list) {
        case 'MATIERES':
		$ret = Array('MATIERES' => $LIST_MATIERES_ITEM);
		break;
	case 'NIVEAUX':
		$ret = Array('NIVEAUX' => $LIST_NIVEAUX_ITEM);
		break;
	case 'TYPES':
		$ret = Array('TYPES' => $LIST_TYPES_ITEM);
		break;
	case 'FORMATS':
		$ret = Array('FORMATS' => $LIST_FORMATS_ITEM);
		break;
	}
	return $ret;
    }
    /**
     * retourne les noms des listes de choix
     *
     * @param vide
     * @return Array
     */
    public static function getNameOfLists() {
	$ret = Array(
	'MATIERES' => "Les matières qui correspondent",
	'NIVEAUX' => "Le ou les niveaux scolaires concernés",
	'TYPES' => "Le type de la ressource",
	'FORMATS' => "Le format du fichier (extension)");
	return $ret;
	}
// fonctions spécifiques à libre
    /**
     * retourne la liste des documents
     *
     * @param tri ______ ordre de tri 'NOM+', 'NOM-', 'DATE+', 'DATE-'
     * @return Array
     */
    public static function getListAllDocs($tri) {
	switch ($tri) {
		case "NOM+":
		case "":
		        $sql = "SELECT * FROM ld_docs ORDER BY Doc_Titre";
			$typesql = "NOM";
			break;
		case "NOM-":
		        $sql = "SELECT * FROM ld_docs ORDER BY Doc_Titre DESC";
			$typesql = "NOM";
			break;
		case "DATE+":
		        $sql = "SELECT * FROM ld_docs ORDER BY Doc_Date";
			$typesql = "DATE";
			break;
		case "DATE-":
		        $sql = "SELECT * FROM ld_docs ORDER BY Doc_Date DESC";
			$typesql = "DATE";
			break;
		}
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
        $init2 = ""; // sera l'initiale
	$ar1 = array(); // va contenir les docs
        while ($row = mysql_fetch_row($result))
        {
        	$init = substr($row[1],0,1);
        	$init = strtoupper($init);
       		if (($init != $init2) && ($init >="A") && ($init<="Z"))
       		{
		// on démarre une nouvelle initiale
       			$init2 = $init;
		//      $texte_liste_docs .= "<BR><IMG src=\"./images/lettres/" . $init2 . ".gif\">\n";
         	}
		$ar2 = Array('initiale' => $init2,
				'year' => substr($row[15],0,4),
				'docId'	=> $row[0],
				'docTitle' => $row[1],
				'docDate' => $row[15],
				'docNumber' => $row[14]);
		$ar1[] = $ar2;
//$texte_liste_docs .= "<LI><A HREF=\"voir_doc.php?DOC=" . $row[0] . "\">" . stripslashes($row[1]) ."</A> <small>(Téléchargé $row[14] fois)</small></LI>\n";
        }
	return $ar1;

    }

    /**
     * retourne la liste des 5 derniers documents
     *
     * @param vide
     * @return Array
     */
    public static function getLastFiveDocs() {
	$sql = "SELECT * FROM ld_docs ORDER BY Doc_Date DESC limit 0,5";
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
        $init2 = ""; // sera l'initiale
	$ar1 = array(); // va contenir les docs
        while ($row = mysql_fetch_row($result))
        {
		$ar2 = Array('docId'	=> $row[0],
			'docTitle' => $row[1],
			'docDate' => $row[15],
			'docNumber' => $row[14]);
		$ar1[] = $ar2;
        }
	return $ar1;
    }

    /**
     * retourne la liste des 5 meilleurs documents
     *
     * @param vide
     * @return Array
     */
    public static function getBestFiveDocs() {
	$sql = "SELECT * FROM ld_docs ORDER BY Doc_Down DESC limit 0,5";
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
        $init2 = ""; // sera l'initiale
	$ar1 = array(); // va contenir les docs
        while ($row = mysql_fetch_row($result))
        {
		$ar2 = Array('docId'	=> $row[0],
			'docTitle' => $row[1],
			'docDate' => $row[15],
			'docNumber' => $row[14]);
		$ar1[] = $ar2;
        }
	return $ar1;
    }

    /**
     * retourne les infos sur le document 'la fiche'
     *
     * @param  string $ID
     * @return array
     */
    public static function getDoc($ID) {
	$sql = "SELECT * FROM ld_docs WHERE ID=$ID";
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
	$row = mysql_fetch_array($result);
	foreach ($row as $key=>$value)
	{
		if (is_null($value)) {$row[$key] = "";}
	}
	if ($row['URI'] != "")
	{
		$z = new ZipArchive();
		$lom = "";
		if ($z->open("./downloads/" . $row['Doc_File']))
		{
			$xmlstr = $z->getFromName("lom.xml");
			$lom = simplexml_load_string($xmlstr);
		}
		$a = "" . $lom->general->identifier->entry . "";
		$row['URIfromXML'] = $a;
	}
	return $row;
    }

// lecture des renseignements
    /**
     * retourne le fichier document/ressource
     *
     * @param  string $ID
     * @return array nom, taille, contenu
     */
    public static function getFile($ID) {
	$sql = "SELECT Doc_File, Doc_Oldname FROM ld_docs WHERE ID=$ID";
	$result = mysql_query ($sql) or die ("Invalid query : $sql");
	$row = mysql_fetch_row($result);
	$path="downloads/";
	$filename = "./downloads/" . $row[0];// Doc_File
	$document = $row[1];// Doc_Oldname

	$handle = fopen($filename, "r");
	$size = filesize($filename);
	$imgbinary = fread(fopen($filename, "r"), $size);
	$content64 = base64_encode($imgbinary);
	$ret = array('name' => $row[1], 'size' => $size, 'content' => $content64);

	return $ret;
    }

// lecture des mots-clefs
    /**
     * retourne les mots-clefs
     *
     * @param  void
     * @return array mots
     */
    public static function getKeywords() {
	 $sql = "SELECT distinctrow Doc_Key FROM ld_docs ORDER BY Doc_Key";
	 //$fp = fopen("/tmp/debug.log","w");
	 //fwrite($fp, "Test de debug eric :: $sql");
	 $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
	 $retour = "";
	 while ($row = mysql_fetch_row($result))
	   {
	     //fwrite($fp,$row[0]);
	     if ($row[0] != "")
	       {
		 $virg = preg_split("/,/",$row[0]);
		 foreach ($virg as $motk)
		   {
		     $lsmots[] = ucfirst($motk);
		   }
	       }
	   }
	 // traiter la liste des mots et enlever doublons
	 //fwrite($fp, implode("::",$lsmots));
	 //fclose();
	 sort($lsmots);
	 $umots = array_unique($lsmots);
	 return $umots;
    }



    /**
     * retourne la liste des documents correspondants
     *
     * @param array critères  'boolcond', 'LIST_MATIERES', 'LIST_NIVEAUX', 'LIST_TYPES', 'LIST_FORMATS', 'LIST_KEYWORDS', 'unmot', 'unauteur'
     * @return Array liste
     */
    public static function getSearchList($recherche) {
        $recherche  = array_map('mysql_real_escape_string', $recherche);// nettoyage au cas où

	$boolcond = $recherche['boolcond'];
	$LIST_MATIERES = $recherche['LIST_MATIERES'];
	$LIST_NIVEAUX = $recherche['LIST_NIVEAUX'];
	$LIST_TYPES = $recherche['LIST_TYPES'];
	$LIST_FORMATS = $recherche['LIST_FORMATS'];
	$LIST_KEYWORDS = $recherche['LIST_KEYWORDS'];
	$unmot = $recherche['unmot'];
	$unauteur = $recherche['unauteur'];
        if ($boolcond == "OR")
        {
            $boolcond = " OR ";
            $conddep = "0";
        }else{
            $boolcond = " AND ";
            $conddep = "1";
        }
        $condition = "";
        if ($LIST_MATIERES != "")
        {
                $condition = $boolcond . "Doc_Matiere like \"$LIST_MATIERES\"";
        }
        if ($LIST_NIVEAUX != "%")
        {
         $ln = preg_split("/,/",$LIST_NIVEAUX);
         $LIST_NIVEAUX = join("\",\"",$ln);

                $condition .= $boolcond ."Doc_Niveau IN (\"$LIST_NIVEAUX\")";
        }
        if ($LIST_TYPES != "")
        {
                $condition .= $boolcond . "Doc_Type like \"$LIST_TYPES\"";
        }
        if ($LIST_FORMATS != "")
        {
                $condition .=  $boolcond ."Doc_Extension like \"$LIST_FORMATS\"";
        }
        if ($LIST_KEYWORDS != "")
        {
                $condition .= $boolcond ."Doc_Key like \"%$LIST_KEYWORDS%\"";
        }
        if ($unmot != "")
        {
                $condition .= $boolcond . "(Doc_Description like \"%$unmot%\"";
                $condition .= " OR Doc_Titre like \"%$unmot%\")";
        }
        if ($unauteur != "")
        {
                $condition .= $boolcond . "Auteur_Nom like \"%$unauteur%\"";
        }

        $sql = "SELECT * FROM ld_docs WHERE " . $conddep . $condition;
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
        $init2 = ""; // sera l'initiale
	$ar1 = array(); // va contenir les docs
        while ($row = mysql_fetch_row($result))
        {
		$ar2 = Array('docId'	=> $row[0],
			'docTitle' => $row[1],
			'docDate' => $row[15],
			'docNumber' => $row[14]);
		$ar1[] = $ar2;
        }
	return $ar1;
    }

// desarchivage et reour du fichier LOM
    /**
     * retourne le fichier
     *
     * @param  string $ID
     * @return array nom, taille, contenu
     */
    public static function getLOM($ID) {
	$sql = "SELECT Doc_File FROM ld_docs WHERE ID=$ID";
	$result = mysql_query ($sql) or die ("Invalid query : $sql");
	$row = mysql_fetch_row($result);
	$path="downloads/";
	$filename = "/downloads/" . $row[0];

	$z = new ZipArchive();
	if ($z->open(dirname(__FILE__) . $filename)) {
	    	$lom = $z->getFromName("lom.xml");
		$size = strlen($lom);
		$content64 = base64_encode($lom);
		$ret = array('name' => 'lom.xml', 'size' => $size, 'content' => $content64);
	}else{
		syslog(LOG_DEBUG,"Je ne réussis pas à ouvrir " . $filename);
	}
	return $ret;
    }

// obtenir un numéro unique pour LOM
    /**
     * retourne un numéro unique (8 chiffres hexadécimaux)
     * ou un message invitant à attendre une minute
     *
     * @param  vide
     * @return array Message URI
     */
    public static function getNewURI() {
	$dt = dechex(date("ymdHi"));
	$ct = substr(trim(file_get_contents("./URI_reserve.txt")),-8);
	if ($dt != $ct)
	{
		$fd = fopen("./URI_reserve.txt","a");
		fwrite($fd,$dt . "\n");
		fclose($fd);
		$ret = array('Message'=>"UID Aviable",'URI'=>$dt);
	}else{
		$ret = array('Message'=>'Not aviable, wait for a minute','URI'=>"0");
	}
	return $ret;
    }

// exécute une fonction sql stockée en local
    /**
     * retourne le resultat (true/false)
     * la fonction est désactivée
     * @param  vide
     * @return bool resultat
     */
    public static function goSQL() {
	$ret = 1;
//	$sql = "ALTER TABLE `ld_docs` DROP `URI`;";
//	$sql = "ALTER TABLE `ld_docs` ADD `URI` VARCHAR( 255 ) NOT NULL ";
//	$sql = "UPDATE `ld_docs` SET `URI` = '47a6ee4e-bama_le_crocodile_a_faim' WHERE `ld_docs`.`ID` =304;";
//	$xxx = mysql_query ($sql) or $ret="Invalid query : $sql";
	return $ret;
    }

    /**
     * retourne l'adresse URI stockée dans le document
     *
     * @param  string $ID
     * @return sting adresse
     */
    public static function getURIfromXML($ID) {
	$sql = "SELECT Doc_File FROM ld_docs WHERE ID=$ID";
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
	$row = mysql_fetch_array($result);
	if ($row['Doc_File'] != "")
	{
		$z = new ZipArchive();
		$lom = "";
		if ($z->open("./downloads/" . $row['Doc_File']))
		{
			$xmlstr = $z->getFromName("lom.xml");
			$lom = simplexml_load_string($xmlstr);
		}
		$adresse = "" . $lom->general->identifier->entry . "";
	}else{
		$adresse = "";
	}
	return $adresse;
    }

    /**
     * retourne l'ID correspondant à l'adresse URI
     *
     * @param  string $URI
     * @return sting $ID
     */
    public static function getIDforURI($URI) {
	$sql = "SELECT ID FROM ld_docs WHERE URI like \"%$URI%\"";
	mysql_query("SET NAMES 'utf8'");
        $result = mysql_query ($sql) or die ("Requête incorrecte : <BR>$sql\n");
	$row = mysql_fetch_array($result);
	return $row['ID'];
    }

   /**
     * procédure d'upload de ressource
     * 
     * @param  array ________ 'DOCUMENT_TITRE', 'DOCUMENT_DESCRIPTIF', 'CONTRIB_NOM', 'CONTRIB_PRENOM', 'CONTRIB_EMAIL', 'DOCUMENT_KEYWORD','LIST_MATIERES', 'LIST_NIVEAUX', 'DOCUMENT_FICHIER_NOM', (base64encoded) 'DOCUMENT_FICHIER_CONTENT'
     * @return array $retour (bool sendOK, string message)
     */
    public static function setFile($envoi) {
	// lecture des variables de l'envoi identiques à la version web
	$message = "";
	$DOCUMENT_TITRE = htmlspecialchars($envoi["DOCUMENT_TITRE"]);
	$DOCUMENT_DESCRIPTIF = htmlspecialchars($envoi["DOCUMENT_DESCRIPTIF"]);
	$CONTRIB_NOM = htmlspecialchars($envoi["CONTRIB_NOM"]);
	$CONTRIB_PRENOM = htmlspecialchars($envoi["CONTRIB_PRENOM"]);
	$CONTRIB_EMAIL = htmlspecialchars($envoi["CONTRIB_EMAIL"]);
	$DOCUMENT_KEYWORD = htmlspecialchars($envoi["DOCUMENT_KEYWORD"]);
	$LIST_MATIERES = $envoi['LIST_MATIERES'];
	$LIST_NIVEAUX = $envoi['LIST_NIVEAUX'];
	$LIST_TYPES = "ABE"; // forcé à ABE
	$LIST_FORMATS = "ABE"; // forcé à ABE
	$FICHIER_NOM = $envoi['DOCUMENT_FICHIER_NOM'];
	$FICHIER_CONTENT = base64_decode($envoi['DOCUMENT_FICHIER_CONTENT']);
	// erreurs d'envoi
	if ($DOCUMENT_TITRE == "") {$message .= "Le document n'a pas de titre\n";}
	if ($DOCUMENT_DESCRIPTIF == "") {$message .= "Il manque le descriptif\n";}
	if ($FICHIER_NOM == "") {$message .= "Le fichier n'a pas de nom !\n";}
	if ($FICHIER_CONTENT == "") {$message .= "Il manque le fichier ou une erreur s'est produite\n";}
	if ($LIST_MATIERES == "") {$message .= "La matière n'est pas indiquée\n";}
	if ($LIST_NIVEAUX == "") {$message .= "Il manque le niveau\n";}
	if ($CONTRIB_NOM == "") {$message .= "Il manque votre nom\n";}
	if ($CONTRIB_PRENOM == "") {$message .= "Il manque votre prénom\n";}
	if ($CONTRIB_EMAIL == "") {$message .= "Il manque votre addresse E-mail\n";}
	if ($message !="")
	{
		$ret = array('sendOK' => false, 'message' => $message);
		return $ret;
	}

	// récupérer le numéro pour le doc
	$filename = "depots.txt";
	$fd = fopen( $filename, "r" );
	$num_rec = fread( $fd, filesize( $filename ) );
	fclose( $fd );
	$num_rec ++;
	$fd = fopen( $filename, "w" );
	fwrite( $fd,$num_rec);
	fclose( $fd );

	// signature pour edit
	$a1 = md5($CONTRIB_EMAIL);
	$a2 = strtoupper(substr($a1,3,5));
	$DOCUMENT_PWD = $a2;

	// enregistrement du fichier
	$fichier = $_FILES['DOCUMENT_FICHIER'];
	$dest = "doc" . sprintf("%05d",$num_rec) . ".ABE";
	$fd = file_put_contents("downloads/$dest",$FICHIER_CONTENT);
	if ($fd === false)
	{
		$message = "ERREUR : La copie a échoué ! Impossible de copier le fichier\n";
		$ret = array('sendOK' => false, 'message' => $message);
		return $ret;
	} else {
		// récupération de l'URI dans le fichier
		$z = new ZipArchive();
		$lom = "";
		if ($z->open("downloads/$dest"))
		{
			$xmlstr = $z->getFromName("lom.xml");
			$lom = simplexml_load_string($xmlstr);
		}
		$adresse = "" . $lom->general->identifier->entry . "";
		$sql = "INSERT INTO ld_docs values ('', \"$DOCUMENT_TITRE\", \"$DOCUMENT_DESCRIPTIF\", \"$fd\", \"$dest\", \"$FICHIER_NOM\", \"$LIST_MATIERES\", \"$LIST_NIVEAUX\", \"$LIST_TYPES\", \"$LIST_FORMATS\", \"$CONTRIB_NOM\", \"$CONTRIB_PRENOM\", \"$CONTRIB_EMAIL\",0,0,'" . date("Y-m-d") . "',\"$DOCUMENT_KEYWORD\",\"$DOCUMENT_PWD\",\"$adresse\")";
		mysql_query ($sql) or die ("Invalid query : $sql");
		$ID = mysql_insert_id();
// génération des mails
// les lignes suivantes servent à  envoyer le mail à libresdocs pour validation
$textePA = "\nEnvoi de : $CONTRIB_NOM $CONTRIB_PRENOM $CONTRIB_EMAIL $DOCUMENT_PWD
Document : $DOCUMENT_TITRE\nDescriptif : $DOCUMENT_DESCRIPTIF
Fichier d'origine : " . $_FILES['DOCUMENT_FICHIER']['name'] . " Taille : " . $_FILES['DOCUMENT_FICHIER']['size'] . "
Télécharger le document => http://mediatheque.abuledu.org/telecharger_doc.php?DOC=$ID

Modifier le document => http://mediatheque.abuledu.org/modifier_un_document.php?DOC=$ID&AUTH=$DOCUMENT_PWD
Fichier déposé => http://mediatheque.abuledu.org/downloads/$dest
Valider le document http://mediatheque.abuledu.org/valid_doc.php?DOC=$ID\n";
$header = "From: contacts@pedagosite.net
Content-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit\n\n";
mail("libresdocs@pedagosite.net", "Depot de document-ressource", stripslashes($textePA),$header); 

// les lignes suivantes servent à  envoyer le mail au contributeur
$textePA2 = "\nBonjour $CONTRIB_PRENOM $CONTRIB_NOM  $CONTRIB_EMAIL\n";
$textePA2 .="Vous avez demandé la publication du document suivant : $DOCUMENT_TITRE
Descriptif : $DOCUMENT_DESCRIPTIF

Veuillez confirmer votre dépôt en cliquant sur le lien ci-dessous ou
 copiez-le dans votre navigateur :
http://mediatheque.abuledu.org/confirm_doc.php?DOC=$ID&confirmation=1

Si vous n'êtes pas à l'origine de ce dépôt, veuillez cliquer
sur le lien ci-dessous ou copiez-le dans votre navigateur :
http://mediatheque.abuledu.org/confirm_doc.php?DOC=$ID&confirmation=0

Merci de nous faire partager vos ressources

D. Chassac pour mediatheque.abuledu.org";

$header = "From: contacts@pedagosite.net\nContent-Type: text/plain; charset=\"UTF-8\"
Content-Transfer-Encoding: 8bit\n\n";
mail($CONTRIB_EMAIL, "Depot de document-resource", stripslashes($textePA2),$header); 


		$ret = array('sendOK' => true, 'message' => $ID);
		return $ret;
	}
    }

/* inutile, c'est fait lors de la reception setFile($envoi)
// récupération de l'URI dans le fichier et stockage dans la base
		$z = new ZipArchive();
		$lom = "";
		if ($z->open("downloads/$dest"))
		{
			$xmlstr = $z->getFromName("lom.xml");
			$lom = simplexml_load_string($xmlstr);
		}
		$adresse = "" . $lom->general->identifier->entry . "";
		$sql = "UPDATE `ld_docs` SET `URI` = '$adresse' WHERE `ld_docs`.`ID` =$ID";
                mysql_query ($sql) or die ("Invalid query : $sql");
    }
*/

    /**
     * retourne la liste des fonctions supportées
     *
     * @param vide
     * @return Array
     */
    public static function info() {
	$ret = Array(
	'getAllListsOfItems' => "retourne les listes de choix",
	'getListOfItems' => "retourne une liste de choix",
	'getNameOfLists' => "retourne les noms des listes de choix",
	'getListAllDocs' => "retourne la liste de tous les documents classés suivant la clef",
	'getLastFiveDocs' => "les 5 derniers documents publiés",
	'getBestFiveDocs' => "les 5 documents les plus téléchargés",
	'getDoc' => "retourne la fiche du document",
	'getFile' => "retourne le fichier",
	'getKeywords' => "retourne la liste des mots-clefs",
	'getSearchList' => "retourne la liste des documents qui correspondent à la recherche",
	'getNewURI' => "retourne un numéro sous forme hexadécimale de la date/heure",
	'getLOM' => "retourne le contenu du fichier lom.xml du document",
	'goSQL' => "réservée à un usage interne, désactivée par défaut",
	'getURIfromXML' => "retourne l'URI stockée dans le XML",
	'getIDforURI' => "retourne l'identifiant de doc grace à l'URI",
	'setFile' => "upload le fichier ressource",
	'info' => "retourne la liste des fonctions supportées");
	return $ret;
	}

} // fin de la classe

$options = array(
    'prefix' => 'abe.' // we define a sort of "namespace" for the server
);

// Let's build the server object with the name of the Echo class
$server = XML_RPC2_Server::create('RessourceServer', $options);
$server->handleCall();

?>

