Feature #272 - TableSort class: Removing old hacks, cleaning and optimization.

skala
Ivan Tcholakov 16 years ago
parent b1e72401b1
commit 232177cc4f
  1. 15
      main/document/document.php
  2. 42
      main/dropbox/index.php
  3. 103
      main/inc/lib/tablesort.lib.php
  4. 37
      main/work/work.lib.php

@ -690,7 +690,7 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) {
$last_edit_date = $id['lastedit_date']; $last_edit_date = $id['lastedit_date'];
$last_edit_date = api_get_local_time($last_edit_date, null, date_default_timezone_get()); $last_edit_date = api_get_local_time($last_edit_date, null, date_default_timezone_get());
$display_date = date_to_str_ago($last_edit_date).'<br /><span class="dropbox_date">'.api_format_date($last_edit_date).'</span>'; $display_date = date_to_str_ago($last_edit_date).'<br /><span class="dropbox_date">'.api_format_date($last_edit_date).'</span>';
$row[] = $invisibility_span_open.$display_date.$invisibility_span_close.'<!--uts='.strtotime($last_edit_date).'-->'; $row[] = $invisibility_span_open.$display_date.$invisibility_span_close;
// Admins get an edit column // Admins get an edit column
if ($is_allowed_to_edit || $group_member_with_upload_rights) { if ($is_allowed_to_edit || $group_member_with_upload_rights) {
@ -794,16 +794,11 @@ $column_show[] = 0;
$column_order = array(); $column_order = array();
if (count($row) == 8) { if (count($row) == 8) {
$column_order[] = 1; $column_order[3] = 7;
$column_order[] = 2; $column_order[4] = 6;
$column_order[] = 7;
$column_order[] = 6;
$column_order[] = 5;
} elseif (count($row) == 6) { } elseif (count($row) == 6) {
$column_order[] = 1; $column_order[2] = 5;
$column_order[] = 2; $column_order[3] = 4;
$column_order[] = 7;
$column_order[] = 4;
} }
$default_column = $is_allowed_to_edit ? 2 : 1; $default_column = $is_allowed_to_edit ? 2 : 1;

@ -250,13 +250,12 @@ if ($_GET['action'] != 'add') {
} }
} }
// ACTIONS // ACTIONS
if ($_GET['view'] == 'received' OR !$dropbox_cnf['sent_received_tabs']) { if ($_GET['view'] == 'received' OR !$dropbox_cnf['sent_received_tabs']) {
//echo '<h3>'.get_lang('ReceivedFiles').'</h3>'; //echo '<h3>'.get_lang('ReceivedFiles').'</h3>';
// This is for the categories // This is for the categories
if (isset($_GET['view_received_category']) AND $_GET['view_received_category']<>'') { if (isset($_GET['view_received_category']) AND $_GET['view_received_category'] != '') {
$view_dropbox_category_received = Security::remove_XSS($_GET['view_received_category']); $view_dropbox_category_received = Security::remove_XSS($_GET['view_received_category']);
} else { } else {
$view_dropbox_category_received = 0; $view_dropbox_category_received = 0;
@ -381,6 +380,7 @@ if ($_GET['action'] != 'add') {
} }
$column_header[] = array('RealDate', true); $column_header[] = array('RealDate', true);
$column_header[] = array('RealSize', true);
// An array with the setting of the columns -> 1: columns that we will show, 0:columns that will be hide // An array with the setting of the columns -> 1: columns that we will show, 0:columns that will be hide
$column_show[] = 1; $column_show[] = 1;
@ -401,14 +401,9 @@ if ($_GET['action'] != 'add') {
// in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate // in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate
// because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48" // because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48"
$column_order[] = 1; $column_order[3] = 8;
$column_order[] = 2; $column_order[5] = 7;
$column_order[] = 3;
$column_order[] = 4;
$column_order[] = 7;
$column_order[] = 6;
$column_order[] = 7;
$column_order[] = 8;
// The content of the sortable table = the received files // The content of the sortable table = the received files
foreach ($dropbox_person -> receivedWork as $dropbox_file) { foreach ($dropbox_person -> receivedWork as $dropbox_file) {
@ -429,7 +424,8 @@ if ($_GET['action'] != 'add') {
$link_open = '<a href="dropbox_download.php?'.api_get_cidreq().'&amp;id='.$dropbox_file->id.'">'; $link_open = '<a href="dropbox_download.php?'.api_get_cidreq().'&amp;id='.$dropbox_file->id.'">';
$dropbox_file_data[] = $link_open.build_document_icon_tag('file', $dropbox_file->title).'</a>'; $dropbox_file_data[] = $link_open.build_document_icon_tag('file', $dropbox_file->title).'</a>';
$dropbox_file_data[] = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'&amp;action=download">'.Display::return_icon('filesave.gif', get_lang('Download'), array('style' => 'float:right;')).'</a>'.$link_open.$dropbox_file->title.'</a>'.$new_icon.'<br />'.$dropbox_file->description; $dropbox_file_data[] = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'&amp;action=download">'.Display::return_icon('filesave.gif', get_lang('Download'), array('style' => 'float:right;')).'</a>'.$link_open.$dropbox_file->title.'</a>'.$new_icon.'<br />'.$dropbox_file->description;
$dropbox_file_data[] = ceil(($dropbox_file->filesize) / 1024).' '.get_lang('kB'); $file_size = $dropbox_file->filesize;
$dropbox_file_data[] = format_file_size($file_size);
$dropbox_file_data[] = $dropbox_file->author; $dropbox_file_data[] = $dropbox_file->author;
//$dropbox_file_data[] = $dropbox_file->description; //$dropbox_file_data[] = $dropbox_file->description;
@ -454,7 +450,8 @@ if ($_GET['action'] != 'add') {
$dropbox_file_data[] = $action_icons; $dropbox_file_data[] = $action_icons;
} }
$action_icons = ''; $action_icons = '';
$dropbox_file_data[] = $dropbox_file->last_upload_date; //date $dropbox_file_data[] = $last_upload_date;
$dropbox_file_data[] = $file_size;
$dropbox_data_recieved[] = $dropbox_file_data; $dropbox_data_recieved[] = $dropbox_file_data;
} }
} }
@ -535,7 +532,8 @@ if ($_GET['action'] != 'add') {
$column_header[] = array(get_lang('Modify'), false, '', 'nowrap style="text-align: right"'); $column_header[] = array(get_lang('Modify'), false, '', 'nowrap style="text-align: right"');
} }
$column_header[] = array('RealDate', false); $column_header[] = array('RealDate', true);
$column_header[] = array('RealSize', true);
$column_show = array(); $column_show = array();
$column_order = array(); $column_order = array();
@ -558,14 +556,8 @@ if ($_GET['action'] != 'add') {
// in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate // in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate
// because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48" // because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48"
$column_order[] = 1; $column_order[3] = 8;
$column_order[] = 2; $column_order[5] = 7;
$column_order[] = 3;
$column_order[] = 4;
$column_order[] = 7;
$column_order[] = 6;
$column_order[] = 7;
$column_order[] = 8;
// The content of the sortable table = the received files // The content of the sortable table = the received files
foreach ($dropbox_person -> sentWork as $dropbox_file) { foreach ($dropbox_person -> sentWork as $dropbox_file) {
@ -576,7 +568,8 @@ if ($_GET['action'] != 'add') {
$link_open = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'">'; $link_open = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'">';
$dropbox_file_data[] = $link_open.build_document_icon_tag('file', $dropbox_file->title).'</a>'; $dropbox_file_data[] = $link_open.build_document_icon_tag('file', $dropbox_file->title).'</a>';
$dropbox_file_data[] = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'&amp;action=download">'.Display::return_icon('filesave.gif', get_lang('Save'), array('style' => 'float:right;')).'</a>'.$link_open.$dropbox_file->title.'</a><br />'.$dropbox_file->description; $dropbox_file_data[] = '<a href="dropbox_download.php?'.api_get_cidreq().'&id='.$dropbox_file->id.'&amp;action=download">'.Display::return_icon('filesave.gif', get_lang('Save'), array('style' => 'float:right;')).'</a>'.$link_open.$dropbox_file->title.'</a><br />'.$dropbox_file->description;
$dropbox_file_data[] = ceil(($dropbox_file->filesize)/1024).' '.get_lang('kB'); $file_size = $dropbox_file->filesize;
$dropbox_file_data[] = format_file_size($file_size);
foreach ($dropbox_file->recipients as $recipient) { foreach ($dropbox_file->recipients as $recipient) {
$receivers_celldata = display_user_link_work($recipient['user_id'], $recipient['name']).', '.$receivers_celldata; $receivers_celldata = display_user_link_work($recipient['user_id'], $recipient['name']).', '.$receivers_celldata;
} }
@ -592,12 +585,13 @@ if ($_GET['action'] != 'add') {
<a href="'.api_get_self().'?'.api_get_cidreq().'&view_received_category='.Security::remove_XSS($_GET['view_received_category']).'&amp;view_sent_category='.Security::remove_XSS($_GET['view_sent_category']).'&amp;view='.Security::remove_XSS($_GET['view']).'&amp;action=movesent&amp;move_id='.$dropbox_file->id.'">'.Display::return_icon('deplacer_fichier.gif', get_lang('Move')).'</a> <a href="'.api_get_self().'?'.api_get_cidreq().'&view_received_category='.Security::remove_XSS($_GET['view_received_category']).'&amp;view_sent_category='.Security::remove_XSS($_GET['view_sent_category']).'&amp;view='.Security::remove_XSS($_GET['view']).'&amp;action=movesent&amp;move_id='.$dropbox_file->id.'">'.Display::return_icon('deplacer_fichier.gif', get_lang('Move')).'</a>
<a href="'.api_get_self().'?'.api_get_cidreq().'&view_received_category='.Security::remove_XSS($_GET['view_received_category']).'&amp;view_sent_category='.Security::remove_XSS($_GET['view_sent_category']).'&amp;view='.Security::remove_XSS($_GET['view']).'&amp;action=deletesentfile&amp;id='.$dropbox_file->id.'" onclick="javascript: return confirmation(\''.$dropbox_file->title.'\');">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>'; <a href="'.api_get_self().'?'.api_get_cidreq().'&view_received_category='.Security::remove_XSS($_GET['view_received_category']).'&amp;view_sent_category='.Security::remove_XSS($_GET['view_sent_category']).'&amp;view='.Security::remove_XSS($_GET['view']).'&amp;action=deletesentfile&amp;id='.$dropbox_file->id.'" onclick="javascript: return confirmation(\''.$dropbox_file->title.'\');">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
// This is a hack to have an additional row in a sortable table // This is a hack to have an additional row in a sortable table
if ($_GET['action'] == 'viewfeedback' AND isset($_GET['id']) and is_numeric($_GET['id']) AND $dropbox_file->id==$_GET['id']) { if ($_GET['action'] == 'viewfeedback' && isset($_GET['id']) && is_numeric($_GET['id']) && $dropbox_file->id == $_GET['id']) {
$action_icons .= "</td></tr>\n"; // ending the normal row of the sortable table $action_icons .= "</td></tr>\n"; // ending the normal row of the sortable table
$action_icons .= "<tr>\n\t<td colspan=\"2\"><a href=\"index.php?".api_get_cidreq()."&view_received_category=".Security::remove_XSS($_GET['view_received_category'])."&amp;view_sent_category=".Security::remove_XSS($_GET['view_sent_category'])."&amp;view=".Security::remove_XSS($_GET['view'])."\">".get_lang('CloseFeedback')."</a></td><td colspan=\"7\">".feedback($dropbox_file->feedback2)."</td>\n</tr>\n"; $action_icons .= "<tr>\n\t<td colspan=\"2\"><a href=\"index.php?".api_get_cidreq()."&view_received_category=".Security::remove_XSS($_GET['view_received_category'])."&amp;view_sent_category=".Security::remove_XSS($_GET['view_sent_category'])."&amp;view=".Security::remove_XSS($_GET['view'])."\">".get_lang('CloseFeedback')."</a></td><td colspan=\"7\">".feedback($dropbox_file->feedback2)."</td>\n</tr>\n";
} }
$dropbox_file_data[] = $action_icons; $dropbox_file_data[] = $action_icons;
$dropbox_file_data[] = $dropbox_file->last_upload_date; $dropbox_file_data[] = $last_upload_date;
$dropbox_file_data[] = $file_size;
$action_icons = ''; $action_icons = '';
$dropbox_data_sent[] = $dropbox_file_data; $dropbox_data_sent[] = $dropbox_file_data;
} }

@ -9,40 +9,9 @@
define('SORT_DATE', 3); define('SORT_DATE', 3);
define('SORT_IMAGE', 4); define('SORT_IMAGE', 4);
define('SORT_CUSTOM', 5);
class TableSort { class TableSort {
/**
* This is a method for date comparison, using hidden raw values if they are given.
* Date formats vary a lot, alse they have localized values. For avoiding using
* unreliable in this case date parsing routine, this method checks first whether raw
* date walues have been intentionaly passed in order precise sorting to be achieved.
* Here is the format of the date value, hidden in a comment: <!--uts=1234685716-->
* @param string $el1 The first element provided from the table.
* @param string $el2 The second element provided from the table.
* @result bool Tre comparison result.
* @author Ivan Tcholakov, 2010.
*/
public function date_compare($el1, $el2) {
if (($pos1 = strpos($el1, '<!--uts=')) !== false && ($pos2 = strpos($el1, '-->', $pos1)) !== false) {
$el1 = intval(substr($el1, $pos1 + 8, $pos2 - $pos1 - 8));
} else {
$el1 = strtotime(strip_tags($el1));
}
if (($pos1 = strpos($el2, '<!--uts=')) !== false && ($pos2 = strpos($el2, '-->', $pos1)) !== false) {
$el2 = intval(substr($el2, $pos1 + 8, $pos2 - $pos1 - 8));
} else {
$el2 = strtotime(strip_tags($el2));
}
if ($el1 > $el2) {
return 1;
} elseif ($el1 < $el2) {
return -1;
}
return 0;
}
/** /**
* Sorts 2-dimensional table. * Sorts 2-dimensional table.
* @param array $data The data to be sorted. * @param array $data The data to be sorted.
@ -68,9 +37,7 @@ class TableSort {
$compare_function = ''; $compare_function = '';
if ($type == SORT_REGULAR) { if ($type == SORT_REGULAR) {
if (TableSort::is_custom_sortable_column($data, $column)) { if (TableSort::is_image_column($data, $column)) {
$type = SORT_CUSTOM;
} elseif (TableSort::is_image_column($data, $column)) {
$type = SORT_IMAGE; $type = SORT_IMAGE;
} elseif (TableSort::is_date_column($data, $column)) { } elseif (TableSort::is_date_column($data, $column)) {
$type = SORT_DATE; $type = SORT_DATE;
@ -82,9 +49,6 @@ class TableSort {
} }
switch ($type) { switch ($type) {
case SORT_CUSTOM:
$compare_function = 'TableSort::custom_compare($el1, $el2) > 0';
break;
case SORT_NUMERIC: case SORT_NUMERIC:
$compare_function = 'strip_tags($el1) > strip_tags($el2)'; $compare_function = 'strip_tags($el1) > strip_tags($el2)';
break; break;
@ -92,7 +56,7 @@ class TableSort {
$compare_function = 'api_strnatcmp(api_strtolower(strip_tags($el1,"<img>")),api_strtolower(strip_tags($el2,"<img>"))) > 0'; $compare_function = 'api_strnatcmp(api_strtolower(strip_tags($el1,"<img>")),api_strtolower(strip_tags($el2,"<img>"))) > 0';
break; break;
case SORT_DATE: case SORT_DATE:
$compare_function = 'TableSort::date_compare($el1, $el2) > 0'; $compare_function = 'strtotime(strip_tags($el1)) > strtotime(strip_tags($el2))';
break; break;
case SORT_STRING: case SORT_STRING:
default: default:
@ -113,13 +77,14 @@ class TableSort {
* @param array $data The data to be sorted. * @param array $data The data to be sorted.
* @param int $column The column on which the data should be sorted (default = 0) * @param int $column The column on which the data should be sorted (default = 0)
* @param string $direction The direction to sort (SORT_ASC (default) orSORT_DESC) * @param string $direction The direction to sort (SORT_ASC (default) orSORT_DESC)
* @param array $column_show The columns that we will show in the table i.e: $column_show=array('1','0','1') we will show the 1st and the 3th column. * @param array $column_show The columns that we will show in the table i.e: $column_show = array('1','0','1') we will show the 1st and the 3th column.
* @param array $column_order Changes how the columns will be sorted ie. $column_order=array('1','4','3','4') The 2nd column will be sorted like the 4 column * @param array $column_order Changes how the columns will be sorted ie. $column_order = array('0','3','2','3') The column [1] will be sorted like the column [3]
* @param constant $type How should data be sorted (SORT_REGULAR, SORT_NUMERIC,SORT_STRING,SORT_DATE,SORT_IMAGE) * * @param constant $type How should data be sorted (SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_DATE, SORT_IMAGE)
* @return array The sorted dataset * @return array The sorted dataset
* @author bart.mollet@hogent.be * @author bart.mollet@hogent.be
*/ */
public function sort_table_config($data, $column = 0, $direction = SORT_ASC, $column_show = null, $column_order = null, $type = SORT_REGULAR) { public function sort_table_config($data, $column = 0, $direction = SORT_ASC, $column_show = null, $column_order = null, $type = SORT_REGULAR) {
if (!is_array($data) or count($data) == 0) { if (!is_array($data) or count($data) == 0) {
return array(); return array();
} }
@ -136,17 +101,11 @@ class TableSort {
// Change columns sort // Change columns sort
// Here we say that the real way of how the columns are going to be order is manage by the $column_order array // Here we say that the real way of how the columns are going to be order is manage by the $column_order array
if (is_array($column_order)) { if (is_array($column_order)) {
for ($i = 0; $i < count($column_order); $i++) { $column = isset($column_order[$column]) ? $column_order[$column] : $column;
if ($column == $i + 1) {
$column = $column_order[$i];
}
}
} }
if ($type == SORT_REGULAR) { if ($type == SORT_REGULAR) {
if (TableSort::is_custom_sortable_column($data, $column)) { if (TableSort::is_image_column($data, $column)) {
$type = SORT_CUSTOM;
} elseif (TableSort::is_image_column($data, $column)) {
$type = SORT_IMAGE; $type = SORT_IMAGE;
} elseif (TableSort::is_date_column($data, $column)) { } elseif (TableSort::is_date_column($data, $column)) {
$type = SORT_DATE; $type = SORT_DATE;
@ -158,9 +117,6 @@ class TableSort {
} }
switch ($type) { switch ($type) {
case SORT_CUSTOM:
$compare_function = 'TableSort::custom_compare($el1, $el2) > 0';
break;
case SORT_NUMERIC: case SORT_NUMERIC:
$compare_function = 'strip_tags($el1) > strip_tags($el2)'; $compare_function = 'strip_tags($el1) > strip_tags($el2)';
break; break;
@ -168,7 +124,7 @@ class TableSort {
$compare_function = 'api_strnatcmp(api_strtolower(strip_tags($el1,"<img>")),api_strtolower(strip_tags($el2,"<img>"))) > 0'; $compare_function = 'api_strnatcmp(api_strtolower(strip_tags($el1,"<img>")),api_strtolower(strip_tags($el2,"<img>"))) > 0';
break; break;
case SORT_DATE: case SORT_DATE:
$compare_function = 'TableSort::date_compare($el1, $el2) > 0'; $compare_function = 'strtotime(strip_tags($el1)) > strtotime(strip_tags($el2))';
break; break;
case SORT_STRING: case SORT_STRING:
default: default:
@ -231,10 +187,7 @@ class TableSort {
private function is_date_column(& $data, $column) { private function is_date_column(& $data, $column) {
$is_date = true; $is_date = true;
foreach ($data as $index => & $row) { foreach ($data as $index => & $row) {
if (strpos($row[$column], '<!--uts=') !== false) { if (strlen(strip_tags($row[$column])) != 0) {
// A hidden raw date value (an integer Unix time stamp) has been detected. It is needed for precise sorting.
$is_date &= true;
} elseif (strlen(strip_tags($row[$column])) != 0) {
$check_date = strtotime(strip_tags($row[$column])); $check_date = strtotime(strip_tags($row[$column]));
// strtotime Returns a timestamp on success, FALSE otherwise. // strtotime Returns a timestamp on success, FALSE otherwise.
// Previous to PHP 5.1.0, this function would return -1 on failure. // Previous to PHP 5.1.0, this function would return -1 on failure.
@ -268,40 +221,4 @@ class TableSort {
return $is_image; return $is_image;
} }
/**
* Checks whether a column of a 2D-array contains hidden numeric values that are suitable for sorting.
* Here is the format of a sortable value, hidden within a comment: <!--sortable=1234685716-->
* @param array $data The data-array
* @param int $column The index of the column to check
* @return bool TRUE if the whole column contains hidden sortable values, FALSE otherwise
* @author Ivan Tcholakov, 2010.
*/
private function is_custom_sortable_column(& $data, $column) {
$is_custom_sortable = true;
foreach ($data as $index => & $row) {
$cell = &$row[$column];
$is_custom_sortable &= ($pos = strpos($cell, '<!--sortable=')) !== false && strpos($cell, '-->', $pos) !== false;
if (!$is_custom_sortable) {
break;
}
}
return $is_custom_sortable;
}
/**
* This is a method for custom comparison, using provided hidden values.
* Here is the format of a sortable value, hidden within a comment: <!--sortable=1234685716-->
* @param string $el1 The first element provided from the table.
* @param string $el2 The second element provided from the table.
* @result bool Tre comparison result.
* @author Ivan Tcholakov, 2010.
*/
public function custom_compare($el1, $el2) {
$pos = strpos($el1, '<!--sortable=');
$el1 = intval(substr($el1, $pos + 13, strpos($el1, '-->', $pos) - $pos - 13));
$pos = strpos($el2, '<!--sortable=');
$el2 = intval(substr($el2, $pos + 13, strpos($el2, '-->', $pos) - $pos - 13));
return $el1 > $el2 ? 1 : ($el1 < $el2 ? -1 : 0);
}
} }

@ -370,7 +370,7 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
if ($origin != 'learnpath') { if ($origin != 'learnpath') {
$table_header[] = array(get_lang('Modify'), true); $table_header[] = array(get_lang('Modify'), true);
$table_header[] = array('RealDate', false); $table_header[] = array('RealDate', true);
} }
// An array with the setting of the columns -> 1: columns that we will show, 0:columns that will be hide // An array with the setting of the columns -> 1: columns that we will show, 0:columns that will be hide
@ -385,26 +385,16 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
$column_show[] = 1; // modify $column_show[] = 1; // modify
$column_show[] = 0; //real date in correct format $column_show[] = 0; //real date in correct format
// Here we change the way how the colums are going to be sort // Here we change the way how the colums are going to be sort
// in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate // in this case the the column of LastResent ( 4th element in $column_header) we will be order like the column RealDate
// because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48" // because in the column RealDate we have the days in a correct format "2008-03-12 10:35:48"
$column_order[] = 1; //type
$column_order[] = 2; // title
if ($count_files != 0) { if ($count_files != 0) {
$column_order[] = 3; //authors $column_order[3] = 5;
} } else {
$column_order[2] = 4;
$column_order[] = 6; // date
if ($is_allowed_to_edit) {
$column_order[] = 5;
} }
$column_order[] = 6;
$table_data = array(); $table_data = array();
$dirs_list = get_subdirs_list($work_dir); $dirs_list = get_subdirs_list($work_dir);
@ -456,10 +446,10 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
$form_folder -> addGroup($group_name, 'my_group', get_lang('Title')); $form_folder -> addGroup($group_name, 'my_group', get_lang('Title'));
$form_folder -> addGroupRule('my_group', get_lang('ThisFieldIsRequired'), 'required'); $form_folder -> addGroupRule('my_group', get_lang('ThisFieldIsRequired'), 'required');
$defaults = array('my_group[dir_name]' => html_entity_decode($dir), 'description' => api_html_entity_decode($row['description'])); $defaults = array('my_group[dir_name]' => html_entity_decode($dir), 'description' => api_html_entity_decode($row['description']));
//$form_folder-> addElement('textarea', 'description', get_lang('Description'), array('rows' => 5, 'cols' => 50)); //$form_folder-> addElement('textarea', 'description', get_lang('Description'), array('rows' => 5, 'cols' => 50));
$form_folder->add_html_editor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'profile', 'Width' => '100%', 'Height' => '200')); $form_folder->add_html_editor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'profile', 'Width' => '100%', 'Height' => '200'));
$qualification_input[] = FormValidator :: createElement('text','qualification'); $qualification_input[] = FormValidator :: createElement('text','qualification');
$form_folder -> addGroup($qualification_input, 'qualification', get_lang('QualificationNumeric'), 'size="10"'); $form_folder -> addGroup($qualification_input, 'qualification', get_lang('QualificationNumeric'), 'size="10"');
@ -534,7 +524,7 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
} }
if ($there_is_a_expire_date) { if ($there_is_a_expire_date) {
$defaults = array_merge($defaults, convert_date_to_array($homework['expires_on'], 'expires')); $defaults = array_merge($defaults, convert_date_to_array($homework['expires_on'], 'expires'));
} }
if (!empty($row['qualification'])) { if (!empty($row['qualification'])) {
$defaults = array_merge($defaults, array('qualification[qualification]' => $row['qualification'])); $defaults = array_merge($defaults, array('qualification[qualification]' => $row['qualification']));
} }
@ -694,8 +684,9 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
if ($direc_date != '' && $direc_date != '0000-00-00 00:00:00') { if ($direc_date != '' && $direc_date != '0000-00-00 00:00:00') {
$direc_date_local = api_get_local_time($direc_date, null, date_default_timezone_get()); $direc_date_local = api_get_local_time($direc_date, null, date_default_timezone_get());
$row[] = date_to_str_ago($direc_date_local).'<br /><span class="dropbox_date">'.api_format_date($direc_date_local).'</span>'.'<!--uts='.api_strtotime($direc_date_local).'-->'; $row[] = date_to_str_ago($direc_date_local).'<br /><span class="dropbox_date">'.api_format_date($direc_date_local).'</span>';
} else { } else {
$direc_date_local = '0000-00-00 00:00:00';
$row[] = ''; $row[] = '';
} }
@ -709,6 +700,7 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
$row[] = ''; $row[] = '';
} }
} }
$row[] = $direc_date_local;
$table_data[] = $row; $table_data[] = $row;
} }
} }
@ -755,7 +747,7 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
$row[] = display_user_link_work($row2['insert_user_id'], $work->author).$qualification_string; // $work->author; $row[] = display_user_link_work($row2['insert_user_id'], $work->author).$qualification_string; // $work->author;
$work_sent_date_local = api_get_local_time($work->sent_date, null, date_default_timezone_get()); $work_sent_date_local = api_get_local_time($work->sent_date, null, date_default_timezone_get());
$row[] = date_to_str_ago($work_sent_date_local).$add_string.'<br /><span class="dropbox_date">'.api_format_date($work_sent_date_local).'</span>'.'<!--uts='.api_strtotime($work_sent_date_local).'-->'; $row[] = date_to_str_ago($work_sent_date_local).$add_string.'<br /><span class="dropbox_date">'.api_format_date($work_sent_date_local).'</span>';
if ($is_allowed_to_edit) { if ($is_allowed_to_edit) {
@ -782,6 +774,7 @@ function display_student_publications_list($work_dir, $sub_course_dir, $currentC
} else { } else {
$row[] = ' '; $row[] = ' ';
} }
$row[] = $work_sent_date_local;
$table_data[] = $row; $table_data[] = $row;
} }
} }
@ -1136,7 +1129,7 @@ function get_parent_directories($my_cur_dir_path) {
$list_id = array(); $list_id = array();
if (!empty($my_cur_dir_path)) { if (!empty($my_cur_dir_path)) {
$list_parents = explode('/', $my_cur_dir_path); $list_parents = explode('/', $my_cur_dir_path);
$dir_acum = ''; $dir_acum = '';
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION); $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
for ($i = 0; $i < count($list_parents) - 1; $i++) { for ($i = 0; $i < count($list_parents) - 1; $i++) {
$item = Database::escape_string($list_parents[$i]); $item = Database::escape_string($list_parents[$i]);
@ -1431,7 +1424,7 @@ function get_list_users_without_publication($task_id) {
if (!empty($session_id)){ if (!empty($session_id)){
$sql = "SELECT user_id as id FROM $work_table WHERE parent_id='$task_id' and session_id='".$session_id."'"; $sql = "SELECT user_id as id FROM $work_table WHERE parent_id='$task_id' and session_id='".$session_id."'";
} else { } else {
$sql = "SELECT user_id as id FROM $work_table WHERE parent_id='$task_id'"; $sql = "SELECT user_id as id FROM $work_table WHERE parent_id='$task_id'";
} }
@ -1446,7 +1439,7 @@ function get_list_users_without_publication($task_id) {
} else { } else {
$sql_users = "SELECT cu.user_id, u.lastname, u.firstname, u.email FROM $table_course_user AS cu, $table_user AS u WHERE u.status!=1 and cu.course_code='".api_get_course_id()."' AND u.user_id=cu.user_id"; $sql_users = "SELECT cu.user_id, u.lastname, u.firstname, u.email FROM $table_course_user AS cu, $table_user AS u WHERE u.status!=1 and cu.course_code='".api_get_course_id()."' AND u.user_id=cu.user_id";
} }
$result_users = Database::query($sql_users); $result_users = Database::query($sql_users);
$users_without_tasks = array(); $users_without_tasks = array();
while ($row_users = Database::fetch_row($result_users)) { while ($row_users = Database::fetch_row($result_users)) {

Loading…
Cancel
Save