4 function settings_init(&$a) {
6 if((! x($_SESSION,'authenticated')) && (x($_SESSION,'uid'))) {
7 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
11 require_once("mod/profile.php");
12 profile_load($a,$_SESSION['uid']);
16 function settings_post(&$a) {
18 if((! x($_SESSION['authenticated'])) && (! (x($_SESSION,'uid')))) {
19 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
22 if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != $_SESSION['uid']) {
23 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
26 if((x($_POST,'password')) || (x($_POST,'confirm'))) {
28 $newpass = trim($_POST['password']);
29 $confirm = trim($_POST['confirm']);
32 if($newpass != $confirm ) {
33 $_SESSION['sysmsg'] .= "Passwords do not match. Password unchanged." . EOL;
37 if((! x($newpass)) || (! x($confirm))) {
38 $_SESSION['sysmsg'] .= "Empty passwords are not allowed. Password unchanged." . EOL;
43 $password = hash('whirlpool',$newpass);
44 $r = q("UPDATE `user` SET `password` = '%s' WHERE `uid` = %d LIMIT 1",
46 intval($_SESSION['uid']));
48 $_SESSION['sysmsg'] .= "Password changed." . EOL;
50 $_SESSION['sysmsg'] .= "Password update failed. Please try again." . EOL;
54 $username = notags(trim($_POST['username']));
55 $email = notags(trim($_POST['email']));
57 $nick = notags(trim($_POST['nick']));
58 $timezone = notags(trim($_POST['timezone']));
60 $username_changed = false;
61 $email_changed = false;
62 $nick_changed = false;
63 $zone_changed = false;
66 if($username != $a->user['username']) {
67 $username_changed = true;
68 if(strlen($username) > 40)
69 $err .= " Please use a shorter name.";
70 if(strlen($username) < 3)
71 $err .= " Name too short.";
73 if($email != $a->user['email']) {
74 $email_changed = true;
75 if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email))
76 $err .= " Not valid email.";
77 $r = q("SELECT `uid` FROM `user`
78 WHERE `email` = '%s' LIMIT 1",
81 if($r !== NULL && count($r))
82 $err .= " This email address is already registered." . EOL;
84 if((x($nick)) && ($nick != $a->user['nickname'])) {
86 if(! preg_match("/^[a-zA-Z][a-zA-Z0-9\-\_]*$/",$nick))
87 $err .= " Nickname must start with a letter and contain only contain letters, numbers, dashes, and underscore.";
88 $r = q("SELECT `uid` FROM `user`
89 WHERE `nickname` = '%s' LIMIT 1",
92 if($r !== NULL && count($r))
93 $err .= " Nickname is already registered. Try another." . EOL;
96 $nick = $a->user['nickname'];
99 $_SESSION['sysmsg'] .= $err . EOL;
102 if($timezone != $a->user['timezone']) {
103 $zone_changed = true;
104 if(strlen($timezone))
105 date_default_timezone_set($timezone);
107 if($email_changed || $username_changed || $nick_changed || $zone_changed ) {
108 $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `nickname` = '%s', `timezone` = '%s' WHERE `uid` = %d LIMIT 1",
113 intval($_SESSION['uid']));
115 $_SESSION['sysmsg'] .= "Settings updated." . EOL;
117 if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
119 // FIXME - set to un-verified, blocked and redirect to logout
123 $r = q ("UPDATE `profile` SET `url` = '%s', `request` = '%s', `notify` = '%s', `poll` = '%s', `confirm` = '%s'
124 WHERE `uid` = %d AND `self` = 1 LIMIT 1",
125 dbesc( $a->get_baseurl() . '/profile/' . $nick ),
126 dbesc( $a->get_baseurl() . '/dfrn_request/' . $nick ),
127 dbesc( $a->get_baseurl() . '/dfrn_notify/' . $nick ),
128 dbesc( $a->get_baseurl() . '/dfrn_poll/' . $nick ),
129 dbesc( $a->get_baseurl() . '/dfrn_confirm/' . $nick ),
130 intval($_SESSION['uid'])
135 // Refresh the content display with new data
137 $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
138 intval($_SESSION['uid']));
144 if(! function_exists('settings_content')) {
145 function settings_content(&$a) {
147 if((! x($_SESSION['authenticated'])) && (! (x($_SESSION,'uid')))) {
148 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
153 $username = $a->user['username'];
154 $email = $a->user['email'];
155 $nickname = $a->user['nickname'];
156 $timezone = $a->user['timezone'];
160 $nickname_block = file_get_contents("view/settings_nick_set.tpl");
162 $nickname_block = file_get_contents("view/settings_nick_unset.tpl");
164 $nickname_block = replace_macros($nickname_block,array(
165 '$nickname' => $nickname,
166 '$uid' => $_SESSION['uid'],
167 '$basepath' => substr($a->get_baseurl(),strpos($a->get_baseurl(),'://') + 3),
168 '$baseurl' => $a->get_baseurl()));
170 $o = file_get_contents('view/settings.tpl');
172 $o = replace_macros($o,array(
173 '$baseurl' => $a->get_baseurl(),
174 '$uid' => $_SESSION['uid'],
175 '$username' => $username,
177 '$nickname_block' => $nickname_block,
178 '$timezone' => $timezone,
179 '$zoneselect' => select_timezone($timezone)