Code Search for Developers
 
 
  

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

pointcarre

Pointcarre - a learning management system based on the Dokeos community releases. No fork, but containing locally developed extensions, features not (yet) in the standard release, integrated plugins...

Project homepage: http://sourceforge.net/projects/pointcarre
Programming language(s): PHP
License: other

  nightly_update/
    nightly_update.php
  class_add.php
  class_edit.php
  class_information.php
  class_list.php
  configure_homepage.php
  course_add.php
  course_category.php
  course_create_content.php
  course_edit.php
  course_information.php
  course_list.php
  course_virtual.php
  curriculum_complete_update.php
  exemple.csv
  exemple.xml
  index.php
  languages.php
  manage_course_tools.php
  manage_official_classes.php
  manage_official_communities.php
  manage_official_personnel.php
  manage_official_students.php
  manage_official_teachers.php
  manage_special_options.php
  official_update_titles_teachers.php
  settings.php
  statistics.php
  subscribe_class2course.php
  subscribe_user2class.php
  subscribe_user2course.php
  system_announcements.php
  user_add.php
  user_edit.php
  user_export.php
  user_import.php
  user_information.php
  user_list.php
  veco_manage_official_data.php