Browse Source

[svn r17190] logic changes - revised "my gradebook" - (see FS#3319)

Isaac Flores 16 years ago
parent
commit
a1b8fa972c

+ 5 - 3
main/gradebook/gradebook.php

@@ -1,4 +1,4 @@
-<?php // $Id: gradebook.php 16915 2008-11-25 20:15:42Z yannoo $
+<?php
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -81,6 +81,7 @@ if (isset ($_GET['createallcategories'])) {
 	exit;
 }
 //move a category
+$selectcat=isset($_GET['selectcat']) ?  Security::remove_XSS($_GET['selectcat']) : '';
 if (isset ($_GET['movecat'])) {
 	block_students();
 	$cats= Category :: load($_GET['movecat']);
@@ -253,7 +254,7 @@ if (isset ($_GET['deletelink'])) {
 	$confirmation_message = get_lang('LinkDeleted');
 	$filter_confirm_msg = false;
 }
-
+$course_to_crsind = isset ($course_to_crsind) ? $course_to_crsind : '';
 if ($course_to_crsind && !isset($_GET['confirm'])) {
 	block_students();
 	if (!isset($_GET['movecat']) && !isset($_GET['moveeval'])) {
@@ -450,7 +451,8 @@ if (!isset ($_GET['selectcat']) || empty ($_GET['selectcat'])) {
 	$category= $_GET['selectcat'];		
 	}
 // search form
-$simple_search_form= new UserForm(UserForm :: TYPE_SIMPLE_SEARCH, null, 'simple_search_form', null, api_get_self() . '?selectcat=' . Security::remove_XSS($_GET['selectcat']));
+
+$simple_search_form= new UserForm(UserForm :: TYPE_SIMPLE_SEARCH, null, 'simple_search_form', null, api_get_self() . '?selectcat=' . $selectcat);
 $values= $simple_search_form->exportValues();
 $keyword = '';
 if (isset($_GET['search']) && !empty($_GET['search'])) {

+ 4 - 3
main/gradebook/gradebook_add_cat.php

@@ -1,4 +1,4 @@
-<?php // $Id: $
+<?php
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -49,13 +49,14 @@ if ($_in_course) {
 $form = new CatForm(CatForm :: TYPE_ADD, $catadd, 'add_cat_form', null, api_get_self() . '?selectcat=' . Security::remove_XSS($_GET['selectcat']));
 if ($form->validate()) {
 	$values = $form->exportValues();
+	$select_course=isset($values['select_course']) ? $values['select_course'] : array();
 	$cat = new Category();
 	if ($values['hid_parent_id'] == '0') {
-		if ($values['select_course'] == 'COURSEINDEPENDENT') {
+		if ($select_course == 'COURSEINDEPENDENT') {
 			$cat->set_name($values['name']);
 			$cat->set_course_code(null);
 		} else {
-			$cat->set_course_code($values['select_course']);
+			$cat->set_course_code($select_course);
 			$cat->set_name($values['name']);
 		}
 	} else {

+ 4 - 3
main/gradebook/gradebook_add_eval.php

@@ -1,4 +1,4 @@
-<?php // $Id $
+<?php
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -30,6 +30,7 @@ require_once ('lib/fe/evalform.class.php');
 api_block_anonymous_users();
 block_students();
 
+$select_cat=isset($_GET['selectcat']) ? Security::remove_XSS($_GET['selectcat']) : '';
 $is_allowedToEdit = $is_courseAdmin;
 $evaladd = new Evaluation();
 $evaladd->set_user_id($_user['user_id']);
@@ -40,7 +41,7 @@ if (isset ($_GET['selectcat']) && (!empty ($_GET['selectcat']))) {
 } else {
 	$evaladd->set_category_id(0);
 }
-$form = new EvalForm(EvalForm :: TYPE_ADD, $evaladd, null, 'add_eval_form',null,api_get_self() . '?selectcat=' . Security::remove_XSS($_GET['selectcat']));
+$form = new EvalForm(EvalForm :: TYPE_ADD, $evaladd, null, 'add_eval_form',null,api_get_self() . '?selectcat=' .$select_cat);
 if ($form->validate()) {
 	$values = $form->exportValues();
 	$eval = new Evaluation();
@@ -83,7 +84,7 @@ if ($form->validate()) {
 }
 
 $interbreadcrumb[] = array (
-	'url' => $_SESSION['gradebook_dest'].'?selectcat='.Security::remove_XSS($_GET['selectcat']),
+	'url' => $_SESSION['gradebook_dest'].'?selectcat='.$select_cat,
 	'name' => get_lang('Gradebook'
 ));
 Display :: display_header(get_lang('NewEvaluation'));

+ 24 - 5
main/gradebook/gradebook_flatview.php

@@ -56,19 +56,34 @@ if (($showlink == '0') && ($showeval == '0')) {
 }
 $cat= Category :: load($_REQUEST['selectcat']);
 
+if (isset($_GET['userid'])) {
+	$userid=$_GET['userid'];
+} else {
+	$userid='';
+}
+
 if ($showeval) {
-	$alleval= $cat[0]->get_evaluations($_GET['userid'], true);
+	$alleval= $cat[0]->get_evaluations($userid, true);
+} else {
+	$alleval=null;
 }
 
 if ($showlink) {
-	$alllinks= $cat[0]->get_links($_GET['userid'], true);
+	$alllinks= $cat[0]->get_links($userid, true);
+} else {
+	$alllinks=null;
 }
 
 if (isset ($export_flatview_form) && (!$file_type == 'pdf')) {
 	Display :: display_normal_message($export_flatview_form->toHtml(),false);
 }
+if (isset($_GET['selectcat'])) {
+	$category_id=$_GET['selectcat'];	
+} else {
+	$category_id='';
+}
 
-$simple_search_form= new UserForm(UserForm :: TYPE_SIMPLE_SEARCH, null, 'simple_search_form', null, api_get_self() . '?selectcat=' . $_GET['selectcat']);
+$simple_search_form= new UserForm(UserForm :: TYPE_SIMPLE_SEARCH, null, 'simple_search_form', null, api_get_self() . '?selectcat=' .$category_id);
 $values= $simple_search_form->exportValues();
 $keyword = '';
 if (isset($_GET['search']) && !empty($_GET['search'])) {
@@ -82,7 +97,11 @@ if ($simple_search_form->validate() && (empty($keyword))) {
 if (!empty($keyword)) {
 	$users= find_students($keyword);
 } else {
-	$users= get_all_users($alleval, $alllinks);
+	if (isset($alleval) && isset($alllinks)) {
+		$users= get_all_users($alleval, $alllinks);
+	}else {
+		$users=null;
+	}	
 }
 if (isset ($_GET['exportpdf']))	{
 	$interbreadcrumb[]= array (
@@ -118,7 +137,7 @@ if(!empty($_POST['export_report']) && $_POST['export_report'] == 'export_report'
 		if(empty($_SESSION['export_user_fields'])) { 
 			$_SESSION['export_user_fields'] = false;
 		}
-		if(!$is_allowedToEdit and !$is_tutor) {
+		if(!api_is_allowed_to_edit(false,false) and !api_is_course_tutor()) {
 			$user_id = api_get_user_id();
 		}
 	

+ 28 - 6
main/gradebook/index.php

@@ -60,16 +60,27 @@ $tbl_grade_links = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
 $filter_confirm_msg = true;
 $filter_warning_msg = true;
 
-if ( (isset($_GET['selectcat']) && $_GET['selectcat']>0) && (isset($_SESSION['studentview']) && $_SESSION['studentview']=='studentview') ) {
-	$interbreadcrumb[]= array (
+if (isset($_GET['isStudentView'])) {
+	if ( (isset($_GET['selectcat']) && $_GET['selectcat']>0) && (isset($_SESSION['studentview']) && $_SESSION['studentview']=='studentview') ) {
+		$interbreadcrumb[]= array (
 		'url' => 'index.php'.'?selectcat=0&amp;isStudentView='.$_GET['isStudentView'],
 		'name' => get_lang('Gradebook')
-	);
+		);
+	}
 }
 
 if ( (isset($_GET['selectcat']) && $_GET['selectcat']>0) && (isset($_SESSION['studentview']) && $_SESSION['studentview']=='studentview') ) {
 	Display :: display_header(get_lang('Details'));
-	$gradebooktable= new GradebookTable(null, $allcat, $alleval,$alllink, $addparams);
+	$category= $_GET['selectcat'];
+	$stud_id=api_get_user_id();
+	$course_code=api_get_course_id();
+	$session_id=api_get_session_id();
+	$cats = Category :: load ($category, null, null, null, null, null, false);
+	$allcat= $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
+	$alleval= $cats[0]->get_evaluations($stud_id);
+	$alllink= $cats[0]->get_links($stud_id);
+	$addparams=array();
+	$gradebooktable= new GradebookTable($cats[0], $allcat, $alleval,$alllink, $addparams);
 	$gradebooktable->display();
 	Display :: display_footer();
 	exit;
@@ -79,6 +90,7 @@ if ( (isset($_GET['selectcat']) && $_GET['selectcat']>0) && (isset($_SESSION['st
 		$stud_id=api_get_user_id();
 		$course_code=api_get_course_id();
 		$session_id=api_get_session_id();
+		$addparams=array();
 		$cats = Category :: load (0, null, null, null, null, null, false);
 		$allcat= $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
 		$alleval= $cats[0]->get_evaluations($stud_id);
@@ -296,7 +308,7 @@ if (isset ($_GET['deletelink'])) {
 	$filter_confirm_msg = false;
 }
 
-if ($course_to_crsind && !isset($_GET['confirm'])) {
+if (!empty($course_to_crsind) && !isset($_GET['confirm'])) {
 	block_students();
 	
 	if (!isset($_GET['movecat']) && !isset($_GET['moveeval'])) {
@@ -513,6 +525,7 @@ if (empty ($_GET['selectcat'])) {
 } else {
 	$category= $_GET['selectcat'];
 }
+$simple_search_form='';
 // search disabled in course context
 /*
 $simple_search_form= new UserForm(UserForm :: TYPE_SIMPLE_SEARCH, null, 'simple_search_form', null, api_get_self() . '?selectcat=' . Security::remove_XSS($_GET['selectcat']));
@@ -694,7 +707,16 @@ if (( count($allcat) == 0) && ( count($alleval) == 0 ) && ( count($alllink) == 0
 } 
 //here we are in a sub category
 if ($category != '0') {
-	DisplayGradebook :: display_header_gradebook($cats[0], 0, $_GET['selectcat'], $is_course_admin, $is_platform_admin, $simple_search_form, false, true);
+	$cat=new Category();
+	$dblib=new Database();
+		
+	$category_id=Security::remove_XSS($_GET['selectcat']);
+	$course_id=$dblib->get_course_by_category($category_id);
+	$show_message=$cat->show_message_resource_delete($course_id);
+	if ($show_message=='') {
+		DisplayGradebook :: display_header_gradebook($cats[0], 0, $_GET['selectcat'], $is_course_admin, $is_platform_admin, $simple_search_form, false, true);
+	}
+
 } else {
 //this is the root category
 	//DisplayGradebook :: display_header_gradebook($cats[0], 0, 0, $is_course_admin, $is_platform_admin, $simple_search_form, false, false);

+ 30 - 1
main/gradebook/lib/be/category.class.php

@@ -337,7 +337,29 @@ class Category implements GradebookItem
 		$sql = 'DELETE FROM '.$tbl_grade_categories.' WHERE id = '.$this->id;
 		api_sql_query($sql, __FILE__, __LINE__);
 	}
+	/**
+	 * Not delete this category from the database,when visible=3 is category eliminated
+	 */
+	public function update_category_delete($course_id){
+		$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
+		$sql = 'UPDATE '.$tbl_grade_categories.' SET visible=3 WHERE course_code ="'.$course_id.'"';
+		api_sql_query($sql, __FILE__, __LINE__);
+	}
+	/**
+	 * Show message 
+	 */
+	public function show_message_resource_delete($course_id) {
+		$tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
+		$sql = 'SELECT count(*) AS num from '.$tbl_grade_categories.' WHERE course_code ="'.$course_id.'" AND visible=3';
+		$res=api_sql_query($sql, __FILE__, __LINE__);
+		$option=Database::fetch_array($res,'ASSOC');
+		if ($option['num']>=1) {
+			return '&nbsp;&nbsp;<span class="resource-deleted">(&nbsp;'.get_lang('ResourceDeleted').'&nbsp;)</span>';
+		} else {
+			return false;
+		}
 
+	}
 
 // OTHER FUNCTIONS
 
@@ -544,8 +566,15 @@ class Category implements GradebookItem
     					.' AND status = '.COURSEMANAGER
     					.')';
             }
+        }elseif (api_is_platform_admin()) {
+        	if (isset($session_id) && $session_id!=0) {
+        		$sql.=' AND session_id='.$session_id;
+        	} else {
+        		$sql.=' AND coalesce(session_id,0)=0';
+        	}
+        	
+        	
         }
-
 		$result = api_sql_query($sql, __FILE__, __LINE__);
 		$cats = Category::create_category_objects_from_sql_result($result);
 

+ 14 - 8
main/gradebook/lib/be/exerciselink.class.php

@@ -240,20 +240,26 @@ class ExerciseLink extends AbstractLink
      * Lazy load function to get the database table of the exercise
      */
     private function get_exercise_table () {
-    	if (!isset($this->exercise_table)) {
-	    	$course_info = Database :: get_course_info($this->get_course_code());
-			$database_name = isset($course_info['db_name']) ? $course_info['db_name'] : '';
-			$this->exercise_table = Database :: get_course_table(TABLE_QUIZ_TEST, $database_name);
-    	}
-   		return $this->exercise_table;
+    	$course_info = Database :: get_course_info($this->get_course_code());
+		$database_name = isset($course_info['db_name']) ? $course_info['db_name'] : '';
+		if ($database_name!='') {
+    		if (!isset($this->exercise_table)) {
+				$this->exercise_table = Database :: get_course_table(TABLE_QUIZ_TEST, $database_name);
+    		}
+   			return $this->exercise_table;
+   		} else {
+   			return '';
+   		}
     }
 
     /**
      * Lazy load function to get the database contents of this exercise
      */
     private function get_exercise_data () {
-    	if (!isset($this->exercise_data))
-    	{
+    	$tbl_exercise=$this->get_exercise_table();
+    	if ($tbl_exercise=='') {
+    		return false;
+    	} elseif (!isset($this->exercise_data)) {
 			$sql = 'SELECT * from '.$this->get_exercise_table()
 					.' WHERE id = '.$this->get_ref_id();
 			$result = api_sql_query($sql, __FILE__, __LINE__);

+ 19 - 11
main/gradebook/lib/fe/displaygradebook.php

@@ -186,6 +186,11 @@ class DisplayGradebook
 	 */
 	function display_header_gradebook($catobj, $showtree, $selectcat, $is_course_admin, $is_platform_admin, $simple_search_form, $show_add_qualification = true, $show_add_link = true) {
 		//student
+		$objcat=new Category();
+		$objdat=new Database();
+		
+		$course_id=$objdat->get_course_by_category($selectcat);
+		$message_resource=$objcat->show_message_resource_delete($course_id);
 		if (!$is_course_admin) {
 			$user_id = api_get_user_id();
 			$user= get_user_info_from_id($user_id);		
@@ -252,18 +257,20 @@ class DisplayGradebook
 			if (!$selectcat == '0') {
 				$header .= '<td style="vertical-align: top;"><a href="' . api_get_self() . '?selectcat=' . $catobj->get_parent_id() . '"><img src="../img/folder_up.gif" border="0" alt="" /></a></td>';
 			}
-            if (!empty($simple_search_form)) {
+            if (!empty($simple_search_form) && $message_resource===false) {
 			    $header .= '<td style="vertical-align: top;">'.$simple_search_form->toHtml().'</td>';
             } else {
             	$header .= '<td></td>';
             }
-			if ($is_course_admin) {
+			if ($is_course_admin && $message_resource===false) {
 				$header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/stats_access.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
-				if ($is_platform_admin) {
+				if ($is_platform_admin && $message_resource===false) {
 					$header .= '<td style="vertical-align: top;"><a href="gradebook_scoring_system.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() .'"><img src="../img/acces_tool.gif" alt="' . get_lang('ScoreEdit') . '" /> ' . get_lang('ScoreEdit') . '</a>';
 				}	
 			} elseif (!(isset ($_GET['studentoverview']))) {
-				$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&selectcat=' . $catobj->get_id() . '"><img src="../img/stats_access.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
+				if ( $message_resource===false ) {
+					$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&selectcat=' . $catobj->get_id() . '"><img src="../img/stats_access.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
+				}
 			} else {
 				$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&exportpdf=&selectcat=' . $catobj->get_id() . '" target="_blank"><img src="../img/calendar_up.gif" alt="' . get_lang('ExportPDF') . '" /> ' . get_lang('ExportPDF') . '</a>';
 			}
@@ -279,17 +286,17 @@ class DisplayGradebook
 				    $header .= '<a href="gradebook_add_cat.php?'.api_get_cidreq().'&selectcat=0"><img src="../img/folder_new.gif" alt="' . get_lang('NewCategory') . '" /> ' . get_lang('NewCategory') . '</a></td>';
                 }
                 if ($show_add_link === true) {
-				    $header .= '<td><a href="gradebook_add_eval.php'.api_get_cidreq().'&"><img src="../img/filenew.gif" alt="' . get_lang('NewEvaluation') . '" /> ' . get_lang('NewEvaluation') . '</a>';
+				    $header .= '<td><a href="gradebook_add_eval.php?'.api_get_cidreq().'"><img src="../img/filenew.gif" alt="' . get_lang('NewEvaluation') . '" /> ' . get_lang('NewEvaluation') . '</a>';
                 }
 
 			} else {
-                if ($show_add_qualification === true) {
+                if ($show_add_qualification === true && $message_resource===false) {
     				$header .= '<a href="gradebook_add_cat.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '" ><img src="../img/folder_new.gif" alt="' . get_lang('NewSubCategory') . '" align="absmiddle" /> ' . get_lang('NewSubCategory') . '</a></td>';
                 }
-                if ($show_add_link === true) {
+                if ($show_add_link === true && $message_resource==false) {
     				$header .= '<td><a href="gradebook_add_eval.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '" ><img src="../img/filenew.gif" alt="' . get_lang('NewEvaluation') . '" align="absmiddle" /> ' . get_lang('NewEvaluation') . '</a>&nbsp;';
                     $cats= Category :: load($selectcat);
-                    if ($cats[0]->get_course_code() != null) {
+                    if ($cats[0]->get_course_code() != null && $message_resource===false) {
                         //$header .= '<td><a href="gradebook_add_link.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/link.gif" alt="' . get_lang('MakeLink') . '" align="absmiddle" /> ' . get_lang('MakeLink') . '</a>';
                         $header .= '<td><a href="gradebook_add_link.php?course_code='.api_get_course_id().'&selectcat=' . $catobj->get_id() . '"><img src="../img/link.gif" alt="' . get_lang('MakeLink') . '" align="absmiddle" /> ' . get_lang('MakeLink') . '</a>&nbsp;';
                         
@@ -297,7 +304,9 @@ class DisplayGradebook
                         $header .= '<td><a href="gradebook_add_link_select_course.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/link.gif" alt="' . get_lang('MakeLink') . '" align="absmiddle" /> ' . get_lang('MakeLink') . '</a>&nbsp;';
                     }
                 }
-                 $header .= '<td><a href="gradebook_edit_all.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/quiz.gif" alt="' . get_lang('EditAllWeights') . '" align="absmiddle"/> ' . get_lang('EditAllWeights') . '</a>';
+                if ($message_resource===false ) {
+                 	$header .= '<td><a href="gradebook_edit_all.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/quiz.gif" alt="' . get_lang('EditAllWeights') . '" align="absmiddle"/> ' . get_lang('EditAllWeights') . '</a>';
+                }
 			}
 		} elseif (isset ($_GET['search'])) {
 			$header .= '<b>'.get_lang('SearchResults').' :</b>';
@@ -306,7 +315,6 @@ class DisplayGradebook
 		echo $header;
 	}
 	
-	
 	function display_reduce_header_gradebook($catobj,$is_course_admin, $is_platform_admin, $simple_search_form, $show_add_qualification = true, $show_add_link = true) {
 		//student
 		if (!$is_course_admin) {
@@ -330,7 +338,7 @@ class DisplayGradebook
 			
 			if ($is_course_admin) {
 				$header .= '<td style="vertical-align: top;"><a href="gradebook_flatview.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() . '"><img src="../img/stats_access.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';
-				if ($is_platform_admin || $is_course_admin)
+				if ($is_platform_admin || $is_course_admin) 
 					$header .= '<td style="vertical-align: top;"><a href="gradebook_scoring_system.php?'.api_get_cidreq().'&selectcat=' . $catobj->get_id() .'"><img src="../img/acces_tool.gif" alt="' . get_lang('ScoreEdit') . '" /> ' . get_lang('ScoreEdit') . '</a>';
 			} elseif (!(isset ($_GET['studentoverview']))) {
 				$header .= '<td style="vertical-align: top;"><a href="'.api_get_self().'?'.api_get_cidreq().'&studentoverview=&selectcat=' . $catobj->get_id() . '"><img src="../img/stats_access.gif" alt="' . get_lang('FlatView') . '" /> ' . get_lang('FlatView') . '</a>';

+ 1 - 1
main/gradebook/lib/fe/gradebooktable.class.php

@@ -74,7 +74,7 @@ class GradebookTable extends SortableTable
 			$this->set_header($column++, get_lang('Modify'), false, 'width="100"');
 			//actions on multiple selected documents
 			$this->set_form_actions(array (
-				'deleted' => get_lang('DeleteSelected'),
+				'delete' => get_lang('DeleteSelected'),
 				'setvisible' => get_lang('SetVisible'),
 				'setinvisible' => get_lang('SetInvisible')));
 		} else {