コード例 #1
0
ファイル: run_task.php プロジェクト: bouchra012/PMB
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);
        }
    }
}
コード例 #2
0
 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';
 }
コード例 #3
0
 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();
 }
コード例 #4
0
ファイル: general.inc.php プロジェクト: noble82/proyectos-ULS
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: general.inc.php,v 1.5 2013-04-11 08:02:17 mbertin Exp $
//Administration générale des droits des services externes
require_once $class_path . "/external_services.class.php";
require_once $include_path . "/templates/external_services.tpl.php";
$es = new external_services();
$es_rights = new external_services_rights($es);
function users_list($group, $method, $users, $parent_users)
{
    global $charset;
    global $es_rights;
    global $msg;
    $list_users = $es_rights->possible_users($group, $method);
    $count = 0;
    $result = "<ul>\n";
    for ($j = 0; $j < count($list_users); $j++) {
        if (array_search($list_users[$j], $users) !== false) {
            //Si l'utilisateur a les droits pour le groupe entier, on ne l'affiche pas dans le détail
            $group_authorized = in_array($es_rights->users[$list_users[$j]]->userid, $parent_users);
            if (!$group_authorized) {
                $page_link_href = 'admin.php?categ=external_services&sub=peruser&iduser='******'#' . urlencode($group) . ($method ? '_' . urlencode($method) : "");
                $user_name_display = htmlentities($es_rights->users[$list_users[$j]]->username, ENT_QUOTES, $charset);
                $result .= "<li><a href=" . $page_link_href . ">" . $user_name_display . "</a></li>\n";
                ++$count;
            }
        }
    }