Deleting extra field sessions values when deleting a session see #6664

1.9.x
Julio Montoya 12 years ago
parent d00ea9aafe
commit 440f248475
  1. 188
      main/admin/course_information.php
  2. 79
      main/inc/lib/sessionmanager.lib.php

@ -4,7 +4,7 @@
* This script gives information about a course * This script gives information about a course
* @author Bart Mollet * @author Bart Mollet
* @package chamilo.admin * @package chamilo.admin
*/ */
/** /**
* INIT SECTION * INIT SECTION
*/ */
@ -19,43 +19,66 @@ api_protect_admin_script();
/** /**
* *
*/ */
function get_course_usage($course_code, $session_id = 0) { function get_course_usage($course_code, $session_id = 0)
$table = Database::get_main_table(TABLE_MAIN_COURSE); {
$table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_code = Database::escape_string($course_code); $course_code = Database::escape_string($course_code);
$sql = "SELECT * FROM $table WHERE code='".$course_code."'"; $sql = "SELECT * FROM $table WHERE code='".$course_code."'";
$res = Database::query($sql); $res = Database::query($sql);
$course = Database::fetch_object($res); $course = Database::fetch_object($res);
// Learnpaths // Learnpaths
$table = Database :: get_course_table(TABLE_LP_MAIN); $table = Database :: get_course_table(TABLE_LP_MAIN);
$usage[] = array (get_lang(ucfirst(TOOL_LEARNPATH)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); $usage[] = array(
// Forums get_lang(ucfirst(TOOL_LEARNPATH)),
$table = Database :: get_course_table(TABLE_FORUM); CourseManager::count_rows_course_table($table, $session_id, $course->id)
$usage[] = array (get_lang('Forums'), CourseManager::count_rows_course_table($table,$session_id, $course->id)); );
// Quizzes // Forums
$table = Database :: get_course_table(TABLE_QUIZ_TEST); $table = Database :: get_course_table(TABLE_FORUM);
$usage[] = array (get_lang(ucfirst(TOOL_QUIZ)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); $usage[] = array(get_lang('Forums'), CourseManager::count_rows_course_table($table, $session_id, $course->id));
// Documents // Quizzes
$table = Database :: get_course_table(TABLE_DOCUMENT); $table = Database :: get_course_table(TABLE_QUIZ_TEST);
$usage[] = array (get_lang(ucfirst(TOOL_DOCUMENT)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); $usage[] = array(
// Groups get_lang(ucfirst(TOOL_QUIZ)),
$table = Database :: get_course_table(TABLE_GROUP); CourseManager::count_rows_course_table($table, $session_id, $course->id)
$usage[] = array (get_lang(ucfirst(TOOL_GROUP)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); );
// Calendar // Documents
$table = Database :: get_course_table(TABLE_AGENDA); $table = Database :: get_course_table(TABLE_DOCUMENT);
$usage[] = array (get_lang(ucfirst(TOOL_CALENDAR_EVENT)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); $usage[] = array(
// Link get_lang(ucfirst(TOOL_DOCUMENT)),
$table = Database::get_course_table(TABLE_LINK); CourseManager::count_rows_course_table($table, $session_id, $course->id)
$usage[] = array(get_lang(ucfirst(TOOL_LINK)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); );
// Announcements // Groups
$table = Database::get_course_table(TABLE_ANNOUNCEMENT); $table = Database :: get_course_table(TABLE_GROUP);
$usage[] = array(get_lang(ucfirst(TOOL_ANNOUNCEMENT)), CourseManager::count_rows_course_table($table,$session_id, $course->id)); $usage[] = array(
return $usage; get_lang(ucfirst(TOOL_GROUP)),
CourseManager::count_rows_course_table($table, $session_id, $course->id)
);
// Calendar
$table = Database :: get_course_table(TABLE_AGENDA);
$usage[] = array(
get_lang(ucfirst(TOOL_CALENDAR_EVENT)),
CourseManager::count_rows_course_table($table, $session_id, $course->id)
);
// Link
$table = Database::get_course_table(TABLE_LINK);
$usage[] = array(
get_lang(ucfirst(TOOL_LINK)),
CourseManager::count_rows_course_table($table, $session_id, $course->id)
);
// Announcements
$table = Database::get_course_table(TABLE_ANNOUNCEMENT);
$usage[] = array(
get_lang(ucfirst(TOOL_ANNOUNCEMENT)),
CourseManager::count_rows_course_table($table, $session_id, $course->id)
);
return $usage;
} }
if (!isset ($_GET['code'])) { if (!isset ($_GET['code'])) {
api_not_allowed(); api_not_allowed();
} }
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ("url" => 'course_list.php', "name" => get_lang('Courses')); $interbreadcrumb[] = array("url" => 'course_list.php', "name" => get_lang('Courses'));
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE); $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$code = Database::escape_string($_GET['code']); $code = Database::escape_string($_GET['code']);
$sql = "SELECT * FROM $table_course WHERE code = '".$code."'"; $sql = "SELECT * FROM $table_course WHERE code = '".$code."'";
@ -63,78 +86,79 @@ $res = Database::query($sql);
$course = Database::fetch_object($res); $course = Database::fetch_object($res);
$tool_name = $course->title.' ('.$course->visual_code.')'; $tool_name = $course->title.' ('.$course->visual_code.')';
Display::display_header($tool_name); Display::display_header($tool_name);
/* <a href="course_create_content.php?course_code=<?php echo $course->code ?>"><?php echo get_lang('AddDummyContentToCourse') ?></a> */
?> ?>
<div class="actions"> <div class="actions">
<a href="<?php echo api_get_path(WEB_COURSE_PATH).$course->directory; ?>"><?php Display::display_icon('home.png', get_lang('CourseHomepage'), array(), ICON_SIZE_MEDIUM); ?></a> <a href="<?php echo api_get_path(WEB_COURSE_PATH).$course->directory; ?>">
</div> <?php Display::display_icon('home.png', get_lang('CourseHomepage'), array(), ICON_SIZE_MEDIUM); ?>
</a>
</div>
<?php <?php
echo Display::page_header(get_lang('CourseUsage')); echo Display::page_header(get_lang('CourseUsage'));
$id_session = isset($_GET['id_session']) ? $_GET['id_session'] : 0; $id_session = isset($_GET['id_session']) ? $_GET['id_session'] : 0;
$table = new SortableTableFromArray(get_course_usage($course->code,$id_session),0,20,'usage_table'); $table = new SortableTableFromArray(get_course_usage($course->code, $id_session), 0, 20, 'usage_table');
$table->set_additional_parameters(array ('code' => Security::remove_XSS($_GET['code']))); $table->set_additional_parameters(array('code' => Security::remove_XSS($_GET['code'])));
$table->set_other_tables(array('user_table','class_table')); $table->set_other_tables(array('user_table', 'class_table'));
$table->set_header(0,get_lang('Tool'), true); $table->set_header(0, get_lang('Tool'), true);
$table->set_header(1,get_lang('NumberOfItems'), true); $table->set_header(1, get_lang('NumberOfItems'), true);
$table->display(); $table->display();
/** /**
* Show all users subscribed in this course * Show all users subscribed in this course
*/ */
echo Display::page_header(get_lang('Users')); echo Display::page_header(get_lang('Users'));
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$table_user = Database :: get_main_table(TABLE_MAIN_USER); $table_user = Database :: get_main_table(TABLE_MAIN_USER);
$sql = "SELECT *,cu.status as course_status FROM $table_course_user cu, $table_user u WHERE cu.user_id = u.user_id AND cu.course_code = '".$code."' AND cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH." "; $sql = "SELECT *,cu.status as course_status FROM $table_course_user cu, $table_user u WHERE cu.user_id = u.user_id AND cu.course_code = '".$code."' AND cu.relation_type <> ".COURSE_RELATION_TYPE_RRHH." ";
$res = Database::query($sql); $res = Database::query($sql);
$is_western_name_order = api_is_western_name_order(); $is_western_name_order = api_is_western_name_order();
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
$users = array (); $users = array();
while ($obj = Database::fetch_object($res)) { while ($obj = Database::fetch_object($res)) {
$user = array (); $user = array();
$user[] = $obj->official_code; $user[] = $obj->official_code;
if ($is_western_name_order) { if ($is_western_name_order) {
$user[] = $obj->firstname; $user[] = $obj->firstname;
$user[] = $obj->lastname; $user[] = $obj->lastname;
} else { } else {
$user[] = $obj->lastname; $user[] = $obj->lastname;
$user[] = $obj->firstname; $user[] = $obj->firstname;
} }
$user[] = Display :: encrypted_mailto_link($obj->email, $obj->email); $user[] = Display :: encrypted_mailto_link($obj->email, $obj->email);
$user[] = $obj->course_status == 5 ? get_lang('Student') : get_lang('Teacher'); $user[] = $obj->course_status == 5 ? get_lang('Student') : get_lang('Teacher');
$user[] = '<a href="user_information.php?user_id='.$obj->user_id.'">'.Display::return_icon('synthese_view.gif',get_lang('UserInfo')).'</a>'; $user[] = '<a href="user_information.php?user_id='.$obj->user_id.'">'.Display::return_icon('synthese_view.gif', get_lang('UserInfo')).'</a>';
$users[] = $user; $users[] = $user;
} }
$table = new SortableTableFromArray($users,0,20,'user_table'); $table = new SortableTableFromArray($users, 0, 20, 'user_table');
$table->set_additional_parameters(array ('code' => $code)); $table->set_additional_parameters(array('code' => $code));
$table->set_other_tables(array('usage_table','class_table')); $table->set_other_tables(array('usage_table', 'class_table'));
$table->set_header(0,get_lang('OfficialCode'), true); $table->set_header(0, get_lang('OfficialCode'), true);
if ($is_western_name_order) { if ($is_western_name_order) {
$table->set_header(1,get_lang('FirstName'), true); $table->set_header(1, get_lang('FirstName'), true);
$table->set_header(2,get_lang('LastName'), true); $table->set_header(2, get_lang('LastName'), true);
} else { } else {
$table->set_header(1,get_lang('LastName'), true); $table->set_header(1, get_lang('LastName'), true);
$table->set_header(2,get_lang('FirstName'), true); $table->set_header(2, get_lang('FirstName'), true);
} }
$table->set_header(3,get_lang('Email'), true); $table->set_header(3, get_lang('Email'), true);
$table->set_header(4,get_lang('Status'), true); $table->set_header(4, get_lang('Status'), true);
$table->set_header(5,'', false); $table->set_header(5, '', false);
$table->display(); $table->display();
} else { } else {
echo get_lang('NoUsersInCourse'); echo get_lang('NoUsersInCourse');
} }
$session_list = SessionManager::get_session_by_course($course->code); $session_list = SessionManager::get_session_by_course($course->code);
$url = api_get_path(WEB_CODE_PATH); $url = api_get_path(WEB_CODE_PATH);
if (!empty($session_list)) { if (!empty($session_list)) {
foreach($session_list as &$session) { foreach ($session_list as &$session) {
$session[0] = Display::url($session[0], $url.'admin/resume_session.php?id_session='.$session['id'] ); $session[0] = Display::url($session[0], $url.'admin/resume_session.php?id_session='.$session['id']);
unset($session[1]); unset($session[1]);
} }
echo Display::page_header(get_lang('Sessions')); echo Display::page_header(get_lang('Sessions'));
$table = new SortableTableFromArray($session_list, 0, 20,'user_table'); $table = new SortableTableFromArray($session_list, 0, 20, 'user_table');
$table->display(); $table->display();
} }

@ -302,7 +302,7 @@ class SessionManager
if (!empty($options['order'])) { if (!empty($options['order'])) {
$query .= " ORDER BY ".$options['order']; $query .= " ORDER BY ".$options['order'];
} }
$result = Database::query($query); $result = Database::query($query);
$formatted_sessions = array(); $formatted_sessions = array();
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
@ -488,15 +488,21 @@ class SessionManager
* @return void Nothing, or false on error * @return void Nothing, or false on error
* The parameters is a array to delete sessions * The parameters is a array to delete sessions
**/ **/
public static function delete_session($id_checked,$from_ws = false) { public static function delete_session($id_checked,$from_ws = false)
{
$tbl_session= Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session= Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_course= Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session_rel_course= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_course_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_USER); $tbl_session_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_url_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $tbl_url_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
global $_user; // Extra session fields
if(is_array($id_checked)) { $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
$userId = api_get_user_id();
if (is_array($id_checked)) {
$id_checked = Database::escape_string(implode(',',$id_checked)); $id_checked = Database::escape_string(implode(',',$id_checked));
} else { } else {
$id_checked = intval($id_checked); $id_checked = intval($id_checked);
@ -505,77 +511,20 @@ class SessionManager
if (!api_is_platform_admin() && !$from_ws) { if (!api_is_platform_admin() && !$from_ws) {
$sql = 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_checked; $sql = 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_checked;
$rs = Database::query($sql); $rs = Database::query($sql);
if (Database::result($rs,0,0)!=$_user['user_id']) { if (Database::result($rs, 0, 0) != $userId) {
api_not_allowed(true); api_not_allowed(true);
} }
} }
Database::query("DELETE FROM $tbl_session WHERE id IN($id_checked)"); Database::query("DELETE FROM $tbl_session WHERE id IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session IN($id_checked)"); Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session IN($id_checked)"); Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_user WHERE id_session IN($id_checked)"); Database::query("DELETE FROM $tbl_session_rel_user WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_url_session WHERE session_id IN($id_checked)"); Database::query("DELETE FROM $tbl_url_session WHERE session_id IN($id_checked)");
// delete extra session fields $sql_delete_sfv = "DELETE FROM $t_sfv WHERE session_id = '$id_checked'";
$t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD); Database::query($sql_delete_sfv);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
// Delete extra fields from session where field variable is "SECCION"
$sql = "SELECT t_sfv.field_id FROM $t_sfv t_sfv, $t_sf t_sf WHERE t_sfv.session_id = '$id_checked' AND t_sf.field_variable = 'SECCION' ";
$rs_field = Database::query($sql);
$field_id = 0;
if (Database::num_rows($rs_field) == 1) {
$row_field = Database::fetch_row($rs_field);
$field_id = $row_field[0];
$sql_delete_sfv = "DELETE FROM $t_sfv WHERE session_id = '$id_checked' AND field_id = '$field_id'";
$rs_delete_sfv = Database::query($sql_delete_sfv);
}
$sql = "SELECT * FROM $t_sfv WHERE field_id = '$field_id' ";
$rs_field_id = Database::query($sql);
if (Database::num_rows($rs_field_id) == 0) {
$sql_delete_sf = "DELETE FROM $t_sf WHERE id = '$field_id'";
$rs_delete_sf = Database::query($sql_delete_sf);
}
/*
$sql = "SELECT distinct field_id FROM $t_sfv WHERE session_id = '$id_checked'";
$res_field_ids = @Database::query($sql);
if (Database::num_rows($res_field_ids) > 0) {
while($row_field_id = Database::fetch_row($res_field_ids)){
$field_ids[] = $row_field_id[0];
}
}
//delete from table_session_field_value from a given session id
$sql_session_field_value = "DELETE FROM $t_sfv WHERE session_id = '$id_checked'";
@Database::query($sql_session_field_value);
$sql = "SELECT distinct field_id FROM $t_sfv";
$res_field_all_ids = @Database::query($sql);
if (Database::num_rows($res_field_all_ids) > 0) {
while($row_field_all_id = Database::fetch_row($res_field_all_ids)){
$field_all_ids[] = $row_field_all_id[0];
}
}
if (count($field_ids) > 0 && count($field_all_ids) > 0) {
foreach($field_ids as $field_id) {
// check if field id is used into table field value
if (in_array($field_id,$field_all_ids)) {
continue;
} else {
$sql_session_field = "DELETE FROM $t_sf WHERE id = '$field_id'";
Database::query($sql_session_field);
}
}
}
*/
// Add event to system log // Add event to system log
$user_id = api_get_user_id(); $user_id = api_get_user_id();
event_system(LOG_SESSION_DELETE, LOG_SESSION_ID, $id_checked, api_get_utc_datetime(), $user_id); event_system(LOG_SESSION_DELETE, LOG_SESSION_ID, $id_checked, api_get_utc_datetime(), $user_id);

Loading…
Cancel
Save