ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilECSEnrolmentStatusConnector.php
Go to the documentation of this file.
1 <?php
2 
18 declare(strict_types=1);
25 {
30  public function getEnrolmentStatus($a_enrole_id = 0, $a_details = false)
31  {
32  if ($a_enrole_id) {
33  $this->path_postfix = '/campusconnect/member_status/' . (int) $a_enrole_id;
34  }
35  if ($a_details && $a_enrole_id) {
36  $this->path_postfix .= '/details';
37  }
38 
39  try {
40  $this->prepareConnection();
41  $this->setHeader(array());
42  if ($a_details) {
43  $this->addHeader('Accept', 'application/json');
44  }
45  $this->curl->setOpt(CURLOPT_HTTPHEADER, $this->getHeader());
46  $res = $this->call();
47 
48  if (strpos($res, 'http') === 0) {
49  $json = file_get_contents($res);
50  $ecs_result = new ilECSResult($json);
51  } else {
52  $ecs_result = new ilECSResult($res);
53  }
54 
55  // Return ECSEContentDetails for details switch
56  if ($a_details) {
58  $this->logger->debug(print_r($res, true));
59  $details->loadFromJson($ecs_result->getResult());
60  return $details;
61  }
62  $enrolment = new ilECSEnrolmentStatus();
63  $enrolment->loadFromJson($ecs_result->getResult());
64  return $enrolment;
65  } catch (ilCurlConnectionException $e) {
66  throw new ilECSConnectorException('Error calling ECS service: ' . $e->getMessage());
67  }
68  }
69 
70 
74  public function addEnrolmentStatus(ilECSEnrolmentStatus $enrolment, int $a_target_mid)
75  {
76  $this->logger->info('Add new enrolment status');
77 
78  $this->path_postfix = '/campusconnect/member_status';
79 
80  try {
81  $this->prepareConnection();
82 
83  $this->addHeader('Content-Type', 'application/json');
84  $this->addHeader('Accept', 'application/json');
85  $this->addHeader(ilECSConnector::HEADER_MEMBERSHIPS, (string) $a_target_mid);
86  #$this->addHeader(ilECSConnector::HEADER_MEMBERSHIPS, 1);
87 
88  $this->curl->setOpt(CURLOPT_HTTPHEADER, $this->getHeader());
89  $this->curl->setOpt(CURLOPT_POST, true);
90  $this->curl->setOpt(CURLOPT_POSTFIELDS, json_encode($enrolment, JSON_THROW_ON_ERROR));
91  $ret = $this->call();
92 
93  $info = $this->curl->getInfo(CURLINFO_HTTP_CODE);
94 
95  $this->logger->debug(': Checking HTTP status...');
96  if ($info !== self::HTTP_CODE_CREATED) {
97  $this->logger->debug(': Cannot create auth resource, did not receive HTTP 201. ');
98  $this->logger->debug(': POST was: ' . print_r($enrolment, true));
99  $this->logger->debug(': HTTP code: ' . $info);
100  throw new ilECSConnectorException('Received HTTP status code: ' . $info);
101  }
102  $this->logger->debug(': ... got HTTP 201 (created)');
103 
104  $result = new ilECSResult($ret);
105  $enrolment_res = $result->getResult();
106 
107  $this->logger->debug(': ... Received result: ' . print_r($enrolment_res, true));
108 
109  return $enrolment_res;
110  } catch (ilCurlConnectionException $exc) {
111  throw new ilECSConnectorException('Error calling ECS service: ' . $exc->getMessage());
112  }
113  }
114 }
$res
Definition: ltiservices.php:69
addHeader(string $a_name, string $a_value)
Add Header.
Presentation of ecs content details (http://...campusconnect/courselinks/id/details) ...
addEnrolmentStatus(ilECSEnrolmentStatus $enrolment, int $a_target_mid)
Add new enrolment status.
Presentation of ecs enrolment status.
array $details
Details for error message relating to last request processed.
Definition: System.php:109
Connector for course member ressource.
setHeader(array $a_header_strings)
prepareConnection()
prepare connection
getEnrolmentStatus($a_enrole_id=0, $a_details=false)
Get single directory tree.