Adding export, import in usergroups see #4071

skala
Julio Montoya 13 years ago
parent 93a38cde67
commit b4397d5ec7
  1. 43
      main/admin/usergroup_export.php
  2. 118
      main/admin/usergroup_import.php
  3. 4
      main/inc/lib/model.lib.php
  4. 111
      main/install/update-db-1.8.8-1.9.0.inc.php

@ -0,0 +1,43 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
/**
* Code
*/
// name of the language file that needs to be included
$language_file = 'admin';
$cidReset = true;
require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script();
require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
$tool_name = get_lang('Export');
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ('url' => 'usergroups.php', 'name' => get_lang('Classes'));
set_time_limit(0);
$form = new FormValidator('export_users');
$form->addElement('header', $tool_name);
$form->addElement('style_submit_button', 'submit',get_lang('Export'),'class="save"');
if ($form->validate()) {
$user_group = new UserGroup;
$header = array(array('name', 'description'));
$data = $user_group->get_all_for_export();
$data = array_merge($header, $data);
$filename = 'export_classes_'.date('Y-m-d_H-i-s');
Export::export_table_csv($data,$filename);
}
Display :: display_header($tool_name);
$form->display();
Display :: display_footer();

@ -0,0 +1,118 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
/**
* Code
* This tool allows platform admins to add classes by uploading a CSV file
* @todo Add some langvars to DLTT
*/
/**
* Validates imported data.
*/
function validate_data($classes) {
$errors = array();
$usergroup = new UserGroup();
foreach ($classes as $index => $class) {
// 1. Check wheter ClassName is available.
if (!isset($class['name']) || strlen(trim($class['name'])) == 0) {
$class['line'] = $index + 2;
$class['error'] = get_lang('MissingClassName');
$errors[] = $class;
}
// 2. Check whether class doesn't exist yet.
else {
if ($usergroup->usergroup_exists($class['name'])) {
$class['line'] = $index + 2;
$class['error'] = get_lang('ClassNameExists').' <strong>'.$class['ClassName'].'</strong>';
$errors[] = $class;
}
}
}
return $errors;
}
/**
* Save imported class data to database
*/
function save_data($classes) {
$number_of_added_classes = 0;
$usergroup = new UserGroup();
var_dump($classes);
foreach ($classes as $index => $class) {
$id = $usergroup->save($class);
if ($id) {
$number_of_added_classes++;
}
}
return $number_of_added_classes;
}
// Language files that should be included.
$language_file = array ('admin', 'registration');
// Resetting the course id.
$cidReset = true;
// Including some necessary dokeos files.
include '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(LIBRARY_PATH).'import.lib.php';
// Setting the section (for the tabs).
$this_section = SECTION_PLATFORM_ADMIN;
// Access restrictions.
api_protect_admin_script();
// setting breadcrumbs
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array ('url' => 'usergroups.php', 'name' => get_lang('Classes'));
// Database Table Definitions
// Setting the name of the tool.
$tool_name = get_lang('ImportClassListCSV');
// Displaying the header.
Display :: display_header($tool_name);
set_time_limit(0);
$form = new FormValidator('import_classes');
$form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation'));
$form->addElement('style_submit_button', 'submit', get_lang('Import'), 'class="save"');
if ($form->validate()) {
$classes = Import::csv_to_array($_FILES['import_file']['tmp_name']);
$errors = validate_data($classes);
if (count($errors) == 0) {
$number_of_added_classes = save_data($classes);
Display::display_normal_message($number_of_added_classes.' '.get_lang('Added'));
} else {
$error_message = get_lang('ErrorsWhenImportingFile');
$error_message .= '<ul>';
foreach ($errors as $index => $error_class) {
$error_message .= '<li>'.$error_class['error'].' ('.get_lang('Line').' '.$error_class['line'].')';
$error_message .= '</li>';
}
$error_message .= '</ul>';
$error_message .= get_lang('Error');
Display :: display_error_message($error_message);
}
}
$form->display();
?>
<p><?php echo get_lang('CSVMustLookLike').' ('.get_lang('MandatoryFields').')'; ?> :</p>
<blockquote>
<b>name;description</b> <br />
User group 1;My user group 1
</blockquote>
<?php
// Displaying the footer.
Display :: display_footer();

@ -89,6 +89,10 @@ class Model {
return Database::select('*', $this->table, $options);
}
public function get_all_for_export($options = null) {
return Database::select('name, description', $this->table, $options);
}
/**
* Get the count of elements
*/

@ -67,10 +67,12 @@ if (defined('SYSTEM_INSTALLATION')) {
* Update the databases "pre" migration
*/
include '../lang/english/create_course.inc.php';
if ($languageForm != 'english') {
// languageForm has been escaped in index.php
include '../lang/'.$languageForm.'/create_course.inc.php';
}
// Get the main queries list (m_q_list)
$m_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'main');
@ -98,6 +100,14 @@ if (defined('SYSTEM_INSTALLATION')) {
}
}
}
if (INSTALL_TYPE_UPDATE == 'update') {
$session_mod = api_get_setting('use_session_mode');
if ($session_mod == 'false') {
}
}
// Get the stats queries list (s_q_list)
$s_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'stats');
@ -167,23 +177,6 @@ if (defined('SYSTEM_INSTALLATION')) {
iDatabase::select_db($dbNameForm);
}
//Renaming user tables in the main DB
$user_tables = array(
'personal_agenda',
'personal_agenda_repeat',
'personal_agenda_repeat_not',
'user_course_category',
);
if ($dbNameForm != $dbUserForm) {
Database::select_db($dbUserForm);
foreach ($user_tables as $table) {
$sql = "ALTER TABLE $dbUserForm.$table RENAME $dbNameForm.$table";
Database::query($sql);
}
Database::select_db($dbNameForm);
}
// Get the user queries list (u_q_list)
$u_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'user');
@ -213,8 +206,8 @@ if (defined('SYSTEM_INSTALLATION')) {
}
}
//Moving User DB to the main database
$users_table = array(
//Moving user database to the main database
$users_tables = array(
"personal_agenda",
"personal_agenda_repeat",
"personal_agenda_repeat_not",
@ -223,12 +216,12 @@ if (defined('SYSTEM_INSTALLATION')) {
if ($dbNameForm != $dbUserForm) {
iDatabase::select_db($dbUserForm);
foreach($users_table as $table) {
foreach ($users_tables as $table) {
$sql = "ALTER TABLE $dbUserForm.$table RENAME $dbNameForm.$table";
iDatabase::query($sql);
}
iDatabase::select_db($dbNameForm);
}
}
}
//Adding admin user in the access_url_rel_user table
@ -251,44 +244,6 @@ if (defined('SYSTEM_INSTALLATION')) {
if ($singleDbForm) {
$prefix = get_config_param('table_prefix');
}
function check_work($folder_id, $work_url, $work_table, $base_work_dir) {
$uniq_id = uniqid();
//Looking for subfolders
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='folder'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
check_work($row['id'], $row['url'], $work_table, $base_work_dir);
}
}
//Moving the subfolder in the root
$new_url = '/'.basename($work_url).'_mv_'.$uniq_id;
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = 0 WHERE id = $folder_id";
iDatabase::query($sql);
if (is_dir($base_work_dir.$work_url)) {
rename($base_work_dir.$work_url, $base_work_dir.$new_url);
//Rename all files inside the folder
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='file'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$new_url = "work".$new_url.'/'.basename($row['url']);
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $folder_id, contains_file = '1' WHERE id = {$row['id']}";
iDatabase::query($sql);
}
}
}
}
// Get the courses databases queries list (c_q_list)
$c_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'course');
@ -452,7 +407,7 @@ if (defined('SYSTEM_INSTALLATION')) {
check_work($folder_id, $work_folder['url'], $work_table, $base_work_dir);
}
}
}
}
/* End of work fix */
@ -622,4 +577,40 @@ if (defined('SYSTEM_INSTALLATION')) {
}
} else {
echo 'You are not allowed here !';
}
function check_work($folder_id, $work_url, $work_table, $base_work_dir) {
$uniq_id = uniqid();
//Looking for subfolders
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='folder'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
check_work($row['id'], $row['url'], $work_table, $base_work_dir);
}
}
//Moving the subfolder in the root
$new_url = '/'.basename($work_url).'_mv_'.$uniq_id;
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = 0 WHERE id = $folder_id";
iDatabase::query($sql);
if (is_dir($base_work_dir.$work_url)) {
rename($base_work_dir.$work_url, $base_work_dir.$new_url);
//Rename all files inside the folder
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='file'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$new_url = "work".$new_url.'/'.basename($row['url']);
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $folder_id, contains_file = '1' WHERE id = {$row['id']}";
iDatabase::query($sql);
}
}
}
}
Loading…
Cancel
Save