[svn r18083] Update the access_url funcionality: Adding the UI to edit the course - url relationship requires testing. Courses and users are now filtered by access_url FS#3462

skala
Julio Montoya 17 years ago
parent 96733b4df6
commit 169ee38402
  1. 199
      main/admin/access_url_add_courses_to_url.php
  2. 78
      main/admin/access_url_add_users_to_url.php
  3. 18
      main/admin/access_url_edit.php
  4. 467
      main/admin/access_url_edit_courses_to_url.php
  5. 68
      main/admin/access_url_edit_users_to_url.php
  6. 61
      main/admin/access_urls.php
  7. 10
      main/inc/lib/add_course.lib.inc.php
  8. 36
      main/inc/lib/course.lib.php
  9. 3
      main/inc/lib/database.lib.php
  10. 15
      main/inc/lib/display.lib.php
  11. 199
      main/inc/lib/urlmanager.lib.php
  12. 74
      main/inc/lib/usermanager.lib.php

@ -0,0 +1,199 @@
<?php
/*
==============================================================================
Dokeos - elearning and course management software
Copyright (c) 2009 Dokeos SPRL
Copyright (c) 2009 Julio Montoya Armas <gugli100@gmail.com>
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.
Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
Mail: info@dokeos.com
==============================================================================
*/
/**
==============================================================================
* This script allows platform admins to add users to urls.
* It displays a list of users and a list of courses;
* you can select multiple users and courses and then click on
* @package dokeos.admin
==============================================================================
*/
// name of the language file that needs to be included
$language_file = 'admin';
$cidReset = true;
require ('../inc/global.inc.php');
$this_section=SECTION_PLATFORM_ADMIN;
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
api_protect_admin_script();
if (!$_configuration['multiple_access_urls'])
header('Location: index.php');
/*
-----------------------------------------------------------
Global constants and variables
-----------------------------------------------------------
*/
$users = $_GET['users'];
$form_sent = 0;
$first_letter_course = '';
$courses = array ();
$url_list = array();
$users = array();
$tbl_access_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_access_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
/*
-----------------------------------------------------------
Header
-----------------------------------------------------------
*/
$tool_name = get_lang('AddCoursesToURL');
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ('url' => 'access_urls.php', 'name' => get_lang('MultipleAccessURLs'));
/*
==============================================================================
MAIN CODE
==============================================================================
*/
Display :: display_header($tool_name);
echo '<div class="actions" style="height:22px;">';
echo '<div style="float:right;">
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_edit_courses_to_url.php">'.Display::return_icon('course_del.gif',get_lang('AddUserToURL'),'').get_lang('EditCoursesToURL').'</a>
</div><br />';
echo '</div>';
api_display_tool_title($tool_name);
if ($_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$courses = is_array($_POST['course_list']) ? $_POST['course_list'] : array() ;
$url_list = is_array($_POST['url_list']) ? $_POST['url_list'] : array() ;
$first_letter_course = $_POST['first_letter_course'];
foreach($users as $key => $value) {
$users[$key] = intval($value);
}
if ($form_sent == 1) {
if ( count($courses) == 0 || count($url_list) == 0) {
Display :: display_error_message(get_lang('AtLeastOneCourseAndOneURL'));
//header('Location: access_urls.php?action=show_message&message='.get_lang('AtLeastOneUserAndOneURL'));
} else {
UrlManager::add_courses_to_urls($courses,$url_list);
Display :: display_confirmation_message(get_lang('CourseBelongURL'));
//header('Location: access_urls.php?action=show_message&message='.get_lang('UsersBelongURL'));
}
}
}
/*
-----------------------------------------------------------
Display GUI
-----------------------------------------------------------
*/
if(empty($first_letter_user))
{
$sql = "SELECT count(*) as num_courses FROM $tbl_course";
$result = api_sql_query($sql, __FILE__, __LINE__);
$num_row = Database::fetch_array($result);
if($num_row['num_courses']>1000)
{//if there are too much num_courses to gracefully handle with the HTML select list,
// assign a default filter on users names
$first_letter_user = 'A';
}
unset($result);
}
$sql = "SELECT code, title FROM $tbl_course
WHERE title LIKE '".$first_letter_course."%' OR title LIKE '".strtolower($first_letter_course)."%'
ORDER BY title DESC ";
$result = api_sql_query($sql, __FILE__, __LINE__);
$db_courses = api_store_result($result);
unset($result);
$sql = "SELECT id, url FROM $tbl_access_url WHERE active=1 ORDER BY url";
$result = api_sql_query($sql, __FILE__, __LINE__);
$db_urls = api_store_result($result);
unset($result);
?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;">
<input type="hidden" name="form_sent" value="1"/>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td width="40%" align="center">
<b><?php echo get_lang('CourseList'); ?></b>
<br/><br/>
<?php echo get_lang('FirstLetterCourse'); ?> :
<select name="first_letter_course" onchange="javascript:document.formulaire.form_sent.value='2'; document.formulaire.submit();">
<option value="">--</option>
<?php
echo Display :: get_alphabet_options($first_letter_course);
echo Display :: get_numeric_options(0,9,$first_letter_course);
?>
</select>
</td>
<td width="20%">&nbsp;</td>
<td width="40%" align="center">
<b><?php echo get_lang('URLList'); ?> :</b>
</td>
</tr>
<tr>
<td width="40%" align="center">
<select name="course_list[]" multiple="multiple" size="20" style="width:230px;">
<?php
foreach ($db_courses as $course) {
?>
<option value="<?php echo $course['code']; ?>" <?php if(in_array($course['code'],$courses)) echo 'selected="selected"'; ?>><?php echo $course['title'].' ('.$course['code'].')'; ?></option>
<?php
}
?>
</select>
</td>
<td width="20%" valign="middle" align="center">
<input type="submit" value="<?php echo get_lang('AddCoursesToThatURL'); ?> &gt;&gt;"/>
</td>
<td width="40%" align="center">
<select name="url_list[]" multiple="multiple" size="20" style="width:230px;">
<?php
foreach ($db_urls as $url_obj) {
?>
<option value="<?php echo $url_obj['id']; ?>" <?php if(in_array($url_obj['id'],$url_list)) echo 'selected="selected"'; ?>><?php echo $url_obj['url']; ?></option>
<?php
}
?>
</select>
</td>
</tr>
</table>
</form>
<?php
/*
==============================================================================
FOOTER
==============================================================================
*/
Display :: display_footer();
?>

@ -74,24 +74,23 @@ $interbreadcrumb[] = array ('url' => 'access_urls.php', 'name' => get_lang('Mult
==============================================================================
*/
Display :: display_header($tool_name);
echo '<div class="actions" style="height:22px;">';
echo '<div style="float:right;">
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_edit_users_to_url.php">'.Display::return_icon('del_user_big.gif',get_lang('EditUsersToURL'),'').get_lang('EditUsersToURL').'</a>
</div><br />';
echo '</div>';
/*
-----------------------------------------------------------
React on POSTed request
-----------------------------------------------------------
*/
api_display_tool_title($tool_name);
Display :: display_header($tool_name);
//api_display_tool_title($tool_name);
if ($_POST['formSent']) {
$form_sent = $_POST['formSent'];
$users = is_array($_POST['UserList']) ? $_POST['UserList'] : array() ;
$url_list = is_array($_POST['URLList']) ? $_POST['URLList'] : array() ;
$first_letter_user = $_POST['firstLetterUser'];
//$first_letter_course = $_POST['firstLetterCourse'];
if ($_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$users = is_array($_POST['user_list']) ? $_POST['user_list'] : array() ;
$url_list = is_array($_POST['url_list']) ? $_POST['url_list'] : array() ;
$first_letter_user = $_POST['first_letter_user'];
foreach($users as $key => $value) {
$users[$key] = intval($value);
@ -119,19 +118,20 @@ if ($_POST['formSent']) {
*/
if(empty($first_letter_user))
{
if(empty($first_letter_user)) {
$sql = "SELECT count(*) as nb_users FROM $tbl_user";
$result = api_sql_query($sql, __FILE__, __LINE__);
$num_row = Database::fetch_array($result);
if($num_row['nb_users']>1000)
{//if there are too much users to gracefully handle with the HTML select list,
// assign a default filter on users names
if($num_row['nb_users']>1000) {
//if there are too much users to gracefully handle with the HTML select list,
// assign a default filter on users names
$first_letter_user = 'A';
}
unset($result);
}
$sql = "SELECT user_id,lastname,firstname,username FROM $tbl_user WHERE lastname LIKE '".$first_letter_user."%' ORDER BY ". (count($users) > 0 ? "(user_id IN(".implode(',', $users).")) DESC," : "")." lastname";
$sql = "SELECT user_id,lastname,firstname,username FROM $tbl_user
WHERE lastname LIKE '".$first_letter_user."%' OR lastname LIKE '".strtolower($first_letter_user)."%'
ORDER BY ". (count($users) > 0 ? "(user_id IN(".implode(',', $users).")) DESC," : "")." lastname";
$result = api_sql_query($sql, __FILE__, __LINE__);
$db_users = api_store_result($result);
unset($result);
@ -143,14 +143,14 @@ unset($result);
?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;">
<input type="hidden" name="formSent" value="1"/>
<input type="hidden" name="form_sent" value="1"/>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td width="40%" align="center">
<b><?php echo get_lang('UserList'); ?></b>
<br/><br/>
<?php echo get_lang('FirstLetterUser'); ?> :
<select name="firstLetterUser" onchange="javascript:document.formulaire.formSent.value='2'; document.formulaire.submit();">
<select name="first_letter_user" onchange="javascript:document.formulaire.form_sent.value='2'; document.formulaire.submit();">
<option value="">--</option>
<?php
echo Display :: get_alphabet_options($first_letter_user);
@ -159,33 +159,14 @@ unset($result);
</td>
<td width="20%">&nbsp;</td>
<td width="40%" align="center">
<b><?php echo get_lang('URLList'); ?> :</b>
<b><?php echo get_lang('url_list'); ?> :</b>
</td>
<?php
//
/*
<td width="20%">&nbsp;</td>
<td width="40%" align="center">
<b><?php echo get_lang('URLList'); ?> :</b>
<br/><br/>
<?php echo get_lang('FirstLetterCourse'); ?> :
<select name="firstLetterCourse" onchange="javascript:document.formulaire.formSent.value='2'; document.formulaire.submit();">
<option value="">--</option>
<?php
echo Display :: get_alphabet_options($first_letter_course);
?>
</select>
</td>
*/
?>
</tr>
<tr>
<td width="40%" align="center">
<select name="UserList[]" multiple="multiple" size="20" style="width:230px;">
<select name="user_list[]" multiple="multiple" size="20" style="width:250px;">
<?php
foreach ($db_users as $user)
{
foreach ($db_users as $user) {
?>
<option value="<?php echo $user['user_id']; ?>" <?php if(in_array($user['user_id'],$users)) echo 'selected="selected"'; ?>><?php echo $user['lastname'].' '.$user['firstname'].' ('.$user['username'].')'; ?></option>
<?php
@ -197,13 +178,12 @@ unset($result);
<input type="submit" value="<?php echo get_lang('AddToThatURL'); ?> &gt;&gt;"/>
</td>
<td width="40%" align="center">
<select name="URLList[]" multiple="multiple" size="20" style="width:230px;">
<?php
foreach ($db_urls as $url_obj)
{
?>
<option value="<?php echo $url_obj['id']; ?>" <?php if(in_array($url_obj['id'],$url_list)) echo 'selected="selected"'; ?>><?php echo $url_obj['url']; ?></option>
<select name="url_list[]" multiple="multiple" size="20" style="width:230px;">
<?php
foreach ($db_urls as $url_obj) {
?>
<option value="<?php echo $url_obj['id']; ?>" <?php if(in_array($url_obj['id'],$url_list)) echo 'selected="selected"'; ?>><?php echo $url_obj['url']; ?></option>
<?php
}
?>
</select>

@ -54,8 +54,13 @@ if( $form->validate()) {
if ($url_id!='') {
//we can't change the status of the url with id=1
if ($url_id==1)
$active=1;
UrlManager::udpate($url_id, $url, $description, $active);
$active=1;
//checking url
if (substr($url,strlen($url)-1, strlen($url))=='/') {
UrlManager::udpate($url_id, $url, $description, $active);
} else {
UrlManager::udpate($url_id, $url.'/', $description, $active);
}
$url_to_go='access_urls.php';
$message=get_lang('URLEdited');
} else {
@ -63,13 +68,12 @@ if( $form->validate()) {
if ($num == 0) {
//checking url
if (substr($url,strlen($url)-1, strlen($url))=='/') {
UrlManager::add($url.'/', $description, $active);
$message = get_lang('URLAdded');
UrlManager::add($url, $description, $active);
} else {
//create
UrlManager::add($url, $description, $active);
$message = get_lang('URLAdded');
UrlManager::add($url.'/', $description, $active);
}
$message = get_lang('URLAdded');
$url_to_go='access_urls.php';
} else {
$url_to_go='access_url_edit.php';
@ -115,7 +119,7 @@ if (isset($_GET['url_id']))
}
$url_data = UrlManager::get_url_data_from_id($url_id);
$form->addElement('hidden','id',$url_data['id']);
$form->setDefaults($url_data);
$form->setDefaults($url_data);
$submit_name = get_lang('Edit');
}

@ -0,0 +1,467 @@
<?php
/*
==============================================================================
Dokeos - elearning and course management software
Copyright (c) 2009 Dokeos SPRL
Copyright (c) 2009 Julio Montoya Armas <gugli100@gmail.com>
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.
Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
==============================================================================
*/
/**
==============================================================================
* @package dokeos.admin
==============================================================================
*/
// name of the language file that needs to be included
$language_file='admin';
// resetting the course id
$cidReset=true;
// including some necessary dokeos files
require('../inc/global.inc.php');
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
require_once ('../inc/lib/xajax/xajax.inc.php');
$xajax = new xajax();
//$xajax->debugOn();
$xajax -> registerFunction ('search_courses');
// setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN;
// Access restrictions
api_protect_admin_script();
if (!$_configuration['multiple_access_urls'])
header('Location: index.php');
// Database Table Definitions
$tbl_access_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_access_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
// setting breadcrumbs
$tool_name = get_lang('EditCoursesToURL');
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ('url' => 'access_urls.php', 'name' => get_lang('MultipleAccessURLs'));
$add_type = 'unique';
if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
$add_type = $_REQUEST['add_type'];
}
$access_url_id=1;
if(isset($_REQUEST['access_url_id']) && $_REQUEST['access_url_id']!=''){
$access_url_id = $_REQUEST['access_url_id'];
}
function search_courses($needle, $id)
{
global $tbl_course;
$xajax_response = new XajaxResponse();
$return = '';
if(!empty($needle)) {
// 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');
// search courses where username or firstname or lastname begins likes $needle
$sql = 'SELECT code, title FROM '.$tbl_course.' u
WHERE (title LIKE "'.$needle.'%"
OR code LIKE "'.$needle.'%"
)
ORDER BY title, code
LIMIT 11';
$rs = api_sql_query($sql, __FILE__, __LINE__);
$i=0;
while ($course = Database :: fetch_array($rs)) {
$i++;
if ($i<=10) {
$return .= '<a href="#" onclick="add_user_to_url(\''.addslashes($course['code']).'\',\''.addslashes($course['title']).' ('.addslashes($course['code']).')'.'\')">'.$course['title'].' ('.$course['code'].')</a><br />';
} else {
$return .= '...<br />';
}
}
}
$xajax_response -> addAssign('ajax_list_courses','innerHTML',utf8_encode($return));
return $xajax_response;
}
$xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
function add_user_to_url(code, content) {
document.getElementById("course_to_add").value = "";
document.getElementById("ajax_list_courses").innerHTML = "";
destination = document.getElementById("destination_users");
destination.options[destination.length] = new Option(content,code);
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function send() {
if (document.formulaire.access_url_id.value!=0) {
document.formulaire.form_sent.value=0;
document.formulaire.add_type.value=\''.$add_type.'\';
document.formulaire.submit();
}
}
function remove_item(origin)
{
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
origin.options[i]=null;
i = i-1;
}
}
}
</script>';
$form_sent=0;
$errorMsg='';
$UserList=$SessionList=array();
$users=$sessions=array();
if($_POST['form_sent']) {
$form_sent=$_POST['form_sent'];
$course_list=$_POST['course_list'];
if(!is_array($course_list)) {
$course_list=array();
}
if($form_sent == 1) {
if ($access_url_id==0) {
header('Location: access_url_edit_users_to_url.php?action=show_message&message='.get_lang('SelectURL'));
}
elseif(is_array($course_list) ) {
UrlManager::update_urls_rel_course($course_list,$access_url_id);
header('Location: access_urls.php?action=show_message&message='.get_lang('CoursesWereEdited'));
}
}
}
Display::display_header($tool_name);
echo '<div class="actions" style="height:22px;">';
echo '<div style="float:right;">
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_add_courses_to_url.php">'.Display::return_icon('course_add.gif',get_lang('AddUserToURL'),'').get_lang('AddCoursesToURL').'</a>
</div><br />';
echo '</div>';
api_display_tool_title($tool_name);
if ($_GET['action'] == 'show_message')
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
$no_course_list = $course_list = array();
$ajax_search = $add_type == 'unique' ? true : false;
if($ajax_search) {
$courses=UrlManager::get_url_rel_course_data($access_url_id);
foreach($courses as $course) {
$course_list[$course['code']] = $course ;
}
} else {
$courses=UrlManager::get_url_rel_course_data();
foreach($courses as $course) {
if($course['access_url_id'] == $access_url_id) {
$course_list[$course['course_code']] = $course ;
}
}
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql="SELECT code, title
FROM $tbl_course u
ORDER BY title, code";
$result=api_sql_query($sql,__FILE__,__LINE__);
$courses=api_store_result($result);
$course_list_leys = array_keys($course_list);
foreach($courses as $course) {
if (!in_array($course['code'],$course_list_leys))
$no_course_list[$course['code']] = $course ;
}
}
if($add_type == 'multiple') {
$link_add_type_unique = '<a href="'.api_get_self().'?add_type=unique&access_url_id='.$access_url_id.'">'.get_lang('SessionAddTypeUnique').'</a>';
$link_add_type_multiple = get_lang('SessionAddTypeMultiple');
} else {
$link_add_type_unique = get_lang('SessionAddTypeUnique');
$link_add_type_multiple = '<a href="'.api_get_self().'?add_type=multiple&access_url_id='.$access_url_id.'">'.get_lang('SessionAddTypeMultiple').'</a>';
}
$url_list = UrlManager::get_url_data();
?>
<div style="text-align: left;">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>
</div>
<br /><br />
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;">
<?php echo get_lang('SelectUrl').' : '; ?>
<select name="access_url_id" onchange="javascript:send();">
<option value="0"> <?php echo get_lang('SelectUrl')?></option>
<?php
foreach ($url_list as $url_obj) {
$checked = '';
if (!empty($access_url_id)) {
if ($url_obj[0]==$access_url_id) {
$checked = 'selected=true';
}
}
?>
<option <?php echo $checked;?> value="<?php echo $url_obj[0]; ?>"> <?php echo $url_obj[1]; ?></option>
<?php
}
?>
</select>
<br /><br />
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="add_type" value = "<?php echo $add_type ?>" />
<?php
if(!empty($errorMsg)) {
Display::display_normal_message($errorMsg); //main API
}
?>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<!-- Users -->
<tr>
<td align="center"><b><?php echo get_lang('CourseListInPlatform') ?> :</b>
</td>
<td></td>
<td align="center"><b><?php echo get_lang('CourseListInURL') ?> :</b></td>
</tr>
<tr>
<td align="center">
<div id="content_source">
<?php
if($ajax_search) {
?>
<input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value,document.formulaire.access_url_id.options[document.formulaire.access_url_id.selectedIndex].value)" />
<div id="ajax_list_courses"></div>
<?php
} else {
?>
<select id="origin_users" name="no_course_list[]" multiple="multiple" size="15" style="width:300px;">
<?php
foreach($no_course_list as $no_course) {
?>
<option value="<?php echo $no_course['code']; ?>"><?php echo $no_course['title'].' ('.$no_course['code'].')'; ?></option>
$xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
function add_user_to_url (code, content) {
document.getElementById("course_to_add").value = "";
document.getElementById("ajax_list_courses").innerHTML = "";
destination = document.getElementById("destination_users");
destination.options[destination.length] = new Option(content,code);
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function remove_item(origin)
{
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
origin.options[i]=null;
i = i-1;
}
}
}
</script>';
<?php
}
unset($no_course_list);
?>
</select>
<?php
}
?>
</div>
</td>
<td width="10%" valign="middle" align="center">
<?php
if($ajax_search) {
?>
<input type="button" onclick="remove_item(document.getElementById('destination_users'))" value="<<" />
<?php
} else {
?>
<input type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))" value=">>" />
<br /><br />
<input type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))" value="<<" />
<?php
}
?>
<br /><br /><br /><br /><br /><br />
</td>
<td align="center">
<select id="destination_users" name="course_list[]" multiple="multiple" size="15" style="width:300px;">
<?php
foreach($course_list as $course) {
?>
<option value="<?php echo $course['course_code']; ?>"><?php echo $course['title'].' ('.$course['course_code'].')'; ?></option>
<?php
}
unset($course_list);
?>
</select></td>
</tr>
<tr>
<td colspan="3" align="center">
<br />
<?php
if(isset($_GET['add']))
echo '<input type="button" value="'.get_lang('EditCourses').'" onclick="valide()" />';
else
echo '<input type="button" value="'.get_lang('EditCourses').'" onclick="valide()" />';
?>
</td>
</tr>
</table>
</form>
<script type="text/javascript">
<!--
function moveItem(origin , destination) {
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
origin.options[i]=null;
i = i-1;
}
}
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function sortOptions(options) {
newOptions = new Array();
for (i = 0 ; i<options.length ; i++)
newOptions[i] = options[i];
newOptions = newOptions.sort(mysort);
options.length = 0;
for(i = 0 ; i < newOptions.length ; i++)
options[i] = newOptions[i];
}
function mysort(a, b) {
if(a.text.toLowerCase() > b.text.toLowerCase()){
return 1;
}
if(a.text.toLowerCase() < b.text.toLowerCase()){
return -1;
}
return 0;
}
function valide(){
var options = document.getElementById('destination_users').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
/*
var options = document.getElementById('destination_classes').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
*/
document.forms.formulaire.submit();
}
function loadUsersInSelect(select){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
//xhr_object.open("GET", "loadUsersInSelect.ajax.php?id_session=<?php echo $id_session ?>&letter="+select.options[select.selectedIndex].text, false);
xhr_object.open("POST", "loadUsersInSelect.ajax.php");
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
nosessionUsers = makepost(document.getElementById('origin_users'));
sessionUsers = makepost(document.getElementById('destination_users'));
nosessionClasses = makepost(document.getElementById('origin_classes'));
sessionClasses = makepost(document.getElementById('destination_classes'));
xhr_object.send("nosessionusers="+nosessionUsers+"&sessionusers="+sessionUsers+"&nosessionclasses="+nosessionClasses+"&sessionclasses="+sessionClasses);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
document.getElementById('content_source').innerHTML = result = xhr_object.responseText;
//alert(xhr_object.responseText);
}
}
}
function makepost(select){
var options = select.options;
var ret = "";
for (i = 0 ; i<options.length ; i++)
ret = ret + options[i].value +'::'+options[i].text+";;";
return ret;
}
-->
</script>
<?php
/*
==============================================================================
FOOTER
==============================================================================
*/
Display::display_footer();
?>

@ -54,7 +54,6 @@ $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_access_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$tbl_access_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
// setting breadcrumbs
$tool_name = get_lang('EditUsersToURL');
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
@ -67,7 +66,7 @@ if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
$access_url_id=1;
if(isset($_REQUEST['access_url_id']) && $_REQUEST['access_url_id']!=''){
$access_url_id = $_REQUEST['access_url_id'];
$access_url_id = $_REQUEST['access_url_id'];
}
function search_users($needle, $id)
@ -87,12 +86,14 @@ function search_users($needle, $id)
OR lastname LIKE "'.$needle.'%")
ORDER BY lastname, firstname, username
LIMIT 11';
$rs = api_sql_query($sql, __FILE__, __LINE__);
$i=0;
while ($user = Database :: fetch_array($rs)) {
$i++;
if ($i<=10) {
$return .= '<a href="#" onclick="add_user_to_session(\''.$user['user_id'].'\',\''.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].')'.'\')">'.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].')</a><br />';
$return .= '<a href="#" onclick="add_user_to_url(\''.addslashes($user['user_id']).'\',\''.addslashes($user['lastname']).' '.addslashes($user['firstname']).' ('.addslashes($user['username']).')'.'\')">'.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].')</a><br />';
} else {
$return .= '...<br />';
}
@ -106,7 +107,7 @@ $xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
function add_user_to_session (code, content) {
function add_user_to_url(code, content) {
document.getElementById("user_to_add").value = "";
document.getElementById("ajax_list_users").innerHTML = "";
@ -117,12 +118,14 @@ function add_user_to_session (code, content) {
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function send() {
document.formulaire.formSent.value=0;
document.formulaire.add_type.value=\''.$add_type.'\';
document.formulaire.submit();
function send() {
if (document.formulaire.access_url_id.value!=0) {
document.formulaire.form_sent.value=0;
document.formulaire.add_type.value=\''.$add_type.'\';
document.formulaire.submit();
}
}
function remove_item(origin)
@ -136,34 +139,45 @@ function remove_item(origin)
}
</script>';
$formSent=0;
$form_sent=0;
$errorMsg='';
$UserList=$SessionList=array();
$users=$sessions=array();
if($_POST['formSent']) {
$formSent=$_POST['formSent'];
if($_POST['form_sent']) {
$form_sent=$_POST['form_sent'];
$UserList=$_POST['sessionUsersList'];
if(!is_array($UserList)) {
$UserList=array();
}
if($formSent == 1) {
if(is_array($UserList) && count($UserList)>0 ) {
if($form_sent == 1) {
if ($access_url_id==0) {
header('Location: access_url_edit_users_to_url.php?action=show_message&message='.get_lang('SelectURL'));
}
elseif(is_array($UserList) ) {
UrlManager::update_urls_rel_user($UserList,$access_url_id);
header('Location: access_urls.php?action=show_message&message='.get_lang('UsersWereEdited'));
}
}
}
}
Display::display_header($tool_name);
echo '<div class="actions" style="height:22px;">';
echo '<div style="float:right;">
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_add_users_to_url.php">'.Display::return_icon('add_user_big.gif',get_lang('AddUserToURL'),'').get_lang('AddUsersToURL').'</a>
</div><br />';
echo '</div>';
api_display_tool_title($tool_name);
if ($_GET['action'] == 'show_message')
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
$nosessionUsersList = $sessionUsersList = array();
$ajax_search = $add_type == 'unique' ? true : false;
if($ajax_search)
{
if($ajax_search) {
$Users=UrlManager::get_url_rel_user_data($access_url_id);
foreach($Users as $user) {
$sessionUsersList[$user['user_id']] = $user ;
@ -203,7 +217,7 @@ $url_list = UrlManager::get_url_data();
<div style="text-align: left;">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>
</div>
<br /><br/>
<br /><br />
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;">
<?php echo get_lang('SelectUrl').' : '; ?>
<select name="access_url_id" onchange="javascript:send();">
@ -212,7 +226,7 @@ $url_list = UrlManager::get_url_data();
foreach ($url_list as $url_obj) {
$checked = '';
if (!empty($access_url_id)) {
if ($url_obj[0]==$access_url_id) {
if ($url_obj['id']==$access_url_id) {
$checked = 'selected=true';
}
}
@ -223,7 +237,7 @@ $url_list = UrlManager::get_url_data();
?>
</select>
<br /><br />
<input type="hidden" name="formSent" value="1" />
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="add_type" value = "<?php echo $add_type ?>" />
<?php
@ -264,7 +278,7 @@ $xajax -> processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script type="text/javascript">
function add_user_to_session (code, content) {
function add_user_to_url (code, content) {
document.getElementById("user_to_add").value = "";
document.getElementById("ajax_list_users").innerHTML = "";
@ -288,7 +302,6 @@ function remove_item(origin)
</script>';
<?php
}
unset($nosessionUsersList);
?>
@ -301,11 +314,11 @@ function remove_item(origin)
<td width="10%" valign="middle" align="center">
<?php
if($ajax_search) {
?>
<input type="button" onclick="remove_item(document.getElementById('destination_users'))" value="<<" />
<?php
?>
<input type="button" onclick="remove_item(document.getElementById('destination_users'))" value="<<" />
<?php
} else {
?>
?>
<input type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))" value=">>" />
<br /><br />
<input type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))" value="<<" />
@ -324,7 +337,6 @@ foreach($sessionUsersList as $enreg) {
<?php
}
unset($sessionUsersList);
?>

@ -45,16 +45,19 @@ require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'
require_once (api_get_path(LIBRARY_PATH).'security.lib.php');
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
$current_access_url_id = api_get_current_access_url_id();
$my_user_url_list = api_get_access_url_from_user(api_get_user_id());
$url_list = UrlManager::get_url_data();
// Actions
if (isset ($_GET['action'])) {
if (isset ($_GET['action'])) {
if ($_GET['action'] == 'show_message')
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
Display :: display_normal_message(Security::remove_XSS(stripslashes($_GET['message'])));
$check = Security::check_token('get');
if ($check) {
$url_id=Database::escape_string($_GET['url_id']);
switch ($_GET['action']) {
case 'delete_url' :
$result = UrlManager::delete($url_id);
@ -71,23 +74,63 @@ if (isset ($_GET['action'])) {
case 'unlock';
UrlManager::set_url_status('unlock',$url_id);
Display :: display_normal_message(get_lang('URLActivate'));
break;
case 'register';
// we are going to register the admin
if(api_is_platform_admin()) {
if($current_access_url_id!=-1) {
$url_str = '';
foreach($url_list as $my_url) {
if (!in_array($my_url['id'],$my_user_url_list)){
UrlManager::add_user_to_url(api_get_user_id(),$my_url['id']);
$url_str.=$my_url['url'].' ';
}
}
Display :: display_normal_message(get_lang('AdminUserRegisteredToThisURL').': '.$url_str.'<br />',false);
}
}
break;
}
}
Security::clear_token();
}
echo '<div class="actions">';
$parameters['sec_token'] = Security::get_token();
// checking if the admin is registered in all sites
$url_string='';
foreach($url_list as $my_url) {
if (!in_array($my_url['id'],$my_user_url_list)){
$url_string.=$my_url['url'].' ';
}
}
if(!empty($url_string)) {
Display :: display_warning_message(get_lang('AdminShouldBeRegisterInSite').':<br />'.$url_string,false);
}
// checking the current installation
if ($current_access_url_id==-1) {
Display :: display_warning_message(get_lang('URLNotConfiguredPleaseChangedTo').': '.api_get_path(WEB_PATH));
} elseif(api_is_platform_admin()) {
$quant= UrlManager::relation_url_user_exist(api_get_user_id(),$current_access_url_id);
if ($quant==0) {
Display :: display_warning_message('<a href="'.api_get_self().'?action=register&sec_token='.$parameters['sec_token'].'">'.get_lang('ClickToRegisterAdmin').'</a>',false);
}
}
// action menu
echo '<div class="actions" style="height:22px;">';
echo '<div style="float:right;">
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_edit.php">'.Display::return_icon('view_more_stats.gif',get_lang('AddUrl'),'').get_lang('AddUrl').'</a>&nbsp;&nbsp;
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_add_users_to_url.php">'.Display::return_icon('add_user_big.gif',get_lang('AddUserToURL'),'').get_lang('AddUsersToURL').'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_edit_users_to_url.php">'.Display::return_icon('del_user_big.gif',get_lang('EditUsersToURL'),'').get_lang('EditUsersToURL').'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_add_users_to_url.php">'.Display::return_icon('members.gif',get_lang('AddUserToURL'),'').get_lang('ManageUsers').'</a>
<a href="'.api_get_path(WEB_CODE_PATH).'admin/access_url_add_courses_to_url.php">'.Display::return_icon('courses.gif',get_lang('AddUsersToCourse'),'').get_lang('ManageCourses').'</a>
</div><br />';
echo '</div>';
$table = new SortableTable('urls', 'url_count_mask', 'get_url_data_mask',2);
$parameters['sec_token'] = Security::get_token();
$table->set_additional_parameters($parameters);
$table->set_header(0, '', false);

@ -2373,7 +2373,15 @@ function register_course($courseSysCode, $courseScreenCode, $courseRepository, $
api_sql_query($sql, __FILE__, __LINE__);
}
}
//
global $_configuration;
if ($_configuration['multiple_access_urls']==true) {
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
$url_id=1;
if (api_get_current_access_url_id()!=-1)
$url_id=api_get_current_access_url_id();
UrlManager::add_course_to_url($courseSysCode,$url_id);
}
}
return 0;

@ -281,11 +281,11 @@ class CourseManager
*/
function get_user_in_course_status($user_id, $course_code)
{
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql_query = "SELECT * FROM $course_user_table WHERE `course_code` = '$course_code' AND `user_id` = '$user_id'";
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql_query = "SELECT * FROM $course_user_table WHERE course_code = '$course_code' AND user_id = $user_id";
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
$result = Database::fetch_array($sql_result);
return $result["status"];
return $result['status'];
}
@ -350,10 +350,9 @@ class CourseManager
$update_user_session = "UPDATE $tbl_session set nbr_users = '$count' WHERE id = '".$_SESSION["id_session"]."'" ;
$result = api_sql_query($update_user_session,__FILE__,__LINE__);
}
else {
$sql = "DELETE FROM $table_course_user WHERE user_id IN (".$user_ids.") AND course_code = '".$course_code."'";
api_sql_query($sql, __FILE__, __LINE__);
} else {
$sql = "DELETE FROM $table_course_user WHERE user_id IN (".$user_ids.") AND course_code = '".$course_code."'";
api_sql_query($sql, __FILE__, __LINE__);
}
}
@ -923,7 +922,7 @@ class CourseManager
* @return true if the real course has virtual courses that the user is subscribed to, false otherwise
*/
function has_virtual_courses_from_code($real_course_code, $user_id)
{
{
$user_subscribed_virtual_course_list = CourseManager :: get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $real_course_code);
$number_of_virtual_courses = count($user_subscribed_virtual_course_list);
@ -998,12 +997,11 @@ class CourseManager
$table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$sql_query = "SELECT * FROM $table WHERE `user_id` = '$user_id' AND `course_code` = '$course_code'";
$sql_query = "SELECT * FROM $table WHERE user_id = $user_id AND course_code = '$course_code'";
$sql_result = api_sql_query($sql_query, __FILE__, __LINE__);
$result = Database::fetch_array($sql_result);
if (!isset ($result) || empty ($result))
{
if (!isset ($result) || empty ($result)) {
if($in_a_session)
{
$sql = 'SELECT 1 FROM '.Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER).'
@ -1033,7 +1031,7 @@ class CourseManager
}
}
}
else
else
return false; //user is not registered in course
}
else
@ -1671,7 +1669,17 @@ class CourseManager
api_sql_query($sql,__FILE__,__LINE__);
$sql = "DELETE FROM $table_stats_uploads WHERE upload_cours_id = '".$code."'";
api_sql_query($sql,__FILE__,__LINE__);
}
}
global $_configuration;
if ($_configuration['multiple_access_urls']==true) {
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
$url_id=1;
if (api_get_current_access_url_id()!=-1)
$url_id=api_get_current_access_url_id();
UrlManager::delete_url_rel_course($code,$url_id);
}
// Delete the course from the database
$sql = "DELETE FROM $table_course WHERE code='".$code."'";
api_sql_query($sql, __FILE__, __LINE__);

@ -1,4 +1,4 @@
<?php // $Id: database.lib.php 17905 2009-01-21 19:52:11Z juliomontoya $
<?php // $Id: database.lib.php 18083 2009-01-29 21:51:19Z juliomontoya $
/* See license terms in /dokeos_license.txt */
/**
==============================================================================
@ -62,6 +62,7 @@ define('TABLE_MAIN_SEARCH_ENGINE_REF', 'search_engine_ref');
//Access URLS
define('TABLE_MAIN_ACCESS_URL', 'access_url');
define('TABLE_MAIN_ACCESS_URL_REL_USER', 'access_url_rel_user');
define('TABLE_MAIN_ACCESS_URL_REL_COURSE', 'access_url_rel_course');
//Global calendar
define('TABLE_MAIN_SYSTEM_CALENDAR', 'sys_calendar');
//Reservation System

@ -574,6 +574,21 @@ class Display {
}
return $result;
}
function get_numeric_options($min,$max, $selected_num = 0)
{
$result = '';
for ($i = $min; $i <= $max; $i ++) {
$result .= '<option value="'.$i.'"';
if (is_int($selected_num))
if ($selected_num == $i) {
$result .= ' selected="selected"';
}
$result .= '>'.$i.'</option>';
}
return $result;
}
/**
* Show the so-called "left" menu for navigating
*/

@ -21,7 +21,7 @@
*/
/**
==============================================================================
* This library provides functions for the URL management.
* This library provides functions for the access_url management.
* Include/require it in your code to use its functionality.
*
* @package dokeos.library
@ -45,7 +45,7 @@ class UrlManager
$tms = time();
$table_access_url= Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$sql = "INSERT INTO $table_access_url
SET url = '".Database::escape_string($url)."/',
SET url = '".Database::escape_string($url)."',
description = '".Database::escape_string($description)."',
active = '".Database::escape_string($active)."',
created_by = '".Database::escape_string(api_get_user_id())."',
@ -53,6 +53,7 @@ class UrlManager
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
}
/**
* Updates an URL access to Dokeos
* @author Julio Montoya <gugli100@gmail.com>,
@ -77,6 +78,21 @@ class UrlManager
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
}
/**
* Deletes an url
* @author Julio Montoya
* @param int url id
* @return boolean true if success
* */
function delete($id)
{
$table_access_url= Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$sql= "DELETE FROM $table_access_url WHERE id = ".Database::escape_string($id);
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
}
/**
*
@ -112,8 +128,8 @@ class UrlManager
$table_access_url= Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$sql = "SELECT count(id) as count_result FROM $table_access_url";
$res = api_sql_query($sql, __FILE__, __LINE__);
$url = Database::fetch_row($res);
$result = $url['0'];
$url = Database::fetch_array($res,'ASSOC');
$result = $url['count_result'];
return $result;
}
@ -128,8 +144,7 @@ class UrlManager
$sql = "SELECT id, url, description, active FROM $table_access_url";
$res = api_sql_query($sql, __FILE__, __LINE__);
$urls = array ();
while ($url = Database::fetch_row($res))
{
while ($url = Database::fetch_array($res)) {
$urls[] = $url;
}
return $urls;
@ -171,18 +186,45 @@ class UrlManager
ORDER BY lastname,firstname,username";
$result=api_sql_query($sql,__FILE__,__LINE__);
$Users=api_store_result($result);
return $Users;
$users=api_store_result($result);
return $users;
}
/** Gets the inner join of users and courses table
* @author Julio Montoya
* @return int access url id
* @return array api_store_result of the result
* */
function get_url_rel_course_data($access_url_id='')
{
$where ='';
$table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
if (!empty($access_url_id))
$where ="WHERE $table_url_rel_course.access_url_id = ".Database::escape_string($access_url_id);
$sql="SELECT course_code, title, access_url_id
FROM $tbl_course u
INNER JOIN $table_url_rel_course
ON $table_url_rel_course.course_code = code
$where
ORDER BY title, code";
$result=api_sql_query($sql,__FILE__,__LINE__);
$courses=api_store_result($result);
return $courses;
}
/**
* Sets the status of an URL 1 or 0
* @author Julio Montoya
* @param string lock || unlock
* @param int url id
* */
function set_url_status($status,$url_id)
function set_url_status($status, $url_id)
{
$url_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
if ($status=='lock') {
@ -196,37 +238,38 @@ class UrlManager
$result = api_sql_query($sql, __FILE__, __LINE__);
}
}
/**
* Deletes an url
* Checks the relationship between an URL and a User (return the num_rows)
* @author Julio Montoya
* @param int user id
* @param int url id
* @return boolean true if success
* */
function delete($id)
function relation_url_user_exist($user_id, $url_id)
{
$table_access_url= Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$sql= "DELETE FROM $table_access_url WHERE id = ".Database::escape_string($id);
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql= "SELECT user_id FROM $table_url_rel_user WHERE access_url_id = ".Database::escape_string($url_id)." AND user_id = ".Database::escape_string($user_id)." ";
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
$num = Database::num_rows($result);
return $num;
}
/**
* Deletes an url
* Checks the relationship between an URL and a Course (return the num_rows)
* @author Julio Montoya
* @param int user id
* @param int url id
* @return boolean true if success
* */
function relation_url_user_exist($user_id, $url_id)
function relation_url_course_exist($course_id, $url_id)
{
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql= "SELECT user_id FROM $table_url_rel_user WHERE access_url_id = ".Database::escape_string($url_id)." AND user_id = ".Database::escape_string($user_id)." ";
$table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql= "SELECT course_code FROM $table_url_rel_course WHERE access_url_id = ".Database::escape_string($url_id)." AND course_code = '".Database::escape_string($course_id)."'";
$result = api_sql_query($sql, __FILE__, __LINE__);
$num = Database::num_rows($result);
return $num;
}
}
/**
* Add a group of users into a group of URLs
@ -234,7 +277,7 @@ class UrlManager
* @param array of user_ids
* @param array of url_ids
* */
function add_users_to_urls($user_list,$url_list)
function add_users_to_urls($user_list, $url_list)
{
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$result_array=array();
@ -259,6 +302,37 @@ class UrlManager
}
/**
* Add a group of courses into a group of URLs
* @author Julio Montoya
* @param array of course ids
* @param array of url_ids
* */
function add_courses_to_urls($course_list,$url_list)
{
$table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$result_array=array();
if (is_array($course_list) && is_array($url_list)){
foreach ($url_list as $url_id) {
foreach ($course_list as $course_code) {
$count = UrlManager::relation_url_course_exist($course_code,$url_id);
if ($count==0) {
$sql = "INSERT INTO $table_url_rel_course
SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".Database::escape_string($url_id);
$result = api_sql_query($sql, __FILE__, __LINE__);
if($result)
$result_array[$url_id][$course_code]=1;
else
$result_array[$url_id][$course_code]=0;
}
}
}
}
return $result_array;
}
/**
* Add a user into a url
* @author Julio Montoya
@ -266,9 +340,10 @@ class UrlManager
* @param url_id
* @return boolean true if success
* */
function add_user_to_url($user_id,$url_id=1)
function add_user_to_url($user_id, $url_id=1)
{
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
if (empty($url_id)) $url_id=1;
$count = UrlManager::relation_url_user_exist($user_id,$url_id);
if (empty($count)) {
$sql = "INSERT INTO $table_url_rel_user
@ -278,10 +353,24 @@ class UrlManager
return $result;
}
function add_course_to_url($course_code, $url_id=1)
{
$table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (empty($url_id)) $url_id=1;
$count = UrlManager::relation_url_course_exist($course_code,$url_id);
if (empty($count)) {
$sql = "INSERT INTO $table_url_rel_course
SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".Database::escape_string($url_id);
$result = api_sql_query($sql, __FILE__, __LINE__);
}
return $result;
}
/**
* Deletes an url and user relationship
* @author Julio Montoya
* @param int user id
* @param int url id
* @return boolean true if success
* */
@ -293,6 +382,21 @@ class UrlManager
return $result;
}
/**
* Deletes an url and course relationship
* @author Julio Montoya
* @param char course code
* @param int url id
* @return boolean true if success
* */
function delete_url_rel_course($course_code, $url_id)
{
$table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql= "DELETE FROM $table_url_rel_course WHERE course_code = '".Database::escape_string($course_code)."' AND access_url_id=".Database::escape_string($url_id)." ";
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
}
/**
* Updates the url_rel_user table with a given user list
* @author Julio Montoya
@ -325,6 +429,53 @@ class UrlManager
}
}
}
/**
* Updates the url_rel_user table with a given user list
* @author Julio Montoya
* @param array user list
* @param int access_url_id
* */
function update_urls_rel_course($course_list,$access_url_id)
{
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT course_code FROM $table_url_rel_user WHERE access_url_id=".Database::escape_string($access_url_id);
$result = api_sql_query($sql,__FILE__,__LINE__ );
$existing_courses = array();
while($row = Database::fetch_array($result)){
$existing_courses[] = $row['course_code'];
}
//adding users
foreach($course_list as $course) {
if(!in_array($course, $existing_courses)) {
UrlManager::add_course_to_url($course,$access_url_id);
}
}
//deleting old users
foreach($existing_courses as $existing_course) {
if(!in_array($existing_course, $course_list)) {
UrlManager::delete_url_rel_course($existing_course,$access_url_id);
}
}
}
function get_access_url_from_user($user_id) {
$table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$table_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$sql = "SELECT url, access_url_id FROM $table_url_rel_user url_rel_user INNER JOIN $table_url u
ON (url_rel_user.access_url_id = u.id)
WHERE user_id = ".Database::escape_string($user_id);
$result = api_sql_query($sql, __FILE__, __LINE__);
$url_list = api_store_result($result);
return $url_list;
}
/**
*
* */

@ -1,4 +1,4 @@
<?php // $Id: usermanager.lib.php 17842 2009-01-19 21:39:37Z herodoto $
<?php // $Id: usermanager.lib.php 18083 2009-01-29 21:51:19Z juliomontoya $
/*
==============================================================================
Dokeos - elearning and course management software
@ -114,29 +114,27 @@ class UserManager
hr_dept_id = '".Database::escape_string($hr_dept_id)."',
active = '".Database::escape_string($active)."'";
$result = api_sql_query($sql);
if ($result)
{
if ($result) {
//echo "id returned";
$return=Database::get_last_insert_id();
global $_configuration;
if (api_is_platform_admin(true) && $_configuration['multiple_access_urls']==true) {
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
if ($_configuration['multiple_access_urls']==true) {
if (api_get_current_access_url_id()!=-1)
UrlManager::add_user_to_url($return, api_get_current_access_url_id());
else
UrlManager::add_user_to_url($return, 1);
}
}
else
{
} else {
UrlManager::add_user_to_url($return, 1);
}
} else {
//echo "false - failed" ;
$return=false;
}
if(is_array($extra) AND count($extra)>0)
{
if(is_array($extra) AND count($extra)>0) {
$res = true;
foreach($extra as $fname => $fvalue)
{
foreach($extra as $fname => $fvalue) {
$res = $res && UserManager::update_extra_field($return,$fname,$fvalue);
}
}
@ -248,6 +246,15 @@ class UserManager
$sqlv = "DELETE FROM $t_ufv WHERE user_id = $user_id";
$resv = api_sql_query($sqlv,__FILE__,__LINE__);
global $_configuration;
if ($_configuration['multiple_access_urls']) {
require_once (api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
$url_id=1;
if (api_get_current_access_url_id()!=-1)
$url_id=api_get_current_access_url_id();
UrlManager::delete_url_rel_user($user_id,$url_id);
}
return true;
}
@ -1363,8 +1370,7 @@ class UserManager
// all the options of the field
$sql = "SELECT * FROM $table_field_options WHERE field_id='".Database::escape_string($field_id)."' ORDER BY option_order ASC";
$result = api_sql_query($sql,__FILE__,__LINE__);
while ($row = Database::fetch_array($result))
{
while ($row = Database::fetch_array($result)) {
$return['options'][$row['id']] = $row;
}
return $return;
@ -1380,7 +1386,7 @@ class UserManager
function get_personal_session_course_list($user_id)
{
// Database Table Definitions
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
@ -1388,6 +1394,18 @@ class UserManager
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
//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 ";
}
}
// variable initialisation
$personal_course_list_sql = '';
@ -1410,13 +1428,13 @@ class UserManager
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
WHERE course_rel_user.user_id = '".$user_id."'
$join_access_url
WHERE course_rel_user.user_id = '".$user_id."' $where_access_url
ORDER BY user_course_category.sort, course_rel_user.sort ASC, i";
$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
while ($result_row = Database::fetch_array($course_list_sql_result))
{
while ($result_row = Database::fetch_array($course_list_sql_result)) {
$personal_course_list[] = $result_row;
}
@ -1464,10 +1482,8 @@ class UserManager
$sessions = array_merge($sessions , api_store_result($result));
if(api_is_allowed_to_create_course())
{
foreach($sessions as $enreg)
{
if(api_is_allowed_to_create_course()) {
foreach($sessions as $enreg) {
$id_session = $enreg['id'];
$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name
FROM $tbl_session_course as session_course
@ -1483,8 +1499,7 @@ class UserManager
$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
while ($result_row = Database::fetch_array($course_list_sql_result))
{
while ($result_row = Database::fetch_array($course_list_sql_result)) {
$result_row['s'] = 2;
$key = $result_row['id_session'].' - '.$result_row['k'];
$personal_course_list[$key] = $result_row;
@ -1493,8 +1508,7 @@ class UserManager
}
foreach($sessions as $enreg)
{
foreach($sessions as $enreg) {
$id_session = $enreg['id'];
$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, IF(session_course.id_coach = ".$user_id.",'2', '5')
FROM $tbl_session_course as session_course
@ -1512,13 +1526,11 @@ class UserManager
$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
while ($result_row = Database::fetch_array($course_list_sql_result))
{
while ($result_row = Database::fetch_array($course_list_sql_result)) {
$key = $result_row['id_session'].' - '.$result_row['k'];
$result_row['s'] = $result_row['14'];
if(!isset($personal_course_list[$key]))
{
if(!isset($personal_course_list[$key])) {
$personal_course_list[$key] = $result_row;
}
}

Loading…
Cancel
Save