some changues to auto-register mechanism for courses #5376

skala
Carlos Vargas 16 years ago
parent 8962e15d51
commit af61e24258
  1. 43
      main/admin/course_edit.php
  2. BIN
      main/img/klipper.png
  3. 60
      main/inc/lib/usermanager.lib.php
  4. 2
      main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql

@ -29,6 +29,8 @@ $tool_name = get_lang('ModifyCourseInfo');
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ("url" => "course_list.php", "name" => get_lang('AdminCourses'));
define('USER_FIELD_TYPE_CHECKBOX', 10);
/*
-----------------------------------------------------------
Libraries
@ -167,6 +169,26 @@ $form->addElement('radio', 'unsubscribe', null, get_lang('NotAllowedToUnsubscrib
$form->addElement('text','disk_quota',get_lang('CourseQuota'));
$form->addRule('disk_quota', get_lang('ThisFieldIsRequired'),'required');
$form->addRule('disk_quota',get_lang('ThisFieldShouldBeNumeric'),'numeric');
$list_course_extra_field = CourseManager::get_course_extra_field_list($course_code);
foreach($list_course_extra_field as $extra_field){
switch($extra_field['field_type']){
/* case USER_FIELD_TYPE_TEXT:
case USER_FIELD_TYPE_TEXTAREA:
case USER_FIELD_TYPE_RADIO: */
case USER_FIELD_TYPE_CHECKBOX:
$checked = (array_key_exists('extra_field_value', $extra_field) && $extra_field['extra_field_value'] == 1)? array('checked'=>'checked'): '';
$form->addElement('hidden', '_extra_'.$extra_field['field_variable'], 0);
$field_display_text=$extra_field['field_display_text'];
$form->addElement('checkbox', 'extra_'.$extra_field['field_variable'],get_lang($field_display_text) , get_lang($extra_field['field_default_value']), $checked);
break;
/* case USER_FIELD_TYPE_SELECT_MULTIPLE:
case USER_FIELD_TYPE_DATE:
case USER_FIELD_TYPE_DATETIME:
case USER_FIELD_TYPE_DOUBLE_SELECT:
case USER_FIELD_TYPE_DIVIDER: */
}
}
$form->addElement('style_submit_button', 'button', get_lang('ModifyCourseInfo'),'onclick="valide()"; class="save"');
// Set some default values
@ -196,7 +218,17 @@ if( $form->validate())
}
$warn = substr($warn,0,-1);
}
// an extra field
$extras = array();
foreach($course as $key => $value) {
if(substr($key,0,6)=='extra_') {
$extras[substr($key,6)] = $value;
}
if(substr($key,0,7)=='_extra_') {
if(!array_key_exists(substr($key,7), $extras)) $extras[substr($key,7)] = $value;
}
}
$tutor_id = $course['tutor_name'];
$tutor_name=$platform_teachers[$tutor_id];
@ -228,7 +260,14 @@ if( $form->validate())
unsubscribe='".Database::escape_string($unsubscribe)."'
WHERE code='".Database::escape_string($course_code)."'";
Database::query($sql, __FILE__, __LINE__);
//update the extra fields
if(count($extras) > 0){
foreach($extras as $key => $value) {
CourseManager::update_course_extra_field_value($course_code, $key, $value);
}
}
//Delete only teacher relations that doesn't match the selected teachers
$cond='';
if(count($teachers)>0){

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -2746,4 +2746,64 @@ class UserManager
'</span>';
echo '</div>';
}
/**
* Gives a list of course auto-register (field special_course)
* @return array list of course
* @author Jhon Hinojosa <jhon.hinojosa@dokeos.com>
* @since Dokeos 1.8.6.2
*/
public static function get_special_course_list() {
// Database Table Definitions
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_course_field = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD);
$tbl_course_field_value = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
$tbl_user_course_category = Database :: get_user_personal_table(TABLE_USER_COURSE_CATEGORY);
//we filter the courses from the URL
$join_access_url=$where_access_url='';
global $_configuration;
if ($_configuration['multiple_access_urls']==true) {
$access_url_id = api_get_current_access_url_id();
if($access_url_id!=-1) {
$tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$join_access_url= "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.course_code= course.code";
$where_access_url=" AND access_url_id = $access_url_id ";
}
}
// Filter special courses
$sql_special_course = "SELECT course_code FROM $tbl_course_field_value tcfv INNER JOIN $tbl_course_field tcf ON " .
" tcfv.field_id = tcf.id WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 ";
$special_course_result = Database::query($sql_special_course, __FILE__, __LINE__);
$code_special_courses = '';
if(Database::num_rows($special_course_result)>0) {
$special_course_list = array();
while ($result_row = Database::fetch_array($special_course_result)) {
$special_course_list[] = '"'.$result_row['course_code'].'"';
}
$code_special_courses = ' course.code IN ('.join($special_course_list, ',').') ';
}
// variable initialisation
$course_list_sql = '';
$course_list = array();
if(!empty($code_special_courses)){
$course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
FROM ".$tbl_course_user." course_rel_user
LEFT JOIN ".$tbl_course." course
ON course.code = course_rel_user.course_code
LEFT JOIN ".$tbl_user_course_category." user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
$join_access_url
WHERE $code_special_courses $where_access_url
GROUP BY course.code
ORDER BY user_course_category.sort,course.title,course_rel_user.sort ASC";
$course_list_sql_result = api_sql_query($course_list_sql, __FILE__, __LINE__);
while ($result_row = Database::fetch_array($course_list_sql_result)) {
$course_list[] = $result_row;
}
}
return $course_list;
}
}

@ -64,6 +64,8 @@ INSERT INTO user_field (field_type, field_variable, field_display_text, field_vi
UPDATE TABLE settings_current SET selected_value = '1.8.6.2.9070' WHERE variable = 'dokeos_database_version';
INSERT INTO course_field (field_type, field_variable, field_display_text, field_default_value, field_visible, field_changeable) values (10, 'special_course','SpecialCourse', 'Yes', 1 , 1);
-- xxSTATSxx
ALTER TABLE track_e_exercices ADD COLUMN expired_time_control datetime NOT NULL DEFAULT '0000-00-00 00:00:00';
ALTER TABLE track_e_online ADD INDEX (course);

Loading…
Cancel
Save