WebServices: get course assignments

pull/3952/head
Angel Fernando Quiroz Campos 4 years ago
parent ba92e958d4
commit 9b8d71847f
  1. 72
      main/inc/lib/webservices/Rest.php
  2. 5
      main/webservices/api/v2.php
  3. 8
      main/work/work.lib.php

@ -52,6 +52,7 @@ class Rest extends WebService
const GET_COURSE_LEARNPATH = 'course_learnpath';
const GET_COURSE_LP_PROGRESS = 'course_lp_progress';
const GET_COURSE_LINKS = 'course_links';
const GET_COURSE_WORKS= 'course_works';
const SAVE_COURSE_NOTEBOOK = 'save_course_notebook';
@ -2513,6 +2514,77 @@ class Rest extends WebService
return $result;
}
public function getCourseWorks(): array
{
Event::event_access_tool(TOOL_STUDENTPUBLICATION);
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php';
$isAllowedToEdit = $this->user->getStatus() !== STUDENT;
$courseId = $this->course->getId();
$sessionId = $this->session ? $this->session->getId() : 0;
$courseInfo = api_get_course_info_by_id($this->course->getId());
$works = array_filter(
getWorkListTeacherData($courseId, $sessionId, 0, 0, 0, 'title', 'ASC', ''),
function (array $work) use ($isAllowedToEdit, $courseInfo, $courseId, $sessionId) {
if (!$isAllowedToEdit
&& !userIsSubscribedToWork($this->user->getId(), $work['id'], $courseId)
) {
return false;
}
$visibility = api_get_item_visibility($courseInfo, 'work', $work['id'], $sessionId);
if (!$isAllowedToEdit && $visibility != 1) {
return false;
}
return true;
}
);
return array_map(
function (array $work) use ($isAllowedToEdit, $courseInfo, $courseId, $sessionId) {
$work['type'] = 'work.png';
if (!$isAllowedToEdit) {
$workList = get_work_user_list(
0,
1000,
null,
null,
$work['id'],
' AND u.id = '.$this->user->getId()
);
$count = getTotalWorkComment($workList, $courseInfo);
$lastWork = getLastWorkStudentFromParentByUser($this->user->getId(), $work, $courseInfo);
$work['feedback'] = ' '.Display::label('0 '.get_lang('Feedback'), 'warning');
if (!empty($count)) {
$work['feedback'] = ' '.Display::label($count.' '.get_lang('Feedback'), 'info');
}
$work['last_upload'] = '';
if (!empty($lastWork)) {
$work['last_upload'] = !empty($lastWork['qualification'])
? $lastWork['qualification_rounded'].' - '
: '';
$work['last_upload'] .= api_get_local_time($lastWork['sent_date']);
}
}
return $work;
},
$works
);
}
public static function isAllowedByRequest(bool $inpersonate = false): bool
{
$username = $_GET['username'] ?? null;

@ -228,6 +228,11 @@ try {
$restApi->getCourseLinks()
);
break;
case Rest::GET_COURSE_WORKS:
$restResponse->setData(
$restApi->getCourseWorks()
);
break;
case Rest::SAVE_COURSE_NOTEBOOK:
$title = !empty($_POST['title']) ? $_POST['title'] : null;

@ -1596,8 +1596,11 @@ function getWorkListTeacherQuery(
parent_id = 0 AND
post_group_id = $groupIid
$whereCondition
ORDER BY `$column` $direction
LIMIT $start, $limit";
ORDER BY `$column` $direction";
if ($start != 0 && $limit != 0) {
$sql .= ' LIMIT $start, $limit';
}
return Database::query($sql);
}
@ -1639,6 +1642,7 @@ function getWorkListTeacherData(
while ($work = Database::fetch_array($result, 'ASSOC')) {
$workId = $work['id'];
$work['expires_on'] = empty($work['expires_on']) ? null : api_get_local_time($work['expires_on']);
$work['ends_on'] = empty($work['expires_on']) ? null : api_get_local_time($work['ends_on']);
$countUniqueAttempts = getUniqueStudentAttemptsTotal($workId, $groupId, $courseId, $sessionId);
$totalUsers = getStudentSubscribedToWork($workId, $courseId, $groupId, $sessionId, true);

Loading…
Cancel
Save