Adds "users" field while exporting classes see BT#9340

1.9.x
Julio Montoya 11 years ago
parent 33e7a47a21
commit cebeba5c42
  1. 12
      main/admin/usergroup_export.php
  2. 32
      main/admin/usergroup_import.php
  3. 3
      main/inc/lib/model.lib.php
  4. 27
      main/inc/lib/usergroup.lib.php

@ -1,11 +1,10 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* @package chamilo.admin * @package chamilo.admin
*/ */
/**
* Code
*/
// 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;
@ -29,14 +28,15 @@ $form->addElement('header', $tool_name);
$form->addElement('style_submit_button', 'submit', get_lang('Export'), 'class="save"'); $form->addElement('style_submit_button', 'submit', get_lang('Export'), 'class="save"');
if ($form->validate()) { if ($form->validate()) {
$user_group = new UserGroup; $userGroup = new UserGroup();
$header = array(array('id', 'name', 'description')); $header = array(array('id', 'name', 'description', 'users'));
$data = $user_group->get_all_for_export(); $data = $userGroup->getDataToExport();
$data = array_merge($header, $data); $data = array_merge($header, $data);
$filename = 'export_classes_'.api_get_local_time(); $filename = 'export_classes_'.api_get_local_time();
Export::export_table_csv($data, $filename); Export::export_table_csv($data, $filename);
exit; exit;
} }
Display :: display_header($tool_name); Display :: display_header($tool_name);
$form->display(); $form->display();
Display::display_footer(); Display::display_footer();

@ -1,5 +1,6 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* This tool allows platform admins to add classes by uploading a CSV file * This tool allows platform admins to add classes by uploading a CSV file
* @todo Add some langvars to DLTT * @todo Add some langvars to DLTT
@ -13,7 +14,7 @@ function validate_data($classes) {
$errors = array(); $errors = array();
$usergroup = new UserGroup(); $usergroup = new UserGroup();
foreach ($classes as $index => $class) { foreach ($classes as $index => $class) {
// 1. Check wheter ClassName is available. // 1. Check of class name is available.
if (!isset($class['name']) || strlen(trim($class['name'])) == 0) { if (!isset($class['name']) || strlen(trim($class['name'])) == 0) {
$class['line'] = $index + 2; $class['line'] = $index + 2;
$class['error'] = get_lang('MissingClassName'); $class['error'] = get_lang('MissingClassName');
@ -41,15 +42,34 @@ function validate_data($classes) {
*/ */
function save_data($classes) function save_data($classes)
{ {
$number_of_added_classes = 0; $count = 0;
$usergroup = new UserGroup(); $usergroup = new UserGroup();
foreach ($classes as $index => $class) { foreach ($classes as $index => $class) {
$usersToAdd = isset($class['users']) ? $class['users'] : null;
unset($class['users']);
$id = $usergroup->save($class); $id = $usergroup->save($class);
if ($id) { if ($id) {
$number_of_added_classes++; if (!empty($usersToAdd)) {
$usersToAddList = explode(',', $usersToAdd);
$userIdList = array();
foreach ($usersToAddList as $username) {
$userInfo = api_get_user_info_from_username($username);
$userIdList[] = $userInfo['user_id'];
}
if (!empty($userIdList)) {
$usergroup->subscribe_users_to_usergroup(
$id,
$userIdList,
false
);
}
}
$count++;
} }
} }
return $number_of_added_classes;
return $count;
} }
// Language files that should be included. // Language files that should be included.
@ -113,8 +133,8 @@ $form->display();
<p><?php echo get_lang('CSVMustLookLike') . ' (' . get_lang('MandatoryFields') . ')'; ?> :</p> <p><?php echo get_lang('CSVMustLookLike') . ' (' . get_lang('MandatoryFields') . ')'; ?> :</p>
<pre> <pre>
<b>name;description</b> <b>name;description;</b>users
"User group 1";"Description" "User group 1";"Description";admin,username1,username2
</pre> </pre>
<?php <?php
// Displaying the footer. // Displaying the footer.

@ -105,9 +105,10 @@ class Model
/** /**
* @param array $options * @param array $options
*
* @return array * @return array
*/ */
public function get_all_for_export($options = null) public function getDataToExport($options = array())
{ {
return Database::select('name, description', $this->table, $options); return Database::select('name, description', $this->table, $options);
} }

@ -707,17 +707,36 @@ class UserGroup extends Model
* @param array $options * @param array $options
* @return array * @return array
*/ */
public function get_all_for_export($options = array()) public function getDataToExport($options = array())
{ {
if ($this->useMultipleUrl) { if ($this->useMultipleUrl) {
$urlId = api_get_current_access_url_id(); $urlId = api_get_current_access_url_id();
$from = $this->table." u INNER JOIN {$this->access_url_rel_usergroup} a $from = $this->table." u INNER JOIN {$this->access_url_rel_usergroup} a
ON (u.id = a.usergroup_id)"; ON (u.id = a.usergroup_id)";
$options = array('where' => array('access_url_id = ? ' => $urlId)); $options = array('where' => array('access_url_id = ? ' => $urlId));
return Database::select('a.id, name, description', $from, $options); $classes = Database::select('a.id, name, description', $from, $options);
} else { } else {
return Database::select('id, name, description', $this->table, $options); $classes = Database::select('id, name, description', $this->table, $options);
}
$result = array();
if (!empty($classes)) {
foreach ($classes as $data) {
$users = self::getUserListByUserGroup($data['id']);
$userToString = null;
if (!empty($users)) {
$userNameList = array();
foreach ($users as $userData) {
$userNameList[] = $userData['username'];
}
$userToString = implode(',', $userNameList);
}
$data['users'] = $userToString;
$result[] = $data;
}
} }
return $result;
} }
/** /**
@ -763,10 +782,12 @@ class UserGroup extends Model
{ {
$groupExists = $this->usergroup_exists(trim($params['name'])); $groupExists = $this->usergroup_exists(trim($params['name']));
if ($groupExists == false) { if ($groupExists == false) {
$id = parent::save($params, $show_query); $id = parent::save($params, $show_query);
if ($this->useMultipleUrl) { if ($this->useMultipleUrl) {
$this->subscribeToUrl($id, api_get_current_access_url_id()); $this->subscribeToUrl($id, api_get_current_access_url_id());
} }
return $id; return $id;
} }

Loading…
Cancel
Save