Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
moodle
moodle
Commits
38b9362a
Commit
38b9362a
authored
Mar 20, 2019
by
Eloy Lafuente
Browse files
Merge branch 'MDL-60340_master' of
git://github.com/dmonllao/moodle
parents
a1c99c02
7af6528e
Changes
4
Hide whitespace changes
Inline
Side-by-side
calendar/classes/local/api.php
View file @
38b9362a
...
...
@@ -119,6 +119,7 @@ class api {
* @param int|null $aftereventid Only return events after this one
* @param int $limitnum Limit results to this amount (between 1 and 50)
* @param bool $lmittononsuspendedevents Limit course events to courses the user is active in (not suspended).
* @param \stdClass|null $user The user id or false for $USER
* @return array A list of action_event_interface objects
* @throws \moodle_exception
*/
...
...
@@ -127,10 +128,15 @@ class api {
$timesortto
=
null
,
$aftereventid
=
null
,
$limitnum
=
20
,
$limittononsuspendedevents
=
false
$limittononsuspendedevents
=
false
,
?
\
stdClass
$user
=
null
)
{
global
$USER
;
if
(
!
$user
)
{
$user
=
$USER
;
}
if
(
is_null
(
$timesortfrom
)
&&
is_null
(
$timesortto
))
{
throw
new
\
moodle_exception
(
"Must provide a timesort to and/or from value"
);
}
...
...
@@ -139,6 +145,7 @@ class api {
throw
new
\
moodle_exception
(
"Limit must be between 1 and 50 (inclusive)"
);
}
\
core_calendar\local\event\container
::
set_requesting_user
(
$user
->
id
);
$vault
=
\
core_calendar\local\event\container
::
get_event_vault
();
$afterevent
=
null
;
...
...
@@ -146,7 +153,7 @@ class api {
$afterevent
=
$event
;
}
return
$vault
->
get_action_events_by_timesort
(
$
USER
,
$timesortfrom
,
$timesortto
,
$afterevent
,
$limitnum
,
return
$vault
->
get_action_events_by_timesort
(
$
user
,
$timesortfrom
,
$timesortto
,
$afterevent
,
$limitnum
,
$limittononsuspendedevents
);
}
...
...
calendar/externallib.php
View file @
38b9362a
...
...
@@ -406,7 +406,8 @@ class core_calendar_external extends external_api {
'aftereventid'
=>
new
external_value
(
PARAM_INT
,
'The last seen event id'
,
VALUE_DEFAULT
,
0
),
'limitnum'
=>
new
external_value
(
PARAM_INT
,
'Limit number'
,
VALUE_DEFAULT
,
20
),
'limittononsuspendedevents'
=>
new
external_value
(
PARAM_BOOL
,
'Limit the events to courses the user is not suspended in'
,
VALUE_DEFAULT
,
false
)
'Limit the events to courses the user is not suspended in'
,
VALUE_DEFAULT
,
false
),
'userid'
=>
new
external_value
(
PARAM_INT
,
'The user id'
,
VALUE_DEFAULT
,
null
),
)
);
}
...
...
@@ -419,15 +420,16 @@ class core_calendar_external extends external_api {
* @param null|int $timesortto Events before this time (inclusive)
* @param null|int $aftereventid Get events with ids greater than this one
* @param int $limitnum Limit the number of results to this value
* @param null|int $userid The user id
* @return array
*/
public
static
function
get_calendar_action_events_by_timesort
(
$timesortfrom
=
0
,
$timesortto
=
null
,
$aftereventid
=
0
,
$limitnum
=
20
,
$limittononsuspendedevents
=
false
)
{
$aftereventid
=
0
,
$limitnum
=
20
,
$limittononsuspendedevents
=
false
,
$userid
=
null
)
{
global
$CFG
,
$PAGE
,
$USER
;
require_once
(
$CFG
->
dirroot
.
'/calendar/lib.php'
);
$user
=
null
;
$params
=
self
::
validate_parameters
(
self
::
get_calendar_action_events_by_timesort_parameters
(),
[
...
...
@@ -435,10 +437,17 @@ class core_calendar_external extends external_api {
'timesortto'
=>
$timesortto
,
'aftereventid'
=>
$aftereventid
,
'limitnum'
=>
$limitnum
,
'limittononsuspendedevents'
=>
$limittononsuspendedevents
'limittononsuspendedevents'
=>
$limittononsuspendedevents
,
'userid'
=>
$userid
,
]
);
$context
=
\
context_user
::
instance
(
$USER
->
id
);
if
(
$params
[
'userid'
])
{
$user
=
\
core_user
::
get_user
(
$params
[
'userid'
]);
}
else
{
$user
=
$USER
;
}
$context
=
\
context_user
::
instance
(
$user
->
id
);
self
::
validate_context
(
$context
);
if
(
empty
(
$params
[
'aftereventid'
]))
{
...
...
@@ -451,7 +460,8 @@ class core_calendar_external extends external_api {
$params
[
'timesortto'
],
$params
[
'aftereventid'
],
$params
[
'limitnum'
],
$params
[
'limittononsuspendedevents'
]
$params
[
'limittononsuspendedevents'
],
$user
);
$exportercache
=
new
events_related_objects_cache
(
$events
);
...
...
calendar/tests/externallib_test.php
View file @
38b9362a
...
...
@@ -679,6 +679,23 @@ class core_calendar_externallib_testcase extends externallib_advanced_testcase {
$this
->
assertEmpty
(
$result
[
'events'
]);
$this
->
assertNull
(
$result
[
'firstid'
]);
$this
->
assertNull
(
$result
[
'lastid'
]);
// Requesting action events on behalf of another user.
$this
->
setAdminUser
();
$result
=
core_calendar_external
::
get_calendar_action_events_by_timesort
(
5
,
null
,
0
,
20
,
false
,
$user
->
id
);
$result
=
external_api
::
clean_returnvalue
(
core_calendar_external
::
get_calendar_action_events_by_timesort_returns
(),
$result
);
$events
=
$result
[
'events'
];
$this
->
assertCount
(
4
,
$events
);
$this
->
assertEquals
(
'Event 5'
,
$events
[
0
][
'name'
]);
$this
->
assertEquals
(
'Event 6'
,
$events
[
1
][
'name'
]);
$this
->
assertEquals
(
'Event 7'
,
$events
[
2
][
'name'
]);
$this
->
assertEquals
(
'Event 8'
,
$events
[
3
][
'name'
]);
$this
->
assertEquals
(
$event5
->
id
,
$result
[
'firstid'
]);
$this
->
assertEquals
(
$event8
->
id
,
$result
[
'lastid'
]);
}
/**
...
...
@@ -739,6 +756,24 @@ class core_calendar_externallib_testcase extends externallib_advanced_testcase {
$this
->
assertEmpty
(
$result
[
'events'
]);
$this
->
assertNull
(
$result
[
'firstid'
]);
$this
->
assertNull
(
$result
[
'lastid'
]);
// Requesting action events on behalf of another user.
$this
->
setAdminUser
();
$result
=
core_calendar_external
::
get_calendar_action_events_by_timesort
(
null
,
5
,
0
,
20
,
false
,
$user
->
id
);
$result
=
external_api
::
clean_returnvalue
(
core_calendar_external
::
get_calendar_action_events_by_timesort_returns
(),
$result
);
$events
=
$result
[
'events'
];
$this
->
assertCount
(
4
,
$events
);
$this
->
assertEquals
(
'Event 1'
,
$events
[
0
][
'name'
]);
$this
->
assertEquals
(
'Event 2'
,
$events
[
1
][
'name'
]);
$this
->
assertEquals
(
'Event 3'
,
$events
[
2
][
'name'
]);
$this
->
assertEquals
(
'Event 4'
,
$events
[
3
][
'name'
]);
$this
->
assertEquals
(
$event1
->
id
,
$result
[
'firstid'
]);
$this
->
assertEquals
(
$event4
->
id
,
$result
[
'lastid'
]);
}
/**
...
...
calendar/tests/local_api_test.php
View file @
38b9362a
...
...
@@ -125,6 +125,10 @@ class core_calendar_local_api_testcase extends advanced_testcase {
$result
=
\
core_calendar\local\api
::
get_action_events_by_timesort
(
9
);
$this
->
assertEmpty
(
$result
);
$this
->
setAdminUser
();
$result
=
\
core_calendar\local\api
::
get_action_events_by_timesort
(
5
,
null
,
null
,
20
,
false
,
$user
);
$this
->
assertCount
(
4
,
$result
);
}
/**
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment