Minor - some merges from 1.9.x

1.10.x
Julio Montoya 11 years ago
parent 1248fd62fa
commit 8e3c8be5d5
  1. 1
      main/admin/access_url_add_courses_to_url.php
  2. 2
      main/admin/access_url_add_users_to_url.php
  3. 8
      main/admin/access_url_edit.php
  4. 2
      main/admin/access_url_edit_course_category_to_url.php
  5. 104
      main/admin/access_urls.php
  6. 14
      main/admin/add_many_session_to_category.php
  7. 2
      main/admin/add_sessions_to_promotion.php
  8. 2
      main/admin/add_sessions_to_usergroup.php
  9. 4
      main/admin/archive_cleanup.php
  10. 16
      main/admin/course_add.php
  11. 2
      main/admin/course_edit.php
  12. 5
      main/admin/course_export.php
  13. 1
      main/admin/course_import.php
  14. 119
      main/admin/course_list.php
  15. 2
      main/admin/course_request_accepted.php
  16. 46
      main/admin/course_request_edit.php
  17. 6
      main/admin/course_user_import.php
  18. 2
      main/admin/dashboard_add_courses_to_user.php
  19. 8
      main/admin/dashboard_add_sessions_to_user.php
  20. 2
      main/admin/dashboard_add_users_to_user.php
  21. 2
      main/admin/group_add.php
  22. 2
      main/admin/group_edit.php
  23. 2
      main/admin/group_list.php
  24. 1
      main/admin/inactive_user_list.php
  25. 31
      main/admin/languages.php
  26. 20
      main/admin/promotions.php
  27. 1
      main/admin/session_category_add.php
  28. 20
      main/admin/session_user_import.php
  29. 27
      main/admin/settings.lib.php
  30. 2
      main/admin/settings.php
  31. 2
      main/admin/skills_import.php
  32. 2
      main/admin/specific_fields_add.php
  33. 1
      main/admin/statistics/index.php
  34. 70
      main/admin/system_announcements.php
  35. 2
      main/admin/system_status.php
  36. 22
      main/admin/user_add.php
  37. 43
      main/admin/user_edit.php
  38. 2
      main/admin/user_export.php
  39. 9
      main/admin/user_import.php
  40. 6
      main/admin/user_information.php
  41. 3
      main/admin/user_move_stats.php
  42. 3
      main/admin/usergroup_export.php
  43. 8
      main/admin/usergroup_import.php
  44. 15
      main/admin/usergroup_user_import.php
  45. 8
      main/admin/usergroups.php
  46. 1
      main/course_info/infocours.php
  47. 2
      main/course_progress/index.php
  48. 2
      main/coursecopy/classes/Course.class.php
  49. 1
      main/coursecopy/classes/CourseArchiver.class.php
  50. 1
      main/coursecopy/classes/CourseRecycler.class.php
  51. 84
      main/coursecopy/classes/Document.class.php
  52. 2
      main/coursecopy/classes/Link.class.php
  53. 13
      main/coursecopy/classes/QuizQuestion.class.php
  54. 2
      main/coursecopy/classes/QuizQuestionOption.class.php
  55. 34
      main/coursecopy/classes/Resource.class.php
  56. 4
      main/coursecopy/copy_course.php
  57. 2
      main/coursecopy/import_backup.php
  58. 4
      main/coursecopy/recycle_course.php
  59. 1
      main/create_course/add_course.php
  60. 294
      main/cron/import_csv.php
  61. 4
      main/dashboard/index.php
  62. 140
      main/document/create_audio.php
  63. 28
      main/document/create_draw.php
  64. 8
      main/document/create_paint.php

@ -21,7 +21,6 @@ if (!api_get_multiple_access_url()) {
exit; exit;
} }
$form_sent = 0; $form_sent = 0;
$first_letter_course = ''; $first_letter_course = '';
$courses = array (); $courses = array ();

@ -1,6 +1,6 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* This script allows platform admins to add users to urls. * This script allows platform admins to add users to urls.
* It displays a list of users and a list of courses; * It displays a list of users and a list of courses;
* you can select multiple users and courses and then click on * you can select multiple users and courses and then click on

@ -12,7 +12,6 @@ $cidReset = true;
require_once '../inc/global.inc.php'; require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
//api_protect_admin_script();
api_protect_global_admin_script(); api_protect_global_admin_script();
if (!api_get_multiple_access_url()) { if (!api_get_multiple_access_url()) {
@ -107,15 +106,14 @@ if ($form->validate()) {
$form->setConstants(array('sec_token' => $token)); $form->setConstants(array('sec_token' => $token));
} }
$form->addElement('text','url', get_lang('URLIP'), array('class'=>'span6')); $form->addElement('text','url', get_lang('URLIP'), array('class'=>'span6'));
$form->addRule('url', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('url', get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('url', '', 'maxlength',254); $form->addRule('url', '', 'maxlength',254);
$types = array( $types = array(
1=>get_lang('AccessURL'), 1=>get_lang('AccessURL'),
2=>get_lang('SincroServer'), 2=>get_lang('SincroServer'),
3=>get_lang('SincroClient'), 3=>get_lang('SincroClient'),
); );
$form->addElement('select', 'url_type', get_lang('Type'), $types); $form->addElement('select', 'url_type', get_lang('Type'), $types);

@ -334,4 +334,4 @@ function makepost(select){
} }
</script> </script>
<?php <?php
Display::display_footer(); Display::display_footer();

@ -16,8 +16,8 @@ $this_section = SECTION_PLATFORM_ADMIN;
api_protect_global_admin_script(); api_protect_global_admin_script();
if (!api_get_multiple_access_url()) { if (!api_get_multiple_access_url()) {
header('Location: index.php'); header('Location: index.php');
exit; exit;
} }
$interbreadcrumb[] = array ("url" => 'index.php', 'name' => get_lang('PlatformAdmin')); $interbreadcrumb[] = array ("url" => 'index.php', 'name' => get_lang('PlatformAdmin'));
@ -28,68 +28,71 @@ $my_user_url_list = api_get_access_url_from_user(api_get_user_id());
$current_access_url_id = api_get_current_access_url_id(); $current_access_url_id = api_get_current_access_url_id();
$url_list = UrlManager::get_url_data(); $url_list = UrlManager::get_url_data();
// Actions
if (isset ($_GET['action'])) { if (isset ($_GET['action'])) {
if ($_GET['action'] == 'show_message') { 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'])));
} else { }
$check = Security::check_token('get');
if ($check) { $check = Security::check_token('get');
$url_id = Database::escape_string($_GET['url_id']); if ($check) {
$url_id = Database::escape_string($_GET['url_id']);
switch ($_GET['action']) {
case 'delete_url' : switch ($_GET['action']) {
$result = UrlManager::delete($url_id); case 'delete_url':
if ($result) { $result = UrlManager::delete($url_id);
Display :: display_normal_message(get_lang('URLDeleted')); if ($result) {
} else { Display :: display_normal_message(get_lang('URLDeleted'));
Display :: display_error_message(get_lang('CannotDeleteURL')); } else {
} Display :: display_error_message(get_lang('CannotDeleteURL'));
break; }
case 'lock' : break;
UrlManager::set_url_status('lock',$url_id); case 'lock':
Display :: display_normal_message(get_lang('URLInactive')); UrlManager::set_url_status('lock', $url_id);
break; Display::display_normal_message(get_lang('URLInactive'));
case 'unlock'; break;
UrlManager::set_url_status('unlock',$url_id); case 'unlock':
Display :: display_normal_message(get_lang('URLActive')); UrlManager::set_url_status('unlock', $url_id);
break; Display::display_normal_message(get_lang('URLActive'));
case 'register'; break;
// we are going to register the admin case 'register':
if(api_is_platform_admin()) { // we are going to register the admin
if($current_access_url_id!=-1) { if (api_is_platform_admin()) {
$url_str = ''; if ($current_access_url_id!=-1) {
foreach($url_list as $my_url) { $url_str = '';
if (!in_array($my_url['id'],$my_user_url_list)){ foreach ($url_list as $my_url) {
UrlManager::add_user_to_url(api_get_user_id(),$my_url['id']); if (!in_array($my_url['id'], $my_user_url_list)) {
$url_str.=$my_url['url'].' <br />'; UrlManager::add_user_to_url(api_get_user_id(), $my_url['id']);
} $url_str.=$my_url['url'].' <br />';
} }
Display :: display_normal_message(get_lang('AdminUserRegisteredToThisURL').': '.$url_str.'<br />',false);
} }
Display :: display_normal_message(get_lang('AdminUserRegisteredToThisURL').': '.$url_str.'<br />',false);
} }
break; }
} break;
} }
} }
Security::clear_token(); Security::clear_token();
} }
$parameters['sec_token'] = Security::get_token(); $parameters['sec_token'] = Security::get_token();
// checking if the admin is registered in all sites // checking if the admin is registered in all sites
$url_string=''; $url_string='';
$my_user_url_list = api_get_access_url_from_user(api_get_user_id()); $my_user_url_list = api_get_access_url_from_user(api_get_user_id());
foreach($url_list as $my_url) { foreach ($url_list as $my_url) {
if (!in_array($my_url['id'],$my_user_url_list)){ if (!in_array($my_url['id'], $my_user_url_list)){
$url_string.=$my_url['url'].' <br />'; $url_string.=$my_url['url'].' <br />';
} }
} }
if(!empty($url_string)) { if(!empty($url_string)) {
Display :: display_warning_message(get_lang('AdminShouldBeRegisterInSite').'<br />'.$url_string,false); Display :: display_warning_message(get_lang('AdminShouldBeRegisterInSite').'<br />'.$url_string,false);
} }
// checking the current installation // checking the current installation
if ($current_access_url_id==-1) { if ($current_access_url_id==-1) {
Display :: display_warning_message(get_lang('URLNotConfiguredPleaseChangedTo').': '.api_get_path(WEB_PATH)); Display::display_warning_message(get_lang('URLNotConfiguredPleaseChangedTo').': '.api_get_path(WEB_PATH));
} elseif(api_is_platform_admin()) { } elseif(api_is_platform_admin()) {
$quant= UrlManager::relation_url_user_exist(api_get_user_id(),$current_access_url_id); $quant= UrlManager::relation_url_user_exist(api_get_user_id(),$current_access_url_id);
if ($quant==0) { if ($quant==0) {
@ -102,6 +105,22 @@ echo '<div class="actions">';
echo Display::url(Display::return_icon('new_link.png', get_lang('AddUrl'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit.php'); echo Display::url(Display::return_icon('new_link.png', get_lang('AddUrl'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit.php');
echo Display::url(Display::return_icon('user.png', get_lang('ManageUsers'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_users_to_url.php'); echo Display::url(Display::return_icon('user.png', get_lang('ManageUsers'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_users_to_url.php');
echo Display::url(Display::return_icon('course.png', get_lang('ManageCourses'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_courses_to_url.php'); echo Display::url(Display::return_icon('course.png', get_lang('ManageCourses'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_courses_to_url.php');
//echo Display::url(Display::return_icon('session.png', get_lang('ManageSessions'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_sessions_to_url.php');
$userGroup = new Usergroup();
if ($userGroup->getUseMultipleUrl()) {
echo Display::url(
Display::return_icon('class.png', get_lang('ManageUserGroup'), array(), ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'admin/access_url_edit_usergroup_to_url.php'
);
}
if (isMultipleUrlSupport()) {
echo Display::url(
Display::return_icon('folder.png', get_lang('ManageCourseCategories'), array(), ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'admin/access_url_edit_course_category_to_url.php'
);
}
//echo Display::url(Display::return_icon('session.png', get_lang('ManageSessions'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_sessions_to_url.php'); //echo Display::url(Display::return_icon('session.png', get_lang('ManageSessions'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/access_url_edit_sessions_to_url.php');
echo '</div>'; echo '</div>';
@ -167,5 +186,4 @@ $table->set_header(5, get_lang('Active'));
$table->set_header(6, get_lang('Modify'), false); $table->set_header(6, get_lang('Modify'), false);
$table->display(); $table->display();
/* FOOTER */ Display :: display_footer();
Display :: display_footer();

@ -107,7 +107,7 @@ if (isset($_GET['msg']) && $_GET['msg'] == 'ok') {
$OkMsg = get_lang('SessionCategoryUpdate'); $OkMsg = get_lang('SessionCategoryUpdate');
} }
$page = isset($_GET['page']) ? $_GET['page'] : null; $page = isset($_GET['page']) ? Security::remove_XSS($_GET['page']) : null;
Display::display_header($tool_name); Display::display_header($tool_name);
@ -124,10 +124,18 @@ if ((isset($_POST['CategorySessionId']) && $_POST['formSent'] == 0) || isset($_G
$rows_session_category = SessionManager::get_all_session_category(); $rows_session_category = SessionManager::get_all_session_category();
if (empty($rows_session_category)) { if (empty($rows_session_category)) {
Display::display_warning_message(get_lang('YouNeedToAddASessionCategoryFirst')); Display::display_warning_message(get_lang('YouNeedToAddASessionCategoryFirst'));
Display::display_footer();
exit;
} }
$sql = "SELECT id, name FROM $tbl_session $where ORDER BY name"; if (api_get_multiple_access_url()) {
$result = Database::query($sql); $table_access_url_rel_session= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
$sql = "SELECT s.id, s.name FROM $tbl_session s INNER JOIN $table_access_url_rel_session u ON s.id = u.session_id $where AND u.access_url_id = $access_url_id ORDER BY name";
} else {
$sql = "SELECT id, name FROM $tbl_session $where ORDER BY name";
}
$result=Database::query($sql);
$rows_session = Database::store_result($result); $rows_session = Database::store_result($result);
?> ?>
<form name="formulaire" method="post" <form name="formulaire" method="post"

@ -344,3 +344,5 @@ function makepost(select) {
return ret; return ret;
} }
</script> </script>
<?php
Display::display_footer();

@ -317,7 +317,7 @@ function loadUsersInSelect(select){
else if(window.ActiveXObject) // Internet Explorer else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else // XMLHttpRequest non supporté par le navigateur else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr_object.open("POST", "loadUsersInSelect.ajax.php"); xhr_object.open("POST", "loadUsersInSelect.ajax.php");

@ -37,8 +37,8 @@ if ($form->validate()) {
if ($result) { if ($result) {
// Creating temp folders // Creating temp folders
/** @var ChamiloLMS\Component\DataFilesystem\DataFilesystem $filesystem */ /** @var ChamiloLMS\Component\DataFilesystem\DataFilesystem $filesystem */
$filesystem = $app['chamilo.filesystem']; /* $filesystem = $app['chamilo.filesystem'];
$filesystem->createFolders($app['temp.paths']->folders); $filesystem->createFolders($app['temp.paths']->folders); */
$message = 'ArchiveDirCleanupSucceeded'; $message = 'ArchiveDirCleanupSucceeded';
$type = 'confirmation'; $type = 'confirmation';

@ -60,11 +60,19 @@ $form->addRule('visual_code', get_lang('Max'), 'maxlength', CourseManager::MAX_C
$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" class="chzn-select" style="width:350px" multiple="multiple" '); $form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, ' id="course_teachers" class="chzn-select" style="width:350px" multiple="multiple" ');
$form->applyFilter('course_teachers', 'html_filter'); $form->applyFilter('course_teachers', 'html_filter');
$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), array(), array('style' => 'width:350px', 'class'=>'chzn-select', 'id'=>'category_code'));
$categories_select->addOption('-','');
$form->applyFilter('category_code', 'html_filter');
//This function fills the category_code select ... //This function fills the category_code select ...
CourseManager::select_and_sort_categories($categories_select); $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->addElement(
'select_ajax',
'category_code',
get_lang('CourseFaculty'),
null,
array(
'url' => $url
// 'formatResult' => 'function(item) { return item.name + "'" +item.code; }'
)
);
// Course department // Course department
$form->add_textfield('department_name', get_lang('CourseDepartment'), false, array ('size' => '60')); $form->add_textfield('department_name', get_lang('CourseDepartment'), false, array ('size' => '60'));

@ -3,7 +3,7 @@
/** /**
* @package chamilo.admin * @package chamilo.admin
*/ */
/* Initialization section */
// name of the language file that needs to be included // name of the language file that needs to be included
$language_file = 'admin'; $language_file = 'admin';
$cidReset = true; $cidReset = true;

@ -25,9 +25,10 @@ $archivePath = api_get_path(SYS_ARCHIVE_PATH);
$archiveURL = api_get_path(WEB_CODE_PATH).'course_info/download.php?archive='; $archiveURL = api_get_path(WEB_CODE_PATH).'course_info/download.php?archive=';
$course_list = CourseManager::get_courses_list(); $course_list = CourseManager::get_courses_list();
$formSent = null;
if ($_POST['formSent']) { if (isset($_POST['formSent']) && $_POST['formSent']) {
$formSent =$_POST['formSent']; $formSent = $_POST['formSent'];
$select_type=intval($_POST['select_type']); $select_type=intval($_POST['select_type']);
$file_type = 'csv'; $file_type = 'csv';
$courses = $selected_courses = array(); $courses = $selected_courses = array();

@ -138,7 +138,6 @@ function save_data($courses) {
CourseManager::add_user_to_course($teacher['user_id'], $course_info['code'], COURSEMANAGER); CourseManager::add_user_to_course($teacher['user_id'], $course_info['code'], COURSEMANAGER);
} }
} }
$msg .= '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/"> $msg .= '<a href="'.api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/">
'.$course_info['title'].'</a> '.get_lang('Created').'<br />'; '.$course_info['title'].'</a> '.get_lang('Created').'<br />';
} }

@ -16,8 +16,7 @@ $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/gradebookitem.class.php'; $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null;
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/category.class.php';
/** /**
* Get the number of courses which will be displayed * Get the number of courses which will be displayed
@ -64,6 +63,11 @@ function get_number_of_courses()
/** /**
* Get course data to display * Get course data to display
* @param int $from
* @param int $number_of_items
* @param int $column
* @param string $direction
* @return array
*/ */
function get_course_data($from, $number_of_items, $column, $direction) { function get_course_data($from, $number_of_items, $column, $direction) {
$course_table = Database::get_main_table(TABLE_MAIN_COURSE); $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
@ -111,7 +115,6 @@ function get_course_data($from, $number_of_items, $column, $direction) {
$res = Database::query($sql); $res = Database::query($sql);
$courses = array (); $courses = array ();
while ($course = Database::fetch_array($res)) { while ($course = Database::fetch_array($res)) {
// Place colour icons in front of courses. // Place colour icons in front of courses.
$show_visual_code = $course['visual_code'] != $course[2] ? Display::label($course['visual_code'], 'info') : null; $show_visual_code = $course['visual_code'] != $course[2] ? Display::label($course['visual_code'], 'info') : null;
$course[1] = get_course_visibility_icon($course[8]).'<a href="'.api_get_path(WEB_COURSE_PATH).$course[9].'/index.php">'.$course[1].'</a> '.$show_visual_code; $course[1] = get_course_visibility_icon($course[8]).'<a href="'.api_get_path(WEB_COURSE_PATH).$course[9].'/index.php">'.$course[1].'</a> '.$show_visual_code;
@ -123,10 +126,61 @@ function get_course_data($from, $number_of_items, $column, $direction) {
return $courses; return $courses;
} }
/**
* Get course data to display filtered by session name
* @param int $from
* @param int $number_of_items
* @param int $column
* @param string $direction
* @return array
*/
function get_course_data_by_session($from, $number_of_items, $column, $direction)
{
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT c.code AS col0,
c.title AS col1,
c.code AS col2,
c.course_language AS col3,
c.category_code AS col4,
c.subscribe AS col5,
c.unsubscribe AS col6,
c.code AS col7,
c.visibility AS col8,
c.directory as col9,
c.visual_code
FROM $course_table c
INNER JOIN $session_rel_course r ON c.code = r.course_code
INNER JOIN $session s ON r.id_session = s.id
";
if (isset($_GET['session_id']) && !empty($_GET['session_id'])) {
$sessionId = intval($_GET['session_id']);
$sql.= " WHERE s.id = ".$sessionId;
}
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$courses = array ();
while ($course = Database::fetch_array($res)) {
// Place colour icons in front of courses.
$show_visual_code = $course['visual_code'] != $course[2] ? Display::label($course['visual_code'], 'info') : null;
$course[1] = get_course_visibility_icon($course[8]).'<a href="'.api_get_path(WEB_COURSE_PATH).$course[9].'/index.php">'.$course[1].'</a> '.$show_visual_code;
$course[5] = $course[5] == SUBSCRIBE_ALLOWED ? get_lang('Yes') : get_lang('No');
$course[6] = $course[6] == UNSUBSCRIBE_ALLOWED ? get_lang('Yes') : get_lang('No');
$course_rem = array($course[0], $course[1], $course[2], $course[3], $course[4], $course[5], $course[6], $course[7]);
$courses[] = $course_rem;
}
return $courses;
}
/** /**
* Filter to display the edit-buttons * Filter to display the edit-buttons
*/ */
function modify_filter($code) { function modify_filter($code)
{
$icourse = api_get_course_info($code); $icourse = api_get_course_info($code);
return return
'<a href="course_information.php?code='.$code.'">'.Display::return_icon('synthese_view.gif', get_lang('Info')).'</a>&nbsp;'. '<a href="course_information.php?code='.$code.'">'.Display::return_icon('synthese_view.gif', get_lang('Info')).'</a>&nbsp;'.
@ -194,9 +248,20 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
$form->addElement('header', $tool_name); $form->addElement('header', $tool_name);
$form->add_textfield('keyword_code', get_lang('CourseCode'), false); $form->add_textfield('keyword_code', get_lang('CourseCode'), false);
$form->add_textfield('keyword_title', get_lang('Title'), false); $form->add_textfield('keyword_title', get_lang('Title'), false);
$categories = array();
$categories_select = $form->addElement('select', 'keyword_category', get_lang('CourseFaculty'), $categories); // Category code
CourseManager::select_and_sort_categories($categories_select); $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->addElement(
'select_ajax',
'keyword_category',
get_lang('CourseFaculty'),
null,
array(
'url' => $url
)
);
$el = $form->addElement('select_language', 'keyword_language', get_lang('CourseLanguage')); $el = $form->addElement('select_language', 'keyword_language', get_lang('CourseLanguage'));
$el->addOption(get_lang('All'), '%'); $el->addOption(get_lang('All'), '%');
$form->addElement('radio', 'keyword_visibility', get_lang("CourseAccess"), get_lang('OpenToTheWorld'), COURSE_VISIBILITY_OPEN_WORLD); $form->addElement('radio', 'keyword_visibility', get_lang("CourseAccess"), get_lang('OpenToTheWorld'), COURSE_VISIBILITY_OPEN_WORLD);
@ -211,7 +276,7 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
$form->addElement('radio', 'keyword_unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1); $form->addElement('radio', 'keyword_unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1);
$form->addElement('radio', 'keyword_unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0); $form->addElement('radio', 'keyword_unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0);
$form->addElement('radio', 'keyword_unsubscribe', null, get_lang('All'), '%'); $form->addElement('radio', 'keyword_unsubscribe', null, get_lang('All'), '%');
$form->addElement('style_submit_button', 'submit', get_lang('SearchCourse'),'class="btn"'); $form->addElement('style_submit_button', 'submit', get_lang('SearchCourse'), 'class="btn"');
$defaults['keyword_language'] = '%'; $defaults['keyword_language'] = '%';
$defaults['keyword_visibility'] = '%'; $defaults['keyword_visibility'] = '%';
$defaults['keyword_subscribe'] = '%'; $defaults['keyword_subscribe'] = '%';
@ -248,15 +313,47 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
$form->addElement('style_submit_button', 'submit', get_lang('SearchCourse'), 'class="btn"'); $form->addElement('style_submit_button', 'submit', get_lang('SearchCourse'), 'class="btn"');
$form->addElement('static', 'search_advanced_link', null, '<a href="course_list.php?search=advanced">'.get_lang('AdvancedSearch').'</a>'); $form->addElement('static', 'search_advanced_link', null, '<a href="course_list.php?search=advanced">'.get_lang('AdvancedSearch').'</a>');
// Create a filter by session
$sessionFilter = new FormValidator('course_filter', 'get', '', '', array('class'=> 'form-search'), false);
$url = api_get_path(WEB_AJAX_PATH).'session.ajax.php?a=search_session';
$sessionList = array();
if (!empty($sessionId)) {
$sessionList = array();
$sessionInfo = SessionManager::fetch($sessionId);
$sessionList[] = array('id' => $sessionInfo['id'], 'text' => $sessionInfo['name']);
}
$sessionFilter->addElement('select_ajax', 'session_name', get_lang('SearchCourseBySession'), null, array('url' => $url, 'defaults' => $sessionList));
$courseListUrl = api_get_self();
$actions = '
<script>
$(function() {
$("#session_name").on("change", function() {
var sessionId = $(this).val();
window.location = "'.$courseListUrl.'?session_id="+sessionId;
});
});
</script>';
$actions .= '<div class="pull-right">';
$actions .= '<a href="course_add.php">'.Display::return_icon('new_course.png', get_lang('AddCourse'),'',ICON_SIZE_MEDIUM).'</a> '; $actions .= '<a href="course_add.php">'.Display::return_icon('new_course.png', get_lang('AddCourse'),'',ICON_SIZE_MEDIUM).'</a> ';
if (api_get_setting('course_validation') == 'true') { if (api_get_setting('course_validation') == 'true') {
$actions .= '<a href="course_request_review.php">'.Display::return_icon('course_request_pending.png', get_lang('ReviewCourseRequests'),'',ICON_SIZE_MEDIUM).'</a>'; $actions .= '<a href="course_request_review.php">'.Display::return_icon('course_request_pending.png', get_lang('ReviewCourseRequests'),'',ICON_SIZE_MEDIUM).'</a>';
} }
$actions .= '</div>';
$actions .= '<div class="pull-right">';
$actions .= $sessionFilter->return_form();
$actions .= '</div>';
$actions .= $form->return_form(); $actions .= $form->return_form();
// Create a sortable table with the course data if (isset($_GET['session_id']) && !empty($_GET['session_id'])) {
$table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data', 2); // Create a sortable table with the course data filtered by session
$table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data_by_session', 2);
} else {
// Create a sortable table with the course data
$table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data', 2);
}
$parameters=array(); $parameters=array();
if (isset ($_GET['keyword'])) { if (isset ($_GET['keyword'])) {

@ -18,7 +18,7 @@ $language_file = array('admin', 'create_course');
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;

@ -13,7 +13,7 @@
$language_file = array('admin', 'create_course'); $language_file = array('admin', 'create_course');
$cidReset = true; $cidReset = true;
require '../inc/global.inc.php'; //require '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$tool_name = get_lang('CourseRequestEdit'); $tool_name = get_lang('CourseRequestEdit');
@ -45,7 +45,7 @@ if ($course_validation_feature) {
$form = new FormValidator('add_course', 'post', 'course_request_edit.php?id='.$id.'&caller='.$caller); $form = new FormValidator('add_course', 'post', 'course_request_edit.php?id='.$id.'&caller='.$caller);
// Form title. // Form title.
$form->addElement('header', '', $tool_name); $form->addElement('header', $tool_name);
// Title. // Title.
$form->addElement('text', 'title', get_lang('CourseName'), array('size' => '60', 'id' => 'title')); $form->addElement('text', 'title', get_lang('CourseName'), array('size' => '60', 'id' => 'title'));
@ -53,9 +53,25 @@ if ($course_validation_feature) {
$form->addRule('title', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('title', get_lang('ThisFieldIsRequired'), 'required');
// Course category. // Course category.
$categories_select = $form->addElement('select', 'category_code', get_lang('Fac'), array()); $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_category';
$form->applyFilter('category_code', 'html_filter');
CourseManager::select_and_sort_categories($categories_select); $categoryList = array();
if (!empty($course_request_info['category_code'])) {
$data = getCategory($course_request_info['category_code']);
$categoryList[] = array('id' => $data['code'], 'text' => $data['name']);
}
$form->addElement(
'select_ajax',
'category_code',
get_lang('CourseFaculty'),
null,
array(
'url' => $url,
'defaults' => $categoryList
)
);
// Course code. // Course code.
$form->add_textfield('wanted_code', get_lang('Code'), false, array('size' => '$maxlength', 'maxlength' => $maxlength)); $form->add_textfield('wanted_code', get_lang('Code'), false, array('size' => '$maxlength', 'maxlength' => $maxlength));
@ -86,15 +102,15 @@ if ($course_validation_feature) {
$form->addElement('checkbox', 'exemplary_content', get_lang('FillWithExemplaryContent')); $form->addElement('checkbox', 'exemplary_content', get_lang('FillWithExemplaryContent'));
// Submit buttons. // Submit buttons.
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'save_button', get_lang('Save'), array('class' => 'save')); $submit_buttons[] = $form->createElement('style_submit_button', 'save_button', get_lang('Save'), array('class' => 'save'));
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED) { if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'accept_button', get_lang('Accept'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/accept.png);')); $submit_buttons[] = $form->createElement('style_submit_button', 'accept_button', get_lang('Accept'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/accept.png);'));
} }
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && $course_request_info['status'] != COURSE_REQUEST_REJECTED) { if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && $course_request_info['status'] != COURSE_REQUEST_REJECTED) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'reject_button', get_lang('Reject'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/error.png);')); $submit_buttons[] = $form->createElement('style_submit_button', 'reject_button', get_lang('Reject'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'icons/16/error.png);'));
} }
if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && intval($course_request_info['info']) <= 0) { if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && intval($course_request_info['info']) <= 0) {
$submit_buttons[] = FormValidator::createElement('style_submit_button', 'ask_info_button', get_lang('AskAdditionalInfo'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'request_info.gif);')); $submit_buttons[] = $form->createElement('style_submit_button', 'ask_info_button', get_lang('AskAdditionalInfo'), array('class' => 'save', 'style' => 'background-image: url('.api_get_path(WEB_IMG_PATH).'request_info.gif);'));
} }
$form->addGroup($submit_buttons); $form->addGroup($submit_buttons);
@ -152,7 +168,8 @@ if ($course_validation_feature) {
$is_error_message = false; $is_error_message = false;
// Update the course request. // Update the course request.
$update_ok = CourseRequestManager::update_course_request($id, $update_ok = CourseRequestManager::update_course_request(
$id,
$course_request_values['wanted_code'], $course_request_values['wanted_code'],
$course_request_values['title'], $course_request_values['title'],
$course_request_values['description'], $course_request_values['description'],
@ -165,7 +182,7 @@ if ($course_validation_feature) {
); );
if ($update_ok) { if ($update_ok) {
$message[] = sprintf(get_lang(CourseRequestUpdated), $course_request_values['wanted_code']); $message[] = sprintf(get_lang('CourseRequestUpdated'), $course_request_values['wanted_code']);
switch ($submit_button) { switch ($submit_button) {
case 'accept_button': case 'accept_button':
@ -197,7 +214,7 @@ if ($course_validation_feature) {
//$message = 'The button "'.$submit_button.'" has been pressed.'; //$message = 'The button "'.$submit_button.'" has been pressed.';
} else { } else {
$message[] = sprintf(get_lang(CourseRequestUpdateFailed), $course_request_values['wanted_code']); $message[] = sprintf(get_lang('CourseRequestUpdateFailed'), $course_request_values['wanted_code']);
$is_error_message = true; $is_error_message = true;
} }
@ -218,14 +235,11 @@ if ($course_validation_feature) {
} }
} }
} }
} else { } else {
// Prepare an error message notifying that the course validation feature has not been enabled. // Prepare an error message notifying that the course validation feature has not been enabled.
$link_to_setting = api_get_path(WEB_CODE_PATH).'admin/settings.php?category=Platform#course_validation'; $link_to_setting = api_get_path(WEB_CODE_PATH).'admin/settings.php?search_field=course_validation&submit_button=&category=search_setting';
$message = sprintf(get_lang('PleaseActivateCourseValidationFeature'), sprintf('<strong><a href="%s">%s</a></strong>', $link_to_setting, get_lang('EnableCourseValidation'))); $message = sprintf(get_lang('PleaseActivateCourseValidationFeature'), sprintf('<strong><a href="%s">%s</a></strong>', $link_to_setting, get_lang('EnableCourseValidation')));
$is_error_message = true; $is_error_message = true;
} }
// Functions. // Functions.

@ -125,9 +125,6 @@ $language_file = array ('admin', 'registration');
$cidReset = true; $cidReset = true;
// Including the global Dokeos file.
include '../inc/global.inc.php';
// Setting the section (for the tabs). // Setting the section (for the tabs).
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
@ -175,9 +172,6 @@ if ($form->validate()) {
// Displaying the header. // Displaying the header.
Display :: display_header($tool_name); Display :: display_header($tool_name);
// Displaying the tool title.
// api_display_tool_title($tool_name);
if (isset($errors) && count($errors) != 0) { if (isset($errors) && count($errors) != 0) {
$error_message = '<ul>'; $error_message = '<ul>';
foreach ($errors as $index => $error_course) { foreach ($errors as $index => $error_course) {

@ -12,7 +12,7 @@ $language_file = 'admin';
$cidReset = true; $cidReset = true;
// including some necessary dokeos files // including some necessary dokeos files
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
global $_configuration; global $_configuration;
// create an ajax object // create an ajax object

@ -11,8 +11,6 @@ $language_file='admin';
// resetting the course id // resetting the course id
$cidReset=true; $cidReset=true;
// including some necessary dokeos files
require_once '../inc/global.inc.php';
global $_configuration; global $_configuration;
// create an ajax object // create an ajax object
@ -98,8 +96,7 @@ function search_sessions($needle,$type) {
$xajax->processRequests(); $xajax->processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/'); $htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = ' $htmlHeadXtra[] = '<script>
<script>
function valide() { function valide() {
var options = document.getElementById("destination").options; var options = document.getElementById("destination").options;
for (i = 0 ; i<options.length ; i++) { for (i = 0 ; i<options.length ; i++) {
@ -115,7 +112,6 @@ function remove_item(origin) {
} }
} }
} }
-->
</script>'; </script>';
$formSent=0; $formSent=0;
@ -147,6 +143,7 @@ echo Display::page_header(sprintf(get_lang('AssignSessionsToX'), api_get_person_
$assigned_sessions_to_hrm = SessionManager::get_sessions_followed_by_drh($user_id); $assigned_sessions_to_hrm = SessionManager::get_sessions_followed_by_drh($user_id);
$assigned_sessions_id = array_keys($assigned_sessions_to_hrm); $assigned_sessions_id = array_keys($assigned_sessions_to_hrm);
$without_assigned_sessions = ''; $without_assigned_sessions = '';
if (count($assigned_sessions_id) > 0) { if (count($assigned_sessions_id) > 0) {
$without_assigned_sessions = " AND s.id NOT IN(".implode(',',$assigned_sessions_id).")"; $without_assigned_sessions = " AND s.id NOT IN(".implode(',',$assigned_sessions_id).")";
@ -257,7 +254,6 @@ if(!empty($msg)) {
</select></td> </select></td>
</tr> </tr>
</table> </table>
</form> </form>
<?php <?php

@ -6,8 +6,6 @@
* @package chamilo.admin * @package chamilo.admin
*/ */
// name of the language file that needs to be included
$language_file='admin';
// resetting the course id // resetting the course id
$cidReset=true; $cidReset=true;

@ -10,7 +10,7 @@ $language_file = array('admin', 'registration', 'userInfo');
$cidReset = true; $cidReset = true;
// Including necessary libraries. // Including necessary libraries.
require '../inc/global.inc.php'; //require '../inc/global.inc.php';
// Section for the tabs // Section for the tabs
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;

@ -6,7 +6,7 @@
// Language files that should be included // Language files that should be included
$language_file = array('admin', 'userInfo'); $language_file = array('admin', 'userInfo');
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();

@ -9,7 +9,7 @@
// name of the language file that needs to be included // name of the language file that needs to be included
$language_file = array('registration', 'admin', 'userInfo'); $language_file = array('registration', 'admin', 'userInfo');
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(true); api_protect_admin_script(true);

@ -32,5 +32,4 @@ while($row = Database::fetch_array($result)) {
//$last_connection_date = UserManager:: delete_inactive_student($user_id, 2, true); //$last_connection_date = UserManager:: delete_inactive_student($user_id, 2, true);
} }
/* FOOTER */
Display :: display_footer(); Display :: display_footer();

@ -121,23 +121,19 @@ $htmlHeadXtra[] = '<script>
$tbl_admin_languages = Database :: get_main_table(TABLE_MAIN_LANGUAGE); $tbl_admin_languages = Database :: get_main_table(TABLE_MAIN_LANGUAGE);
$tbl_settings_current = Database :: get_main_table(TABLE_MAIN_SETTINGS_CURRENT); $tbl_settings_current = Database :: get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
/*
==============================================================================
STORING THE CHANGES
==============================================================================
*/
// we change the availability // we change the availability
if ($action == 'makeunavailable') { if ($action == 'makeunavailable') {
if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) { if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) {
SubLanguageManager::make_unavailable_language($_GET['id']); SubLanguageManager::make_unavailable_language($_GET['id']);
} }
} }
if ($action == 'makeavailable') { if ($action == 'makeavailable') {
if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) { if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) {
SubLanguageManager::make_available_language($_GET['id']); SubLanguageManager::make_available_language($_GET['id']);
} }
} }
if ($action == 'setplatformlanguage') { if ($action == 'setplatformlanguage') {
if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) { if (isset($_GET['id']) && $_GET['id'] == strval(intval($_GET['id']))) {
SubLanguageManager::set_platform_language($_GET['id']); SubLanguageManager::set_platform_language($_GET['id']);
@ -180,11 +176,6 @@ if (isset($_POST['Submit']) && $_POST['Submit']) {
} }
/*
==============================================================================
MAIN CODE
==============================================================================
*/
// setting the name of the tool // setting the name of the tool
$tool_name = get_lang('PlatformLanguages'); $tool_name = get_lang('PlatformLanguages');
@ -194,7 +185,7 @@ $interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdm
// including the header file (which includes the banner itself) // including the header file (which includes the banner itself)
Display :: display_header($tool_name); Display :: display_header($tool_name);
if ($action == 'make_unavailable_confirmed') { if (isset($_GET['action']) && $_GET['action'] == 'make_unavailable_confirmed') {
$language_info = SubLanguageManager::get_all_information_of_language($_GET['id']); $language_info = SubLanguageManager::get_all_information_of_language($_GET['id']);
if ($language_info['available'] == 1) { if ($language_info['available'] == 1) {
SubLanguageManager::make_unavailable_language($_GET['id']); SubLanguageManager::make_unavailable_language($_GET['id']);
@ -215,16 +206,9 @@ $sql_select_lang = "SELECT * FROM $tbl_settings_current WHERE category='Languag
$result_select_lang = Database::query($sql_select_lang); $result_select_lang = Database::query($sql_select_lang);
$row_lang = Database::fetch_array($result_select_lang); $row_lang = Database::fetch_array($result_select_lang);
/*
--------------------------------------
DISPLAY THE TABLE
--------------------------------------
*/
// the table data // the table data
$language_data = array(); $language_data = array();
while ($row = Database::fetch_array($result_select)) { while ($row = Database::fetch_array($result_select)) {
$row_td = array(); $row_td = array();
$row_td[] = $row['id']; $row_td[] = $row['id'];
// the first column is the original name of the language OR a form containing the original name // the first column is the original name of the language OR a form containing the original name
@ -252,7 +236,10 @@ while ($row = Database::fetch_array($result_select)) {
} }
$allow_delete_sub_language = null; $allow_delete_sub_language = null;
$allow_add_term_sub_language = null;
if (api_get_setting('allow_use_sub_language') == 'true') { if (api_get_setting('allow_use_sub_language') == 'true') {
$verified_if_is_sub_language = SubLanguageManager::check_if_language_is_sub_language($row['id']); $verified_if_is_sub_language = SubLanguageManager::check_if_language_is_sub_language($row['id']);
if ($verified_if_is_sub_language === false) { if ($verified_if_is_sub_language === false) {
@ -301,10 +288,4 @@ $table->set_form_actions($form_actions);
echo '<div id="id_content_message">&nbsp;</div>'; echo '<div id="id_content_message">&nbsp;</div>';
$table->display(); $table->display();
/*
==============================================================================
FOOTER
==============================================================================
*/
Display :: display_footer(); Display :: display_footer();
?>

@ -54,22 +54,22 @@ $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_promotions';
//The order is important you need to check the model.ajax.php the $column variable //The order is important you need to check the model.ajax.php the $column variable
$columns = array(get_lang('Name'),get_lang('Career'),get_lang('Description'),get_lang('Actions')); $columns = array(get_lang('Name'),get_lang('Career'),get_lang('Description'),get_lang('Actions'));
$column_model = array( $column_model = array(
array('name'=>'name', 'index'=>'name', 'width'=>'180', 'align'=>'left'), array('name'=>'name', 'index'=>'name', 'width'=>'180', 'align'=>'left'),
array('name'=>'career', 'index'=>'career', 'width'=>'100', 'align'=>'left'), array('name'=>'career', 'index'=>'career', 'width'=>'100', 'align'=>'left'),
array('name'=>'description', 'index'=>'description', 'width'=>'500', 'align'=>'left','sortable'=>'false'), array('name'=>'description', 'index'=>'description', 'width'=>'500', 'align'=>'left','sortable'=>'false'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false'), array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false'),
); );
$extra_params['autowidth'] = 'true'; //use the width of the parent $extra_params['autowidth'] = 'true'; //use the width of the parent
//$extra_params['editurl'] = $url; //use the width of the parent //$extra_params['editurl'] = $url; //use the width of the parent
$extra_params['height'] = 'auto'; //use the width of the parent $extra_params['height'] = 'auto'; //use the width of the parent
//With this function we can add actions to the jgrid //With this function we can add actions to the jgrid
$action_links = 'function action_formatter (cellvalue, options, rowObject) { $action_links = 'function action_formatter (cellvalue, options, rowObject) {
return \'<a href="add_sessions_to_promotion.php?id=\'+options.rowId+\'">'.Display::return_icon('session_to_promotion.png',get_lang('SubscribeSessionsToPromotions'),'',ICON_SIZE_SMALL).'</a>'. return \'<a href="add_sessions_to_promotion.php?id=\'+options.rowId+\'">'.Display::return_icon('session_to_promotion.png',get_lang('SubscribeSessionsToPromotions'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'. '&nbsp;<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;" href="?sec_token='.$token.'&action=copy&id=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',ICON_SIZE_SMALL).'</a>'. '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;" href="?sec_token='.$token.'&action=copy&id=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;" href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a> \'; '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;" href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a> \';
}'; }';
?> ?>
<script> <script>

@ -222,3 +222,4 @@ function setDisable(select) {
} }
</script> </script>
<?php <?php
Display::display_footer();

@ -8,13 +8,13 @@
$language_file = array('admin', 'registration'); $language_file = array('admin', 'registration');
$cidReset = true; $cidReset = true;
require '../inc/global.inc.php'; //require '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(true); api_protect_admin_script(true);
$form_sent = 0; $form_sent = 0;
$error_message = ''; $error_message = ''; // Avoid conflict with the global variable $error_msg (array type) in add_course.conf.php.
if (isset($_GET['action']) && $_GET['action'] == 'show_message') { if (isset($_GET['action']) && $_GET['action'] == 'show_message') {
$error_message = Security::remove_XSS($_GET['message']); $error_message = Security::remove_XSS($_GET['message']);
} }
@ -32,9 +32,9 @@ $interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$session_id
set_time_limit(0); set_time_limit(0);
if ($_POST['formSent']) { if (isset($_POST['formSent']) && $_POST['formSent']) {
if (isset($_FILES['import_file']['tmp_name']) && !empty($_FILES['import_file']['tmp_name'])) { if (isset($_FILES['import_file']['tmp_name']) && !empty($_FILES['import_file']['tmp_name'])) {
$form_sent = $_POST['formSent']; $form_sent = $_POST['formSent'];
$send_mail = $_POST['sendMail'] ? 1 : 0; $send_mail = $_POST['sendMail'] ? 1 : 0;
// CSV // CSV
@ -48,14 +48,14 @@ if ($_POST['formSent']) {
} }
} }
if (!empty($user_list)) { if (!empty($user_list)) {
SessionManager::suscribe_users_to_session($session_id, $user_list, null, false, $send_mail); SessionManager::suscribe_users_to_session($session_id, $user_list, null, false, $send_mail);
foreach ($user_list as & $user_id) { foreach ($user_list as & $user_id) {
$user_info = api_get_user_info($user_id); $user_info = api_get_user_info($user_id);
$user_id = $user_info['complete_name']; $user_id = $user_info['complete_name'];
} }
$error_message = get_lang('UsersAdded').' : '.implode(', ', $user_list); $error_message = get_lang('UsersAdded').' : '.implode(', ', $user_list);
} }
} else { } else {
$error_message = get_lang('NoInputFile'); $error_message = get_lang('NoInputFile');
} }
@ -84,7 +84,6 @@ if (!empty($error_message)) {
$form = new FormValidator('import_sessions', 'post', api_get_self().'?id_session='.$session_id, null, array('enctype' => 'multipart/form-data')); $form = new FormValidator('import_sessions', 'post', api_get_self().'?id_session='.$session_id, null, array('enctype' => 'multipart/form-data'));
$form->addElement('hidden', 'formSent', 1); $form->addElement('hidden', 'formSent', 1);
$form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation')); $form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation'));
$form->addElement('checkbox', 'sendMail', null, get_lang('SendMailToUsers')); $form->addElement('checkbox', 'sendMail', null, get_lang('SendMailToUsers'));
$form->addElement('button', 'submit', get_lang('Import')); $form->addElement('button', 'submit', get_lang('Import'));
@ -100,12 +99,11 @@ $form->display();
<blockquote> <blockquote>
<pre> <pre>
username; username;
jdoe; admin;
teacher;
jmontoya; jmontoya;
</pre> </pre>
</blockquote> </blockquote>
<?php <?php
/* FOOTER */
Display::display_footer(); Display::display_footer();

@ -446,7 +446,7 @@ function upload_stylesheet($values, $picture)
} }
/** /**
* * Store plugin regions.
*/ */
function store_regions() function store_regions()
{ {
@ -464,6 +464,7 @@ function store_regions()
} }
} }
$shortlist_installed = array_flip(array_flip($shortlist_installed)); $shortlist_installed = array_flip(array_flip($shortlist_installed));
$plugin_list = $plugin_obj->read_plugins_from_path(); $plugin_list = $plugin_obj->read_plugins_from_path();
foreach ($plugin_list as $plugin) { foreach ($plugin_list as $plugin) {
@ -487,16 +488,16 @@ function store_regions()
*/ */
function store_plugins() function store_plugins()
{ {
$plugin_obj = new AppPlugin(); $appPlugin = new AppPlugin();
// Get a list of all current 'Plugins' settings // Get a list of all current 'Plugins' settings
$plugin_list = $plugin_obj->read_plugins_from_path(); $plugin_list = $appPlugin->read_plugins_from_path();
$installed_plugins = array(); $installed_plugins = array();
foreach ($plugin_list as $plugin) { foreach ($plugin_list as $plugin) {
if (isset($_POST['plugin_'.$plugin])) { if (isset($_POST['plugin_'.$plugin])) {
$plugin_obj->install($plugin); $appPlugin->install($plugin);
$installed_plugins[] = $plugin; $installed_plugins[] = $plugin;
} }
} }
@ -506,8 +507,9 @@ function store_plugins()
} else { } else {
$remove_plugins = $plugin_list; $remove_plugins = $plugin_list;
} }
foreach ($remove_plugins as $plugin) { foreach ($remove_plugins as $plugin) {
$plugin_obj->uninstall($plugin); $appPlugin->uninstall($plugin);
} }
} }
@ -709,9 +711,11 @@ function handle_search()
* @version August 2008 * @version August 2008
* @since Dokeos 1.8.6 * @since Dokeos 1.8.6
*/ */
function handle_templates() function handle_templates() {
{ /* Drive-by fix to avoid undefined var warnings, without repeating
$action = isset($_GET['action']) ? $_GET['action'] : null; * isset() combos all over the place. */
$action = isset($_GET['action']) ? $_GET['action'] : "invalid";
if ($action != 'add') { if ($action != 'add') {
echo '<div class="actions" style="margin-left: 1px;">'; echo '<div class="actions" style="margin-left: 1px;">';
echo '<a href="settings.php?category=Templates&amp;action=add">'.Display::return_icon('new_template.png', get_lang('AddTemplate'),'',ICON_SIZE_MEDIUM).'</a>'; echo '<a href="settings.php?category=Templates&amp;action=add">'.Display::return_icon('new_template.png', get_lang('AddTemplate'),'',ICON_SIZE_MEDIUM).'</a>';
@ -853,7 +857,8 @@ function image_filter($image) {
*/ */
function add_edit_template() { function add_edit_template() {
// Initialize the object. // Initialize the object.
$form = new FormValidator('template', 'post', 'settings.php?category=Templates&action='.Security::remove_XSS($_GET['action']).'&id='.Security::remove_XSS($_GET['id'])); $id = isset($_GET['id']) ? '&id='.Security::remove_XSS($_GET['id']) : '';
$form = new FormValidator('template', 'post', 'settings.php?category=Templates&action='.Security::remove_XSS($_GET['action']).$id);
// Settting the form elements: the header. // Settting the form elements: the header.
if ($_GET['action'] == 'add') { if ($_GET['action'] == 'add') {
@ -1007,6 +1012,7 @@ function delete_template($id) {
// Display a feedback message. // Display a feedback message.
Display::display_confirmation_message(get_lang('TemplateDeleted')); Display::display_confirmation_message(get_lang('TemplateDeleted'));
} }
/** /**
* Returns the list of timezone identifiers used to populate the select * Returns the list of timezone identifiers used to populate the select
* This function is called through a call_user_func() in the generate_settings_form function. * This function is called through a call_user_func() in the generate_settings_form function.
@ -1029,6 +1035,7 @@ function select_timezone_value() {
function select_gradebook_number_decimals() { function select_gradebook_number_decimals() {
return array('0', '1', '2'); return array('0', '1', '2');
} }
function select_gradebook_default_grade_model_id() { function select_gradebook_default_grade_model_id() {
$grade_model = new GradeModel(); $grade_model = new GradeModel();
$models = $grade_model->get_all(); $models = $grade_model->get_all();
@ -1287,7 +1294,7 @@ function generate_settings_form($settings, $settings_by_access_list, $settings_t
} }
$form->addElement('file', 'pdf_export_watermark_path', get_lang('AddWaterMark')); $form->addElement('file', 'pdf_export_watermark_path', get_lang('AddWaterMark'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif'); $allowed_picture_types = array('jpg', 'jpeg', 'png', 'gif');
$form->addRule('pdf_export_watermark_path', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types); $form->addRule('pdf_export_watermark_path', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
break; break;

@ -152,7 +152,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
$mark_all = false; $mark_all = false;
$un_mark_all = false; $un_mark_all = false;
if (!empty($_configuration['multiple_access_urls'])) { if (api_is_multiple_url_enabled()) {
if (isset($values['buttons_in_action_right']) && isset($values['buttons_in_action_right']['mark_all'])) { if (isset($values['buttons_in_action_right']) && isset($values['buttons_in_action_right']['mark_all'])) {
$mark_all = true; $mark_all = true;
} }

@ -11,7 +11,7 @@
$language_file = array ('admin', 'registration'); $language_file = array ('admin', 'registration');
$cidReset = true; $cidReset = true;
require '../inc/global.inc.php'; //require '../inc/global.inc.php';
function validate_data($skills) { function validate_data($skills) {
$errors = array(); $errors = array();

@ -11,7 +11,7 @@ $language_file[] = 'admin';
$cidReset = true; $cidReset = true;
// including necessary libraries // including necessary libraries
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$libpath = api_get_path(LIBRARY_PATH); $libpath = api_get_path(LIBRARY_PATH);
include_once $libpath.'specific_fields_manager.lib.php'; include_once $libpath.'specific_fields_manager.lib.php';

@ -48,7 +48,6 @@ $tools[$strSocial]['report=messagesent'] = get_lang('MessagesSent');
$tools[$strSocial]['report=messagereceived'] = get_lang('MessagesReceived'); $tools[$strSocial]['report=messagereceived'] = get_lang('MessagesReceived');
$tools[$strSocial]['report=friends'] = get_lang('CountFriends'); $tools[$strSocial]['report=friends'] = get_lang('CountFriends');
echo '<table><tr>'; echo '<table><tr>';
foreach ($tools as $section => $items) { foreach ($tools as $section => $items) {
echo '<td style="vertical-align:top;">'; echo '<td style="vertical-align:top;">';

@ -18,6 +18,8 @@ $cidReset = true;
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$_SESSION['this_section']=$this_section; $_SESSION['this_section']=$this_section;
$action = isset($_GET['action']) ? $_GET['action'] : null;
// Access restrictions // Access restrictions
api_protect_admin_script(true); api_protect_admin_script(true);
@ -32,12 +34,12 @@ if (empty($_GET['lang'])) {
$usergroup = new UserGroup(); $usergroup = new UserGroup();
if (isset($_GET['action'])) { if (!empty($action)) {
$interbreadcrumb[] = array ("url" => "system_announcements.php", "name" => get_lang('SystemAnnouncements')); $interbreadcrumb[] = array ("url" => "system_announcements.php", "name" => get_lang('SystemAnnouncements'));
if ($_GET['action'] == 'add') { if ($action == 'add') {
$interbreadcrumb[] = array ("url" => '#', "name" => get_lang('AddAnnouncement')); $interbreadcrumb[] = array ("url" => '#', "name" => get_lang('AddAnnouncement'));
} }
if ($_GET['action'] == 'edit') { if ($action == 'edit') {
$interbreadcrumb[] = array ("url" => '#', "name" => get_lang('Edit')); $interbreadcrumb[] = array ("url" => '#', "name" => get_lang('Edit'));
} }
} else { } else {
@ -47,7 +49,7 @@ if (isset($_GET['action'])) {
// Displaying the header. // Displaying the header.
Display :: display_header($tool_name); Display :: display_header($tool_name);
if ($_GET['action'] != 'add' && $_GET['action'] != 'edit') { if ($action != 'add' && $action != 'edit') {
echo '<div class="actions">'; echo '<div class="actions">';
echo '<a href="?action=add">'.Display::return_icon('add.png', get_lang('AddAnnouncement'), array(), 32).'</a>'; echo '<a href="?action=add">'.Display::return_icon('add.png', get_lang('AddAnnouncement'), array(), 32).'</a>';
echo '</div>'; echo '</div>';
@ -59,7 +61,6 @@ $show_announcement_list = true;
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
// Form was posted? // Form was posted?
$action_todo = false;
if (isset($_POST['action'])) { if (isset($_POST['action'])) {
$action_todo = true; $action_todo = true;
} }
@ -93,6 +94,10 @@ switch($action) {
// Set default time window: NOW -> NEXT WEEK // Set default time window: NOW -> NEXT WEEK
$values['start'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time())); $values['start'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()));
$values['end'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60)); $values['end'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60));
$values['range'] =
substr(api_get_local_time(api_get_local_time()), 0, 16).' / '.
substr(api_get_local_time(api_get_local_time()) + (7 * 24 * 60 * 60), 0, 16);
$action_todo = true; $action_todo = true;
break; break;
case 'edit': case 'edit':
@ -103,6 +108,11 @@ switch($action) {
$values['content'] = $announcement->content; $values['content'] = $announcement->content;
$values['start'] = api_get_local_time($announcement->date_start); $values['start'] = api_get_local_time($announcement->date_start);
$values['end'] = api_get_local_time($announcement->date_end); $values['end'] = api_get_local_time($announcement->date_end);
$values['range'] =
substr(api_get_local_time($announcement->date_start), 0, 16).' / '.
substr(api_get_local_time($announcement->date_end), 0, 16);
$values['visible_teacher'] = $announcement->visible_teacher; $values['visible_teacher'] = $announcement->visible_teacher;
$values['visible_student'] = $announcement->visible_student ; $values['visible_student'] = $announcement->visible_student ;
$values['visible_guest'] = $announcement->visible_guest ; $values['visible_guest'] = $announcement->visible_guest ;
@ -136,7 +146,8 @@ if ($action_todo) {
} else { } else {
$form->add_html_editor('content', get_lang('Content'), true, false, array('ToolbarSet' => 'PortalNews', 'Width' => '100%', 'Height' => '300')); $form->add_html_editor('content', get_lang('Content'), true, false, array('ToolbarSet' => 'PortalNews', 'Width' => '100%', 'Height' => '300'));
} }
$form->add_timewindow('start','end',get_lang('StartTimeWindow'),get_lang('EndTimeWindow')); $form->addDateRangePicker('range', get_lang('StartTimeWindow'), true, array('id' => 'date_range'));
$group = array(); $group = array();
$group[]= $form->createElement('checkbox', 'visible_teacher', null, get_lang('Teacher')); $group[]= $form->createElement('checkbox', 'visible_teacher', null, get_lang('Teacher'));
@ -158,16 +169,20 @@ if ($action_todo) {
$form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar')); $form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar'));
$text=get_lang('AddNews'); $text=get_lang('AddNews');
$class='add'; $class='add';
$form->addElement('hidden', 'action','add'); $form->addElement('hidden', 'action', 'add');
} elseif (isset($_REQUEST['action']) && $_REQUEST['action']=='edit') { } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'edit') {
$text=get_lang('EditNews'); $text=get_lang('EditNews');
$class='save'; $class='save';
$form->addElement('hidden', 'action','edit'); $form->addElement('hidden', 'action', 'edit');
} }
$form->addElement('style_submit_button', 'submit', $text,'class="'.$class.'"'); $form->addElement('checkbox', 'send_email_test', null, get_lang('SendOnlyAnEmailToMySelfToTest'));
$form->addElement('style_submit_button', 'submit', $text, 'class="'.$class.'"');
$form->setDefaults($values); $form->setDefaults($values);
if ($form->validate()) { if ($form->validate()) {
$values = $form->exportValues(); $values = $form->exportValues();
if ( !isset($values['visible_teacher'])) { if ( !isset($values['visible_teacher'])) {
@ -182,10 +197,26 @@ if ($action_todo) {
if ($values['lang'] == 'all') { if ($values['lang'] == 'all') {
$values['lang'] = null; $values['lang'] = null;
} }
$sendMail = isset($values['send_mail']) ? $values['send_mail'] : null;
switch ($values['action']) { switch ($values['action']) {
case 'add': case 'add':
$announcement_id = SystemAnnouncementManager::add_announcement($values['title'],$values['content'],$values['start'],$values['end'],$values['visible_teacher'],$values['visible_student'],$values['visible_guest'], $values['lang'],$values['send_mail'], $values['add_to_calendar']); $announcement_id = SystemAnnouncementManager::add_announcement(
if ($announcement_id !== false ) { $values['title'],
$values['content'],
$values['range_start'],
$values['range_end'],
$values['visible_teacher'],
$values['visible_student'],
$values['visible_guest'],
$values['lang'],
$sendMail,
$values['add_to_calendar'],
$values['send_email_test']
);
if ($announcement_id !== false) {
SystemAnnouncementManager::announcement_for_groups($announcement_id, array($values['group'])); SystemAnnouncementManager::announcement_for_groups($announcement_id, array($values['group']));
Display :: display_confirmation_message(get_lang('AnnouncementAdded')); Display :: display_confirmation_message(get_lang('AnnouncementAdded'));
} else { } else {
@ -194,7 +225,20 @@ if ($action_todo) {
} }
break; break;
case 'edit': case 'edit':
if (SystemAnnouncementManager::update_announcement($values['id'], $values['title'], $values['content'], $values['start'], $values['end'], $values['visible_teacher'], $values['visible_student'], $values['visible_guest'], $values['lang'], $values['send_mail'])) { if (SystemAnnouncementManager::update_announcement(
$values['id'],
$values['title'],
$values['content'],
$values['range_start'],
$values['range_end'],
$values['visible_teacher'],
$values['visible_student'],
$values['visible_guest'],
$values['lang'],
$sendMail,
$values['send_email_test']
)
) {
SystemAnnouncementManager::announcement_for_groups($values['id'], array($values['group'])); SystemAnnouncementManager::announcement_for_groups($values['id'], array($values['group']));
Display :: display_confirmation_message(get_lang('AnnouncementUpdated')); Display :: display_confirmation_message(get_lang('AnnouncementUpdated'));
} else { } else {

@ -9,7 +9,7 @@
$language_file = array('admin', 'registration'); $language_file = array('admin', 'registration');
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
// User permissions // User permissions

@ -164,9 +164,11 @@ if (isset($extAuthSource) && count($extAuthSource) > 0) {
$group[] = $form->createElement('static', '', '', '<br />'); $group[] = $form->createElement('static', '', '', '<br />');
} }
} }
$group[] = $form->createElement('radio', 'password_auto', get_lang('Password'), get_lang('AutoGeneratePassword').'<br />', 1); $group[] = $form->createElement('radio', 'password_auto', get_lang('Password'), get_lang('AutoGeneratePassword').'<br />', 1);
$group[] = $form->createElement('radio', 'password_auto', 'id="radio_user_password"', null, 0); $group[] = $form->createElement('radio', 'password_auto', 'id="radio_user_password"', null, 0);
$group[] = $form->createElement('password', 'password', null, array('id'=> 'password', 'onkeydown' => 'javascript: password_switch_radio_button();')); $group[] = $form->createElement('password', 'password', null, array('id'=> 'password', 'autocomplete' => 'off', 'onkeydown' => 'javascript: password_switch_radio_button();'));
$form->addGroup($group, 'password', get_lang('Password'), ''); $form->addGroup($group, 'password', get_lang('Password'), '');
if (isset($_configuration['allow_strength_pass_checker']) && $_configuration['allow_strength_pass_checker']) { if (isset($_configuration['allow_strength_pass_checker']) && $_configuration['allow_strength_pass_checker']) {
@ -198,6 +200,17 @@ if (isset($drh_list) && is_array($drh_list)) {
} }
$form->addElement('html', '</div>'); $form->addElement('html', '</div>');
if (api_is_platform_admin()) {
// Platform admin
$group = array();
$group[] = $form->createElement('radio', 'platform_admin', 'id="id_platform_admin"', get_lang('Yes'), 1);
$group[] = $form->createElement('radio', 'platform_admin', 'id="id_platform_admin"', get_lang('No'), 0);
//$display = ($_POST['status'] == STUDENT || !isset($_POST['status'])) ? 'none' : 'block';
$form->addElement('html', '<div id="id_platform_admin" style="display:'.$display.';">');
$form->addGroup($group, 'admin', get_lang('PlatformAdmin'), '&nbsp;');
$form->addElement('html', '</div>');
}
$form->addElement('select_language', 'language', get_lang('Language'), null); $form->addElement('select_language', 'language', get_lang('Language'), null);
// Send email // Send email
@ -234,7 +247,8 @@ $(document).ready(function(){
</script>'; </script>';
// Set default values // Set default values
$defaults['mail']['send_mail'] = 0; $defaults['admin']['platform_admin'] = 0;
$defaults['mail']['send_mail'] = 1;
$defaults['password']['password_auto'] = 1; $defaults['password']['password_auto'] = 1;
$defaults['active'] = 1; $defaults['active'] = 1;
$defaults['expiration_date'] = array(); $defaults['expiration_date'] = array();
@ -267,6 +281,7 @@ if( $form->validate()) {
$status = intval($user['status']); $status = intval($user['status']);
$language = $user['language']; $language = $user['language'];
$picture = $_FILES['picture']; $picture = $_FILES['picture'];
$platform_admin = intval($user['admin']['platform_admin']);
$send_mail = intval($user['mail']['send_mail']); $send_mail = intval($user['mail']['send_mail']);
$hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : 0; $hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : 0;
@ -353,6 +368,9 @@ if( $form->validate()) {
UserManager::update_extra_field_value($user_id, substr($key, 6), $value); UserManager::update_extra_field_value($user_id, substr($key, 6), $value);
} }
} }
if ($platform_admin) {
UserManager::add_user_as_admin($user_id);
}
$message = get_lang('UserAdded'); $message = get_lang('UserAdded');
} }
if (isset($user['submit_plus'])) { if (isset($user['submit_plus'])) {

@ -66,6 +66,7 @@ if (Database::num_rows($res) != 1) {
} }
$user_data = Database::fetch_array($res, 'ASSOC'); $user_data = Database::fetch_array($res, 'ASSOC');
$user_data['platform_admin'] = is_null($user_data['is_admin']) ? 0 : 1;
$user_data['send_mail'] = 0; $user_data['send_mail'] = 0;
$user_data['old_password'] = $user_data['password']; $user_data['old_password'] = $user_data['password'];
//Convert the registration date of the user //Convert the registration date of the user
@ -235,6 +236,19 @@ foreach($drh_list as $drh) {
$form->addElement('html', '</div>'); $form->addElement('html', '</div>');
*/ */
//Language
if (api_is_platform_admin()) {
$group = array();
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('Yes'), 1);
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('No'), 0);
$user_data['status'] == 1 ? $display = 'block':$display = 'none';
$form->addElement('html', '<div id="id_platform_admin" style="display:'.$display.'">');
$form->addGroup($group, 'admin', get_lang('PlatformAdmin'), null, false);
$form->addElement('html', '</div>');
}
//Language //Language
$form->addElement('select_language', 'language', get_lang('Language')); $form->addElement('select_language', 'language', get_lang('Language'));
@ -245,23 +259,24 @@ $group[] = $form->createElement('radio', 'send_mail', null, get_lang('No'), 0);
$form->addGroup($group, 'mail', get_lang('SendMailToNewUser'), '&nbsp;', false); $form->addGroup($group, 'mail', get_lang('SendMailToNewUser'), '&nbsp;', false);
// Registration Date // Registration Date
$form->addElement('static', 'registration_date', get_lang('RegistrationDate'), $user_data['registration_date']); $creatorInfo = api_get_user_info($user_data['creator_id']);
$date = sprintf(get_lang('CreatedByXYOnZ'), 'user_information.php?user_id='.$user_data['creator_id'], $creatorInfo['username'], $user_data['registration_date']);
$form->addElement('html', '<div class="control-group"><label class="control-label">'.get_lang('RegistrationDate').'</label><div class="controls">'.$date.'</div></div>');
// Expiration Date // Expiration Date
$form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0); if (!$user_data['platform_admin']) {
$group = array(); // Expiration Date
$group[] = $form->createElement('radio', 'radio_expiration_date', null, get_lang('On'), 1); $form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0);
$group[] = $form->createElement( $group = array ();
'datepicker', $group[] = $form->createElement('radio', 'radio_expiration_date', null, get_lang('On'), 1);
'expiration_date', $group[] = $form->createElement('datepicker', 'expiration_date', null, array('form_name' => $form->getAttribute('name'), 'onchange' => 'javascript: enable_expiration_date();'));
null, $form->addGroup($group, 'max_member_group', null, '', false);
array('form_name' => $form->getAttribute('name'), 'onchange' => 'javascript: enable_expiration_date();')
); // Active account or inactive account
$form->addGroup($group, 'max_member_group', null, '', false); $form->addElement('radio', 'active', get_lang('ActiveAccount'), get_lang('Active'), 1);
$form->addElement('radio', 'active', '', get_lang('Inactive'), 0);
}
// Active account or inactive account // Active account or inactive account
$form->addElement('radio', 'active', get_lang('ActiveAccount'), get_lang('Active'), 1);
$form->addElement('radio', 'active', '', get_lang('Inactive'), 0);
// EXTRA FIELDS // EXTRA FIELDS
$extraField = new ExtraField('user'); $extraField = new ExtraField('user');

@ -11,7 +11,7 @@ $language_file = 'admin';
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();

@ -13,7 +13,7 @@
$language_file = array('admin', 'registration'); $language_file = array('admin', 'registration');
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
// Set this option to true to enforce strict purification for usenames. // Set this option to true to enforce strict purification for usenames.
$purification_option_for_usernames = false; $purification_option_for_usernames = false;
@ -183,6 +183,8 @@ function parse_csv_data($file) {
} }
/** /**
* XML-parser: handle start of element * XML-parser: handle start of element
* @param string $parser Deprecated?
* @param string $data The data to be parsed
*/ */
function element_start($parser, $data) { function element_start($parser, $data) {
$data = api_utf8_decode($data); $data = api_utf8_decode($data);
@ -199,6 +201,8 @@ function element_start($parser, $data) {
/** /**
* XML-parser: handle end of element * XML-parser: handle end of element
* @param string $parser Deprecated?
* @param string $data The data to be parsed
*/ */
function element_end($parser, $data) { function element_end($parser, $data) {
$data = api_utf8_decode($data); $data = api_utf8_decode($data);
@ -223,6 +227,9 @@ function element_end($parser, $data) {
/** /**
* XML-parser: handle character data * XML-parser: handle character data
* @param string $parser Parser (deprecated?)
* @param string $data The data to be parsed
* @return void
*/ */
function character_data($parser, $data) { function character_data($parser, $data) {
$data = trim(api_utf8_decode($data)); $data = trim(api_utf8_decode($data));

@ -8,7 +8,7 @@
// name of the language file that needs to be included // name of the language file that needs to be included
$language_file = 'admin'; $language_file = 'admin';
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section=SECTION_PLATFORM_ADMIN; $this_section=SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();
@ -24,8 +24,8 @@ Display::display_header($tool_name);
$table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE); $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
if ( isset($_GET['action']) ) { if (isset($_GET['action'])) {
switch($_GET['action']) { switch ($_GET['action']) {
case 'unsubscribe': case 'unsubscribe':
if ( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['courseId']) == STUDENT) { if ( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['courseId']) == STUDENT) {
CourseManager::unsubscribe_user($_GET['user_id'], $_GET['courseId']); CourseManager::unsubscribe_user($_GET['user_id'], $_GET['courseId']);

@ -14,6 +14,7 @@ require_once '../inc/global.inc.php';
$this_section=SECTION_PLATFORM_ADMIN; $this_section=SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();
//require_once '../newscorm/learnpathList.class.php';
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$debug = 0; $debug = 0;
@ -188,7 +189,6 @@ if (isset($_REQUEST['load_ajax'])) {
} }
} }
//2.track_e_attempt, track_e_attempt_recording, track_e_downloads //2.track_e_attempt, track_e_attempt_recording, track_e_downloads
//Nothing to do because there are not relationship with a session //Nothing to do because there are not relationship with a session
@ -236,7 +236,6 @@ if (isset($_REQUEST['load_ajax'])) {
} }
//5. lp_item_view //5. lp_item_view
//CHECK ORIGIN //CHECK ORIGIN
$sql = "SELECT * FROM $TBL_LP_VIEW WHERE user_id = $user_id AND session_id = $origin_session_id AND c_id = $course_id "; $sql = "SELECT * FROM $TBL_LP_VIEW WHERE user_id = $user_id AND session_id = $origin_session_id AND c_id = $course_id ";

@ -8,10 +8,9 @@
*/ */
// name of the language file that needs to be included // name of the language file that needs to be included
$language_file = 'admin'; $language_file = 'admin';
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();

@ -55,9 +55,6 @@ $language_file = array ('admin', 'registration');
// Resetting the course id. // Resetting the course id.
$cidReset = true; $cidReset = true;
// Including some necessary dokeos files
require_once '../inc/global.inc.php';
// Setting the section (for the tabs). // Setting the section (for the tabs).
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
@ -65,9 +62,8 @@ $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(); api_protect_admin_script();
// setting breadcrumbs // setting breadcrumbs
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin')); $interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ('url' => 'usergroups.php', 'name' => get_lang('Classes')); $interbreadcrumb[] = array('url' => 'usergroups.php', 'name' => get_lang('Classes'));
// Database Table Definitions // Database Table Definitions
// Setting the name of the tool. // Setting the name of the tool.

@ -6,7 +6,7 @@
/** /**
* Code * Code
* This tool allows platform admins to update class-user relations by uploading * This tool allows platform admins to update class-user relations by uploading
* a CSVfile * a CSV file
*/ */
/** /**
@ -67,7 +67,7 @@ function validate_data($user_classes) {
/** /**
* Saves imported data. * Saves imported data.
*/ */
function save_data($users_classes) { function save_data($users_classes, $deleteUsersNotInList = false) {
global $purification_option_for_usernames; global $purification_option_for_usernames;
@ -81,7 +81,8 @@ function save_data($users_classes) {
if (!empty($users_classes)) { if (!empty($users_classes)) {
foreach ($users_classes as $user_class) { foreach ($users_classes as $user_class) {
$sql1 = "SELECT user_id FROM $user_table WHERE username = '" . Database::escape_string(UserManager::purify_username($user_class['UserName'], $purification_option_for_usernames)) . "'"; $sql1 = "SELECT user_id FROM $user_table
WHERE username = '".Database::escape_string(UserManager::purify_username($user_class['UserName'], $purification_option_for_usernames))."'";
$res1 = Database::query($sql1); $res1 = Database::query($sql1);
$obj1 = Database::fetch_object($res1); $obj1 = Database::fetch_object($res1);
@ -103,7 +104,7 @@ function save_data($users_classes) {
$user_list = $user_data['user_list']; $user_list = $user_data['user_list'];
$class_name = $user_data['class_name']; $class_name = $user_data['class_name'];
$user_list_name = $user_data['user_list_name']; $user_list_name = $user_data['user_list_name'];
$usergroup->subscribe_users_to_usergroup($class_id, $user_list, false); $usergroup->subscribe_users_to_usergroup($class_id, $user_list, $deleteUsersNotInList);
$message .= Display::return_message(get_lang('Class') . ': ' . $class_name . '<br />', 'normal', false); $message .= Display::return_message(get_lang('Class') . ': ' . $class_name . '<br />', 'normal', false);
$message .= Display::return_message(get_lang('Users') . ': ' . implode(', ', $user_list_name)); $message .= Display::return_message(get_lang('Users') . ': ' . implode(', ', $user_list_name));
} }
@ -143,14 +144,16 @@ $form = new FormValidator('class_user_import');
$form->addElement('header', $tool_name); $form->addElement('header', $tool_name);
$form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation')); $form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation'));
//$form->addElement('checkbox', 'subscribe', get_lang('Action'), get_lang('SubscribeUserIfNotAllreadySubscribed')); //$form->addElement('checkbox', 'subscribe', get_lang('Action'), get_lang('SubscribeUserIfNotAllreadySubscribed'));
//$form->addElement('checkbox', 'unsubscribe', '', get_lang('UnsubscribeUserIfSubscriptionIsNotInFile')); $form->addElement('checkbox', 'unsubscribe', '', get_lang('UnsubscribeUserIfSubscriptionIsNotInFile'));
$form->addElement('style_submit_button', 'submit', get_lang('Import'), 'class="save"'); $form->addElement('style_submit_button', 'submit', get_lang('Import'), 'class="save"');
$errors = array();
if ($form->validate()) { if ($form->validate()) {
$users_classes = parse_csv_data($_FILES['import_file']['tmp_name']); $users_classes = parse_csv_data($_FILES['import_file']['tmp_name']);
$errors = validate_data($users_classes); $errors = validate_data($users_classes);
if (count($errors) == 0) { if (count($errors) == 0) {
$return = save_data($users_classes); $deleteUsersNotInList = isset($_REQUEST['unsubscribe']) && !empty($_REQUEST['unsubscribe']) ? true : false;
$return = save_data($users_classes, $deleteUsersNotInList);
} }
} }

@ -61,6 +61,7 @@ $column_model = array(
array('name'=>'group_type', 'index'=>'group_type', 'width'=>'15', 'align'=>'left'), array('name'=>'group_type', 'index'=>'group_type', 'width'=>'15', 'align'=>'left'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'20', 'align'=>'left','sortable'=>'false','formatter'=>'action_formatter'), array('name'=>'actions', 'index'=>'actions', 'width'=>'20', 'align'=>'left','sortable'=>'false','formatter'=>'action_formatter'),
); );
//Autowidth //Autowidth
$extra_params['autowidth'] = 'true'; $extra_params['autowidth'] = 'true';
//height auto //height auto
@ -138,6 +139,9 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'edit' && is_numeric($_GET[
$form->setDefaults($defaults); $form->setDefaults($defaults);
// The validation or display // The validation or display
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// The validation or display.
if ($form->validate()) { if ($form->validate()) {
$check = Security::check_token('post'); $check = Security::check_token('post');
if ($check) { if ($check) {
@ -158,9 +162,7 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'edit' && is_numeric($_GET[
$form->setConstants(array('sec_token' => $token)); $form->setConstants(array('sec_token' => $token));
$form->display(); $form->display();
} }
} } elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && is_numeric($_GET['id'])) {
// Action handling: deleting a note
elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && is_numeric($_GET['id'])) {
$res = $usergroup->delete(Security::remove_XSS($_GET['id'])); $res = $usergroup->delete(Security::remove_XSS($_GET['id']));
if ($res) { if ($res) {
Display::display_confirmation_message(get_lang('Deleted')); Display::display_confirmation_message(get_lang('Deleted'));

@ -17,7 +17,6 @@ use \ChamiloSession as Session;
// Language files that need to be included // Language files that need to be included
$language_file = array('create_course', 'course_info', 'admin', 'gradebook', 'document'); $language_file = array('create_course', 'course_info', 'admin', 'gradebook', 'document');
require_once '../inc/global.inc.php';
$current_course_tool = TOOL_COURSE_SETTING; $current_course_tool = TOOL_COURSE_SETTING;
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;

@ -13,7 +13,7 @@
$language_file = array ('course_description', 'userInfo', 'admin'); $language_file = array ('course_description', 'userInfo', 'admin');
// including files // including files
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'app_view.php'; require_once api_get_path(LIBRARY_PATH).'app_view.php';
require_once 'thematic_controller.php'; require_once 'thematic_controller.php';

@ -348,4 +348,4 @@ class Course
return unserialize($course); return unserialize($course);
} }
} }
} }

@ -14,7 +14,6 @@ require_once 'Course.class.php';
*/ */
class CourseArchiver class CourseArchiver
{ {
/** /**
* Delete old temp-dirs * Delete old temp-dirs
*/ */

@ -402,7 +402,6 @@ class CourseRecycler
// Identifying again and deletion of the orphan questions, if it was desired. // Identifying again and deletion of the orphan questions, if it was desired.
if ($delete_orphan_questions) { if ($delete_orphan_questions) {
//@todo fix query in order to use iid //@todo fix query in order to use iid
$sql = " ( $sql = " (
SELECT q.iid FROM $table_qui_que q SELECT q.iid FROM $table_qui_que q

@ -1,58 +1,54 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/**
* Document class file
* @package chamilo.backup
*/
/**
* Code
*/
require_once 'Resource.class.php'; require_once 'Resource.class.php';
define('DOCUMENT','file'); define('DOCUMENT','file');
define('FOLDER','folder'); define('FOLDER','folder');
/** /**
* An document * Class Document
* @author Bart Mollet <bart.mollet@hogent.be> * @author Bart Mollet <bart.mollet@hogent.be>
* @package chamilo.backup * @package chamilo.backup
*/ */
class Document extends Resource class Document extends Resource
{ {
public $path; public $path;
public $comment; public $comment;
public $file_type; public $file_type;
public $size; public $size;
public $title; public $title;
/**
* Create a new Document /**
* @param int $id * Create a new Document
* @param string $path * @param int $id
* @param string $comment * @param string $path
* @param string $title * @param string $comment
* @param string $file_type (DOCUMENT or FOLDER); * @param string $title
* @param int $size * @param string $file_type (DOCUMENT or FOLDER);
*/ * @param int $size
function Document($id,$path,$comment,$title,$file_type,$size) */
{ public function Document($id, $path, $comment, $title, $file_type, $size)
parent::Resource($id, RESOURCE_DOCUMENT); {
$this->path = 'document'.$path; parent::Resource($id, RESOURCE_DOCUMENT);
$this->comment = $comment; $this->path = 'document' . $path;
$this->title = $title; $this->comment = $comment;
$this->file_type = $file_type; $this->title = $title;
$this->size = $size; $this->file_type = $file_type;
} $this->size = $size;
/** }
* Show this document
*/ /**
function show() * Show this document
{ */
parent::show(); public function show()
echo preg_replace('@^document@', '', $this->path); {
if (!empty($this->title)) { parent::show();
if (strpos($this->path, $this->title) === false) { echo preg_replace('@^document@', '', $this->path);
echo " - ".$this->title; if (!empty($this->title)) {
} if (strpos($this->path, $this->title) === false) {
} echo " - " . $this->title;
} }
}
}
} }

@ -63,4 +63,4 @@ class Link extends Resource
parent::show(); parent::show();
echo $this->title.' ('.$this->url.')'; echo $this->title.' ('.$this->url.')';
} }
} }

@ -1,23 +1,16 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/**
* Exercises questions backup script
* @package chamilo.backup
*/
/**
* Code
*/
require_once 'Resource.class.php'; require_once 'Resource.class.php';
/** /**
* An QuizQuestion * Exercises questions backup script
* Class QuizQuestion
* @author Bart Mollet <bart.mollet@hogent.be> * @author Bart Mollet <bart.mollet@hogent.be>
* @package chamilo.backup * @package chamilo.backup
*/ */
class QuizQuestion extends Resource class QuizQuestion extends Resource
{ {
/** /**
* The question * The question
*/ */

@ -25,4 +25,4 @@ class QuizQuestionOption extends Resource
parent::Resource($obj->iid, RESOURCE_QUIZQUESTION); parent::Resource($obj->iid, RESOURCE_QUIZQUESTION);
$this->obj = $obj; $this->obj = $obj;
} }
} }

@ -1,13 +1,6 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/**
* General resources backup script
* @package chamilo.backup
*/
/**
* Definition of all possible resource-types
*/
define('RESOURCE_DOCUMENT', 'document'); define('RESOURCE_DOCUMENT', 'document');
define('RESOURCE_GLOSSARY', 'glossary'); define('RESOURCE_GLOSSARY', 'glossary');
define('RESOURCE_EVENT', 'calendar_event'); define('RESOURCE_EVENT', 'calendar_event');
@ -19,6 +12,7 @@ define('RESOURCE_FORUM', 'forum');
define('RESOURCE_FORUMTOPIC', 'thread'); define('RESOURCE_FORUMTOPIC', 'thread');
define('RESOURCE_FORUMPOST', 'post'); define('RESOURCE_FORUMPOST', 'post');
define('RESOURCE_QUIZ', 'quiz'); define('RESOURCE_QUIZ', 'quiz');
define('RESOURCE_TEST_CATEGORY', 'test_category');
define('RESOURCE_QUIZQUESTION', 'Exercise_Question'); define('RESOURCE_QUIZQUESTION', 'Exercise_Question');
define('RESOURCE_TOOL_INTRO', 'Tool introduction'); define('RESOURCE_TOOL_INTRO', 'Tool introduction');
define('RESOURCE_LINKCATEGORY', 'Link_Category'); define('RESOURCE_LINKCATEGORY', 'Link_Category');
@ -33,6 +27,7 @@ define('RESOURCE_ATTENDANCE', 'attendance');
define('RESOURCE_WORK', 'work'); define('RESOURCE_WORK', 'work');
/** /**
* Class Resource
* Representation of a resource in a Chamilo-course. * Representation of a resource in a Chamilo-course.
* This is a base class of which real resource-classes (for Links, * This is a base class of which real resource-classes (for Links,
* Documents,...) should be derived. * Documents,...) should be derived.
@ -43,7 +38,6 @@ define('RESOURCE_WORK', 'work');
*/ */
class Resource class Resource
{ {
/** /**
* The id from this resource in the source course * The id from this resource in the source course
*/ */
@ -88,29 +82,29 @@ class Resource
/** /**
* Add linked resource * Add linked resource
*/ */
function add_linked_resource($type, $id) function add_linked_resource($type, $id) {
{
$this->linked_resources[$type][] = $id; $this->linked_resources[$type][] = $id;
} }
/** /**
* Get linked resources * Get linked resources
*/ */
function get_linked_resources() function get_linked_resources() {
{
return $this->linked_resources; return $this->linked_resources;
} }
/** /**
* Checks if this resource links to a given resource * Checks if this resource links to a given resource
*/ */
function links_to(& $resource) function links_to(& $resource) {
{ $type = $resource->get_type();
if (isset($this->linked_resources[$resource->get_type()]) && is_array( if (isset($this->linked_resources[$type]) &&
$this->linked_resources[$resource->get_type()] is_array($this->linked_resources[$type])
)
) { ) {
return in_array($resource->get_id(), $this->linked_resources[$resource->get_type()]); return in_array(
$resource->get_id(),
$this->linked_resources[$type]
);
} }
return false; return false;
} }
@ -169,6 +163,8 @@ class Resource
return TOOL_POST; return TOOL_POST;
case RESOURCE_QUIZ: case RESOURCE_QUIZ:
return TOOL_QUIZ; return TOOL_QUIZ;
case RESOURCE_TEST_CATEGORY:
return TOOL_TEST_CATEGORY;
//case RESOURCE_QUIZQUESTION: //no corresponding global constant //case RESOURCE_QUIZQUESTION: //no corresponding global constant
// return TOOL_QUIZ_QUESTION; // return TOOL_QUIZ_QUESTION;
//case RESOURCE_TOOL_INTRO: //case RESOURCE_TOOL_INTRO:

@ -10,7 +10,7 @@
$language_file = array('exercice', 'coursebackup', 'admin'); $language_file = array('exercice', 'coursebackup', 'admin');
// Setting the global file that gets the general configuration, the databases, the languages, ... // Setting the global file that gets the general configuration, the databases, the languages, ...
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
// Including additional libraries // Including additional libraries
require_once 'classes/CourseBuilder.class.php'; require_once 'classes/CourseBuilder.class.php';
@ -128,4 +128,4 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
} }
} }
Display::display_footer(); Display::display_footer();

@ -15,7 +15,7 @@
$language_file = array('exercice', 'coursebackup', 'admin'); $language_file = array('exercice', 'coursebackup', 'admin');
// Including the global initialization file // Including the global initialization file
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
$current_course_tool = TOOL_COURSE_MAINTENANCE; $current_course_tool = TOOL_COURSE_MAINTENANCE;
api_protect_course_script(true); api_protect_course_script(true);

@ -79,9 +79,9 @@ if ((isset($_POST['action']) &&
} else { } else {
Display::display_warning_message(get_lang('RecycleWarning'), false); Display::display_warning_message(get_lang('RecycleWarning'), false);
$form = new FormValidator('recycle_course', 'post', api_get_self().'?'.api_get_cidreq()); $form = new FormValidator('recycle_course', 'post', api_get_self().'?'.api_get_cidreq());
$form->addElement('header', get_lang('SelectOptionForBackup')); $form->addElement('header', get_lang('SelectOptionForBackup'));
$form->addElement('radio', 'recycle_option', null, get_lang('FullRecycle'), 'full_backup'); $form->addElement('radio', 'recycle_option', null, get_lang('FullRecycle'), 'full_backup');
$form->addElement('radio', 'recycle_option', null, get_lang('LetMeSelectItems'), 'select_items'); $form->addElement('radio', 'recycle_option', null, get_lang('LetMeSelectItems'), 'select_items');
$form->addElement('style_submit_button', 'submit', get_lang('RecycleCourse'), 'class="save"'); $form->addElement('style_submit_button', 'submit', get_lang('RecycleCourse'), 'class="save"');
$form->setDefaults(array('recycle_option' => 'select_items')); $form->setDefaults(array('recycle_option' => 'select_items'));
$form->display(); $form->display();

@ -287,3 +287,4 @@ if ($form->validate()) {
$tpl->assign('message', $message); $tpl->assign('message', $message);
$tpl->assign('content', $content); $tpl->assign('content', $content);

@ -1,14 +1,16 @@
<?php <?php
/* For licensing terms, see /license.txt */
if (PHP_SAPI !='cli') { if (PHP_SAPI !='cli') {
die('Run this script through the command line or comment this line in the code'); die('Run this script through the command line or comment this line in the code');
} }
//$_SERVER['SERVER_NAME'] = ''; if (file_exists('multiple_url_fix.php')) {
//$_SERVER['HTTP_HOST'] = ''; require 'multiple_url_fix.php';
}
require_once __DIR__.'/../inc/global.inc.php'; //require_once __DIR__.'/../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'log.class.php'; //require_once api_get_path(LIBRARY_PATH).'log.class.php';
/** /**
* Class ImportCsv * Class ImportCsv
@ -44,6 +46,7 @@ class ImportCsv
/** /**
* @param Logger $logger * @param Logger $logger
* @param array
*/ */
public function __construct($logger, $conditions) public function __construct($logger, $conditions)
{ {
@ -54,7 +57,7 @@ class ImportCsv
/** /**
* @param bool $dump * @param bool $dump
*/ */
function setDumpValues($dump) public function setDumpValues($dump)
{ {
$this->dumpValues = $dump; $this->dumpValues = $dump;
} }
@ -62,7 +65,7 @@ class ImportCsv
/** /**
* @return mixed * @return mixed
*/ */
function getDumpValues() public function getDumpValues()
{ {
return $this->dumpValues; return $this->dumpValues;
} }
@ -75,34 +78,47 @@ class ImportCsv
$path = api_get_path(SYS_CODE_PATH).'cron/incoming/'; $path = api_get_path(SYS_CODE_PATH).'cron/incoming/';
if (!is_dir($path)) { if (!is_dir($path)) {
echo "The folder! $path does not exits"; echo "The folder! $path does not exits";
exit; return 0;
} }
if ($this->getDumpValues()) { if ($this->getDumpValues()) {
$this->dumpDatabaseTables(); $this->dumpDatabaseTables();
} }
echo "Starting with reading the files: ".PHP_EOL.PHP_EOL; echo "Reading files: ".PHP_EOL.PHP_EOL;
$files = scandir($path); $files = scandir($path);
$fileToProcess = array(); $fileToProcess = array();
$fileToProcessStatic = array();
if (!empty($files)) { if (!empty($files)) {
foreach ($files as $file) { foreach ($files as $file) {
$fileInfo = pathinfo($file); $fileInfo = pathinfo($file);
if ($fileInfo['extension'] == 'csv') { if ($fileInfo['extension'] == 'csv') {
// teachers_yyyymmdd.csv, courses_yyyymmdd.csv, students_yyyymmdd.csv and sessions_yyyymmdd.csv // Checking teachers_yyyymmdd.csv, courses_yyyymmdd.csv, students_yyyymmdd.csv and sessions_yyyymmdd.csv
$parts = explode('_', $fileInfo['filename']); $parts = explode('_', $fileInfo['filename']);
$method = 'import'.ucwords($parts[1]); $preMethod = ucwords($parts[1]);
$preMethod = str_replace('-static', 'Static', $preMethod);
$method = 'import'.$preMethod;
$isStatic = strpos($method, 'Static');
if (method_exists($this, $method)) { if (method_exists($this, $method)) {
$fileToProcess[$parts[1]][] = array( if ($method == 'importUnsubscribeStatic' || empty($isStatic)) {
'method' => $method, $fileToProcess[$parts[1]][] = array(
'file' => $path.$fileInfo['basename'] 'method' => $method,
); 'file' => $path.$fileInfo['basename']
//$this->$method($path.$fileInfo['basename']); );
} else {
$fileToProcessStatic[$parts[1]][] = array(
'method' => $method,
'file' => $path.$fileInfo['basename']
);
}
} else { } else {
echo "Error - This file '$file' can't be processed.".PHP_EOL; echo "Error - This file '$file' can't be processed.".PHP_EOL;
echo "Trying to call $method".PHP_EOL;
echo "The file have to has this format:".PHP_EOL; echo "The file have to has this format:".PHP_EOL;
echo "prefix_students_ddmmyyyy.csv, prefix_teachers_ddmmyyyy.csv, prefix_courses_ddmmyyyy.csv, prefix_sessions_ddmmyyyy.csv ".PHP_EOL; echo "prefix_students_ddmmyyyy.csv, prefix_teachers_ddmmyyyy.csv, prefix_courses_ddmmyyyy.csv, prefix_sessions_ddmmyyyy.csv ".PHP_EOL;
exit; exit;
@ -112,13 +128,12 @@ class ImportCsv
if (empty($fileToProcess)) { if (empty($fileToProcess)) {
echo 'Error - no files to process.'; echo 'Error - no files to process.';
exit; return 0;
} }
$sections = array('students', 'teachers', 'courses', 'sessions');
$this->prepareImport(); $this->prepareImport();
$sections = array('students', 'teachers', 'courses', 'sessions', 'unsubscribe-static');
foreach ($sections as $section) { foreach ($sections as $section) {
$this->logger->addInfo("-- Import $section --"); $this->logger->addInfo("-- Import $section --");
@ -128,22 +143,38 @@ class ImportCsv
$method = $fileInfo['method']; $method = $fileInfo['method'];
$file = $fileInfo['file']; $file = $fileInfo['file'];
echo 'Reading file: '.$file.PHP_EOL; echo 'File: '.$file.PHP_EOL;
$this->logger->addInfo("Reading file: $file"); $this->logger->addInfo("Reading file: $file");
$this->$method($file, true);
$this->$method($file);
} }
}
}
$sections = array('students-static', 'teachers-static', 'courses-static', 'sessions-static');
foreach ($sections as $section) {
$this->logger->addInfo("-- Import static files $section --");
if (isset($fileToProcessStatic[$section]) && !empty($fileToProcessStatic[$section])) {
$files = $fileToProcessStatic[$section];
foreach ($files as $fileInfo) {
$method = $fileInfo['method'];
$file = $fileInfo['file'];
echo 'Static file: '.$file.PHP_EOL;
$this->logger->addInfo("Reading static file: $file");
$this->$method($file, true);
}
} }
} }
} }
} }
/**
* Prepares extra fields before the import
*/
private function prepareImport() private function prepareImport()
{ {
// Create user extra field: extra_external_user_id // Create user extra field: extra_external_user_id
UserManager::create_extra_field($this->extraFieldIdNameList['user'], 1, 'External user id', null); UserManager::create_extra_field($this->extraFieldIdNameList['user'], 1, 'External user id', null);
// Create course extra field: extra_external_course_id // Create course extra field: extra_external_course_id
CourseManager::create_course_extra_field($this->extraFieldIdNameList['course'], 1, 'External course id'); CourseManager::create_course_extra_field($this->extraFieldIdNameList['course'], 1, 'External course id');
// Create session extra field extra_external_session_id // Create session extra field extra_external_session_id
@ -153,7 +184,7 @@ class ImportCsv
/** /**
* @param string $file * @param string $file
*/ */
function moveFile($file) private function moveFile($file)
{ {
$moved = str_replace('incoming', 'treated', $file); $moved = str_replace('incoming', 'treated', $file);
@ -194,7 +225,6 @@ class ImportCsv
$row['extra_'.$this->extraFieldIdNameList['user']] = $row['TeacherID']; $row['extra_'.$this->extraFieldIdNameList['user']] = $row['TeacherID'];
} }
//$row['lastname'] = Status
return $row; return $row;
} }
@ -212,9 +242,15 @@ class ImportCsv
$row['teachers'] = array(); $row['teachers'] = array();
if (isset($row['Teacher']) && !empty($row['Teacher'])) { if (isset($row['Teacher']) && !empty($row['Teacher'])) {
$userInfo = api_get_user_info_from_username($row['Teacher']); $teachers = explode(',', $row['Teacher']);
if (!empty($userInfo)) { if (!empty($teachers)) {
$row['teachers'] = $userInfo['user_id']; foreach ($teachers as $teacherUserName) {
$teacherUserName = trim($teacherUserName);
$userInfo = api_get_user_info_from_username($teacherUserName);
if (!empty($userInfo)) {
$row['teachers'][] = $userInfo['user_id'];
}
}
} }
} }
@ -228,7 +264,17 @@ class ImportCsv
* File to import * File to import
* @param string $file * @param string $file
*/ */
private function importTeachers($file) private function importTeachersStatic($file)
{
$this->importTeachers($file, false);
}
/**
* File to import
* @param string $file
* @param bool $moveFile
*/
private function importTeachers($file, $moveFile = true)
{ {
$data = Import::csv_to_array($file); $data = Import::csv_to_array($file);
@ -306,7 +352,7 @@ class ImportCsv
$row['lastname'], // <<-- changed $row['lastname'], // <<-- changed
$userInfo['username'], $userInfo['username'],
null, //$password = null, null, //$password = null,
$auth_source = null, PLATFORM_AUTH_SOURCE,
$userInfo['email'], $userInfo['email'],
COURSEMANAGER, COURSEMANAGER,
$userInfo['official_code'], $userInfo['official_code'],
@ -336,13 +382,26 @@ class ImportCsv
} }
} }
} }
$this->moveFile($file);
if ($moveFile) {
$this->moveFile($file);
}
} }
/** /**
* @param string $file * @param string $file
*/ */
private function importStudents($file) private function importStudentsStatic($file)
{
$this->importStudents($file, false);
}
/**
* @param string $file
* @param bool $moveFile
*/
private function importStudents($file, $moveFile = true)
{ {
$data = Import::csv_to_array($file); $data = Import::csv_to_array($file);
@ -361,8 +420,10 @@ class ImportCsv
$this->logger->addInfo(count($data)." records found."); $this->logger->addInfo(count($data)." records found.");
foreach ($data as $row) { foreach ($data as $row) {
$row = $this->cleanUserRow($row); $row = $this->cleanUserRow($row);
//$userInfo = api_get_user_info_from_username($row['username']); $user_id = UserManager::get_user_id_from_original_id(
$user_id = UserManager::get_user_id_from_original_id($row['extra_'.$this->extraFieldIdNameList['user']], $this->extraFieldIdNameList['user']); $row['extra_'.$this->extraFieldIdNameList['user']],
$this->extraFieldIdNameList['user']
);
$userInfo = array(); $userInfo = array();
$userInfoByOfficialCode = null; $userInfoByOfficialCode = null;
@ -406,29 +467,51 @@ class ImportCsv
$this->logger->addError("Students - User NOT created: ".$row['username']." ".$row['firstname']." ".$row['lastname']); $this->logger->addError("Students - User NOT created: ".$row['username']." ".$row['firstname']." ".$row['lastname']);
} }
} else { } else {
if (empty($userInfo)) { if (empty($userInfo)) {
$this->logger->addError("Students - Can't update user :".$row['username']); $this->logger->addError("Students - Can't update user :".$row['username']);
continue; continue;
} }
if ($row['action'] == 'delete') { if ($row['action'] == 'delete') {
// INactive one year later // Inactive one year later
$userInfo['expiration_date'] = api_get_utc_datetime(api_strtotime(time() + 365*24*60*60)); $userInfo['expiration_date'] = api_get_utc_datetime(api_strtotime(time() + 365*24*60*60));
} }
$password = $row['password']; // change password
$email = $row['email']; // change email
$resetPassword = 2; // allow password change
// Conditions that disables the update of password and email:
if (isset($this->conditions['importStudents'])) { if (isset($this->conditions['importStudents'])) {
if (isset($this->conditions['importStudents']['update']) && isset($this->conditions['importStudents']['update']['avoid'])) { if (isset($this->conditions['importStudents']['update']) && isset($this->conditions['importStudents']['update']['avoid'])) {
// Blocking email update -
// 1. Condition
$avoidUsersWithEmail = $this->conditions['importStudents']['update']['avoid']['email']; $avoidUsersWithEmail = $this->conditions['importStudents']['update']['avoid']['email'];
if ($userInfo['email'] != $row['email'] && in_array($row['email'], $avoidUsersWithEmail)) { if ($userInfo['email'] != $row['email'] && in_array($row['email'], $avoidUsersWithEmail)) {
$this->logger->addInfo("Students - User skipped: ".$row['username']." because the avoid conditions (email)."); $this->logger->addInfo("Students - User email is not updated : ".$row['username']." because the avoid conditions (email).");
continue; // Do not change email keep the old email.
$email = $userInfo['email'];
} }
// 2. Condition
if (!in_array($userInfo['email'], $avoidUsersWithEmail) && !in_array($row['email'], $avoidUsersWithEmail)) {
$email = $userInfo['email'];
}
// 3. Condition
if (in_array($userInfo['email'], $avoidUsersWithEmail) && !in_array($row['email'], $avoidUsersWithEmail)) {
$email = $row['email'];
}
// Blocking password update
$avoidUsersWithPassword = $this->conditions['importStudents']['update']['avoid']['password']; $avoidUsersWithPassword = $this->conditions['importStudents']['update']['avoid']['password'];
if ($userInfo['password'] != api_get_encrypted_password($row['password']) && in_array($row['password'], $avoidUsersWithPassword)) { if ($userInfo['password'] != api_get_encrypted_password($row['password']) && in_array($row['password'], $avoidUsersWithPassword)) {
$this->logger->addInfo("Students - User skipped: ".$row['username']." because the avoid conditions (password)."); $this->logger->addInfo("Students - User password is not updated: ".$row['username']." because the avoid conditions (password).");
continue; $password = null;
$resetPassword = 0; // disallow password change
} }
} }
} }
@ -441,9 +524,9 @@ class ImportCsv
$row['firstname'], // <<-- changed $row['firstname'], // <<-- changed
$row['lastname'], // <<-- changed $row['lastname'], // <<-- changed
$row['username'], // <<-- changed $row['username'], // <<-- changed
null, //$password = null, $password, //$password = null,
$auth_source = null, PLATFORM_AUTH_SOURCE,
$userInfo['email'], $email,
STUDENT, STUDENT,
$userInfo['official_code'], $userInfo['official_code'],
$userInfo['phone'], $userInfo['phone'],
@ -456,7 +539,7 @@ class ImportCsv
null, //$language = 'english', null, //$language = 'english',
null, //$encrypt_method = '', null, //$encrypt_method = '',
false, //$send_email = false, false, //$send_email = false,
0 //$reset_password = 0 $resetPassword //$reset_password = 0
); );
if ($result) { if ($result) {
@ -477,13 +560,24 @@ class ImportCsv
} }
} }
$this->moveFile($file); if ($moveFile) {
$this->moveFile($file);
}
}
/**
* @param string $file
*/
private function importCoursesStatic($file)
{
$this->importCourses($file, false);
} }
/** /**
* @param string $file * @param string $file
* @param bool $moveFile
*/ */
private function importCourses($file) private function importCourses($file, $moveFile = true)
{ {
$data = Import::csv_to_array($file); $data = Import::csv_to_array($file);
@ -495,8 +589,6 @@ class ImportCsv
foreach ($data as $row) { foreach ($data as $row) {
$row = $this->cleanCourseRow($row); $row = $this->cleanCourseRow($row);
$courseCode = CourseManager::get_course_id_from_original_id($row['extra_'.$this->extraFieldIdNameList['course']], $this->extraFieldIdNameList['course']); $courseCode = CourseManager::get_course_id_from_original_id($row['extra_'.$this->extraFieldIdNameList['course']], $this->extraFieldIdNameList['course']);
//$courseInfo = api_get_course_info($row['course_code']);
$courseInfo = api_get_course_info($courseCode); $courseInfo = api_get_course_info($courseCode);
if (empty($courseInfo)) { if (empty($courseInfo)) {
// Create // Create
@ -521,9 +613,15 @@ class ImportCsv
$params = array( $params = array(
'title' => $row['title'], 'title' => $row['title'],
); );
$result = CourseManager::update_attributes($courseInfo['real_id'], $params); $result = CourseManager::update_attributes($courseInfo['real_id'], $params);
//CourseManager::updateTeachers($courseInfo['id'], $row['teachers']); $addTeacherToSession = isset($courseInfo['add_teachers_to_sessions_courses']) && !empty($courseInfo['add_teachers_to_sessions_courses']) ? true : false;
if ($addTeacherToSession) {
CourseManager::updateTeachers($courseInfo['id'], $row['teachers'], false, true, false);
} else {
CourseManager::updateTeachers($courseInfo['id'], $row['teachers'], false, false);
}
if ($result) { if ($result) {
$this->logger->addInfo("Courses - Course updated ".$courseInfo['code']); $this->logger->addInfo("Courses - Course updated ".$courseInfo['code']);
@ -533,13 +631,26 @@ class ImportCsv
} }
} }
} }
$this->moveFile($file);
if ($moveFile) {
$this->moveFile($file);
}
}
/**
* @param string $file
*/
private function importSessionsStatic($file)
{
$this->importSessions($file, false);
} }
/** /**
* @param string $file * @param string $file
* @param bool $moveFile
*/ */
private function importSessions($file) private function importSessions($file, $moveFile = true)
{ {
$avoid = null; $avoid = null;
if (isset($this->conditions['importSessions']) && isset($this->conditions['importSessions']['update'])) { if (isset($this->conditions['importSessions']) && isset($this->conditions['importSessions']['update'])) {
@ -555,16 +666,65 @@ class ImportCsv
$this->daysCoachAccessBeforeBeginning, $this->daysCoachAccessBeforeBeginning,
$this->daysCoachAccessAfterBeginning, $this->daysCoachAccessAfterBeginning,
$this->defaultSessionVisibility, $this->defaultSessionVisibility,
$avoid $avoid,
false,
false,
true
); );
if (!empty($result['error_message'])) { if (!empty($result['error_message'])) {
$this->logger->addError($result['error_message']); $this->logger->addError($result['error_message']);
} }
$this->logger->addInfo("Sessions - Sessions parsed: ".$result['session_counter']); $this->logger->addInfo("Sessions - Sessions parsed: ".$result['session_counter']);
$this->moveFile($file);
if ($moveFile) {
$this->moveFile($file);
}
} }
/**
* @param string $file
*/
private function importUnsubscribeStatic($file)
{
$data = Import::csv_reader($file);
if (!empty($data)) {
$this->logger->addInfo(count($data)." records found.");
foreach ($data as $row) {
$chamiloUserName = $row['UserName'];
$chamiloCourseCode = $row['CourseCode'];
$chamiloSessionId = $row['SessionID'];
$sessionInfo = api_get_session_info($chamiloSessionId);
if (empty($sessionInfo)) {
$this->logger->addError('Session does not exists: '.$chamiloSessionId);
continue;
}
$courseInfo = api_get_course_info($chamiloCourseCode);
if (empty($courseInfo)) {
$this->logger->addError('Course does not exists: '.$courseInfo);
continue;
}
$userId = Usermanager::get_user_id_from_username($chamiloUserName);
if (empty($userId)) {
$this->logger->addError('User does not exists: '.$chamiloUserName);
continue;
}
CourseManager::unsubscribe_user($userId, $courseInfo['code'], $chamiloSessionId);
$this->logger->addError("User '$chamiloUserName' was removed from session: #$chamiloSessionId, Course: ".$courseInfo['code']);
}
}
}
/**
* Dump database tables
*/
private function dumpDatabaseTables() private function dumpDatabaseTables()
{ {
echo 'Dumping tables'.PHP_EOL; echo 'Dumping tables'.PHP_EOL;
@ -658,19 +818,21 @@ if (!is_array($emails)) {
} }
$subject = "Cron main/cron/import_csv.php ".date('Y-m-d h:i:s'); $subject = "Cron main/cron/import_csv.php ".date('Y-m-d h:i:s');
$from = api_get_setting('emailAdministrator'); $from = api_get_setting('emailAdministrator');
/*
if (!empty($emails)) { if (!empty($emails)) {
foreach ($emails as $email) { foreach ($emails as $email) {
$stream = new NativeMailerHandler($email, $subject, $from, $minLevel); $stream = new NativeMailerHandler($email, $subject, $from, $minLevel);
$logger->pushHandler(new BufferHandler($stream, 0, $minLevel)); $logger->pushHandler(new BufferHandler($stream, 0, $minLevel));
} }
} }*/
$stream = new StreamHandler(api_get_path(SYS_ARCHIVE_PATH).'import_csv.log', $minLevel); $stream = new StreamHandler(api_get_path(SYS_ARCHIVE_PATH).'import_csv.log', $minLevel);
$logger->pushHandler(new BufferHandler($stream, 0, $minLevel)); $logger->pushHandler(new BufferHandler($stream, 0, $minLevel));
$logger->pushHandler(new RotatingFileHandler('import_csv', 5, $minLevel)); $logger->pushHandler(new RotatingFileHandler('import_csv', 5, $minLevel));
$import = new ImportCsv($logger, $_configuration['cron_import_csv_conditions']); $cronImportCSVConditions = isset($_configuration['cron_import_csv_conditions']) ? $_configuration['cron_import_csv_conditions'] : null;
$import = new ImportCsv($logger, $cronImportCSVConditions);
if (isset($_configuration['default_admin_user_id_for_cron'])) { if (isset($_configuration['default_admin_user_id_for_cron'])) {
$import->defaultAdminId = $_configuration['default_admin_user_id_for_cron']; $import->defaultAdminId = $_configuration['default_admin_user_id_for_cron'];
@ -682,7 +844,27 @@ if (isset($argv[1]) && $argv[1] = '--dump') {
$dump = true; $dump = true;
} }
$import->setDumpValues($dump); if (isset($_configuration['import_csv_disable_dump']) && $_configuration['import_csv_disable_dump'] == true) {
$import->setDumpValues(false);
} else {
$import->setDumpValues($dump);
}
// Do not moves the files to treated // Do not moves the files to treated
$import->test = true; if (isset($_configuration['import_csv_test'])) {
$import->test = $_configuration['import_csv_test'];
} else {
$import->test = true;
}
$import->run(); $import->run();
if (isset($_configuration['import_csv_fix_permissions']) && $_configuration['import_csv_fix_permissions'] == true) {
$command = "sudo find ".api_get_path(SYS_COURSE_PATH)." -type d -exec chmod 777 {} \; ";
echo "Executing: ".$command.PHP_EOL;
system($command);
$command = "sudo find ".api_get_path(SYS_CODE_PATH)."upload/users -type d -exec chmod 777 {} \;";
echo "Executing: ".$command.PHP_EOL;
system($command);
}

@ -1,7 +1,7 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* Template (front controller in MVC pattern) used for distpaching to the controllers depend on the current action * Template (front controller in MVC pattern) used for distpaching to the controllers depend on the current action
* @author Christian Fasanando <christian1827@gmail.com> * @author Christian Fasanando <christian1827@gmail.com>
* @package chamilo.dashboard * @package chamilo.dashboard
*/ */
@ -13,7 +13,7 @@ $language_file = array ('index', 'tracking', 'userInfo', 'admin', 'gradebook');
$cidReset = true; $cidReset = true;
// including files // including files
require_once '../inc/global.inc.php'; //require_once '../inc/global.inc.php';
require_once 'dashboard_controller.php'; require_once 'dashboard_controller.php';
require_once 'block.class.php'; require_once 'block.class.php';

@ -86,6 +86,10 @@ $interbreadcrumb[] = array(
"name" => get_lang('Documents') "name" => get_lang('Documents')
); );
if (!$is_allowed_in_course) {
api_not_allowed(true);
}
if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder( if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder(
api_get_user_id(), api_get_user_id(),
Security::remove_XSS($dir), Security::remove_XSS($dir),
@ -185,7 +189,7 @@ $(document).ready(function(){
</style> </style>
<div id="textareaCallBack"></div> <div id="textareaCallBack"></div>
<?php <?php
if(Security::remove_XSS($_POST['text2voice_mode'])=='google'){ if (Security::remove_XSS($_POST['text2voice_mode'])=='google') {
downloadMP3_google($filepath, $dir); downloadMP3_google($filepath, $dir);
} elseif (Security::remove_XSS($_POST['text2voice_mode']) == 'pediaphon') { } elseif (Security::remove_XSS($_POST['text2voice_mode']) == 'pediaphon') {
downloadMP3_pediaphon($filepath, $dir); downloadMP3_pediaphon($filepath, $dir);
@ -333,8 +337,7 @@ $(document).ready(function(){
if (api_get_setting('platformLanguage')==$row['english_name']){ if (api_get_setting('platformLanguage')==$row['english_name']){
echo '<option value="'.$row['isocode'].'" selected="selected">'.$row['original_name'].' ('.$row['english_name'].')</option>'; echo '<option value="'.$row['isocode'].'" selected="selected">'.$row['original_name'].' ('.$row['english_name'].')</option>';
} } else {
else{
echo '<option value="'.$row['isocode'].'">'.$row['original_name'].' ('.$row['english_name'].')</option>'; echo '<option value="'.$row['isocode'].'">'.$row['original_name'].' ('.$row['english_name'].')</option>';
} }
} }
@ -413,8 +416,6 @@ function downloadMP3_google($filepath, $dir)
} }
$documentPath = $filepath.'/'.$audio_filename; $documentPath = $filepath.'/'.$audio_filename;
//prev for a fine unicode, borrowed from main api TODO:clean //prev for a fine unicode, borrowed from main api TODO:clean
// Safe replacements for some non-letter characters (whitout blank spaces) // Safe replacements for some non-letter characters (whitout blank spaces)
$search = array( $search = array(
@ -567,7 +568,6 @@ function downloadMP3_pediaphon($filepath, $dir)
$extension='mp3'; $extension='mp3';
$audio_filename=$clean_title.'.'.$extension; $audio_filename=$clean_title.'.'.$extension;
$audio_title = str_replace('_',' ',$clean_title); $audio_title = str_replace('_',' ',$clean_title);
//prevent duplicates //prevent duplicates
if (file_exists($filepath.'/'.$clean_title.'.'.$extension)){ if (file_exists($filepath.'/'.$clean_title.'.'.$extension)){
$i = 1; $i = 1;
@ -581,9 +581,6 @@ function downloadMP3_pediaphon($filepath, $dir)
$documentPath = $filepath.'/'.$audio_filename; $documentPath = $filepath.'/'.$audio_filename;
//prev for a fine unicode, borrowed from main api TODO:clean //prev for a fine unicode, borrowed from main api TODO:clean
// Safe replacements for some non-letter characters (whitout blank spaces) // Safe replacements for some non-letter characters (whitout blank spaces)
$search = array( $search = array(
@ -652,74 +649,73 @@ function downloadMP3_pediaphon($filepath, $dir)
//adding the file //adding the file
if ($clean_lang=='de') {
if($clean_lang=='de'){ $url_pediaphon='http://www.pediaphon.org/~bischoff/radiopedia/sprich_multivoice.cgi';
$url_pediaphon='http://www.pediaphon.org/~bischoff/radiopedia/sprich_multivoice.cgi'; $find_t2v = '/http\:\/\/www\.pediaphon\.org\/\~bischoff\/radiopedia\/mp3\/(.*)\.mp3\"/';
$find_t2v = '/http\:\/\/www\.pediaphon\.org\/\~bischoff\/radiopedia\/mp3\/(.*)\.mp3\"/';
} else { } else {
$url_pediaphon='http://www.pediaphon.org/~bischoff/radiopedia/sprich_multivoice_'.$clean_lang.'.cgi';//en, es, fr $url_pediaphon='http://www.pediaphon.org/~bischoff/radiopedia/sprich_multivoice_'.$clean_lang.'.cgi';//en, es, fr
$find_t2v = '/http\:\/\/www\.pediaphon\.org\/\~bischoff\/radiopedia\/mp3\/'.$clean_lang.'\/(.*)\.mp3\"/'; $find_t2v = '/http\:\/\/www\.pediaphon\.org\/\~bischoff\/radiopedia\/mp3\/'.$clean_lang.'\/(.*)\.mp3\"/';
} }
$data="stimme=".$clean_voices."&inputtext=".$clean_text."&speed=".$clean_speed."&go=go"; $data="stimme=".$clean_voices."&inputtext=".$clean_text."&speed=".$clean_speed."&go=go";
$opts = array( $opts = array(
'http' => 'http' =>
array( array(
'method' => 'POST', 'method' => 'POST',
'header' =>"Content-Type: application/x-www-form-urlencoded\r\n", 'header' =>"Content-Type: application/x-www-form-urlencoded\r\n",
"Content-Length: " . strlen($data) . "\r\n", "Content-Length: " . strlen($data) . "\r\n",
'content' => $data 'content' => $data
) )
); );
$context = stream_context_create($opts); $context = stream_context_create($opts);
$previous_returntext2voice = file_get_contents($url_pediaphon,false,$context); $previous_returntext2voice = file_get_contents($url_pediaphon,false,$context);
//clean file contents //clean file contents
$search_source=preg_match($find_t2v, $previous_returntext2voice, $hits); $search_source=preg_match($find_t2v, $previous_returntext2voice, $hits);
$souce_end=substr($hits[0], 0,-1); $souce_end=substr($hits[0], 0,-1);
$returntext2voice = file_get_contents($souce_end); $returntext2voice = file_get_contents($souce_end);
//make a temporal file for get the file size //make a temporal file for get the file size
$tmpfname = tempnam("/tmp", "CTF"); $tmpfname = tempnam("/tmp", "CTF");
$handle = fopen($tmpfname, "w"); $handle = fopen($tmpfname, "w");
fwrite($handle, $returntext2voice); fwrite($handle, $returntext2voice);
fclose($handle); fclose($handle);
// Check if there is enough space in the course to save the file // Check if there is enough space in the course to save the file
if (!DocumentManager::enough_space(filesize($tmpfname), DocumentManager::get_course_quota())) { if (!DocumentManager::enough_space(filesize($tmpfname), DocumentManager::get_course_quota())) {
unlink($tmpfname);
die(get_lang('UplNotEnoughSpace'));
}
//erase temporal file
unlink($tmpfname); unlink($tmpfname);
die(get_lang('UplNotEnoughSpace'));
}
//erase temporal file
unlink($tmpfname);
//save file //save file
file_put_contents($documentPath, $returntext2voice); file_put_contents($documentPath, $returntext2voice);
//add document to database //add document to database
$current_session_id = api_get_session_id(); $current_session_id = api_get_session_id();
$groupId=$_SESSION['_gid']; $groupId=$_SESSION['_gid'];
$file_size = filesize($documentPath); $file_size = filesize($documentPath);
$relativeUrlPath=$dir; $relativeUrlPath=$dir;
$doc_id = FileManager::add_document( $doc_id = FileManager::add_document(
$_course, $_course,
$relativeUrlPath.$audio_filename, $relativeUrlPath.$audio_filename,
'file', 'file',
filesize($documentPath), filesize($documentPath),
$audio_title $audio_title
); );
api_item_property_update( api_item_property_update(
$_course, $_course,
TOOL_DOCUMENT, TOOL_DOCUMENT,
$doc_id, $doc_id,
'DocumentAdded', 'DocumentAdded',
$_user['user_id'], $_user['user_id'],
$groupId, $groupId,
null, null,
null, null,
null, null,
$current_session_id $current_session_id
); );
Display::display_confirmation_message(get_lang('DocumentCreated')); Display::display_confirmation_message(get_lang('DocumentCreated'));
//return to location //return to location
echo '<script>window.location.href="'.$location.'"</script>'; echo '<script>window.location.href="'.$location.'"</script>';
} }

@ -92,6 +92,10 @@ if (isset ($_SESSION['_gid']) && $_SESSION['_gid'] != 0) {
$interbreadcrumb[] = array ("url" => "./document.php?id=".$parent_id.$req_gid, "name" => get_lang('Documents')); $interbreadcrumb[] = array ("url" => "./document.php?id=".$parent_id.$req_gid, "name" => get_lang('Documents'));
if (!$is_allowed_in_course) {
api_not_allowed(true);
}
if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder(api_get_user_id(), Security::remove_XSS($dir), api_get_session_id()))) { if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder(api_get_user_id(), Security::remove_XSS($dir), api_get_session_id()))) {
api_not_allowed(true); api_not_allowed(true);
} }
@ -137,27 +141,25 @@ echo '<div class="actions">';
echo '<a href="document.php?id='.$document_id.'">'.Display::return_icon('back.png',get_lang('BackTo').' '.get_lang('DocumentsOverview'),'',ICON_SIZE_MEDIUM).'</a>'; echo '<a href="document.php?id='.$document_id.'">'.Display::return_icon('back.png',get_lang('BackTo').' '.get_lang('DocumentsOverview'),'',ICON_SIZE_MEDIUM).'</a>';
echo '</div>'; echo '</div>';
if (api_browser_support('svg')){ if (api_browser_support('svg')) {
//automatic loading the course language //automatic loading the course language
$svgedit_code_translation_table = array('' => 'en', 'pt' => 'pt-Pt', 'sr' => 'sr_latn'); $svgedit_code_translation_table = array('' => 'en', 'pt' => 'pt-Pt', 'sr' => 'sr_latn');
$langsvgedit = api_get_language_isocode(); $langsvgedit = api_get_language_isocode();
$langsvgedit = isset($svgedit_code_translation_table[$langsvgedit]) ? $svgedit_code_translation_table[$langsvgedit] : $langsvgedit; $langsvgedit = isset($svgedit_code_translation_table[$langsvgedit]) ? $svgedit_code_translation_table[$langsvgedit] : $langsvgedit;
$langsvgedit = file_exists(api_get_path(LIBRARY_PATH).'svg-edit/locale/lang.'.$langsvgedit.'.js') ? $langsvgedit : 'en'; $langsvgedit = file_exists(api_get_path(LIBRARY_PATH).'svg-edit/locale/lang.'.$langsvgedit.'.js') ? $langsvgedit : 'en';
$svg_url= api_get_path(WEB_LIBRARY_PATH).'svg-edit/svg-editor.php?lang='.$langsvgedit ; $svg_url= api_get_path(WEB_LIBRARY_PATH).'svg-edit/svg-editor.php?lang='.$langsvgedit;
?> ?>
<script>
<script type="text/javascript">
document.write ('<iframe id="frame" frameborder="0" scrolling="no" src="<?php echo $svg_url; ?>" width="100%" height="100%"><noframes><p>Sorry, your browser does not handle frames</p></noframes></iframe>'); document.write ('<iframe id="frame" frameborder="0" scrolling="no" src="<?php echo $svg_url; ?>" width="100%" height="100%"><noframes><p>Sorry, your browser does not handle frames</p></noframes></iframe>');
function resizeIframe() { function resizeIframe() {
var height = window.innerHeight -50; var height = window.innerHeight -50;
//max lower size //max lower size
if (height<550) { if (height<550) {
height=550; height=550;
} }
document.getElementById('frame').style.height = height +"px"; document.getElementById('frame').style.height = height +"px";
}; }
document.getElementById('frame').onload = resizeIframe; document.getElementById('frame').onload = resizeIframe;
window.onresize = resizeIframe; window.onresize = resizeIframe;

@ -33,7 +33,7 @@ if (api_get_setting('enabled_support_paint') == 'false') {
$document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true); $document_data = DocumentManager::get_document_data_by_id($_GET['id'], api_get_course_id(), true);
if (empty($document_data)) { if (empty($document_data)) {
if (api_is_in_group()) { if (api_is_in_group()) {
$group_properties = GroupManager::get_group_properties(api_get_group_id()); $group_properties = GroupManager::get_group_properties(api_get_group_id());
$document_id = DocumentManager::get_document_id(api_get_course_info(), $group_properties['directory']); $document_id = DocumentManager::get_document_id(api_get_course_info(), $group_properties['directory']);
$document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id()); $document_data = DocumentManager::get_document_data_by_id($document_id, api_get_course_id());
} }
@ -92,6 +92,10 @@ if (isset ($_SESSION['_gid']) && $_SESSION['_gid'] != 0) {
$interbreadcrumb[] = array ("url" => "./document.php?curdirpath=".urlencode($dir).$req_gid, "name" => get_lang('Documents')); $interbreadcrumb[] = array ("url" => "./document.php?curdirpath=".urlencode($dir).$req_gid, "name" => get_lang('Documents'));
if (!$is_allowed_in_course) {
api_not_allowed(true);
}
if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder($_user['user_id'], Security::remove_XSS($dir),api_get_session_id()))) { if (!($is_allowed_to_edit || GroupManager::groupMemberWithUploadRights() || is_my_shared_folder($_user['user_id'], Security::remove_XSS($dir),api_get_session_id()))) {
api_not_allowed(true); api_not_allowed(true);
} }
@ -158,7 +162,7 @@ else {
$credentials="false"; $credentials="false";
} }
$pixlr_url = 'http://pixlr.com/editor/?title='.$title.'&amp;image='.$image.'&amp;loc='.$loc.'&amp;referrer='.$referrer.'&amp;target='.$target.'&amp;exit='.$exit_path.'&amp;locktarget='.$locktarget.'&amp;locktitle='.$locktitle.'&amp;credentials='.$credentials; $pixlr_url = api_get_protocol().'://pixlr.com/editor/?title='.$title.'&amp;image='.$image.'&amp;loc='.$loc.'&amp;referrer='.$referrer.'&amp;target='.$target.'&amp;exit='.$exit_path.'&amp;locktarget='.$locktarget.'&amp;locktitle='.$locktitle.'&amp;credentials='.$credentials;
?> ?>

Loading…
Cancel
Save