function get_procs($type = "", $set = "") { global $charset, $class_path, $pmb_version_brut; global $msg; global $pmb_curl_proxy; $params = array("credentials" => array("user" => $this->server_username, "key" => $this->server_key)); if ($set) { $params["set"] = $set; } if ($type) { $params["type"] = $type; } $params["pmbversion"] = $pmb_version_brut; //Utilisons php_soap si disponible if (extension_loaded("soap")) { $soap_client_parameters = array(); if ($pmb_curl_proxy != '') { $param_proxy = explode(',', $pmb_curl_proxy); $adresse_proxy = $param_proxy[0]; $port_proxy = $param_proxy[1]; $user_proxy = $param_proxy[2]; $pwd_proxy = $param_proxy[3]; $soap_client_parameters = array('proxy_host' => $adresse_proxy, 'proxy_port' => $port_proxy, 'proxy_login' => $user_proxy, 'proxy_password' => $pwd_proxy); } $soap_client_parameters['features'] = SOAP_SINGLE_ELEMENT_ARRAYS; try { @($client = new SoapClient($this->server_adress, $soap_client_parameters)); if (!$client) { return (object) array("error_information" => (object) array("error_code" => 1, "error_string" => $msg["remote_procedures_error_client"])); } @($result = $client->get_procs($params)); } catch (Exception $e) { return (object) array("error_information" => (object) array("error_code" => 1, "error_string" => $e->getMessage())); } if ($charset != 'utf-8') { if (isset($result->elements)) { if (!is_array($result->elements)) { $result->elements = array($result->elements); } foreach ($result->elements as $index => $aprocedure) { $result->elements[$index]->name = utf8_decode($aprocedure->name); $result->elements[$index]->comment = utf8_decode($aprocedure->comment); $result->elements[$index]->sql = utf8_decode($aprocedure->sql); $result->elements[$index]->params = utf8_decode($aprocedure->params); $result->elements[$index]->current_attached_set = utf8_decode($aprocedure->current_attached_set); if (isset($aprocedure->sets)) { if (!is_array($aprocedure->sets)) { $result->elements[$index]->sets = array($result->elements[$index]->sets); } foreach ($result->elements[$index]->sets as $set_index => $aset) { $result->elements[$index]->sets[$set_index]->set_caption = utf8_decode($result->elements[$index]->sets[$set_index]->set_caption); } } } } } } else { $adresse_proxy = false; $port_proxy = false; $user_proxy = false; $pwd_proxy = false; if ($pmb_curl_proxy != '') { $param_proxy = explode(',', $pmb_curl_proxy); $adresse_proxy = $param_proxy[0]; $port_proxy = $param_proxy[1]; $user_proxy = $param_proxy[2]; $pwd_proxy = $param_proxy[3]; } require_once $class_path . "/nusoap/nusoap.php"; $client = new nusoapclient($this->server_adress, true, $adresse_proxy, $port_proxy, $user_proxy, $pwd_proxy); $client->decode_utf8 = $charset != 'utf-8'; if ($err = $client->getError()) { return (object) array("error_information" => (object) array("error_code" => 1, "error_string" => $err)); } $result = $client->call("get_procs", array("parameters" => $params), "http://www.sigb.net/pmb/"); //Si une seule procédure est renvoyée, soap ne renvoi pas un tableau, et alors elements contient directement une procedure //Mais nous voulons un tableau, donc nous devons traiter le cas if (isset($result["elements"]["id"])) { $result["elements"] = array($result["elements"]); } $result = $this->array_to_object($result); if (isset($result->elements)) { foreach ($result->elements as $index => $value) { $result->elements[$index] = $this->array_to_object($result->elements[$index], true); } } } return $result; }