/inc/app/cms/boxes/user/preferences/index.php

https://github.com/durand54/sitellite · PHP · 165 lines · 126 code · 31 blank · 8 comment · 33 complexity · e9d6d98cf8c1264a6b7cf2850618edea MD5 · raw file

  1. <?php
  2. loader_import ('saf.MailForm');
  3. class PreferencesForm extends MailForm {
  4. function PreferencesForm () {
  5. parent::MailForm ();
  6. $this->extra = 'class="cms-preferences" autocomplete="off"';
  7. $this->help = session_pref ('form_help');
  8. if ($this->help == 'on') {
  9. // include formhelp
  10. page_add_script (site_prefix () . '/js/formhelp-compressed.js');
  11. page_add_script ('
  12. formhelp_prepend = \'<table border="0" cellpadding="0"><tr><td width="12" valign="top"><img src="' . site_prefix () . '/inc/app/cms/pix/arrow-10px.gif" alt="" border="0" /></td><td valign="top">\';
  13. formhelp_append = \'</td></tr></table>\';
  14. ');
  15. }
  16. if (db_shift ('select count(*) from sitellite_user where username = ?', session_username ())) {
  17. // we allow only internal users to change their passwords,
  18. // other sources are managed externally
  19. $this->internal_user = true;
  20. $w =& $this->addWidget ('section', 'pwdsection');
  21. $w->title = intl_get ('Change Password');
  22. $w =& $this->addWidget ('password', 'orig');
  23. $w->alt = intl_get ('Current Password');
  24. $w->addRule ('func "cms_user_preferences_pass_empty_rule"', intl_get ('You must enter your current password to change it.'));
  25. $w->addRule ('func "cms_user_preferences_pass_wrong_rule"', intl_get ('Your current password is incorrect.'));
  26. $w->extra = 'autocomplete="off"';
  27. $w->ignoreEmpty = false;
  28. $w =& $this->addWidget ('password', 'passwd');
  29. $w->alt = intl_get ('New Password');
  30. $w =& $this->addWidget ('password', 'password_verify');
  31. $w->alt = intl_get ('Verify Password');
  32. $w->addRule ('equals "passwd"', intl_get ('Passwords do not match.'));
  33. $w->ignoreEmpty = false;
  34. $w =& $this->addWidget ('section', 'prefsection');
  35. $w->title = intl_get ('Preferences');
  36. } else {
  37. $this->internal_user = false;
  38. }
  39. $this->parseSettings ('inc/conf/auth/preferences/index.php');
  40. $prefs = ini_parse ('inc/conf/auth/preferences/index.php');
  41. foreach ($prefs as $key => $values) {
  42. foreach ($values as $k => $v) {
  43. if (strpos ($k, 'value ') === 0) {
  44. if ($v === '1') {
  45. $v = 'on';
  46. } elseif ($v === '') {
  47. $v = 'off';
  48. }
  49. $this->widgets[$key]->setValues ($v, $v);
  50. } elseif ($k == 'values') {
  51. $values = $v ();
  52. $this->widgets[$key]->setValues ($values);
  53. } elseif ($this->help == 'on' && $k == 'instructions') {
  54. $this->widgets[$key]->extra = 'onfocus="formhelp_show (this, \'' . addslashes ($v) . '\')" onblur="formhelp_hide ()"';
  55. }
  56. }
  57. if ($key == 'browse_level') {
  58. $p = session_pref ($key);
  59. if ($p == 'normal') {
  60. $this->widgets[$key]->setValue ('easy');
  61. } else {
  62. $this->widgets[$key]->setValue ($p);
  63. }
  64. } else {
  65. $this->widgets[$key]->setValue (session_pref ($key));
  66. }
  67. }
  68. $w =& $this->addWidget ('msubmit', 'submit_button');
  69. $b =& $w->getButton ();
  70. $b->setValues (intl_get ('Save'));
  71. $b =& $w->addButton ('cancel_button');
  72. $b->setValues (intl_get ('Cancel'));
  73. if (session_pref ('start_page') == 'web view') {
  74. $b->extra = 'onclick="window.location.href = \'' . site_prefix () . '/index\'; return false"';
  75. } else {
  76. $b->extra = 'onclick="window.location.href = \'' . site_prefix () . '/index/cms-cpanel-action\'; return false"';
  77. }
  78. }
  79. function onSubmit ($vals) {
  80. unset ($vals['submit_button']);
  81. if ($this->internal_user) {
  82. unset ($vals['pwdsection']);
  83. unset ($vals['prefsection']);
  84. if (! empty ($vals['passwd'])) {
  85. // update password
  86. global $session;
  87. $session->update (array ('password' => better_crypt ($vals['passwd'])));
  88. // keep them logged in
  89. $session->username = session_username ();
  90. $session->password = $vals['passwd'];
  91. $session->start ();
  92. }
  93. unset ($vals['orig']);
  94. unset ($vals['passwd']);
  95. unset ($vals['password_verify']);
  96. }
  97. foreach ($vals as $key => $value) {
  98. if ($key == 'browse_level' && $value == 'easy') {
  99. session_pref_set ('browse_level', 'normal');
  100. } else {
  101. session_pref_set ($key, $value);
  102. }
  103. }
  104. //page_title (intl_get ('Preferences Saved'));
  105. //echo '<p>' . intl_get ('Your preferences have been saved.') . '</p>';
  106. //echo '<p><a href="' . site_prefix () . '/index/cms-app">' . intl_get ('Continue') . '</a></p>';
  107. session_set ('sitellite_alert', intl_get ('Your preferences have been saved.'));
  108. if (session_pref ('start_page') == 'web view') {
  109. header ('Location: ' . site_prefix () . '/index');
  110. } else {
  111. header ('Location: ' . site_prefix () . '/index/cms-cpanel-action');
  112. }
  113. exit;
  114. }
  115. }
  116. function cms_user_preferences_pass_empty_rule ($vals) {
  117. if (! empty ($vals['passwd']) && empty ($vals['orig'])) {
  118. return false;
  119. }
  120. return true;
  121. }
  122. function cms_user_preferences_pass_wrong_rule ($vals) {
  123. if (! empty ($vals['orig'])) {
  124. $current = db_shift ('select password from sitellite_user where username = ?', session_username ());
  125. if (! better_crypt_compare ($vals['orig'], $current)) {
  126. return false;
  127. }
  128. }
  129. return true;
  130. }
  131. page_title (intl_get ('Preferences'));
  132. $form = new PreferencesForm;
  133. echo $form->run ();
  134. ?>