Added external functions to find services

This commit is contained in:
Valentin Popov 2018-02-19 13:37:27 +04:00
parent 95c4cf061a
commit 43f0bf98d2

View File

@ -78,6 +78,86 @@ class local_webhooks_external extends external_api {
return new external_value(PARAM_BOOL, "The result of the operation.");
}
/**
* Returns description of method parameters.
*
* @return external_function_parameters
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function search_services_by_event_parameters() {
return new external_function_parameters(
array(
"eventname" => new external_value(PARAM_TEXT, "The name of the event.")
)
);
}
/**
* Search for services that contain the specified event.
*
* @param string $eventname
* @return array
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function search_services_by_event($eventname = "") {
$parameters = self::validate_parameters(self::search_services_by_event_parameters(), array("eventname" => $eventname));
$context = context_system::instance();
self::validate_context($context);
$result = array();
if ($listrecords = local_webhooks_search_services_by_event($parameters["eventname"])) {
foreach ($listrecords as $index => $record) {
$result[$index]["enable"] = $record->enable;
$result[$index]["id"] = $record->id;
$result[$index]["other"] = $record->other;
$result[$index]["title"] = $record->title;
$result[$index]["token"] = $record->token;
$result[$index]["type"] = $record->type;
$result[$index]["url"] = $record->url;
$result[$index]["events"] = array();
foreach ($record->events as $key => $value) {
$result[$index]["events"][] = array("name" => $key, "value" => $value);
}
}
}
return $result;
}
/**
* Returns description of method result value.
*
* @return external_description
* @since Moodle 2.2
*/
public static function search_services_by_event_returns() {
return new external_multiple_structure(
new external_single_structure(
array(
"id" => new external_value(PARAM_INT, "Service identifier."),
"enable" => new external_value(PARAM_INT, "Service status."),
"title" => new external_value(PARAM_TEXT, "Name of the service."),
"url" => new external_value(PARAM_URL, "URL address."),
"type" => new external_value(PARAM_TEXT, "Header type."),
"token" => new external_value(PARAM_TEXT, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_TEXT, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "Event name."),
"value" => new external_value(PARAM_INT, "Observation status.")
)
), "Observed events.", VALUE_OPTIONAL
)
), "Record about the service."
), "List of services."
);
}
/**
* Returns description of method parameters.
*