]> git.mxchange.org Git - friendica.git/blob - mod/register.php
some changes
[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                         $_SESSION['sysmsg'] .= "Permission denied." . EOL;
26                         return;
27                 }
28                 $blocked = 0;
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                 $_SESSION['sysmsg'] .= "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." . EOL;
57         if(strlen($err)) {
58                 $_SESSION['sysmsg'] .= $err;
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                 $_SESSION['sysmsg'] .= "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                 if($r === false) {
119                         $_SESSION['sysmsg'] .= "An error occurred creating your default profile. Please try again." . EOL ;
120                         // Start fresh next time.
121                         $r = q("DELETE FROM `user` WHERE `uid` = %d",
122                                 intval($newuid));
123                         return;
124                 }
125                 $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `photo`, `thumb`, `blocked` )
126                         VALUES ( %d, '%s', 1, '%s', '%s', '%s', 0 ) ",
127                         intval($newuid),
128                         datetime_convert(),
129                         dbesc($username),
130                         dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
131                         dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg') 
132                 );
133
134
135         }
136
137         if( $a->config['register_policy'] == REGISTER_OPEN ) {
138                 $email_tpl = file_get_contents("view/register_open_eml.tpl");
139                 $email_tpl = replace_macros($email_tpl, array(
140                                 '$sitename' => $a->config['sitename'],
141                                 '$siteurl' =>  $a->get_baseurl(),
142                                 '$username' => $username,
143                                 '$email' => $email,
144                                 '$password' => $new_password,
145                                 '$uid' => $newuid ));
146
147                 $res = mail($email,"Registration details for {$a->config['sitename']}",$email_tpl,"From: Administrator@{$_SERVER[SERVER_NAME]}");
148
149         }
150
151         if($res) {
152                 $_SESSION['sysmsg'] .= "Registration successful. Please check your email for further instructions." . EOL ;
153                 goaway($a->get_baseurl());
154         }
155         else {
156                 $_SESSION['sysmsg'] .= "Failed to send email message. Here is the message that failed. $email_tpl " . EOL;
157         }
158         
159         return;
160 }}
161
162
163
164
165
166
167 if(! function_exists('register_content')) {
168 function register_content(&$a) {
169
170         $o = file_get_contents("view/register.tpl");
171         $o = replace_macros($o, array('$registertext' =>((x($a->config,'register_text'))? $a->config['register_text'] : "" )));
172         return $o;
173
174 }}
175