]> git.mxchange.org Git - friendica.git/blob - mod/settings.php
progress on photos
[friendica.git] / mod / settings.php
1 <?php
2
3
4 function settings_init(&$a) {
5
6         if(! local_user()) {
7                 notice("Permission denied." . EOL);
8                 $a->error = 404;
9                 return;
10         }
11         require_once("mod/profile.php");
12         profile_load($a,$a->user['nickname']);
13 }
14
15
16 function settings_post(&$a) {
17
18         if(! local_user()) {
19                 notice( "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(! local_user()) {
120                 notice( t('Permission denied.') . EOL );
121                 return;
122         }
123
124         require_once('view/acl_selectors.php');
125
126         $username = $a->user['username'];
127         $email    = $a->user['email'];
128         $nickname = $a->user['nickname'];
129         $timezone = $a->user['timezone'];
130
131
132
133         $nickname_block = file_get_contents("view/settings_nick_set.tpl");
134         
135
136         $nickname_subdir = '';
137         if(strlen($a->get_path())) {
138                 $subdir_tpl = file_get_contents('view/settings_nick_subdir.tpl');
139                 $nickname_subdir = replace_macros($subdir_tpl, array(
140                         '$baseurl' => $a->get_baseurl(),
141                         '$nickname' => $nickname,
142                         '$hostname' => $a->get_hostname()
143                 ));
144         }
145
146
147         $nickname_block = replace_macros($nickname_block,array(
148                 '$nickname' => $nickname,
149                 '$uid' => $_SESSION['uid'],
150                 '$subdir' => $nickname_subdir,
151                 '$basepath' => $a->get_hostname(),
152                 '$baseurl' => $a->get_baseurl()));      
153
154         $o = file_get_contents('view/settings.tpl');
155
156         $o = replace_macros($o,array(
157                 '$baseurl' => $a->get_baseurl(),
158                 '$uid' => $_SESSION['uid'],
159                 '$username' => $username,
160                 '$email' => $email,
161                 '$nickname_block' => $nickname_block,
162                 '$timezone' => $timezone,
163                 '$zoneselect' => select_timezone($timezone),
164                 '$acl_select' => populate_acl()
165         ));
166
167         return $o;
168
169 }}