manage_special_options.php from pointcarre at Krugle
Show manage_special_options.php syntax highlighted
<?php // $Id: manage_special_options.php 404 2006-09-20 09:28:28Z evie_em $
/*
==============================================================================
Dokeos - elearning and course management software
Pointcarre - variant of Dokeos
Copyright (c) Roan Embrechts
For a full list of contributors, see "credits.txt".
The full license can be read in "license.txt".
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
See the GNU General Public License for more details.
http://pointcarre.sourceforge.net/
http://www.dokeos.com/
==============================================================================
*/
/**
==============================================================================
* Script with several special functions to deal with
* - courses that are no longer taught: renaming, removing,
* moving into special category...
* - ...
*
* @package dokeos.admin
==============================================================================
*/
/*
==============================================================================
INIT SECTION
==============================================================================
*/
$langFile='admin';
$cidReset=true;
include('../inc/claro_init_global.inc.php');
api_protect_admin_script();
/*
-----------------------------------------------------------
Libraries
-----------------------------------------------------------
*/
require_once(api_get_configuration_path()."/add_course.conf.php");
require_once(api_get_library_path()."/add_course.lib.inc.php");
require_once(api_get_library_path()."/fileManage.lib.php");
require_once(api_get_library_path()."/course.lib.php");
require_once('../curriculum/curriculum_database.lib.php');
require_once('../curriculum/curriculum_logic.lib.php');
/*
-----------------------------------------------------------
Constants
-----------------------------------------------------------
*/
define ("ACADEMIC_YEAR_2003_2004", "20032004");
define ("ACADEMIC_YEAR_2004_2005", "20042005");
define ("ACADEMIC_YEAR_2005_2006", "20052006");
define ("SEE_OLD_COURSE_LIST", "see_old_course_list");
define ("CHANGE_COURSE_TITLE", "change_course_title");
define ("SEE_TEACHER_WITH_OLD_COURSE_LIST", "display_teachers_with_old_courses_list");
define ("EXTRA_TEXT_FOR_OLD_COURSES", "(bestaat niet meer in curriculum van 2006-2007)");
define ("DISPLAY_CONFLICTING_COURSES", "display_conflicting_courses");
define ("DISPLAY_UNCONNECTED_DATABASES", "display_unconnected_databases");
define ("DISPLAY_UNCONNECTED_DIRECTORIES", "display_unconnected_directories");
/*
-----------------------------------------------------------
Header
-----------------------------------------------------------
*/
$tool_name = get_lang('ManageSpecialCasesOfficialCurriculum');
$interbredcrump[] = array ("url" => "index.php", "name" => get_lang('AdministrationTools'));
Display::display_header($tool_name);
api_display_tool_title($tool_name);
/*
==============================================================================
LOGIC FUNCTIONS
==============================================================================
*/
function get_previous_year_course_list($year_parameter)
{
$official_course_table = CurriculumDatabase::get_vub_course_table();
$get_old_courses_query = "SELECT * FROM $official_course_table WHERE oojaar='$year_parameter'";
$sql_result = api_sql_query($get_old_courses_query, __FILE__, __LINE__);
while ($result = mysql_fetch_array($sql_result))
{
$old_course_list[] = $result;
}
return $old_course_list;
}
function course_exists_current_year($official_course_code)
{
$official_course_table = CurriculumDatabase::get_vub_course_table();
$current_year_condition = CurriculumDatabase::get_years_sql_condition("oojaar");
$get_old_courses_query = "SELECT * FROM $official_course_table WHERE oocode='$official_course_code' AND $current_year_condition";
$sql_result = api_sql_query($get_old_courses_query, __FILE__, __LINE__);
$result = mysql_num_rows($sql_result);
if ($result > 0) return true;
else return false;
}
/*
==============================================================================
DISPLAY FUNCTIONS
==============================================================================
*/
function display_main_options()
{
echo 'What do you want to do?';
echo '<ul>';
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?action=".SEE_OLD_COURSE_LIST."\">Display a list of old courses that are no longer used in 2006-2007.</a></li>";
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?action=".SEE_TEACHER_WITH_OLD_COURSE_LIST."\">View list of teachers with old courses</a></li>";
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?action=".DISPLAY_CONFLICTING_COURSES."\">Display official courses with the same fake code - this will cause problems.</a></li>";
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?action=".DISPLAY_UNCONNECTED_DATABASES."\">Display VUB databases that are not connected to a course.</a></li>";
echo "<li><a href=\"".$_SERVER['PHP_SELF']."?action=".DISPLAY_UNCONNECTED_DIRECTORIES."\">Display VUB* directories that are not connected to a course <i>(not implemented yet)</i>.</a></li>";
echo '</ul>';
}
function display_deprecated_course_list($year_parameter)
{
$previous_year_course_list = get_previous_year_course_list($year_parameter);
echo "<hr><p><strong>Courses of old academic year $year_parameter</strong></p>";
foreach ($previous_year_course_list as $this_course)
{
$official_course_code = $this_course['oocode'];
$course_still_exists = course_exists_current_year($official_course_code);
if ($course_still_exists)
{
//do nothing
//echo " - still exists, ok";
}
else
{
$course_in_dokeos = CurriculumDatabase::is_course_created($official_course_code);
if ($course_in_dokeos)
{
$course_info = CurriculumDatabase::get_course_info($official_course_code);
$course_title = $course_info['title'];
if ( stristr($course_title, EXTRA_TEXT_FOR_OLD_COURSES) == false)
{
/*echo '<p>' . $course_info['title'] . ' (' . $course_info['visual_code'] . ')';
echo " does not exist in curriculum of 2006-2007 but still exists in Pointcarre. ";
echo '<br/><a href="'.$_SERVER['PHP_SELF'].'?action='.CHANGE_COURSE_TITLE.'&official_course_code='.$official_course_code . '">change course title, add <i>'.EXTRA_TEXT_FOR_OLD_COURSES.'</i></a>';
echo "</p>";*/
//20062007 start: auto-rename titles
echo $course_info['title'];
change_course_title_of_deprecated_course($official_course_code);
}
else
{
echo '<p><i>' . $course_info['title'] . '</i> (' . $course_info['visual_code'] . ')';
echo "</p>";
}
}
}
}
}
function change_course_title_of_deprecated_course($official_course_code)
{
$course_info = CurriculumDatabase::get_course_info($official_course_code);
$system_code = $course_info['code'];
$visual_code = $course_info['visual_code'];
$old_title = $course_info['title'];
$new_title = $old_title . ' ' . EXTRA_TEXT_FOR_OLD_COURSES;
$new_title = addslashes($new_title);
Database::update_course_title($system_code, $new_title);
echo "<p>Changed title of course $visual_code from <i>$old_title</i> to <i>$new_title</i>.";
echo "</p>";
}
function display_teacher_with_old_course_list()
{
echo "This list gives you the ability to create a personal course category called <i>Cursussen van vorige academiejaren</i>) for a teacher.";
$minimum = 0;
$maximum = 1500;
$official_teacher_list = CurriculumDatabase::get_official_teacher_info_list($minimum, $maximum);
for ($i = 0; $i < count($official_teacher_list); $i++)
{
$teacher_code = $official_teacher_list[$i][0];
$personnel_code = $official_teacher_list[$i][1];
$last_name = $official_teacher_list[$i][2];
$first_name = $official_teacher_list[$i][3];
$teacher_user_id = CurriculumDatabase::get_user_id_number_from_personnel_code($personnel_code);
if ( isset($teacher_user_id) && $teacher_user_id ) $teacher_exists = true;
else continue; //teacher does not exist in Pointcarre -> do not check
$number_courses = CurriculumDatabase::get_number_of_courses_of_teacher($teacher_code);
if ($number_courses <= 0) continue; //teachers without courses -> nothing to organise
//locating old courses
$course_list_of_teacher = CurriculumDatabase::get_current_courses_of_teacher($teacher_code);
//output
echo "<p>";
//one line of info about the teacher
echo $last_name . ', ' . $first_name . ' (' . $teacher_code . ')';
echo "</p>";
}
}
function get_distinct_course_visual_code_list()
{
$course_table = Database::get_main_table(MAIN_COURSE_TABLE);
$sql_query = "SELECT DISTINCT(visual_code) FROM $course_table";
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
while ($result = mysql_fetch_array($sql_result))
{
$result_list[] = $result['visual_code'] . '<br/>';
}
return $result_list;
}
function display_conflicting_courses()
{
echo "<h2>Courses with the same virtual course</h2>";
$course_table = Database::get_main_table(MAIN_COURSE_TABLE);
$visual_course_code_list = get_distinct_course_visual_code_list();
foreach ($visual_course_code_list as $visual_course_code)
{
$sql_query = "SELECT * FROM $course_table WHERE visual_code='$visual_course_code'";
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
if (mysql_num_rows($sql_result) > 1)
{
echo "<p>Problems with visual code $visual_course_code.</p>";
}
}
}
function display_unconnected_databases()
{
echo "<h2>Databases that are not connected to a course</h2>";
$course_table = Database::get_main_table(MAIN_COURSE_TABLE);
$database_sql_query = "SHOW DATABASES LIKE 'VUB%'";
$database_sql_result = api_sql_query($database_sql_query, __FILE__, __LINE__);
$database_problems = 0;
while ($database_result = mysql_fetch_array($database_sql_result))
{
$database_name = $database_result['Database (VUB%)'];
//echo "<p>$database_name</p>";
$used_sql_query = "SELECT * FROM $course_table WHERE db_name='$database_name'";
$used_sql_result = api_sql_query($used_sql_query, __FILE__, __LINE__);
if (mysql_num_rows($used_sql_result) <= 0)
{
$database_problems++;
echo "<p>The database $database_name is not used in any course.</p>";
}
}
echo "$database_problems databases found that are not linked to a course.";
}
/*
==============================================================================
MAIN CODE
==============================================================================
*/
$action = $_REQUEST['action'];
$official_course_code = $_REQUEST['official_course_code'];
display_main_options();
if ($action == SEE_OLD_COURSE_LIST)
{
//display_deprecated_course_list(ACADEMIC_YEAR_2003_2004);
//display_deprecated_course_list(ACADEMIC_YEAR_2004_2005);
display_deprecated_course_list(ACADEMIC_YEAR_2005_2006);
}
else if ($action == CHANGE_COURSE_TITLE)
{
change_course_title_of_deprecated_course($official_course_code);
display_deprecated_course_list(ACADEMIC_YEAR_2005_2006);
}
else if ($action == SEE_TEACHER_WITH_OLD_COURSE_LIST)
{
display_teacher_with_old_course_list();
}
else if ($action == DISPLAY_CONFLICTING_COURSES)
{
display_conflicting_courses();
}
else if ($action == DISPLAY_UNCONNECTED_DATABASES)
{
display_unconnected_databases();
}
/*
==============================================================================
FOOTER
==============================================================================
*/
Display::display_footer();
?>
See more files for this project here