Browse Source

Date and time management; converted gradebook to UTC - Chamilo - CT#696

Guillaume Viguier 15 years ago
parent
commit
428c2f6fd2

+ 2 - 2
main/gradebook/gradebook.php

@@ -534,7 +534,7 @@ if (!empty($keyword)) {
 		$pdf->selectFont(api_get_path(LIBRARY_PATH).'ezpdf/fonts/Courier.afm');
 		$pdf->ezSetMargins(30, 30, 50, 30);
 		$pdf->ezSetY(810);
-		$pdf->ezText(get_lang('FlatView').' ('. date('j/n/Y g:i') .')',12,array('justification'=>'center'));
+		$pdf->ezText(get_lang('FlatView').' ('. api_convert_and_format_date(null, DATE_FORMAT_SHORT) . ' ' . api_convert_and_format_date(null, TIME_NO_SEC_FORMAT) .')',12,array('justification'=>'center'));
 		$pdf->line(50,790,550,790);
 		$pdf->line(50,40,550,40);
 		$pdf->ezSetY(750);
@@ -565,7 +565,7 @@ if (!empty($keyword)) {
 		$stud_ln = $user['lastname'];
 		$certif_text = sprintf(get_lang('CertificateWCertifiesStudentXFinishedCourseYWithGradeZ'),$organization_name,$stud_fn.' '.$stud_ln,$category[0]->get_name(),$scorecourse_display);
 		$certif_text = str_replace("\\n","\n",$certif_text);
-		$date = date('d/m/Y',time());
+		$date = api_convert_and_format_date(null, DATE_FORMAT_SHORT);
 
 		$pdf= new Cezpdf('a4','landscape');
 		$pdf->selectFont(api_get_path(LIBRARY_PATH).'ezpdf/fonts/Courier.afm');

+ 1 - 3
main/gradebook/gradebook_add_eval.php

@@ -53,8 +53,6 @@ if ($form->validate()) {
 	}
 	$eval->set_category_id($values['hid_category_id']);
 	$eval->set_weight($values['weight']);
-	//converts the date back to unix timestamp format
-	$eval->set_date(strtotime($values['date']));
 	$eval->set_max($values['max']);
 	if (empty ($values['visible'])) {
 		$visible = 0;
@@ -92,4 +90,4 @@ if ($evaladd->get_course_code() == null) {
 	Display :: display_normal_message(get_lang('CourseIndependentEvaluation'),false);
 }
 $form->display();
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 2
main/gradebook/gradebook_add_link.php

@@ -88,7 +88,6 @@ if (isset($_GET['typeselected']) && $_GET['typeselected'] != '0') {
 		if ($link->needs_max()) {
 			$link->set_max($addvalues['max']);
 		}
-		$link->set_date(strtotime($addvalues['date']));
 
 		if ($link->needs_name_and_description()) {
 			$link->set_description($addvalues['description']);
@@ -143,4 +142,4 @@ if (isset ($typeform)) {
 if (isset ($addform)) {
 	$addform->display();
 }
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 2
main/gradebook/gradebook_add_user.php

@@ -41,7 +41,6 @@ if ( isset($_POST['submit_button']) ) {
 			$result= new Result();
 			$result->set_user_id($user_id);
 			$result->set_evaluation_id($_GET['selecteval']);
-			$result->set_date(time());
 			$result->add();
 			}
 		}
@@ -71,4 +70,4 @@ DisplayGradebook :: display_header_result($evaluation[0], null, 0,0);
 echo '<div class="main">';
 echo $add_user_form->toHtml();
 echo '</div>';
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 2
main/gradebook/gradebook_edit_eval.php

@@ -43,7 +43,6 @@ if ($form->validate()) {
 	$eval->set_course_code($values['hid_course_code']);
 	$eval->set_category_id($values['hid_category_id']);
 	$eval->set_weight($values['weight']);
-	$eval->set_date(strtotime($values['date']));
 	$eval->set_max($values['max']);
 	if (empty ($values['visible'])) {
 		$visible = 0;
@@ -62,4 +61,4 @@ $interbreadcrumb[] = array (
 ));
 Display :: display_header(get_lang('EditEvaluation'));
 $form->display();
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 2
main/gradebook/gradebook_edit_link.php

@@ -52,7 +52,6 @@ $form = new LinkAddEditForm(LinkAddEditForm :: TYPE_EDIT,
 if ($form->validate()) {
 	$values = $form->exportValues();
 	$link->set_weight($values['weight']);
-	$link->set_date(strtotime($values['date']));
 	$link->set_visible(empty ($values['visible']) ? 0 : 1);
 	$link->save();
 
@@ -83,4 +82,4 @@ $interbreadcrumb[] = array (
 
 Display :: display_header(get_lang('EditLink'));
 $form->display();
-Display :: display_footer();
+Display :: display_footer();

+ 4 - 4
main/gradebook/gradebook_result.class.php

@@ -200,9 +200,9 @@ class GradeBookResult
 	 */
 	public function exportCompleteReportCSV($dato) {
 		//$this->_getGradeBookReporting($document_path,$user_id);
-		$filename = 'gradebook_results_'.date('YmdGis').'.csv';
+		$filename = 'gradebook_results_'.gmdate('YmdGis').'.csv';
 		if (!empty($user_id)) {
-			$filename = 'gradebook_results_user_'.$user_id.'_'.date('YmdGis').'.csv';
+			$filename = 'gradebook_results_user_'.$user_id.'_'.gmdate('YmdGis').'.csv';
 		}
 		$data = '';
 		//build the results
@@ -250,14 +250,14 @@ class GradeBookResult
 	 * @return	boolean		False on error
 	 */
 	public function exportCompleteReportXLS($data) {
-	   	$filename = 'gradebook_results_user_'.date('YmdGis').'.xls';
+	   	$filename = 'gradebook_results_user_'.gmdate('YmdGis').'.xls';
 		//build the results
 		require_once(api_get_path(LIBRARY_PATH).'pear/Spreadsheet_Excel_Writer/Writer.php');
 		$workbook = new Spreadsheet_Excel_Writer();
 		$workbook ->setTempDir(api_get_path(SYS_ARCHIVE_PATH));
 		
 		$workbook->send($filename);
-		$worksheet =& $workbook->addWorksheet('Report '.date('YmdGis'));
+		$worksheet =& $workbook->addWorksheet('Report '.gmdate('YmdGis'));
 		$line = 0;
 		$column = 0; //skip the first column (row titles)
 		//headers

+ 3 - 36
main/gradebook/gradebook_showlog_eval.php

@@ -49,46 +49,13 @@ echo '<div class="clear"></div>';
 echo '<div class="actions">';
 api_display_tool_title(get_lang('GradebookQualifyLog'));
 echo '</div>';
-/*
-$t_linkeval_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINKEVAL_LOG);
-$t_user=	 Database :: get_main_table(TABLE_MAIN_USER);
-$evaledit = Evaluation :: load($_GET['visiblelog']);
-$sql="SELECT le.name,le.description,le.date_log,le.weight,le.visible,le.type,us.username from ".$t_linkeval_log." le inner join ".$t_user." us on le.user_id_log=us.user_id where id_linkeval_log=".$evaledit[0]->get_id()." and type='evaluation';";
-$result=Database::query($sql);
-	echo '<table width="100%" border="0" >';
-		echo '<tr>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookNameLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookDescriptionLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('Date').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('Weight').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookVisibilityLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('ResourceType').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookWhoChangedItLog').'</strong></td>';
-		echo '</tr>';
-	while($row=Database::fetch_array($result)) {
-	echo '<tr>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[0].'</td>';
-		echo '<td align="center" class="gradebook-table-body">'.$row[1].'</td>';
-		echo '<td align="center" class="gradebook-table-body">'.date('d-m-Y H:i:s',$row[2]).'</td>';
-		echo '<td align="center" class="gradebook-table-body">'.$row[3].'</td>';
-		if (1 == $row[4]) {
-			$visib=get_lang('GradebookVisible');
-		} else {
-			$visib=get_lang('GradebookInvisible');
-		}
-		echo '<td align="center" Class="gradebook-table-body">'.$visib.'</td>';
-		echo '<td align="center" class="gradebook-table-body">'.$row[5].'</td>';
-		echo '<td align="center" class="gradebook-table-body">'.$row[6].'</td>';
-	echo '</tr>';
-}
-echo '</table>';*/
 
 
 $t_linkeval_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINKEVAL_LOG);
 $t_user=	 Database :: get_main_table(TABLE_MAIN_USER);
 $visible_log=Security::remove_XSS($_GET['visiblelog']);
 $evaledit = Evaluation :: load($visible_log);
-$sql="SELECT le.name,le.description,le.weight,le.visible,le.type,le.date_log,us.username from ".$t_linkeval_log." le inner join ".$t_user." us on le.user_id_log=us.user_id where id_linkeval_log=".$evaledit[0]->get_id()." and type='evaluation';";
+$sql="SELECT le.name,le.description,le.weight,le.visible,le.type,le.created_at,us.username from ".$t_linkeval_log." le inner join ".$t_user." us on le.user_id_log=us.user_id where id_linkeval_log=".$evaledit[0]->get_id()." and type='evaluation';";
 $result=Database::query($sql);
 $list_info=array();
 while ($row=Database::fetch_row($result)) {
@@ -96,7 +63,7 @@ while ($row=Database::fetch_row($result)) {
 }
 
 foreach($list_info as $key => $info_log) {
-	$list_info[$key][5]=($info_log[5]) ? date('d-m-Y H:i:s',$info_log[5]) : '0000-00-00 00:00:00';
+	$list_info[$key][5]=($info_log[5]) ? api_convert_and_format_date($info_log[5]) : 'N/A';
 	$list_info[$key][3]=($info_log[3]==1) ? get_lang('GradebookVisible') : get_lang('GradebookInvisible');
 }
 
@@ -113,4 +80,4 @@ $table->set_header(5, get_lang('Date'));
 $table->set_header(6, get_lang('GradebookWhoChangedItLog'));
 
 $table->display();
-Display :: display_footer();
+Display :: display_footer();

+ 3 - 44
main/gradebook/gradebook_showlog_link.php

@@ -49,53 +49,12 @@ echo '<div class="clear"></div>';
 echo '<div class="actions">';
 api_display_tool_title(get_lang('GradebookQualifyLog'));
 echo '</div>';
-/*
-$t_user=	 Database :: get_main_table(TABLE_MAIN_USER);
-$t_link_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINKEVAL_LOG);
-$evaledit = EvalLink :: load($_GET['visiblelink']);
-
-$sql="SELECT lk.name,lk.description,lk.date_log,lk.weight,lk.visible,lk.type,us.username from ".$t_link_log." lk inner join ".$t_user." us on lk.user_id_log=us.user_id where lk.id_linkeval_log=".$evaledit[0]->get_id()." and lk.type='link';";
-$result=Database::query($sql);
-echo '<table width="100%" border="0" >';
-	echo '<tr>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookNameLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookDescriptionLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('Date').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('Weight').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookVisibilityLog').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('ResourceType').'</strong></td>';
-		echo '<td align="center" class="gradebook-table-header"><strong>'.get_lang('GradebookWhoChangedItLog').'</strong></td>';
-echo '</tr>';
-while($row=Database::fetch_array($result)){
-
-if ('0000-00-00 00:00:00'!=$row[2]) {
-	$date_log=date('d-m-Y H:i:s',$row[2]);
-} else {
-	$date_log='0000-00-00 00:00:00';
-}
-echo '<tr>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[0].'</td>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[1].'</td>';
-		echo '<td align="center" Class="gradebook-table-body">'.$date_log.'</td>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[3].'</td>';
-		if (1 == $row[4]) {
-			$visib=get_lang('GradebookVisible');
-		} else {
-			$visib=get_lang('GradebookInvisible');
-		}
-		echo '<td align="center" Class="gradebook-table-body">'.$visib.'</td>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[5].'</td>';
-		echo '<td align="center" Class="gradebook-table-body">'.$row[6].'</td>';
-		echo '</tr>';
-}
-echo '</table>';
-*/
 
 $t_user     = Database :: get_main_table(TABLE_MAIN_USER);
 $t_link_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINKEVAL_LOG);
 $visible_link=Security::remove_XSS($_GET['visiblelink']);
 $evaledit   = EvalLink :: load($visible_link);
-$sql="SELECT lk.name,lk.description,lk.weight,lk.visible,lk.type,lk.date_log,us.username from ".$t_link_log." lk inner join ".$t_user." us on lk.user_id_log=us.user_id where lk.id_linkeval_log=".$evaledit[0]->get_id()." and lk.type='link';";
+$sql="SELECT lk.name,lk.description,lk.weight,lk.visible,lk.type,lk.created_at,us.username from ".$t_link_log." lk inner join ".$t_user." us on lk.user_id_log=us.user_id where lk.id_linkeval_log=".$evaledit[0]->get_id()." and lk.type='link';";
 $result=Database::query($sql);
 $list_info=array();
 while ($row=Database::fetch_row($result)) {
@@ -103,7 +62,7 @@ while ($row=Database::fetch_row($result)) {
 }
 
 foreach($list_info as $key => $info_log) {
-	$list_info[$key][5]=($info_log[5]) ? date('d-m-Y H:i:s',$info_log[5]) : '0000-00-00 00:00:00';
+	$list_info[$key][5]=($info_log[5]) ? api_convert_and_format_date($info_log[5]) : 'N/A';
 	$list_info[$key][3]=($info_log[3]==1) ? get_lang('GradebookVisible') : get_lang('GradebookInvisible');
 }
 
@@ -121,4 +80,4 @@ $table->set_header(5, get_lang('Date'));
 $table->set_header(6, get_lang('GradebookWhoChangedItLog'));
 $table->display();
 
-Display :: display_footer();
+Display :: display_footer();

+ 4 - 4
main/gradebook/gradebook_view_result.php

@@ -161,9 +161,9 @@ if (isset ($_GET['import'])) {
 						$result->set_score($importedresult['score']);
 					}
 					if (!empty ($importedresult['date'])) {
-						$result->set_date(strtotime($importedresult['date']));
+						$result->set_date(api_get_utc_datetime($importedresult['date']));
 					} else {
-						$result->set_date(time());
+						$result->set_date(api_get_utc_datetime());
 					}
 					$result->set_evaluation_id($_GET['selecteval']);
 					$result->add();
@@ -199,7 +199,7 @@ if (!$export_result_form->validate()) {
 if ($export_result_form->validate()) {
 	$export= $export_result_form->exportValues();
 	$file_type= $export['file_type'];
-	$filename= 'export_results_' . date('Y-m-d_H-i-s');
+	$filename= 'export_results_' . gmdate('Y-m-d_H-i-s');
 	$results= Result :: load(null, null, Security::remove_XSS($_GET['selecteval']));
 	$data= array (); //when file type is csv, add a header to the output file
 	if ($file_type == 'csv') {
@@ -295,7 +295,7 @@ if ($export_result_form->validate()) {
 		$data['lastname']= $userinfo['lastname'];
 		$data['firstname']= $userinfo['firstname'];
 		$data['score']= $result->get_score();
-		$data['date'] = api_convert_and_format_date($result->get_date(), "%d/%m/%Y %R");
+		$data['date'] = api_format_date($result->get_date(), "%d/%m/%Y %R");
 		$alldata[]= $data;
 	}
 	switch ($file_type) {

+ 4 - 4
main/gradebook/index.php

@@ -37,7 +37,6 @@ if (isset($_GET['cidReq'])) {
 } else {
 	$this_section = SECTION_MYGRADEBOOK;
 }
-
 require_once 'lib/be.inc.php';
 require_once 'lib/scoredisplay.class.php';
 require_once 'lib/gradebook_functions.inc.php';
@@ -49,6 +48,7 @@ require_once 'lib/fe/gradebooktable.class.php';
 require_once 'lib/fe/displaygradebook.php';
 require_once 'lib/fe/userform.class.php';
 require_once api_get_path(LIBRARY_PATH).'ezpdf/class.ezpdf.php';
+
 $htmlHeadXtra[] = '<script src="../inc/lib/javascript/jquery.js" type="text/javascript" language="javascript"></script>'; //jQuery
 $htmlHeadXtra[] = '<script type="text/javascript">
 $(document).ready( function() {
@@ -607,7 +607,7 @@ if (isset ($_GET['studentoverview'])) {
 		$pdf->selectFont(api_get_path(LIBRARY_PATH).'ezpdf/fonts/Courier.afm');
 		$pdf->ezSetMargins(30, 30, 50, 30);
 		$pdf->ezSetY(810);
-		$pdf->ezText(get_lang('FlatView').' ('. date('j/n/Y g:i') .')',12,array('justification'=>'center'));
+		$pdf->ezText(get_lang('FlatView').' ('. api_convert_and_format_date(null, DATE_FORMAT_SHORT). ' ' . api_convert_and_format_date(null, TIME_NO_SEC_FORMAT) .')',12,array('justification'=>'center'));
 		$pdf->line(50,790,550,790);
 		$pdf->line(50,40,550,40);
 		$pdf->ezSetY(750);
@@ -640,7 +640,7 @@ if (isset ($_GET['studentoverview'])) {
 		$stud_ln = $user['lastname'];
 		$certif_text = sprintf(get_lang('CertificateWCertifiesStudentXFinishedCourseYWithGradeZ'),$organization_name,$stud_fn.' '.$stud_ln,$category[0]->get_name(),$scorecourse_display);
 		$certif_text = str_replace("\\n","\n",$certif_text);
-		$date = date('d/m/Y',time());
+		$date = api_convert_and_format_date(null, DATE_FORMAT_SHORT);
 
 		$pdf= new Cezpdf('a4','landscape');
 		$pdf->selectFont(api_get_path(LIBRARY_PATH).'ezpdf/fonts/Courier.afm');
@@ -856,4 +856,4 @@ else
 {
 	$gradebooktable->display();
 }
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 1
main/gradebook/lib/be.inc.php

@@ -29,4 +29,4 @@ require_once ('be/category.class.php');
 require_once ('be/evaluation.class.php');
 require_once ('be/result.class.php');
 require_once ('be/linkfactory.class.php');	// this contains the include declarations
-											// to all link classes
+											// to all link classes

+ 11 - 13
main/gradebook/lib/be/abstractlink.class.php

@@ -41,7 +41,7 @@ abstract class AbstractLink implements GradebookItem
 	protected $user_id;
 	protected $course_code;
 	protected $category;
-	protected $link_date;
+	protected $created_at;
 	protected $weight;
 	protected $visible;
 	protected $session_id;
@@ -78,7 +78,7 @@ abstract class AbstractLink implements GradebookItem
 	}
 
 	public function get_date() {
-		return $this->link_date;
+		return $this->created_at;
 	}
 
 	public function get_weight() {
@@ -114,7 +114,7 @@ abstract class AbstractLink implements GradebookItem
 	}
 
 	public function set_date ($date) {
-		$this->link_date = $date;
+		$this->created_at = $date;
 	}
 
 	public function set_weight ($weight) {
@@ -133,7 +133,7 @@ abstract class AbstractLink implements GradebookItem
 	 */
 	public function load ($id = null, $type = null, $ref_id = null, $user_id = null, $course_code = null, $category_id = null, $visible = null) {
     	$tbl_grade_links = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
-		$sql='SELECT id,type,ref_id,user_id,course_code,category_id,date,weight,visible FROM '.$tbl_grade_links;
+		$sql='SELECT id,type,ref_id,user_id,course_code,category_id,created_at,weight,visible FROM '.$tbl_grade_links;
 		$paramcount = 0;
 		if (isset ($id)) {
 			$sql.= ' WHERE id = '.$id;
@@ -203,7 +203,7 @@ abstract class AbstractLink implements GradebookItem
 			$link->set_user_id($data['user_id']);
 			$link->set_course_code($data['course_code']);
 			$link->set_category_id($data['category_id']);
-			$link->set_date(api_get_local_time($data['date']));
+			$link->set_date(api_get_local_time($data['created_at']));
 			$link->set_weight($data['weight']);
 			$link->set_visible($data['visible']);
 			$links[]=$link;
@@ -228,8 +228,7 @@ abstract class AbstractLink implements GradebookItem
 			$row_testing=Database::fetch_array($result_testing);
 
 			if ($row_testing[0]==0) {
-				$sql = 'INSERT INTO '.$tbl_grade_links.' (type,ref_id,user_id,course_code,category_id,weight,visible';
-				if (isset($this->link_date)) { $sql .= ',date';}
+				$sql = 'INSERT INTO '.$tbl_grade_links.' (type,ref_id,user_id,course_code,category_id,weight,visible,created_at';
 					$sql .= ') VALUES ('
 						.$this->get_type()
 						.','.$this->get_ref_id()
@@ -237,9 +236,9 @@ abstract class AbstractLink implements GradebookItem
 						.",'".$this->get_course_code()."'"
 						.','.$this->get_category_id()
 						.','.$this->get_weight()
-						.','.$this->is_visible();
-				if (isset($this->link_date)) {$sql .= ','.'"'.$date_current=strtotime(date('Y-m-d H:i:s',time())).'"';}
-			$sql .= ")";
+						.','.$this->is_visible()
+						.",'".api_get_utc_datetime()."')";
+				echo $sql;
 			Database::query($sql);
 			$this->set_id(Database::insert_id());
 		 	}
@@ -271,9 +270,8 @@ abstract class AbstractLink implements GradebookItem
 	public function add_link_log($idevaluation) {
 		$tbl_grade_linkeval_log = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINKEVAL_LOG);
 		$dateobject=AbstractLink::load ($idevaluation,null,null,null,null);
-		$current_date_server=strtotime(date('Y-m-d H:i:s',time()));
+		$current_date_server=api_get_utc_datetime();
 		$arreval=get_object_vars($dateobject[0]);
-		//var_dump($arreval);
 		$description_log=isset($arreval['description'])?$arreval['description']:'';
 		if (isset($_POST['name_link'])) {
 			$name_log=isset($_POST['name_link'])?Security::remove_XSS($_POST['name_link']):$arreval['course_code'];
@@ -283,7 +281,7 @@ abstract class AbstractLink implements GradebookItem
 			$name_log=$arreval['course_code'];
 		}
 		//error_log($name_log);
-		$sql="INSERT INTO ".$tbl_grade_linkeval_log."(id_linkeval_log,name,description,date_log,weight,visible,type,user_id_log)VALUES('".Database::escape_string($arreval['id'])."','".Database::escape_string($name_log)."','".Database::escape_string($description_log)."','".Database::escape_string($current_date_server)."','".Database::escape_string($arreval['weight'])."','".Database::escape_string($arreval['visible'])."','Link',".api_get_user_id().")";
+		$sql="INSERT INTO ".$tbl_grade_linkeval_log."(id_linkeval_log,name,description,created_at,weight,visible,type,user_id_log)VALUES('".Database::escape_string($arreval['id'])."','".Database::escape_string($name_log)."','".Database::escape_string($description_log)."','".$current_date_server."','".Database::escape_string($arreval['weight'])."','".Database::escape_string($arreval['visible'])."','Link',".api_get_user_id().")";
 		Database::query($sql);
 
 	}

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

@@ -1138,4 +1138,4 @@ class Category implements GradebookItem
 		}
 		return $foundcats;
     }
-}
+}

+ 3 - 3
main/gradebook/lib/be/evallink.class.php

@@ -133,7 +133,7 @@ abstract class EvalLink extends AbstractLink
 	}
 // Functions overriding non-trivial implementations from AbstractLink
 	public function set_date ($date) {
-		$this->link_date = $date;
+		$this->created_at = $date;
 		if ($this->is_valid_link()) {
 			$this->evaluation->set_date($date);
 		}
@@ -168,7 +168,7 @@ abstract class EvalLink extends AbstractLink
 			} else {
 				$eval = new Evaluation();
 				$eval->set_category_id(-1);
-				$eval->set_date(time()); // these values will be changed
+				$eval->set_date(api_get_utc_datetime()); // these values will be changed
 				$eval->set_weight(0);    //   when the link setter
 				$eval->set_visible(0);   //     is called
 				$eval->set_id(-1); // a 'real' id will be set when eval is added to db
@@ -181,4 +181,4 @@ abstract class EvalLink extends AbstractLink
 		}
 		return $this->evaluation;
 	}
-}
+}

+ 9 - 30
main/gradebook/lib/be/evaluation.class.php

@@ -38,7 +38,7 @@ class Evaluation implements GradebookItem
 	private $user_id;
 	private $course_code;
 	private $category;
-	private $eval_date;
+	private $created_at;
 	private $weight;
 	private $eval_max;
 	private $visible;
@@ -75,7 +75,7 @@ class Evaluation implements GradebookItem
 	}
 
 	public function get_date() {
-		return $this->eval_date;
+		return $this->created_at;
 	}
 
 	public function get_weight() {
@@ -115,7 +115,7 @@ class Evaluation implements GradebookItem
 	}
 
 	public function set_date ($date) {
-		$this->eval_date = $date;
+		$this->created_at = $date;
 	}
 
 	public function set_weight ($weight) {
@@ -144,7 +144,7 @@ class Evaluation implements GradebookItem
 	public function load ($id = null, $user_id = null, $course_code = null, $category_id = null, $visible = null)
 	{
     	$tbl_grade_evaluations = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
-		$sql='SELECT id,name,description,user_id,course_code,category_id,date,weight,max,visible FROM '.$tbl_grade_evaluations;
+		$sql='SELECT id,name,description,user_id,course_code,category_id,created_at,weight,max,visible FROM '.$tbl_grade_evaluations;
 		$paramcount = 0;
 		if (isset ($id)) {
 			$sql.= ' WHERE id = '.$id;
@@ -191,7 +191,7 @@ class Evaluation implements GradebookItem
 			$eval->set_user_id($data['user_id']);
 			$eval->set_course_code($data['course_code']);
 			$eval->set_category_id($data['category_id']);
-			$eval->set_date(api_get_local_time($data['date']));
+			$eval->set_date(api_get_local_time($data['created_at']));
 			$eval->set_weight($data['weight']);
 			$eval->set_max($data['max']);
 			$eval->set_visible($data['visible']);
@@ -219,9 +219,7 @@ class Evaluation implements GradebookItem
 			if (isset($this->category)) {
 			 $sql .= ',category_id';
 			}
-			if (isset($this->eval_date)) {
-			  $sql .= ',date';
-			}
+			$sql .= ',created_at';
 			$sql .= ") VALUES ('".Database::escape_string(Security::remove_XSS($this->get_name()))."'"
 					.','.$this->get_user_id()
 					.','.$this->get_weight()
@@ -236,9 +234,7 @@ class Evaluation implements GradebookItem
 			if (isset($this->category)) {
 				 $sql .= ','.$this->get_category_id();
 			}
-			//if (isset($this->eval_date)) {
-				 $sql .= ','.strtotime(date('Y-m-d H:i:s',time()));
-			//}
+			$sql .= ", '".api_get_utc_datetime()."'";
 			$sql .= ")";
 			Database::query($sql);
 			$this->set_id(Database::insert_id());
@@ -259,8 +255,8 @@ class Evaluation implements GradebookItem
 				$sql_eval='SELECT weight from '.$tbl_grade_evaluations.' WHERE id='.$arreval['id'];
 				$rs=Database::query($sql_eval);
 				$row_old_weight=Database::fetch_array($rs,'ASSOC');
-				$current_date=strtotime(date('Y-m-d H:i:s',time()));
-				$sql="INSERT INTO ".$tbl_grade_linkeval_log."(id_linkeval_log,name,description,date_log,weight,visible,type,user_id_log)VALUES('".Database::escape_string($arreval['id'])."','".Database::escape_string($arreval['name'])."','".Database::escape_string($arreval['description'])."','".Database::escape_string($current_date)."','".Database::escape_string($row_old_weight['weight'])."','".Database::escape_string($arreval['visible'])."','evaluation',".api_get_user_id().")";
+				$current_date=api_get_utc_datetime();
+				$sql="INSERT INTO ".$tbl_grade_linkeval_log."(id_linkeval_log,name,description,created_at,weight,visible,type,user_id_log)VALUES('".Database::escape_string($arreval['id'])."','".Database::escape_string($arreval['name'])."','".Database::escape_string($arreval['description'])."','".$current_date."','".Database::escape_string($row_old_weight['weight'])."','".Database::escape_string($arreval['visible'])."','evaluation',".api_get_user_id().")";
 				Database::query($sql);
 			}
 		}
@@ -370,23 +366,6 @@ class Evaluation implements GradebookItem
 		return ($number[0] != 0);
     }
 
-
-    /**
-	 * Does this evaluation have any results for a student ?
-	 */
-	 /* - not used anywhere (yet ?)
-    public function has_results_for_student($stud_id)
-    {
-    	$tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
-		$sql="SELECT count(id) AS number FROM ".$tbl_grade_results
-			." WHERE evaluation_id = ".$this->id." AND user_id = ".$stud_id;
-    	$result = Database::query($sql);
-		$number=Database::fetch_row($result);
-		return ($number[0] != 0);
-    }
-    */
-
-
     /**
      * Delete all results for this evaluation
      */

+ 1 - 1
main/gradebook/lib/be/gradebookitem.class.php

@@ -42,4 +42,4 @@ interface GradebookItem
 
 	public function calc_score($stud_id = null);
 
-}
+}

+ 13 - 14
main/gradebook/lib/be/result.class.php

@@ -35,13 +35,13 @@ class Result
 	private $id;
 	private $user_id;
 	private $evaluation;
-	private $creation_date;
+	private $created_at;
 	private $score;
 
 // CONSTRUCTORS
 
     function Result() {
-    	$this->creation_date = time();
+		$this->created_at = api_get_utc_datetime();
     }
 
 // GETTERS AND SETTERS
@@ -59,7 +59,7 @@ class Result
 	}
 
     public function get_date() {
-		return $this->creation_date;
+		return $this->created_at;
 	}
 
    	public function get_score() {
@@ -79,7 +79,7 @@ class Result
 	}
 
     public function set_date ($creation_date) {
-		$this->creation_date = $creation_date;
+		$this->created_at = $creation_date;
 	}
 
    	public function set_score ($score) {
@@ -119,14 +119,14 @@ class Result
 					$list_user_course_list[]=$row_course_rel_user;
 				}
 
-				$current_date=time();
+				$current_date=api_get_utc_datetime();
 				for ($i=0;$i<count($list_user_course_list);$i++) {
 					$sql_verified='SELECT COUNT(*) AS count FROM '.$tbl_grade_results.' WHERE user_id="'.(int)($list_user_course_list[$i]['user_id']).'" AND evaluation_id="'.Database::escape_string($evaluation_id).'";';
 					//$my_status_in_course=CourseManager::get_user_in_course_status($list_user_course_list[$i]['user_id'], api_get_course_id());
 					$res_verified=Database::query($sql_verified);
 					$info_verified=Database::result($res_verified,0,0);
 					if ($info_verified==0) {
-						$sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,date,score) values ("'.Database::escape_string($list_user_course_list[$i]['user_id']).'","'.Database::escape_string($evaluation_id).'","'.$current_date.'",0);';
+						$sql_insert='INSERT INTO '.$tbl_grade_results.'(user_id,evaluation_id,created_at,score) values ("'.Database::escape_string($list_user_course_list[$i]['user_id']).'","'.Database::escape_string($evaluation_id).'","'.$current_date.'",0);';
 						$res_insert=Database::query($sql_insert);
 					}
 				}
@@ -134,7 +134,7 @@ class Result
 			}
 		}
 
-		$sql='SELECT id,user_id,evaluation_id,date,score FROM '.$tbl_grade_results;
+		$sql='SELECT id,user_id,evaluation_id,created_at,score FROM '.$tbl_grade_results;
 		$paramcount = 0;
 		if (!empty ($id)) {
 			$sql.= ' WHERE id = '.Database::escape_string($id);
@@ -162,7 +162,7 @@ class Result
 			$res->set_id($data['id']);
 			$res->set_user_id($data['user_id']);
 			$res->set_evaluation_id($data['evaluation_id']);
-			$res->set_date($data['date']);
+			$res->set_date(api_get_local_time($data['created_at']));
 			$res->set_score($data['score']);
 			$allres[]=$res;
 		}
@@ -173,11 +173,11 @@ class Result
      * Insert this result into the database
      */
     public function add() {
-		if (isset($this->user_id) && isset($this->evaluation) && isset($this->creation_date) ) {
+		if (isset($this->user_id) && isset($this->evaluation) ) {
 			$tbl_grade_results = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
 			$sql = 'INSERT INTO '.$tbl_grade_results
 					.' (user_id, evaluation_id,
-					date';
+					created_at';
 			if (isset($this->score)) {
 			 $sql .= ',score';
 			}
@@ -208,14 +208,13 @@ class Result
 			$arr=get_object_vars($arr_result[0]);
 
 			$sql = 'INSERT INTO '.$tbl_grade_results_log
-					.' (id_result,user_id, evaluation_id,
-					date_log';
+					.' (id_result,user_id, evaluation_id,created_at';
 			if (isset($arr['score'])) {
 			 	$sql .= ',score';
 			}
 				$sql .= ') VALUES
 					('.(int)$arr['id'].','.(int)$arr['user_id'].', '.(int)$arr['evaluation']
-					.', '.$arr['creation_date'];
+					.", '".api_get_utc_datetime()."'";
 			if (isset($arr['score'])) {
 				 $sql .= ', '.$arr['score'];
 			}
@@ -254,4 +253,4 @@ class Result
 		$sql = 'DELETE FROM '.$tbl_grade_results.' WHERE id = '.$this->id;
 		Database::query($sql);
 	}
-}
+}

+ 2 - 3
main/gradebook/lib/fe/evalform.class.php

@@ -288,7 +288,7 @@ class EvalForm extends FormValidator
 	 */
 	protected function build_add_form() {
 		$this->setDefaults(array (
-		'hid_user_id' => $this->evaluation_object->get_user_id(), 'hid_category_id' => $this->evaluation_object->get_category_id(), 'hid_course_code' => $this->evaluation_object->get_course_code(), 'date' => time()));
+		'hid_user_id' => $this->evaluation_object->get_user_id(), 'hid_category_id' => $this->evaluation_object->get_category_id(), 'hid_course_code' => $this->evaluation_object->get_course_code(), 'created_at' => api_get_utc_datetime()));
 		$this->build_basic_form(0);
 		if ($this->evaluation_object->get_course_code() == null) {
 			$this->addElement('checkbox', 'adduser', get_lang('AddUserToEval'));
@@ -302,7 +302,7 @@ class EvalForm extends FormValidator
 	 */
 	protected function build_editing_form() {
 		$this->setDefaults(array (
-		'hid_id' => $this->evaluation_object->get_id(), 'name' => $this->evaluation_object->get_name(), 'description' => $this->evaluation_object->get_description(), 'hid_user_id' => $this->evaluation_object->get_user_id(), 'hid_course_code' => $this->evaluation_object->get_course_code(), 'hid_category_id' => $this->evaluation_object->get_category_id(), 'date' => api_strtotime($this->evaluation_object->get_date()), 'weight' => $this->evaluation_object->get_weight(), 'max' => $this->evaluation_object->get_max(), 'visible' => $this->evaluation_object->is_visible()));
+		'hid_id' => $this->evaluation_object->get_id(), 'name' => $this->evaluation_object->get_name(), 'description' => $this->evaluation_object->get_description(), 'hid_user_id' => $this->evaluation_object->get_user_id(), 'hid_course_code' => $this->evaluation_object->get_course_code(), 'hid_category_id' => $this->evaluation_object->get_category_id(), 'created_at' => api_get_utc_datetime($this->evaluation_object->get_date()), 'weight' => $this->evaluation_object->get_weight(), 'max' => $this->evaluation_object->get_max(), 'visible' => $this->evaluation_object->is_visible()));
 		$id_current=isset($this->id)?$this->id :null;
 		$this->addElement('hidden', 'hid_id',$id_current);
 		$this->build_basic_form(1);
@@ -352,7 +352,6 @@ class EvalForm extends FormValidator
 				'maxlength' => '4'
 			));
 		}
-		/*$this->add_datepicker('date', get_lang('DateEval'));*/
 		$this->addElement('textarea', 'description', get_lang('Description'), array (
 			'rows' => '3',
 			'cols' => '34'

+ 3 - 3
main/gradebook/lib/fe/exportgradebook.php

@@ -81,7 +81,7 @@ a:active {text-decoration: none; font-weight : bold;  color : black;}
 <body><div id="main">';
 
 	$printdata .= '<h2>'.$view.' : '.$coursename.'</h2>';
-	$printdata .= '<h3>'.get_lang('Date').' : '.date('j/n/Y g:i').'</h3>';
+	$printdata .= '<h3>'.get_lang('Date').' : '.api_convert_and_format_date(null, DATE_FORMAT_SHORT). ' ' . api_convert_and_format_date(null, TIME_NO_SEC_FORMAT).'</h3>';
 	$printdata .= '<table border="1" width="90%" cellspacing="1" cellpadding="1">';
 	foreach ($header_names as $header) {
 		$printdata .= '<th>'.$header.'</th>';
@@ -110,7 +110,7 @@ function export_pdf($pdf,$newarray,$header_names,$format) {
 	$pdf->ezSetCmMargins(0,0,0,0);
 	$pdf->ezSetY(($format=='portrait')?'820':'570');
 	$pdf->selectFont(api_get_path(LIBRARY_PATH).'ezpdf/fonts/Courier.afm');
-	$pdf->ezText(get_lang('FlatView').' ('. date('j/n/Y g:i') .')',12,array('justification'=>'center'));
+	$pdf->ezText(get_lang('FlatView').' ('. api_convert_and_format_date(null, DATE_FORMAT_SHORT). ' ' . api_convert_and_format_date(null, TIME_NO_SEC_FORMAT) .')',12,array('justification'=>'center'));
 	if ($format=='portrait') {
 		$pdf->line(40,790,540,790);
 		$pdf->line(40,40,540,40);
@@ -122,4 +122,4 @@ function export_pdf($pdf,$newarray,$header_names,$format) {
 	$pdf->ezTable($newarray,$header_names,'',array('showHeadings'=>1,'shaded'=>1,'showLines'=>1,'rowGap'=>3,'width'=>(($format=='portrait')?'500':'750')));
 	$pdf->ezStream();
 
-}
+}

+ 1 - 4
main/gradebook/lib/gradebook_functions.inc.php

@@ -106,9 +106,6 @@ function add_resource_to_course_gradebook($course_code, $resource_type, $resourc
     if ($link->needs_max()) {
     	$link->set_max($max);
     }
-    if (isset($date)) {
-        $link->set_date($date);
-    }
     if ($link->needs_name_and_description()) {
     	$link->set_description($resource_description);
     }
@@ -413,4 +410,4 @@ function parse_xml_data($file) {
 	xml_parse($parser, file_get_contents($file));
 	xml_parser_free($parser);
 	return $users;
-}
+}

+ 2 - 2
main/gradebook/user_stats.php

@@ -73,7 +73,7 @@ if (isset ($_GET['exportpdf'])) {
 
 	$pdf->ezSetY(810);
 	$userinfo = get_user_info_from_id($my_user_id);
-	$pdf->ezText(get_lang('Results').' : '.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).' ('. date('j/n/Y g:i') .')', 12, array('justification'=>'center'));
+	$pdf->ezText(get_lang('Results').' : '.api_get_person_name($userinfo['firstname'], $userinfo['lastname']).' ('. api_convert_and_format_date(null, DATE_FORMAT_SHORT). ' ' . api_convert_and_format_date(null, TIME_NO_SEC_FORMAT) .')', 12, array('justification'=>'center'));
 	$pdf->line(50,790,550,790);
 	$pdf->line(50,40,550,40);
 
@@ -118,4 +118,4 @@ Display :: display_header(get_lang('ResultsPerUser'));
 DisplayGradebook :: display_header_user(Security::remove_XSS($_GET['userid']));
 echo $actions;
 $user_table->display();
-Display :: display_footer();
+Display :: display_footer();

+ 20 - 0
main/install/migrate-db-1.8.6.2-1.8.7-pre.sql

@@ -41,6 +41,26 @@ ALTER TABLE user_field_options CHANGE tms tms DATETIME NOT NULL default '0000-00
 ALTER TABLE user_field_values CHANGE tms tms DATETIME NOT NULL default '0000-00-00 00:00:00';
 ALTER TABLE access_url CHANGE tms tms DATETIME NOT NULL default '0000-00-00 00:00:00';
 
+ALTER TABLE gradebook_certificate CHANGE date_certificate created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+
+ALTER TABLE gradebook_evaluation ADD COLUMN created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+UPDATE gradebook_evaluation SET created_at = FROM_UNIXTIME(date);
+ALTER TABLE gradebook_evaluation DROP date;
+
+ALTER TABLE gradebook_link ADD COLUMN created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+UPDATE gradebook_link SET created_at = FROM_UNIXTIME(date);
+ALTER TABLE gradebook_link DROP date;
+
+ALTER TABLE gradebook_linkeval_log ADD COLUMN created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+UPDATE gradebook_linkeval_log SET created_at = FROM_UNIXTIME(date_log);
+ALTER TABLE gradebook_linkeval_log DROP date_log;
+
+ALTER TABLE gradebook_result ADD COLUMN created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+UPDATE gradebook_result SET created_at = FROM_UNIXTIME(date);
+ALTER TABLE gradebook_result DROP date;
+
+ALTER TABLE gradebook_result_log CHANGE date_log created_at DATETIME NOT NULL default '0000-00-00 00:00:00';
+
 INSERT INTO user_field(field_type, field_variable, field_display_text, field_visible, field_changeable) VALUES(11, 'timezone', 'Timezone', 0, 0);
 
 INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_create_active_tools','attendances','checkbox','Tools','true','CourseCreateActiveToolsTitle','CourseCreateActiveToolsComment',NULL,'Attendances', 0);

+ 32 - 1
main/install/update-db-1.8.6.2-1.8.7.inc.php

@@ -115,7 +115,38 @@ if (defined('SYSTEM_INSTALLATION')) {
                 }
             }
         }
-        //
+        // Converting dates and times to UTC using the default timezone of PHP
+        // Converting gradebook dates and times
+        $timezone = date_default_timezone_get();
+		// Calculating the offset
+		$dateTimeZoneCurrent = new DateTimeZone($timezone);
+		$dateTimeUTC = new DateTime("now", new DateTimeZone('UTC'));
+		$timeOffsetSeconds = $dateTimeZoneCurrent->getOffset($dateTimeUTC);
+		$timeOffsetHours = $timeOffsetSeconds / 3600;
+		$timeOffsetString = "";
+		if($timeOffsetHours < 0) {
+		$timeOffsetString .= "-";
+		$timeOffsetHours = abs($timeOffsetHours);
+		} else {
+		$timeOffsetString .= "+";
+		}
+
+		if($timeOffsetHours < 10) {
+		$timeOffsetString .= "0";
+		}
+
+		$timeOffsetString .= "$timeOffsetHours";
+		$timeOffsetString .= ":00";
+		// Executing the queries to convert everything
+        $queries[] = "UPDATE gradebook_certificate SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        $queries[] = "UPDATE gradebook_evaluation SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        $queries[] = "UPDATE gradebook_link SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        $queries[] = "UPDATE gradebook_linkeval_log SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        $queries[] = "UPDATE gradebook_result SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        $queries[] = "UPDATE gradebook_result_log SET created_at = CONVERT_TZ(created_at, '".$timeOffsetString."', '+00:00');";
+        foreach($queries as $query) {
+			Database::query($query);
+		}
 
         // Get the stats queries list (s_q_list)
         // Get the stats queries list (s_q_list)