|
|
|
@ -1671,36 +1671,55 @@ function get_work_user_list_from_documents( |
|
|
|
|
if ($getCount) { |
|
|
|
|
$select = " SELECT count() as count "; |
|
|
|
|
} else { |
|
|
|
|
$select = " SELECT DISTINCT u.firstname, u.lastname, u.user_id, d.title, d.id as document_id"; |
|
|
|
|
$select1 = " SELECT DISTINCT u.firstname, u.lastname, u.user_id, w.title, w.document_id document_id, w.id"; |
|
|
|
|
$select2 = " SELECT DISTINCT u.firstname, u.lastname, u.user_id, d.title, d.id document_id, 0"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT); |
|
|
|
|
$documentTable = Database::get_course_table(TABLE_DOCUMENT); |
|
|
|
|
$workTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION); |
|
|
|
|
$workRelDocument = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT); |
|
|
|
|
|
|
|
|
|
$userTable = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
|
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
|
$courseRelUserTable = Database::get_main_table(TABLE_MAIN_COURSE_USER); |
|
|
|
|
|
|
|
|
|
$courseId = api_get_course_int_id(); |
|
|
|
|
$sessionId = api_get_session_id(); |
|
|
|
|
|
|
|
|
|
$userCondition = null; |
|
|
|
|
if (!empty($studentId )) { |
|
|
|
|
$studentId = intval($studentId); |
|
|
|
|
$userCondition = "AND cu.user_id = $studentId "; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sql = " $select FROM $userTable u |
|
|
|
|
INNER JOIN $courseRelUserTable as cu ON (cu.user_id = u.user_id) |
|
|
|
|
INNER JOIN $courseTable c ON (c.code = cu.course_code) |
|
|
|
|
LEFT JOIN $table w_rel_doc ON (w_rel_doc.c_id = c.id) |
|
|
|
|
INNER JOIN $documentTable d ON (d.id = w_rel_doc.document_id AND d.c_id = w_rel_doc.c_id) |
|
|
|
|
LEFT JOIN $workTable w ON (w_rel_doc.c_id = w.c_id AND w.filetype = 'file' ) |
|
|
|
|
WHERE |
|
|
|
|
d.c_id = $courseId |
|
|
|
|
$userCondition |
|
|
|
|
$whereCondition"; |
|
|
|
|
if (empty($studentId)) { |
|
|
|
|
$studentId = api_get_user_id(); |
|
|
|
|
} |
|
|
|
|
$studentId = intval($studentId); |
|
|
|
|
$userCondition = " AND u.user_id = $studentId "; |
|
|
|
|
$sessionCondition = " AND w.session_id = $sessionId "; |
|
|
|
|
|
|
|
|
|
$sql = " ( |
|
|
|
|
$select1 FROM $userTable u |
|
|
|
|
INNER JOIN $workTable w ON (u.user_id = w.user_id AND w.active = 1 AND w.filetype = 'file') |
|
|
|
|
WHERE |
|
|
|
|
w.c_id = $courseId |
|
|
|
|
$userCondition |
|
|
|
|
$sessionCondition |
|
|
|
|
$whereCondition |
|
|
|
|
|
|
|
|
|
) UNION ( |
|
|
|
|
$select2 FROM $workTable w |
|
|
|
|
INNER JOIN $workRelDocument w_rel ON (w_rel.work_id = w.id AND w.active = 1) |
|
|
|
|
INNER JOIN $documentTable d ON (w_rel.document_id = d.id AND d.c_id = w.c_id) |
|
|
|
|
INNER JOIN $userTable u ON (u.user_id = $studentId) |
|
|
|
|
WHERE |
|
|
|
|
w.c_id = $courseId |
|
|
|
|
$sessionCondition AND |
|
|
|
|
d.id NOT IN |
|
|
|
|
(SELECT w.document_id id FROM $workTable w |
|
|
|
|
WHERE |
|
|
|
|
user_id = $studentId AND |
|
|
|
|
c_id = $courseId AND |
|
|
|
|
filetype = 'file' AND |
|
|
|
|
active = 1 |
|
|
|
|
$sessionCondition |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
"; |
|
|
|
|
|
|
|
|
|
$start = intval($start); |
|
|
|
|
$limit = intval($limit); |
|
|
|
@ -1710,6 +1729,7 @@ function get_work_user_list_from_documents( |
|
|
|
|
|
|
|
|
|
$sql .= " ORDER BY $column $direction"; |
|
|
|
|
$sql .= " LIMIT $start, $limit"; |
|
|
|
|
|
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
|
|
|
|
|
$currentUserId = api_get_user_id(); |
|
|
|
@ -1719,41 +1739,75 @@ function get_work_user_list_from_documents( |
|
|
|
|
return $result['count']; |
|
|
|
|
} else { |
|
|
|
|
$workList = array(); |
|
|
|
|
|
|
|
|
|
$urlAdd = api_get_path(WEB_CODE_PATH).'work/upload_from_template.php?'.api_get_cidreq(); |
|
|
|
|
$urlEdit = api_get_path(WEB_CODE_PATH).'work/edit.php?'.api_get_cidreq(); |
|
|
|
|
$urlDelete = api_get_path(WEB_CODE_PATH).'work/work_list.php?action=delete&'.api_get_cidreq(); |
|
|
|
|
$urlView = api_get_path(WEB_CODE_PATH).'work/view.php?'.api_get_cidreq(); |
|
|
|
|
|
|
|
|
|
$editIcon = Display::return_icon('edit.png', get_lang('Edit')); |
|
|
|
|
$addIcon = Display::return_icon('add.png', get_lang('Add')); |
|
|
|
|
$deleteIcon = Display::return_icon('delete.png', get_lang('Delete')); |
|
|
|
|
$viewIcon = Display::return_icon('default.png', get_lang('View')); |
|
|
|
|
|
|
|
|
|
$allowEdition = api_get_course_setting('student_delete_own_publication'); |
|
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
|
$userId = $row['user_id']; |
|
|
|
|
$documentId = $row['document_id']; |
|
|
|
|
$itemId = $row['id']; |
|
|
|
|
|
|
|
|
|
if (empty($documentId)) { |
|
|
|
|
$url = $urlEdit.'&item_id='.$row['id'].'&id='.$workId; |
|
|
|
|
$editLink = Display::url($editIcon, $url); |
|
|
|
|
if ($allowEdition == false) { |
|
|
|
|
$editLink = null; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$documentToWork = getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $userId); |
|
|
|
|
if (empty($documentToWork)) { |
|
|
|
|
$url = $urlAdd.'&document_id='.$documentId.'&id='.$workId; |
|
|
|
|
$editLink = Display::url($addIcon, $url); |
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
$row['title'] = $documentToWork['title']; |
|
|
|
|
$row['sent_date'] = $documentToWork['sent_date']; |
|
|
|
|
$newWorkId = $documentToWork['id']; |
|
|
|
|
$url = $urlEdit.'&item_id='.$newWorkId.'&id='.$workId; |
|
|
|
|
$editLink = Display::url($editIcon, $url); |
|
|
|
|
|
|
|
|
|
$documentToWork = getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $userId); |
|
|
|
|
if ($allowEdition == false) { |
|
|
|
|
$editLink = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (empty($documentToWork)) { |
|
|
|
|
$url = $urlAdd.'&document_id='.$documentId.'&id='.$workId; |
|
|
|
|
$link = Display::url($addIcon, $url); |
|
|
|
|
if ($allowEdition && !empty($itemId)) { |
|
|
|
|
$deleteLink = Display::url($deleteIcon, $urlDelete.'&item_id='.$itemId.'&id='.$workId); |
|
|
|
|
} else { |
|
|
|
|
$row['title'] = $documentToWork['title']; |
|
|
|
|
$row['sent_date'] = $documentToWork['sent_date']; |
|
|
|
|
$newWorkId = $documentToWork['id']; |
|
|
|
|
$url = $urlEdit.'&id='.$newWorkId; |
|
|
|
|
$link = Display::url($editIcon, $url); |
|
|
|
|
$deleteLink = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$viewLink = null; |
|
|
|
|
if (!empty($itemId)) { |
|
|
|
|
$viewLink = Display::url($viewIcon, $urlView.'&id='.$itemId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$row['type'] = build_document_icon_tag('file', $row['file']); |
|
|
|
|
|
|
|
|
|
if (!empty($row['sent_date'])) { |
|
|
|
|
$row['sent_date'] = api_get_local_time($row['sent_date']); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($userId == $currentUserId) { |
|
|
|
|
$row['actions'] = $link; |
|
|
|
|
$row['actions'] = $viewLink.$editLink.$deleteLink; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$workList[] = $row; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $workList; |
|
|
|
|
|
|
|
|
|
$session_id = api_get_session_id(); |
|
|
|
|
|
|
|
|
|
$group_id = api_get_group_id(); |
|
|
|
|
$course_info = api_get_course_info(api_get_course_id()); |
|
|
|
|
|
|
|
|
@ -2389,18 +2443,17 @@ function user_is_author($item_id, $user_id = null) |
|
|
|
|
$user_id = api_get_user_id(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$is_author = false; |
|
|
|
|
$item_to_edit_data = api_get_item_property_info(api_get_course_int_id(), 'work', $item_id, api_get_session_id()); |
|
|
|
|
$is_author = false; |
|
|
|
|
$data = api_get_item_property_info(api_get_course_int_id(), 'work', $item_id, api_get_session_id()); |
|
|
|
|
$is_allowed_to_edit = api_is_allowed_to_edit(); |
|
|
|
|
|
|
|
|
|
if ($is_allowed_to_edit) { |
|
|
|
|
$is_author = true; |
|
|
|
|
} else { |
|
|
|
|
if ($item_to_edit_data['insert_user_id'] == $user_id) { |
|
|
|
|
if ($data['insert_user_id'] == $user_id) { |
|
|
|
|
$is_author = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!$is_author) { |
|
|
|
|
//api_not_allowed(); |
|
|
|
|
return false; |
|
|
|
@ -2564,12 +2617,14 @@ function getDocumentToWork($documentId, $workId, $courseId) |
|
|
|
|
* @param int $documentId |
|
|
|
|
* @param int $workId |
|
|
|
|
* @param int $courseId |
|
|
|
|
* @param int $sessionId |
|
|
|
|
* @param int $userId |
|
|
|
|
* @param int $active |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
function getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $userId, $active = 1) |
|
|
|
|
{ |
|
|
|
|
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT); |
|
|
|
|
$workRel = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT); |
|
|
|
|
$work = Database::get_course_table(TABLE_STUDENT_PUBLICATION); |
|
|
|
|
|
|
|
|
|
$documentId = intval($documentId); |
|
|
|
@ -2579,7 +2634,7 @@ function getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $ |
|
|
|
|
$sessionId = intval($sessionId); |
|
|
|
|
$active = intval($active); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT w.* FROM $work w INNER JOIN $table rel ON (w.parent_id = rel.work_id) |
|
|
|
|
$sql = "SELECT w.* FROM $work w INNER JOIN $workRel rel ON (w.parent_id = rel.work_id) |
|
|
|
|
WHERE |
|
|
|
|
w.document_id = $documentId AND |
|
|
|
|
w.parent_id = $workId AND |
|
|
|
@ -2737,13 +2792,17 @@ function allowOnlySubscribedUser($userId, $workId, $courseId) |
|
|
|
|
/** |
|
|
|
|
* @param int $workId |
|
|
|
|
* @param array $courseInfo |
|
|
|
|
* @param int $documentId |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
function getDocumentTemplateFromWork($workId, $courseInfo) |
|
|
|
|
function getDocumentTemplateFromWork($workId, $courseInfo, $documentId) |
|
|
|
|
{ |
|
|
|
|
$documents = getAllDocumentToWork($workId, $courseInfo['real_id']); |
|
|
|
|
if (!empty($documents)) { |
|
|
|
|
foreach ($documents as $doc) { |
|
|
|
|
if ($documentId != $doc['document_id']) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
$docData = DocumentManager::get_document_data_by_id($doc['document_id'], $courseInfo['code']); |
|
|
|
|
$fileInfo = pathinfo($docData['path']); |
|
|
|
|
if ($fileInfo['extension'] == 'html') { |
|
|
|
@ -3201,7 +3260,7 @@ function addDir($params, $user_id, $courseInfo, $group_id, $session_id) |
|
|
|
|
filetype = 'folder', |
|
|
|
|
post_group_id = '".$group_id."', |
|
|
|
|
sent_date = '".$today."', |
|
|
|
|
qualification = '".(($params['qualification']!='') ? Database::escape_string($params['qualification']) : '') ."', |
|
|
|
|
qualification = '".(($params['qualification'] != '') ? Database::escape_string($params['qualification']) : '') ."', |
|
|
|
|
parent_id = '', |
|
|
|
|
qualificator_id = '', |
|
|
|
|
date_of_qualification = '0000-00-00 00:00:00', |
|
|
|
@ -3217,7 +3276,6 @@ function addDir($params, $user_id, $courseInfo, $group_id, $session_id) |
|
|
|
|
$id = Database::insert_id(); |
|
|
|
|
|
|
|
|
|
if ($id) { |
|
|
|
|
|
|
|
|
|
// Folder created |
|
|
|
|
api_item_property_update($courseInfo, 'work', $id, 'DirectoryCreated', $user_id, $group_id); |
|
|
|
|
updatePublicationAssignment($id, $params, $courseInfo, $group_id); |
|
|
|
@ -3253,6 +3311,27 @@ function agendaExistsForWork($workId, $courseInfo) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param int $workId |
|
|
|
|
* @param array $params |
|
|
|
|
* @param array $courseInfo |
|
|
|
|
*/ |
|
|
|
|
function updateWork($workId, $params, $courseInfo) |
|
|
|
|
{ |
|
|
|
|
$workTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION); |
|
|
|
|
$filteredParams = array( |
|
|
|
|
'description' => $params['description'], |
|
|
|
|
'qualification' => $params['qualification'], |
|
|
|
|
'weight' => $params['weight'], |
|
|
|
|
'allow_text_assignment' => $params['allow_text_assignment'], |
|
|
|
|
); |
|
|
|
|
Database::update( |
|
|
|
|
$workTable, |
|
|
|
|
$filteredParams, |
|
|
|
|
array('id = ? AND c_id = ?' => array($workId, $courseInfo['real_id'])) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param int $workId |
|
|
|
|
* @param array $params |
|
|
|
@ -3381,8 +3460,6 @@ function updatePublicationAssignment($workId, $params, $courseInfo, $group_id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param int $item_id |
|
|
|
|
* @param array course info |
|
|
|
@ -3407,16 +3484,15 @@ function deleteWorkItem($item_id, $courseInfo) |
|
|
|
|
if (($is_allowed_to_edit && $locked == false) || |
|
|
|
|
($locked == false AND $is_author && api_get_course_setting('student_delete_own_publication') == 1 && $work_data['qualificator_id'] == 0)) { |
|
|
|
|
//we found the current user is the author |
|
|
|
|
$queryString1 = "SELECT url, contains_file FROM ".$work_table." WHERE c_id = $course_id AND id = $item_id"; |
|
|
|
|
$result1 = Database::query($queryString1); |
|
|
|
|
$row = Database::fetch_array($result1); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT url, contains_file FROM ".$work_table." WHERE c_id = $course_id AND id = $item_id"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$row = Database::fetch_array($result); |
|
|
|
|
|
|
|
|
|
if (Database::num_rows($result1) > 0) { |
|
|
|
|
$queryString2 = "UPDATE $work_table SET active = 2 WHERE c_id = $course_id AND id = $item_id"; |
|
|
|
|
$queryString3 = "DELETE FROM $TSTDPUBASG WHERE c_id = $course_id AND publication_id = $item_id"; |
|
|
|
|
Database::query($queryString2); |
|
|
|
|
Database::query($queryString3); |
|
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
|
$sql = "UPDATE $work_table SET active = 2 WHERE c_id = $course_id AND id = $item_id"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
$sql = "DELETE FROM $TSTDPUBASG WHERE c_id = $course_id AND publication_id = $item_id"; |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
api_item_property_update($courseInfo, 'work', $item_id, 'DocumentDeleted', api_get_user_id()); |
|
|
|
|
$work = $row['url']; |
|
|
|
@ -3441,7 +3517,6 @@ function deleteWorkItem($item_id, $courseInfo) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $file_deleted; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|