Browse Source

Adding DRH support in works see #7064

Julio Montoya 10 years ago
parent
commit
3adf5c2d57
3 changed files with 57 additions and 26 deletions
  1. 25 9
      main/work/view.php
  2. 24 8
      main/work/work.lib.php
  3. 8 9
      main/work/work_list_all.php

+ 25 - 9
main/work/view.php

@@ -12,7 +12,7 @@ $id = isset($_GET['id']) ? intval($_GET['id']) : null;
 $work = get_work_data_by_id($id);
 
 if (empty($id) || empty($work)) {
-    api_not_allowed();
+    api_not_allowed(true);
 }
 
 if ($work['active'] != 1) {
@@ -22,24 +22,40 @@ if ($work['active'] != 1) {
 $interbreadcrumb[] = array ('url' => 'work.php', 'name' => get_lang('StudentPublications'));
 
 $my_folder_data = get_work_data_by_id($work['parent_id']);
-$course_info = api_get_course_info();
+$courseInfo = api_get_course_info();
+
+allowOnlySubscribedUser(
+    api_get_user_id(),
+    $work['parent_id'],
+    $courseInfo['real_id']
+);
 
-allowOnlySubscribedUser(api_get_user_id(), $work['parent_id'], $course_info['real_id']);
+$isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
+    api_get_user_id(),
+    $courseInfo
+);
 
-if (user_is_author($id) || $course_info['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) {
-    if (api_is_allowed_to_edit(null, true)) {
+if ((user_is_author($id) || $isDrhOfCourse) ||
+    (
+        $courseInfo['show_score'] == 0 &&
+        $work['active'] == 1 &&
+        $work['accepted'] == 1
+    )
+) {
+    if (api_is_allowed_to_edit(null, true) || api_is_drh()) {
         $url_dir = 'work_list_all.php?id='.$my_folder_data['id'];
     } else {
         $url_dir = 'work_list.php?id='.$my_folder_data['id'];
     }
+
     $interbreadcrumb[] = array('url' => $url_dir, 'name' => $my_folder_data['title']);
     $interbreadcrumb[] = array('url' => '#','name' => $work['title']);
-
-    if (($course_info['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) ||
-        api_is_allowed_to_edit() || user_is_author($id)
+    //|| api_is_drh()
+    if (($courseInfo['show_score'] == 0 && $work['active'] == 1 && $work['accepted'] == 1) ||
+        (api_is_allowed_to_edit()) || user_is_author($id) || $isDrhOfCourse
     ) {
         $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
-        switch($action) {
+        switch ($action) {
             case 'send_comment':
                 if (isset($_FILES["file"])) {
                     $_POST['file'] = $_FILES["file"];

+ 24 - 8
main/work/work.lib.php

@@ -1691,6 +1691,11 @@ function getWorkListStudent(
     $group_id = api_get_group_id();
     $userId = api_get_user_id();
 
+    $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
+        api_get_user_id(),
+        $courseInfo
+    );
+
     if (!in_array($direction, array('asc','desc'))) {
         $direction = 'desc';
     }
@@ -1742,7 +1747,12 @@ function getWorkListStudent(
     }
 
     $works = array();
+
     $url = api_get_path(WEB_CODE_PATH).'work/work_list.php?'.api_get_cidreq();
+    if ($isDrhOfCourse) {
+        $url = api_get_path(WEB_CODE_PATH).'work/work_list_all.php?'.api_get_cidreq();
+    }
+
     $urlOthers = api_get_path(WEB_CODE_PATH).'work/work_list_others.php?'.api_get_cidreq().'&id=';
     while ($work = Database::fetch_array($result, 'ASSOC')) {
         $isSubscribed = userIsSubscribedToWork($userId, $work['id'], $course_id);
@@ -1751,6 +1761,7 @@ function getWorkListStudent(
         }
         $work['type'] = Display::return_icon('work.png');
         $work['expires_on'] = $work['expires_on']  == '0000-00-00 00:00:00' ? null : api_get_local_time($work['expires_on']);
+
         if (empty($work['title'])) {
             $work['title'] = basename($work['url']);
         }
@@ -1766,7 +1777,6 @@ function getWorkListStudent(
             $whereCondition
         );
 
-
         if (ADD_DOCUMENT_TO_WORK) {
            $count = getTotalWorkComment($workList, $courseInfo);
 
@@ -2178,6 +2188,11 @@ function get_work_user_list(
     $condition_session  = api_get_session_condition($session_id);
     $locked = api_resource_is_locked_by_gradebook($work_id, LINK_STUDENTPUBLICATION);
 
+    $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
+        api_get_user_id(),
+        $course_info
+    );
+
     if (!empty($work_data)) {
         if (!empty($group_id)) {
             $extra_conditions = " work.post_group_id = '".intval($group_id)."' ";
@@ -2186,10 +2201,12 @@ function get_work_user_list(
             $extra_conditions = " work.post_group_id = '0' ";
         }
 
-        if ($is_allowed_to_edit) {
+        if ($is_allowed_to_edit || $isDrhOfCourse) {
             $extra_conditions .= ' AND work.active IN (0, 1) ';
         } else {
-            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 (u.user_id = ".api_get_user_id()." AND work.active IN (0, 1)) ";
             } else {
                 $extra_conditions .= ' AND work.active IN (0, 1) ';
@@ -2239,7 +2256,6 @@ function get_work_user_list(
         if (!empty($start) && !empty($limit)) {
             $sql .= "LIMIT $start, $limit";
         }
-
         $result = Database::query($sql);
         $works = array();
 
@@ -2252,7 +2268,6 @@ function get_work_user_list(
 
         while ($work = Database::fetch_array($result, 'ASSOC')) {
             $item_id = $work['id'];
-            //$workItem = get_work_data_by_id($item_id);
 
             // Get the author ID for that document from the item_property table
             $is_author  = false;
@@ -2278,7 +2293,9 @@ function get_work_user_list(
             }
 
             $qualification_exists = false;
-            if (!empty($work_data['qualification']) && intval($work_data['qualification']) > 0) {
+            if (!empty($work_data['qualification']) &&
+                intval($work_data['qualification']) > 0
+            ) {
                 $qualification_exists = true;
             }
 
@@ -2314,9 +2331,8 @@ function get_work_user_list(
 
             if (($can_read && $work['accepted'] == '1') ||
                 ($is_author && in_array($work['accepted'], array('1', '0'))) ||
-                $is_allowed_to_edit
+                ($is_allowed_to_edit || api_is_drh())
             ) {
-
                 // Firstname, lastname, username
                 $work['firstname'] = Display::div($work['firstname'], array('class' => $class));
                 $work['lastname'] = Display::div($work['lastname'], array('class' => $class));

+ 8 - 9
main/work/work_list_all.php

@@ -28,7 +28,12 @@ if (empty($my_folder_data)) {
 
 $work_data = get_work_assignment_by_id($workId);
 
-if (!api_is_allowed_to_edit()) {
+$isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
+    api_get_user_id(),
+    api_get_course_info()
+);
+
+if (!(api_is_allowed_to_edit() || $isDrhOfCourse)) {
     api_not_allowed(true);
 }
 
@@ -153,17 +158,12 @@ switch ($action) {
             foreach ($documents as $document) {
                 $document['document_id'];
             }
-            VAR_DUMP($documents);
             $studentWorks = getAllUserToWork(
                 $my_folder_data['id'],
                 $courseInfo['real_id']
             );
-            VAR_DUMP($studentWorks);
-
         }
-        VAR_DUMP($my_folder_data);exit;
-
-        $pdf->content_to_pdf($header, null, $my_folder_data['title'], $courseCode);
+        //$pdf->content_to_pdf($header, null, $my_folder_data['title'], $courseCode);
         exit;
         break;
 }
@@ -178,12 +178,11 @@ echo '<div class="actions">';
 echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().'">'.
     Display::return_icon('back.png', get_lang('BackToWorksList'), '', ICON_SIZE_MEDIUM).'</a>';
 
-if (api_is_allowed_to_session_edit(false, true) && !empty($workId)) {
+if (api_is_allowed_to_session_edit(false, true) && !empty($workId) && !$isDrhOfCourse) {
     /*echo '<a href="'.api_get_path(WEB_CODE_PATH).'work/upload.php?'.api_get_cidreq().'&id='.$workId.'">';
     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>';