PageRenderTime 65ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/manager/actions/mutate_web_user.dynamic.php

https://github.com/good-web-master/modx.evo.custom
PHP | 564 lines | 516 code | 34 blank | 14 comment | 68 complexity | 5b3ef8976ae182590dc4e227f226c009 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0, GPL-2.0, MIT, BSD-3-Clause
  1. <?php
  2. if(IN_MANAGER_MODE!="true") die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the MODx Content Manager instead of accessing this file directly.");
  3. switch((int) $_REQUEST['a']) {
  4. case 88:
  5. if(!$modx->hasPermission('edit_web_user')) {
  6. $e->setError(3);
  7. $e->dumpError();
  8. }
  9. break;
  10. case 87:
  11. if(!$modx->hasPermission('new_web_user')) {
  12. $e->setError(3);
  13. $e->dumpError();
  14. }
  15. break;
  16. default:
  17. $e->setError(3);
  18. $e->dumpError();
  19. }
  20. $user = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0;
  21. // check to see the snippet editor isn't locked
  22. $sql = "SELECT internalKey, username FROM $dbase.`".$table_prefix."active_users` WHERE $dbase.`".$table_prefix."active_users`.action=88 AND $dbase.`".$table_prefix."active_users`.id=$user";
  23. $rs = mysql_query($sql);
  24. $limit = mysql_num_rows($rs);
  25. if($limit>1) {
  26. for ($i=0;$i<$limit;$i++) {
  27. $lock = mysql_fetch_assoc($rs);
  28. if($lock['internalKey']!=$modx->getLoginUserID()) {
  29. $msg = sprintf($_lang["lock_msg"],$lock['username'],"web user");
  30. $e->setError(5, $msg);
  31. $e->dumpError();
  32. }
  33. }
  34. }
  35. // end check for lock
  36. if($_REQUEST['a']=='88') {
  37. // get user attributes
  38. $sql = "SELECT * FROM $dbase.`".$table_prefix."web_user_attributes` WHERE $dbase.`".$table_prefix."web_user_attributes`.internalKey = ".$user.";";
  39. $rs = mysql_query($sql);
  40. $limit = mysql_num_rows($rs);
  41. if($limit>1) {
  42. echo "More than one user returned!<p>";
  43. exit;
  44. }
  45. if($limit<1) {
  46. echo "No user returned!<p>";
  47. exit;
  48. }
  49. $userdata = mysql_fetch_assoc($rs);
  50. // get user settings
  51. $sql = "SELECT wus.* FROM $dbase.`".$table_prefix."web_user_settings` wus WHERE wus.webuser = ".$user.";";
  52. $rs = mysql_query($sql);
  53. $usersettings = array();
  54. while($row=mysql_fetch_assoc($rs)) $usersettings[$row['setting_name']]=$row['setting_value'];
  55. extract($usersettings, EXTR_OVERWRITE);
  56. // get user name
  57. $sql = "SELECT * FROM $dbase.`".$table_prefix."web_users` WHERE $dbase.`".$table_prefix."web_users`.id = ".$user.";";
  58. $rs = mysql_query($sql);
  59. $limit = mysql_num_rows($rs);
  60. if($limit>1) {
  61. echo "More than one user returned while getting username!<p>";
  62. exit;
  63. }
  64. if($limit<1) {
  65. echo "No user returned while getting username!<p>";
  66. exit;
  67. }
  68. $usernamedata = mysql_fetch_assoc($rs);
  69. $_SESSION['itemname']=$usernamedata['username'];
  70. } else {
  71. $userdata = array();
  72. $usersettings = array();
  73. $usernamedata = array();
  74. $_SESSION['itemname']="New web user";
  75. }
  76. // restore saved form
  77. $formRestored = false;
  78. if($modx->manager->hasFormValues()) {
  79. $modx->manager->loadFormValues();
  80. // restore post values
  81. $userdata = array_merge($userdata,$_POST);
  82. $userdata['dob'] = ConvertDate($userdata['dob']);
  83. $usernamedata['username'] = $userdata['newusername'];
  84. $usernamedata['oldusername'] = $_POST['oldusername'];
  85. $usersettings = array_merge($usersettings,$userdata);
  86. $usersettings['allowed_days'] = is_array($_POST['allowed_days']) ? implode(",",$_POST['allowed_days']):"";
  87. extract($usersettings, EXTR_OVERWRITE);
  88. }
  89. // converts date format dd-mm-yyyy to php date
  90. function ConvertDate($date) {
  91. global $modx;
  92. if ($date == "") {return "0";}
  93. else {} {return $modx->toTimeStamp($date);}
  94. }
  95. // include the country list language file
  96. $_country_lang = array();
  97. if($manager_language!="english" && file_exists($modx->config['base_path']."manager/includes/lang/country/".$manager_language."_country.inc.php")){
  98. include_once "lang/country/".$manager_language."_country.inc.php";
  99. } else {
  100. include_once "lang/country/english_country.inc.php";
  101. }
  102. ?>
  103. <script type="text/javascript" src="media/calendar/datepicker.js"></script>
  104. <script type="text/javascript">
  105. window.addEvent('domready', function() {
  106. var dpOffset = <?php echo $modx->config['datepicker_offset']; ?>;
  107. var dpformat = "<?php echo $modx->config['datetime_format']; ?>";
  108. new DatePicker($('dob'), {'yearOffset': -90,'yearRange':1,'format':dpformat});
  109. if ($('blockeduntil')) {
  110. new DatePicker($('blockeduntil'), {'yearOffset': dpOffset,'format':dpformat + ' hh:mm:00'});
  111. new DatePicker($('blockedafter'), {'yearOffset': dpOffset,'format':dpformat + ' hh:mm:00'});
  112. }
  113. });
  114. function changestate(element) {
  115. documentDirty=true;
  116. currval = eval(element).value;
  117. if(currval==1) {
  118. eval(element).value=0;
  119. } else {
  120. eval(element).value=1;
  121. }
  122. }
  123. function changePasswordState(element) {
  124. currval = eval(element).value;
  125. if(currval==1) {
  126. document.getElementById("passwordBlock").style.display="block";
  127. } else {
  128. document.getElementById("passwordBlock").style.display="none";
  129. }
  130. }
  131. function changeblockstate(element, checkelement) {
  132. currval = eval(element).value;
  133. if(currval==1) {
  134. if(confirm("<?php echo $_lang['confirm_unblock']; ?>")==true){
  135. document.userform.blocked.value=0;
  136. document.userform.blockeduntil.value="";
  137. document.userform.blockedafter.value="";
  138. document.userform.failedlogincount.value=0;
  139. blocked.innerHTML="<b><?php echo $_lang['unblock_message']; ?></b>";
  140. blocked.className="TD";
  141. eval(element).value=0;
  142. } else {
  143. eval(checkelement).checked=true;
  144. }
  145. } else {
  146. if(confirm("<?php echo $_lang['confirm_block']; ?>")==true){
  147. document.userform.blocked.value=1;
  148. blocked.innerHTML="<b><?php echo $_lang['block_message']; ?></b>";
  149. blocked.className="warning";
  150. eval(element).value=1;
  151. } else {
  152. eval(checkelement).checked=false;
  153. }
  154. }
  155. }
  156. function resetFailed() {
  157. document.userform.failedlogincount.value=0;
  158. document.getElementById("failed").innerHTML="0";
  159. }
  160. function deleteuser() {
  161. if(confirm("<?php echo $_lang['confirm_delete_user']; ?>")==true) {
  162. document.location.href="index.php?id=" + document.userform.id.value + "&a=90";
  163. }
  164. }
  165. // change name
  166. function changeName(){
  167. if(confirm("<?php echo $_lang['confirm_name_change']; ?>")==true) {
  168. var e1 = document.getElementById("showname");
  169. var e2 = document.getElementById("editname");
  170. e1.style.display = "none";
  171. e2.style.display = "<?php echo $displayStyle; ?>";
  172. }
  173. };
  174. // showHide - used by custom settings
  175. function showHide(what, onoff){
  176. var all = document.getElementsByTagName( "*" );
  177. var l = all.length;
  178. var buttonRe = what;
  179. var id, el, stylevar;
  180. if(onoff==1) {
  181. stylevar = "<?php echo $displayStyle; ?>";
  182. } else {
  183. stylevar = "none";
  184. }
  185. for ( var i = 0; i < l; i++ ) {
  186. el = all[i]
  187. id = el.id;
  188. if ( id == "" ) continue;
  189. if (buttonRe.test(id)) {
  190. el.style.display = stylevar;
  191. }
  192. }
  193. };
  194. </script>
  195. <form action="index.php?a=89" method="post" name="userform">
  196. <?php
  197. // invoke OnWUsrFormPrerender event
  198. $evtOut = $modx->invokeEvent("OnWUsrFormPrerender",array("id" => $user));
  199. if(is_array($evtOut)) echo implode("",$evtOut);
  200. ?>
  201. <input type="hidden" name="mode" value="<?php echo $_GET['a'] ?>" />
  202. <input type="hidden" name="id" value="<?php echo $_GET['id'] ?>" />
  203. <input type="hidden" name="blockedmode" value="<?php echo ($userdata['blocked']==1 || ($userdata['blockeduntil']>time() && $userdata['blockeduntil']!=0)|| ($userdata['blockedafter']<time() && $userdata['blockedafter']!=0) || $userdata['failedlogins']>3) ? "1":"0" ?>" />
  204. <h1><?php echo $_lang['web_user_title']; ?></h1>
  205. <div id="actions">
  206. <ul class="actionButtons">
  207. <li><a href="#" onclick="documentDirty=false; document.userform.save.click();"><img src="<?php echo $_style["icons_save"] ?>" /> <?php echo $_lang['save']; ?></a><span class="and"> + </span>
  208. <select id="stay" name="stay">
  209. <?php if ($modx->hasPermission('new_web_user')) { ?>
  210. <option id="stay1" value="1" <?php echo $_REQUEST['stay']=='1' ? ' selected=""' : ''?> ><?php echo $_lang['stay_new']?></option>
  211. <?php } ?>
  212. <option id="stay2" value="2" <?php echo $_REQUEST['stay']=='2' ? ' selected="selected"' : ''?> ><?php echo $_lang['stay']?></option>
  213. <option id="stay3" value="" <?php echo $_REQUEST['stay']=='' ? ' selected=""' : ''?> ><?php echo $_lang['close']?></option>
  214. </select>
  215. </li>
  216. <li id="btn_del"><a href="#" onclick="deleteuser();"><img src="<?php echo $_style["icons_delete"] ?>" /> <?php echo $_lang['delete']; ?></a></li>
  217. <?php if($_GET['a']!='88') { ?>
  218. <script type="text/javascript">document.getElementById("btn_del").className='disabled';</script>
  219. <?php } ?>
  220. <li><a href="#" onclick="documentDirty=false;document.location.href='index.php?a=99';"><img src="<?php echo $_style["icons_cancel"] ?>" /> <?php echo $_lang['cancel']; ?></a></li>
  221. </ul>
  222. </div>
  223. <!-- Tab Start -->
  224. <div class="sectionBody">
  225. <link type="text/css" rel="stylesheet" href="media/style/<?php echo $manager_theme ? "$manager_theme/":""; ?>style.css<?php echo "?$theme_refresher";?>" />
  226. <script type="text/javascript" src="media/script/tabpane.js"></script>
  227. <div class="tab-pane" id="webUserPane">
  228. <script type="text/javascript">
  229. tpUser = new WebFXTabPane(document.getElementById( "webUserPane" ), <?php echo $modx->config['remember_last_tab'] == 1 ? 'true' : 'false'; ?> );
  230. </script>
  231. <div class="tab-page" id="tabGeneral">
  232. <h2 class="tab"><?php echo $_lang["settings_general"] ?></h2>
  233. <script type="text/javascript">tpUser.addTabPage( document.getElementById( "tabGeneral" ) );</script>
  234. <table border="0" cellspacing="0" cellpadding="3">
  235. <tr>
  236. <td colspan="3">
  237. <span id="blocked" class="warning"><?php if($userdata['blocked']==1 || ($userdata['blockeduntil']>time() && $userdata['blockeduntil']!=0)|| ($userdata['blockedafter']<time() && $userdata['blockedafter']!=0) || $userdata['failedlogins']>3) { ?><b><?php echo $_lang['user_is_blocked']; ?></b><?php } ?></span><br />
  238. </td>
  239. </tr>
  240. <?php if(!empty($userdata['id'])) { ?>
  241. <tr id="showname" style="display: <?php echo ($_GET['a']=='88' && (!isset($usernamedata['oldusername'])||$usernamedata['oldusername']==$usernamedata['username'])) ? $displayStyle : 'none';?> ">
  242. <td colspan="3">
  243. <img src="media/style/<?php echo $manager_theme ? "$manager_theme/":""; ?>images/icons/user.gif" alt="." />&nbsp;<b><?php echo !empty($usernamedata['oldusername']) ? $usernamedata['oldusername']:$usernamedata['username']; ?></b> - <span class="comment"><a href="#" onclick="changeName();return false;"><?php echo $_lang["change_name"]; ?></a></span>
  244. <input type="hidden" name="oldusername" value="<?php echo htmlspecialchars(!empty($usernamedata['oldusername']) ? $usernamedata['oldusername']:$usernamedata['username']); ?>" />
  245. <hr />
  246. </td>
  247. </tr>
  248. <?php } ?>
  249. <tr id="editname" style="display:<?php echo $_GET['a']=='87'||(isset($usernamedata['oldusername']) && $usernamedata['oldusername']!=$usernamedata['username']) ? $displayStyle : 'none' ; ?>">
  250. <td><?php echo $_lang['username']; ?>:</td>
  251. <td>&nbsp;</td>
  252. <td><input type="text" name="newusername" class="inputBox" value="<?php echo htmlspecialchars(isset($_POST['newusername']) ? $_POST['newusername'] : $usernamedata['username']); ?>" onchange='documentDirty=true;' maxlength="100" /></td>
  253. </tr>
  254. <tr>
  255. <td valign="top"><?php echo $_GET['a']=='87' ? $_lang['password'].":" : $_lang['change_password_new'].":" ; ?></td>
  256. <td>&nbsp;</td>
  257. <td><input name="newpasswordcheck" type="checkbox" onclick="changestate(document.userform.newpassword);changePasswordState(document.userform.newpassword);"<?php echo $_REQUEST['a']=="87" ? " checked disabled": "" ; ?>><input type="hidden" name="newpassword" value="<?php echo $_REQUEST['a']=="87" ? 1 : 0 ; ?>" onchange="documentDirty=true;" /><br />
  258. <span style="display:<?php echo $_REQUEST['a']=="87" ? "block": "none" ; ?>" id="passwordBlock">
  259. <fieldset style="width:300px">
  260. <legend><b><?php echo $_lang['password_gen_method']; ?></b></legend>
  261. <input type=radio name="passwordgenmethod" value="g" <?php echo $_POST['passwordgenmethod']=="spec" ? "" : 'checked="checked"'; ?> /><?php echo $_lang['password_gen_gen']; ?><br />
  262. <input type=radio name="passwordgenmethod" value="spec" <?php echo $_POST['passwordgenmethod']=="spec" ? 'checked="checked"' : ""; ?>><?php echo $_lang['password_gen_specify']; ?> <br />
  263. <div style="padding-left:20px">
  264. <label for="specifiedpassword" style="width:120px"><?php echo $_lang['change_password_new']; ?>:</label>
  265. <input type="password" name="specifiedpassword" onchange="documentdirty=true;" onkeypress="document.userform.passwordgenmethod[1].checked=true;" size="20" /><br />
  266. <label for="confirmpassword" style="width:120px"><?php echo $_lang['change_password_confirm']; ?>:</label>
  267. <input type="password" name="confirmpassword" onchange="documentdirty=true;" onkeypress="document.userform.passwordgenmethod[1].checked=true;" size="20" /><br />
  268. <small><span class="warning" style="font-weight:normal"><?php echo $_lang['password_gen_length']; ?></span></small>
  269. </div>
  270. </fieldset>
  271. <br />
  272. <fieldset style="width:300px">
  273. <legend><b><?php echo $_lang['password_method']; ?></b></legend>
  274. <input type=radio name="passwordnotifymethod" value="e" <?php echo $_POST['passwordnotifymethod']=="e" ? 'checked="checked"' : ""; ?> /><?php echo $_lang['password_method_email']; ?><br />
  275. <input type=radio name="passwordnotifymethod" value="s" <?php echo $_POST['passwordnotifymethod']=="e" ? "" : 'checked="checked"'; ?> /><?php echo $_lang['password_method_screen']; ?>
  276. </fieldset>
  277. </span>
  278. </td>
  279. </tr>
  280. <tr>
  281. <td><?php echo $_lang['user_full_name']; ?>:</td>
  282. <td>&nbsp;</td>
  283. <td><input type="text" name="fullname" class="inputBox" value="<?php echo htmlspecialchars(isset($_POST['fullname']) ? $_POST['fullname'] : $userdata['fullname']); ?>" onchange="documentDirty=true;" /></td>
  284. </tr>
  285. <tr>
  286. <td><?php echo $_lang['user_email']; ?>:</td>
  287. <td>&nbsp;</td>
  288. <td>
  289. <input type="text" name="email" class="inputBox" value="<?php echo isset($_POST['email']) ? $_POST['email'] : $userdata['email']; ?>" onchange="documentDirty=true;" />
  290. <input type="hidden" name="oldemail" value="<?php echo htmlspecialchars(!empty($userdata['oldemail']) ? $userdata['oldemail']:$userdata['email']); ?>" />
  291. </td>
  292. </tr>
  293. <tr>
  294. <td><?php echo $_lang['user_phone']; ?>:</td>
  295. <td>&nbsp;</td>
  296. <td><input type="text" name="phone" class="inputBox" value="<?php echo isset($_POST['phone']) ? $_POST['phone'] : $userdata['phone']; ?>" onchange="documentDirty=true;" /></td>
  297. </tr>
  298. <tr>
  299. <td><?php echo $_lang['user_mobile']; ?>:</td>
  300. <td>&nbsp;</td>
  301. <td><input type="text" name="mobilephone" class="inputBox" value="<?php echo isset($_POST['mobilephone']) ? $_POST['mobilephone'] : $userdata['mobilephone']; ?>" onchange="documentDirty=true;" /></td>
  302. </tr>
  303. <tr>
  304. <td><?php echo $_lang['user_fax']; ?>:</td>
  305. <td>&nbsp;</td>
  306. <td><input type="text" name="fax" class="inputBox" value="<?php echo isset($_POST['fax']) ? $_POST['fax'] : $userdata['fax']; ?>" onchange="documentDirty=true;" /></td>
  307. </tr>
  308. <tr>
  309. <td><?php echo $_lang['user_state']; ?>:</td>
  310. <td>&nbsp;</td>
  311. <td><input type="text" name="state" class="inputBox" value="<?php echo isset($_POST['state']) ? $_POST['state'] : $userdata['state']; ?>" onchange="documentDirty=true;" /></td>
  312. </tr>
  313. <tr>
  314. <td><?php echo $_lang['user_zip']; ?>:</td>
  315. <td>&nbsp;</td>
  316. <td><input type="text" name="zip" class="inputBox" value="<?php echo isset($_POST['zip']) ? $_POST['zip'] : $userdata['zip']; ?>" onchange="documentDirty=true;" /></td>
  317. </tr>
  318. <tr>
  319. <td><?php echo $_lang['user_country']; ?>:</td>
  320. <td>&nbsp;</td>
  321. <td>
  322. <select size="1" name="country" onchange="documentDirty=true;">
  323. <?php $chosenCountry = isset($_POST['country']) ? $_POST['country'] : $userdata['country']; ?>
  324. <option value="" <?php (!isset($chosenCountry) ? ' selected' : '') ?> >&nbsp;</option>
  325. <?php
  326. foreach ($_country_lang as $key => $country) {
  327. echo "<option value=\"$key\"".(isset($chosenCountry) && $chosenCountry == $key ? ' selected' : '') .">$country</option>";
  328. }
  329. ?>
  330. </select>
  331. </td>
  332. </tr>
  333. <tr>
  334. <td><?php echo $_lang['user_dob']; ?>:</td>
  335. <td>&nbsp;</td>
  336. <td>
  337. <input type="text" id="dob" name="dob" class="DatePicker" value="<?php echo isset($_POST['dob']) ? $_POST['dob'] : ($userdata['dob'] ? $modx->toDateFormat($userdata['dob'],'dateOnly'):""); ?>" onblur='documentDirty=true;'>
  338. <a onclick="document.userform.dob.value=''; return true;" onmouseover="window.status='<?php echo $_lang['remove_date']; ?>'; return true;" onmouseout="window.status=''; return true;" style="cursor:pointer; cursor:hand"><img align="absmiddle" src="media/style/<?php echo $manager_theme ? "$manager_theme/":""; ?>images/icons/cal_nodate.gif" width="16" height="16" border="0" alt="<?php echo $_lang['remove_date']; ?>"></a>
  339. </td>
  340. </tr>
  341. <tr>
  342. <td><?php echo $_lang['user_gender']; ?>:</td>
  343. <td>&nbsp;</td>
  344. <td><select name="gender" onchange="documentDirty=true;">
  345. <option value=""></option>
  346. <option value="1" <?php echo ($_POST['gender']=='1'||$userdata['gender']=='1')? "selected='selected'":""; ?>><?php echo $_lang['user_male']; ?></option>
  347. <option value="2" <?php echo ($_POST['gender']=='2'||$userdata['gender']=='2')? "selected='selected'":""; ?>><?php echo $_lang['user_female']; ?></option>
  348. </select>
  349. </td>
  350. </tr>
  351. <tr>
  352. <td valign="top"><?php echo $_lang['comment']; ?>:</td>
  353. <td>&nbsp;</td>
  354. <td>
  355. <textarea type="text" name="comment" class="inputBox" rows="5" onchange="documentDirty=true;"><?php echo htmlspecialchars(isset($_POST['comment']) ? $_POST['comment'] : $userdata['comment']); ?></textarea>
  356. </td>
  357. </tr>
  358. <?php if($_GET['a']=='88') { ?>
  359. <tr>
  360. <td><?php echo $_lang['user_logincount']; ?>:</td>
  361. <td>&nbsp;</td>
  362. <td><?php echo $userdata['logincount'] ?></td>
  363. </tr>
  364. <tr>
  365. <td><?php echo $_lang['user_prevlogin']; ?>:</td>
  366. <td>&nbsp;</td>
  367. <td><?php echo $modx->toDateFormat($userdata['lastlogin']+$server_offset_time) ?></td>
  368. </tr>
  369. <tr>
  370. <td><?php echo $_lang['user_failedlogincount']; ?>:</td>
  371. <td>&nbsp;<input type="hidden" name="failedlogincount" onchange='documentDirty=true;' value="<?php echo $userdata['failedlogincount']; ?>"></td>
  372. <td><span id='failed'><?php echo $userdata['failedlogincount'] ?></span>&nbsp;&nbsp;&nbsp;[<a href="javascript:resetFailed()"><?php echo $_lang['reset_failedlogins']; ?></a>]</td>
  373. </tr>
  374. <tr>
  375. <td><?php echo $_lang['user_block']; ?>:</td>
  376. <td>&nbsp;</td>
  377. <td><input name="blockedcheck" type="checkbox" onclick="changeblockstate(document.userform.blockedmode, document.userform.blockedcheck);"<?php echo ($userdata['blocked']==1||($userdata['blockeduntil']>time() && $userdata['blockeduntil']!=0)||($userdata['blockedafter']<time() && $userdata['blockedafter']!=0)) ? " checked='checked'": "" ; ?> /><input type="hidden" name="blocked" value="<?php echo ($userdata['blocked']==1||($userdata['blockeduntil']>time() && $userdata['blockeduntil']!=0))?1:0; ?>"></td>
  378. </tr>
  379. <tr>
  380. <td><?php echo $_lang['user_blockeduntil']; ?>:</td>
  381. <td>&nbsp;</td>
  382. <td>
  383. <input type="text" id="blockeduntil" name="blockeduntil" class="DatePicker" value="<?php echo isset($_POST['blockeduntil']) ? $_POST['blockeduntil'] : ($userdata['blockeduntil'] ? $modx->toDateFormat($userdata['blockeduntil']):""); ?>" onblur='documentDirty=true;' readonly="readonly">
  384. <a onclick="document.userform.blockeduntil.value=''; return true;" onmouseover="window.status='<?php echo $_lang['remove_date']; ?>'; return true;" onmouseout="window.status=''; return true;" style="cursor:pointer; cursor:hand"><img align="absmiddle" src="media/style/<?php echo $manager_theme ? "$manager_theme/":""; ?>images/icons/cal_nodate.gif" width="16" height="16" border="0" alt="<?php echo $_lang['remove_date']; ?>" /></a>
  385. </td>
  386. </tr>
  387. <tr>
  388. <td><?php echo $_lang['user_blockedafter']; ?>:</td>
  389. <td>&nbsp;</td>
  390. <td>
  391. <input type="text" id="blockedafter" name="blockedafter" class="DatePicker" value="<?php echo isset($_POST['blockedafter']) ? $_POST['blockedafter'] : ($userdata['blockedafter'] ? $modx->toDateFormat($userdata['blockedafter']):""); ?>" onblur='documentDirty=true;' readonly="readonly">
  392. <a onclick="document.userform.blockedafter.value=''; return true;" onmouseover="window.status='<?php echo $_lang['remove_date']; ?>'; return true;" onmouseout="window.status=''; return true;" style="cursor:pointer; cursor:hand"><img align="absmiddle" src="media/style/<?php echo $manager_theme ? "$manager_theme/":""; ?>images/icons/cal_nodate.gif" width="16" height="16" border="0" alt="<?php echo $_lang['remove_date']; ?>" /></a>
  393. </td>
  394. </tr>
  395. <?php
  396. }
  397. ?>
  398. </table>
  399. </div>
  400. <!-- Settings -->
  401. <div class="tab-page" id="tabSettings">
  402. <h2 class="tab"><?php echo $_lang["settings_users"] ?></h2>
  403. <script type="text/javascript">tpUser.addTabPage( document.getElementById( "tabSettings" ) );</script>
  404. <table border="0" cellspacing="0" cellpadding="3">
  405. <tr>
  406. <td nowrap class="warning"><b><?php echo $_lang["login_homepage"] ?></b></td>
  407. <td ><input onchange="documentDirty=true;" type='text' maxlength='50' style="width: 100px;" name="login_home" value="<?php echo isset($_POST['login_home']) ? $_POST['login_home'] : $usersettings['login_home']; ?>"></td>
  408. </tr>
  409. <tr>
  410. <td width="200">&nbsp;</td>
  411. <td class='comment'><?php echo $_lang["login_homepage_message"] ?></td>
  412. </tr>
  413. <tr>
  414. <td colspan="2"><div class='split'></div></td>
  415. </tr>
  416. <tr>
  417. <td nowrap class="warning"valign="top"><b><?php echo $_lang["login_allowed_ip"] ?></b></td>
  418. <td ><input onchange="documentDirty=true;" type="text" maxlength='255' style="width: 300px;" name="allowed_ip" value="<?php echo isset($_POST['allowed_ip']) ? $_POST['allowed_ip'] : $usersettings['allowed_ip']; ?>" /></td>
  419. </tr>
  420. <tr>
  421. <td width="200">&nbsp;</td>
  422. <td class='comment'><?php echo $_lang["login_allowed_ip_message"] ?></td>
  423. </tr>
  424. <tr>
  425. <td colspan="2"><div class='split'></div></td>
  426. </tr>
  427. <tr>
  428. <td nowrap class="warning"valign="top"><b><?php echo $_lang["login_allowed_days"] ?></b></td>
  429. <td>
  430. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="1" <?php echo strpos($usersettings['allowed_days'],'1')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['sunday']; ?><br />
  431. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="2" <?php echo strpos($usersettings['allowed_days'],'2')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['monday']; ?><br />
  432. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="3" <?php echo strpos($usersettings['allowed_days'],'3')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['tuesday']; ?><br />
  433. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="4" <?php echo strpos($usersettings['allowed_days'],'4')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['wednesday']; ?><br />
  434. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="5" <?php echo strpos($usersettings['allowed_days'],'5')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['thursday']; ?><br />
  435. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="6" <?php echo strpos($usersettings['allowed_days'],'6')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['friday']; ?><br />
  436. <input onchange="documentDirty=true;" type="checkbox" name="allowed_days[]" value="7" <?php echo strpos($usersettings['allowed_days'],'7')!==false ? "checked='checked'":""; ?> /> <?php echo $_lang['saturday']; ?><br />
  437. </td>
  438. </tr>
  439. <tr>
  440. <td width="200">&nbsp;</td>
  441. <td class='comment'><?php echo $_lang["login_allowed_days_message"] ?></td>
  442. </tr>
  443. <tr>
  444. <td colspan="2"><div class='split'></div></td>
  445. </tr>
  446. </table>
  447. </div>
  448. <!-- Photo -->
  449. <div class="tab-page" id="tabPhoto">
  450. <h2 class="tab"><?php echo $_lang["settings_photo"] ?></h2>
  451. <script type="text/javascript">tpUser.addTabPage( document.getElementById( "tabPhoto" ) );</script>
  452. <script type="text/javascript">
  453. function OpenServerBrowser(url, width, height ) {
  454. var iLeft = (screen.width - width) / 2 ;
  455. var iTop = (screen.height - height) / 2 ;
  456. var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
  457. sOptions += ",width=" + width ;
  458. sOptions += ",height=" + height ;
  459. sOptions += ",left=" + iLeft ;
  460. sOptions += ",top=" + iTop ;
  461. var oWindow = window.open( url, "FCKBrowseWindow", sOptions ) ;
  462. }
  463. function BrowseServer() {
  464. var w = screen.width * 0.7;
  465. var h = screen.height * 0.7;
  466. OpenServerBrowser("<?php echo $base_url; ?>manager/media/browser/mcpuk/browser.html?Type=images&Connector=<?php echo $base_url; ?>manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=<?php echo $base_url; ?>", w, h);
  467. }
  468. function SetUrl(url, width, height, alt){
  469. document.userform.photo.value = url;
  470. document.images['iphoto'].src = "<?php echo $base_url; ?>" + url;
  471. }
  472. </script>
  473. <table border="0" cellspacing="0" cellpadding="3">
  474. <tr>
  475. <td nowrap class="warning"><b><?php echo $_lang["user_photo"] ?></b></td>
  476. <td><input onchange="documentDirty=true;" type='text' maxlength='255' style="width: 150px;" name="photo" value="<?php echo htmlspecialchars(isset($_POST['photo']) ? $_POST['photo'] : $userdata['photo']); ?>" /> <input type="button" value="<?php echo $_lang['insert']; ?>" onclick="BrowseServer();" /></td>
  477. </tr>
  478. <tr>
  479. <td width="200">&nbsp;</td>
  480. <td class='comment'><?php echo $_lang["user_photo_message"] ?></td>
  481. </tr>
  482. <tr>
  483. <td colspan="2"><div class='split'></div></td>
  484. </tr>
  485. <tr>
  486. <td colspan="2" align="center"><img name="iphoto" src="<?php echo isset($_POST['photo']) ? MODX_SITE_URL.$_POST['photo'] : !empty($userdata['photo']) ? MODX_SITE_URL.$userdata['photo']: $_style['tx']; ?>" /></td>
  487. </tr>
  488. </table>
  489. </div>
  490. </div>
  491. </div>
  492. <?php
  493. if($use_udperms==1) {
  494. $groupsarray = array();
  495. if($_GET['a']=='88') { // only do this bit if the user is being edited
  496. $sql = "SELECT * FROM $dbase.`".$table_prefix."web_groups` where webuser=".$_GET['id']."";
  497. $rs = mysql_query($sql);
  498. $limit = mysql_num_rows($rs);
  499. for ($i = 0; $i < $limit; $i++) {
  500. $currentgroup=mysql_fetch_assoc($rs);
  501. $groupsarray[$i] = $currentgroup['webgroup'];
  502. }
  503. }
  504. // retain selected user groups between post
  505. if(is_array($_POST['user_groups'])) {
  506. foreach($_POST['user_groups'] as $n => $v) $groupsarray[] = $v;
  507. }
  508. ?>
  509. <div class="sectionHeader"><?php echo $_lang['web_access_permissions']; ?></div><div class="sectionBody">
  510. <?php
  511. echo "<p>" . $_lang['access_permissions_user_message'] . "</p>";
  512. $sql = "SELECT name, id FROM $dbase.`".$table_prefix."webgroup_names` ORDER BY name";
  513. $rs = mysql_query($sql);
  514. $limit = mysql_num_rows($rs);
  515. for($i=0; $i<$limit; $i++) {
  516. $row=mysql_fetch_assoc($rs);
  517. echo "<input type='checkbox' name='user_groups[]' value='".$row['id']."'".(in_array($row['id'], $groupsarray) ? " checked='checked'" : "")." />".$row['name']."<br />";
  518. }
  519. ?>
  520. </div>
  521. <?php
  522. }
  523. ?>
  524. <input type="submit" name="save" style="display:none">
  525. <?php
  526. // invoke OnWUsrFormRender event
  527. $evtOut = $modx->invokeEvent("OnWUsrFormRender",array("id" => $user));
  528. if(is_array($evtOut)) echo implode("",$evtOut);
  529. ?>
  530. </form>