user_fields_add.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php // $Id: user_fields_add.php 20845 2009-05-19 17:27:22Z cfasanando $
  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. $htmlHeadXtra[] = '<script src="../inc/lib/javascript/jquery.js" type="text/javascript" language="javascript"></script>'; //jQuery
  34. $htmlHeadXtra[] = '<script type="text/javascript">
  35. function change_image_user_field (image_value) {
  36. if (image_value==1) {
  37. $("div#id_image_user_field").html("&nbsp;");
  38. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_text.png', get_lang('AddUserFields'))."'".');
  39. } else if (image_value==2) {
  40. $("div#id_image_user_field").html("&nbsp;");
  41. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_text_area.png', get_lang('AddUserFields'))."'".');
  42. } else if (image_value==3) {
  43. $("div#id_image_user_field").html("&nbsp;");
  44. $("div#id_image_user_field").html('."'<br />".Display::return_icon('add_user_field_howto.png', get_lang('AddUserFields'))."'".');
  45. } else if (image_value==4) {
  46. $("div#id_image_user_field").html("&nbsp;");
  47. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_drop_down.png', get_lang('AddUserFields'))."'".');
  48. } else if (image_value==5) {
  49. $("div#id_image_user_field").html("&nbsp;");
  50. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_multidropdown.png', get_lang('AddUserFields'))."'".');
  51. } else if (image_value==6) {
  52. $("div#id_image_user_field").html("&nbsp;");
  53. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_data.png', get_lang('AddUserFields'))."'".');
  54. } else if (image_value==7) {
  55. $("div#id_image_user_field").html("&nbsp;");
  56. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_date_time.png', get_lang('AddUserFields'))."'".');
  57. } else if (image_value==8) {
  58. $("div#id_image_user_field").html("&nbsp;");
  59. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_doubleselect.png', get_lang('AddUserFields'))."'".');
  60. } else if (image_value==9) {
  61. $("div#id_image_user_field").html("&nbsp;");
  62. $("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_divider.png', get_lang('AddUserFields'))."'".');
  63. }
  64. }
  65. </script>';
  66. // Database table definitions
  67. $table_admin = Database :: get_main_table(TABLE_MAIN_ADMIN);
  68. $table_user = Database :: get_main_table(TABLE_MAIN_USER);
  69. $table_uf = Database :: get_main_table(TABLE_MAIN_USER_FIELD);
  70. $table_uf_opt = Database :: get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS);
  71. $table_uf_val = Database :: get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
  72. $interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
  73. $interbreadcrumb[] = array ('url' => 'user_fields.php', 'name' => get_lang('UserFields'));
  74. if ($_GET['action']<>'edit')
  75. {
  76. $tool_name = get_lang('AddUserFields');
  77. }
  78. else
  79. {
  80. $tool_name = get_lang('EditUserFields');
  81. }
  82. // Create the form
  83. $form = new FormValidator('user_fields_add');
  84. $form->addElement('header', '', $tool_name);
  85. // Field variable name
  86. $form->addElement('hidden','fieldid',(int)$_GET['field_id']);
  87. $form->addElement('text','fieldlabel',get_lang('FieldLabel'));
  88. $form->applyFilter('fieldlabel','html_filter');
  89. $form->applyFilter('fieldlabel','trim');
  90. $form->addRule('fieldlabel', get_lang('ThisFieldIsRequired'), 'required');
  91. $form->addRule('fieldlabel', get_lang('OnlyLettersAndNumbersAllowed'), 'username');
  92. $form->addRule('fieldlabel', '', 'maxlength',20);
  93. $form->addRule('fieldlabel', get_lang('FieldTaken'), 'fieldlabel_available');
  94. // Field type
  95. $types = array();
  96. $types[USER_FIELD_TYPE_TEXT] = get_lang('FieldTypeText');
  97. $types[USER_FIELD_TYPE_TEXTAREA] = get_lang('FieldTypeTextarea');
  98. $types[USER_FIELD_TYPE_RADIO] = get_lang('FieldTypeRadio');
  99. $types[USER_FIELD_TYPE_SELECT] = get_lang('FieldTypeSelect');
  100. $types[USER_FIELD_TYPE_SELECT_MULTIPLE] = get_lang('FieldTypeSelectMultiple');
  101. $types[USER_FIELD_TYPE_DATE] = get_lang('FieldTypeDate');
  102. $types[USER_FIELD_TYPE_DATETIME] = get_lang('FieldTypeDatetime');
  103. $types[USER_FIELD_TYPE_DOUBLE_SELECT] = get_lang('FieldTypeDoubleSelect');
  104. $types[USER_FIELD_TYPE_DIVIDER] = get_lang('FieldTypeDivider');
  105. $form->addElement('select','fieldtype',get_lang('FieldType'),$types,array('onchange'=>'change_image_user_field(this.value)'));
  106. $form->addRule('fieldtype', get_lang('ThisFieldIsRequired'), 'required');
  107. // Field display name
  108. $form->addElement('text','fieldtitle',get_lang('FieldTitle'));
  109. $form->applyFilter('fieldtitle','html_filter');
  110. $form->applyFilter('fieldtitle','trim');
  111. $form->addRule('fieldtitle', get_lang('ThisFieldIsRequired'), 'required');
  112. // Field options
  113. $form->addElement('text','fieldoptions',get_lang('FieldPossibleValues').Display::return_icon('info3.gif', get_lang('FieldPossibleValuesComment'), array('align' => 'absmiddle', 'hspace' => '3px')));
  114. $form->applyFilter('fieldoptions','trim');
  115. if (is_numeric($_GET['field_id']))
  116. {
  117. $form->addElement('static', 'option_reorder', '', '<a href="user_fields_options.php?field_id='.Security::remove_XSS($_GET['field_id']).'">'.get_lang('ReorderOptions').'</a>');
  118. }
  119. // Field default value
  120. $form->addElement('text','fielddefaultvalue',get_lang('FieldDefaultValue'));
  121. $form->applyFilter('fielddefaultvalue','trim');
  122. // Set default values (only not empty when editing)
  123. $defaults = array();
  124. if (is_numeric($_GET['field_id']))
  125. {
  126. $form_information = UserManager::get_extra_field_information((int)$_GET['field_id']);
  127. $defaults['fieldtitle'] = $form_information['field_display_text'];
  128. $defaults['fieldlabel'] = $form_information['field_variable'];
  129. $defaults['fieldtype'] = $form_information['field_type'];
  130. $defaults['fielddefaultvalue'] = $form_information['field_default_value'];
  131. $count = 0;
  132. // we have to concatenate the options
  133. if (count($form_information['options'])>0) {
  134. foreach ($form_information['options'] as $option_id=>$option)
  135. {
  136. if ($count<>0)
  137. {
  138. $defaults['fieldoptions'] = $defaults['fieldoptions'].'; '.$option['option_display_text'];
  139. }
  140. else
  141. {
  142. $defaults['fieldoptions'] = $option['option_display_text'];
  143. }
  144. $count++;
  145. }
  146. }
  147. }
  148. $form->setDefaults($defaults);
  149. if(isset($_GET['field_id']) && !empty($_GET['field_id'])) {
  150. $class="save";
  151. $text=get_lang('buttonEditUserField');
  152. } else {
  153. $class="add";
  154. $text=get_lang('buttonAddUserField');
  155. }
  156. // Submit button
  157. $form->addElement('style_submit_button', 'submit',$text, 'class='.$class.'');
  158. // Validate form
  159. if( $form->validate())
  160. {
  161. $check = Security::check_token('post');
  162. if($check)
  163. {
  164. $field = $form->exportValues();
  165. $fieldlabel = $field['fieldlabel'];
  166. $fieldtype = $field['fieldtype'];
  167. $fieldtitle = $field['fieldtitle'];
  168. $fielddefault = $field['fielddefaultvalue'];
  169. $fieldoptions = $field['fieldoptions']; //comma-separated list of options
  170. if (is_numeric($field['fieldid']) AND !empty($field['fieldid']))
  171. {
  172. UserManager:: save_extra_field_changes($field['fieldid'],$fieldlabel,$fieldtype,$fieldtitle,$fielddefault,$fieldoptions);
  173. $message = get_lang('FieldEdited');
  174. }
  175. else
  176. {
  177. $field_id = UserManager::create_extra_field($fieldlabel,$fieldtype,$fieldtitle,$fielddefault,$fieldoptions);
  178. $message = get_lang('FieldAdded');
  179. }
  180. Security::clear_token();
  181. header('Location: user_fields.php?action=show_message&message='.urlencode(get_lang('FieldAdded')));
  182. exit ();
  183. }
  184. }else{
  185. if(isset($_POST['submit'])){
  186. Security::clear_token();
  187. }
  188. $token = Security::get_token();
  189. $form->addElement('hidden','sec_token');
  190. $form->setConstants(array('sec_token' => $token));
  191. }
  192. // Display form
  193. Display::display_header($tool_name);
  194. //api_display_tool_title($tool_name);
  195. if(!empty($_GET['message']))
  196. {
  197. Display::display_normal_message($_GET['message']);
  198. }
  199. //else
  200. //{
  201. //Display::display_normal_message(get_lang('UserFieldsAddHelp'),false);
  202. //}
  203. $form->display();
  204. echo '<div id="id_image_user_field">';
  205. if(!empty($defaults['fieldtype'])) {
  206. $image_value = $defaults['fieldtype'];
  207. if ($image_value==1) {
  208. echo '<br />'.Display::return_icon('userfield_text.png', get_lang('AddUserFields'));
  209. } else if ($image_value==2) {
  210. echo '<br />'.Display::return_icon('userfield_text_area.png', get_lang('AddUserFields'));
  211. } else if ($image_value==3) {
  212. echo '<br />'.Display::return_icon('add_user_field_howto.png', get_lang('AddUserFields'));
  213. } else if ($image_value==4) {
  214. echo '<br />'.Display::return_icon('userfield_drop_down.png', get_lang('AddUserFields'));
  215. } else if ($image_value==5) {
  216. echo '<br />'.Display::return_icon('userfield_multidropdown.png', get_lang('AddUserFields'));
  217. } else if ($image_value==6) {
  218. echo '<br />'.Display::return_icon('userfield_data.png', get_lang('AddUserFields'));
  219. } else if ($image_value==7) {
  220. echo '<br />'.Display::return_icon('userfield_date_time.png', get_lang('AddUserFields'));
  221. } else if ($image_value==8) {
  222. echo '<br />'.Display::return_icon('userfield_doubleselect.png', get_lang('AddUserFields'));
  223. } else if ($image_value==9) {
  224. echo '<br />'.Display::return_icon('userfield_divider.png', get_lang('AddUserFields'));
  225. }
  226. } else {
  227. echo '<br />'.Display::return_icon('userfield_text.png', get_lang('AddUserFields'));
  228. }
  229. echo '</div>';
  230. // footer
  231. Display::display_footer();
  232. ?>