[svn r18595] Admin user can export/import the extra_field information of users (see FS#3686)

skala
Julio Montoya 17 years ago
parent 69318a8e4d
commit ec4dc4f474
  1. 4
      main/admin/exemple.csv
  2. 20
      main/admin/exemple.xml
  3. 23
      main/admin/user_export.php
  4. 41
      main/admin/user_import.php

@ -1,3 +1,3 @@
LastName;FirstName;UserName;Password;Email;OfficialCode;PhoneNumber;Status;Courses LastName;FirstName;UserName;Password;Email;OfficialCode;PhoneNumber;Status;Courses
Gates;Bill;BillGates;secret_password;bill.gates@microsoft.com;12345678;001-123-456-789;user;COURSE1|COURSE2|COURSE3 Mcfly;Marty;Marty Mcfly;secret;marty@example.com;12345678;001-123-456-789;user;COURSE1|COURSE2|COURSE3
Bush;Georges;;;georges_bush@usa.org;;;teacher;COURSE2 Brown;Emmert;;;drbrown@example.net;;;teacher;COURSE2

1 LastName FirstName UserName Password Email OfficialCode PhoneNumber Status Courses
2 Gates Mcfly Bill Marty BillGates Marty Mcfly secret_password secret bill.gates@microsoft.com marty@example.com 12345678 001-123-456-789 user COURSE1|COURSE2|COURSE3
3 Bush Brown Georges Emmert georges_bush@usa.org drbrown@example.net teacher COURSE2

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<Contacts> <Contacts>
<Contact> <Contact>
<LastName>Gates</LastName> <LastName>Mcfly</LastName>
<FirstName>Bill</FirstName> <FirstName>Marty</FirstName>
<UserName>BillGates</UserName> <UserName>marty</UserName>
<Password>secret_password</Password> <Password>secret</Password>
<Email>bill.gates@microsoft.com</Email> <Email>marty@example.net</Email>
<OfficialCode>12345678</OfficialCode> <OfficialCode>12345678</OfficialCode>
<PhoneNumber>001-123-456-789</PhoneNumber> <PhoneNumber>001-123-456-789</PhoneNumber>
<Status>user</Status> <Status>user</Status>
<Courses>COURSE1|COURSE2|COURSE3</Courses> <Courses>COURSE1|COURSE2|COURSE3</Courses>
</Contact> </Contact>
<Contact> <Contact>
<LastName>Bush</LastName> <LastName>Brown</LastName>
<FirstName>Georges</FirstName> <FirstName>Emmett</FirstName>
<UserName></UserName> <UserName>emmett</UserName>
<Password></Password> <Password>secret</Password>
<Email>georges_bush@usa.org</Email> <Email>drbrown@example.net</Email>
<OfficialCode /> <OfficialCode />
<PhoneNumber /> <PhoneNumber />
<Status>teacher</Status> <Status>teacher</Status>

@ -1,5 +1,5 @@
<?php <?php
// $Id: user_export.php 18237 2009-02-04 19:13:09Z juliomontoya $ // $Id: user_export.php 18595 2009-02-19 21:17:17Z juliomontoya $
/* /*
============================================================================== ==============================================================================
Dokeos - elearning and course management software Dokeos - elearning and course management software
@ -100,7 +100,6 @@ if ($form->validate())
$sql .= " FROM $user_table u, $course_user_table cu WHERE u.user_id = cu.user_id AND course_code = '$course_code' ORDER BY lastname,firstname"; $sql .= " FROM $user_table u, $course_user_table cu WHERE u.user_id = cu.user_id AND course_code = '$course_code' ORDER BY lastname,firstname";
$filename = 'export_users_'.$course_code.'_'.date('Y-m-d_H-i-s'); $filename = 'export_users_'.$course_code.'_'.date('Y-m-d_H-i-s');
} else { } else {
global $_configuration; global $_configuration;
if ($_configuration['multiple_access_urls']==true) { if ($_configuration['multiple_access_urls']==true) {
$tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@ -114,10 +113,11 @@ if ($form->validate())
} else { } else {
$sql .= " FROM $user_table u ORDER BY lastname,firstname"; $sql .= " FROM $user_table u ORDER BY lastname,firstname";
} }
$filename = 'export_users_'.date('Y-m-d_H-i-s'); $filename = 'export_users_'.date('Y-m-d_H-i-s');
} }
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
$data = array(); $data = array();
$extra_fields = Usermanager::get_extra_fields(0, 0, 5, 'ASC',false);
if ($export['addcsvheader']=='1' AND $export['file_type']=='csv') if ($export['addcsvheader']=='1' AND $export['file_type']=='csv')
{ {
if($userPasswordCrypted) { if($userPasswordCrypted) {
@ -125,10 +125,23 @@ if ($form->validate())
} else { } else {
$data[] = array('UserId', 'LastName', 'FirstName', 'Email', 'UserName','Password', 'AuthSource', 'Status', 'OfficialCode', 'Phone'); $data[] = array('UserId', 'LastName', 'FirstName', 'Email', 'UserName','Password', 'AuthSource', 'Status', 'OfficialCode', 'Phone');
} }
foreach($extra_fields as $extra) {
$data[0][]=$extra[1];
}
} }
$res = api_sql_query($sql,__FILE__,__LINE__); $res = api_sql_query($sql,__FILE__,__LINE__);
while($user = mysql_fetch_array($res,MYSQL_ASSOC)) while($user = Database::fetch_array($res,'ASSOC')) {
{ $student_data= UserManager :: get_extra_user_data($user['UserId'],true,false);
foreach($student_data as $key=>$value) {
$key= substr($key,6);
if (is_array($value))
$user[$key]= $value[$key];
else {
$user[$key]= $value;
}
}
$data[] = $user ; $data[] = $user ;
} }

@ -1,9 +1,9 @@
<?php // $Id: user_import.php 18020 2009-01-27 00:02:33Z cfasanando $ <?php // $Id: user_import.php 18595 2009-02-19 21:17:17Z juliomontoya $
/* /*
============================================================================== ==============================================================================
Dokeos - elearning and course management software Dokeos - elearning and course management software
Copyright (c) 2004-2008 Dokeos SPRL Copyright (c) 2004-2009 Dokeos SPRL
Copyright (c) 2003 Ghent University (UGent) Copyright (c) 2003 Ghent University (UGent)
Copyright (c) 2001 Universite catholique de Louvain (UCL) Copyright (c) 2001 Universite catholique de Louvain (UCL)
Copyright (c) Olivier Brouckaert Copyright (c) Olivier Brouckaert
@ -170,6 +170,19 @@ function save_data($users)
$class_id = ClassManager :: get_class_id($user['ClassName']); $class_id = ClassManager :: get_class_id($user['ClassName']);
ClassManager :: add_user($user_id, $class_id); ClassManager :: add_user($user_id, $class_id);
} }
//saving extra fields
global $extra_fields;
//print_R($user);
//we are sure the extra field exist
foreach($extra_fields as $extras) {
if (isset($user[$extras[1]])) {
$key = $extras[1];
$value = $user[$extras[1]];
UserManager::update_extra_field_value($user_id,$key,$value);
}
}
if ($sendMail) if ($sendMail)
{ {
$recipient_name = $user['FirstName'].' '.$user['LastName']; $recipient_name = $user['FirstName'].' '.$user['LastName'];
@ -296,6 +309,7 @@ $tool_name = get_lang('ImportUserListXMLCSV');
$interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
set_time_limit(0); set_time_limit(0);
$extra_fields = Usermanager::get_extra_fields(0, 0, 5, 'ASC',false);
if ($_POST['formSent'] AND $_FILES['import_file']['size'] !== 0) if ($_POST['formSent'] AND $_FILES['import_file']['size'] !== 0)
{ {
@ -351,13 +365,30 @@ $defaults['formSent'] = 1;
$defaults['file_type'] = 'xml'; $defaults['file_type'] = 'xml';
$form->setDefaults($defaults); $form->setDefaults($defaults);
$form->display(); $form->display();
$list=array();
$list_reponse=array();
$result_xml = '' ;
$i=0;
$count_fields = count($extra_fields);
if ($count_fields > 0) {
foreach($extra_fields as $extra) {
$list[] = $extra[1];
$list_reponse[]='xxx';
$spaces = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
$result_xml.=$spaces.'&lt;'.$extra[1].'&gt;xxx&lt;/'.$extra[1].'&gt;';
if ($i!=$count_fields-1)
$result_xml.='<br/>';
$i++;
}
}
?> ?>
<p><?php echo get_lang('CSVMustLookLike').' ('.get_lang('MandatoryFields').')'; ?> :</p> <p><?php echo get_lang('CSVMustLookLike').' ('.get_lang('MandatoryFields').')'; ?> :</p>
<blockquote> <blockquote>
<pre> <pre>
<b>LastName</b>;<b>FirstName</b>;<b>Email</b>;UserName;Password;AuthSource;OfficialCode;PhoneNumber;Status;Courses;ClassName <b>LastName</b>;<b>FirstName</b>;<b>Email</b>;UserName;Password;AuthSource;OfficialCode;PhoneNumber;Status;<font style="color:red;"><?php if(count($list)>0) echo implode(';', $list).';';?></font>Courses;ClassName;
<b>xxx</b>;<b>xxx</b>;<b>xxx</b>;xxx;xxx;<?php echo implode('/',$defined_auth_sources); ?>;xxx;xxx;user/teacher/drh;xxx1|xxx2|xxx3;xxx <b>xxx</b>;<b>xxx</b>;<b>xxx</b>;xxx;xxx;<?php echo implode('/',$defined_auth_sources); ?>;xxx;xxx;user/teacher/drh;<font style="color:red;"><?php if(count($list_reponse)>0) echo implode(';', $list_reponse).';';?></font>xxx1|xxx2|xxx3;xxx;<br />
</pre> </pre>
</blockquote> </blockquote>
@ -376,7 +407,7 @@ $form->display();
<b>&lt;Email&gt;xxx&lt;/Email&gt;</b> <b>&lt;Email&gt;xxx&lt;/Email&gt;</b>
&lt;OfficialCode&gt;xxx&lt;/OfficialCode&gt; &lt;OfficialCode&gt;xxx&lt;/OfficialCode&gt;
&lt;PhoneNumber&gt;xxx&lt;/PhoneNumber&gt; &lt;PhoneNumber&gt;xxx&lt;/PhoneNumber&gt;
&lt;Status&gt;user/teacher/drh&lt;/Status&gt; &lt;Status&gt;user/teacher/drh&lt;/Status&gt; <?php if ($result_xml!='') { echo '<br /><font style="color:red;">',$result_xml;echo '</font>';} ?>
&lt;Courses&gt;xxx1|xxx2|xxx3&lt;/Courses&gt; &lt;Courses&gt;xxx1|xxx2|xxx3&lt;/Courses&gt;
&lt;ClassName&gt;class 1&lt;/ClassName&gt; &lt;ClassName&gt;class 1&lt;/ClassName&gt;
&lt;/Contact&gt; &lt;/Contact&gt;

Loading…
Cancel
Save