ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilECSResult.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once('./Services/WebServices/ECS/classes/class.ilECSConnectorException.php');
25
36{
39
40 const HEADER_ECS_SENDER = 'X-EcsSender';
41
42 protected $log;
43
44 protected $result_string = '';
45 protected $result_header = '';
46 protected $http_code = '';
47 protected $result;
48 protected $result_type;
49 protected $header_parsing = false;
50
51 protected $headers = array();
52 protected $header_map = array();
53
63 public function __construct($a_res,$with_headers = false,$a_type = self::RESULT_TYPE_JSON)
64 {
65 global $ilLog;
66
67 $this->log = $ilLog;
68
69 $this->result_string = $a_res;
70 $this->result_type = $a_type;
71
72 if($with_headers)
73 {
74 $this->header_parsing = true;
75 }
76
77 $this->init();
78 }
79
87 public function setHTTPCode($a_code)
88 {
89 $this->http_code = $a_code;
90 }
91
97 public function getHTTPCode()
98 {
99 return $this->http_code;
100 }
101
108 public function getPlainResultString()
109 {
111 }
112
120 public function getResult()
121 {
122 return $this->result;
123 }
124
129 public function setHeaders($a_headers)
130 {
131 $this->headers = $a_headers;
132 }
133
139 public function getHeaders()
140 {
141 return $this->headers ? $this->headers : array();
142 }
143
149 private function init()
150 {
151 if($this->header_parsing and $this->result_string)
152 {
153 $this->splitHeader();
154 $this->parseHeader();
155 }
156
157
158 switch($this->result_type)
159 {
161 if($this->result_string)
162 {
163 $this->result = json_decode($this->result_string);
164 }
165 else
166 {
167 $this->result = array();
168 }
169 break;
170
172 $this->result = $this->parseUriList($this->result_string);
173 break;
174 }
175 return true;
176 }
177
185 private function splitHeader()
186 {
187 $pos = strpos($this->result_string,"\r\n\r\n");
188 if($pos !== false)
189 {
190 $this->result_header = substr($this->result_string,0,$pos + 2);
191 $this->result_string = substr($this->result_string,$pos + 2,-1);
192 return true;
193 }
194 else
195 {
196 $this->log->write(__METHOD__.': Cannot find header entry');
197 throw new ilECSConnectorException('Cannot find header part.');
198 }
199 }
200
207 private function parseHeader()
208 {
209 // In the moment only look for "Location:" value
210 $location_start = strpos($this->result_header,"Location:");
211 if($location_start !== false)
212 {
213 $location_start += 10;
214 $location_end = strpos($this->result_header,"\r\n",$location_start);
215
216 $location = substr($this->result_header,$location_start,$location_end - $location_start);
217 $this->headers['Location'] = $location;
218 }
219
220 $ecs_sender = strpos($this->result_header,self::HEADER_ECS_SENDER);
221 if($ecs_sender !== false)
222 {
223 $sender_start =+ 13;
224 $sender_end = strpos($this->result_header,"\r\n",$sender_start);
225 $sender = substr($this->result_header,$sender_start,$sender_end - $sender_start);
226
227 $senders_arr = explode(',',$sender);
228 $this->header_map[self::HEADER_ECS_SENDER] = $senders_arr;
229 }
230 return true;
231 }
232
238 private function parseUriList($a_content)
239 {
240 include_once 'Services/WebServices/ECS/classes/class.ilECSUriList.php';
241 $list = new ilECSUriList();
242 $lines = explode("\n", $this->getPlainResultString());
243 foreach($lines as $line)
244 {
245 $line = trim($line);
246 if(!strlen($line))
247 {
248 continue;
249 }
250 $uri_parts = explode("/", $line);
251 $list->add($line, array_pop($uri_parts));
252 }
253
254 return $list;
255 }
256}
257
258?>
$location
Definition: buildRTE.php:44
setHeaders($a_headers)
Set header.
getHeaders()
get headers
getResult()
get result
const RESULT_TYPE_URL_LIST
parseUriList($a_content)
setHTTPCode($a_code)
set HTTP return code
getHTTPCode()
get HTTP code
init()
init result (json_decode) @access private
getPlainResultString()
get unformated result string
splitHeader()
Split header and content.
parseHeader()
Parse header.
__construct($a_res, $with_headers=false, $a_type=self::RESULT_TYPE_JSON)
Constructor.
Presentation of ecs uril (http://...campusconnect/courselinks)