Adding "add document" and "add user" to work feature see BT#6614 BT#6615

1.9.x
Julio Montoya 13 years ago
parent 3d730ace32
commit b0e020cf40
  1. 2
      main/inc/lib/database.constants.inc.php
  2. 126
      main/work/add_document.php
  3. 96
      main/work/add_user.php
  4. 86
      main/work/work.lib.php
  5. 12
      main/work/work_list_all.php

@ -165,6 +165,8 @@ define('TABLE_TOOL_INTRO', 'tool_intro');
define('TABLE_SCORMDOC', 'scormdocument');
define('TABLE_STUDENT_PUBLICATION', 'student_publication');
define('TABLE_STUDENT_PUBLICATION_ASSIGNMENT', 'student_publication_assignment');
define('TABLE_STUDENT_PUBLICATION_REL_DOCUMENT', 'student_publication_rel_document');
define('TABLE_STUDENT_PUBLICATION_REL_USER', 'student_publication_rel_user');
// Course forum tables
define('TABLE_FORUM_CATEGORY', 'forum_category');

@ -0,0 +1,126 @@
<?php
/* For licensing terms, see /license.txt */
use ChamiloSession as Session;
$language_file = array('exercice', 'work', 'document', 'admin', 'gradebook');
require_once '../inc/global.inc.php';
// Including necessary files
require_once 'work.lib.php';
if (ADD_DOCUMENT_TO_WORK == false) {
exit;
}
$current_course_tool = TOOL_STUDENTPUBLICATION;
$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$docId = isset($_GET['document_id']) ? intval($_GET['document_id']) : null;
$action = isset($_GET['action']) ? $_GET['action'] : null;
if (empty($workId)) {
api_not_allowed(true);
}
$my_folder_data = get_work_data_by_id($workId);
if (empty($my_folder_data)) {
api_not_allowed(true);
}
$work_data = get_work_assignment_by_id($workId);
if (!api_is_allowed_to_edit()) {
api_not_allowed(true);
}
$courseInfo = api_get_course_info();
$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_all.php?'.api_get_cidreq().'&id='.$workId, 'name' => $my_folder_data['title']);
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('AddDocument'));
$error_message = null;
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;
header('Location: '.$url);
exit;
}
break;
}
Display :: display_header(null);
if (empty($docId)) {
echo Display::page_subheader(get_lang('DocumentsAdded'));
$documents = getAllDocumentToWork($workId, api_get_course_int_id());
if (!empty($documents)) {
echo '<div class="well">';
foreach ($documents as $doc) {
$documentId = $doc['document_id'];
$docData = DocumentManager::get_document_data_by_id($documentId, $courseInfo['code']);
$url = api_get_path(WEB_CODE_PATH).'work/add_document.php?action=delete&id='.$workId.'&document_id='.$documentId;
$link = Display::url(get_lang('Delete'), $url);
echo $docData['title'].' '.$link.'<br />';
}
echo '</div>';
}
$document_tree = DocumentManager::get_document_preview($courseInfo, null, null, 0, false, '/', api_get_path(WEB_CODE_PATH).'work/add_document.php?id='.$workId);
echo Display::page_subheader(get_lang('DocumentToAdd'));
echo $document_tree;
echo '<hr /><div class="clear"></div>';
} else {
$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);
$form->addElement('header', get_lang('AddDocument'));
$form->addElement('hidden', 'add_doc', '1');
$form->addElement('hidden', 'id', $workId);
$form->addElement('hidden', 'document_id', $docId);
$form->addElement('label', get_lang('File'), $documentInfo['title']);
$form->addElement('style_submit_button', 'submit', get_lang('Add'));
$form->display();
if ($form->validate()) {
$values = $form->exportValues();
$workId = $values['id'];
$docId = $values['document_id'];
$data = getDocumentToWork($docId, $workId, api_get_course_int_id());
if (empty($data)) {
addDocumentToWork($docId, $workId, api_get_course_int_id());
Display::display_confirmation_message(get_lang('Added'));
} else {
Display::display_warning_message(get_lang('DocumentAlreadyAdded'));
}
}
}
/*
*
CREATE TABLE IF NOT EXISTS c_student_publication_rel_document (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
work_id INT NOT NULL,
document_id INT NOT NULL,
c_id INT NOT NULL
);
CREATE TABLE IF NOT EXISTS c_student_publication_rel_user (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
work_id INT NOT NULL,
user_id INT NOT NULL,
c_id INT NOT NULL
);
*/

@ -0,0 +1,96 @@
<?php
/* For licensing terms, see /license.txt */
use ChamiloSession as Session;
$language_file = array('exercice', 'work', 'document', 'admin', 'gradebook');
require_once '../inc/global.inc.php';
// Including necessary files
require_once 'work.lib.php';
if (ADD_DOCUMENT_TO_WORK == false) {
exit;
}
$current_course_tool = TOOL_STUDENTPUBLICATION;
$workId = isset($_GET['id']) ? intval($_GET['id']) : null;
$userId = isset($_GET['user_id']) ? intval($_GET['user_id']) : null;
$action = isset($_GET['action']) ? $_GET['action'] : null;
if (empty($workId)) {
api_not_allowed(true);
}
$my_folder_data = get_work_data_by_id($workId);
if (empty($my_folder_data)) {
api_not_allowed(true);
}
$work_data = get_work_assignment_by_id($workId);
if (!api_is_allowed_to_edit()) {
api_not_allowed(true);
}
$courseInfo = api_get_course_info();
$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_all.php?'.api_get_cidreq().'&id='.$workId, 'name' => $my_folder_data['title']);
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('AddUser'));
$error_message = null;
switch ($action) {
case 'add':
addUserToWork($userId, $workId, api_get_course_int_id());
$url = api_get_path(WEB_CODE_PATH).'work/add_user.php?id='.$workId;
header('Location: '.$url);
exit;
break;
case 'delete':
if (!empty($workId) && !empty($userId)) {
deleteUserToWork($userId, $workId, api_get_course_int_id());
$url = api_get_path(WEB_CODE_PATH).'work/add_user.php?id='.$workId;
header('Location: '.$url);
exit;
}
break;
}
Display :: display_header(null);
echo Display::page_subheader(get_lang('UsersAdded'));
$items = getAllUserToWork($workId, api_get_course_int_id());
if (!empty($items)) {
echo '<div class="well">';
foreach ($items as $data) {
$myUserId = $data['user_id'];
$userInfo = api_get_user_info($myUserId);
$url = api_get_path(WEB_CODE_PATH).'work/add_user.php?action=delete&id='.$workId.'&user_id='.$myUserId;
$link = Display::url(get_lang('Delete'), $url);
echo $userInfo['complete_name'].' '.$link.'<br />';
}
echo '</div>';
}
$userList = CourseManager::get_user_list_from_course_code($courseInfo['code'], api_get_session_id(), null, null, STUDENT);
echo Display::page_subheader(get_lang('UserToAdd'));
if (!empty($userList)) {
echo '<div class="well">';
foreach ($userList as $user) {
$userName = api_get_person_name($user['firstname'], $user['lastname']);
$url = api_get_path(WEB_CODE_PATH).'work/add_user.php?action=add&id='.$workId.'&user_id='.$user['user_id'];
$link = Display::url(get_lang('Add'), $url);
echo $userName.' '.$link.'<br />';
}
echo '</div>';
}
echo '<hr /><div class="clear"></div>';

@ -17,6 +17,8 @@ require_once api_get_path(SYS_CODE_PATH).'document/document.inc.php';
require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php';
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/gradebook_functions.inc.php';
define('ADD_DOCUMENT_TO_WORK', true);
/**
* Displays action links (for admins, authorized groups members and authorized students)
* @param string Current dir
@ -2140,3 +2142,87 @@ function display_list_users_without_publication($task_id, $studentId = null)
$column_show[] = 1;
Display::display_sortable_config_table('work', $table_header, $data, $sorting_options, $paging_options, $my_params, $column_show);
}
// Document to work
function addDocumentToWork($documentId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT);
$params = array(
'document_id' => $documentId,
'work_id' => $workId,
'c_id' => $courseId
);
Database::insert($table, $params);
}
function getDocumentToWork($documentId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT);
$params = array(
'document_id = ? and work_id = ? and c_id = ?' => array($documentId, $workId, $courseId)
);
return Database::select('*', $table, array('where' => $params));
}
function getAllDocumentToWork($workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT);
$params = array(
'work_id = ? and c_id = ?' => array($workId, $courseId)
);
return Database::select('*', $table, array('where' => $params));
}
function deleteDocumentToWork($documentId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_DOCUMENT);
$params = array(
'document_id = ? and work_id = ? and c_id = ?' => array($documentId, $workId, $courseId)
);
Database::delete($table, $params);
}
// User to work
function addUserToWork($userId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_USER);
$params = array(
'user_id' => $userId,
'work_id' => $workId,
'c_id' => $courseId
);
Database::insert($table, $params);
}
function getUserToWork($userId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_USER);
$params = array(
'user_id = ? and work_id = ? and c_id = ?' => array($userId, $workId, $courseId)
);
return Database::select('*', $table, array('where' => $params));
}
function getAllUserToWork($workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_USER);
$params = array(
'work_id = ? and c_id = ?' => array($workId, $courseId)
);
return Database::select('*', $table, array('where' => $params));
}
function deleteUserToWork($userId, $workId, $courseId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_REL_USER);
$params = array(
'user_id = ? and work_id = ? and c_id = ?' => array($userId, $workId, $courseId)
);
Database::delete($table, $params);
}

@ -66,10 +66,18 @@ 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>';
echo Display::return_icon('upload_file.png', get_lang('UploadADocument'), '', 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>';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/add_user.php?'.api_get_cidreq().'&id='.$workId.'">';
echo Display::return_icon('user.png', get_lang('AddUser'), '', ICON_SIZE_MEDIUM).'</a>';
}
$display_output .= '<a href="'.api_get_path(WEB_CODE_PATH).'work/work_missing.php?'.api_get_cidreq().'&amp;id='.$workId.'&amp;curdirpath='.$cur_dir_path.'&amp;origin='.$origin.'&amp;gradebook='.$gradebook.'&amp;list=without">'.
Display::return_icon('exercice_uncheck.png', get_lang('ViewUsersWithoutTask'),'',ICON_SIZE_MEDIUM)."</a>\n";
Display::return_icon('exercice_uncheck.png', get_lang('ViewUsersWithoutTask'), '', ICON_SIZE_MEDIUM)."</a>";
$count = get_count_work($workId);
if ($count > 0) {
$display_output .= '<a href="downloadfolder.inc.php?id='.$workId.'">'.Display::return_icon('save_pack.png', get_lang('Save'), array('style' => 'float:right;'), ICON_SIZE_MEDIUM).'</a>';

Loading…
Cancel
Save