function run_task($id_tache, $type_tache, $id_planificateur, $num_es_user, $connectors_out_source_id) { global $base_path, $dbh; global $PMBuserid; @ini_set('zend.ze1_compatibility_mode', 0); $query = "select * from connectors_out_sources where connectors_out_source_id=" . $connectors_out_source_id; $res = mysql_query($query); $row = mysql_fetch_object($res); $connectors_out_sources_connectornum = $row->connectors_out_sources_connectornum; $daconn = instantiate_connecteur_out($connectors_out_sources_connectornum); if ($daconn) { $source_object = $daconn->instantiate_source_class($connectors_out_source_id); } else { $source_object = NULL; } $es = new external_services(); $array_functions = array(); foreach ($source_object->config["exported_functions"] as $exported_function) { $array_functions[] = $exported_function["group"] . "_" . $exported_function["name"]; } $proxy = $es->get_proxy($PMBuserid, $array_functions); $filename = $base_path . "/admin/planificateur/catalog.xml"; $xml = file_get_contents($filename); $param = _parser_text_no_function_($xml, "CATALOG"); foreach ($param["ACTION"] as $anitem) { if ($type_tache == $anitem["ID"]) { require_once $base_path . "/admin/planificateur/" . $anitem["NAME"] . "/" . $anitem["NAME"] . ".class.php"; $obj_type = new $anitem["NAME"]($id_tache); $obj_type->setEsProxy($proxy); $obj_type->execute(); $obj_type->checkParams($id_planificateur); } } }
function process($source_id, $pmb_user_id, $json_input) { global $charset; global $wsdl; global $class_path; $the_source = $this->connector_object->instantiate_source_class($source_id); if (!isset($the_source->config["exported_functions"])) { $this->return_error("Source wasn't configured"); } $allowed_methods = array(); foreach ($the_source->config["exported_functions"] as $aallowed_method) { $allowed_methods[] = $aallowed_method['group'] . '_' . $aallowed_method['name']; } $json_operation = ''; $request = $json_input; if ($request) { $json_operation = $request["method"]; } //Instantions la classe qui contient les fonctions $ess = new external_services(true); if ($json_operation && $ess->operation_need_messages($json_operation)) { //Allons chercher les messages global $class_path; global $include_path; global $lang; require_once "{$class_path}/XMLlist.class.php"; $messages = new XMLlist("{$include_path}/messages/{$lang}.xml", 0); $messages->analyser(); global $msg; $msg = $messages->table; } if ($json_operation) { $proxy = $ess->get_proxy($pmb_user_id, array($json_operation)); } else { $proxy = $ess->get_proxy($pmb_user_id); } $proxy->input_charset = 'utf-8'; jsonRPCServer::handle($proxy, $allowed_methods, $json_input) or print 'No request'; }
function process($source_id, $pmb_user_id) { global $charset; global $wsdl; $get_wsdl = isset($wsdl); $the_source = $this->connector_object->instantiate_source_class($source_id); if (!isset($the_source->config["exported_functions"])) { $this->return_error("Source wasn't configured"); } //Si on nous demande le wsdl, on le génère et on l'envoi if (isset($get_wsdl) && $get_wsdl) { $this->return_wsdl($the_source, 0); } //Si on ne veut pas le wsdl ou qu'on ne demande rien de soap, alors on ne fait rien if (!isset($_SERVER["HTTP_SOAPACTION"]) || !$_SERVER["HTTP_SOAPACTION"]) { die; } //L'url du wsdl dépend de l'url courante, et on rajoute le ?wsdl $wsdl_location = curPageURL(); $wsdl_location .= strpos($wsdl_location, "?") === false ? "?wsdl" : "&wsdl"; //Pas de cache, ça nuit au developpement ini_set("soap.wsdl_cache_enabled", $the_source->config["cache_wsdl"] ? 1 : 0); //Récupérons à partir des entêtes le nom de l'opération que l'on souhaite éxécuter. //Exemple d'entête: // SOAPAction: "http://sigb.net/pmb/es/apisoap/pmbesZWMTest1_credential_testfunction"\r\n $soap_operation = substr(strrchr($_SERVER["HTTP_SOAPACTION"], "/"), 1, -1); if (!$soap_operation) { die; } //Instantions le serveur SOAP $this->server = new SoapServer($wsdl_location, array('encoding' => $charset, 'features' => SOAP_SINGLE_ELEMENT_ARRAYS)); //Instantions la classe qui contient les fonctions $ess = new external_services(true); if ($ess->operation_need_messages($soap_operation)) { //Allons chercher les messages global $class_path; global $include_path; global $lang; require_once "{$class_path}/XMLlist.class.php"; $messages = new XMLlist("{$include_path}/messages/{$lang}.xml", 0); $messages->analyser(); global $msg; $msg = $messages->table; } $proxy = $ess->get_proxy($pmb_user_id, array($soap_operation)); $proxy->set_error_callback(array(&$this, "return_soapfault_from_api_exception")); $proxy->input_charset = 'utf-8'; if (!method_exists($proxy, $soap_operation)) { $this->server->fault("unknown_method_or_bad_credentials", "Could not find the method according to your group internal's credentials"); } //Donnons au serveur SOAP le proxy $this->server->setObject($proxy); //Et c'est parti! $this->server->handle(); }