user_fields.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php // $Id: $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2008 Dokeos SPRL
  6. For a full list of contributors, see "credits.txt".
  7. The full license can be read in "license.txt".
  8. This program is free software; you can redistribute it and/or
  9. modify it under the terms of the GNU General Public License
  10. as published by the Free Software Foundation; either version 2
  11. of the License, or (at your option) any later version.
  12. See the GNU General Public License for more details.
  13. Contact: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium, info@dokeos.com
  14. ==============================================================================
  15. */
  16. /**
  17. ==============================================================================
  18. * @package dokeos.admin
  19. ==============================================================================
  20. */
  21. // name of the language file that needs to be included
  22. $language_file = array('admin','registration');
  23. $cidReset = true;
  24. // including necessary libraries
  25. require ('../inc/global.inc.php');
  26. $libpath = api_get_path(LIBRARY_PATH);
  27. include_once ($libpath.'usermanager.lib.php');
  28. require_once ($libpath.'formvalidator/FormValidator.class.php');
  29. // section for the tabs
  30. $this_section=SECTION_PLATFORM_ADMIN;
  31. // user permissions
  32. api_protect_admin_script();
  33. // Database table definitions
  34. $table_admin = Database :: get_main_table(TABLE_MAIN_ADMIN);
  35. $table_user = Database :: get_main_table(TABLE_MAIN_USER);
  36. $table_uf = Database :: get_main_table(TABLE_MAIN_USER_FIELD);
  37. $table_uf_opt = Database :: get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS);
  38. $table_uf_val = Database :: get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
  39. $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
  40. // Display form
  41. if(1)
  42. {
  43. $tool_name = get_lang('UserFields');
  44. Display :: display_header($tool_name, "");
  45. //api_display_tool_title($tool_name);
  46. if (isset ($_GET['action']))
  47. {
  48. $check = Security::check_token('get');
  49. if($check)
  50. {
  51. switch ($_GET['action'])
  52. {
  53. case 'show_message' :
  54. Display :: display_normal_message($_GET['message']);
  55. break;
  56. case 'show_field' :
  57. if (api_is_platform_admin() && !empty($_GET['field_id']) && UserManager :: update_extra_field($_GET['field_id'],array('field_visible'=>'1')))
  58. {
  59. Display :: display_normal_message(get_lang('FieldShown'));
  60. }
  61. else
  62. {
  63. Display :: display_error_message(get_lang('CannotShowField'));
  64. }
  65. break;
  66. case 'hide_field' :
  67. if (api_is_platform_admin() && !empty($_GET['field_id']) && UserManager :: update_extra_field($_GET['field_id'],array('field_visible'=>'0')))
  68. {
  69. Display :: display_normal_message(get_lang('FieldHidden'));
  70. }
  71. else
  72. {
  73. Display :: display_error_message(get_lang('CannotHideField'));
  74. }
  75. break;
  76. case 'thaw_field' :
  77. if (api_is_platform_admin() && !empty($_GET['field_id']) && UserManager :: update_extra_field($_GET['field_id'],array('field_changeable'=>'1')))
  78. {
  79. Display :: display_normal_message(get_lang('FieldMadeChangeable'));
  80. }
  81. else
  82. {
  83. Display :: display_error_message(get_lang('CannotMakeFieldChangeable'));
  84. }
  85. break;
  86. case 'freeze_field' :
  87. if (api_is_platform_admin() && !empty($_GET['field_id']) && UserManager :: update_extra_field($_GET['field_id'],array('field_changeable'=>'0')))
  88. {
  89. Display :: display_normal_message(get_lang('FieldMadeUnchangeable'));
  90. }
  91. else
  92. {
  93. Display :: display_error_message(get_lang('CannotMakeFieldUnchangeable'));
  94. }
  95. break;
  96. }
  97. Security::clear_token();
  98. }
  99. }
  100. if (isset ($_POST['action']))
  101. {
  102. $check = Security::check_token('get');
  103. if($check)
  104. {
  105. switch ($_POST['action'])
  106. {
  107. default:
  108. break;
  109. }
  110. Security::clear_token();
  111. }
  112. }
  113. // Create an add-field box
  114. $form = new FormValidator('add_field','post','','',null,false);
  115. $renderer =& $form->defaultRenderer();
  116. $renderer->setElementTemplate('<span>{element}</span> ');
  117. //$form->addElement('text','label',get_lang('FieldLabel'));
  118. //$form->addElement('text','type',get_lang('FieldType'));
  119. //$form->addElement('text','title',get_lang('FieldTitle'));
  120. //$form->addElement('text','default',get_lang('FieldDefaultValue'));
  121. //$form->addElement('submit','submit',get_lang('Search'));
  122. $form->addElement('static','search_advanced_link',null,'<a href="user_fields_add.php?action=fill">'.get_lang('AddUserField').'</a>');
  123. $form->display();
  124. // Create a sortable table with user-data
  125. $parameters['sec_token'] = Security::get_token();
  126. $column_show = array(1,1,1,1,1,1,1,1,0);
  127. $column_order = array(1,2,3,4,5,6,7,8,9);
  128. $extra_fields = UserManager::get_extra_fields(0,50,5,'ASC');
  129. $table = new SortableTableFromArrayConfig($extra_fields, 5, 50, '', $column_show, $column_order, 'ASC');
  130. $table->set_additional_parameters($parameters);
  131. $table->set_header(0, '', false);
  132. $table->set_header(1, get_lang('FieldLabel'));
  133. $table->set_header(2, get_lang('FieldType'));
  134. $table->set_header(3, get_lang('FieldTitle'),false);
  135. $table->set_header(4, get_lang('FieldDefaultValue'),false);
  136. $table->set_header(5, get_lang('FieldOrder'));
  137. $table->set_header(6, get_lang('FieldVisibility'));
  138. $table->set_header(7, get_lang('FieldChangeability'));
  139. $table->set_column_filter(6, 'modify_visibility');
  140. $table->set_column_filter(7, 'modify_changeability');
  141. $table->display();
  142. }
  143. /*
  144. ==============================================================================
  145. FOOTER
  146. ==============================================================================
  147. */
  148. Display::display_footer();
  149. //gateway functions to the UserManager methods (provided for SorteableTable callback mechanism)
  150. function get_number_of_extra_fields()
  151. {
  152. return UserManager::get_number_of_extra_fields();
  153. }
  154. function get_extra_fields($f,$n,$o,$d)
  155. {
  156. return UserManager::get_extra_fields($f,$n,$o,$d);
  157. }
  158. /**
  159. * Modify the visible field to show links and icons
  160. * @param int The current visibility
  161. * @param array Url parameters
  162. * @param array The results row
  163. * @return string The link
  164. */
  165. function modify_visibility($visibility,$url_params,$row)
  166. {
  167. return ($visibility?'<a href="'.api_get_self().'?action=hide_field&field_id='.$row[0].'&sec_token='.$_SESSION['sec_token'].'"><img src="'.api_get_path(WEB_IMG_PATH).'right.gif" alt="'.get_lang('Hide').'" /></a>':'<a href="'.api_get_self().'?action=show_field&field_id='.$row[0].'&sec_token='.$_SESSION['sec_token'].'"><img src="'.api_get_path(WEB_IMG_PATH).'wrong.gif" alt="'.get_lang('Show').'" /></a>');
  168. }
  169. /**
  170. * Modify the changeability field to show links and icons
  171. * @param int The current changeability
  172. * @param array Url parameters
  173. * @param array The results row
  174. * @return string The link
  175. */
  176. function modify_changeability($visibility,$url_params,$row)
  177. {
  178. return ($visibility?'<a href="'.api_get_self().'?action=freeze_field&field_id='.$row[0].'&sec_token='.$_SESSION['sec_token'].'"><img src="'.api_get_path(WEB_IMG_PATH).'right.gif" alt="'.get_lang('MakeUnchangeable').'" /></a>':'<a href="'.api_get_self().'?action=thaw_field&field_id='.$row[0].'&sec_token='.$_SESSION['sec_token'].'"><img src="'.api_get_path(WEB_IMG_PATH).'wrong.gif" alt="'.get_lang('MakeChangeable').'" /></a>');
  179. }
  180. ?>