diff --git a/webservice/classes/reportbuilder/local/entities/service.php b/webservice/classes/reportbuilder/local/entities/service.php index d49786523cd..87ed6e34a19 100644 --- a/webservice/classes/reportbuilder/local/entities/service.php +++ b/webservice/classes/reportbuilder/local/entities/service.php @@ -91,10 +91,9 @@ class service extends base { )) ->add_joins($this->get_joins()) ->set_type(column::TYPE_TEXT) - ->add_field("{$tokenalias}.name") - ->add_field("{$tokenalias}.shortname") + ->add_fields("{$tokenalias}.name, {$tokenalias}.shortname") ->set_is_sortable(true) - ->add_callback(static function(string $value, \stdClass $row): string { + ->add_callback(static function(?string $value, \stdClass $row): string { $output = $value; $output .= \html_writer::tag('div', format_text($row->shortname), [ 'class' => 'small text-muted', diff --git a/webservice/classes/reportbuilder/local/systemreports/tokens.php b/webservice/classes/reportbuilder/local/systemreports/tokens.php index 937ee10a0c4..ff251136cf2 100644 --- a/webservice/classes/reportbuilder/local/systemreports/tokens.php +++ b/webservice/classes/reportbuilder/local/systemreports/tokens.php @@ -141,9 +141,10 @@ class tokens extends system_report { "{$entityservicealias}.id", "{$entityservicealias}.shortname", ])) - ->add_callback(static function(string $value, \stdClass $row): string { + ->add_callback(static function($value, \stdClass $row): string { global $OUTPUT; - $missingcapabilities = self::get_missing_capabilities((int)$row->userid, (int)$row->id, $row->shortname); + + $missingcapabilities = self::get_missing_capabilities((int) $row->userid, (int) $row->id, (string) $row->shortname); if (empty($missingcapabilities)) { return ''; } diff --git a/webservice/lib.php b/webservice/lib.php index 5b0a364be2a..f374d6c040a 100644 --- a/webservice/lib.php +++ b/webservice/lib.php @@ -454,11 +454,14 @@ class webservice { */ public function get_token_by_id_with_details($tokenid) { global $DB; + $sql = "SELECT t.id, t.token, u.id AS userid, u.firstname, u.lastname, s.name, t.creatorid - FROM {external_tokens} t, {user} u, {external_services} s - WHERE t.id=? AND t.tokentype = ? AND s.id = t.externalserviceid AND t.userid = u.id"; - $token = $DB->get_record_sql($sql, array($tokenid, EXTERNAL_TOKEN_PERMANENT), MUST_EXIST); - return $token; + FROM {external_tokens} t + LEFT JOIN {user} u ON u.id = t.userid + LEFT JOIN {external_services} s ON s.id = t.externalserviceid + WHERE t.id = ? AND t.tokentype = ?"; + + return $DB->get_record_sql($sql, [$tokenid, EXTERNAL_TOKEN_PERMANENT], MUST_EXIST); } /**