Improving the asignment tool, adding a new way to upload files when "templates" are loaded see BT#6916

1.9.x
Julio Montoya 12 years ago
parent 324ee13ef6
commit 803e850264
  1. 31
      main/inc/ajax/model.ajax.php
  2. 15
      main/work/add_document.php
  3. 2
      main/work/upload_from_template.php
  4. 520
      main/work/work.lib.php
  5. 35
      main/work/work.php
  6. 16
      main/work/work_list.php
  7. 73
      main/work/work_list_all.php
  8. 48
      tests/main/work/work.lib.test.php

@ -343,6 +343,7 @@ switch ($action) {
$columns = array('type', 'firstname', 'lastname', 'title', 'sent_date', 'actions');
}
$result = get_work_user_list($start, $limit, $sidx, $sord, $work_id, $where_condition);
break;
case 'get_work_user_list_others':
if (isset($_GET['type']) && $_GET['type'] == 'simple') {
@ -359,17 +360,25 @@ switch ($action) {
} else {
$columns = array('type', 'firstname', 'lastname', 'title', 'sent_date', 'actions');
}
$where_condition .= " AND u.user_id = ".api_get_user_id();
$result = get_work_user_list($start, $limit, $sidx, $sord, $work_id, $where_condition);
$documents = getAllDocumentToWork($work_id, api_get_course_int_id());
if (empty($documents)) {
$where_condition .= " AND u.user_id = ".api_get_user_id();
$result = get_work_user_list($start, $limit, $sidx, $sord, $work_id, $where_condition);
} else {
$result = get_work_user_list_from_documents($start, $limit, $sidx, $sord, $work_id, api_get_user_id(), $where_condition);
}
break;
case 'get_exercise_results':
$course = api_get_course_info();
//used inside get_exam_results_data()
$documentPath = api_get_path(SYS_COURSE_PATH) . $course['path'] . "/document";
if ($is_allowedToEdit) {
$columns = array('firstname', 'lastname', 'username', 'group_name', 'exe_duration', 'start_date', 'exe_date', 'score', 'status', 'lp', 'actions');
}
$result = get_exam_results_data($start, $limit, $sidx, $sord, $exercise_id, $where_condition);
// Used inside get_exam_results_data()
$documentPath = api_get_path(SYS_COURSE_PATH) . $course['path'] . "/document";
if ($is_allowedToEdit) {
$columns = array('firstname', 'lastname', 'username', 'group_name', 'exe_duration', 'start_date', 'exe_date', 'score', 'status', 'lp', 'actions');
}
$result = get_exam_results_data($start, $limit, $sidx, $sord, $exercise_id, $where_condition);
break;
case 'get_hotpotatoes_exercise_results':
$course = api_get_course_info();
@ -379,7 +388,13 @@ switch ($action) {
break;
case 'get_sessions':
$columns = array('name', 'nbr_courses', 'nbr_users', 'category_name', 'date_start','date_end', 'coach_name', 'session_active', 'visibility');
$result = SessionManager::get_sessions_admin(array('where'=> $where_condition, 'order'=>"$sidx $sord", 'limit'=> "$start , $limit"));
$result = SessionManager::get_sessions_admin(
array(
'where' => $where_condition,
'order' => "$sidx $sord",
'limit'=> "$start , $limit"
)
);
break;
case 'get_timelines':
$columns = array('headline', 'actions');

@ -46,7 +46,7 @@ switch ($action) {
case 'delete':
if (!empty($workId) && !empty($docId)) {
deleteDocumentToWork($docId, $workId, api_get_course_int_id());
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId;
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId.'&'.api_get_cidreq();
header('Location: '.$url);
exit;
}
@ -64,7 +64,7 @@ if (empty($docId)) {
$documentId = $doc['document_id'];
$docData = DocumentManager::get_document_data_by_id($documentId, $courseInfo['code']);
if ($docData) {
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?action=delete&id='.$workId.'&document_id='.$documentId;
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?action=delete&id='.$workId.'&document_id='.$documentId.'&'.api_get_cidreq();
$link = Display::url(get_lang('Delete'), $url);
echo $docData['title'].' '.$link.'<br />';
}
@ -89,7 +89,8 @@ if (empty($docId)) {
$message = null;
$documentInfo = DocumentManager::get_document_data_by_id($docId, $courseInfo['code']);
$form = new FormValidator('add_doc', 'post', api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId.'&document_id='.$docId);
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId.'&document_id='.$docId.'&'.api_get_cidreq();
$form = new FormValidator('add_doc', 'post', $url);
$form->addElement('header', get_lang('AddDocument'));
$form->addElement('hidden', 'add_doc', '1');
$form->addElement('hidden', 'id', $workId);
@ -104,7 +105,7 @@ if (empty($docId)) {
if (empty($data)) {
addDocumentToWork($docId, $workId, api_get_course_int_id());
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId;
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId.'&'.api_get_cidreq();
header('Location: '.$url);
exit;
} else {
@ -112,7 +113,7 @@ if (empty($docId)) {
}
}
Display :: display_header(null);
Display::display_header(null);
echo $message;
$form->display();
}
@ -122,6 +123,7 @@ if (empty($docId)) {
*
*
* 1. Create tables
*
CREATE TABLE IF NOT EXISTS c_student_publication_rel_document (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
work_id INT NOT NULL,
@ -138,9 +140,12 @@ CREATE TABLE IF NOT EXISTS c_student_publication_rel_user (
CREATE TABLE IF NOT EXISTS c_student_publication_comment (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, work_id INT NOT NULL, c_id INT NOT NULL, comment text, user_id int NOT NULL, sent_at datetime NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE c_student_publication ADD COLUMN document_id int DEFAULT 0;
*
* Update configuration.php:
* $_configuration['add_document_to_work'] = true;
*
*/

@ -19,6 +19,7 @@ require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php';
$this_section = SECTION_COURSES;
$work_id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
$documentId = isset($_REQUEST['document_id']) ? intval($_REQUEST['document_id']) : null;
$is_allowed_to_edit = api_is_allowed_to_edit();
$course_id = api_get_course_int_id();
@ -62,6 +63,7 @@ $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('UploadFromTemplate
$form = new FormValidator('form', 'POST', api_get_self()."?".api_get_cidreq()."&id=".$work_id, '', array('enctype' => "multipart/form-data"));
setWorkUploadForm($form, false);
$form->addElement('hidden', 'document_id', $documentId);
$form->addElement('hidden', 'id', $work_id);
$form->addElement('hidden', 'sec_token', $token);

@ -170,18 +170,18 @@ function get_date_from_group($group)
*/
function create_group_date_select($form, $prefix = '')
{
$minute = range(10, 59);
$d_year = date('Y');
array_unshift($minute, '00', '01', '02', '03', '04', '05', '06', '07', '08', '09');
$minute = range(10, 59);
$d_year = date('Y');
array_unshift($minute, '00', '01', '02', '03', '04', '05', '06', '07', '08', '09');
$group_name = array(
$group_name = array(
$form->createElement('select', $prefix.'day', '', array_combine(range(1, 31), range(1, 31))),
$form->createElement('select', $prefix.'month', '', array_combine(range(1, 12), api_get_months_long())),
$form->createElement('select', $prefix.'year', '', array($d_year => $d_year, $d_year + 1 => $d_year + 1)),
$form->createElement('select', $prefix.'hour', '', array_combine(range(0, 23), range(0, 23))),
$form->createElement('select', $prefix.'minute', '', $minute)
);
return $group_name;
return $group_name;
}
/**
@ -192,7 +192,7 @@ function get_work_data_by_path($path)
{
$path = Database::escape_string($path);
$course_id = api_get_course_int_id();
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$sql = "SELECT * FROM ".$work_table." WHERE url = '$path' AND c_id = $course_id ";
$result = Database::query($sql);
$return = array();
@ -234,7 +234,12 @@ function get_work_count_by_student($user_id, $work_id)
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$sql = "SELECT COUNT(*) as count FROM $work_table
WHERE c_id = $course_id AND parent_id = $work_id AND user_id = $user_id AND active = 1 AND session_id = $session_id ";
WHERE
c_id = $course_id AND
parent_id = $work_id AND
user_id = $user_id AND
active = 1 AND
session_id = $session_id ";
$result = Database::query($sql);
$return = 0;
if (Database::num_rows($result)) {
@ -371,6 +376,7 @@ function getUniqueStudentAttempts($workId, $groupId, $course_id, $sessionId, $us
$studentCondition = null;
if (!empty($onlyUserList)) {
$onlyUserList = array_map('intval', $onlyUserList);
$studentCondition = "AND u.user_id IN ('".implode("', '", $onlyUserList)."') ";
} else {
if (empty($userId)) {
@ -612,8 +618,10 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
$action .= Display::return_icon('edit_na.png', get_lang('Edit'), array(), ICON_SIZE_SMALL);
$action .= Display::return_icon('delete_na.png', get_lang('Delete'), array(), ICON_SIZE_SMALL);
} else {
$action .= '<a href="'.api_get_path(WEB_CODE_PATH).'work/edit_work.php?cidReq='.api_get_course_id().'&origin='.$origin.'&gradebook='.$gradebook.'&id='.$workId.'">'.Display::return_icon('edit.png', get_lang('Modify'), array(), ICON_SIZE_SMALL).'</a>';
$action .= ' <a href="'.api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().'&origin='.$origin.'&gradebook='.$gradebook.'&delete_dir='.$workId.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;" title="'.get_lang('DirDelete').'" >'.Display::return_icon('delete.png',get_lang('DirDelete'),'',ICON_SIZE_SMALL).'</a>';
$action .= '<a href="'.api_get_path(WEB_CODE_PATH).'work/edit_work.php?cidReq='.api_get_course_id().'&origin='.$origin.'&gradebook='.$gradebook.'&id='.$workId.'">'.
Display::return_icon('edit.png', get_lang('Modify'), array(), ICON_SIZE_SMALL).'</a>';
$action .= ' <a href="'.api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().'&origin='.$origin.'&gradebook='.$gradebook.'&delete_dir='.$workId.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;" title="'.get_lang('DirDelete').'" >'.
Display::return_icon('delete.png',get_lang('DirDelete'),'',ICON_SIZE_SMALL).'</a>';
}
$row[] = $action;
} else {
@ -742,8 +750,10 @@ function showTeacherWorkGrid()
$token = null;
$baseUrl = api_get_path(WEB_CODE_PATH).'work/';
$action_links = 'function action_formatter(cellvalue, options, rowObject) {
return \'<a href="'.$baseUrl.'edit_work.php?'.api_get_cidreq().'&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="'.$baseUrl.'work.php?'.api_get_cidreq().'&action=delete_dir&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
return \'<a href="'.$baseUrl.'edit_work.php?'.api_get_cidreq().'&id=\'+options.rowId+\'">'.
Display::return_icon('edit.png', get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="'.$baseUrl.'work.php?'.api_get_cidreq().'&action=delete_dir&id=\'+options.rowId+\'">'.
Display::return_icon('delete.png', get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
'\';
}';
@ -797,8 +807,8 @@ function showTeacherWorkGrid()
// TODO: This function is a candidate for removal, it is not used anywhere.
function build_work_directory_selector($folders, $curdirpath, $group_dir = '')
{
$form = '<form name="selector" action="'.api_get_self().'?'.api_get_cidreq().'" method="POST">'."\n";
$form .= get_lang('CurrentDirectory').' <select name="curdirpath" onchange="javascript: document.selector.submit();">'."\n";
$form = '<form name="selector" action="'.api_get_self().'?'.api_get_cidreq().'" method="POST">';
$form .= get_lang('CurrentDirectory').' <select name="curdirpath" onchange="javascript: document.selector.submit();">';
//group documents cannot be uploaded in the root
if ($group_dir == '') {
$form .= '<option value="/">/ ('.get_lang('Root').')</option>';
@ -817,8 +827,8 @@ function build_work_directory_selector($folders, $curdirpath, $group_dir = '')
}
}
$form .= '</select>'."\n";
$form .= '<noscript><input type="submit" name="change_path" value="'.get_lang('Ok').'" /></noscript>'."\n";
$form .= '</select>';
$form .= '<noscript><input type="submit" name="change_path" value="'.get_lang('Ok').'" /></noscript>';
$form .= '</form>';
return $form;
@ -1064,8 +1074,9 @@ function updateWorkUrl($id, $new_path, $parent_id)
} else {
$row = Database::fetch_array($res);
$filename = basename($row['url']);
$new_url = $new_path .$filename;
$sql2 = "UPDATE $table SET url = '$new_url', parent_id = '$parent_id' WHERE c_id = $course_id AND id = $id";
$new_url = $new_path.$filename;
$new_url = Database::escape_string($new_url);
$sql2 = "UPDATE $table SET url = '$new_url', parent_id = '$parent_id' WHERE c_id = $course_id AND id = $id";
$res2 = Database::query($sql2);
return $res2;
}
@ -1188,18 +1199,19 @@ function insert_all_directory_in_course_table($base_work_dir)
for($i = 0; $i < count($only_dir); $i++) {
global $work_table;
$sql_insert_all= "INSERT INTO " . $work_table . " SET
c_id = '$course_id',
url = '" . $only_dir[$i] . "',
title = '',
description = '',
author = '',
active = '0',
accepted = '1',
filetype = 'folder',
post_group_id = '".$group_id."',
sent_date = '0000-00-00 00:00:00' ";
Database::query($sql_insert_all);
$url = Database::escape_string($only_dir[$i]);
$sql = "INSERT INTO " . $work_table . " SET
c_id = '$course_id',
url = '".$url."',
title = '',
description = '',
author = '',
active = '0',
accepted = '1',
filetype = 'folder',
post_group_id = '".$group_id."',
sent_date = '0000-00-00 00:00:00' ";
Database::query($sql);
}
}
@ -1384,12 +1396,29 @@ function get_work_id($path)
$TBL_STUDENT_PUBLICATION = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$TBL_PROP_TABLE = Database::get_course_table(TABLE_ITEM_PROPERTY);
$course_id = api_get_course_int_id();
$path = Database::escape_string($path);
if (api_is_allowed_to_edit()) {
$sql = "SELECT work.id FROM $TBL_STUDENT_PUBLICATION AS work, $TBL_PROP_TABLE AS props
WHERE props.c_id = $course_id AND work.c_id = $course_id AND props.tool='work' AND work.id=props.ref AND work.url LIKE 'work/".$path."%' AND work.filetype='file' AND props.visibility<>'2'";
WHERE
props.c_id = $course_id AND
work.c_id = $course_id AND
props.tool='work' AND
work.id=props.ref AND
work.url LIKE 'work/".$path."%' AND
work.filetype='file' AND
props.visibility<>'2'";
} else {
$sql = "SELECT work.id FROM $TBL_STUDENT_PUBLICATION AS work,$TBL_PROP_TABLE AS props
WHERE props.c_id = $course_id AND work.c_id = $course_id AND props.tool='work' AND work.id=props.ref AND work.url LIKE 'work/".$path."%' AND work.filetype='file' AND props.visibility<>'2' AND props.lastedit_user_id='".api_get_user_id()."'";
WHERE
props.c_id = $course_id AND
work.c_id = $course_id AND
props.tool='work' AND
work.id=props.ref AND
work.url LIKE 'work/".$path."%' AND
work.filetype='file' AND
props.visibility<>'2' AND
props.lastedit_user_id = '".api_get_user_id()."'";
}
$result = Database::query($sql);
$num_rows = Database::num_rows($result);
@ -1433,7 +1462,7 @@ function get_count_work($work_id, $onlyMeUserId = null, $notMeUserId = null)
$extra_conditions .= ' AND work.active IN (0, 1) ';
} else {
$extra_conditions .= ' AND work.active = 1 AND accepted = 1';
if (isset($course_info['show_score']) && $course_info['show_score'] == 1) {
if (isset($course_info['show_score']) && $course_info['show_score'] == 1) {
$extra_conditions .= " AND work.user_id = ".api_get_user_id()." ";
} else {
$extra_conditions .= '';
@ -1582,7 +1611,8 @@ function getWorkListTeacher($start, $limit, $column, $direction, $where_conditio
// Get list from database
if ($is_allowed_to_edit) {
$active_condition = ' active IN (0, 1)';
$sql = "SELECT w.*, a.expires_on, expires_on, ends_on, enable_qualification FROM $workTable w
$sql = "SELECT w.*, a.expires_on, expires_on, ends_on, enable_qualification
FROM $workTable w
LEFT JOIN $workTableAssignment a ON (a.publication_id = w.id AND a.c_id = w.c_id)
WHERE w.c_id = $course_id
$condition_session AND
@ -1599,8 +1629,6 @@ function getWorkListTeacher($start, $limit, $column, $direction, $where_conditio
$row = Database::fetch_array($result);
return $row['count'];
}
$works = array();
$url = api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq();
while ($work = Database::fetch_array($result, 'ASSOC')) {
@ -1614,6 +1642,339 @@ function getWorkListTeacher($start, $limit, $column, $direction, $where_conditio
return $works;
}
/**
* @param int $start
* @param int $limit
* @param string $column
* @param string $direction
* @param int $workId
* @param int $studentId
* @param string $whereCondition
* @param bool $getCount
* @return array
*/
function get_work_user_list_from_documents(
$start,
$limit,
$column,
$direction,
$workId,
$studentId = null,
$whereCondition,
$getCount = false
) {
if (ADD_DOCUMENT_TO_WORK == false) {
return array();
}
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";
}
$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);
$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";
$start = intval($start);
$limit = intval($limit);
$direction = in_array(strtolower($direction), array('desc', 'asc')) ? $direction : 'desc';
$column = Database::escape_string($column);
$sql .= " ORDER BY $column $direction";
$sql .= " LIMIT $start, $limit";
$result = Database::query($sql);
$currentUserId = api_get_user_id();
if ($getCount) {
$result = Database::fetch_array($result);
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();
$editIcon = Display::return_icon('edit.png', get_lang('Edit'));
$addIcon = Display::return_icon('add.png', get_lang('Add'));
while ($row = Database::fetch_array($result, 'ASSOC')) {
$userId = $row['user_id'];
$documentId = $row['document_id'];
$documentToWork = getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $userId);
if (empty($documentToWork)) {
$url = $urlAdd.'&document_id='.$documentId.'&id='.$workId;
$link = Display::url($addIcon, $url);
} else {
$row['title'] = $documentToWork['title'];
$row['sent_date'] = $documentToWork['sent_date'];
$newWorkId = $documentToWork['id'];
$url = $urlEdit.'&id='.$newWorkId;
$link = Display::url($editIcon, $url);
}
if (!empty($row['sent_date'])) {
$row['sent_date'] = api_get_local_time($row['sent_date']);
}
if ($userId == $currentUserId) {
$row['actions'] = $link;
}
$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());
$work_id = intval($work_id);
$column = !empty($column) ? Database::escape_string($column) : 'sent_date';
$start = intval($start);
$limit = intval($limit);
if (!in_array($direction, array('asc','desc'))) {
$direction = 'desc';
}
$work_data = get_work_data_by_id($work_id);
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$condition_session = api_get_session_condition($session_id);
$locked = api_resource_is_locked_by_gradebook($work_id, LINK_STUDENTPUBLICATION);
if (!empty($work_data)) {
if (!empty($group_id)) {
$extra_conditions = " work.post_group_id = '".intval($group_id)."' "; // set to select only messages posted by the user's group
} else {
$extra_conditions = " work.post_group_id = '0' ";
}
if ($is_allowed_to_edit) {
$extra_conditions .= ' AND work.active IN (0, 1) ';
} else {
if (isset($course_info['show_score']) && $course_info['show_score'] == 1) {
$extra_conditions .= " AND (u.user_id = ".api_get_user_id()." AND work.active IN (0, 1) OR work.active = 1) ";
} else {
$extra_conditions .= ' AND work.active = 1 ';
}
}
$extra_conditions .= " AND parent_id = ".$work_id." ";
$select = 'DISTINCT u.user_id, work.id as id, title as title, description, url, sent_date, contains_file, has_properties, view_properties,
qualification, weight, allow_text_assignment, u.firstname, u.lastname, u.username, parent_id, accepted, qualificator_id';
$user_condition = "INNER JOIN $user_table u ON (work.user_id = u.user_id) ";
$work_condition = "$iprop_table prop INNER JOIN $work_table work ON (prop.ref = work.id AND prop.c_id = $course_id AND work.c_id = $course_id ) ";
$work_assignment = get_work_assignment_by_id($work_id);
if (!empty($studentId)) {
$where_condition.= " AND u.user_id = ".intval($studentId);
}
$sql = "SELECT $select
FROM $work_condition $user_condition
WHERE $extra_conditions $where_condition $condition_session ";
$sql .= " ORDER BY $column $direction ";
$sql .= " LIMIT $start, $limit";
$result = Database::query($sql);
$works = array();
while ($work = Database::fetch_array($result, 'ASSOC')) {
$item_id = $work['id'];
// Get the author ID for that document from the item_property table
$is_author = false;
$can_read = false;
$owner_id = $work['user_id'];
/* Because a bug found when saving items using the api_item_property_update()
the field $item_property_data['insert_user_id'] is not reliable. */
// $item_property_data = api_get_item_property_info(api_get_course_int_id(), 'work', $item_id, api_get_session_id());
//if (!$is_allowed_to_edit && $item_property_data['insert_user_id'] == api_get_user_id()) {
if (!$is_allowed_to_edit && $owner_id == api_get_user_id()) {
$is_author = true;
}
if ($course_info['show_score'] == 0) {
$can_read = true;
}
if ($work['accepted'] == '0') {
$class = 'invisible';
} else {
$class = '';
}
$qualification_exists = false;
if (!empty($work_data['qualification']) && intval($work_data['qualification']) > 0) {
$qualification_exists = true;
}
$qualification_string = '';
if ($qualification_exists) {
if ($work['qualification'] == '') {
$qualification_string = Display::label('-');
} else {
$qualification_string = Display::label($work['qualification'], 'info');
}
}
$add_string = '';
$time_expires = api_strtotime($work_assignment['expires_on'], 'UTC');
if (!empty($work_assignment['expires_on']) && $work_assignment['expires_on'] != '0000-00-00 00:00:00' && $time_expires && ($time_expires < api_strtotime($work['sent_date'], 'UTC'))) {
$add_string = Display::label(get_lang('Expired'), 'important');
}
if (
($can_read && $work['accepted'] == '1') ||
($is_author && in_array($work['accepted'], array('1','0'))) ||
$is_allowed_to_edit
) {
// Firstname, lastname, username
$work['firstname'] = Display::div($work['firstname'], array('class' => $class));
$work['lastname'] = Display::div($work['lastname'], array('class' => $class));
if (strlen($work['title']) > 30) {
$short_title = substr($work['title'], 0, 27).'...';
$work['title'] = Display::span($short_title, array('class' => $class, 'title' => $work['title']));
} else {
$work['title'] = Display::div($work['title'], array('class' => $class));
}
// Type.
$work['type'] = build_document_icon_tag('file', $work['file']);
// File name.
$link_to_download = null;
if ($work['contains_file']) {
$link_to_download = '<a href="download.php?id='.$item_id.'">'.Display::return_icon('save.png', get_lang('Save'),array(), ICON_SIZE_SMALL).'</a> ';
} else {
//$link_to_download = '<a href="view.php?id='.$item_id.'">'.Display::return_icon('save_na.png', get_lang('Save'),array(), ICON_SIZE_SMALL).'</a> ';
}
$send_to = Portfolio::share('work', $work['id'], array('style' => 'white-space:nowrap;'));
$work['qualification'] = $qualification_string;
// Date.
$work_date = api_convert_and_format_date($work['sent_date']);
$work['sent_date'] = date_to_str_ago(api_get_local_time($work['sent_date'])).' '.$add_string.'<br />'.$work_date;
// Actions.
$url = api_get_path(WEB_CODE_PATH).'work/';
$action = '';
if ($is_allowed_to_edit) {
$action .= '<a href="'.$url.'view.php?'.api_get_cidreq().'&id='.$item_id.'" title="'.get_lang('View').'">'.
Display::return_icon('default.png', get_lang('View'),array(), ICON_SIZE_SMALL).'</a> ';
if ($locked) {
if ($qualification_exists) {
$action .= Display::return_icon('rate_work_na.png', get_lang('CorrectAndRate'),array(), ICON_SIZE_SMALL);
} else {
$action .= Display::return_icon('edit_na.png', get_lang('Comment'),array(), ICON_SIZE_SMALL);
}
} else {
if ($qualification_exists) {
$action .= '<a href="'.$url.'edit.php?'.api_get_cidreq().'&item_id='.$item_id.'&id='.$work['parent_id'].'" title="'.get_lang('Edit').'" >'.
Display::return_icon('rate_work.png', get_lang('CorrectAndRate'),array(), ICON_SIZE_SMALL).'</a>';
} else {
$action .= '<a href="'.$url.'edit.php?'.api_get_cidreq().'&item_id='.$item_id.'&id='.$work['parent_id'].'&gradebook='.Security::remove_XSS($_GET['gradebook']).'" title="'.get_lang('Modify').'">'.
Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>';
}
}
if ($work['contains_file']) {
if ($locked) {
$action .= Display::return_icon('move_na.png', get_lang('Move'),array(), ICON_SIZE_SMALL);
} else {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=move&item_id='.$item_id.'" title="'.get_lang('Move').'">'.Display::return_icon('move.png', get_lang('Move'),array(), ICON_SIZE_SMALL).'</a>';
}
}
if ($work['accepted'] == '1') {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=make_invisible&item_id='.$item_id.'&amp;'.$sort_params.'" title="'.get_lang('Invisible').'" >'.Display::return_icon('visible.png', get_lang('Invisible'),array(), ICON_SIZE_SMALL).'</a>';
} else {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=make_visible&item_id='.$item_id.'&amp;'.$sort_params.'" title="'.get_lang('Visible').'" >'.Display::return_icon('invisible.png', get_lang('Visible'),array(), ICON_SIZE_SMALL).'</a> ';
}
if ($locked) {
$action .= Display::return_icon('delete_na.png', get_lang('Delete'),'',ICON_SIZE_SMALL);
} else {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=delete&amp;item_id='.$item_id.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES))."'".')) return false;" title="'.get_lang('Delete').'" >'.Display::return_icon('delete.png', get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>';
}
} elseif ($is_author && (empty($work['qualificator_id']) || $work['qualificator_id'] == 0)) {
$action .= '<a href="'.$url.'view.php?'.api_get_cidreq().'&id='.$item_id.'" title="'.get_lang('View').'">'.Display::return_icon('default.png', get_lang('View'),array(), ICON_SIZE_SMALL).'</a>';
if (api_get_course_setting('student_delete_own_publication') == 1) {
if (api_is_allowed_to_session_edit(false, true)) {
$action .= '<a href="'.$url.'edit.php?'.api_get_cidreq().'&item_id='.$item_id.'&id='.$work['parent_id'].'&gradebook='.Security::remove_XSS($_GET['gradebook']).'" title="'.get_lang('Modify').'">'.
Display::return_icon('edit.png', get_lang('Comment'),array(), ICON_SIZE_SMALL).'</a>';
}
$action .= ' <a href="'.$url.'work.php?'.api_get_cidreq().'&action=delete&amp;item_id='.$item_id.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES))."'".')) return false;" title="'.get_lang('Delete').'" >'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>';
} else {
$action .= Display::return_icon('edit_na.png', get_lang('Modify'),array(), ICON_SIZE_SMALL);
}
} else {
$action .= '<a href="'.$url.'view.php?'.api_get_cidreq().'&id='.$item_id.'" title="'.get_lang('View').'">'.Display::return_icon('default.png', get_lang('View'),array(), ICON_SIZE_SMALL).'</a>';
$action .= Display::return_icon('edit_na.png', get_lang('Modify'),array(), ICON_SIZE_SMALL);
}
// Status.
if (empty($work['qualificator_id'])) {
$qualificator_id = Display::label(get_lang('NotRevised'), 'warning');
} else {
$qualificator_id = Display::label(get_lang('Revised'), 'success');
}
$work['qualificator_id'] = $qualificator_id;
$work['actions'] = $send_to.$link_to_download.$action;
$works[] = $work;
}
}
return $works;
}
}
/**
* @param int $start
* @param int $limit
@ -1739,7 +2100,9 @@ function get_work_user_list($start, $limit, $column, $direction, $work_id, $wher
$add_string = '';
$time_expires = api_strtotime($work_assignment['expires_on'], 'UTC');
if (!empty($work_assignment['expires_on']) && $work_assignment['expires_on'] != '0000-00-00 00:00:00' && $time_expires && ($time_expires < api_strtotime($work['sent_date'], 'UTC'))) {
if (!empty($work_assignment['expires_on']) &&
$work_assignment['expires_on'] != '0000-00-00 00:00:00' &&
$time_expires && ($time_expires < api_strtotime($work['sent_date'], 'UTC'))) {
$add_string = Display::label(get_lang('Expired'), 'important');
}
@ -1810,16 +2173,17 @@ function get_work_user_list($start, $limit, $column, $direction, $work_id, $wher
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=move&item_id='.$item_id.'" title="'.get_lang('Move').'">'.Display::return_icon('move.png', get_lang('Move'),array(), ICON_SIZE_SMALL).'</a>';
}
}
if ($work['accepted'] == '1') {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=make_invisible&item_id='.$item_id.'&amp;'.$sort_params.'" title="'.get_lang('Invisible').'" >'.Display::return_icon('visible.png', get_lang('Invisible'),array(), ICON_SIZE_SMALL).'</a>';
$action .= '<a href="'.$url.'work_list_all.php?'.api_get_cidreq().'&id='.$work_id.'&action=make_invisible&item_id='.$item_id.'" title="'.get_lang('Invisible').'" >'.Display::return_icon('visible.png', get_lang('Invisible'),array(), ICON_SIZE_SMALL).'</a>';
} else {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=make_visible&item_id='.$item_id.'&amp;'.$sort_params.'" title="'.get_lang('Visible').'" >'.Display::return_icon('invisible.png', get_lang('Visible'),array(), ICON_SIZE_SMALL).'</a> ';
$action .= '<a href="'.$url.'work_list_all.php?'.api_get_cidreq().'&id='.$work_id.'&action=make_visible&item_id='.$item_id.'" title="'.get_lang('Visible').'" >'.Display::return_icon('invisible.png', get_lang('Visible'),array(), ICON_SIZE_SMALL).'</a> ';
}
if ($locked) {
$action .= Display::return_icon('delete_na.png', get_lang('Delete'),'',ICON_SIZE_SMALL);
$action .= Display::return_icon('delete_na.png', get_lang('Delete'), '', ICON_SIZE_SMALL);
} else {
$action .= '<a href="'.$url.'work.php?'.api_get_cidreq().'&action=delete&amp;item_id='.$item_id.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES))."'".')) return false;" title="'.get_lang('Delete').'" >'.Display::return_icon('delete.png', get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>';
$action .= '<a href="'.$url.'work_list_all.php?'.api_get_cidreq().'&id='.$work_id.'&action=delete&amp;item_id='.$item_id.'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES))."'".')) return false;" title="'.get_lang('Delete').'" >'.Display::return_icon('delete.png', get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>';
}
} elseif ($is_author && (empty($work['qualificator_id']) || $work['qualificator_id'] == 0)) {
$action .= '<a href="'.$url.'view.php?'.api_get_cidreq().'&id='.$item_id.'" title="'.get_lang('View').'">'.Display::return_icon('default.png', get_lang('View'),array(), ICON_SIZE_SMALL).'</a>';
@ -2196,6 +2560,44 @@ function getDocumentToWork($documentId, $workId, $courseId)
return Database::select('*', $table, array('where' => $params));
}
/**
* @param int $documentId
* @param int $workId
* @param int $courseId
* @param int $userId
* @return array
*/
function getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $userId, $active = 1)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT);
$work = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$documentId = intval($documentId);
$workId = intval($workId);
$courseId = intval($courseId);
$userId = intval($userId);
$sessionId = intval($sessionId);
$active = intval($active);
$sql = "SELECT w.* FROM $work w INNER JOIN $table rel ON (w.parent_id = rel.work_id)
WHERE
w.document_id = $documentId AND
w.parent_id = $workId AND
w.c_id = $courseId AND
w.session_id = $sessionId AND
user_id = $userId AND
active = $active
";
$result = Database::query($sql);
$workInfo = array();
if (Database::num_rows($result)) {
$workInfo = Database::fetch_array($result, 'ASSOC');
}
return $workInfo;
}
/**
* @param int $workId
* @param int $courseId
@ -2401,8 +2803,8 @@ function getWorkComments($work)
$commentTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT);
$userTable= Database::get_main_table(TABLE_MAIN_USER);
$courseId = $work['c_id'];
$workId = $work['id'];
$courseId = intval($work['c_id']);
$workId = intval($work['id']);
$sql = "SELECT c.*, u.firstname, u.lastname, u.username, u.picture_uri
FROM $commentTable c INNER JOIN $userTable u ON(u.user_id = c.user_id)
@ -2419,6 +2821,7 @@ function getWorkComments($work)
}
/**
* Adds a comments to the work document
* @param int $userId
* @param array $work
* @param array $data
@ -2689,10 +3092,11 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
$courseId = $courseInfo['real_id'];
$groupId = intval($groupId);
$sessionId = intval($sessionId);
$userId = intval($userId);
$title = $values['title'];
$description = $values['description'];
$contains_file = isset($values['contains_file']) && !empty($values['contains_file']) ? $values['contains_file']: 0;
$contains_file = isset($values['contains_file']) && !empty($values['contains_file']) ? intval($values['contains_file']): 0;
$saveWork = true;
$message = null;
@ -2723,7 +3127,7 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
title = '".Database::escape_string($title)."',
description = '".Database::escape_string($description)."',
contains_file = '".$contains_file."',
active = '" . $active."',
active = '".$active."',
accepted = '1',
post_group_id = '".$groupId."',
sent_date = '".api_get_utc_datetime()."',
@ -2733,9 +3137,20 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
Database::query($sql);
$workId = Database::insert_id();
if ($workId) {
if (array_key_exists('filename', $workInfo) && !empty($filename)) {
$sql = "UPDATE $work_table SET filename = '$filename' WHERE c_id = $courseId AND id = $workId";
$filename = Database::escape_string($filename);
$sql = "UPDATE $work_table SET filename = '$filename'
WHERE c_id = $courseId AND id = $workId";
Database::query($sql);
}
if (array_key_exists('document_id', $workInfo)) {
$documentId = isset($values['document_id']) ? intval($values['document_id']) : 0;
$sql = "UPDATE $work_table SET document_id = '$documentId'
WHERE c_id = $courseId AND id = $workId";
Database::query($sql);
}
api_item_property_update($courseInfo, 'work', $workId, 'DocumentAdded', $userId, $groupId);
@ -2899,8 +3314,8 @@ function updatePublicationAssignment($workId, $params, $courseInfo, $group_id)
$sql = "INSERT INTO $table SET
c_id = $course_id ,
expires_on = '".$expiryDate."',
ends_on = '".$endDate."',
expires_on = '".Database::escape_string($expiryDate)."',
ends_on = '".Database::escape_string($endDate)."',
add_to_calendar = $agendaId,
enable_qualification = '$qualification',
publication_id = '$workId'";
@ -2998,8 +3413,8 @@ function deleteWorkItem($item_id, $courseInfo)
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";
$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);
@ -3120,7 +3535,6 @@ function getFormWork($form, $defaults = array())
}
$form->addGroup(create_group_date_select($form), 'ends', get_lang('EndsAt'));
$form->addElement('html', '</div>');
$form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar'));
@ -3149,7 +3563,7 @@ function updateSettings($courseInfo, $showScore, $studentDeleteOwnPublication)
$main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$table_course_setting = Database :: get_course_table(TOOL_COURSE_SETTING);
$query = "UPDATE ".$main_course_table." SET show_score='" . $showScore . "'
$query = "UPDATE ".$main_course_table." SET show_score = '".$showScore."'
WHERE id = $courseId";
Database::query($query);
@ -3191,7 +3605,7 @@ function makeVisible($item_id, $course_info)
$course_id = $course_info['real_id'];
$item_id = intval($item_id);
$sql = "UPDATE " . $work_table . " SET accepted = 1 WHERE c_id = $course_id AND id = '" . $item_id . "'";
$sql = "UPDATE $work_table SET accepted = 1 WHERE c_id = $course_id AND id = $item_id";
Database::query($sql);
api_item_property_update($course_info, 'work', $item_id, 'visible', api_get_user_id());
}
@ -3224,7 +3638,7 @@ function generateMoveForm($item_id, $path, $courseInfo, $groupId, $sessionId)
$work_table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$courseId = $courseInfo['real_id'];
$folders = array();
$session_id = $sessionId;
$session_id = intval($sessionId);
$sessionCondition = empty($sessionId) ? " AND session_id = 0 " : " AND session_id='".$session_id."'";
$sql = "SELECT id, url, title FROM $work_table
WHERE c_id = $courseId AND

@ -210,10 +210,7 @@ switch ($action) {
$form->display();
}
}
case 'make_visible':
case 'delete':
case 'delete_dir':
case 'make_invisible':
case 'move':
case 'move_to':
case 'list':
@ -251,28 +248,6 @@ switch ($action) {
}
}
/* Visible */
if ($is_allowed_to_edit && $action == 'make_visible') {
if (!empty($item_id)) {
if (isset($item_id) && $item_id == 'all') {
} else {
makeVisible($item_id, $course_info);
Display::display_confirmation_message(get_lang('FileVisible'));
}
}
}
if ($is_allowed_to_edit && $action == 'make_invisible') {
/* Invisible */
if (!empty($item_id)) {
if (isset($item_id) && $item_id == 'all') {
} else {
makeInvisible($item_id, $course_info);
Display::display_confirmation_message(get_lang('FileInvisible'));
}
}
}
/* Delete dir */
@ -285,16 +260,6 @@ switch ($action) {
}
}
/* Delete document */
if ($action == 'delete' && $item_id) {
$file_deleted = deleteWorkItem($item_id, $_course);
if (!$file_deleted) {
Display::display_error_message(get_lang('YouAreNotAllowedToDeleteThisDocument'));
} else {
Display::display_confirmation_message(get_lang('TheDocumentHasBeenDeleted'));
}
}
/* Display list of student publications */
if (!empty($my_folder_data['description'])) {
echo '<p><div><strong>'.

@ -55,18 +55,20 @@ if (!empty($group_id)) {
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(), 'name' => get_lang('StudentPublications'));
$interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'work/work_list.php?'.api_get_cidreq().'&id='.$workId, 'name' => $my_folder_data['title']);
Display :: display_header(null);
$documentsAddedInWork = getAllDocumentsFromWorkToString($workId, $courseInfo);
Display :: display_header(null);
echo '<div class="actions">';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().'&origin='.$origin.'&gradebook='.$gradebook.'">'.Display::return_icon('back.png', get_lang('BackToWorksList'),'',ICON_SIZE_MEDIUM).'</a>';
if (api_is_allowed_to_session_edit(false, true) && !empty($workId)) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('upload_file.png', get_lang('UploadADocument'), '', ICON_SIZE_MEDIUM).'</a>';
if (empty($documentsAddedInWork)) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('upload_file.png', get_lang('UploadADocument'), '', ICON_SIZE_MEDIUM).'</a>';
}
if (!empty($documentsAddedInWork)) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload_from_template.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('import_html.png', get_lang('UploadFromTemplate'), '', ICON_SIZE_MEDIUM).'</a>';
/*echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload_from_template.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('import_html.png', get_lang('UploadFromTemplate'), '', ICON_SIZE_MEDIUM).'</a>';*/
}
}
@ -81,7 +83,7 @@ if (!empty($my_folder_data['description'])) {
echo '<p><div><strong>'.get_lang('Description').':</strong><p>'.Security::remove_XSS($my_folder_data['description']).'</p></div></p>';
}
echo $documentsAddedInWork;
//echo $documentsAddedInWork;
$result = getWorkDateValidationStatus($work_data);
echo $result['message'];

@ -15,6 +15,7 @@ require_once 'work.lib.php';
$this_section = SECTION_COURSES;
$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$is_allowed_to_edit = api_is_allowed_to_edit();
if (empty($workId)) {
api_not_allowed(true);
@ -61,6 +62,43 @@ $interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'work/work_list
$error_message = null;
Display :: display_header(null);
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
$item_id = isset($_REQUEST['item_id']) ? intval($_REQUEST['item_id']) : null;
/* Delete document */
if ($action == 'delete' && $item_id) {
$file_deleted = deleteWorkItem($item_id, $_course);
if (!$file_deleted) {
Display::display_error_message(get_lang('YouAreNotAllowedToDeleteThisDocument'));
} else {
Display::display_confirmation_message(get_lang('TheDocumentHasBeenDeleted'));
}
}
/* Visible */
if ($is_allowed_to_edit && $action == 'make_visible') {
if (!empty($item_id)) {
if (isset($item_id) && $item_id == 'all') {
} else {
makeVisible($item_id, $courseInfo);
Display::display_confirmation_message(get_lang('FileVisible'));
}
}
}
if ($is_allowed_to_edit && $action == 'make_invisible') {
/* Invisible */
if (!empty($item_id)) {
if (isset($item_id) && $item_id == 'all') {
} else {
makeInvisible($item_id, $courseInfo);
Display::display_confirmation_message(get_lang('FileInvisible'));
}
}
}
$documentsAddedInWork = getAllDocumentsFromWorkToString($workId, $courseInfo);
echo '<div class="actions">';
@ -68,12 +106,6 @@ echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().'
if (api_is_allowed_to_session_edit(false, true) && !empty($workId)) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('upload_file.png', get_lang('UploadADocument'), '', ICON_SIZE_MEDIUM).'</a>';
if (!empty($documentsAddedInWork)) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload_from_template.php?'.api_get_cidreq().'&id='.$workId.'&origin='.$origin.'&gradebook='.$gradebook.'">';
echo Display::return_icon('import_html.png', get_lang('UploadFromTemplate'), '', ICON_SIZE_MEDIUM).'</a>';
}
if (ADD_DOCUMENT_TO_WORK) {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/add_document.php?'.api_get_cidreq().'&id='.$workId.'">';
echo Display::return_icon('new_document.png', get_lang('AddDocument'), '', ICON_SIZE_MEDIUM).'</a>';
@ -107,7 +139,17 @@ $check_qualification = intval($my_folder_data['qualification']);
if (!empty($work_data['enable_qualification']) && !empty($check_qualification)) {
$type = 'simple';
$columns = array(get_lang('Type'), get_lang('FirstName'), get_lang('LastName'), get_lang('Title'), get_lang('Qualification'), get_lang('Date'), get_lang('Status'), get_lang('Actions'));
$columns = array(
get_lang('Type'),
get_lang('FirstName'),
get_lang('LastName'),
get_lang('Title'),
get_lang('Qualification'),
get_lang('Date'),
get_lang('Status'),
get_lang('Actions')
);
$column_model = array (
array('name'=>'type', 'index'=>'file', 'width'=>'10', 'align'=>'left', 'search' => 'false'),
array('name'=>'firstname', 'index'=>'firstname', 'width'=>'35', 'align'=>'left', 'search' => 'true'),
@ -120,23 +162,32 @@ if (!empty($work_data['enable_qualification']) && !empty($check_qualification))
);
} else {
$type = 'complex';
$columns = array(get_lang('Type'), get_lang('FirstName'), get_lang('LastName'), get_lang('Title'), get_lang('Date'), get_lang('Actions'));
$columns = array(
get_lang('Type'),
get_lang('FirstName'),
get_lang('LastName'),
get_lang('Title'),
get_lang('Date'),
get_lang('Actions')
);
$column_model = array (
array('name'=>'type', 'index'=>'file', 'width'=>'10', 'align'=>'left', 'search' => 'false'),
array('name'=>'firstname', 'index'=>'firstname', 'width'=>'35', 'align'=>'left', 'search' => 'true'),
array('name'=>'lastname', 'index'=>'lastname', 'width'=>'35', 'align'=>'left', 'search' => 'true'),
array('name'=>'title', 'index'=>'title', 'width'=>'40', 'align'=>'left', 'search' => 'false', 'wrap_cell' => "true"),
array('name'=>'sent_date', 'index'=>'sent_date', 'width'=>'45', 'align'=>'left', 'search' => 'true', 'wrap_cell' => 'true'),
array('name'=>'sent_date', 'index'=>'sent_date', 'width'=>'45', 'align'=>'left', 'search' => 'true', 'wrap_cell' => 'true'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'50', 'align'=>'left', 'search' => 'false', 'sortable'=>'false', 'wrap_cell' => 'true')
);
}
$extra_params = array();
//Auto-width
// Auto-width
$extra_params['autowidth'] = 'true';
//height auto
// height auto
$extra_params['height'] = 'auto';
$extra_params['sortname'] = 'firstname';

@ -151,30 +151,6 @@ class TestWork extends UnitTestCase {
//var_dump($res);
}
/**
* Display the list of student publications, taking into account the user status
*
* @param $currentCourseRepositoryWeb, the web location of the course folder
* @param $link_target_parameter - should there be a target parameter for the links
* @param $dateFormatLong - date format
* @param $origin - typically empty or 'learnpath'
*/
function testdisplay_student_publications_list() {
global $charset,$timeNoSecFormat,$dateFormatShort,$gradebook,$dateFormatLong;
$work_dir='';
$sub_course_dir='';
$currentCourseRepositoryWeb='';
$link_target_parameter='';
$origin='learnpath';
$add_in_where_query='';
ob_start();
$res=display_student_publications_list($work_dir,$sub_course_dir,$currentCourseRepositoryWeb, $link_target_parameter, $dateFormatLong, $origin);
$this->assertTrue(is_null($res));
ob_end_clean();
//var_dump($res);
}
/**
* Displays all options for this tool.
* These are
@ -238,30 +214,6 @@ class TestWork extends UnitTestCase {
//var_dump($res);
}
/**
* Returns a list of subdirectories found in the given directory.
*
* The list return starts from the given base directory.
* If you require the subdirs of /var/www/ (or /var/www), you will get 'abc/', 'def/', but not '/var/www/abc/'...
* @param string Base dir
* @param integer 0 if we only want dirs from this level, 1 if we want to recurse into subdirs
* @return strings_array The list of subdirs in 'abc/' form, -1 on error, and 0 if none found
* @todo Add a session check to see if subdirs_list doesn't exist yet (cached copy)
*/
function testget_subdirs_list() {
$path_name = api_get_path(SYS_PATH);
$basedir = $path_name.'/';
$dh = opendir($basedir);
$entry = readdir($dh);
$dirs_list[] = $entry;
$res=get_subdirs_list($basedir='',$recurse=0);
$this->assertTrue(is_numeric($res));
$this->assertTrue(is_array($dirs_list));
//var_dump($res);
//var_dump($dirs_list);
}
/**
* Gets the id of a student publication with a given path
* @param string $path

Loading…
Cancel
Save