source: pmb4.2/trunk/fuentes/pmb/admin/connecteurs/out/apisoap/apisoap.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 7.8 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: apisoap.class.php,v 1.8 2013-05-23 07:02:14 dbellamy Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9global $class_path;
10require_once($class_path."/connecteurs_out.class.php");
11require_once($class_path."/external_services.class.php");
12require_once($class_path."/external_services_esusers.class.php");
13
14class apisoap extends connecteur_out {
15       
16        function get_config_form() {
17                $this->config["cache_wsdl"] = isset($this->config["cache_wsdl"]) ? $this->config["cache_wsdl"] : true;
18                $result = "";
19                $result .=      '<div class=row><input id="cache_wsdl" '.($this->config["cache_wsdl"] ? 'checked' : '').' name="cache_wsdl" type="checkbox">'.'<label class="etiquette" for="cache_wsdl">'.$this->msg["apisoap_cache_wsdl"].'</label><br />';
20                $result .=      '</div>';
21                return $result;
22        }
23       
24        function update_config_from_form() {
25                global $cache_wsdl;
26                $this->config["cache_wsdl"] = isset($cache_wsdl);
27                return;
28        }
29       
30        function instantiate_source_class($source_id) {
31                return new apisoap_source($this, $source_id, $this->msg);
32        }
33       
34        //On chargera nous même les messages si on en a besoin
35        function need_global_messages() {
36                return false;
37        }
38       
39        function process($source_id, $pmb_user_id) {
40                global $base_path;
41                require_once ($base_path."/admin/connecteurs/out/apisoap/apisoap_soapserver.class.php");
42               
43                $apisoapserver = new apisoap_soapserver($this);
44                $apisoapserver->process($source_id, $pmb_user_id);
45               
46                //Rien
47                return;
48        }
49       
50        function get_running_pmb_userid($source_id) {
51                global $wsdl;
52                $get_wsdl = isset($wsdl);
53               
54                //Si on ne souhaite que le wsdl, alors on laisse passer
55                if ($get_wsdl)
56                        return 1;
57               
58                if (!isset($_SERVER['PHP_AUTH_USER'])) {
59                        //Si on ne nous fourni pas de credentials, alors on teste l'utilisateur anonyme
60                        $user_id = connector_out_check_credentials('', '', $source_id);
61                        if ($user_id === false) {
62                            header('WWW-Authenticate: Basic realm="PMB SOAP"');
63                            header('HTTP/1.0 401 Unauthorized');
64                                exit();
65                        }
66                }
67                else {
68                        //Sinon on teste les credentiels fournis
69                        $rawusername = $_SERVER['PHP_AUTH_USER'];
70                        $password = $_SERVER['PHP_AUTH_PW'];
71                        $user_id = connector_out_check_credentials($rawusername, $password, $source_id);
72                        if ($user_id === false) {
73                            header('WWW-Authenticate: Basic realm="PMB SOAP"');
74                            header('HTTP/1.0 401 Unauthorized');
75                                exit();         
76                        }
77                }
78               
79                return $user_id;
80        }
81}
82
83class apisoap_source extends connecteur_out_source {
84
85        function get_config_form() {
86                global $charset;
87                $result = parent::get_config_form();
88               
89                $api_catalog = new es_catalog();
90                $api_functions = array();
91                foreach ($api_catalog->groups as $agroup) {
92                        foreach ($agroup->methods as $amethod) {
93                                $api_functions[$agroup->name][] = $amethod->name;
94                        }
95                }
96
97                if (!isset($this->config["exported_functions"]))
98                        $this->config["exported_functions"] = array();
99                $selected_functions = array();
100                foreach ($this->config["exported_functions"] as $afunction) {
101                        $selected_functions[] = $afunction["group"]."|_|".$afunction["name"];
102                }
103
104                //Adresse d'utilisation
105                $result  .= '<div class=row><label class="etiquette" for="api_exported_functions">'.$this->msg["apisoap_service_endpoint"].'</label><br />';
106                if ($this->id) {
107                        $result .= '<a target="_blank" href="ws/connector_out.php?source_id='.$this->id.'&wsdl">ws/connector_out.php?source_id='.$this->id.'&wsdl</a>';
108                }
109                else {
110                        $result .= $this->msg["apisoap_service_endpoint_unrecorded"];
111                }
112                $result .= "</div>";
113               
114                //Fonction exportées
115                $result  .= '<div class=row><label class="etiquette" for="api_exported_functions">'.$this->msg["apisoap_exported_functions"].'</label><br />';
116                $api_select = '<select MULTIPLE name="api_exported_functions[]" size="20" >';
117                foreach ($api_functions as $agroup_name => $agroup) {
118                        $api_select .= '<optgroup label="'.htmlentities($agroup_name ,ENT_QUOTES, $charset).'">';
119                        foreach ($agroup as $amethodname) {
120                                $davalue = $agroup_name."|_|".$amethodname;
121                                $api_select .= '<option '.(in_array($davalue, $selected_functions) ? 'selected' : "").' value="'.htmlentities($davalue ,ENT_QUOTES, $charset).'">'.htmlentities($amethodname ,ENT_QUOTES, $charset).'</option>';
122                        }
123                        $api_select .= '</optgroup>';
124                }
125                $api_select .= '</select>';
126                $result .= $api_select;
127                $result .= "</div>";
128               
129                //Autentification
130/*              $authorized_config_types = array('none', 'groups');
131                if (!isset($this->config["authentication_type"]) || !in_array($this->config["authentication_type"], $authorized_config_types))
132                        $this->config["authentication_type"] = 'none';
133                if (!isset($this->config["authorized_groups"]))
134                        $this->config["authorized_groups"] = array();
135                $result  .= '<div class=row><label class="etiquette" for="api_authentication">'.$this->msg["apisoap_authentication"].'</label><br />';
136                $onchange_js = "document.getElementById('authorized_groups').disabled = document.getElementById('api_authentication_none').checked";
137                $result .= '<input onchange="'.$onchange_js.'" id="api_authentication_none" name="authentication_type" type="radio" '.($this->config["authentication_type"] == 'none' ? 'checked' : '').' value="none">'.$this->msg["apisoap_authenfication_none"]."<br />";
138                $result .= '<input onchange="'.$onchange_js.'" id="api_authentication_groups" name="authentication_type" type="radio" '.($this->config["authentication_type"] == 'groups' ? 'checked' : '').' value="groups">'.$this->msg["apisoap_authenfication_group"]."<br>";
139               
140                $es_groups = new es_esgroups;
141                $group_list = '<select id="authorized_groups" MULTIPLE '.($this->config["authentication_type"] == 'groups' ? '' : 'disabled').' name="authorized_groups[]">';
142                foreach ($es_groups->groups as &$aesgroup) {
143                        $group_list .= '<option '.(in_array($aesgroup->esgroup_id, $this->config["authorized_groups"]) ? 'selected' : '').' value="'.$aesgroup->esgroup_id.'">'.htmlentities($aesgroup->esgroup_name.' ('.$aesgroup->esgroup_fullname.')', ENT_QUOTES, $charset).'</option>';
144                }
145                $group_list .= '</select>';
146                $result .= "<blockquote>".$group_list."<blockquote>";
147               
148                //$result .= '<br />';*/
149                return $result;
150        }
151
152        function update_config_from_form() {
153                parent::update_config_from_form();
154                global $api_exported_functions, $authentication_type, $authorized_groups;
155               
156                if (!$api_exported_functions)
157                        $api_exported_functions = array();
158                if (!isset($authentication_type) || !$authentication_type)
159                        $authentication_type = 'none';
160                if (!isset($authorized_groups) || !$authorized_groups)
161                        $authorized_groups = array();
162               
163                //Récupérons la liste des fonctions pour virer de l'entrée les noms de fonctions qui n'existent pas
164                $api_catalog = new es_catalog();
165                $api_functions = array();
166                foreach ($api_catalog->groups as $agroup) {
167                        foreach ($agroup->methods as $amethod) {
168                                $api_functions[] = $agroup->name."|_|".$amethod->name;
169                        }
170                }
171                $api_exported_functions = array_intersect($api_exported_functions, $api_functions);
172               
173                //Enregistrons
174                $config_exported = array();
175                foreach ($api_exported_functions as $afunction) {
176                        $dafunction = explode("|_|", $afunction);
177                        $config_exported[] = array("group" => $dafunction[0], "name" => $dafunction[1]);
178                }
179                $this->config["exported_functions"] = $config_exported;
180               
181/*              //Autentification
182                $authorized_config_types = array('none', 'groups');
183                if (!in_array($authentication_type, $authorized_config_types))
184                        $authentication_type = 'none';
185                $this->config["authentication_type"] = $authentication_type;
186               
187                $base_autorized_group_ids = array();
188                $es_groups = new es_esgroups;
189                foreach ($es_groups->groups as $aesgroup)
190                        $base_autorized_group_ids[] = $aesgroup->esgroup_id;
191                $authorized_groups = array_intersect($base_autorized_group_ids, $authorized_groups);
192                $this->config["authorized_groups"] = $authorized_groups;*/
193               
194                return;
195        }
196
197}
198
199?>
Note: See TracBrowser for help on using the repository browser.