From af61e24258f697f9225974bc28fe0d319dc1656f Mon Sep 17 00:00:00 2001 From: Carlos Vargas Date: Fri, 27 Nov 2009 14:56:33 -0500 Subject: [PATCH] some changues to auto-register mechanism for courses #5376 --- main/admin/course_edit.php | 43 ++++++++++++- main/img/klipper.png | Bin 0 -> 1126 bytes main/inc/lib/usermanager.lib.php | 60 ++++++++++++++++++ .../migrate-db-1.8.6.1-1.8.6.2-pre.sql | 2 + 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 main/img/klipper.png diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php index e2f54478f3..3d82bdba44 100644 --- a/main/admin/course_edit.php +++ b/main/admin/course_edit.php @@ -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){ diff --git a/main/img/klipper.png b/main/img/klipper.png new file mode 100644 index 0000000000000000000000000000000000000000..5f517de46471ef254c94ed3174ada2cf3ab5ad35 GIT binary patch literal 1126 zcmV-s1eyDZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXW5 z77!v-Q^?i;00ZVpL_t(I%k7ihi&SMC$3M?`o7wiI9oN-%T{Xzp)kH8Amr62%(t=Pz zBB^eIq$`Wz3u5n#s!PE24M0!M(;ZQ@u0#}GJ< zz*%D9m;!sO!NsBd2Qv#CYhl>}`(J%x_j~tVJh#SjY+^A>#9}s%V+ki_VLKL%V_`YX z-Lfo9$HK5p3_N;|eR$m#tPM2L;+3aHMxMR=BvF(c)!LiWI`r?B^0ij-mi!h)vY@L+ z_eHC0`dTh-hyGRl2;pYIFM@CYDAq$hJzJoo&AQ7ut-(Eak{1tbWnjxDNOX$j7AtN9 z%r1hfkgmGWRn9%qT(baNNLOmGqA~}n0+9qjDM_Tk4{u$G#`8Q1`64r;C)hBwnOz$+sc()$Tb#p> zZF)WnXMkgi7gt=MngdmZPy&Lu5isqB$PhH(NyX?7mx=lFxYP4o{p4eG5Ky){>FiAq z)@nG=4q)5@=gJLy>iH%(k`PG}am8H8#|uF!z_fW}Xa`eWdzo4H41diAjLk!R>uQ3H z4rA$3<_er#^!Ui|u=;$n$RhJAQ8fsC5C+|C5xHUmPc^M@eKSP}|l=xFOA_2f}X zgWn_CJ+$;#))QN?z%v$>bd@w=6|EX*RR^sw3Gpg<%2HDcAP8aSdf2xUp4$zBgFSqG zApvF_FzH=l_rE_fBJKd|v^Ev^<)+VCVHyzwoh~=iRitXRqi-qnCcsm$WxYZBs&!nM zalnYvw#4e_5OlSGbCR@-3~1y)xu7G2_SwFCl3#vJ;;E(;4F&a}DFrI8k=lKHFW38jzgHv@DfR3%g-r0W*(HQV^&?`2>r ztlR5$`zOIKKqK3%oRTav%k1qt&*{{To{9 zR)8B9F342R1G&{k?;N?wlAa#VyO$@5e_r~hG&bd`v5B98{-+PW^S084S;|(zQf78` sCUq^DO;072mrWARU3+2Ap-F&$0SN~ge1LHXmH+?%07*qoM6N<$f)p47D*ylh literal 0 HcmV?d00001 diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 03be52a1fc..a007df03f4 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -2746,4 +2746,64 @@ class UserManager ''; echo ''; } + /** + * Gives a list of course auto-register (field special_course) + * @return array list of course + * @author Jhon Hinojosa + * @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; + } } diff --git a/main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql b/main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql index 3fa1362725..87958395fd 100755 --- a/main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql +++ b/main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql @@ -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);