You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
7.5 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. <?php
  2. /*
  3. * @copyright Leyun internet Technology(Shanghai)Co.,Ltd
  4. * @license http://www.dzzoffice.com/licenses/license.txt
  5. * @package DzzOffice
  6. * @link http://www.dzzoffice.com
  7. * @author zyx(zyx@dzz.cc)
  8. */
  9. if (!defined('IN_DZZ') || !defined('IN_ADMIN')) {
  10. exit('Access Denied');
  11. }
  12. $navtitle = lang('data_set') . ' - ' . lang('appname');
  13. $op = isset($_GET['op']) ? $_GET['op'] : '';
  14. $profilevalidate = array(
  15. 'telephone' => '/^((\\(?\\d{3,4}\\)?)|(\\d{3,4}-)?)\\d{7,8}$/',
  16. 'mobile' => '/^(\+)?(86)?0?1\\d{10}$/',
  17. 'zipcode' => '/^\\d{5,6}$/',
  18. 'revenue' => '/^\\d+$/',
  19. 'height' => '/^\\d{1,3}$/',
  20. 'weight' => '/^\\d{1,3}$/',
  21. 'qq' => '/^[1-9]*[1-9][0-9]*$/'
  22. );
  23. $fieldid = $_GET['fieldid'] ? $_GET['fieldid'] : '';
  24. $do = isset($_GET['do']) ? $_GET['do'] : '';
  25. if ($do == 'delete') {
  26. C::t('user_profile_setting')->delete_by_fieldid($fieldid);
  27. require_once libfile('function/cache');
  28. updatecache(array('profilesetting', 'fields_required', 'fields_optional', 'fields_register', 'setting'));
  29. showmessage('data_del_success', dreferer(), array(), array('alert' => 'right'));
  30. } elseif ($fieldid) {
  31. $_G['setting']['privacy'] = !empty($_G['setting']['privacy']) ? $_G['setting']['privacy'] : array();
  32. $_G['setting']['privacy'] = is_array($_G['setting']['privacy']) ? $_G['setting']['privacy'] : dunserialize($_G['setting']['privacy']);
  33. $field = C::t('user_profile_setting')->fetch($fieldid);
  34. $fixedfields1 = array('uid', 'constellation', 'zodiac');
  35. $fixedfields2 = array('gender', 'birthday', 'department');
  36. $field['isfixed1'] = in_array($fieldid, $fixedfields1);
  37. $field['isfixed2'] = $field['isfixed1'] || in_array($fieldid, $fixedfields2);
  38. //$field['customable'] = preg_match('/^field[1-8]$/i', $fieldid);
  39. $field['validate'] = $field['validate'] ? $field['validate'] : ($profilevalidate[$fieldid] ? $profilevalidate[$fieldid] : '');
  40. if (!submitcheck('editsubmit')) {
  41. $checkLanguage = checkLanguage();
  42. include template('profileset_edit');
  43. exit();
  44. } else {
  45. $setarr = array(
  46. 'invisible' => intval($_POST['invisible']),
  47. 'showincard' => intval($_POST['showincard']),
  48. 'showinregister' => intval($_POST['showinregister']),
  49. 'allowsearch' => intval($_POST['allowsearch']),
  50. 'displayorder' => intval($_POST['displayorder'])
  51. );
  52. if (!$field['isfixed2']) {
  53. $_POST['title'] = dhtmlspecialchars(trim($_POST['title']));
  54. if (empty($_POST['title'])) {
  55. showmessage('data_name_empty', ADMINSCRIPT . '?mod=member&op=profileset&fieldid=' . $fieldid, array(), array('alert' => 'error'));
  56. }
  57. $setarr['title'] = $_POST['title'];
  58. $setarr['description'] = dhtmlspecialchars(trim($_POST['description']));
  59. }
  60. if (!$field['isfixed1']) {
  61. $setarr['required'] = intval($_POST['required']);
  62. $setarr['available'] = intval($_POST['available']);
  63. $setarr['unchangeable'] = intval($_POST['unchangeable']);
  64. $setarr['needverify'] = intval($_POST['needverify']);
  65. }
  66. if (!$field['isfixed2']) {
  67. $setarr['formtype'] = $fieldid == 'realname' ? 'text' : strtolower(trim($_POST['formtype']));
  68. $setarr['size'] = intval($_POST['size']);
  69. if ($_POST['choices']) {
  70. $_POST['choices'] = trim($_POST['choices']);
  71. $ops = explode("\n", $_POST['choices']);
  72. $parts = array();
  73. foreach ($ops as $op) {
  74. $parts[] = dhtmlspecialchars(trim($op));
  75. }
  76. $_POST['choices'] = implode("\n", $parts);
  77. }
  78. $setarr['choices'] = $_POST['choices'];
  79. if ($_POST['validate'] && $_POST['validate'] != $profilevalidate[$fieldid]) {
  80. $setarr['validate'] = $_POST['validate'];
  81. } elseif (empty($_POST['validate'])) {
  82. $setarr['validate'] = '';
  83. }
  84. }
  85. //print_r($setarr);exit($fieldid);
  86. C::t('user_profile_setting')->update($fieldid, $setarr);
  87. if ($_GET['fieldid'] == 'birthday') {
  88. C::t('user_profile_setting')->update('birthmonth', $setarr);
  89. C::t('user_profile_setting')->update('birthyear', $setarr);
  90. }
  91. require_once libfile('function/cache');
  92. if (!isset($_G['setting']['privacy']['profile']) || $_G['setting']['privacy']['profile'][$fieldid] != $_POST['privacy']) {
  93. $_G['setting']['privacy']['profile'][$fieldid] = intval($_POST['privacy']);
  94. C::t('setting')->update('privacy', $_G['setting']['privacy']);
  95. }
  96. updatecache(array('profilesetting', 'fields_required', 'fields_optional', 'fields_register', 'setting'));
  97. showmessage('subscriber_data_edit_success', ADMINSCRIPT . '?mod=member&op=profileset', array(), array('alert' => 'right'));
  98. }
  99. } else {
  100. if (!submitcheck('ordersubmit')) {
  101. $list = array();
  102. foreach (C::t('user_profile_setting')->range() as $fieldid => $value) {
  103. $list[$fieldid] = array(
  104. 'title' => $value['title'],
  105. 'displayorder' => $value['displayorder'],
  106. 'available' => $value['available'],
  107. 'invisible' => $value['invisible'],
  108. 'showincard' => $value['showincard'],
  109. 'showinregister' => $value['showinregister'],
  110. 'customable' => $value['customable']);
  111. }
  112. unset($list['birthyear']);
  113. unset($list['birthmonth']);
  114. $fieldid = '';
  115. } else {
  116. foreach ($_GET['displayorder'] as $fieldid => $value) {
  117. $setarr = array(
  118. 'displayorder' => intval($value),
  119. 'invisible' => intval($_GET['invisible'][$fieldid]) ? 0 : 1,
  120. 'available' => intval($_GET['available'][$fieldid]),
  121. 'showincard' => intval($_GET['showincard'][$fieldid]),
  122. 'showinregister' => intval($_GET['showinregister'][$fieldid]),
  123. );
  124. C::t('user_profile_setting')->update($fieldid, $setarr);
  125. if ($fieldid == 'birthday') {
  126. C::t('user_profile_setting')->update('birthmonth', $setarr);
  127. C::t('user_profile_setting')->update('birthyear', $setarr);
  128. }
  129. }
  130. foreach ($_GET['add']['displayorder'] as $key => $value) {
  131. $setarr = array(
  132. 'displayorder' => intval($value),
  133. 'invisible' => intval($_GET['add']['invisible'][$key]) ? 0 : 1,
  134. 'available' => intval($_GET['add']['available'][$key]),
  135. 'showincard' => intval($_GET['add']['showincard'][$key]),
  136. 'showinregister' => intval($_GET['add']['showinregister'][$key]),
  137. 'title' => dhtmlspecialchars($_GET['add']['title'][$key]),
  138. 'fieldid' => dhtmlspecialchars($_GET['add']['fieldid'][$key])
  139. );
  140. if (empty($setarr['title']) || empty($setarr['fieldid'])) continue;
  141. if (DB::result_first("select COUNT(*) from %t where fieldid=%s", array('user_profile_setting', $settarr['fieldid']))) {
  142. continue;
  143. }
  144. C::t('user_profile_setting')->insert($setarr);
  145. }
  146. require_once libfile('function/cache');
  147. updatecache(array('profilesetting', 'fields_required', 'fields_optional', 'fields_register', 'setting'));
  148. showmessage('subscriber_data_item_edit_success', dreferer(), array(), array('alert' => 'right'));
  149. }
  150. }
  151. include template('profileset');
  152. ?>