* @author Laurent Giovannoni */ include("session.php"); //Paramètres $letterbox_root_dir = ""; $debug = false; $debug_file = "webdav/letterbox/webdav.log"; //Chargement session virtuelle $config_xml = DOMDocument::load($letterbox_root_dir."xml/config.xml"); $tablename = DOMDocument::load($letterbox_root_dir."xml/tablename.xml"); $xp_config_xml = new domxpath($config_xml); foreach ($xp_config_xml->query("/ROOT/CONFIG/*") as $cf) { $_SESSION['config'][$cf->nodeName] = $cf->nodeValue; } $xp_tablename = new domxpath($tablename); foreach ($xp_tablename->query("/ROOT/TABLENAME/*") as $tbl) { $_SESSION['tablename'][$tbl->nodeName] = $tbl->nodeValue; } if (file_exists($_SESSION['config']['lang'].'.php')) { include($_SESSION['config']['lang'].'.php'); } else { $_SESSION['error'] = "Language file missing...
"; } ///////////////////////////////////////////////////////////////////// require("class_functions.php"); require_once("class_db.php"); require_once("class_webdav_tools.php"); ///////////////////////////////////////////////////////////////////// //Create XML function createXML($root_name,$parameters) { global $debug, $debug_file; $r_xml = new DomDocument("1.0","UTF-8"); $r_root_node = $r_xml->createElement($root_name); $r_xml->appendChild($r_root_node); if (is_array($parameters)) { foreach ($parameters as $k_par => $d_par) { $node = $r_xml->createElement($k_par,$d_par); $r_root_node->appendChild($node); } } else { $r_root_node->nodeValue = $parameters; } if ($debug) { $r_xml->save($debug_file); } header("content-type: application/xml"); echo $r_xml->saveXML(); exit; } //////////////////////////// DEBUG ////////////////////////////// /* file_put_contents(dirname( __FILE__ ) . '/webdav/letterbox/Applet/log.txt', date("Y-m-d H:i:s")."\n:".var_export($_GET,true)."\n-----------------------------------------------------------------------------\n",FILE_APPEND); */ /////////////////////////////////////////////////////////////////// //Vérification globale des paramètres if ( !( ( isset($_GET['action']) && $_GET['action'] == "open" && isset($_GET['user_id']) && !empty($_GET['user_id']) && isset($_GET['password']) && !empty($_GET['password']) && isset($_GET['res_table']) && !empty($_GET['res_table']) && isset($_GET['res_id']) && is_numeric($_GET['res_id']) ) OR ( isset($_GET['action']) && $_GET['action'] == "close" && isset($_GET['webdav_id']) && !empty($_GET['webdav_id']) && isset($_GET['user_id']) && !empty($_GET['user_id']) && isset($_GET['password']) && !empty($_GET['password']) ) OR ( isset($_GET['action']) && $_GET['action'] == "save" && isset($_GET['webdav_id']) && !empty($_GET['webdav_id']) ) OR ( isset($_GET['action']) && $_GET['action'] == "time" && isset($_GET['webdav_id']) && !empty($_GET['webdav_id']) ) ) ) { createXML("ERROR",_ERROR_CALL_WS); } ////////////////////////////////////////////////////////////////// //Connection Base de données $db = new dbquery(); $db->connect(); ////////////////////////////////////////////////////////////////// //Sécurité Login + Mot de passe $db->query("SELECT COUNT(*) AS LOGIN_OK FROM ".$_SESSION['tablename']['users']." WHERE USER_ID = '".$_GET['user_id']."' AND PASSWORD = '".$_GET['password']."' AND ENABLED = 'Y' "); ////////////////////////////////////////////////////////////////// if ($_GET['action'] != "time" && $_GET['action'] != "save" && $res = $db->fetch_object()) { if ($res->LOGIN_OK != 1) { createXML("ERROR",_ERROR_LOGIN_WS); } } //updated by lgi if (isset($_SESSION['admin_models']) && isset($_SESSION['admin_models']['model_id']) && $_SESSION['admin_models']['model_id'] <> '') { $_SESSION['admin_models']['on_progress'] = true; //Edition d'un nouveau document if ($_GET['action'] == "open") { $wd = new webdav_tools(); $wd->deleteExpiredWebdav(); $wd = new webdav_tools(); $result = $wd->mountWebdavCreateModel($_SESSION['admin_models']['model_id'], $_GET['user_id']); if (is_array($result) && count($result) > 0) { $result["APP_NAME"] = ""; //RESERVED THE RESPONSE $wd->addExpiryDate('models', $_SESSION['admin_models']['model_id'], $result["ID"], $_GET['user_id']); createXML("SUCCESS", $result); } else { createXML("ERROR", constant($result)); } } //Fin edition d'un nouveau document if ($_GET['action'] == "save") { $wd = new webdav_tools(); $result = $wd->save($_GET['webdav_id']); if ($result === true) { createXML("SUCCESS", ""); } else { createXML("ERROR", constant($result)); } } //Fin edition d'un nouveau document if ($_GET['action'] == "close") { $wd = new webdav_tools(); $wd->deleteExpiredWebdav(); $wd->closeWebdav($_GET['webdav_id']); $result["APP_NAME"] = ""; createXML("SUCCESS", ""); } //Temps en seconde avant expiration du delai de reservation if ($_GET['action'] == "time") { $wd = new webdav_tools(); $result["TIME"] = $wd->time_before_expiration($_GET['webdav_id']); createXML("SUCCESS", $result); } } else { //Edition d'un nouveau document if ($_GET['action'] == "open") { $wd = new webdav_tools(); $wd->deleteExpiredWebdav(); //Vérifier si le courrier n'est pas reservé $wd = new webdav_tools(); $reserved_by = $wd->is_reserved_by($_GET['res_table'],$_GET['res_id']); if ($reserved_by !== false && $reserved_by != $_GET['user_id']) { $db->query("SELECT LASTNAME, FIRSTNAME FROM ".$_SESSION['tablename']['users']." WHERE USER_ID = '".$reserved_by."' AND ENABLED = 'Y'"); if ($res = $db->fetch_object()) { createXML("ERROR",_RESPONSE_ALREADY_RESERVED." "._BY." : ".$res->FIRSTNAME.",".$res->LASTNAME); } else { createXML("ERROR",_RESPONSE_ALREADY_RESERVED); } } $result = $wd->mountWebdav($_GET['user_id'],$_GET['res_table'],$_GET['res_id']); if (is_array($result) && count($result) > 0) { //updated by lgi for oo_generate //$result["APP_NAME"] = _LAUNCH_APPLICATION." : ".$result["APP_NAME"]; $result["APP_NAME"] = ""; //RESERVED THE RESPONSE $wd->addExpiryDate($_GET['res_table'],$_GET['res_id'],$result["ID"],$_GET['user_id']); createXML("SUCCESS",$result); } else { createXML("ERROR",constant($result)); } } //Fin edition d'un nouveau document /*if ($_GET['action'] == "save") { $wd = new webdav_tools(); $result = $wd->save($_GET['webdav_id']); if ($result === true) { createXML("SUCCESS",""); } else { createXML("ERROR",constant($result)); } }*/ //Fin edition d'un nouveau document if ($_GET['action'] == "close") { $wd = new webdav_tools(); $wd->deleteExpiredWebdav(); $wd->closeWebdav($_GET['webdav_id']); createXML("SUCCESS",""); } //Temps en seconde avant expiration du delai de reservation if ($_GET['action'] == "time") { $wd = new webdav_tools(); $result["TIME"] = $wd->time_before_expiration($_GET['webdav_id']); createXML("SUCCESS",$result); } } ?>