]> git.mxchange.org Git - friendica.git/blob - mod/register.php
8678614ac9f695f39ceb000832ab327e905ca820
[friendica.git] / mod / register.php
1 <?php
2
3 if(! function_exists('register_post')) {
4 function register_post(&$a) {
5
6         $verified = 0;
7         $blocked  = 1;
8
9         switch($a->config['register_policy']) {
10
11         
12         case REGISTER_OPEN:
13                 $blocked = 0;
14                 $verified = 1;
15                 break;
16
17         case REGISTER_VERIFY:
18                 $blocked = 1;
19                 $verify = 0;
20                 break;
21
22         default:
23         case REGISTER_CLOSED:
24                 if((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) {
25                         notice( "Permission denied." . EOL );
26                         return;
27                 }
28                 $blocked = 1;
29                 $verified = 0;
30                 break;
31         }
32
33         if(x($_POST,'username'))
34                 $username = notags(trim($_POST['username']));
35         if(x($_POST,'email'))
36                 $email =notags(trim($_POST['email']));
37
38         if((! x($username)) || (! x($email))) {
39                 notice( "Please enter the required information.". EOL );
40                 return;
41         }
42
43         $err = '';
44
45         if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email))
46                 $err .= " Not valid email.";
47         if(strlen($username) > 40)
48                 $err .= " Please use a shorter name.";
49         if(strlen($username) < 3)
50                 $err .= " Name too short.";
51         $r = q("SELECT `uid` FROM `user` 
52                 WHERE `email` = '%s' LIMIT 1",
53                 dbesc($email)
54                 );
55         if($r !== false && count($r))
56                 $err .= " This email address is already registered.";
57         if(strlen($err)) {
58                 notice( $err . EOL );
59                 return;
60         }
61
62
63         $new_password = autoname(6) . mt_rand(100,9999);
64         $new_password_encoded = hash('whirlpool',$new_password);
65
66         $res=openssl_pkey_new(array(
67                 'digest_alg' => 'whirlpool',
68                 'private_key_bits' => 4096,
69                 'encrypt_key' => false ));
70
71         // Get private key
72
73         $prvkey = '';
74
75         openssl_pkey_export($res, $prvkey);
76
77         // Get public key
78
79         $pkey = openssl_pkey_get_details($res);
80         $pubkey = $pkey["key"];
81
82         $r = q("INSERT INTO `user` ( `username`, `password`, `email`,
83                 `pubkey`, `prvkey`, `verified`, `blocked` )
84                 VALUES ( '%s', '%s', '%s', '%s', '%s', %d, %d )",
85                 dbesc($username),
86                 dbesc($new_password_encoded),
87                 dbesc($email),
88                 dbesc($pubkey),
89                 dbesc($prvkey),
90                 intval($verified),
91                 intval($blocked)
92                 );
93
94         if($r) {
95                 $r = q("SELECT `uid` FROM `user` 
96                         WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
97                         dbesc($username),
98                         dbesc($new_password_encoded)
99                         );
100                 if($r !== false && count($r))
101                         $newuid = intval($r[0]['uid']);
102         }
103         else {
104                 notice( "An error occurred during registration. Please try again." . EOL );
105                 return;
106         }               
107
108         if(x($newuid) !== NULL) {
109                 $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb` )
110                         VALUES ( %d, '%s', %d, '%s', '%s', '%s' ) ",
111                         intval($newuid),
112                         'default',
113                         1,
114                         dbesc($username),
115                         dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
116                         dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg')
117
118                 );
119                 if($r === false) {
120                         notice( "An error occurred creating your default profile. Please try again." . EOL );
121                         // Start fresh next time.
122                         $r = q("DELETE FROM `user` WHERE `uid` = %d",
123                                 intval($newuid));
124                         return;
125                 }
126                 $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `photo`, `thumb`, `blocked`, `url`,
127                         `request`, `notify`, `poll`, `confirm` )
128                         VALUES ( %d, '%s', 1, '%s', '%s', '%s', 0, '%s', '%s', '%s', '%s', '%s' ) ",
129                         intval($newuid),
130                         datetime_convert(),
131                         dbesc($username),
132                         dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
133                         dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg'), 
134                         dbesc($a->get_baseurl() . '/profile/' . intval($newuid)),
135                         dbesc($a->get_baseurl() . '/dfrn_request/' . intval($newuid)),
136                         dbesc($a->get_baseurl() . '/dfrn_notify/' . intval($newuid)),
137                         dbesc($a->get_baseurl() . '/dfrn_poll/' . intval($newuid)),
138                         dbesc($a->get_baseurl() . '/dfrn_confirm/' . intval($newuid))
139
140                 );
141
142
143         }
144
145         if( $a->config['register_policy'] == REGISTER_OPEN ) {
146                 $email_tpl = file_get_contents("view/register_open_eml.tpl");
147                 $email_tpl = replace_macros($email_tpl, array(
148                                 '$sitename' => $a->config['sitename'],
149                                 '$siteurl' =>  $a->get_baseurl(),
150                                 '$username' => $username,
151                                 '$email' => $email,
152                                 '$password' => $new_password,
153                                 '$uid' => $newuid ));
154
155                 $res = mail($email,"Registration details for {$a->config['sitename']}",$email_tpl,"From: Administrator@{$_SERVER[SERVER_NAME]}");
156
157         }
158
159         if($res) {
160                 notice( "Registration successful. Please check your email for further instructions." . EOL ) ;
161                 goaway($a->get_baseurl());
162         }
163         else {
164                 notice( "Failed to send email message. Here is the message that failed. $email_tpl " . EOL );
165         }
166         
167         return;
168 }}
169
170
171
172
173
174
175 if(! function_exists('register_content')) {
176 function register_content(&$a) {
177
178         $o = file_get_contents("view/register.tpl");
179         $o = replace_macros($o, array('$registertext' =>((x($a->config,'register_text'))? $a->config['register_text'] : "" )));
180         return $o;
181
182 }}
183