Browse Source

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

Julio Montoya 11 years ago
parent
commit
b0e020cf40

+ 2 - 0
main/inc/lib/database.constants.inc.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');

+ 126 - 0
main/work/add_document.php

@@ -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
+);
+
+
+
+*/
+
+

+ 96 - 0
main/work/add_user.php

@@ -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>';

+ 86 - 0
main/work/work.lib.php

@@ -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);
+}
+

+ 10 - 2
main/work/work_list_all.php

@@ -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>';