diff --git a/main/exercice/exercice.php b/main/exercice/exercice.php
index b189251926..8374a43046 100644
--- a/main/exercice/exercice.php
+++ b/main/exercice/exercice.php
@@ -927,100 +927,26 @@ if($_configuration['tracking_enabled'])
echo '
';
}
- switch ($_GET['column']) {
- case 'username':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=1';
- }
- else
- {
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- }
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=1';
- }
- else
- {
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- }
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=1';
- }
- else
- {
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- }
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- break;
- case '':
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- }
-
- switch ($_GET['column']) {
- case 'username':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=1';
- }
- else
- {
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- }
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=1';
- }
- else
- {
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- }
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=1';
- }
- else
- {
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- }
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- break;
- case '':
- $urlusername = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=username&direction=0';
- $urlexercisename = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=exercisename&direction=0';
- $urldate = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&column=date&direction=0';
- break;
- }
-
- ?>
+ $order_like = (int)$_GET['direction'];
+ if($order_like != 0 && $order_like != 1) $order_like = 0;
+ $new_orientation = $order_like ^ 1;
+ $orientation = array();
+ $orientation[0] = 'ASC'; // default order
+ $orientation[1] = 'DESC';
+ $ordering = $orientation[$order_like];
+
+ $main_url = $_SESSION['checkDokeosURL'].'main/exercice/exercice.php?'.api_get_cidreq().'&show=result&';
+ $urlusername = $main_url.'column=username&direction='.(($_GET['column']=='username') ? $new_orientation : 0);
+ $urlexercisename = $main_url.'column=exercisename&direction='.(($_GET['column']=='exercisename') ? $new_orientation : 0);
+ $urldate = $main_url.'column=date&direction='.(($_GET['column']=='date') ? $new_orientation : 0);
+?>
- |
+ |
+ |
+
|
|
|
@@ -1030,49 +956,29 @@ if($_configuration['tracking_enabled'])
$_user['user_id'] clause has been removed
$sql="SELECT CONCAT(lastname,' ',firstname),ce.title, te.exe_result ,
- te.exe_weighting, UNIX_TIMESTAMP(te.exe_date),te.exe_Id,email
+ te.exe_weighting, UNIX_TIMESTAMP(te.exe_date),te.exe_Id,email, UNIX_TIMESTAMP(te.start_date)
FROM $TBL_EXERCICES AS ce , $TBL_TRACK_EXERCICES AS te, $TBL_USER AS user
- WHERE te.exe_exo_id = ce.id AND user_id=te.exe_user_id AND te.exe_cours_id='$_cid'";
-
-
+ WHERE te.exe_exo_id = ce.id AND te.status != 'incomplete' AND user_id=te.exe_user_id AND te.exe_cours_id='$_cid'";
+
+
switch ($_GET['column']) {
case 'username':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $sql .= " order by lastname ASC, firstname ASC,ce.title ASC, te.exe_date ASC";
- }
- else
- {
- $sql .= " order by lastname DESC, firstname ASC, ce.title ASC, te.exe_date ASC";
- }
+ $sql .= ' order by lastname '.$ordering.', firstname ASC, ce.title ASC, te.exe_date ASC';
break;
case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $sql .= " order by ce.title ASC, te.exe_date ASC, lastname ASC, firstname ASC";
- }
- else
- {
- $sql .= " order by ce.title DESC, te.exe_date ASC, lastname ASC, firstname ASC";
- }
+ $sql .= ' order by ce.title '.$ordering.', te.exe_date ASC, lastname ASC, firstname ASC';
break;
case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $sql .= " order by te.exe_date ASC,ce.title ASC, lastname ASC, firstname ASC";
- }
- else
- {
- $sql .= " order by te.exe_date DESC,ce.title ASC, lastname ASC, firstname ASC";
- }
+ $sql .= ' order by te.exe_date '.$ordering.',ce.title ASC, lastname ASC, firstname ASC';
break;
case '':
- $sql .= " ORDER BY te.exe_cours_id ASC, ce.title ASC, te.exe_dateASC";
+ $sql .= ' ORDER BY te.exe_cours_id ASC, ce.title ASC, te.exe_date ASC';
break;
}
$hpsql="SELECT CONCAT(tu.lastname,' ',tu.firstname), tth.exe_name,
@@ -1081,37 +987,16 @@ if($_configuration['tracking_enabled'])
WHERE tu.user_id=tth.exe_user_id AND tth.exe_cours_id = '".$_cid."'";
switch ($_GET['column']) {
case 'username':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $hpsql .= " order by tu.lastname ASC, tu.firstname ASC,tth.exe_date ASC,tth.exe_name ASC";
- }
- else
- {
- $hpsql .= " order by tu.lastname DESC, tu.firstname ASC, tth.exe_date ASC,tth.exe_name ASC";
- }
+ $hpsql .= ' order by tu.lastname '.$ordering.', tu.firstname ASC,tth.exe_date ASC,tth.exe_name ASC';
break;
case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $hpsql .= " order by tth.exe_name ASC, tth.exe_date ASC, tu.lastname ASC, tu.firstname ASC";
- }
- else
- {
- $hpsql .= " order by tth.exe_name DESC, tth.exe_date ASC, tu.lastname ASC, tu.firstname ASC";
- }
+ $hpsql .= ' order by tth.exe_name '.$ordering.', tth.exe_date ASC, tu.lastname ASC, tu.firstname ASC';
break;
case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $hpsql .= " order by tth.exe_date ASC,tth.exe_name ASC, tu.lastname ASC, tu.firstname ASC";
- }
- else
- {
- $hpsql .= " order by tth.exe_date DESC,tth.exe_name ASC, tu.lastname ASC, tu.firstname ASC";
- }
+ $hpsql .= ' order by tth.exe_date '.$ordering.',tth.exe_name ASC, tu.lastname ASC, tu.firstname ASC';
break;
case '':
- $hpsql .= " ORDER BY tth.exe_cours_id ASC, tth.exe_date ASC";
+ $hpsql .= ' ORDER BY tth.exe_cours_id ASC, tth.exe_date ASC';
break;
}
}
@@ -1120,27 +1005,13 @@ if($_configuration['tracking_enabled'])
$_uid = api_get_user_id();
$sql="SELECT '',ce.title, te.exe_result , te.exe_weighting, UNIX_TIMESTAMP(te.exe_date),te.exe_id
FROM $TBL_EXERCICES AS ce , $TBL_TRACK_EXERCICES AS te
- WHERE te.exe_exo_id = ce.id AND te.exe_user_id='".$_uid."' AND te.exe_cours_id='$_cid'";
+ WHERE te.exe_exo_id = ce.id AND te.exe_user_id='".$_uid."'AND te.status != 'incomplete' AND te.exe_cours_id='$_cid'";
switch ($_GET['column']) {
case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $sql .= " order by ce.title ASC, te.exe_date ASC";
- }
- else
- {
- $sql .= " order by ce.title DESC, te.exe_date ASC";
- }
+ $sql .= " order by ce.title $ordering, te.exe_date ASC";
break;
case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $sql .= " order by te.exe_date ASC,ce.title ASC";
- }
- else
- {
- $sql .= " order by te.exe_date DESC,ce.title ASC";
- }
+ $sql .= " order by te.exe_date $ordering,ce.title ASC";
break;
case '':
$sql .= " ORDER BY te.exe_cours_id ASC, ce.title ASC, te.exe_date ASC";
@@ -1151,24 +1022,10 @@ if($_configuration['tracking_enabled'])
WHERE exe_user_id = '".$_uid."' AND exe_cours_id = '".$_cid."'";
switch ($_GET['column']) {
case 'exercisename':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $hpsql .= " order by exe_name ASC, exe_date ASC";
- }
- else
- {
- $hpsql .= " order by exe_name DESC, exe_date ASC";
- }
+ $hpsql .= " order by exe_name $ordering, exe_date ASC";
break;
case 'date':
- if ($_GET['direction'] == '' || $_GET['direction'] == 0)
- {
- $hpsql .= " order by exe_date ASC,exe_name ASC";
- }
- else
- {
- $hpsql .= " order by exe_date DESC,exe_name ASC";
- }
+ $hpsql .= " order by exe_date $ordering,exe_name ASC";
break;
case '':
$hpsql .= " ORDER BY exe_cours_id ASC, exe_date ASC";
@@ -1176,7 +1033,7 @@ if($_configuration['tracking_enabled'])
}
//echo $sql;
}
- $results=getManyResultsXCol($sql,7);
+ $results=getManyResultsXCol($sql,8);
$hpresults=getManyResultsXCol($hpsql,5);
$NoTestRes = 0;
@@ -1199,12 +1056,20 @@ if($_configuration['tracking_enabled'])
if($is_allowedToEdit || $is_tutor)
{
$user = $results[$i][0];
- echo ''.$user.' | ';
+ echo ''.$user.' '.$duration.' | ';
+ if($results[$i][7] > 1)
+ echo ''.ceil((($results[$i][4] - $results[$i][7])/60)).' '.get_lang('min').' | ';
}
+
echo ''.$test.' | ';
echo ''.format_locale_date(get_lang('dateTimeFormatLong'),$results[$i][4]).' | ';
echo ''.round(($res/($results[$i][3]!=0?$results[$i][3]:1))*100).'% ('.$res.' / '.$results[$i][3].') | ';
- echo ''.(($is_allowedToEdit||$is_tutor)?"".get_lang('Edit').''.' - '.''.get_lang('Delete').'':"".get_lang('Show').'').' | ';
+ echo ''.
+ (($is_allowedToEdit||$is_tutor)?
+ "".get_lang('Edit').''.' - '.''.get_lang('Delete').''
+ .' - '.get_lang('ViewHistory').''
+ :
+ "".get_lang('Show').'').' | ';
echo '';
}
}
diff --git a/main/exercice/exercice_submit.php b/main/exercice/exercice_submit.php
index 1cd22a5af8..5df36f6b1c 100644
--- a/main/exercice/exercice_submit.php
+++ b/main/exercice/exercice_submit.php
@@ -37,7 +37,7 @@
* @package dokeos.exercise
* @author Olivier Brouckaert
* @author Julio Montoya multiple fill in blank option added
-* @version $Id: exercice_submit.php 16633 2008-10-27 22:58:34Z yannoo $
+* @version $Id: exercice_submit.php 16657 2008-11-04 18:06:45Z dperales $
*/
@@ -73,6 +73,10 @@ include_once(api_get_path(LIBRARY_PATH).'text.lib.php');
$is_allowedToEdit=api_is_allowed_to_edit();
+$_configuration['live_exercise_tracking'] = true;
+$stat_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
+$exercice_attemp_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
+
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
@@ -141,6 +145,59 @@ if ($origin=='builder')
if(isset($_SESSION['exerciseResultCoordinates'])) { api_session_unregister('exerciseResultCoordinates'); unset($exerciseResultCoordinates); }
}
+$condition = ' WHERE ' .
+ 'exe_exo_id = '."'".$exerciseId."'".' AND ' .
+ 'exe_user_id = '."'".api_get_user_id()."'".' AND ' .
+ 'exe_cours_id = '."'".$_course['id']."'".' AND ' .
+ 'status = '."'incomplete'".' AND '.
+ 'session_id = '."'".api_get_session_id()."'";
+
+if(empty($exerciseType)){
+ $TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
+ $result=api_sql_query("SELECT type FROM $TBL_EXERCICES WHERE id='$exerciseId'",__FILE__,__LINE__);
+ $exercise_row = mysql_fetch_array($result);
+ $exerciseType = $exercise_row['type'];
+}
+
+//search for a 'incomplete' exercise of this user for this exercise for this course and session
+//if exist, try to build and array of answers from the track_e_attempt
+// and load the question list saved too.
+if($_configuration['live_exercise_tracking'] == true){
+ $sql = api_sql_query('SELECT * FROM '.$stat_table.$condition,__FILE__,__LINE__);
+ if(mysql_num_rows($sql) > 0 ){
+ if($exerciseType == 2){
+ $getIncomplete = mysql_fetch_array($sql);
+ $exe_id = $getIncomplete['exe_id'];
+ if($_SERVER['REQUEST_METHOD']!='POST'){
+ $recorded['questionList'] = explode(',',$getIncomplete['data_tracking']);
+
+ //building the answers array, taking care of handling "multiple answers" behavior.
+ $sql = api_sql_query('SELECT * FROM '.$exercice_attemp_table.' WHERE exe_id = '.$getIncomplete['exe_id'].' ORDER BY tms ASC',__FILE__,__LINE__);
+ while($row = mysql_fetch_array($sql)){
+ if(array_key_exists($row['question_id'],$recorded['exerciseResult'])){
+ if(!is_array($recorded['exerciseResult'][$row['question_id']])){
+ $last_value = $recorded['exerciseResult'][$row['question_id']];
+ $recorded['exerciseResult'][$row['question_id']] = array();
+ $recorded['exerciseResult'][$row['question_id']][$last_value] = 1;
+ }
+ $recorded['exerciseResult'][$row['question_id']][$row['answer']] = 1;
+ } else {
+ $recorded['exerciseResult'][$row['question_id']] = $row['answer'];
+ }
+ }
+
+ $_SESSION['exerciseResult'] = $recorded['exerciseResult'];
+ $exerciseType = 2;
+ $questionNum = count($recorded['exerciseResult']);
+ $questionNum++;
+ $questionList = $_SESSION['questionList'] = $recorded['questionList'];
+ }
+ }
+ }else{
+ $table_recorded_not_exist = true;
+ }
+}
+
// if the user has submitted the form
if($formSent)
{
@@ -180,6 +237,23 @@ if($formSent)
// stores the user answer into the array
$exerciseResult[$key]=$choice[$key];
+ //saving each question
+ if($_configuration['live_exercise_tracking'] == true && $exerciseType == 2):
+ $nro_question = $questionNum;// - 1;
+ // for multiple answers
+ if(is_array($choice[$key])){
+ foreach ($choice[$key] as $key_array => $value){
+ api_sql_query('INSERT INTO '.$exercice_attemp_table.' (exe_id,user_id,question_id,answer,marks,course_code,position,tms)'.
+ ' VALUES '.
+ '('."'".(int)$exe_id."','".api_get_user_id()."','".$questionList[$nro_question]."','".Database::escape_string($key_array)."','','".$_course['id']."','".$position."','".date('Y-m-d H:i:s')."'".')');
+ }
+ } else {
+ api_sql_query('INSERT INTO '.$exercice_attemp_table.' (exe_id,user_id,question_id,answer,marks,course_code,position,tms)'.
+ ' VALUES '.
+ '('."'".(int)$exe_id."','".api_get_user_id()."','".$questionList[$nro_question]."','".Database::escape_string($choice[$key])."','','".$_course['id']."','".$position."','".date('Y-m-d H:i:s')."'".')');
+ }
+ endif;
+
if (isset($_POST['hotspot']))
{
$exerciseResultCoordinates[$key] = $_POST['hotspot'][$key];
@@ -198,7 +272,7 @@ if($formSent)
{
if($debug>0){echo str_repeat(' ',0).'Redirecting to exercise_result.php - Remove debug option to let this happen'."
\n";}
// goes to the script that will show the result of the exercise
- header("Location: exercise_result.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id");
+ header("Location: exercise_result.php?exerciseType=$exerciseType&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id");
exit();
}
if($debug>0){echo str_repeat(' ',0).'$formSent was set - end'."
\n";}
@@ -235,6 +309,9 @@ if(!is_object($objExercise))
header('Location: exercice.php');
exit();
}
+
+$Exe_starttime = $objExercise->start_time;
+$Exe_endtime = $objExercise->end_time;
$quizID = $objExercise->selectId();
$exerciseAttempts=$objExercise->selectAttempts();
$exerciseTitle=$objExercise->selectTitle();
@@ -456,7 +533,35 @@ if( $exerciseAttempts > 0){
}
+if(!function_exists('convert_date_to_number')){
+function convert_date_to_number($default){
+ // 2008-10-12 00:00:00 ---to--> 12345672218 (timestamp)
+ $parts = split(' ',$default);
+ list($d_year,$d_month,$d_day) = split('-',$parts[0]);
+ list($d_hour,$d_minute,$d_second) = split(':',$parts[1]);
+ return mktime($d_hour, $d_minute, $d_second, $d_month, $d_day, $d_year);
+}
+}
+$limit_time_exists = (($Exe_starttime!='0000-00-00 00:00:00')||($Exe_endtime!='0000-00-00 00:00:00'))? true : false;
+if($limit_time_exists){
+ $exercise_start_time = convert_date_to_number($Exe_starttime);
+ //$exercise_end_time = convert_date_to_number($Exe_endtime);
+ $time_now = convert_date_to_number(date('Y-m-d H:i:s'));
+ $permission_to_start = (($time_now - $exercise_start_time)>0)?true:false;
+ //if($_SERVER['REQUEST_METHOD']!='POST')$exercise_timeover = (($time_now - $exercise_end_time)>0)?true:false;
+ if($permission_to_start == false ){ //|| $exercise_timeover == true
+ if(!api_is_allowed_to_edit()){
+ $message_warning = ($permission_to_start == false)? get_lang('ExerciseNoStartedYet') : get_lang('ReachedTimeLimit') ;
+ Display::display_warning_message(sprintf($message_warning,$exerciseTitle,$exerciseAttempts));
+ Display::display_footer();
+ exit;
+ } else {
+ $message_warning = ($permission_to_start == false)? get_lang('ExerciseNoStartedAdmin') : get_lang('ReachedTimeLimitAdmin') ;
+ Display::display_warning_message(sprintf($message_warning,$exerciseTitle,$exerciseAttempts));
+ }
+ }
+}
if(!empty($error))
@@ -612,6 +717,24 @@ else
echo $s;
}
+ //creating empty exercise if incomplete not exist
+ if($_configuration['live_exercise_tracking'] == true):
+ //if($questionNum < 2){
+ if($table_recorded_not_exist){
+ if($exerciseType == 2){
+ api_sql_query('INSERT INTO '.$stat_table.' ' .
+ '(exe_exo_id,exe_user_id,exe_cours_id,status,session_id,data_tracking,start_date) ' .
+ 'VALUES ' .
+ '('."'$exerciseId','".api_get_user_id()."','".$_course['id']."','incomplete','".api_get_session_id()."','".implode(',',$questionList)."','".date('Y-m-d H:i:s')."'".') ',__FILE__,__LINE__);
+ } else {
+ api_sql_query('INSERT INTO '.$stat_table.' ' .
+ '(exe_exo_id,exe_user_id,exe_cours_id,status,session_id,start_date) ' .
+ 'VALUES ' .
+ '('."'$exerciseId','".api_get_user_id()."','".$_course['id']."','incomplete','".api_get_session_id()."','".date('Y-m-d H:i:s')."'".') ',__FILE__,__LINE__);
+ }
+ }
+ endif;
+
if ($origin != 'learnpath') { //so we are not in learnpath tool
Display::display_footer();
}
diff --git a/main/exercice/exercise.class.php b/main/exercice/exercise.class.php
index 466b780edb..693f31931a 100644
--- a/main/exercice/exercise.class.php
+++ b/main/exercice/exercise.class.php
@@ -25,7 +25,7 @@
* Exercise class: This class allows to instantiate an object of type Exercise
* @package dokeos.exercise
* @author Olivier Brouckaert
-* @version $Id: exercise.class.php 16072 2008-08-26 18:11:13Z juliomontoya $
+* @version $Id: exercise.class.php 16657 2008-11-04 18:06:45Z dperales $
*/
@@ -42,6 +42,8 @@ class Exercise
var $active;
var $timeLimit;
var $attempts;
+ var $end_time;
+ var $start_time;
var $questionList; // array with the list of this exercise's questions
@@ -79,7 +81,7 @@ class Exercise
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
#$TBL_REPONSES = Database::get_course_table(TABLE_QUIZ_ANSWER);
- $sql="SELECT title,description,sound,type,random,active, results_disabled, max_attempt FROM $TBL_EXERCICES WHERE id='".Database::escape_string($id)."'";
+ $sql="SELECT title,description,sound,type,random,active, results_disabled, max_attempt,start_time,end_time FROM $TBL_EXERCICES WHERE id='".Database::escape_string($id)."'";
$result=api_sql_query($sql,__FILE__,__LINE__);
// if the exercise has been found
@@ -94,6 +96,8 @@ class Exercise
$this->active=$object->active;
$this->results_disabled =$object->results_disabled;
$this->attempts = $object->max_attempt;
+ $this->end_time = $object->end_time;
+ $this->start_time = $object->start_time;
$sql="SELECT question_id, question_order FROM $TBL_EXERCICE_QUESTION,$TBL_QUESTIONS WHERE question_id=id AND exercice_id='".Database::escape_string($id)."' ORDER BY question_order";
$result=api_sql_query($sql,__FILE__,__LINE__);
@@ -109,6 +113,21 @@ class Exercise
$this->questionList[$object->question_order]=$object->question_id;
}
+
+ if($this->random==1){
+ shuffle($this->questionList);
+ }
+ global $_configuration;
+ global $questionList;
+ //overload questions list with recorded questions list
+ //load questions only for exercises of type 'one question per page'
+ //this is needed only is there is no questions
+ //
+ if($this->type == 2 && $_configuration['live_exercise_tracking']==true && $_SERVER['REQUEST_METHOD']!='POST')
+ {
+ if(!empty($_SESSION['questionList']))$this->questionList = $questionList;
+ }
+
return true;
}
@@ -253,6 +272,7 @@ class Exercise
*/
function selectRandomList()
{
+ return $this->questionList;
$nbQuestions = $this->selectNbrQuestions();
//Not a random exercise, or if there are not at least 2 questions
@@ -260,7 +280,7 @@ class Exercise
{
return $this->questionList;
}
-
+
$randQuestionList = array();
$alreadyChosen = array();
@@ -448,11 +468,13 @@ class Exercise
$random=$this->random;
$active=$this->active;
$results_disabled = intval($this->results_disabled);
-
+ $start_time = Database::escape_string($this->start_time);
+ $end_time = Database::escape_string($this->end_time);
// exercise already exists
if($id)
{
$sql="UPDATE $TBL_EXERCICES SET
+ start_time='$start_time',end_time='$end_time',
title='".Database::escape_string($exercise)."',
description='".Database::escape_string($description)."',
sound='".Database::escape_string($sound)."',
@@ -467,8 +489,9 @@ class Exercise
// creates a new exercise
else
{
- $sql="INSERT INTO $TBL_EXERCICES(title,description,sound,type,random,active, results_disabled, max_attempt)
+ $sql="INSERT INTO $TBL_EXERCICES(start_time,end_time,title,description,sound,type,random,active, results_disabled, max_attempt)
VALUES(
+ '$start_time','$end_time',
'".Database::escape_string($exercise)."',
'".Database::escape_string($description)."',
'".Database::escape_string($sound)."',
@@ -760,36 +783,27 @@ class Exercise
$form -> addElement('html','');
$random = array();
- $option=array();
-
+ $max = ($this->id > 0) ? $this->selectNbrQuestions() : 10 ;
+ $option = range(0,$max);
$option[0]=get_lang('DoNotRandomize');
-
- $count_list=10;
- if ($this->id>0)
- {
- $count_list = $this->selectNbrQuestions();
- }
- for($i=1 ; $i<=$count_list; ++$i)
- {
- $option[$i] = $i; // fill the array with A, B, C.....
- }
-
- $attempt_option=array();
- $attempt_option[0]=get_lang('Infinite');
-
- for($i=1 ; $i<=10; ++$i)
- {
- $attempt_option[$i] = $i; // fill the array with A, B, C.....
- }
+
$random[] = FormValidator :: createElement ('static', 'help','help',''.get_lang('RandomQuestionsHelp').'');
$random[] = FormValidator :: createElement ('select', 'randomQuestions',null,$option);
//$random[] = FormValidator :: createElement ('text', 'randomQuestions', null,null,'0');
$form -> addGroup($random,null,get_lang('RandomQuestions').' : ','
');
+ $attempt_option=range(0,10);
+ $attempt_option[0]=get_lang('Infinite');
+
+ $form -> addElement('select', 'exerciseAttempts',get_lang('ExerciseAttempts').' : ',$attempt_option);
+
+ $form -> addElement('checkbox', 'enabletimelimit',null ,get_lang('EnableTimeLimits'));
+ $form -> addElement('date', 'start_time', get_lang('ExeStartTime'), array('language'=>'es','format' => 'dMYHi'));
+ $form -> addElement('date', 'end_time', get_lang('ExeEndTime'), array('language'=>'es','format' => 'dMYHi'));
+
// Exercise attempts
//$form -> addElement('text', 'exerciseAttempts', get_lang('ExerciseAttempts').' : ',array('size'=>'2'));
- $form -> addElement('select', 'exerciseAttempts',get_lang('ExerciseAttempts').' : ',$attempt_option);
$form -> addElement('html','
');
@@ -799,6 +813,9 @@ class Exercise
// rules
$form -> addRule ('exerciseTitle', get_lang('GiveExerciseName'), 'required');
$form -> addRule ('exerciseAttempts', get_lang('Numeric'), 'numeric');
+ $form -> addRule (array('start_time','end_time'), get_lang('DateValidation'), 'comparedate');
+ $form -> addRule ('start_time', get_lang('Dateinconsistent'), 'errordate');
+ $form -> addRule ('end_time', get_lang('Dateinconsistent'), 'errordate');
// defaults
$defaults = array();
@@ -816,7 +833,13 @@ class Exercise
$defaults['exerciseType'] = $this -> selectType();
$defaults['exerciseTitle'] = $this -> selectTitle();
$defaults['exerciseDescription'] = $this -> selectDescription();
- $defaults['exerciseAttempts'] = $this->selectAttempts();
+ $defaults['exerciseAttempts'] = $this->selectAttempts();
+
+ if(($this -> start_time!='0000-00-00 00:00:00')||($this -> end_time!='0000-00-00 00:00:00'))
+ $defaults['enabletimelimit'] = 1;
+
+ $defaults['start_time'] = ($this->start_time!='0000-00-00 00:00:00')? $this -> start_time : date('Y-m-d 12:00:00');
+ $defaults['end_time'] = ($this->end_time!='0000-00-00 00:00:00')?$this -> end_time : date('Y-m-d 12:00:00');
}
else
{
@@ -824,6 +847,9 @@ class Exercise
$defaults['exerciseAttempts'] = 0;
$defaults['randomQuestions'] = 0;
$defaults['exerciseDescription'] = '';
+
+ $defaults['start_time'] = date('Y-m-d 12:00:00');
+ $defaults['end_time'] = date('Y-m-d 12:00:00');
}
$form -> setDefaults($defaults);
}
@@ -840,8 +866,22 @@ class Exercise
$this -> updateDescription($form -> getSubmitValue('exerciseDescription'));
$this -> updateType($form -> getSubmitValue('exerciseType'));
$this -> setRandom($form -> getSubmitValue('randomQuestions'));
- $this -> save();
+ if($form -> getSubmitValue('enabletimelimit')==1)
+ {
+ $start_time = $form -> getSubmitValue('start_time');
+ $start_time = $start_time['Y'].'-'.$start_time['M'].'-'.$start_time['d'].' '.$start_time['H'].':'.$start_time['i'].':00';
+ $end_time = $form -> getSubmitValue('end_time');
+ $end_time = $end_time['Y'].'-'.$end_time['M'].'-'.$end_time['d'].' '.$end_time['H'].':'.$end_time['i'].':00';
+ $this -> start_time = $start_time;
+ $this -> end_time = $end_time;
+ }
+ else
+ {
+ $this -> start_time = '0000-00-00 00:00:00';
+ $this -> end_time = '0000-00-00 00:00:00';
+ }
+ $this -> save();
}
}
diff --git a/main/exercice/exercise_result.php b/main/exercice/exercise_result.php
index 2b12ae3a5e..324361d363 100644
--- a/main/exercice/exercise_result.php
+++ b/main/exercice/exercise_result.php
@@ -29,7 +29,7 @@
* @author Olivier Brouckaert, main author
* @author Roan Embrechts, some refactoring
* @author Julio Montoya Armas switchable fill in blank option added
-* @version $Id: exercise_result.php 16633 2008-10-27 22:58:34Z yannoo $
+* @version $Id: exercise_result.php 16657 2008-11-04 18:06:45Z dperales $
*
* @todo split more code up in functions, move functions to library?
*/
@@ -125,6 +125,16 @@ if ( empty ( $questionList ) ) {
if ( empty ( $objExercise ) ) {
$objExercise = $_SESSION['objExercise'];
}
+if ( empty ( $exerciseType ) ) {
+ $exerciseType = $_REQUEST['exerciseType'];
+}
+$_configuration['live_exercise_tracking'] = true;
+if($_configuration['live_exercise_tracking']) define('ENABLED_LIVE_EXERCISE_TRACKING',1);
+
+if($_configuration['live_exercise_tracking'] == true && $exerciseType == 1){
+ $_configuration['live_exercise_tracking'] = false;
+}
+
$main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
$main_admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
$courseName = $_SESSION['_course']['name'];
@@ -453,7 +463,7 @@ $exerciseTitle=api_parse_tex($exerciseTitle);
if($_configuration['tracking_enabled'])
{
// Create an empty exercise
- $exeId= create_event_exercice();
+ $exeId= create_event_exercice($objExercise->selectId());
}
$counter=0;
diff --git a/main/inc/lib/add_course.lib.inc.php b/main/inc/lib/add_course.lib.inc.php
index df3577d61e..6ffe1f28e0 100644
--- a/main/inc/lib/add_course.lib.inc.php
+++ b/main/inc/lib/add_course.lib.inc.php
@@ -308,7 +308,8 @@ function update_Db_course($courseDbName)
// Student Publication
$TABLETOOLWORKS = $courseDbName . 'student_publication';
-
+ $TABLETOOLWORKSASS = $courseDbName . 'student_publication_assignment';
+
// Document
$TABLETOOLDOCUMENT = $courseDbName . 'document';
@@ -610,6 +611,8 @@ function update_Db_course($courseDbName)
results_disabled TINYINT UNSIGNED NOT NULL DEFAULT 0,
access_condition TEXT DEFAULT NULL,
max_attempt int NOT NULL default 0,
+ start_time datetime NOT NULL default '0000-00-00 00:00:00',
+ end_time datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id)
)";
api_sql_query($sql, __FILE__, __LINE__);
@@ -764,10 +767,28 @@ function update_Db_course($courseDbName)
post_group_id int DEFAULT 0 NOT NULL,
sent_date datetime NOT NULL default '0000-00-00 00:00:00',
filetype set('file','folder') NOT NULL default 'file',
- session_id SMALLINT UNSIGNED NOT NULL default 0,
+ has_properties int,
+ view_properties tinyint,
+ qualification INT UNSIGNED NOT NULL,
+ date_of_qualification datetime NOT NULL default '0000-00-00 00:00:00',
+ parent_id INT UNSIGNED NOT NULL,
+ qualificator_id INT UNSIGNED NOT NULL,
+ session_id INT UNSIGNED NOT NULL default 0,
PRIMARY KEY (id)
)";
api_sql_query($sql, __FILE__, __LINE__);
+
+ $sql = "
+ CREATE TABLE `".$TABLETOOLWORKSASS."` (
+ id int NOT NULL auto_increment,
+ expires_on datetime NOT NULL default '0000-00-00 00:00:00',
+ ends_on datetime NOT NULL default '0000-00-00 00:00:00',
+ add_to_calendar tinyint NOT NULL,
+ enable_qualification tinyint NOT NULL,
+ publication_id int NOT NULL,
+ PRIMARY KEY (id)" .
+ ")";
+ api_sql_query($sql, __FILE__, __LINE__);
$sql = "ALTER TABLE `".$TABLETOOLWORKS . "` ADD INDEX ( session_id )" ;
/*
diff --git a/main/inc/lib/database.lib.php b/main/inc/lib/database.lib.php
index 234179c8a9..518fa1bc20 100644
--- a/main/inc/lib/database.lib.php
+++ b/main/inc/lib/database.lib.php
@@ -1,4 +1,4 @@
-
* @desc Record result of user when an exercice was done
*/
-function create_event_exercice()
+function create_event_exercice($exo_id)
{
- global $_user, $_cid;
+ global $_user, $_cid, $_configuration;
$TABLETRACK_EXERCICES = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$reallyNow = time();
if ($_user['user_id'])
@@ -460,6 +460,19 @@ function create_event_exercice()
{
$user_id = "NULL";
}
+
+ if(defined('ENABLED_LIVE_EXERCISE_TRACKING')){
+ $condition = ' WHERE ' .
+ 'exe_exo_id = '."'".$exo_id."'".' AND ' .
+ 'exe_user_id = '."'".api_get_user_id()."'".' AND ' .
+ 'exe_cours_id = '."'".$_cid."'".' AND ' .
+ 'status = '."'incomplete'".' AND '.
+ 'session_id = '."'".api_get_session_id()."'";
+ $sql = api_sql_query('SELECT exe_id FROM '.$TABLETRACK_EXERCICES.$condition,__FILE__,__LINE__);
+ $row = mysql_fetch_array($sql);
+ return $row['exe_id'];
+ }
+
$sql = "INSERT INTO $TABLETRACK_EXERCICES
(
exe_user_id,
@@ -506,6 +519,13 @@ function exercise_attempt($score,$answer,$quesId,$exeId,$j)
{
$user_id = "NULL";
}
+
+ if($_configuration['live_exercise_tracking']==true){
+ $sql = "UPDATE $TBL_TRACK_ATTEMPT
+ SET marks = '".$score."'
+ WHERE exe_id = '".$exeId."' AND question_id = '".$quesId."'".' AND answer ='."'".$answer."'";
+
+ } else {
$sql = "INSERT INTO $TBL_TRACK_ATTEMPT
(
exe_id,
@@ -528,6 +548,21 @@ function exercise_attempt($score,$answer,$quesId,$exeId,$j)
'".$j."',
FROM_UNIXTIME(".$reallyNow.")
)";
+ }
+
+ if(defined('ENABLED_LIVE_EXERCISE_TRACKING')){
+ $TBL_RECORDING = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
+ $recording_changes = 'INSERT INTO '.$TBL_RECORDING.' ' .
+ '(exe_id,
+ question_id,
+ marks,
+ insert_date,
+ author)
+ VALUES
+ ('."'$exeId','".$quesId."','$score','".date('Y-m-d H:i:s')."',''".')';
+ api_sql_query($recording_changes,__FILE__,__LINE__);
+ }
+
$res = @api_sql_query($sql,__FILE__,__LINE__);
return $res;
}
diff --git a/main/install/dokeos_stats.sql b/main/install/dokeos_stats.sql
index a87eb27645..2820a58901 100644
--- a/main/install/dokeos_stats.sql
+++ b/main/install/dokeos_stats.sql
@@ -104,6 +104,12 @@ CREATE TABLE track_e_exercices (
KEY exe_cours_id (exe_cours_id)
);
+ALTER TABLE track_e_exercices ADD status varchar(20) NOT NULL default '';
+ALTER TABLE track_e_exercices ADD data_tracking text NOT NULL default '';
+ALTER TABLE track_e_exercices ADD start_date datetime NOT NULL default '0000-00-00 00:00:00';
+ALTER TABLE track_e_exercices ADD session_id SMALLINT UNSIGNED NOT NULL default 0;
+ALTER TABLE track_e_exercices ADD INDEX ( session_id ) ;
+
CREATE TABLE track_e_attempt (
exe_id int default NULL,
user_id int NOT NULL default 0,
@@ -119,6 +125,15 @@ ALTER TABLE track_e_attempt ADD INDEX (exe_id);
ALTER TABLE track_e_attempt ADD INDEX (user_id);
ALTER TABLE track_e_attempt ADD INDEX (question_id);
+CREATE TABLE track_e_attempt_recording (
+exe_id int unsigned NOT NULL,
+question_id int unsigned NOT NULL,
+marks int NOT NULL,
+insert_date datetime NOT NULL default '0000-00-00 00:00:00',
+author int unsigned NOT NULL,
+teacher_comment text NOT NULL);
+ALTER TABLE track_e_attempt_recording ADD INDEX (exe_id);
+
CREATE TABLE track_e_hotpotatoes (
exe_name VARCHAR( 255 ) NOT NULL ,
exe_user_id int unsigned DEFAULT NULL ,
diff --git a/main/install/migrate-db-1.8.5-1.8.6-pre.sql b/main/install/migrate-db-1.8.5-1.8.6-pre.sql
index 5ad5d48764..a61300cc22 100644
--- a/main/install/migrate-db-1.8.5-1.8.6-pre.sql
+++ b/main/install/migrate-db-1.8.5-1.8.6-pre.sql
@@ -34,7 +34,13 @@ INSERT INTO settings_options (variable, value, display_text) VALUES ('show_sessi
INSERT INTO course_module (name, link, image, `row`, `column`, position) VALUES ('wiki','wiki/index.php','wiki.gif',2,3,'basic');
-- xxSTATSxx
-
+ALTER TABLE track_e_exercices ADD status varchar(20) NOT NULL default '';
+ALTER TABLE track_e_exercices ADD data_tracking text NOT NULL default '';
+ALTER TABLE track_e_exercices ADD start_date datetime NOT NULL default '0000-00-00 00:00:00';
+ALTER TABLE track_e_exercices ADD session_id SMALLINT UNSIGNED NOT NULL default 0;
+ALTER TABLE track_e_exercices ADD INDEX ( session_id ) ;
+CREATE TABLE track_e_attempt_recording (exe_id int unsigned NOT NULL, question_id int unsigned NOT NULL, marks int NOT NULL, insert_date datetime NOT NULL default '0000-00-00 00:00:00', author int unsigned NOT NULL, teacher_comment text NOT NULL);
+ALTER TABLE track_e_attempt_recording ADD INDEX (exe_id);
-- xxUSERxx
-- xxCOURSExx
@@ -57,6 +63,8 @@ UPDATE tool SET category = 'interaction' WHERE name = 'forum';
ALTER TABLE survey ADD show_form_profile int NOT NULL default 0;
ALTER TABLE survey ADD form_fields TEXT NOT NULL;
ALTER TABLE quiz_answer CHANGE hotspot_type hotspot_type ENUM( 'square', 'circle', 'poly', 'delineation' ) NULL DEFAULT NULL;
+ALTER TABLE quiz ADD start_time datetime NOT NULL default '0000-00-00 00:00:00';
+ALTER TABLE quiz ADD end_time datetime NOT NULL default '0000-00-00 00:00:00';
ALTER TABLE forum_forum ADD forum_image varchar(255) NOT NULL default '';
ALTER TABLE lp ADD preview_image varchar(255) NOT NULL default '';
ALTER TABLE lp ADD author varchar(255) NOT NULL default '';
@@ -70,6 +78,12 @@ ALTER TABLE announcement ADD session_id SMALLINT UNSIGNED NOT NULL;
ALTER TABLE announcement ADD INDEX ( session_id ) ;
ALTER TABLE forum_category ADD session_id SMALLINT UNSIGNED NOT NULL ;
ALTER TABLE forum_category ADD INDEX ( session_id ) ;
+CREATE TABLE student_publication_assignment (id int NOT NULL auto_increment, expires_on datetime NOT NULL default '0000-00-00 00:00:00', ends_on datetime NOT NULL default '0000-00-00 00:00:00', add_to_calendar tinyint NOT NULL, enable_qualification tinyint NOT NULL, publication_id int NOT NULL, PRIMARY KEY (id));
+ALTER TABLE student_publication ADD has_properties INT UNSIGNED NOT NULL;
+ALTER TABLE student_publication ADD qualification INT UNSIGNED NOT NULL;
+ALTER TABLE student_publication ADD date_of_qualification datetime NOT NULL default '0000-00-00 00:00:00';
+ALTER TABLE student_publication ADD parent_id INT UNSIGNED NOT NULL;
+ALTER TABLE student_publication ADD qualificator_id INT UNSIGNED NOT NULL;
ALTER TABLE student_publication ADD session_id SMALLINT UNSIGNED NOT NULL default 0 ;
ALTER TABLE student_publication ADD INDEX ( session_id ) ;
ALTER TABLE calendar_event ADD session_id SMALLINT UNSIGNED NOT NULL default 0 ;
diff --git a/main/work/work.lib.php b/main/work/work.lib.php
index 0df0485b32..d3a47ab4c4 100644
--- a/main/work/work.lib.php
+++ b/main/work/work.lib.php
@@ -229,7 +229,7 @@ function display_user_link($user_id, $name='')
* @param $dateFormatLong - date format
* @param $origin - typically empty or 'learnpath'
*/
-function display_student_publications_list($work_dir,$sub_course_dir,$currentCourseRepositoryWeb, $link_target_parameter, $dateFormatLong, $origin)
+function display_student_publications_list($work_dir,$sub_course_dir,$currentCourseRepositoryWeb, $link_target_parameter, $dateFormatLong, $origin,$add_in_where_query='')
{
global $charset;
// Database table names
@@ -277,13 +277,13 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
$sql_get_publications_list = "SELECT * " .
"FROM ".$work_table." " .
"WHERE url LIKE BINARY '$sub_course_dir%' " .
- "AND url NOT LIKE BINARY '$sub_course_dir%/%' " .
+ "AND url NOT LIKE BINARY '$sub_course_dir%/%' " .$add_in_where_query.
$session_condition.
"ORDER BY id";
$sql_get_publications_num = "SELECT count(*) " .
"FROM ".$work_table." " .
- "WHERE url LIKE BINARY '$sub_course_dir%' " .
+ "WHERE url LIKE BINARY '$sub_course_dir%' " .$add_in_where_query.
"AND url NOT LIKE BINARY '$sub_course_dir%/%' " .
$session_condition.
"ORDER BY id";
@@ -303,12 +303,12 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
}
- $sql_get_publications_list = "SELECT * FROM $work_table $group_query $subdirs_query AND session_id IN (0,".intval($_SESSION['id_session']).") ORDER BY id";
+ $sql_get_publications_list = "SELECT * FROM $work_table $group_query $subdirs_query ".$add_in_where_query." AND session_id IN (0,".intval($_SESSION['id_session']).") ORDER BY id";
$sql_get_publications_num = "SELECT count(url) " .
"FROM ".$work_table." " .
"WHERE url LIKE BINARY '$sub_course_dir%' " .
- "AND url NOT LIKE BINARY '$sub_course_dir%/%' " .
+ "AND url NOT LIKE BINARY '$sub_course_dir%/%' " .$add_in_where_query.
$session_condition.
"ORDER BY id";
@@ -400,8 +400,8 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
*/
$session_condition = intval($_SESSION['id_session'])!=0 ?"AND work.session_id IN (0,".intval($_SESSION['id_session']).")" : "";
- $sql_select_directory= "SELECT prop.lastedit_date, author, work.session_id FROM ".$iprop_table." prop INNER JOIN ".$work_table." work ON (prop.ref=work.id) WHERE " .
- "work.url LIKE BINARY '".$mydir_temp."' AND work.filetype = 'folder' AND prop.tool='work' $session_condition";
+ $sql_select_directory= "SELECT prop.lastedit_date, id, author, has_properties, view_properties, description, qualification,id FROM ".$iprop_table." prop INNER JOIN ".$work_table." work ON (prop.ref=work.id) WHERE " .
+ "work.url LIKE BINARY '".$mydir_temp."' AND work.filetype = 'folder' AND prop.tool='work' $session_condition";
$result=api_sql_query($sql_select_directory,__FILE__,__LINE__);
$row=Database::fetch_array($result);
@@ -411,35 +411,145 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
$direc_date= $row['lastedit_date']; //directory's date
$author= $row['author']; //directory's author
$folder_session_id = $row['session_id'];
+ $view_properties=$row['view_properties'];
+ $is_assignment = $row['has_properties'];
+ $id2=$row['id'];
$mydir = $my_sub_dir.$dir;
if ($is_allowed_to_edit)
- {
+ {
+
$clean_edit_dir=Security :: remove_XSS(Database::escape_string($_GET['edit_dir']));
-
+
// form edit directory
if(isset($clean_edit_dir) && $clean_edit_dir==$mydir)
{
+ if(!empty($row['has_properties'])){
+ $sql = api_sql_query('SELECT * FROM '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT).' WHERE id = '."'".$row['has_properties']."'".' LIMIT 1',__FILE__,__LINE__);
+ $homework = mysql_fetch_array($sql);
+ }
+
$form_folder = new FormValidator('edit_dir', 'post', api_get_self().'?curdirpath='.$my_sub_dir.'&origin='.$origin.'&edit_dir='.$mydir);
+ //echo $row['view_properties'];
+ //echo $row['has_properties'];
+
$group_name[] = FormValidator :: createElement('text','dir_name');
+ $form_folder-> addElement('textarea','description',get_lang('Description'),array('rows'=>5,'cols'=>50));
+ $qualification_input[] = FormValidator :: createElement('text','qualification');
+ $form_folder -> addGroup($qualification_input,'qualification',get_lang('Qualification'),'size="10"');
+ if($row['view_properties']=='1'){
+ if($homework['expires_on']!='0000-00-00 00:00:00'){
+ $there_is_a_expire_date = true;
+ $form_folder -> addGroup(create_group_date_select(),'expires',get_lang('Expires_At'));
+ }
+ if($homework['ends_on']!='0000-00-00 00:00:00'){
+ $there_is_a_end_date = true;
+ $form_folder -> addGroup(create_group_date_select(),'ends',get_lang('Ends_At'));
+ }
+ $form_folder -> addRule (array('expires','ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
+ }
+ else
+ {
+ //$form_folder -> addElement('checkbox', 'enableRandom', null, get_lang('MakeRandom'),'1');
+ $form_folder -> addElement('html',' ');
+
+ $form_folder -> addElement('html','');
+ if(empty($default)) $default = date('Y-m-d 12:00:00');
+
+ $parts = split(' ',$default);
+ list($d_year,$d_month,$d_day) = split('-',$parts[0]);
+ list($d_hour,$d_minute) = split(':',$parts[1]);
+
+ if($homework['expires_on']='0000-00-00 00:00:00'){
+ $homework['expires_on']=date("Y-m-d h:i:s");
+ $there_is_a_expire_date = true;
+ $form_folder -> addElement('checkbox', 'enableRandomExpires', null, get_lang('MakeRandomExpires'),'1');
+ $form_folder -> addGroup(create_group_date_select(),'expires',get_lang('Expires_At'));
+
+ }
+ if($homework['ends_on']='0000-00-00 00:00:00'){
+ $homework['ends_on']=date("Y-m-d h:i:s");
+ $there_is_a_end_date = true;
+ $form_folder -> addElement('checkbox', 'enableRandomEnds', null, get_lang('MakeRandomEnd'),'1');
+ $form_folder -> addGroup(create_group_date_select(),'ends',get_lang('Ends_At'));
+
+ }
+ //$form_folder -> addRule ('expires', get_lang('Dateinconsistent'), 'errordate');
+ //$form_folder -> addRule ('ends', get_lang('Dateinconsistent'), 'errordate');
+ $form_folder -> addRule (array('expires','ends'), get_lang('DateExpiredNotBeLessDeadLine'), 'comparedate');
+
+ $form_folder -> addElement('html','
');
+ }
+
+
+
$group_name[] = FormValidator :: createElement('submit','submit_edit_dir',get_lang('Ok'));
$form_folder -> addGroup($group_name,'my_group');
$form_folder -> addGroupRule('my_group',get_lang('ThisFieldIsRequired'),'required');
- $form_folder -> setDefaults(array('my_group[dir_name]'=>$dir));
+
+ $defaults = array('my_group[dir_name]'=>$dir,'description'=>$row['description']);
+ if($there_is_a_end_date == true)
+ $defaults = array_merge($defaults,convert_date_to_array($homework['ends_on'],'ends'));
+ if($there_is_a_expire_date == true)
+ $defaults = array_merge($defaults,convert_date_to_array($homework['expires_on'],'expires'));
+ if(!empty($row['qualification']))
+ $defaults = array_merge($defaults,array('qualification[qualification]'=>$row['qualification']));
+
+ $form_folder -> setDefaults($defaults);
$display_edit_form=true;
if($form_folder -> validate())
{
+ if($there_is_a_end_date == true || $there_is_a_expire_date == true)
+ {
+ if($row['view_properties']=='1')
+ {
+ $sql_add_publication = "UPDATE ".Database :: get_course_table(TABLE_STUDENT_PUBLICATION)." SET has_properties = '".$row['has_properties']. "', view_properties=1 where id ='".$row['id']."'";
+ api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ $expires_query= ' SET expires_on = '."'".(($there_is_a_expire_date == true)?get_date_from_group('expires'):'0000-00-00 00:00:00')."'".',';
+ $ends_query = ' ends_on = '."'".(($there_is_a_end_date == true) ? get_date_from_group('ends') : '0000-00-00 00:00:00')."'";
+ api_sql_query('UPDATE '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT).$expires_query.$ends_query.' WHERE id = '."'".$row['has_properties']."'",__FILE__,__LINE__);
+ }
+ else if($row['view_properties']=='0')
+ {
+
+ if ($_POST['enableRandomExpires']=='1')
+ {
+ $expires_query= ' SET expires_on = '."'".(($there_is_a_expire_date == true)?get_date_from_group('expires'):'0000-00-00 00:00:00')."'";
+ //$ends_query = ' ends_on = '."'".(($there_is_a_end_date == true) ? get_date_from_group('ends') : '0000-00-00 00:00:00')."'";
+ api_sql_query('UPDATE '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT).$expires_query.' WHERE id = '."'".$row['has_properties']."'",__FILE__,__LINE__);
+ $sql_add_publication = "UPDATE ".Database :: get_course_table(TABLE_STUDENT_PUBLICATION)." SET has_properties = '".$row['has_properties']. "', view_properties=1 where id ='".$row['id']."'";
+ api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ }
+ if ($_POST['enableRandomEnds']=='1')
+ {
+ //$expires_query= ' SET expires_on = '."'".(($there_is_a_expire_date == true)?get_date_from_group('expires'):'0000-00-00 00:00:00')."'".',';
+ $ends_query = ' SET ends_on = '."'".(($there_is_a_end_date == true) ? get_date_from_group('ends') : '0000-00-00 00:00:00')."'";
+ api_sql_query('UPDATE '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT).$ends_query.' WHERE id = '."'".$row['has_properties']."'",__FILE__,__LINE__);
+ $sql_add_publication = "UPDATE ".Database :: get_course_table(TABLE_STUDENT_PUBLICATION)." SET has_properties = '".$row['has_properties']. "', view_properties=1 where id ='".$row['id']."'";
+ api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ }
+ }
+
+ }
+ //if($_POST['qualification']['qualification']!='')
+ api_sql_query('UPDATE '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION).' SET description = '."'".Database::escape_string($_POST['description'])."'".', qualification = '."'".Database::escape_string($_POST['qualification']['qualification'])."'".' WHERE id = '."'".$row['id']."'",__FILE__,__LINE__);
+
+
+
$values = $form_folder -> exportValues();
$values = $values['my_group'];
update_dir_name($mydir,$values['dir_name']);
$mydir = $my_sub_dir.$values['dir_name'];
$dir = $values['dir_name'];
$display_edit_form=false;
-
}
-
}
}
@@ -479,7 +589,9 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
}
else
{
- $row[] = ''.$dir.'
'.$cant_files.' '.$text_file.$dirtext;
+ $add_to_name = '';
+ if($view_properties==1) $add_to_name = ' / '.get_lang('Assignment').'';
+ $row[] = ''.$dir.''.$add_to_name.'
'.$cant_files.' '.$text_file.$dirtext;
}
if ($count_files!=0)
@@ -499,7 +611,7 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
{
$action .= '
';
- $action .= '
';
+ $action .= '
';
$row[] = $action;
}
else
@@ -534,6 +646,19 @@ function display_student_publications_list($work_dir,$sub_course_dir,$currentCou
$class='';
}
+ if(defined('IS_ASSIGNMENT')):
+ $add_string = '';
+
+ if($work->qualification=='')
+ $qualification_string = ' / '.get_lang('NotRevised').'';
+ else
+ $qualification_string = ' / '.get_lang('Qualification').': '.$work->qualification.'';
+
+ if(defined('ASSIGNMENT_EXPIRES') && (ASSIGNMENT_EXPIRES < convert_date_to_number($work->sent_date))){
+ $add_string = ' '.get_lang('Expired').'';
+ }
+ endif;
+
$url = implode("/", array_map("rawurlencode", explode("/", $work->url)));
$row[]= build_document_icon_tag('file',$work->url);
$row[]= '
'.$work->title.'
'.$work->description;
diff --git a/main/work/work.php b/main/work/work.php
index 94c4c5d7e9..2f82f7fa38 100644
--- a/main/work/work.php
+++ b/main/work/work.php
@@ -27,7 +27,7 @@
* @author Patrick Cool , Ghent University - ability for course admins to specify wether uploaded documents are visible or invisible by default.
* @author Roan Embrechts, code refactoring and virtual course support
* @author Frederic Vauthier, directories management
-* @version $Id: work.php 16503 2008-10-13 07:39:37Z elixir_inter $
+* @version $Id: work.php 16657 2008-11-04 18:06:45Z dperales $
*
* @todo refactor more code into functions, use quickforms, coding standards, ...
*/
@@ -115,6 +115,116 @@ function updateDocumentTitle(value){
';
+
+$htmlHeadXtra[] = '
+';
/*
-----------------------------------------------------------
Including necessary files
@@ -133,6 +243,14 @@ require_once (api_get_path(LIBRARY_PATH) . "security.lib.php");
require_once(api_get_path(LIBRARY_PATH) . "formvalidator/FormValidator.class.php");
require_once ('work.lib.php');
+function make_select($name,$values,$checked=''){
+ $output .= '';
+ return $output;
+}
+
/*
-----------------------------------------------------------
Table definitions
@@ -141,6 +259,7 @@ require_once ('work.lib.php');
$main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$work_table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$iprop_table = Database :: get_course_table(TABLE_ITEM_PROPERTY);
+$student_pub_ass = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
/*
-----------------------------------------------------------
Constants and variables
@@ -426,6 +545,7 @@ if (api_is_allowed_to_edit(false,true))
$workAuthor = $row['author'];
$workDescription = $row['description'];
$workUrl = $row['url'];
+ $qualification_number = $row['qualification'];
}
}
@@ -515,6 +635,14 @@ if (api_is_allowed_to_edit(false,true))
---------------------*/
if (!empty ($_REQUEST['create_dir']) && !empty ($_REQUEST['new_dir']))
{
+
+ function get_date_from_select($prefix){
+ return $_POST[$prefix.'_year'].'-'.$_POST[$prefix.'_month'].'-'.$_POST[$prefix.'_day'].' '.$_POST[$prefix.'_hour'].':'.$_POST[$prefix.'_minute'].':00';
+ }
+ $fexpire= get_date_from_select('expires');
+ $fend = get_date_from_select('ends');
+
+
//create the directory
//needed for directory creation
include_once (api_get_path(LIBRARY_PATH) . "fileUpload.lib.php");
@@ -538,21 +666,78 @@ if (api_is_allowed_to_edit(false,true))
$sql_add_publication = "INSERT INTO " . $work_table . " SET " .
"url = '" . $dir_name_sql . "',
title = '',
- description = '',
+ description = '".Database::escape_string($_POST['description'])."',
author = '',
active = '0',
accepted = '1',
filetype = 'folder',
post_group_id = '0',
sent_date = NOW(),
- session_id = ".intval($_SESSION['id_session']);
+ qualification = '".(($_POST['qualification_value']!='') ? Database::escape_string($_POST['qualification_value']) : '') ."',
+ parent_id = '',
+ qualificator_id = '',
+ date_of_qualification = '0000-00-00 00:00:00',
+ session_id = ".intval($_SESSION['id_session']);
api_sql_query($sql_add_publication, __FILE__, __LINE__);
// add the directory
$id = mysql_insert_id();
//Folder created
- api_item_property_update($_course, 'work', $id, 'DirectoryCreated', $user_id);
+ api_item_property_update($_course, 'work', $id, 'DirectoryCreated', $user_id);
+
+ //----------------inser into student_publication_assignment-------------------//
+ //return something like this: 2008-02-45 00:00:00
+
+ if(($_POST['type1'])==1 || ($_POST['type2']==1))
+ {
+ $TSTDPUBASG=Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
+ $sql_add_homework = "INSERT INTO ".$TSTDPUBASG." SET " .
+ "expires_on = '".(($_POST['type1']==1) ? get_date_from_select('expires') : '0000-00-00 00:00:00'). "',
+ ends_on = '".(($_POST['type2']==1) ? get_date_from_select('ends') : '0000-00-00 00:00:00')."',
+ add_to_calendar = '".(int)$_POST['add_to_calendar']."',
+ enable_qualification = '".(int)$_POST['enable_calification']."',
+ publication_id = '".$id."'";
+ api_sql_query($sql_add_homework, __FILE__, __LINE__);
+ //api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ $sql_add_publication = "UPDATE ".$work_table." SET "."has_properties = ".mysql_insert_id().", view_properties = 1 ".' where id = '.$id;
+ api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ }
+ else
+ {
+ $TSTDPUBASG=Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
+ $sql_add_homework = "INSERT INTO ".$TSTDPUBASG." SET " .
+ "expires_on = '0000-00-00 00:00:00',
+ ends_on = '0000-00-00 00:00:00',
+ add_to_calendar = '".(int)$_POST['add_to_calendar']."',
+ enable_qualification = '".(int)$_POST['enable_calification']."',
+ publication_id = '".$id."'";
+ api_sql_query($sql_add_homework, __FILE__, __LINE__);
+ //api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ $sql_add_publication = "UPDATE ".$work_table." SET "."has_properties = ".mysql_insert_id().", view_properties = 0 ".' where id = '.$id;
+ api_sql_query($sql_add_publication, __FILE__, __LINE__);
+ }
+
+ if($_POST['make_calification']==1)
+ {
+ require_once('../gradebook/lib/be/gradebookitem.class.php');
+ require_once('../gradebook/lib/be/evaluation.class.php');
+ require_once('../gradebook/lib/be/abstractlink.class.php');
+ require_once('../gradebook/lib/gradebook_functions.inc.php');
+
+ $resource_name = (empty($_POST['qualification_name'])) ? $_POST['new_dir'] : $_POST['qualification_name'];
+ add_resource_to_course_gradebook(api_get_course_id(), 3, $id, Database::escape_string($resource_name), 0, $_POST['qualification_value'], Database::escape_string($_POST['description']), "'".date('Y-m-d H:i:s')."'", 1,api_get_session_id());
+ }
+ //----------------inser into agenda----------------------//
+
+ if(!empty($_POST['type1']) && $_POST['add_to_calendar']==1):
+ include_once('../calendar/agenda.inc.php');
+ include_once('../resourcelinker/resourcelinker.inc.php');
+ agenda_add_item($course_info,$_POST['new_dir'],$_POST['new_dir'],date('Y-m-d H:i:s'),get_date_from_select('expires'));
+ endif;
+
+ //-----------------end feature---------------------------//
+
// update all the parents in the table item propery
$list_id=get_parent_directories($my_cur_dir_path);
@@ -582,6 +767,15 @@ if (api_is_allowed_to_edit(false,true))
del_dir($base_work_dir . '/', $delete_directory);
Display :: display_normal_message($delete_directory . ' ' . get_lang('DirDeleted'));
}
+ if (!empty ($_REQUEST['delete2']))
+ {
+ $delete_2=$_REQUEST['delete2'];
+ $sql2="DELETE FROM ". Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT)." WHERE publication_id ='".$delete_2."'";
+ $result2 = api_sql_query($sql2, __FILE__, __LINE__);
+ //Display :: display_normal_message($delete_directory . ' ' . get_lang('DirDeleted'));
+ $sql3="DELETE FROM ".Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINK)." WHERE course_code='".$course_code."' AND ref_id='".$delete_2."'";
+ $result3 = api_sql_query($sql3, __FILE__, __LINE__);
+ }
/* ----------------------
* Move file form request
----------------------- */
@@ -707,6 +901,7 @@ else
$workAuthor = $row['author'];
$workDescription = $row['description'];
$workUrl = $row['url'];
+ $qualification_number = $row['qualification'];
}
}
}
@@ -780,6 +975,13 @@ if ($_POST['submitWork'] && $is_course_member && $check)
api_sql_query("ALTER TABLE " . $work_table . " ADD sent_date DATETIME NOT NULL");
}
$current_date = date('Y-m-d H:i:s');
+
+ $parent_id = '';
+ $sql = api_sql_query('SELECT id FROM '.Database::get_course_table(TABLE_STUDENT_PUBLICATION).' WHERE url = '."'/".Database::escape_string($_GET['curdirpath'])."' AND filetype='folder' LIMIT 1");
+ if(mysql_num_rows($sql) > 0 ){
+ $dir_row = mysql_fetch_array($sql);
+ $parent_id = $dir_row['id'];
+ }
$sql_add_publication = "INSERT INTO " . $work_table . " SET " .
"url = '" . $url . "',
@@ -790,6 +992,7 @@ if ($_POST['submitWork'] && $is_course_member && $check)
accepted = '" . (!$uploadvisibledisabled) . "',
post_group_id = '" . $post_group_id . "',
sent_date = ' ".$current_date ."',
+ parent_id = '".$parent_id ."' ,
session_id=".intval($_SESSION['id_session']);
api_sql_query($sql_add_publication, __FILE__, __LINE__);
@@ -867,11 +1070,17 @@ if ($_POST['submitWork'] && $is_course_member && $check)
{
$title = basename($newWorkUrl);
}
+
+ if($is_allowed_to_edit && ($_POST['qualification']!='')){
+ $add_to_update = ',qualificator_id ='."'".api_get_user_id()."',";
+ $add_to_update .= 'qualification ='."'".Database::escape_string($_POST['qualification'])."',";
+ $add_to_update .= 'date_of_qualification ='."'".date('Y-m-d H:i:s')."'";
+ }
$sql = "UPDATE " . $work_table . "
SET title = '" . $title . "',
description = '" . $description . "',
- author = '" . $authors . "'
+ author = '" . $authors . "'".$add_to_update."
WHERE id = '" . $id . "'";
api_sql_query($sql, __FILE__, __LINE__);
@@ -979,8 +1188,45 @@ if ($_POST['submitWork'] && $succeed && !$id) //last value is to check this is n
Display links to upload form and tool options
=======================================
*/
-
-display_action_links($cur_dir_path, $always_show_tool_options, $always_show_upload_form);
+$has_expired = false;
+$sql = api_sql_query('SELECT description,id FROM '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION).' WHERE filetype = '."'folder'".' and has_properties != '."''".' and url = '."'/".Database::escape_string($_GET['curdirpath'])."'".' LIMIT 1',__FILE__,__LINE__);
+$is_special = mysql_num_rows($sql);
+if($is_special > 0):
+ $is_special = true;
+ define('IS_ASSIGNMENT',1);
+ $publication = mysql_fetch_array($sql);
+ $sql = api_sql_query('SELECT * FROM '.Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT).' WHERE publication_id = '.(string)$publication['id'].' LIMIT 1',__FILE__,__LINE__);
+ $homework = mysql_fetch_array($sql);
+
+ if($homework['expires_on']!='0000-00-00 00:00:00' || $homework['ends_on']!='0000-00-00 00:00:00'):
+ $time_now = convert_date_to_number(date('Y-m-d H:i:s'));
+ $time_expires = convert_date_to_number($homework['expires_on']);
+ $time_ends = convert_date_to_number($homework['ends_on']);
+ $difference = $time_expires - $time_now;
+ $difference2 = $time_ends - $time_now;
+ if($homework['expires_on']!='0000-00-00 00:00:00' && $difference < 0) $has_expired = true;
+ if($homework['ends_on']!='0000-00-00 00:00:00' && $difference2 < 0) $has_ended = true;
+
+ define('ASSIGNMENT_EXPIRES',$time_expires);
+
+ if(!empty($publication['description'])){
+ Display :: display_normal_message($publication['description']);
+ }
+
+ if($has_ended) {
+ Display :: display_error_message(get_lang('EndDateAlreadyPassed').' '.$homework['ends_on']);
+ display_action_links($cur_dir_path, $always_show_tool_options,true);
+ }elseif($has_expired) {
+ Display :: display_warning_message(get_lang('ExpiryDateAlreadyPassed').' '.$homework['expires_on']);
+ display_action_links($cur_dir_path, $always_show_tool_options,$always_show_upload_form);
+ } else {
+ Display :: display_normal_message(get_lang('ExpiryDateToSendWorkIs').' '.$homework['expires_on']);
+ display_action_links($cur_dir_path, $always_show_tool_options, $always_show_upload_form);
+ }
+ endif;
+else:
+ display_action_links($cur_dir_path, $always_show_tool_options, $always_show_upload_form);
+endif;
/*=======================================
Display form to upload document
@@ -988,7 +1234,7 @@ display_action_links($cur_dir_path, $always_show_tool_options, $always_show_uplo
if ($is_course_member)
{
- if ($display_upload_form || $edit)
+ if (($display_upload_form || $edit)&&!$has_ended)
{
$token = Security :: get_token(); //generate token to be used to check validity of request
if ($edit)
@@ -1005,7 +1251,7 @@ if ($is_course_member)
require_once (api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php');
require_once (api_get_path(LIBRARY_PATH) . 'fileDisplay.lib.php');
- $form = new FormValidator('form', 'POST', api_get_self() . "?curdirpath=" . Security :: remove_XSS($cur_dir_path) . "&origin=$origin", '', 'enctype="multipart/form-data"');
+ $form = new FormValidator('form', 'POST', api_get_self() . "?curdirpath=" . Security :: rtrim(remove_XSS($cur_dir_path),'/') . "&origin=$origin", '', 'enctype="multipart/form-data"');
if (!empty ($error_message))
Display :: display_error_message($error_message);
@@ -1053,6 +1299,9 @@ if ($is_course_member)
$titleAuthors = $form->addElement('textarea', 'description', get_lang("Description"), 'style="width: 350px; height: 60px;"');
$defaults["description"] = ($edit ? stripslashes($workDescription) : stripslashes($description));
+ if($is_allowed_to_edit && $edit )$form->addElement('text', 'qualification', get_lang('Qualification'),'size="10"');
+ $defaults['qualification'] = $qualification_number;//($edit ? stripslashes($qualification_number) : stripslashes($qualification_number));
+
$form->addElement('hidden', 'active', 1);
$form->addElement('hidden', 'accepted', 1);
$form->addElement('hidden', 'sec_token', $token);
@@ -1085,6 +1334,42 @@ if ($is_course_member)
//show them the form for the directory name
if (isset ($_REQUEST['createdir']) && $is_allowed_to_edit)
{
+ require_once (api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php');
+ $form = new FormValidator('form1', 'POST', api_get_self() . "?curdirpath=" . Security :: remove_XSS($cur_dir_path) . "&origin=$origin");
+ $form->addElement('hidden', 'curdirpath', Security :: remove_XSS($cur_dir_path));
+ $form->addElement('text', 'new_dir', get_lang('NewDir'), '');
+
+ $form->addElement('textarea', 'description', get_lang('Description'), 'style="width: 350px; height: 60px;"');
+
+ $form -> addElement('html','');
+ $form -> addElement('html','');
+
+ $form->addElement('checkbox', 'make_calification',null ,get_lang('MakeQualifiable'));
+ $form->addElement('text', 'qualification_value', get_lang('QualificationNumberOver'), ' size="5" ');
+
+ $form->addElement('checkbox', 'type1',null ,get_lang('EnableExpireDate'));
+ $form->addElement('date', 'expires_on', get_lang('ExeStartTime'), array('language'=>'es','format' => 'dMYHi'));
+
+ $form->addElement('checkbox', 'add_to_calendar',null ,get_lang('AddEventToCalendar'));
+
+ $form->addElement('checkbox', 'type2',null ,get_lang('EnableEndDate'));
+ $form->addElement('date', 'ends_on', get_lang('ExeEndTime'), array('language'=>'es','format' => 'dMYHi'));
+
+ $form -> addElement('html','
');
+
+ $form->addElement('submit', 'create_dir', get_lang('Ok'),'onClick="validate();"');
+
+ $defaults['expires_on'] = date('Y-m-d 12:00:00');
+ $defaults['ends_on'] = date('Y-m-d 12:00:00');
+ $form->setDefaults($defaults);
+ echo '
';
+ $form->display();
+ /*
//create the form that asks for the directory name
$new_folder_text = '
';
//show the form
echo $new_folder_text;
+ */
}
}
else
@@ -1127,7 +1413,31 @@ else
}
if (!$display_upload_form && !$display_tool_options) {
- display_student_publications_list($base_work_dir . '/' . $my_cur_dir_path, 'work/' . $my_cur_dir_path, $currentCourseRepositoryWeb, $link_target_parameter, $dateFormatLong, $origin);
+ if(!$is_allowed_to_edit && $is_special==true){
+ $add_query = ' AND author = '."'".$_user['firstName'].' '.$_user['lastName']."' ";
+ }
+ if($is_allowed_to_edit && $is_special==true){
+
+ switch($_REQUEST['filter']){
+ case 1:
+ $add_query = ' AND qualification = '."''";
+ break;
+ case 2:
+ $add_query = ' AND qualification != '."''";
+ break;
+ case 3:
+ $add_query = ' AND sent_date < '."'".$homework['expires_on']."'";
+ break;
+ default:
+ $add_query = '';
+ }
+
+ $form_filter = '