]> git.mxchange.org Git - friendica.git/blob - mod/settings.php
one true profile photo, force nicknames
[friendica.git] / mod / settings.php
1 <?php
2
3
4 function settings_init(&$a) {
5
6         if((! x($_SESSION,'authenticated')) && (x($_SESSION,'uid'))) {
7                 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
8                 $a->error = 404;
9                 return;
10         }
11         require_once("mod/profile.php");
12         profile_load($a,$_SESSION['uid']);
13 }
14
15
16 function settings_post(&$a) {
17
18         if((! x($_SESSION['authenticated'])) && (! (x($_SESSION,'uid')))) {
19                 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
20                 return;
21         }
22         if(count($a->user) && x($a->user,'uid') && $a->user['uid'] != $_SESSION['uid']) {
23                 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
24                 return;
25         }
26         if((x($_POST,'password')) || (x($_POST,'confirm'))) {
27
28                 $newpass = trim($_POST['password']);
29                 $confirm = trim($_POST['confirm']);
30
31                 $err = false;
32                 if($newpass != $confirm ) {
33                         $_SESSION['sysmsg'] .= "Passwords do not match. Password unchanged." . EOL;
34                         $err = true;
35                 }
36
37                 if((! x($newpass)) || (! x($confirm))) {
38                         $_SESSION['sysmsg'] .= "Empty passwords are not allowed. Password unchanged." . EOL;
39                         $err = true;
40                 }
41
42                 if(! $err) {
43                         $password = hash('whirlpool',$newpass);
44                         $r = q("UPDATE `user` SET `password` = '%s' WHERE `uid` = %d LIMIT 1",
45                                 dbesc($password),
46                                 intval($_SESSION['uid']));
47                         if($r)
48                                 $_SESSION['sysmsg'] .= "Password changed." . EOL;
49                         else
50                                 $_SESSION['sysmsg'] .= "Password update failed. Please try again." . EOL;
51                 }
52         }
53
54         $username = notags(trim($_POST['username']));
55         $email = notags(trim($_POST['email']));
56         $timezone = notags(trim($_POST['timezone']));
57
58         $username_changed = false;
59         $email_changed = false;
60         $zone_changed = false;
61         $err = '';
62
63         if($username != $a->user['username']) {
64                 $username_changed = true;
65                 if(strlen($username) > 40)
66                         $err .= " Please use a shorter name.";
67                 if(strlen($username) < 3)
68                         $err .= " Name too short.";
69         }
70         if($email != $a->user['email']) {
71                 $email_changed = true;
72                 if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email))
73                         $err .= " Not valid email.";
74                 $r = q("SELECT `uid` FROM `user`
75                         WHERE `email` = '%s' LIMIT 1",
76                         dbesc($email)
77                         );
78                 if($r !== NULL && count($r))
79                         $err .= " This email address is already registered." . EOL;
80         }
81
82         if(strlen($err)) {
83                 $_SESSION['sysmsg'] .= $err . EOL;
84                 return;
85         }
86         if($timezone != $a->user['timezone']) {
87                 $zone_changed = true;
88                 if(strlen($timezone))
89                         date_default_timezone_set($timezone);
90         }
91         if($email_changed || $username_changed || $zone_changed ) {
92                 $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `timezone` = '%s'  WHERE `uid` = %d LIMIT 1",
93                         dbesc($username),
94                         dbesc($email),
95                         dbesc($timezone),
96                         intval($_SESSION['uid']));
97                 if($r)
98                         $_SESSION['sysmsg'] .= "Settings updated." . EOL;
99         }
100         if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
101
102                 // FIXME - set to un-verified, blocked and redirect to logout
103
104         }
105
106
107         // Refresh the content display with new data
108
109         $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
110                 intval($_SESSION['uid']));
111         if(count($r))
112                 $a->user = $r[0];
113 }
114                 
115
116 if(! function_exists('settings_content')) {
117 function settings_content(&$a) {
118
119         if((! x($_SESSION['authenticated'])) && (! (x($_SESSION,'uid')))) {
120                 $_SESSION['sysmsg'] .= "Permission denied." . EOL;
121                 return;
122         }
123
124
125         $username = $a->user['username'];
126         $email    = $a->user['email'];
127         $nickname = $a->user['nickname'];
128         $timezone = $a->user['timezone'];
129
130
131         if(x($nickname))
132                 $nickname_block = file_get_contents("view/settings_nick_set.tpl");
133         else
134                 $nickname_block = file_get_contents("view/settings_nick_unset.tpl");
135
136         $nickname_block = replace_macros($nickname_block,array(
137                 '$nickname' => $nickname,
138                 '$uid' => $_SESSION['uid'],
139                 '$basepath' => substr($a->get_baseurl(),strpos($a->get_baseurl(),'://') + 3), 
140                 '$baseurl' => $a->get_baseurl()));      
141
142         $o = file_get_contents('view/settings.tpl');
143
144         $o = replace_macros($o,array(
145                 '$baseurl' => $a->get_baseurl(),
146                 '$uid' => $_SESSION['uid'],
147                 '$username' => $username,
148                 '$email' => $email,
149                 '$nickname_block' => $nickname_block,
150                 '$timezone' => $timezone,
151                 '$zoneselect' => select_timezone($timezone)
152                 ));
153
154         return $o;
155
156 }}