forked from UFSC/moodle-report-unasus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sistematcc.php
115 lines (88 loc) · 3.04 KB
/
sistematcc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
defined('MOODLE_INTERNAL') || die;
// Carrega o zend framework
include 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::autoload('Zend_Loader');
/**
* Classe para realizar requisições para o webservice do Sistema de TCC
*/
class report_unasus_SistemaTccClient {
/** @var string $url */
private $url;
/** @var string $consumer_key */
private $consumer_key;
/** @var \Zend_Http_Client $client */
private $client;
/**
* @param string $external_url Endereço do sistema de TCC
* @param string $consumer_key Consumer Key utilizado pela aplicação para realizar a autenticação
*/
function __construct($external_url, $consumer_key) {
// Faz o parse na URL para poder montá-la corretamente em seguida
$url = parse_url($external_url);
$new_url = "{$url['scheme']}://{$url['host']}";
if (!empty($url['port'])) {
$new_url .= ":{$url['port']}";
}
$this->url = $new_url;
$this->consumer_key = $consumer_key;
$this->client = new Zend_Http_Client($this->url);
}
/**
* @param int $tcc_definition_id Id do Tcc Definition
* @return mixed
*/
public function get_tcc_definition($tcc_definition_id) {
$params = array(
'consumer_key' => $this->consumer_key,
'tcc_definition_id' => $tcc_definition_id
);
$json = $this->post('/tcc_definition_service', $params);
$object = json_decode($json);
return $object;
}
/**
* @param array[int] $user_ids
* @return mixed
*/
public function get_report_data($user_ids) {
$params = array(
'consumer_key' => $this->consumer_key,
'user_ids' => $user_ids
);
$json = $this->post('/reportingservice', $params);
$object = json_decode($json);
return $object;
}
public function get_report_data_tcc($user_ids) {
$params = array(
'consumer_key' => $this->consumer_key,
'user_ids' => $user_ids
);
$json = $this->post('/reportingservice_tcc', $params);
$object = json_decode($json);
return $object;
}
/**
* Realiza as requisições via POST
*
* @param string $path Caminho para a requisição (deve iniciar com /)
* @param array $param Parâmetros que serão enviados (chave-valor)
* @return bool|string
*/
private function post($path, $param) {
/*
* Solução para enviar via post array do php
* http://php.net/manual/pt_BR/function.http-build-query.php
*/
$new_param = preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', http_build_query($param, null, '&'));
$this->client->setUri("{$this->url}{$path}");
$this->client->setRawData($new_param);
try {
$response = $this->client->request('POST');
} catch (Zend_Http_Client_Adapter_Exception $exception) {
return false;
}
return $response->isSuccessful() ? $response->getBody() : false;
}
}