|
@@ -78,17 +78,35 @@ if (!api_is_platform_admin()) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function search_courses($needle)
|
|
|
+function search_courses($needle,$type)
|
|
|
{
|
|
|
global $tbl_course, $tbl_session_rel_course, $id_session;
|
|
|
|
|
|
$xajax_response = new XajaxResponse();
|
|
|
- $return = '';
|
|
|
- if(!empty($needle)) {
|
|
|
+ $return = '';
|
|
|
+ if(!empty($needle) && !empty($type)) {
|
|
|
// xajax send utf8 datas... datas in db can be non-utf8 datas
|
|
|
$charset = api_get_setting('platform_charset');
|
|
|
$needle = mb_convert_encoding($needle, $charset, 'utf-8');
|
|
|
|
|
|
+ $cond_course_code = '';
|
|
|
+ if (!empty($id_session)) {
|
|
|
+ $id_session = Database::escape_string($id_session);
|
|
|
+ // check course_code from session_rel_course table
|
|
|
+ $sql = 'SELECT course_code FROM '.$tbl_session_rel_course.' WHERE id_session ="'.(int)$id_session.'"';
|
|
|
+ $res = api_sql_query($sql,__FILE__,__LINE__);
|
|
|
+ $course_codes = '';
|
|
|
+ if (Database::num_rows($res) > 0) {
|
|
|
+ while ($row = Database::fetch_row($res)) {
|
|
|
+ $course_codes .= '\''.$row[0].'\',';
|
|
|
+ }
|
|
|
+ $course_codes = substr($course_codes,0,(strlen($course_codes)-1));
|
|
|
+
|
|
|
+ $cond_course_code = ' AND course.code NOT IN('.$course_codes.') ';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($type=='single') {
|
|
|
// search users where username or firstname or lastname begins likes $needle
|
|
|
$sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
|
|
|
FROM '.$tbl_course.' course
|
|
@@ -97,33 +115,63 @@ function search_courses($needle)
|
|
|
AND session_rel_course.id_session = '.intval($id_session).'
|
|
|
WHERE course.visual_code LIKE "'.$needle.'%"
|
|
|
OR course.title LIKE "'.$needle.'%"';
|
|
|
+ } else {
|
|
|
+
|
|
|
+ $sql = 'SELECT course.code, course.visual_code, course.title
|
|
|
+ FROM '.$tbl_course.' course
|
|
|
+ WHERE course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';
|
|
|
+ }
|
|
|
|
|
|
- global $_configuration;
|
|
|
+ global $_configuration;
|
|
|
if ($_configuration['multiple_access_urls']==true) {
|
|
|
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
|
|
|
$access_url_id = api_get_current_access_url_id();
|
|
|
if ($access_url_id != -1){
|
|
|
- $sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
|
|
|
- FROM '.$tbl_course.' course
|
|
|
- LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
|
|
|
- ON course.code = session_rel_course.course_code
|
|
|
- AND session_rel_course.id_session = '.intval($id_session).'
|
|
|
- INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code)
|
|
|
- WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%"
|
|
|
- OR course.title LIKE "'.$needle.'%" )';
|
|
|
+
|
|
|
+ if ($type=='single') {
|
|
|
+ $sql = 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
|
|
|
+ FROM '.$tbl_course.' course
|
|
|
+ LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
|
|
|
+ ON course.code = session_rel_course.course_code
|
|
|
+ AND session_rel_course.id_session = '.intval($id_session).'
|
|
|
+ INNER JOIN '.$tbl_course_rel_access_url.' url_course ON (url_course.course_code=course.code)
|
|
|
+ WHERE access_url_id = '.$access_url_id.' AND (course.visual_code LIKE "'.$needle.'%"
|
|
|
+ OR course.title LIKE "'.$needle.'%" )';
|
|
|
+ } else {
|
|
|
+ $sql = 'SELECT course.code, course.visual_code, course.title
|
|
|
+ FROM '.$tbl_course.' course, '.$tbl_course_rel_access_url.' url_course
|
|
|
+ WHERE url_course.course_code=course.code AND access_url_id = '.$access_url_id.'
|
|
|
+ AND course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.' ORDER BY course.code ';
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
+ $rs = api_sql_query($sql, __FILE__, __LINE__);
|
|
|
$course_list = array();
|
|
|
- while($course = Database :: fetch_array($rs)) {
|
|
|
- $course_list[] = $course['code'];
|
|
|
- $course_title=str_replace("'","\'",$course_title);
|
|
|
- $return .= '<a href="#" onclick="add_course_to_session(\''.$course['code'].'\',\''.$course_title.' ('.$course['visual_code'].')'.'\')">'.$course['title'].' ('.$course['visual_code'].')</a><br />';
|
|
|
+ if ($type=='single') {
|
|
|
+
|
|
|
+ while($course = Database :: fetch_array($rs)) {
|
|
|
+ $course_list[] = $course['code'];
|
|
|
+ $course_title=str_replace("'","\'",$course_title);
|
|
|
+ $return .= '<a href="#" onclick="add_course_to_session(\''.$course['code'].'\',\''.$course_title.' ('.$course['visual_code'].')'.'\')">'.$course['title'].' ('.$course['visual_code'].')</a><br />';
|
|
|
+ }
|
|
|
+
|
|
|
+ $xajax_response -> addAssign('ajax_list_courses_single','innerHTML',utf8_encode($return));
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ $return .= '<select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;">';
|
|
|
+ while($course = Database :: fetch_array($rs)) {
|
|
|
+ $course_list[] = $course['code'];
|
|
|
+ $course_title=str_replace("'","\'",$course_title);
|
|
|
+ $return .= '<option value="'.$course['code'].'">'.$course['title'].' ('.$course['visual_code'].')</option>';
|
|
|
+ }
|
|
|
+ $return .= '</select>';
|
|
|
+
|
|
|
+ $xajax_response -> addAssign('ajax_list_courses_multiple','innerHTML',utf8_encode($return));
|
|
|
}
|
|
|
- }
|
|
|
- $_SESSION['course_list'] = $course_list;
|
|
|
- $xajax_response -> addAssign('ajax_list_courses','innerHTML',utf8_encode($return));
|
|
|
+ }
|
|
|
+ $_SESSION['course_list'] = $course_list;
|
|
|
return $xajax_response;
|
|
|
}
|
|
|
$xajax -> processRequests();
|
|
@@ -134,7 +182,7 @@ $htmlHeadXtra[] = '
|
|
|
function add_course_to_session (code, content) {
|
|
|
|
|
|
document.getElementById("course_to_add").value = "";
|
|
|
- document.getElementById("ajax_list_courses").innerHTML = "";
|
|
|
+ document.getElementById("ajax_list_courses_single").innerHTML = "";
|
|
|
|
|
|
destination = document.getElementById("destination");
|
|
|
|
|
@@ -355,26 +403,43 @@ if(!empty($errorMsg))
|
|
|
<td width="10%"> </td>
|
|
|
<td align="center" width="45%"><b><?php echo get_lang('CourseListInSession') ?> :</b></td>
|
|
|
</tr>
|
|
|
+
|
|
|
+<?php if($add_type == 'multiple') { ?>
|
|
|
+<tr><td width="45%" align="center">
|
|
|
+ <?php echo get_lang('FirstLetterCourse'); ?> :
|
|
|
+ <select name="firstLetterCourse" onchange = "xajax_search_courses(this.value,'multiple')">
|
|
|
+ <option value="%">--</option>
|
|
|
+ <?php
|
|
|
+ echo Display :: get_alphabet_options();
|
|
|
+ echo Display :: get_numeric_options(0,9,'');
|
|
|
+ ?>
|
|
|
+ </select>
|
|
|
+</td>
|
|
|
+<td> </td></tr>
|
|
|
+<?php } ?>
|
|
|
+
|
|
|
<tr>
|
|
|
<td width="45%" align="center">
|
|
|
|
|
|
<?php
|
|
|
-if($ajax_search){
|
|
|
+if(!($add_type == 'multiple')){
|
|
|
?>
|
|
|
- <input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value)" />
|
|
|
- <div id="ajax_list_courses"></div>
|
|
|
+ <input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value,'single')" />
|
|
|
+ <div id="ajax_list_courses_single"></div>
|
|
|
<?php
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ?> <select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;"> <?php
|
|
|
+ ?>
|
|
|
+ <div id="ajax_list_courses_multiple">
|
|
|
+ <select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;"> <?php
|
|
|
foreach($nosessionCourses as $enreg)
|
|
|
{
|
|
|
?>
|
|
|
<option value="<?php echo $enreg['code']; ?>" <?php if(in_array($enreg['code'],$CourseList)) echo 'selected="selected"'; ?>><?php echo $enreg['title'].' ('.$enreg['visual_code'].')'; ?></option>
|
|
|
<?php
|
|
|
}
|
|
|
- ?> </select> <?php
|
|
|
+ ?> </select></div> <?php
|
|
|
}
|
|
|
unset($nosessionCourses);
|
|
|
?>
|