@@ -11,12 +11,12 @@ discard block |
||
11 | 11 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
12 | 12 | |
13 | 13 | if (!function_exists('user_load_by_mail')) { |
14 | - /** |
|
14 | +/** |
|
15 | 15 | * user_load_by_mail will be broken out of user_load |
16 | 16 | */ |
17 | - function user_load_by_mail($mail) { |
|
18 | - return user_load(array('mail' => $mail)); |
|
19 | - } |
|
17 | +function user_load_by_mail($mail) { |
|
18 | +return user_load(array('mail' => $mail)); |
|
19 | +} |
|
20 | 20 | } |
21 | 21 | |
22 | 22 | |
@@ -28,14 +28,14 @@ discard block |
||
28 | 28 | * Get an image object from a given file and cck field |
29 | 29 | */ |
30 | 30 | function get_cck_image_object($image_path, $field_name, $content_type, $ignore_resolution = FALSE) { |
31 | - $field = content_fields($field_name, $content_type); |
|
32 | - $validators = array_merge(filefield_widget_upload_validators($field), imagefield_widget_upload_validators($field)); |
|
33 | - if ($ignore_resolution) { |
|
34 | - unset($validators['filefield_validate_image_resolution']); |
|
35 | - } |
|
36 | - $target_path = filefield_widget_file_path($field); |
|
37 | - // Create the image object |
|
38 | - return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE); |
|
31 | +$field = content_fields($field_name, $content_type); |
|
32 | +$validators = array_merge(filefield_widget_upload_validators($field), imagefield_widget_upload_validators($field)); |
|
33 | +if ($ignore_resolution) { |
|
34 | +unset($validators['filefield_validate_image_resolution']); |
|
35 | +} |
|
36 | +$target_path = filefield_widget_file_path($field); |
|
37 | +// Create the image object |
|
38 | +return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE); |
|
39 | 39 | } |
40 | 40 | |
41 | 41 | |
@@ -47,73 +47,73 @@ discard block |
||
47 | 47 | * |
48 | 48 | */ |
49 | 49 | function boincuser_check_credit_requirements() { |
50 | - global $user; |
|
51 | - if (!$user->uid) { |
|
52 | - return FALSE; |
|
53 | - } |
|
54 | - $account = user_load($user->uid); |
|
55 | - $min_credit_to_post = variable_get('boinc_comment_min_credit', 0); |
|
56 | - $community_role = array_search('community member', user_roles(true)); |
|
57 | - $unrestricted_role = array_search('verified contributor', user_roles(true)); |
|
50 | +global $user; |
|
51 | +if (!$user->uid) { |
|
52 | +return FALSE; |
|
53 | +} |
|
54 | +$account = user_load($user->uid); |
|
55 | +$min_credit_to_post = variable_get('boinc_comment_min_credit', 0); |
|
56 | +$community_role = array_search('community member', user_roles(true)); |
|
57 | +$unrestricted_role = array_search('verified contributor', user_roles(true)); |
|
58 | 58 | |
59 | - // Set user roles based on current penalty status... |
|
60 | - if ($account->boincuser_penalty_expiration > time()) { |
|
61 | - drupal_set_message(bts( |
|
62 | - 'You are banned from community participation until @date', |
|
63 | - array('@date' => format_date($account->boincuser_penalty_expiration)) |
|
64 | - ), 'warning', FALSE); |
|
65 | - if (isset($account->roles[$community_role])) { |
|
66 | - // Remove from the community role, if not already |
|
67 | - unset($account->roles[$community_role]); |
|
68 | - } |
|
69 | - if (isset($account->roles[$unrestricted_role])) { |
|
70 | - // Likewise, revoke extra privileges |
|
71 | - unset($account->roles[$unrestricted_role]); |
|
72 | - } |
|
59 | +// Set user roles based on current penalty status... |
|
60 | +if ($account->boincuser_penalty_expiration > time()) { |
|
61 | +drupal_set_message(bts( |
|
62 | + 'You are banned from community participation until @date', |
|
63 | + array('@date' => format_date($account->boincuser_penalty_expiration)) |
|
64 | +), 'warning', FALSE); |
|
65 | +if (isset($account->roles[$community_role])) { |
|
66 | + // Remove from the community role, if not already |
|
67 | + unset($account->roles[$community_role]); |
|
68 | +} |
|
69 | +if (isset($account->roles[$unrestricted_role])) { |
|
70 | + // Likewise, revoke extra privileges |
|
71 | + unset($account->roles[$unrestricted_role]); |
|
72 | +} |
|
73 | +user_save($account, array('roles' => $account->roles)); |
|
74 | +} |
|
75 | +else { |
|
76 | +if (!isset($account->roles[$community_role])) { |
|
77 | + // The user should be a 'community member' role. If the user was |
|
78 | + // previously banned, this will restore that role. |
|
79 | + $account->roles[$community_role] = 'community member'; |
|
80 | + user_save($account, array('roles' => $account->roles)); |
|
81 | +} |
|
82 | + |
|
83 | +// ... and total credit. |
|
84 | +if ($account->boincuser_total_credit >= $min_credit_to_post) { |
|
85 | + if (!isset($account->roles[$unrestricted_role])) { |
|
86 | + // This user is now above the credit threshold and is allowed full |
|
87 | + // privileges |
|
88 | + $account->roles[$unrestricted_role] = 'verified contributor'; |
|
73 | 89 | user_save($account, array('roles' => $account->roles)); |
74 | 90 | } |
75 | - else { |
|
76 | - if (!isset($account->roles[$community_role])) { |
|
77 | - // The user should be a 'community member' role. If the user was |
|
78 | - // previously banned, this will restore that role. |
|
79 | - $account->roles[$community_role] = 'community member'; |
|
80 | - user_save($account, array('roles' => $account->roles)); |
|
81 | - } |
|
82 | - |
|
83 | - // ... and total credit. |
|
84 | - if ($account->boincuser_total_credit >= $min_credit_to_post) { |
|
85 | - if (!isset($account->roles[$unrestricted_role])) { |
|
86 | - // This user is now above the credit threshold and is allowed full |
|
87 | - // privileges |
|
88 | - $account->roles[$unrestricted_role] = 'verified contributor'; |
|
89 | - user_save($account, array('roles' => $account->roles)); |
|
90 | - } |
|
91 | - } |
|
92 | - else { |
|
93 | - drupal_set_message(bts( |
|
94 | - 'You must earn @count more credits to be able to post comments on this site and create or modify your user profile.', |
|
95 | - array('@count' => $min_credit_to_post - $account->boincuser_total_credit) |
|
96 | - ), 'warning', FALSE); |
|
97 | - if (isset($account->roles[$unrestricted_role])) { |
|
98 | - // Either the threshold has been raised or credits have been revoked; |
|
99 | - // this user no longer qualifies for full privileges |
|
100 | - unset($account->roles[$unrestricted_role]); |
|
101 | - user_save($account, array('roles' => $account->roles)); |
|
102 | - } |
|
103 | - } |
|
104 | - |
|
91 | +} |
|
92 | +else { |
|
93 | + drupal_set_message(bts( |
|
94 | + 'You must earn @count more credits to be able to post comments on this site and create or modify your user profile.', |
|
95 | + array('@count' => $min_credit_to_post - $account->boincuser_total_credit) |
|
96 | + ), 'warning', FALSE); |
|
97 | + if (isset($account->roles[$unrestricted_role])) { |
|
98 | + // Either the threshold has been raised or credits have been revoked; |
|
99 | + // this user no longer qualifies for full privileges |
|
100 | + unset($account->roles[$unrestricted_role]); |
|
101 | + user_save($account, array('roles' => $account->roles)); |
|
105 | 102 | } |
106 | 103 | } |
107 | 104 | |
105 | +} |
|
106 | +} |
|
107 | + |
|
108 | 108 | /** |
109 | 109 | * Get the cid of the first comment the user has not seen on a given node |
110 | 110 | */ |
111 | 111 | function boincuser_get_first_unread_comment_id($nid, $uid = NULL) { |
112 | - if (!$uid) { |
|
113 | - global $user; |
|
114 | - $uid = $user->uid; |
|
115 | - } |
|
116 | - return db_result(db_query(" |
|
112 | +if (!$uid) { |
|
113 | +global $user; |
|
114 | +$uid = $user->uid; |
|
115 | +} |
|
116 | +return db_result(db_query(" |
|
117 | 117 | SELECT c.cid |
118 | 118 | FROM {node} n |
119 | 119 | INNER JOIN {comments} c ON c.nid = n.nid |
@@ -123,41 +123,41 @@ discard block |
||
123 | 123 | AND c.timestamp > h.timestamp |
124 | 124 | ORDER BY c.timestamp ASC |
125 | 125 | LIMIT 1", |
126 | - $uid, $nid |
|
127 | - )); |
|
126 | +$uid, $nid |
|
127 | +)); |
|
128 | 128 | } |
129 | 129 | |
130 | 130 | /** |
131 | 131 | * Choose and set the user of the day |
132 | 132 | */ |
133 | 133 | function boincuser_select_user_of_the_day() { |
134 | - // First get a list of users with recent credit |
|
135 | - db_set_active('boinc_rw'); |
|
136 | - $users_with_credit = db_query(" |
|
134 | +// First get a list of users with recent credit |
|
135 | +db_set_active('boinc_rw'); |
|
136 | +$users_with_credit = db_query(" |
|
137 | 137 | SELECT |
138 | 138 | id |
139 | 139 | FROM {user} u |
140 | 140 | JOIN {profile} p ON p.userid = u.id |
141 | 141 | WHERE expavg_credit > 1 |
142 | 142 | ORDER BY uotd_time ASC, RAND()" |
143 | - ); |
|
144 | - db_set_active('default'); |
|
145 | - $active_users = array(); |
|
146 | - while ($user_with_credit = db_fetch_object($users_with_credit)) { |
|
147 | - $active_users[] = $user_with_credit->id; |
|
148 | - } |
|
149 | - $active_users = implode(',', $active_users); |
|
150 | - // Limit to users who have never been user of the day, if there are any |
|
151 | - $never_been_picked = db_result(db_query(" |
|
143 | +); |
|
144 | +db_set_active('default'); |
|
145 | +$active_users = array(); |
|
146 | +while ($user_with_credit = db_fetch_object($users_with_credit)) { |
|
147 | +$active_users[] = $user_with_credit->id; |
|
148 | +} |
|
149 | +$active_users = implode(',', $active_users); |
|
150 | +// Limit to users who have never been user of the day, if there are any |
|
151 | +$never_been_picked = db_result(db_query(" |
|
152 | 152 | SELECT COUNT(*) |
153 | 153 | FROM {boincuser} bu |
154 | 154 | WHERE bu.uotd_time = 0 |
155 | 155 | " . ($active_users ? " AND bu.boinc_id IN ({$active_users}) " : '') |
156 | - )); |
|
157 | - $new_uotd_uid = 0; |
|
158 | - while (!$new_uotd_uid) { |
|
159 | - // Select a user of the day randomly from the pool |
|
160 | - $new_uotd_uid = db_result(db_query(" |
|
156 | +)); |
|
157 | +$new_uotd_uid = 0; |
|
158 | +while (!$new_uotd_uid) { |
|
159 | +// Select a user of the day randomly from the pool |
|
160 | + $new_uotd_uid = db_result(db_query(" |
|
161 | 161 | SELECT |
162 | 162 | n.uid |
163 | 163 | FROM {node} n |
@@ -169,33 +169,33 @@ discard block |
||
169 | 169 | " . ($active_users ? " AND bu.boinc_id IN ({$active_users}) " : '') . " |
170 | 170 | ORDER BY RAND() |
171 | 171 | LIMIT 1" |
172 | - )); |
|
173 | - if (!$new_uotd_uid) { |
|
174 | - // Can't find a user with a profile; remove constraints on the pool |
|
175 | - if ($never_been_picked) { |
|
176 | - // Allow users who have been previously selected |
|
177 | - $never_been_picked = FALSE; |
|
178 | - } |
|
179 | - elseif ($active_users) { |
|
180 | - // Allow users who are not even active (getting desperate) |
|
181 | - $active_users = FALSE; |
|
182 | - } |
|
183 | - else { |
|
184 | - // Process failed... |
|
185 | - return FALSE; |
|
186 | - } |
|
187 | - } |
|
172 | +)); |
|
173 | +if (!$new_uotd_uid) { |
|
174 | + // Can't find a user with a profile; remove constraints on the pool |
|
175 | + if ($never_been_picked) { |
|
176 | + // Allow users who have been previously selected |
|
177 | + $never_been_picked = FALSE; |
|
188 | 178 | } |
189 | - $uotd = user_load($new_uotd_uid); |
|
190 | - if ($uotd->uid) { |
|
191 | - db_query(" |
|
179 | + elseif ($active_users) { |
|
180 | + // Allow users who are not even active (getting desperate) |
|
181 | + $active_users = FALSE; |
|
182 | + } |
|
183 | + else { |
|
184 | + // Process failed... |
|
185 | + return FALSE; |
|
186 | + } |
|
187 | +} |
|
188 | +} |
|
189 | +$uotd = user_load($new_uotd_uid); |
|
190 | +if ($uotd->uid) { |
|
191 | +db_query(" |
|
192 | 192 | UPDATE {boincuser} |
193 | 193 | SET uotd_time = '%d' |
194 | 194 | WHERE uid = '%d'", |
195 | - time(), $uotd->uid |
|
196 | - ); |
|
197 | - } |
|
198 | - return $uotd; |
|
195 | + time(), $uotd->uid |
|
196 | +); |
|
197 | +} |
|
198 | +return $uotd; |
|
199 | 199 | } |
200 | 200 | |
201 | 201 | |
@@ -213,71 +213,71 @@ discard block |
||
213 | 213 | * new and prev email. |
214 | 214 | */ |
215 | 215 | function _boincuser_send_emailchange($account, $new_email=NULL, $prev_email=NULL, $adminuser=FALSE) { |
216 | - require_boinc('token'); |
|
217 | - module_load_include('inc', 'rules', 'modules/system.rules'); |
|
218 | - |
|
219 | - global $base_url; |
|
220 | - $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
216 | +require_boinc('token'); |
|
217 | +module_load_include('inc', 'rules', 'modules/system.rules'); |
|
221 | 218 | |
222 | - if (is_null($new_email)) { |
|
223 | - $new_email = $account->mail; |
|
224 | - } |
|
225 | - if (is_null($prev_email)) { |
|
226 | - $prev_email = $account->boincuser_previous_email_addr; |
|
227 | - } |
|
219 | +global $base_url; |
|
220 | +$site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
228 | 221 | |
229 | - // @todo - set constant in drupal, or use BOINC contsants |
|
230 | - $duration = TOKEN_DURATION_ONE_WEEK; |
|
231 | - $changedate = date('F j, Y \a\t G:i T', time()); |
|
232 | - $newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration); |
|
233 | - $token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration); |
|
234 | - if ($adminuser) { |
|
235 | - $graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
|
236 | - . "on {$changedate}. If you need to reverse this change, please look for " |
|
237 | - . "an email send to the email address: {$prev_email}.\n"; |
|
238 | - } |
|
239 | - else { |
|
240 | - $graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
|
241 | - . "on {$changedate}. You will not be able to change your email address " |
|
242 | - . "until {$newdate}. If you need to reverse this change, please look for " |
|
243 | - . "an email send to the email address: {$prev_email}.\n"; |
|
244 | - } |
|
222 | +if (is_null($new_email)) { |
|
223 | +$new_email = $account->mail; |
|
224 | +} |
|
225 | +if (is_null($prev_email)) { |
|
226 | +$prev_email = $account->boincuser_previous_email_addr; |
|
227 | +} |
|
245 | 228 | |
246 | - // Send email #1 to current address |
|
247 | - $mysubject = "Notification of email change at {$site_name}"; |
|
248 | - $mymessage = '' |
|
249 | - . "{$account->boincuser_name},\n" |
|
250 | - . "\n" |
|
251 | - . $graf1 |
|
252 | - . "\n" |
|
253 | - . "Thanks, \n" |
|
254 | - . "{$site_name} support team\n"; |
|
255 | - |
|
256 | - $settings = array( |
|
257 | - 'from' => '', |
|
258 | - 'to' => $new_email, |
|
259 | - 'subject' => $mysubject, |
|
260 | - 'message' => $mymessage, |
|
261 | - ); |
|
262 | - rules_action_mail_to_user($account, $settings); |
|
263 | - |
|
264 | - // Send email #2 to previous address. |
|
265 | - $mymessage = '' |
|
266 | - . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n" |
|
267 | - . "\n" |
|
268 | - . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n" |
|
269 | - . "\n" |
|
270 | - . "Thanks, \n" |
|
271 | - . "{$site_name} support team\n"; |
|
272 | - |
|
273 | - $settings = array( |
|
274 | - 'from' => '', |
|
275 | - 'to' => $prev_email, |
|
276 | - 'subject' => $mysubject, |
|
277 | - 'message' => $mymessage, |
|
278 | - ); |
|
229 | +// @todo - set constant in drupal, or use BOINC contsants |
|
230 | +$duration = TOKEN_DURATION_ONE_WEEK; |
|
231 | +$changedate = date('F j, Y \a\t G:i T', time()); |
|
232 | +$newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration); |
|
233 | +$token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration); |
|
234 | +if ($adminuser) { |
|
235 | +$graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
|
236 | + . "on {$changedate}. If you need to reverse this change, please look for " |
|
237 | + . "an email send to the email address: {$prev_email}.\n"; |
|
238 | +} |
|
239 | +else { |
|
240 | +$graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
|
241 | + . "on {$changedate}. You will not be able to change your email address " |
|
242 | + . "until {$newdate}. If you need to reverse this change, please look for " |
|
243 | + . "an email send to the email address: {$prev_email}.\n"; |
|
244 | +} |
|
279 | 245 | |
280 | - rules_action_mail($settings); |
|
246 | +// Send email #1 to current address |
|
247 | +$mysubject = "Notification of email change at {$site_name}"; |
|
248 | +$mymessage = '' |
|
249 | + . "{$account->boincuser_name},\n" |
|
250 | + . "\n" |
|
251 | + . $graf1 |
|
252 | + . "\n" |
|
253 | + . "Thanks, \n" |
|
254 | + . "{$site_name} support team\n"; |
|
255 | + |
|
256 | +$settings = array( |
|
257 | +'from' => '', |
|
258 | +'to' => $new_email, |
|
259 | +'subject' => $mysubject, |
|
260 | +'message' => $mymessage, |
|
261 | +); |
|
262 | +rules_action_mail_to_user($account, $settings); |
|
263 | + |
|
264 | +// Send email #2 to previous address. |
|
265 | +$mymessage = '' |
|
266 | + . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n" |
|
267 | + . "\n" |
|
268 | + . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n" |
|
269 | + . "\n" |
|
270 | + . "Thanks, \n" |
|
271 | + . "{$site_name} support team\n"; |
|
272 | + |
|
273 | +$settings = array( |
|
274 | +'from' => '', |
|
275 | +'to' => $prev_email, |
|
276 | +'subject' => $mysubject, |
|
277 | +'message' => $mymessage, |
|
278 | +); |
|
279 | + |
|
280 | +rules_action_mail($settings); |
|
281 | 281 | } |
282 | 282 | |
283 | 283 | /** |
@@ -287,32 +287,32 @@ discard block |
||
287 | 287 | * |
288 | 288 | */ |
289 | 289 | function create_proper_drupalname($requested_name) { |
290 | - if (!$requested_name) { |
|
291 | - // If the name is empty, set it |
|
292 | - $requested_name = 'anonymous'; |
|
293 | - } |
|
294 | - $same_name_tally = 1; |
|
295 | - |
|
296 | - // Remove extra spaces |
|
297 | - $name2 = preg_replace("/ {2,}/", " ", trim($requested_name)); |
|
298 | - // Remove any non-valid characters |
|
299 | - $cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2); |
|
300 | - // Truncate name |
|
301 | - $name_length = strlen($cleaned_name); |
|
302 | - if ($name_length > 56) { |
|
303 | - // Name is limited to 60 characters, but we want to leave space to add a |
|
304 | - // tally if needed (for users with duplicate names); Limit to 56 chars and |
|
305 | - // replace the middle of the string with "..." if too long |
|
306 | - $cleaned_name = substr_replace($cleaned_name, '...', 28, ($name_length-56)+3); |
|
307 | - } |
|
290 | +if (!$requested_name) { |
|
291 | +// If the name is empty, set it |
|
292 | +$requested_name = 'anonymous'; |
|
293 | +} |
|
294 | +$same_name_tally = 1; |
|
295 | + |
|
296 | +// Remove extra spaces |
|
297 | +$name2 = preg_replace("/ {2,}/", " ", trim($requested_name)); |
|
298 | +// Remove any non-valid characters |
|
299 | +$cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2); |
|
300 | +// Truncate name |
|
301 | +$name_length = strlen($cleaned_name); |
|
302 | +if ($name_length > 56) { |
|
303 | +// Name is limited to 60 characters, but we want to leave space to add a |
|
304 | +// tally if needed (for users with duplicate names); Limit to 56 chars and |
|
305 | +// replace the middle of the string with "..." if too long |
|
306 | +$cleaned_name = substr_replace($cleaned_name, '...', 28, ($name_length-56)+3); |
|
307 | +} |
|
308 | 308 | |
309 | - // Determine if there are duplicate names, if so append a number to end. |
|
310 | - $unique_name = $cleaned_name; |
|
311 | - while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) { |
|
312 | - $same_name_tally++; |
|
313 | - $unique_name = "{$cleaned_name}_{$same_name_tally}"; |
|
314 | - } |
|
315 | - return $unique_name; |
|
309 | +// Determine if there are duplicate names, if so append a number to end. |
|
310 | +$unique_name = $cleaned_name; |
|
311 | +while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) { |
|
312 | +$same_name_tally++; |
|
313 | +$unique_name = "{$cleaned_name}_{$same_name_tally}"; |
|
314 | +} |
|
315 | +return $unique_name; |
|
316 | 316 | } |
317 | 317 | |
318 | 318 | |
@@ -326,9 +326,9 @@ discard block |
||
326 | 326 | * |
327 | 327 | */ |
328 | 328 | function boincuser_check_termsofuse($user) { |
329 | - require_boinc('consent'); |
|
330 | - $boinc_user = boincuser_load($user->uid, TRUE); |
|
331 | - return check_user_consent($boinc_user, CONSENT_TYPE_ENROLL); |
|
329 | +require_boinc('consent'); |
|
330 | +$boinc_user = boincuser_load($user->uid, TRUE); |
|
331 | +return check_user_consent($boinc_user, CONSENT_TYPE_ENROLL); |
|
332 | 332 | } |
333 | 333 | |
334 | 334 | /** |
@@ -339,33 +339,33 @@ discard block |
||
339 | 339 | * |
340 | 340 | */ |
341 | 341 | function boincuser_consentto_termsofuse($user) { |
342 | - require_boinc('consent'); |
|
343 | - $boinc_user = boincuser_load($user->uid, TRUE); |
|
344 | - |
|
345 | - list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | - if ($checkct) { |
|
347 | - $rc1 = consent_to_a_policy($boinc_user, $ctid, 1, 0, 'Webform', time()); |
|
348 | - if (!$rc1) { |
|
349 | - drupal_set_message( |
|
350 | - bts("ERROR: Database error when attempting to INSERT into table consent with ID=@id. The @project administrators have been notified.", |
|
351 | - array( |
|
352 | - '@id' => $boinc_user->id, |
|
353 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
354 | - ), |
|
355 | - 'NULL', 'boinc:consent-termsofuse'), |
|
356 | - 'error'); |
|
357 | - rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
358 | - } |
|
359 | - return $rc1; |
|
360 | - } |
|
361 | - else { |
|
362 | - drupal_set_message( |
|
363 | - bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
364 | - array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:consent-termsofuse'), |
|
365 | - 'error'); |
|
366 | - rules_invoke_event('boincuser_general_consent_type_error', CONSENT_TYPE_ENROLL, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
367 | - } |
|
368 | - return FALSE; |
|
342 | +require_boinc('consent'); |
|
343 | +$boinc_user = boincuser_load($user->uid, TRUE); |
|
344 | + |
|
345 | +list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | +if ($checkct) { |
|
347 | +$rc1 = consent_to_a_policy($boinc_user, $ctid, 1, 0, 'Webform', time()); |
|
348 | +if (!$rc1) { |
|
349 | + drupal_set_message( |
|
350 | + bts("ERROR: Database error when attempting to INSERT into table consent with ID=@id. The @project administrators have been notified.", |
|
351 | + array( |
|
352 | + '@id' => $boinc_user->id, |
|
353 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
354 | + ), |
|
355 | + 'NULL', 'boinc:consent-termsofuse'), |
|
356 | + 'error'); |
|
357 | + rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
358 | +} |
|
359 | +return $rc1; |
|
360 | +} |
|
361 | +else { |
|
362 | +drupal_set_message( |
|
363 | + bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
364 | + array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:consent-termsofuse'), |
|
365 | +'error'); |
|
366 | +rules_invoke_event('boincuser_general_consent_type_error', CONSENT_TYPE_ENROLL, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
367 | +} |
|
368 | +return FALSE; |
|
369 | 369 | } |
370 | 370 | |
371 | 371 | /** |
@@ -374,16 +374,16 @@ discard block |
||
374 | 374 | */ |
375 | 375 | function _boincuser_ignore_paths($path, $paths_to_ignore) { |
376 | 376 | |
377 | - foreach ($paths_to_ignore as $pi) { |
|
378 | - // @todo Currently this function uses {} as PHP regexp |
|
379 | - // delimiters. Curly brace is not really allowed un URLs, but a |
|
380 | - // more robust function would first check for these curly braces |
|
381 | - // in the path_to_ignore patterms, just in case. |
|
382 | - if (preg_match('{' . $pi . '}', $path)) { |
|
383 | - return TRUE; |
|
384 | - } |
|
385 | - } |
|
386 | - return FALSE; |
|
377 | +foreach ($paths_to_ignore as $pi) { |
|
378 | +// @todo Currently this function uses {} as PHP regexp |
|
379 | +// delimiters. Curly brace is not really allowed un URLs, but a |
|
380 | +// more robust function would first check for these curly braces |
|
381 | +// in the path_to_ignore patterms, just in case. |
|
382 | +if (preg_match('{' . $pi . '}', $path)) { |
|
383 | + return TRUE; |
|
384 | +} |
|
385 | +} |
|
386 | +return FALSE; |
|
387 | 387 | } |
388 | 388 | |
389 | 389 | /** |
@@ -391,20 +391,20 @@ discard block |
||
391 | 391 | * Drupal's recover email path. |
392 | 392 | */ |
393 | 393 | function _boincuser_redirect_recover_email() { |
394 | - $params = array( |
|
395 | - 'boincid' => isset($_GET['id']) ? $_GET['id'] : '', |
|
396 | - 'token' => isset($_GET['token']) ? $_GET['token'] : '' |
|
397 | - ); |
|
398 | - |
|
399 | - // If boincid or token is not present, then go to the home page. |
|
400 | - if (empty($params['boincid']) or empty($params['token'])) { |
|
401 | - $redirect = ''; |
|
402 | - } |
|
403 | - else { |
|
404 | - $uid = boincuser_lookup_uid($params['boincid']); |
|
405 | - $redirect = "/user/${uid}/recoveremail/${params['token']}"; |
|
406 | - } |
|
407 | - drupal_goto($redirect); |
|
394 | +$params = array( |
|
395 | +'boincid' => isset($_GET['id']) ? $_GET['id'] : '', |
|
396 | +'token' => isset($_GET['token']) ? $_GET['token'] : '' |
|
397 | +); |
|
398 | + |
|
399 | +// If boincid or token is not present, then go to the home page. |
|
400 | +if (empty($params['boincid']) or empty($params['token'])) { |
|
401 | +$redirect = ''; |
|
402 | +} |
|
403 | +else { |
|
404 | +$uid = boincuser_lookup_uid($params['boincid']); |
|
405 | +$redirect = "/user/${uid}/recoveremail/${params['token']}"; |
|
406 | +} |
|
407 | +drupal_goto($redirect); |
|
408 | 408 | } |
409 | 409 | |
410 | 410 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -415,17 +415,17 @@ discard block |
||
415 | 415 | * Require BOINC library |
416 | 416 | */ |
417 | 417 | function require_boinc($libraries) { |
418 | - if ($include_dir = boinc_get_path('html_inc')) { |
|
419 | - $working_dir = getcwd(); |
|
420 | - chdir($include_dir); |
|
421 | - if (!is_array($libraries)) { |
|
422 | - $libraries = array($libraries); |
|
423 | - } |
|
424 | - foreach ($libraries as $library) { |
|
425 | - require_once("{$library}.inc"); |
|
426 | - } |
|
427 | - chdir($working_dir); |
|
428 | - } |
|
418 | +if ($include_dir = boinc_get_path('html_inc')) { |
|
419 | +$working_dir = getcwd(); |
|
420 | +chdir($include_dir); |
|
421 | +if (!is_array($libraries)) { |
|
422 | + $libraries = array($libraries); |
|
423 | +} |
|
424 | +foreach ($libraries as $library) { |
|
425 | + require_once("{$library}.inc"); |
|
426 | +} |
|
427 | +chdir($working_dir); |
|
428 | +} |
|
429 | 429 | } |
430 | 430 | |
431 | 431 | /** |
@@ -433,92 +433,92 @@ discard block |
||
433 | 433 | * The path from the BOINC html root must be included (e.g. user/file.php) |
434 | 434 | */ |
435 | 435 | function include_boinc($file) { |
436 | - if ($include_dir = boinc_get_path()) { |
|
437 | - $include_dir .= '/html'; |
|
438 | - $workingDir = getcwd(); |
|
439 | - $path = dirname($file); |
|
440 | - $file = basename($file); |
|
441 | - chdir("{$include_dir}/{$path}"); |
|
442 | - include($file); |
|
443 | - chdir($workingDir); |
|
444 | - } |
|
436 | +if ($include_dir = boinc_get_path()) { |
|
437 | +$include_dir .= '/html'; |
|
438 | +$workingDir = getcwd(); |
|
439 | +$path = dirname($file); |
|
440 | +$file = basename($file); |
|
441 | +chdir("{$include_dir}/{$path}"); |
|
442 | +include($file); |
|
443 | +chdir($workingDir); |
|
444 | +} |
|
445 | 445 | } |
446 | 446 | |
447 | 447 | /** |
448 | 448 | * Get the BOINC include path |
449 | 449 | */ |
450 | 450 | function boinc_get_path($type = 'root') { |
451 | - $dir = "boinc_{$type}_dir"; |
|
452 | - if ($include_dir = variable_get("boinc_{$type}_dir", '')) { |
|
453 | - return $include_dir; |
|
454 | - } |
|
455 | - else { |
|
456 | - // Don't show errors on blacklisted pages |
|
457 | - $page_blacklist = array( |
|
458 | - 'admin/boinc/environment' |
|
459 | - ); |
|
460 | - if (!in_array($_GET['q'], $page_blacklist)) { |
|
461 | - watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
451 | +$dir = "boinc_{$type}_dir"; |
|
452 | +if ($include_dir = variable_get("boinc_{$type}_dir", '')) { |
|
453 | +return $include_dir; |
|
454 | +} |
|
455 | +else { |
|
456 | +// Don't show errors on blacklisted pages |
|
457 | +$page_blacklist = array( |
|
458 | + 'admin/boinc/environment' |
|
459 | +); |
|
460 | +if (!in_array($_GET['q'], $page_blacklist)) { |
|
461 | + watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
462 | 462 | !configure_it', array('!configure_it' => l(t('configure it now'), |
463 | - 'admin/boinc/environment')), WATCHDOG_WARNING); |
|
464 | - if (user_access('administer site configuration')) { |
|
465 | - drupal_set_message(t('The BOINC environment is not configured. Please |
|
463 | + 'admin/boinc/environment')), WATCHDOG_WARNING); |
|
464 | + if (user_access('administer site configuration')) { |
|
465 | + drupal_set_message(t('The BOINC environment is not configured. Please |
|
466 | 466 | !configure_it', array('!configure_it' => l(t('configure it now'), |
467 | - 'admin/boinc/environment'))), 'warning', FALSE); |
|
468 | - } |
|
469 | - else { |
|
470 | - drupal_set_message(t('There is a problem with the site. Please contact |
|
467 | + 'admin/boinc/environment'))), 'warning', FALSE); |
|
468 | + } |
|
469 | + else { |
|
470 | + drupal_set_message(t('There is a problem with the site. Please contact |
|
471 | 471 | the system administrator.'), 'error', FALSE); |
472 | - } |
|
473 | - // Redirect home to display the error message and avoid fatal errors |
|
474 | - // (unless on a blacklisted page) |
|
475 | - $redirect_blacklist = array( |
|
476 | - 'admin/settings/performance', |
|
477 | - 'admin/boinc/environment', |
|
478 | - 'home', |
|
479 | - '' |
|
480 | - ); |
|
481 | - if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
482 | - drupal_goto(''); |
|
483 | - } |
|
484 | - } |
|
485 | - else { |
|
486 | - // Clear the messages on the environment config page |
|
487 | - drupal_get_messages(); |
|
488 | - } |
|
489 | 472 | } |
490 | - return FALSE; |
|
473 | + // Redirect home to display the error message and avoid fatal errors |
|
474 | + // (unless on a blacklisted page) |
|
475 | + $redirect_blacklist = array( |
|
476 | + 'admin/settings/performance', |
|
477 | + 'admin/boinc/environment', |
|
478 | + 'home', |
|
479 | + '' |
|
480 | + ); |
|
481 | + if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
482 | + drupal_goto(''); |
|
483 | + } |
|
484 | +} |
|
485 | +else { |
|
486 | + // Clear the messages on the environment config page |
|
487 | + drupal_get_messages(); |
|
488 | +} |
|
489 | +} |
|
490 | +return FALSE; |
|
491 | 491 | } |
492 | 492 | |
493 | 493 | /** |
494 | 494 | * Get the configured scheduler tags |
495 | 495 | */ |
496 | 496 | function boinc_get_scheduler_tags() { |
497 | - // Don't generate messages for blacklisted pages |
|
498 | - $page_blacklist = array( |
|
499 | - 'admin/boinc/environment', |
|
500 | - 'admin/boinc/scheduler' |
|
501 | - ); |
|
502 | - if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
503 | - return explode("\r\n", $url_config); |
|
504 | - } |
|
505 | - elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
506 | - watchdog('boincuser', 'The BOINC scheduling server settings are not yet |
|
497 | +// Don't generate messages for blacklisted pages |
|
498 | +$page_blacklist = array( |
|
499 | +'admin/boinc/environment', |
|
500 | +'admin/boinc/scheduler' |
|
501 | +); |
|
502 | +if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
503 | +return explode("\r\n", $url_config); |
|
504 | +} |
|
505 | +elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
506 | +watchdog('boincuser', 'The BOINC scheduling server settings are not yet |
|
507 | 507 | configured. Please !verify for the settings to become effective.', |
508 | - array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
509 | - t('and') . '</strong> ' . t('save the configuration'), |
|
510 | - 'admin/boinc/scheduler', array('html' => TRUE)) |
|
511 | - ), WATCHDOG_WARNING); |
|
512 | - if (user_access('administer site configuration')) { |
|
513 | - drupal_set_message(t('The BOINC scheduling server settings are not yet |
|
508 | + array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
509 | + t('and') . '</strong> ' . t('save the configuration'), |
|
510 | + 'admin/boinc/scheduler', array('html' => TRUE)) |
|
511 | + ), WATCHDOG_WARNING); |
|
512 | +if (user_access('administer site configuration')) { |
|
513 | + drupal_set_message(t('The BOINC scheduling server settings are not yet |
|
514 | 514 | configured. Please !verify for the settings to become effective', |
515 | - array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
516 | - t('and') . '</strong> ' . t('save the configuration'), |
|
517 | - 'admin/boinc/scheduler', array('html' => TRUE)) |
|
518 | - )), 'warning', FALSE); |
|
519 | - } |
|
520 | - } |
|
521 | - return array(); |
|
515 | + array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
516 | + t('and') . '</strong> ' . t('save the configuration'), |
|
517 | + 'admin/boinc/scheduler', array('html' => TRUE)) |
|
518 | + )), 'warning', FALSE); |
|
519 | +} |
|
520 | +} |
|
521 | +return array(); |
|
522 | 522 | } |
523 | 523 | |
524 | 524 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -530,41 +530,41 @@ discard block |
||
530 | 530 | * Determine if a BOINC ID matches the logged in user |
531 | 531 | */ |
532 | 532 | function is_current_boinc_user($boinc_id) { |
533 | - global $user; |
|
534 | - if (!$user->uid) { |
|
535 | - return FALSE; |
|
536 | - } |
|
537 | - // boincuser_id is not stored in the global user, so load a new instance |
|
538 | - $drupuser = user_load($user->uid); |
|
539 | - return ($boinc_id == $drupuser->boincuser_id); |
|
533 | +global $user; |
|
534 | +if (!$user->uid) { |
|
535 | +return FALSE; |
|
536 | +} |
|
537 | +// boincuser_id is not stored in the global user, so load a new instance |
|
538 | +$drupuser = user_load($user->uid); |
|
539 | +return ($boinc_id == $drupuser->boincuser_id); |
|
540 | 540 | } |
541 | 541 | |
542 | 542 | /** |
543 | 543 | * Convert a BOINC ID to a Drupal ID |
544 | 544 | */ |
545 | 545 | function boincuser_lookup_uid($boinc_id) { |
546 | - $drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id)); |
|
547 | - return $drupal_id; |
|
546 | +$drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id)); |
|
547 | +return $drupal_id; |
|
548 | 548 | } |
549 | 549 | function get_drupal_id($boinc_id) { |
550 | - return boincuser_lookup_uid($boinc_id); |
|
550 | +return boincuser_lookup_uid($boinc_id); |
|
551 | 551 | } |
552 | 552 | |
553 | 553 | /** |
554 | 554 | * Get a BOINC user object |
555 | 555 | */ |
556 | 556 | function boincuser_load($user_id = NULL, $is_drupal_id = FALSE) { |
557 | - if (!$user_id) { |
|
558 | - global $user; |
|
559 | - $user_id = $user->uid; |
|
560 | - $is_drupal_id = TRUE; |
|
561 | - } |
|
562 | - if ($is_drupal_id) { |
|
563 | - $account = user_load($user_id); |
|
564 | - $user_id = $account->boincuser_id; |
|
565 | - } |
|
566 | - require_boinc('boinc_db'); |
|
567 | - return BoincUser::lookup_id($user_id); |
|
557 | +if (!$user_id) { |
|
558 | +global $user; |
|
559 | +$user_id = $user->uid; |
|
560 | +$is_drupal_id = TRUE; |
|
561 | +} |
|
562 | +if ($is_drupal_id) { |
|
563 | +$account = user_load($user_id); |
|
564 | +$user_id = $account->boincuser_id; |
|
565 | +} |
|
566 | +require_boinc('boinc_db'); |
|
567 | +return BoincUser::lookup_id($user_id); |
|
568 | 568 | } |
569 | 569 | |
570 | 570 | /** |
@@ -574,10 +574,10 @@ discard block |
||
574 | 574 | * page, delete button. |
575 | 575 | */ |
576 | 576 | function _boincuser_node_profile_delete_submit($form, &$form_state) { |
577 | - $node = $form['#node']; |
|
578 | - $deleteurl = 'node/'. $node->nid .'/delete'; |
|
579 | - $afterq = 'destination=account'; |
|
580 | - drupal_goto($deleteurl, $afterq); |
|
577 | +$node = $form['#node']; |
|
578 | +$deleteurl = 'node/'. $node->nid .'/delete'; |
|
579 | +$afterq = 'destination=account'; |
|
580 | +drupal_goto($deleteurl, $afterq); |
|
581 | 581 | } |
582 | 582 | |
583 | 583 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -588,8 +588,8 @@ discard block |
||
588 | 588 | * Wrapper for boinc_version() function |
589 | 589 | */ |
590 | 590 | function get_boinc_version($x) { |
591 | - require_boinc('host'); |
|
592 | - return function_exists('boinc_version') ? boinc_version($x) : 'err!'; |
|
591 | +require_boinc('host'); |
|
592 | +return function_exists('boinc_version') ? boinc_version($x) : 'err!'; |
|
593 | 593 | } |
594 | 594 | |
595 | 595 | |
@@ -601,12 +601,12 @@ discard block |
||
601 | 601 | * Generate the friend block header |
602 | 602 | */ |
603 | 603 | function boincuser_views_friends_block_header($context = null) { |
604 | - // Get the friend count for the user being viewed |
|
605 | - $view = views_get_current_view(); |
|
606 | - $account_id = $view->args[0]; |
|
607 | - $friend_count = flag_friend_get_friend_count($account_id); |
|
608 | - return '<h2 class="pane-title">' . bts('Friends (@count)', |
|
609 | - array('@count' => $friend_count)) . '</h2>'; |
|
604 | +// Get the friend count for the user being viewed |
|
605 | +$view = views_get_current_view(); |
|
606 | +$account_id = $view->args[0]; |
|
607 | +$friend_count = flag_friend_get_friend_count($account_id); |
|
608 | +return '<h2 class="pane-title">' . bts('Friends (@count)', |
|
609 | +array('@count' => $friend_count)) . '</h2>'; |
|
610 | 610 | } |
611 | 611 | |
612 | 612 | /** |
@@ -614,13 +614,13 @@ discard block |
||
614 | 614 | * database. |
615 | 615 | */ |
616 | 616 | function _boincuser_user_name_autocomplete($string) { |
617 | - $matches = array(); |
|
618 | - db_set_active('boinc_ro'); |
|
619 | - $result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10); |
|
620 | - db_set_active('default'); |
|
621 | - while ($user = db_fetch_object($result)) { |
|
622 | - $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')'; |
|
623 | - } |
|
617 | +$matches = array(); |
|
618 | +db_set_active('boinc_ro'); |
|
619 | +$result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10); |
|
620 | +db_set_active('default'); |
|
621 | +while ($user = db_fetch_object($result)) { |
|
622 | + $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')'; |
|
623 | +} |
|
624 | 624 | |
625 | - drupal_json((object)$matches); |
|
625 | +drupal_json((object)$matches); |
|
626 | 626 | } |
@@ -16,59 +16,59 @@ |
||
16 | 16 | */ |
17 | 17 | |
18 | 18 | function boincuser_rules_event_info() { |
19 | - return array( |
|
20 | - 'boincuser_change_email_error' => array( |
|
21 | - 'label' => bts('Error from user changing e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
22 | - 'module' => 'Boincuser', |
|
23 | - 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
24 | - ), |
|
25 | - 'boincuser_revert_email_error' => array( |
|
26 | - 'label' => bts('Error from user reverting to previous e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
27 | - 'module' => 'Boincuser', |
|
28 | - 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
29 | - ), |
|
30 | - 'boincuser_general_consent_error' => array( |
|
31 | - 'label' => bts('Error from user consenting to terms-of-use.', array(), NULL, 'boinc:rule-event'), |
|
32 | - 'module' => 'Boincuser', |
|
33 | - 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
34 | - ), |
|
35 | - 'boincuser_general_consent_type_error' => array( |
|
36 | - 'label' => bts('Error dealing with missing consent type.', array(), NULL, 'boinc:rule-event'), |
|
37 | - 'module' => 'Boincuser', |
|
38 | - 'arguments' => rules_events_hook_boincuser_consenttype_argument(), |
|
39 | - ), |
|
40 | - ); |
|
19 | +return array( |
|
20 | +'boincuser_change_email_error' => array( |
|
21 | + 'label' => bts('Error from user changing e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
22 | + 'module' => 'Boincuser', |
|
23 | + 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
24 | +), |
|
25 | +'boincuser_revert_email_error' => array( |
|
26 | + 'label' => bts('Error from user reverting to previous e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
27 | + 'module' => 'Boincuser', |
|
28 | + 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
29 | +), |
|
30 | +'boincuser_general_consent_error' => array( |
|
31 | + 'label' => bts('Error from user consenting to terms-of-use.', array(), NULL, 'boinc:rule-event'), |
|
32 | + 'module' => 'Boincuser', |
|
33 | + 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
34 | +), |
|
35 | +'boincuser_general_consent_type_error' => array( |
|
36 | + 'label' => bts('Error dealing with missing consent type.', array(), NULL, 'boinc:rule-event'), |
|
37 | + 'module' => 'Boincuser', |
|
38 | + 'arguments' => rules_events_hook_boincuser_consenttype_argument(), |
|
39 | +), |
|
40 | +); |
|
41 | 41 | } |
42 | 42 | |
43 | 43 | /** |
44 | 44 | * Arguments suitable for boincuser |
45 | 45 | **/ |
46 | 46 | function rules_events_hook_boincuser_chemail_arguments() { |
47 | - return array( |
|
48 | - 'new_email_addr' => array( |
|
49 | - 'type' => 'string', |
|
50 | - 'label' => 'New email address', |
|
51 | - 'required' => TRUE, |
|
52 | - ), |
|
53 | - ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
47 | +return array( |
|
48 | +'new_email_addr' => array( |
|
49 | + 'type' => 'string', |
|
50 | + 'label' => 'New email address', |
|
51 | + 'required' => TRUE, |
|
52 | +), |
|
53 | +) + rules_events_hook_boincuser_adminnotify_argument(); |
|
54 | 54 | } |
55 | 55 | |
56 | 56 | function rules_events_hook_boincuser_consenttype_argument() { |
57 | - return array( |
|
58 | - 'consent_type' => array( |
|
59 | - 'type' => 'string', |
|
60 | - 'label' => 'Consent type id that caused the error', |
|
61 | - 'required' => TRUE, |
|
62 | - ), |
|
63 | - ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
57 | +return array( |
|
58 | +'consent_type' => array( |
|
59 | + 'type' => 'string', |
|
60 | + 'label' => 'Consent type id that caused the error', |
|
61 | + 'required' => TRUE, |
|
62 | +), |
|
63 | +) + rules_events_hook_boincuser_adminnotify_argument(); |
|
64 | 64 | } |
65 | 65 | |
66 | 66 | function rules_events_hook_boincuser_adminnotify_argument() { |
67 | - return array( |
|
68 | - 'subject_tag' => array( |
|
69 | - 'type' => 'string', |
|
70 | - 'label' => 'Subject tag for email filtering', |
|
71 | - 'required' => TRUE, |
|
72 | - ), |
|
73 | - ) + rules_events_global_user_argument(); |
|
67 | +return array( |
|
68 | +'subject_tag' => array( |
|
69 | + 'type' => 'string', |
|
70 | + 'label' => 'Subject tag for email filtering', |
|
71 | + 'required' => TRUE, |
|
72 | +), |
|
73 | +) + rules_events_global_user_argument(); |
|
74 | 74 | } |
75 | 75 | \ No newline at end of file |
@@ -15,59 +15,59 @@ discard block |
||
15 | 15 | * Form validation handler for login |
16 | 16 | */ |
17 | 17 | function boincuser_login_validate($form, &$form_state) { |
18 | - /* // SAMPLE: To try validation with Drupal first... |
|
18 | +/* // SAMPLE: To try validation with Drupal first... |
|
19 | 19 | global $user; |
20 | 20 | if (!empty($user->uid)) { |
21 | 21 | // Authentication with Drupal was successful |
22 | 22 | return; |
23 | 23 | }*/ |
24 | 24 | |
25 | - // Set name for logging purposes |
|
26 | - $form_state['values']['name'] = $form_state['values']['email']; |
|
25 | +// Set name for logging purposes |
|
26 | +$form_state['values']['name'] = $form_state['values']['email']; |
|
27 | 27 | |
28 | - // Bypass BOINC validation if passed the name of user 1 |
|
29 | - $user_1 = user_load(1); |
|
30 | - if ($form_state['values']['email'] == $user_1->name) { |
|
31 | - user_authenticate($form_state['values']); |
|
32 | - return; |
|
33 | - } |
|
28 | +// Bypass BOINC validation if passed the name of user 1 |
|
29 | +$user_1 = user_load(1); |
|
30 | +if ($form_state['values']['email'] == $user_1->name) { |
|
31 | +user_authenticate($form_state['values']); |
|
32 | +return; |
|
33 | +} |
|
34 | 34 | |
35 | - // Call our custom authentication function to check for an existing BOINC user |
|
36 | - if (!boincuser_login_authenticate($form_state['values'])) { |
|
37 | - // Authentication failed; set an error accordingly |
|
38 | - form_set_error('name', bts('Sorry, unrecognized email address or password.', array(), NULL, 'boinc:forgot-password') . ' ' . l(bts('Have you forgotten your password?', array(), NULL, 'boinc:forgot-password'), 'user/password')); |
|
39 | - } |
|
35 | +// Call our custom authentication function to check for an existing BOINC user |
|
36 | +if (!boincuser_login_authenticate($form_state['values'])) { |
|
37 | +// Authentication failed; set an error accordingly |
|
38 | +form_set_error('name', bts('Sorry, unrecognized email address or password.', array(), NULL, 'boinc:forgot-password') . ' ' . l(bts('Have you forgotten your password?', array(), NULL, 'boinc:forgot-password'), 'user/password')); |
|
39 | +} |
|
40 | 40 | } |
41 | 41 | |
42 | 42 | /** |
43 | 43 | * Custom authentication function to check BOINC account information |
44 | 44 | */ |
45 | 45 | function boincuser_login_authenticate($form_values) { |
46 | - global $boincuser_authenticated; |
|
47 | - $lower_email_addr = strtolower($form_values['email']); |
|
48 | - $passwd = $form_values['pass']; |
|
49 | - $passwd_hash = md5($passwd.$lower_email_addr); |
|
46 | +global $boincuser_authenticated; |
|
47 | +$lower_email_addr = strtolower($form_values['email']); |
|
48 | +$passwd = $form_values['pass']; |
|
49 | +$passwd_hash = md5($passwd.$lower_email_addr); |
|
50 | 50 | |
51 | - // Include BOINC user library |
|
52 | - require_boinc('boinc_db'); |
|
53 | - require_boinc('user_util'); |
|
51 | +// Include BOINC user library |
|
52 | +require_boinc('boinc_db'); |
|
53 | +require_boinc('user_util'); |
|
54 | 54 | |
55 | - // Get the BOINC user and check credentials |
|
56 | - $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
57 | - if (!$boinc_user) return false; |
|
55 | +// Get the BOINC user and check credentials |
|
56 | +$boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
57 | +if (!$boinc_user) return false; |
|
58 | 58 | |
59 | - if (!check_passwd_hash($boinc_user, $passwd_hash)) { |
|
60 | - return false; |
|
61 | - } |
|
59 | +if (!check_passwd_hash($boinc_user, $passwd_hash)) { |
|
60 | +return false; |
|
61 | +} |
|
62 | 62 | |
63 | - // BOINC authentication successful; log in and synchronize accounts |
|
64 | - boincuser_login_register($boinc_user); |
|
65 | - // Write session, update timestamp, run user 'login' hook. |
|
66 | - user_authenticate_finalize($form_values); |
|
67 | - // Use a global variable to save the fact that we did authentication. |
|
68 | - $boincuser_authenticated = true; |
|
63 | +// BOINC authentication successful; log in and synchronize accounts |
|
64 | +boincuser_login_register($boinc_user); |
|
65 | +// Write session, update timestamp, run user 'login' hook. |
|
66 | +user_authenticate_finalize($form_values); |
|
67 | +// Use a global variable to save the fact that we did authentication. |
|
68 | +$boincuser_authenticated = true; |
|
69 | 69 | |
70 | - return true; |
|
70 | +return true; |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -75,18 +75,18 @@ discard block |
||
75 | 75 | * Drupal accounts |
76 | 76 | */ |
77 | 77 | function boincuser_login_register($boinc_user) { |
78 | - global $user; |
|
79 | - require_boinc('boinc_db'); |
|
80 | - // If a Drupal account already exists, log in |
|
81 | - $existing_user = user_load(array('mail' => $boinc_user->email_addr)); |
|
82 | - if (!empty($existing_user->uid)) { |
|
83 | - $user = $existing_user; |
|
84 | - } else { |
|
85 | - // Create a Drupal user from the BOINC user |
|
86 | - if ($user = boincuser_register_make_drupal_user($boinc_user)) { |
|
87 | - watchdog('user', 'New external user: %email using module %module.', array('%email' => $email_addr, '%module' => $module), WATCHDOG_NOTICE, l(t('edit'), 'user/'. $user->uid .'/edit')); |
|
88 | - } |
|
89 | - } |
|
78 | +global $user; |
|
79 | +require_boinc('boinc_db'); |
|
80 | +// If a Drupal account already exists, log in |
|
81 | +$existing_user = user_load(array('mail' => $boinc_user->email_addr)); |
|
82 | +if (!empty($existing_user->uid)) { |
|
83 | +$user = $existing_user; |
|
84 | +} else { |
|
85 | +// Create a Drupal user from the BOINC user |
|
86 | +if ($user = boincuser_register_make_drupal_user($boinc_user)) { |
|
87 | + watchdog('user', 'New external user: %email using module %module.', array('%email' => $email_addr, '%module' => $module), WATCHDOG_NOTICE, l(t('edit'), 'user/'. $user->uid .'/edit')); |
|
88 | +} |
|
89 | +} |
|
90 | 90 | } |
91 | 91 | |
92 | 92 | |
@@ -98,279 +98,279 @@ discard block |
||
98 | 98 | * New user registration validation handler. |
99 | 99 | */ |
100 | 100 | function boincuser_register_validate($form, &$form_state) { |
101 | - // Include BOINC database objects library |
|
102 | - require_boinc('boinc_db'); |
|
103 | - |
|
104 | - // Check terms of use agreement |
|
105 | - $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
106 | - if (!empty($termsofuse)) { |
|
107 | - if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
108 | - form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', NULL, 'boinc:register-new-user')); |
|
109 | - return false; |
|
110 | - } |
|
111 | - } |
|
101 | +// Include BOINC database objects library |
|
102 | +require_boinc('boinc_db'); |
|
103 | + |
|
104 | +// Check terms of use agreement |
|
105 | +$termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
106 | +if (!empty($termsofuse)) { |
|
107 | +if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
108 | + form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', NULL, 'boinc:register-new-user')); |
|
109 | + return false; |
|
110 | +} |
|
111 | +} |
|
112 | 112 | |
113 | - // Lower-case the email address |
|
114 | - $lower_email_addr = strtolower($form_state['values']['mail']); |
|
115 | - $tmp_user = BoincUser::lookup_prev_email_addr($lower_email_addr); |
|
116 | - if ($tmp_user) { |
|
117 | - // User already exists |
|
118 | - rules_invoke_event('boincuser_change_email_error', $lower_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
119 | - form_set_error('mail', |
|
120 | - bts('An account already exists for @email. The @project administrators have been notified.', |
|
121 | - array( |
|
122 | - '@email' => $lower_email_addr, |
|
123 | - '@project' => variable_get('site_name', 'Drupal-BOINC') |
|
124 | - ), NULL, 'boinc:register-new-user') |
|
125 | - ); |
|
126 | - } |
|
113 | +// Lower-case the email address |
|
114 | +$lower_email_addr = strtolower($form_state['values']['mail']); |
|
115 | +$tmp_user = BoincUser::lookup_prev_email_addr($lower_email_addr); |
|
116 | +if ($tmp_user) { |
|
117 | +// User already exists |
|
118 | +rules_invoke_event('boincuser_change_email_error', $lower_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
119 | +form_set_error('mail', |
|
120 | + bts('An account already exists for @email. The @project administrators have been notified.', |
|
121 | + array( |
|
122 | + '@email' => $lower_email_addr, |
|
123 | + '@project' => variable_get('site_name', 'Drupal-BOINC') |
|
124 | + ), NULL, 'boinc:register-new-user') |
|
125 | +); |
|
126 | +} |
|
127 | 127 | |
128 | - // Check for an existing BOINC user |
|
129 | - // This is somewhat redundent as Drupal will also check if the email |
|
130 | - // is a duplicate. However, in the case where there is no Drupal |
|
131 | - // account, but a BOINC account exists with this email, the check |
|
132 | - // will fail. |
|
133 | - $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
134 | - if ($boinc_user) { |
|
135 | - // User already exists |
|
136 | - form_set_error('mail', bts('An account already exists for @email. Log in or request password assistance to access your @project account.', array('@email' => $lower_email_addr, '@project' => PROJECT), NULL, 'boinc:add-new-user')); |
|
137 | - return false; |
|
138 | - } |
|
128 | +// Check for an existing BOINC user |
|
129 | +// This is somewhat redundent as Drupal will also check if the email |
|
130 | +// is a duplicate. However, in the case where there is no Drupal |
|
131 | +// account, but a BOINC account exists with this email, the check |
|
132 | +// will fail. |
|
133 | +$boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
134 | +if ($boinc_user) { |
|
135 | +// User already exists |
|
136 | +form_set_error('mail', bts('An account already exists for @email. Log in or request password assistance to access your @project account.', array('@email' => $lower_email_addr, '@project' => PROJECT), NULL, 'boinc:add-new-user')); |
|
137 | +return false; |
|
138 | +} |
|
139 | 139 | |
140 | - // Check Drupal name is not a duplicate, and create a proper drupal |
|
141 | - // name from the boinc username. |
|
142 | - $form_state['values']['name'] = create_proper_drupalname($form_state['values']['boincuser_name']); |
|
140 | +// Check Drupal name is not a duplicate, and create a proper drupal |
|
141 | +// name from the boinc username. |
|
142 | +$form_state['values']['name'] = create_proper_drupalname($form_state['values']['boincuser_name']); |
|
143 | 143 | |
144 | - return true; |
|
144 | +return true; |
|
145 | 145 | } |
146 | 146 | |
147 | 147 | /** |
148 | 148 | * Create BOINC account |
149 | 149 | */ |
150 | 150 | function boincuser_register_make_user($params) { |
151 | - // Include BOINC user library |
|
152 | - require_boinc('user_util'); |
|
153 | - // Create the BOINC user |
|
154 | - $boinc_user = make_user($params['email_addr'], $params['name'], $params['passwd_hash'], $params['country'], $params['postal_code']); |
|
155 | - return $boinc_user; |
|
151 | +// Include BOINC user library |
|
152 | +require_boinc('user_util'); |
|
153 | +// Create the BOINC user |
|
154 | +$boinc_user = make_user($params['email_addr'], $params['name'], $params['passwd_hash'], $params['country'], $params['postal_code']); |
|
155 | +return $boinc_user; |
|
156 | 156 | } |
157 | 157 | |
158 | 158 | /** |
159 | 159 | * Create Drupal account from existing BOINC account |
160 | 160 | */ |
161 | 161 | function boincuser_register_make_drupal_user($boinc_user) { |
162 | - $account = null; |
|
163 | - if (is_numeric($boinc_user)) { |
|
164 | - $boinc_user = boincuser_load($boinc_user); |
|
165 | - } |
|
166 | - if ($boinc_user) { |
|
167 | - $account = boincuser_create_drupal_user($boinc_user); |
|
168 | - if ($account) { |
|
169 | - boincuser_create_drupal_profile($account, $boinc_user); |
|
170 | - } |
|
171 | - } |
|
172 | - return $account; |
|
162 | +$account = null; |
|
163 | +if (is_numeric($boinc_user)) { |
|
164 | +$boinc_user = boincuser_load($boinc_user); |
|
165 | +} |
|
166 | +if ($boinc_user) { |
|
167 | +$account = boincuser_create_drupal_user($boinc_user); |
|
168 | +if ($account) { |
|
169 | + boincuser_create_drupal_profile($account, $boinc_user); |
|
170 | +} |
|
171 | +} |
|
172 | +return $account; |
|
173 | 173 | } |
174 | 174 | |
175 | 175 | function boincuser_create_drupal_user($boinc_user) { |
176 | - require_boinc('forum_db'); |
|
177 | - BoincForumPrefs::lookup($boinc_user); |
|
178 | - $account = NULL; |
|
179 | - $module = 'boincuser'; |
|
176 | +require_boinc('forum_db'); |
|
177 | +BoincForumPrefs::lookup($boinc_user); |
|
178 | +$account = NULL; |
|
179 | +$module = 'boincuser'; |
|
180 | 180 | |
181 | - // Verify that this account has not already been imported |
|
182 | - $already_imported = db_result(db_query(' |
|
181 | +// Verify that this account has not already been imported |
|
182 | +$already_imported = db_result(db_query(' |
|
183 | 183 | SELECT COUNT(*) FROM {boincuser} WHERE boinc_id = %d', |
184 | - $boinc_user->id) |
|
185 | - ); |
|
186 | - if ($already_imported) { |
|
187 | - return NULL; |
|
188 | - } |
|
184 | +$boinc_user->id) |
|
185 | +); |
|
186 | +if ($already_imported) { |
|
187 | +return NULL; |
|
188 | +} |
|
189 | 189 | |
190 | - // Email is limited to 64 characters... |
|
191 | - $boinc_email = substr($boinc_user->email_addr, 0, 64); |
|
190 | +// Email is limited to 64 characters... |
|
191 | +$boinc_email = substr($boinc_user->email_addr, 0, 64); |
|
192 | 192 | |
193 | - // Email should be unique |
|
194 | - $already_imported = db_result(db_query(" |
|
193 | +// Email should be unique |
|
194 | +$already_imported = db_result(db_query(" |
|
195 | 195 | SELECT COUNT(*) FROM {users} WHERE mail = '%s'", |
196 | - $boinc_email) |
|
197 | - ); |
|
198 | - if ($already_imported) { |
|
199 | - drupal_set_message(t('An account for @email already exists', array('@email' => $boinc_email)), 'warning'); |
|
200 | - watchdog('boincimport', 'An account for @email already exists', array('@email' => $boinc_email), WATCHDOG_WARNING); |
|
201 | - return NULL; |
|
202 | - } |
|
203 | - |
|
204 | - // Make sure name is unique |
|
205 | - $unique_name = create_proper_drupalname($boinc_user->name); |
|
206 | - |
|
207 | - $userinfo = array( |
|
208 | - 'name' => $unique_name, |
|
209 | - 'pass' => $boinc_user->passwd_hash, |
|
210 | - 'mail' => $boinc_email, |
|
211 | - 'signature' => $boinc_user->prefs->signature, |
|
212 | - 'created' => $boinc_user->create_time, |
|
213 | - 'init' => $boinc_email, |
|
214 | - 'status' => 1, |
|
215 | - "authname_{$module}" => $boinc_email, |
|
216 | - 'access' => time() |
|
217 | - ); |
|
218 | - |
|
219 | - $in_penalty = ($boinc_user->prefs->banished_until > time()); |
|
196 | +$boinc_email) |
|
197 | +); |
|
198 | +if ($already_imported) { |
|
199 | +drupal_set_message(t('An account for @email already exists', array('@email' => $boinc_email)), 'warning'); |
|
200 | +watchdog('boincimport', 'An account for @email already exists', array('@email' => $boinc_email), WATCHDOG_WARNING); |
|
201 | +return NULL; |
|
202 | +} |
|
220 | 203 | |
221 | - // Add user to community member role (if no current penalty) |
|
222 | - if (!$in_penalty) { |
|
223 | - $community_role = array_search('community member', user_roles(true)); |
|
224 | - $userinfo['roles'] = array( |
|
225 | - $community_role => '' |
|
226 | - ); |
|
227 | - } |
|
204 | +// Make sure name is unique |
|
205 | +$unique_name = create_proper_drupalname($boinc_user->name); |
|
206 | + |
|
207 | +$userinfo = array( |
|
208 | +'name' => $unique_name, |
|
209 | +'pass' => $boinc_user->passwd_hash, |
|
210 | +'mail' => $boinc_email, |
|
211 | +'signature' => $boinc_user->prefs->signature, |
|
212 | +'created' => $boinc_user->create_time, |
|
213 | +'init' => $boinc_email, |
|
214 | +'status' => 1, |
|
215 | +"authname_{$module}" => $boinc_email, |
|
216 | +'access' => time() |
|
217 | +); |
|
218 | + |
|
219 | +$in_penalty = ($boinc_user->prefs->banished_until > time()); |
|
220 | + |
|
221 | +// Add user to community member role (if no current penalty) |
|
222 | +if (!$in_penalty) { |
|
223 | +$community_role = array_search('community member', user_roles(true)); |
|
224 | +$userinfo['roles'] = array( |
|
225 | + $community_role => '' |
|
226 | +); |
|
227 | +} |
|
228 | 228 | |
229 | - // Mark account as imported so a BOINC account is not created on Insert (i.e. user_save) |
|
230 | - $_SESSION['importedUser'] = true; |
|
231 | - $account = user_save('', $userinfo); |
|
229 | +// Mark account as imported so a BOINC account is not created on Insert (i.e. user_save) |
|
230 | +$_SESSION['importedUser'] = true; |
|
231 | +$account = user_save('', $userinfo); |
|
232 | 232 | |
233 | - // Drupal overrides the original registration date, so update to the correct date |
|
234 | - $account = user_save($account, array('created' => $userinfo['created'])); |
|
233 | +// Drupal overrides the original registration date, so update to the correct date |
|
234 | +$account = user_save($account, array('created' => $userinfo['created'])); |
|
235 | 235 | |
236 | - // Terminate if an error occured during user_save(). |
|
237 | - if (!$account) { |
|
238 | - drupal_set_message(t("Error saving user account."), 'error'); |
|
239 | - return NULL; |
|
240 | - } |
|
236 | +// Terminate if an error occured during user_save(). |
|
237 | +if (!$account) { |
|
238 | +drupal_set_message(t("Error saving user account."), 'error'); |
|
239 | +return NULL; |
|
240 | +} |
|
241 | 241 | |
242 | - // Cross reference the Drupal and BOINC accounts |
|
243 | - boincuser_account_cross_reference($account->uid, $boinc_user->id); |
|
242 | +// Cross reference the Drupal and BOINC accounts |
|
243 | +boincuser_account_cross_reference($account->uid, $boinc_user->id); |
|
244 | 244 | |
245 | - if ($in_penalty) { |
|
246 | - // Import the timestamp of when the penalty period will be over |
|
247 | - $boincuser_record = array( |
|
248 | - 'uid' => $account->uid, |
|
249 | - 'penalty_expiration' => $boinc_user->prefs->banished_until, |
|
250 | - ); |
|
251 | - drupal_write_record('boincuser', $boincuser_record, 'uid'); |
|
252 | - } |
|
245 | +if ($in_penalty) { |
|
246 | +// Import the timestamp of when the penalty period will be over |
|
247 | +$boincuser_record = array( |
|
248 | + 'uid' => $account->uid, |
|
249 | + 'penalty_expiration' => $boinc_user->prefs->banished_until, |
|
250 | +); |
|
251 | +drupal_write_record('boincuser', $boincuser_record, 'uid'); |
|
252 | +} |
|
253 | 253 | |
254 | - return $account; |
|
254 | +return $account; |
|
255 | 255 | } |
256 | 256 | |
257 | 257 | function boincuser_create_drupal_profile($account, $boinc_user) { |
258 | 258 | |
259 | - require_boinc('forum_db'); |
|
260 | - BoincForumPrefs::lookup($boinc_user); |
|
261 | - |
|
262 | - $image_dir = boinc_get_path('user_image'); |
|
263 | - |
|
264 | - // Automatically create a content profile |
|
265 | - $now = time(); |
|
266 | - $profile_background = null; |
|
267 | - $profile_opinions = null; |
|
268 | - $profile_image = null; |
|
269 | - $avatar_image = null; |
|
270 | - $profile_approved = NULL; |
|
271 | - |
|
272 | - // Load the BOINC profile, if available |
|
273 | - if ($boinc_user->has_profile) { |
|
274 | - $boinc_profile = BoincProfile::lookup("userid={$boinc_user->id}"); |
|
275 | - $profile_background = $boinc_profile->response1; |
|
276 | - $profile_opinions = $boinc_profile->response2; |
|
277 | - if ($boinc_profile->has_picture) { |
|
278 | - // Load picture; load validators; determine where to store it in Drupal |
|
279 | - $image_path = "{$image_dir}/{$boinc_user->id}.jpg"; |
|
280 | - $profile_image = get_cck_image_object($image_path, 'field_profile_image', 'profile', TRUE); |
|
281 | - // If the user does not have a different image as an avatar, use this one |
|
282 | - if (!$boinc_user->prefs->avatar) { |
|
283 | - $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
284 | - } |
|
285 | - } |
|
286 | - if ($boinc_user->prefs->avatar) { |
|
287 | - $image_path = "{$image_dir}/{$boinc_user->id}_avatar.jpg"; |
|
288 | - $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
289 | - } |
|
290 | - $profile_approved = $boinc_profile->verification ? TRUE : FALSE; |
|
259 | +require_boinc('forum_db'); |
|
260 | +BoincForumPrefs::lookup($boinc_user); |
|
261 | + |
|
262 | +$image_dir = boinc_get_path('user_image'); |
|
263 | + |
|
264 | +// Automatically create a content profile |
|
265 | +$now = time(); |
|
266 | +$profile_background = null; |
|
267 | +$profile_opinions = null; |
|
268 | +$profile_image = null; |
|
269 | +$avatar_image = null; |
|
270 | +$profile_approved = NULL; |
|
271 | + |
|
272 | +// Load the BOINC profile, if available |
|
273 | +if ($boinc_user->has_profile) { |
|
274 | +$boinc_profile = BoincProfile::lookup("userid={$boinc_user->id}"); |
|
275 | +$profile_background = $boinc_profile->response1; |
|
276 | +$profile_opinions = $boinc_profile->response2; |
|
277 | +if ($boinc_profile->has_picture) { |
|
278 | + // Load picture; load validators; determine where to store it in Drupal |
|
279 | + $image_path = "{$image_dir}/{$boinc_user->id}.jpg"; |
|
280 | + $profile_image = get_cck_image_object($image_path, 'field_profile_image', 'profile', TRUE); |
|
281 | + // If the user does not have a different image as an avatar, use this one |
|
282 | + if (!$boinc_user->prefs->avatar) { |
|
283 | + $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
291 | 284 | } |
292 | - $default_input_format = db_result(db_query(" |
|
285 | +} |
|
286 | +if ($boinc_user->prefs->avatar) { |
|
287 | + $image_path = "{$image_dir}/{$boinc_user->id}_avatar.jpg"; |
|
288 | + $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
289 | +} |
|
290 | +$profile_approved = $boinc_profile->verification ? TRUE : FALSE; |
|
291 | +} |
|
292 | +$default_input_format = db_result(db_query(" |
|
293 | 293 | SELECT format FROM {filter_formats} WHERE name = '%s'", 'Rich text')); |
294 | - if (!$default_input_format) $default_input_format = 1; |
|
295 | - |
|
296 | - // Populate the profile object |
|
297 | - $profile_node = new stdClass(); |
|
298 | - $profile_node->title = $boinc_user->name; |
|
299 | - $profile_node->uid = $account->uid; |
|
300 | - $profile_node->body = ''; |
|
301 | - $profile_node->type = 'profile'; |
|
302 | - $profile_node->created = $now; |
|
303 | - $profile_node->changed = $now; |
|
304 | - $profile_node->status = 1; |
|
305 | - $profile_node->promote = 0; |
|
306 | - $profile_node->sticky = 0; |
|
307 | - $profile_node->format = $default_input_format; |
|
308 | - $profile_node->name = $account->name; // Set to link profile to account uid! |
|
309 | - $profile_node->field_country[]['value'] = $boinc_user->country; |
|
310 | - $profile_node->field_zip[]['value'] = $boinc_user->postal_code; |
|
311 | - $profile_node->field_url[]['value'] = $boinc_user->url; |
|
312 | - $profile_node->field_background[]['value'] = $profile_background; |
|
313 | - $profile_node->field_opinions[]['value'] = $profile_opinions; |
|
314 | - $profile_node->field_image[] = $avatar_image; |
|
315 | - $profile_node->field_profile_image[] = $profile_image; |
|
316 | - |
|
317 | - // Save the profile object to the database |
|
318 | - // This will automatically set the author uid if node->name has been set |
|
319 | - $profile_node = node_submit($profile_node); |
|
320 | - node_save($profile_node); |
|
321 | - |
|
322 | - // Mark profile as approved if it has already been vetted somehow |
|
323 | - if ($profile_approved OR !$boinc_user->has_profile) { |
|
324 | - $profile_node->moderate = 0; |
|
325 | - node_save($profile_node); |
|
326 | - } |
|
294 | +if (!$default_input_format) $default_input_format = 1; |
|
295 | + |
|
296 | +// Populate the profile object |
|
297 | +$profile_node = new stdClass(); |
|
298 | +$profile_node->title = $boinc_user->name; |
|
299 | +$profile_node->uid = $account->uid; |
|
300 | +$profile_node->body = ''; |
|
301 | +$profile_node->type = 'profile'; |
|
302 | +$profile_node->created = $now; |
|
303 | +$profile_node->changed = $now; |
|
304 | +$profile_node->status = 1; |
|
305 | +$profile_node->promote = 0; |
|
306 | +$profile_node->sticky = 0; |
|
307 | +$profile_node->format = $default_input_format; |
|
308 | +$profile_node->name = $account->name; // Set to link profile to account uid! |
|
309 | +$profile_node->field_country[]['value'] = $boinc_user->country; |
|
310 | +$profile_node->field_zip[]['value'] = $boinc_user->postal_code; |
|
311 | +$profile_node->field_url[]['value'] = $boinc_user->url; |
|
312 | +$profile_node->field_background[]['value'] = $profile_background; |
|
313 | +$profile_node->field_opinions[]['value'] = $profile_opinions; |
|
314 | +$profile_node->field_image[] = $avatar_image; |
|
315 | +$profile_node->field_profile_image[] = $profile_image; |
|
316 | + |
|
317 | +// Save the profile object to the database |
|
318 | +// This will automatically set the author uid if node->name has been set |
|
319 | +$profile_node = node_submit($profile_node); |
|
320 | +node_save($profile_node); |
|
321 | + |
|
322 | +// Mark profile as approved if it has already been vetted somehow |
|
323 | +if ($profile_approved OR !$boinc_user->has_profile) { |
|
324 | +$profile_node->moderate = 0; |
|
325 | +node_save($profile_node); |
|
326 | +} |
|
327 | 327 | |
328 | - return; |
|
328 | +return; |
|
329 | 329 | } |
330 | 330 | |
331 | 331 | function boincuser_account_cross_reference($uid, $boinc_id) { |
332 | - // Cross reference Drupal account with BOINC |
|
333 | - $reference = db_query("INSERT INTO {boincuser} SET uid=%d, boinc_id=%d", $uid, $boinc_id); |
|
334 | - if (!$reference) { |
|
335 | - drupal_set_message(t("Error connecting BOINC account."), 'error'); |
|
336 | - return false; |
|
337 | - } |
|
338 | - return true; |
|
332 | +// Cross reference Drupal account with BOINC |
|
333 | +$reference = db_query("INSERT INTO {boincuser} SET uid=%d, boinc_id=%d", $uid, $boinc_id); |
|
334 | +if (!$reference) { |
|
335 | + drupal_set_message(t("Error connecting BOINC account."), 'error'); |
|
336 | + return false; |
|
337 | +} |
|
338 | +return true; |
|
339 | 339 | } |
340 | 340 | |
341 | 341 | /** |
342 | 342 | * Convert any BOINC forum thread subscriptions to Drupal flag subscriptions |
343 | 343 | */ |
344 | 344 | function boincuser_pull_subscriptions($account = NULL) { |
345 | - if (!$account) { |
|
346 | - global $user; |
|
347 | - $account = user_load($user->id); |
|
348 | - } |
|
349 | - elseif (is_numeric($account)) { |
|
350 | - $account = user_load($account); |
|
351 | - } |
|
345 | +if (!$account) { |
|
346 | +global $user; |
|
347 | +$account = user_load($user->id); |
|
348 | +} |
|
349 | +elseif (is_numeric($account)) { |
|
350 | +$account = user_load($account); |
|
351 | +} |
|
352 | 352 | |
353 | - // Get any subscriptions for this user |
|
354 | - db_set_active('boinc_rw'); |
|
355 | - $subscriptions = db_query(' |
|
353 | +// Get any subscriptions for this user |
|
354 | +db_set_active('boinc_rw'); |
|
355 | +$subscriptions = db_query(' |
|
356 | 356 | SELECT threadid FROM {subscriptions} |
357 | 357 | WHERE userid = %d', $account->boincuser_id); |
358 | - db_set_active('default'); |
|
358 | +db_set_active('default'); |
|
359 | 359 | |
360 | - $flag = flag_get_flag('subscriptions') or die('no "subscriptions" flag defined'); |
|
361 | - $count = 0; |
|
362 | - while ($thread_id = db_result($subscriptions)) { |
|
363 | - // For each BOINC thread ID subscribed, look up the corresponding node ID |
|
364 | - $nid = db_result(db_query(' |
|
360 | +$flag = flag_get_flag('subscriptions') or die('no "subscriptions" flag defined'); |
|
361 | +$count = 0; |
|
362 | +while ($thread_id = db_result($subscriptions)) { |
|
363 | +// For each BOINC thread ID subscribed, look up the corresponding node ID |
|
364 | +$nid = db_result(db_query(' |
|
365 | 365 | SELECT nid FROM {boincimport_temp_topic} |
366 | 366 | WHERE topic_id = %d', $thread_id)); |
367 | - // Flag this node for the user |
|
368 | - if ($nid > 0) { |
|
369 | - $flag->flag('flag', $nid, $account); |
|
370 | - $count++; |
|
371 | - } |
|
372 | - } |
|
373 | - return $count; |
|
367 | +// Flag this node for the user |
|
368 | +if ($nid > 0) { |
|
369 | + $flag->flag('flag', $nid, $account); |
|
370 | + $count++; |
|
371 | +} |
|
372 | +} |
|
373 | +return $count; |
|
374 | 374 | } |
375 | 375 | |
376 | 376 | |
@@ -382,66 +382,66 @@ discard block |
||
382 | 382 | * User account update validation handler. |
383 | 383 | */ |
384 | 384 | function boincuser_account_validate($edit, $account) { |
385 | - // Include BOINC database objects library, load BOINC account data |
|
386 | - require_boinc('boinc_db'); |
|
387 | - $boinc_user = BoincUser::lookup_email_addr($account->mail); |
|
388 | - $changing_email = ($edit['mail'] AND $edit['mail'] != $account->mail) ? true : false; |
|
389 | - $changing_pass = ($edit['pass']) ? true : false; |
|
390 | - if ($changing_email) { |
|
391 | - // E-mail address is set to change; check for an existing BOINC user |
|
392 | - // Check previous email addresses as well, this user's current |
|
393 | - // email cannot be the same as another user's previous email |
|
394 | - // address. |
|
395 | - |
|
396 | - // set email address lower-case |
|
397 | - $edit['mail'] = strtolower($edit['mail']); |
|
398 | - |
|
399 | - $boinc_user_already_exists = ( BoincUser::lookup_email_addr($edit['mail']) || BoincUser::lookup_prev_email_addr($edit['mail']) ); |
|
400 | - if ($boinc_user_already_exists) { |
|
401 | - form_set_error('mail', bts('A BOINC account already exists for @email.', array('@email' => $edit['mail']), NULL, 'boinc:add-new-user')); |
|
402 | - } |
|
403 | - |
|
404 | - // Check email has not been changed in last X days (default X=7). |
|
405 | - $duration = 86400 * 7; |
|
406 | - if ( (($boinc_user->email_addr_change_time + $duration) > time()) and (!(user_access('administer users'))) ) { |
|
407 | - form_set_error('email_addr_change_time', |
|
408 | - bts('Your email address was changed within the past seven (7) days. You must wait until !futuredate to change your email again. If you need to reverse this change, please look for an email sent to !prev_email_addr.', |
|
409 | - array( |
|
410 | - '!futuredate' => date('F j, Y \a\t H:i T', $boinc_user->email_addr_change_time + $duration), |
|
411 | - '!prev_email_addr' => $boinc_user->previous_email_addr, |
|
412 | - ), |
|
413 | - NULL, 'boinc:account-credentials-change') |
|
414 | - ); |
|
415 | - } |
|
416 | - } |
|
385 | +// Include BOINC database objects library, load BOINC account data |
|
386 | +require_boinc('boinc_db'); |
|
387 | +$boinc_user = BoincUser::lookup_email_addr($account->mail); |
|
388 | +$changing_email = ($edit['mail'] AND $edit['mail'] != $account->mail) ? true : false; |
|
389 | +$changing_pass = ($edit['pass']) ? true : false; |
|
390 | +if ($changing_email) { |
|
391 | +// E-mail address is set to change; check for an existing BOINC user |
|
392 | +// Check previous email addresses as well, this user's current |
|
393 | +// email cannot be the same as another user's previous email |
|
394 | +// address. |
|
395 | + |
|
396 | +// set email address lower-case |
|
397 | +$edit['mail'] = strtolower($edit['mail']); |
|
398 | + |
|
399 | +$boinc_user_already_exists = ( BoincUser::lookup_email_addr($edit['mail']) || BoincUser::lookup_prev_email_addr($edit['mail']) ); |
|
400 | +if ($boinc_user_already_exists) { |
|
401 | + form_set_error('mail', bts('A BOINC account already exists for @email.', array('@email' => $edit['mail']), NULL, 'boinc:add-new-user')); |
|
402 | +} |
|
417 | 403 | |
418 | - // If user is changing email or password, require that the current |
|
419 | - // password has been given as well. |
|
420 | - if (($changing_email OR $changing_pass) AND !user_access('administer users')) { |
|
421 | - // If changing email or password, require current password |
|
422 | - // (except in cases where password is being reset) |
|
423 | - if (isset($_SESSION['reset_pass'])) { |
|
424 | - unset($_SESSION['reset_pass']); |
|
425 | - } |
|
426 | - else { |
|
427 | - $given_hash = md5($edit['current_pass'] . strtolower($account->mail)); |
|
428 | - if (!$edit['current_pass']) { |
|
429 | - form_set_error('current_pass', bts('Authentication is required when changing E-mail address or setting new password.', array(), NULL, 'boinc:account-credentials-change')); |
|
430 | - } |
|
431 | - elseif ( (!password_verify($given_hash, $boinc_user->passwd_hash)) and ($given_hash != $boinc_user->passwd_hash) ) { |
|
432 | - form_set_error('current_pass', bts('Password entered is not valid. Please verify that it is correct.', array(), NULL, 'boinc:account-credentials-change')); |
|
433 | - } |
|
434 | - |
|
435 | - } |
|
436 | - } |
|
404 | +// Check email has not been changed in last X days (default X=7). |
|
405 | +$duration = 86400 * 7; |
|
406 | +if ( (($boinc_user->email_addr_change_time + $duration) > time()) and (!(user_access('administer users'))) ) { |
|
407 | + form_set_error('email_addr_change_time', |
|
408 | + bts('Your email address was changed within the past seven (7) days. You must wait until !futuredate to change your email again. If you need to reverse this change, please look for an email sent to !prev_email_addr.', |
|
409 | + array( |
|
410 | + '!futuredate' => date('F j, Y \a\t H:i T', $boinc_user->email_addr_change_time + $duration), |
|
411 | + '!prev_email_addr' => $boinc_user->previous_email_addr, |
|
412 | + ), |
|
413 | + NULL, 'boinc:account-credentials-change') |
|
414 | + ); |
|
415 | +} |
|
416 | +} |
|
437 | 417 | |
438 | - // If an admin tries to change the email and NOT the password, show |
|
439 | - // error message. BOINC requires both to be changed together. |
|
440 | - if ($changing_email AND !$changing_pass AND user_access('administer users')) { |
|
441 | - form_set_error('pass', bts('If changing a user\'s email, you must also change the password simultaneously.', array(), NULL, 'boinc:account-credentials-change')); |
|
418 | +// If user is changing email or password, require that the current |
|
419 | +// password has been given as well. |
|
420 | +if (($changing_email OR $changing_pass) AND !user_access('administer users')) { |
|
421 | +// If changing email or password, require current password |
|
422 | +// (except in cases where password is being reset) |
|
423 | +if (isset($_SESSION['reset_pass'])) { |
|
424 | + unset($_SESSION['reset_pass']); |
|
425 | +} |
|
426 | +else { |
|
427 | + $given_hash = md5($edit['current_pass'] . strtolower($account->mail)); |
|
428 | + if (!$edit['current_pass']) { |
|
429 | + form_set_error('current_pass', bts('Authentication is required when changing E-mail address or setting new password.', array(), NULL, 'boinc:account-credentials-change')); |
|
442 | 430 | } |
431 | + elseif ( (!password_verify($given_hash, $boinc_user->passwd_hash)) and ($given_hash != $boinc_user->passwd_hash) ) { |
|
432 | + form_set_error('current_pass', bts('Password entered is not valid. Please verify that it is correct.', array(), NULL, 'boinc:account-credentials-change')); |
|
433 | + } |
|
434 | + |
|
435 | +} |
|
436 | +} |
|
437 | + |
|
438 | +// If an admin tries to change the email and NOT the password, show |
|
439 | +// error message. BOINC requires both to be changed together. |
|
440 | +if ($changing_email AND !$changing_pass AND user_access('administer users')) { |
|
441 | +form_set_error('pass', bts('If changing a user\'s email, you must also change the password simultaneously.', array(), NULL, 'boinc:account-credentials-change')); |
|
442 | +} |
|
443 | 443 | |
444 | - // Expansion required to allow account key in place of passwd...? |
|
444 | +// Expansion required to allow account key in place of passwd...? |
|
445 | 445 | |
446 | 446 | } |
447 | 447 | |
@@ -454,125 +454,125 @@ discard block |
||
454 | 454 | * Password request validation handler. |
455 | 455 | */ |
456 | 456 | function boincuser_request_pass_validate($form, &$form_state) { |
457 | - $edit = $form_state['values']; |
|
458 | - // The Drupal submit function expects a "name" field, even though |
|
459 | - // it contains an email address and we will not allow a user name |
|
460 | - if (!$edit['name']) form_set_error('name', bts('Please enter your email address', array(), NULL, 'boinc:forgot-password')); |
|
461 | - elseif (!valid_email_address($edit['name'])) form_set_error('name', bts('@email is not a well formed email address, please verify', array('@email' => $edit['name']), NULL, 'boinc:forgot-password')); |
|
462 | - else { |
|
463 | - // set email addrress to lower case |
|
464 | - $lower_email_addr = strtolower($edit['name']); |
|
465 | - |
|
466 | - // First look for an existing Drupal account |
|
467 | - if ($account = user_load_by_mail($lower_email_addr)) return; |
|
468 | - // Otherwise, check the BOINC db for this email address |
|
469 | - require_boinc('boinc_db'); |
|
470 | - $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
471 | - if ($boinc_user) { |
|
472 | - // If the user is in BOINC but not Drupal, bring them over... |
|
473 | - boincuser_register_make_drupal_user($boinc_user); |
|
474 | - } else { |
|
475 | - // If there is no existing BOINC user either, show an error |
|
476 | - form_set_error('name', bts('No account exists for @email -- please create an account using a BOINC client -- !instructions', |
|
477 | - array( |
|
478 | - '@email' => $edit['name'], |
|
479 | - '!instructions' => l(bts('Instructions', array(), NULL, 'boinc:forgot-password'), 'join') |
|
480 | - ), NULL, 'boinc:forgot-password')); |
|
481 | - } |
|
482 | - } |
|
457 | +$edit = $form_state['values']; |
|
458 | +// The Drupal submit function expects a "name" field, even though |
|
459 | +// it contains an email address and we will not allow a user name |
|
460 | +if (!$edit['name']) form_set_error('name', bts('Please enter your email address', array(), NULL, 'boinc:forgot-password')); |
|
461 | +elseif (!valid_email_address($edit['name'])) form_set_error('name', bts('@email is not a well formed email address, please verify', array('@email' => $edit['name']), NULL, 'boinc:forgot-password')); |
|
462 | +else { |
|
463 | +// set email addrress to lower case |
|
464 | +$lower_email_addr = strtolower($edit['name']); |
|
465 | + |
|
466 | +// First look for an existing Drupal account |
|
467 | +if ($account = user_load_by_mail($lower_email_addr)) return; |
|
468 | +// Otherwise, check the BOINC db for this email address |
|
469 | +require_boinc('boinc_db'); |
|
470 | +$boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
471 | +if ($boinc_user) { |
|
472 | + // If the user is in BOINC but not Drupal, bring them over... |
|
473 | + boincuser_register_make_drupal_user($boinc_user); |
|
474 | +} else { |
|
475 | + // If there is no existing BOINC user either, show an error |
|
476 | + form_set_error('name', bts('No account exists for @email -- please create an account using a BOINC client -- !instructions', |
|
477 | + array( |
|
478 | + '@email' => $edit['name'], |
|
479 | + '!instructions' => l(bts('Instructions', array(), NULL, 'boinc:forgot-password'), 'join') |
|
480 | + ), NULL, 'boinc:forgot-password')); |
|
481 | +} |
|
482 | +} |
|
483 | 483 | } |
484 | 484 | |
485 | 485 | /** |
486 | 486 | * The definition of the authenticator login form. |
487 | 487 | */ |
488 | 488 | function boincuser_authloginform() { |
489 | - $headers = apache_request_headers(); |
|
490 | - $project_name = variable_get('site_name', 'Drupal-BOINC'); |
|
491 | - $project_domain = $headers['Host']; |
|
492 | - $form['heading'] = array( |
|
493 | - '#type' => 'markup', |
|
494 | - '#value' => '<h3>' . bts("If you forgot your account's email address, or you can't receive email there:", array(), NULL, 'boinc:authenticator-login-page') . '</h3>' |
|
495 | - ); |
|
496 | - $form['instructions'] = array( |
|
497 | - '#type' => 'markup', |
|
498 | - '#value' => '' . |
|
499 | - '<p>' . bts("If you have run BOINC under the account, you can still access it. Here's how:", array(), NULL, 'boinc:authenticator-login-page') . |
|
500 | - ' <ul>' . |
|
501 | - ' <li>' . bts('Go to the BOINC data directory on your computer (see !boinc_wiki for help finding this).', array('!boinc_wiki' => l(bts('BOINC documentation', array(), NULL, 'boinc:authenticator-login-page'), 'http://boinc.berkeley.edu/wiki/BOINC_Data_directory')), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
502 | - ' <li>' . bts('Find your account file for this project; it will have a name like %file (where the project URL is %url).', array('%file' => "account_{$project_domain}.xml", '%url' => "http://{$project_domain}"), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
503 | - ' <li>' . bts("Open the file in a text editor like Notepad. You'll see something like:", array(), NULL, 'boinc:authenticator-login-page') . |
|
504 | - ' <pre>' . |
|
505 | - '<account>' . "\n" . |
|
506 | - " <master_url>http://{$project_domain}/</master_url>" . "\n" . |
|
507 | - ' <authenticator>8b8496fdd26df7dc0423ecd43c09a56b</authenticator>' . "\n" . |
|
508 | - " <project_name>{$project_name}</project_name>" . "\n" . |
|
509 | - ' ...' . "\n" . |
|
510 | - '</account>' . |
|
511 | - ' </pre>' . |
|
512 | - ' </li>' . |
|
513 | - ' <li>' . bts('Select and Copy the string between <authenticator> and </authenticator> (%auth in the above example).', array('%auth' => '8b8496fdd26df7dc0423ecd43c09a56b'), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
514 | - ' <li>' . bts('Paste the string into the field below, and click OK.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
515 | - ' <li>' . bts('You will now be logged in to your account; update the email and password of your account.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
516 | - ' </ul>' . |
|
517 | - '</p>' |
|
518 | - ); |
|
519 | - $form['authenticator'] = array( |
|
520 | - '#title' => bts('Log in with authenticator', array(), NULL, 'boinc:authenticator-login-page'), |
|
521 | - '#type' => 'textfield', |
|
522 | - '#size' => 60, |
|
523 | - '#maxlength' => 32, |
|
524 | - '#required' => TRUE, |
|
525 | - '#description' => null |
|
526 | - ); |
|
527 | - |
|
528 | - // Form control |
|
529 | - $form['form control tabs prefix'] = array( |
|
530 | - '#value' => '<ul class="form-control tab-list">', |
|
531 | - '#weight' => 1001, |
|
532 | - ); |
|
533 | - $form['submit'] = array( |
|
534 | - '#prefix' => '<li class="first tab">', |
|
535 | - '#type' => 'submit', |
|
536 | - '#value' => bts('OK', array(), NULL, 'boinc:form-ok'), |
|
537 | - '#suffix' => '</li>', |
|
538 | - '#weight' => 1002, |
|
539 | - ); |
|
540 | - $form['form control tabs'] = array( |
|
541 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/password') . '</li>', |
|
542 | - '#weight' => 1003, |
|
543 | - ); |
|
544 | - $form['form control tabs suffix'] = array( |
|
545 | - '#value' => '</ul>', |
|
546 | - '#weight' => 1004, |
|
547 | - ); |
|
548 | - return $form; |
|
489 | +$headers = apache_request_headers(); |
|
490 | +$project_name = variable_get('site_name', 'Drupal-BOINC'); |
|
491 | +$project_domain = $headers['Host']; |
|
492 | +$form['heading'] = array( |
|
493 | +'#type' => 'markup', |
|
494 | +'#value' => '<h3>' . bts("If you forgot your account's email address, or you can't receive email there:", array(), NULL, 'boinc:authenticator-login-page') . '</h3>' |
|
495 | +); |
|
496 | +$form['instructions'] = array( |
|
497 | +'#type' => 'markup', |
|
498 | +'#value' => '' . |
|
499 | + '<p>' . bts("If you have run BOINC under the account, you can still access it. Here's how:", array(), NULL, 'boinc:authenticator-login-page') . |
|
500 | + ' <ul>' . |
|
501 | + ' <li>' . bts('Go to the BOINC data directory on your computer (see !boinc_wiki for help finding this).', array('!boinc_wiki' => l(bts('BOINC documentation', array(), NULL, 'boinc:authenticator-login-page'), 'http://boinc.berkeley.edu/wiki/BOINC_Data_directory')), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
502 | + ' <li>' . bts('Find your account file for this project; it will have a name like %file (where the project URL is %url).', array('%file' => "account_{$project_domain}.xml", '%url' => "http://{$project_domain}"), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
503 | + ' <li>' . bts("Open the file in a text editor like Notepad. You'll see something like:", array(), NULL, 'boinc:authenticator-login-page') . |
|
504 | + ' <pre>' . |
|
505 | + '<account>' . "\n" . |
|
506 | + " <master_url>http://{$project_domain}/</master_url>" . "\n" . |
|
507 | + ' <authenticator>8b8496fdd26df7dc0423ecd43c09a56b</authenticator>' . "\n" . |
|
508 | + " <project_name>{$project_name}</project_name>" . "\n" . |
|
509 | + ' ...' . "\n" . |
|
510 | + '</account>' . |
|
511 | + ' </pre>' . |
|
512 | + ' </li>' . |
|
513 | + ' <li>' . bts('Select and Copy the string between <authenticator> and </authenticator> (%auth in the above example).', array('%auth' => '8b8496fdd26df7dc0423ecd43c09a56b'), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
514 | + ' <li>' . bts('Paste the string into the field below, and click OK.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
515 | + ' <li>' . bts('You will now be logged in to your account; update the email and password of your account.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
516 | + ' </ul>' . |
|
517 | + '</p>' |
|
518 | +); |
|
519 | +$form['authenticator'] = array( |
|
520 | +'#title' => bts('Log in with authenticator', array(), NULL, 'boinc:authenticator-login-page'), |
|
521 | +'#type' => 'textfield', |
|
522 | +'#size' => 60, |
|
523 | +'#maxlength' => 32, |
|
524 | +'#required' => TRUE, |
|
525 | +'#description' => null |
|
526 | +); |
|
527 | + |
|
528 | +// Form control |
|
529 | +$form['form control tabs prefix'] = array( |
|
530 | +'#value' => '<ul class="form-control tab-list">', |
|
531 | +'#weight' => 1001, |
|
532 | +); |
|
533 | +$form['submit'] = array( |
|
534 | +'#prefix' => '<li class="first tab">', |
|
535 | +'#type' => 'submit', |
|
536 | +'#value' => bts('OK', array(), NULL, 'boinc:form-ok'), |
|
537 | +'#suffix' => '</li>', |
|
538 | +'#weight' => 1002, |
|
539 | +); |
|
540 | +$form['form control tabs'] = array( |
|
541 | +'#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/password') . '</li>', |
|
542 | +'#weight' => 1003, |
|
543 | +); |
|
544 | +$form['form control tabs suffix'] = array( |
|
545 | +'#value' => '</ul>', |
|
546 | +'#weight' => 1004, |
|
547 | +); |
|
548 | +return $form; |
|
549 | 549 | } |
550 | 550 | |
551 | 551 | /** |
552 | 552 | * The authenticator login validation handler |
553 | 553 | */ |
554 | 554 | function boincuser_authloginform_validate($form, &$form_state) { |
555 | - $authenticator = $form_state['values']['authenticator']; |
|
556 | - if (strlen($authenticator) != 32) { |
|
557 | - // We notify the form API that this field has failed validation. |
|
558 | - form_set_error('authenticator', bts('That authenticator is not valid.', array(), NULL, 'boinc:authenticator-login-page')); |
|
559 | - } else { |
|
560 | - require_boinc('boinc_db'); |
|
561 | - $boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
562 | - if (!$boinc_user) form_set_error('authenticator', bts('There is no account with that authenticator.', array(), NULL, 'boinc:authenticator-login-page')); |
|
563 | - } |
|
555 | +$authenticator = $form_state['values']['authenticator']; |
|
556 | +if (strlen($authenticator) != 32) { |
|
557 | +// We notify the form API that this field has failed validation. |
|
558 | +form_set_error('authenticator', bts('That authenticator is not valid.', array(), NULL, 'boinc:authenticator-login-page')); |
|
559 | +} else { |
|
560 | +require_boinc('boinc_db'); |
|
561 | +$boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
562 | +if (!$boinc_user) form_set_error('authenticator', bts('There is no account with that authenticator.', array(), NULL, 'boinc:authenticator-login-page')); |
|
563 | +} |
|
564 | 564 | } |
565 | 565 | |
566 | 566 | /** |
567 | 567 | * The authenticator login submit handler |
568 | 568 | */ |
569 | 569 | function boincuser_authloginform_submit($form, &$form_state) { |
570 | - global $user; |
|
571 | - $authenticator = $form_state['values']['authenticator']; |
|
572 | - require_boinc('boinc_db'); |
|
573 | - $boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
574 | - if (!$user = user_load(get_drupal_id($boinc_user->id))) drupal_set_message(t('An unresolved error occurred while logging into this account.')); |
|
575 | - else $form_state['redirect'] = 'account/info/edit'; |
|
570 | +global $user; |
|
571 | +$authenticator = $form_state['values']['authenticator']; |
|
572 | +require_boinc('boinc_db'); |
|
573 | +$boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
574 | +if (!$user = user_load(get_drupal_id($boinc_user->id))) drupal_set_message(t('An unresolved error occurred while logging into this account.')); |
|
575 | +else $form_state['redirect'] = 'account/info/edit'; |
|
576 | 576 | } |
577 | 577 | |
578 | 578 | |
@@ -580,44 +580,44 @@ discard block |
||
580 | 580 | * The definition of the moderator reject user profile form. |
581 | 581 | */ |
582 | 582 | function boincuser_moderate_profile_reject_form(&$form_state, $uid) { |
583 | - $form_state['storage']['reject_profile_uid'] = $uid; |
|
584 | - $form['reason'] = array( |
|
585 | - '#title' => bts('Reason for rejecting this profile', array(), NULL, 'boinc:moderate-user'), |
|
586 | - '#type' => 'textarea', |
|
587 | - '#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of the problem and how to fix it.', array(), NULL, 'boinc:moderate-user'), |
|
588 | - '#default_value' => '', |
|
589 | - ); |
|
590 | - |
|
591 | - // Form control |
|
592 | - $form['form control tabs prefix'] = array( |
|
593 | - '#value' => '<ul class="form-control tab-list">', |
|
594 | - '#weight' => 1001, |
|
595 | - ); |
|
596 | - $form['submit'] = array( |
|
597 | - '#prefix' => '<li class="first tab">', |
|
598 | - '#type' => 'submit', |
|
599 | - '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
|
600 | - '#suffix' => '</li>', |
|
601 | - '#weight' => 1002, |
|
602 | - ); |
|
603 | - $form['form control tabs'] = array( |
|
604 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
|
605 | - '#weight' => 1003, |
|
606 | - ); |
|
607 | - $form['form control tabs suffix'] = array( |
|
608 | - '#value' => '</ul>', |
|
609 | - '#weight' => 1004, |
|
610 | - ); |
|
611 | - return $form; |
|
583 | +$form_state['storage']['reject_profile_uid'] = $uid; |
|
584 | +$form['reason'] = array( |
|
585 | +'#title' => bts('Reason for rejecting this profile', array(), NULL, 'boinc:moderate-user'), |
|
586 | +'#type' => 'textarea', |
|
587 | +'#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of the problem and how to fix it.', array(), NULL, 'boinc:moderate-user'), |
|
588 | +'#default_value' => '', |
|
589 | +); |
|
590 | + |
|
591 | +// Form control |
|
592 | +$form['form control tabs prefix'] = array( |
|
593 | +'#value' => '<ul class="form-control tab-list">', |
|
594 | +'#weight' => 1001, |
|
595 | +); |
|
596 | +$form['submit'] = array( |
|
597 | +'#prefix' => '<li class="first tab">', |
|
598 | +'#type' => 'submit', |
|
599 | +'#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
|
600 | +'#suffix' => '</li>', |
|
601 | +'#weight' => 1002, |
|
602 | +); |
|
603 | +$form['form control tabs'] = array( |
|
604 | +'#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
|
605 | +'#weight' => 1003, |
|
606 | +); |
|
607 | +$form['form control tabs suffix'] = array( |
|
608 | +'#value' => '</ul>', |
|
609 | +'#weight' => 1004, |
|
610 | +); |
|
611 | +return $form; |
|
612 | 612 | } |
613 | 613 | |
614 | 614 | /** |
615 | 615 | * The moderator reject user profile submit handler |
616 | 616 | */ |
617 | 617 | function boincuser_moderate_profile_reject_form_submit($form, &$form_state) { |
618 | - $uid = $form_state['storage']['reject_profile_uid']; |
|
619 | - $reason = $form_state['values']['reason']; |
|
620 | - boincuser_moderate_profile_reject($uid, $reason); |
|
618 | +$uid = $form_state['storage']['reject_profile_uid']; |
|
619 | +$reason = $form_state['values']['reason']; |
|
620 | +boincuser_moderate_profile_reject($uid, $reason); |
|
621 | 621 | } |
622 | 622 | |
623 | 623 | |
@@ -625,52 +625,52 @@ discard block |
||
625 | 625 | * The definition of the ban user form. |
626 | 626 | */ |
627 | 627 | function boincuser_moderate_user_ban_form(&$form_state, $uid) { |
628 | - $form_state['storage']['ban_user_uid'] = $uid; |
|
629 | - $form['reason'] = array( |
|
630 | - '#title' => bts('Reason for banning this user', array(), NULL, 'boinc:moderate-user'), |
|
631 | - '#type' => 'textarea', |
|
632 | - '#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of why the user is being banned.', array(), NULL, 'boinc:moderate-user'), |
|
633 | - '#default_value' => '', |
|
634 | - ); |
|
635 | - $form['duration'] = array( |
|
636 | - '#title' => bts('Duration of the ban', array(), NULL, 'boinc:moderate-user'), |
|
637 | - '#type' => 'textfield', |
|
638 | - '#description' => bts('The number of days until the ban expires. Set to 0 to ban permanently.', array(), NULL, 'boinc:moderate-user'), |
|
639 | - '#default_value' => '', |
|
640 | - ); |
|
641 | - |
|
642 | - // Form control |
|
643 | - $form['form control tabs prefix'] = array( |
|
644 | - '#value' => '<ul class="form-control tab-list">', |
|
645 | - '#weight' => 1001, |
|
646 | - ); |
|
647 | - $form['submit'] = array( |
|
648 | - '#prefix' => '<li class="first tab">', |
|
649 | - '#type' => 'submit', |
|
650 | - '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
|
651 | - '#suffix' => '</li>', |
|
652 | - '#weight' => 1002, |
|
653 | - ); |
|
654 | - $form['form control tabs'] = array( |
|
655 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
|
656 | - '#weight' => 1003, |
|
657 | - ); |
|
658 | - $form['form control tabs suffix'] = array( |
|
659 | - '#value' => '</ul>', |
|
660 | - '#weight' => 1004, |
|
661 | - ); |
|
662 | - return $form; |
|
628 | +$form_state['storage']['ban_user_uid'] = $uid; |
|
629 | +$form['reason'] = array( |
|
630 | +'#title' => bts('Reason for banning this user', array(), NULL, 'boinc:moderate-user'), |
|
631 | +'#type' => 'textarea', |
|
632 | +'#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of why the user is being banned.', array(), NULL, 'boinc:moderate-user'), |
|
633 | +'#default_value' => '', |
|
634 | +); |
|
635 | +$form['duration'] = array( |
|
636 | +'#title' => bts('Duration of the ban', array(), NULL, 'boinc:moderate-user'), |
|
637 | +'#type' => 'textfield', |
|
638 | +'#description' => bts('The number of days until the ban expires. Set to 0 to ban permanently.', array(), NULL, 'boinc:moderate-user'), |
|
639 | +'#default_value' => '', |
|
640 | +); |
|
641 | + |
|
642 | +// Form control |
|
643 | +$form['form control tabs prefix'] = array( |
|
644 | +'#value' => '<ul class="form-control tab-list">', |
|
645 | +'#weight' => 1001, |
|
646 | +); |
|
647 | +$form['submit'] = array( |
|
648 | +'#prefix' => '<li class="first tab">', |
|
649 | +'#type' => 'submit', |
|
650 | +'#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
|
651 | +'#suffix' => '</li>', |
|
652 | +'#weight' => 1002, |
|
653 | +); |
|
654 | +$form['form control tabs'] = array( |
|
655 | +'#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
|
656 | +'#weight' => 1003, |
|
657 | +); |
|
658 | +$form['form control tabs suffix'] = array( |
|
659 | +'#value' => '</ul>', |
|
660 | +'#weight' => 1004, |
|
661 | +); |
|
662 | +return $form; |
|
663 | 663 | } |
664 | 664 | |
665 | 665 | /** |
666 | 666 | * The ban user submit handler |
667 | 667 | */ |
668 | 668 | function boincuser_moderate_user_ban_form_submit($form, &$form_state) { |
669 | - $uid = $form_state['storage']['ban_user_uid']; |
|
670 | - $reason = $form_state['values']['reason']; |
|
671 | - $duration = $form_state['values']['duration']; |
|
672 | - if ($duration) $duration = $duration * 24*60*60; |
|
673 | - boincuser_moderate_user_ban($uid, $reason, $duration); |
|
669 | +$uid = $form_state['storage']['ban_user_uid']; |
|
670 | +$reason = $form_state['values']['reason']; |
|
671 | +$duration = $form_state['values']['duration']; |
|
672 | +if ($duration) $duration = $duration * 24*60*60; |
|
673 | +boincuser_moderate_user_ban($uid, $reason, $duration); |
|
674 | 674 | } |
675 | 675 | |
676 | 676 | |
@@ -678,10 +678,10 @@ discard block |
||
678 | 678 | * Hack to fix submission of the flag friend unfriend form |
679 | 679 | */ |
680 | 680 | function boincuser_fix_unfriend_form_submit($form, &$form_state) { |
681 | - // Leaving action as "unfriend" causes problems |
|
682 | - if ($form_state['values']['action'] == 'unfriend') { |
|
683 | - $form_state['values']['action'] = 'unflag'; |
|
684 | - } |
|
681 | +// Leaving action as "unfriend" causes problems |
|
682 | +if ($form_state['values']['action'] == 'unfriend') { |
|
683 | +$form_state['values']['action'] = 'unflag'; |
|
684 | +} |
|
685 | 685 | } |
686 | 686 | |
687 | 687 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -689,102 +689,102 @@ discard block |
||
689 | 689 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
690 | 690 | |
691 | 691 | function boincuser_termsofuse_form() { |
692 | - global $user; |
|
693 | - |
|
694 | - // If user has already signed terms of use, and got to this form in error, send them to site home. |
|
695 | - if (boincuser_check_termsofuse($user)) { |
|
696 | - drupal_goto(); |
|
697 | - } |
|
698 | - |
|
699 | - drupal_set_message( bts('WARNING: You have not agreed to our terms of use. Please agree to the terms of use before continuing.', array(), NULL, 'boinc:termsofuse-form'), 'warning' ); |
|
692 | +global $user; |
|
700 | 693 | |
701 | - $form = array(); |
|
702 | - drupal_add_js(drupal_get_path('module', 'boincuser') . '/boincuser.js'); |
|
703 | - $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
704 | - |
|
705 | - // Fieldset to hold all of the form as a container |
|
706 | - $form['termsofuse'] = array( |
|
707 | - '#type' => 'fieldset', |
|
708 | - '#prefix' => '<div id="termsofuse-wrapper">', // This is our wrapper div. |
|
709 | - '#suffix' => '</div>', |
|
710 | - '#tree' => TRUE, |
|
711 | - ); |
|
712 | - |
|
713 | - $form['termsofuse']['title1'] = array( |
|
714 | - '#weight' => -12, |
|
715 | - '#value' => '<h2>' . bts( variable_get('boinc_weboptions_registrationtitle', 'Please read and acknowledge our terms of use'), array(), NULL, 'project:termsofuse-form' ) . '</h2>', |
|
716 | - '#prefix' => '<div id="register-title1">', |
|
717 | - '#suffix' => '</div>', |
|
718 | - ); |
|
719 | - |
|
720 | - // Terms of use section |
|
721 | - $form['termsofuse']['body'] = array( |
|
722 | - '#weight' => -10, |
|
723 | - '#value' => bts($termsofuse, array(), NULL, 'project:termsofuse-form'), |
|
724 | - '#prefix' => '<div id="register-termsofuse">', |
|
725 | - '#suffix' => '</div>', |
|
726 | - ); |
|
727 | - |
|
728 | - $form['termsofuse']['agreeTOU'] = array( |
|
729 | - '#type' => 'checkbox', |
|
730 | - '#title' => bts(variable_get('boinc_weboptions_agreequestion', 'Do you agree with the above terms of use?'), array(), NULL, 'project:termsofuse-form'), |
|
731 | - '#weight' => -8, |
|
732 | - '#prefix' => '<div id="register-checkbox">', |
|
733 | - '#suffix' => '</div>', |
|
734 | - ); |
|
735 | - |
|
736 | - $form['termsofuse']['spacer'] = array( |
|
737 | - '#prefix' => '<div class="clearfix" id="register-title2">', |
|
738 | - '#value' => ' ', |
|
739 | - '#suffix' => '</div>', |
|
740 | - ); |
|
694 | +// If user has already signed terms of use, and got to this form in error, send them to site home. |
|
695 | +if (boincuser_check_termsofuse($user)) { |
|
696 | +drupal_goto(); |
|
697 | +} |
|
741 | 698 | |
742 | - // Form Control |
|
743 | - $form['submit'] = array( |
|
744 | - '#prefix' => '<p><p><p><li class="first tab" id="register-submit">', |
|
745 | - '#type' => 'submit', |
|
746 | - '#value' => bts('Yes', array(), NULL, 'boinc:form-submit'), |
|
747 | - '#suffix' => '</li>', |
|
748 | - ); |
|
749 | - $form['form control tabs'] = array( |
|
750 | - '#value' => '<li class="tab">' . l(bts('NO - LOGOUT', array(), NULL, 'boinc:form-cancel'), '/logout') . '</li>', |
|
751 | - ); |
|
752 | - if (module_exists('boincuser_delete')) { |
|
753 | - $deletelink = '/user/' . $user->uid . '/delete'; |
|
754 | - $form['deleteaccount'] = array( |
|
755 | - '#value' => '<li class="tab">' . l(bts('NO - DELETE ACCOUNT', array(), NULL, 'boinc:form-delete-user'), $deletelink) . '</li>', |
|
756 | - ); |
|
757 | - } |
|
699 | +drupal_set_message( bts('WARNING: You have not agreed to our terms of use. Please agree to the terms of use before continuing.', array(), NULL, 'boinc:termsofuse-form'), 'warning' ); |
|
700 | + |
|
701 | +$form = array(); |
|
702 | +drupal_add_js(drupal_get_path('module', 'boincuser') . '/boincuser.js'); |
|
703 | +$termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
704 | + |
|
705 | +// Fieldset to hold all of the form as a container |
|
706 | +$form['termsofuse'] = array( |
|
707 | +'#type' => 'fieldset', |
|
708 | +'#prefix' => '<div id="termsofuse-wrapper">', // This is our wrapper div. |
|
709 | +'#suffix' => '</div>', |
|
710 | +'#tree' => TRUE, |
|
711 | +); |
|
712 | + |
|
713 | +$form['termsofuse']['title1'] = array( |
|
714 | +'#weight' => -12, |
|
715 | +'#value' => '<h2>' . bts( variable_get('boinc_weboptions_registrationtitle', 'Please read and acknowledge our terms of use'), array(), NULL, 'project:termsofuse-form' ) . '</h2>', |
|
716 | +'#prefix' => '<div id="register-title1">', |
|
717 | +'#suffix' => '</div>', |
|
718 | +); |
|
719 | + |
|
720 | +// Terms of use section |
|
721 | +$form['termsofuse']['body'] = array( |
|
722 | +'#weight' => -10, |
|
723 | +'#value' => bts($termsofuse, array(), NULL, 'project:termsofuse-form'), |
|
724 | +'#prefix' => '<div id="register-termsofuse">', |
|
725 | +'#suffix' => '</div>', |
|
726 | +); |
|
727 | + |
|
728 | +$form['termsofuse']['agreeTOU'] = array( |
|
729 | +'#type' => 'checkbox', |
|
730 | +'#title' => bts(variable_get('boinc_weboptions_agreequestion', 'Do you agree with the above terms of use?'), array(), NULL, 'project:termsofuse-form'), |
|
731 | +'#weight' => -8, |
|
732 | +'#prefix' => '<div id="register-checkbox">', |
|
733 | +'#suffix' => '</div>', |
|
734 | +); |
|
735 | + |
|
736 | +$form['termsofuse']['spacer'] = array( |
|
737 | +'#prefix' => '<div class="clearfix" id="register-title2">', |
|
738 | +'#value' => ' ', |
|
739 | +'#suffix' => '</div>', |
|
740 | +); |
|
741 | + |
|
742 | +// Form Control |
|
743 | +$form['submit'] = array( |
|
744 | +'#prefix' => '<p><p><p><li class="first tab" id="register-submit">', |
|
745 | +'#type' => 'submit', |
|
746 | +'#value' => bts('Yes', array(), NULL, 'boinc:form-submit'), |
|
747 | +'#suffix' => '</li>', |
|
748 | +); |
|
749 | +$form['form control tabs'] = array( |
|
750 | +'#value' => '<li class="tab">' . l(bts('NO - LOGOUT', array(), NULL, 'boinc:form-cancel'), '/logout') . '</li>', |
|
751 | +); |
|
752 | +if (module_exists('boincuser_delete')) { |
|
753 | +$deletelink = '/user/' . $user->uid . '/delete'; |
|
754 | +$form['deleteaccount'] = array( |
|
755 | + '#value' => '<li class="tab">' . l(bts('NO - DELETE ACCOUNT', array(), NULL, 'boinc:form-delete-user'), $deletelink) . '</li>', |
|
756 | +); |
|
757 | +} |
|
758 | 758 | |
759 | - // Set form redirect |
|
760 | - $form['#redirect'] = $_REQUEST['destination']; |
|
759 | +// Set form redirect |
|
760 | +$form['#redirect'] = $_REQUEST['destination']; |
|
761 | 761 | |
762 | - // Add the current user's data into the form |
|
763 | - $form['#account'] = $user; |
|
762 | +// Add the current user's data into the form |
|
763 | +$form['#account'] = $user; |
|
764 | 764 | |
765 | - return $form; |
|
765 | +return $form; |
|
766 | 766 | } |
767 | 767 | |
768 | 768 | function boincuser_termsofuse_form_validate($form, &$form_state) { |
769 | - // Check TOU agreement |
|
770 | - if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
771 | - form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', array(), NULL, 'boinc:termsofuse-form')); |
|
772 | - } |
|
769 | +// Check TOU agreement |
|
770 | +if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
771 | +form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', array(), NULL, 'boinc:termsofuse-form')); |
|
772 | +} |
|
773 | 773 | } |
774 | 774 | |
775 | 775 | function boincuser_termsofuse_form_submit($form, &$form_state) { |
776 | - $user = $form['#account']; |
|
777 | - if (!boincuser_consentto_termsofuse($user)) { |
|
778 | - form_set_error('termsofuse', |
|
779 | - bts('There was an error in agreeing to the terms of use. The @project administrators have been notified.', |
|
780 | - array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:termsofuse-form') |
|
781 | - ); |
|
782 | - } |
|
776 | +$user = $form['#account']; |
|
777 | +if (!boincuser_consentto_termsofuse($user)) { |
|
778 | +form_set_error('termsofuse', |
|
779 | + bts('There was an error in agreeing to the terms of use. The @project administrators have been notified.', |
|
780 | + array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:termsofuse-form') |
|
781 | +); |
|
782 | +} |
|
783 | 783 | |
784 | - // Delete session messages |
|
785 | - if ($_SESSION['messages']['warning']) { |
|
786 | - unset($_SESSION['messages']['warning']); |
|
787 | - } |
|
784 | +// Delete session messages |
|
785 | +if ($_SESSION['messages']['warning']) { |
|
786 | +unset($_SESSION['messages']['warning']); |
|
787 | +} |
|
788 | 788 | } |
789 | 789 | |
790 | 790 | /** |
@@ -793,89 +793,89 @@ discard block |
||
793 | 793 | * removed after used. |
794 | 794 | */ |
795 | 795 | function boincuser_revertemail(&$form_state, $token) { |
796 | - require_boinc('token'); |
|
797 | - require_boinc('util'); |
|
798 | - |
|
799 | - global $user; |
|
800 | - $form = array(); |
|
801 | - |
|
802 | - // drupal JS for dynamic password validation |
|
803 | - _user_password_dynamic_validation(); |
|
804 | - |
|
805 | - // check BOINC user exists |
|
806 | - $account = user_load(array('uid' => $user->uid)); |
|
807 | - $uid = $user->uid; |
|
808 | - $boincid = $account->boincuser_id; |
|
809 | - // check $token is valid |
|
810 | - if (!is_valid_token($boincid, $token, 'E')) { |
|
811 | - drupal_set_message(bts('ERROR: You have supplied an incorrect (most likely expired) token. Please obtain a new token by !link your email address.', |
|
812 | - array( |
|
813 | - '!link' => l(bts('changing', array(), NULL, 'boinc:revert-email-change'), "/account/info/edit"), |
|
814 | - ), |
|
815 | - NULL, 'boinc:revert-email-change'), 'error'); |
|
816 | - drupal_goto(); |
|
817 | - } |
|
818 | - |
|
819 | - // Attach account and token to this form. |
|
820 | - $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
821 | - $form['_token'] = array('#type' => 'value', '#value' => $token); |
|
822 | - |
|
823 | - // Instructions |
|
824 | - $form['main']['instructions1'] = array( |
|
825 | - '#value' => '<p>'. |
|
826 | - bts('In order to change your email back to your previous email address, <strong>!prev_email</strong>, you must also change your password.', |
|
827 | - array( |
|
828 | - '!prev_email' => $account->boincuser_previous_email_addr, |
|
829 | - ), |
|
830 | - NULL, 'boinc:revert-email-change'). |
|
831 | - '</p>', |
|
832 | - ); |
|
833 | - |
|
834 | - $form['main']['pass'] = array( |
|
835 | - '#type' => 'password_confirm', |
|
836 | - '#description' => 'Enter a new password in both fields', |
|
837 | - '#size' => 17, |
|
838 | - ); |
|
839 | - |
|
840 | - // Wrap action buttons for styling consistency |
|
841 | - $form['buttons']['form control tabs prefix'] = array( |
|
842 | - '#value' => '<ul class="form-control tab-list">', |
|
843 | - '#weight' => 1001, |
|
844 | - ); |
|
845 | - $form['buttons']['submit']['#type'] = 'submit'; |
|
846 | - $form['buttons']['submit']['#prefix'] = '<li class="first tab">'; |
|
847 | - $form['buttons']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
848 | - $form['buttons']['submit']['#suffix'] = '</li>'; |
|
849 | - $form['buttons']['submit']['#weight'] = 1002; |
|
850 | - $form['buttons']['cancel'] = array( |
|
851 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/info/edit') . '</li>', |
|
852 | - '#weight' => 1005, |
|
853 | - ); |
|
854 | - $form['buttons']['form control tabs suffix'] = array( |
|
855 | - '#value' => '</ul>', |
|
856 | - '#weight' => 1010, |
|
857 | - ); |
|
796 | +require_boinc('token'); |
|
797 | +require_boinc('util'); |
|
798 | + |
|
799 | +global $user; |
|
800 | +$form = array(); |
|
801 | + |
|
802 | +// drupal JS for dynamic password validation |
|
803 | +_user_password_dynamic_validation(); |
|
804 | + |
|
805 | +// check BOINC user exists |
|
806 | +$account = user_load(array('uid' => $user->uid)); |
|
807 | +$uid = $user->uid; |
|
808 | +$boincid = $account->boincuser_id; |
|
809 | +// check $token is valid |
|
810 | +if (!is_valid_token($boincid, $token, 'E')) { |
|
811 | +drupal_set_message(bts('ERROR: You have supplied an incorrect (most likely expired) token. Please obtain a new token by !link your email address.', |
|
812 | +array( |
|
813 | + '!link' => l(bts('changing', array(), NULL, 'boinc:revert-email-change'), "/account/info/edit"), |
|
814 | +), |
|
815 | +NULL, 'boinc:revert-email-change'), 'error'); |
|
816 | +drupal_goto(); |
|
817 | +} |
|
858 | 818 | |
859 | - return $form; |
|
819 | +// Attach account and token to this form. |
|
820 | +$form['_account'] = array('#type' => 'value', '#value' => $account); |
|
821 | +$form['_token'] = array('#type' => 'value', '#value' => $token); |
|
822 | + |
|
823 | +// Instructions |
|
824 | +$form['main']['instructions1'] = array( |
|
825 | +'#value' => '<p>'. |
|
826 | +bts('In order to change your email back to your previous email address, <strong>!prev_email</strong>, you must also change your password.', |
|
827 | + array( |
|
828 | + '!prev_email' => $account->boincuser_previous_email_addr, |
|
829 | + ), |
|
830 | + NULL, 'boinc:revert-email-change'). |
|
831 | +'</p>', |
|
832 | +); |
|
833 | + |
|
834 | +$form['main']['pass'] = array( |
|
835 | +'#type' => 'password_confirm', |
|
836 | +'#description' => 'Enter a new password in both fields', |
|
837 | +'#size' => 17, |
|
838 | +); |
|
839 | + |
|
840 | +// Wrap action buttons for styling consistency |
|
841 | +$form['buttons']['form control tabs prefix'] = array( |
|
842 | + '#value' => '<ul class="form-control tab-list">', |
|
843 | + '#weight' => 1001, |
|
844 | +); |
|
845 | +$form['buttons']['submit']['#type'] = 'submit'; |
|
846 | +$form['buttons']['submit']['#prefix'] = '<li class="first tab">'; |
|
847 | +$form['buttons']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
848 | +$form['buttons']['submit']['#suffix'] = '</li>'; |
|
849 | +$form['buttons']['submit']['#weight'] = 1002; |
|
850 | +$form['buttons']['cancel'] = array( |
|
851 | + '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/info/edit') . '</li>', |
|
852 | + '#weight' => 1005, |
|
853 | +); |
|
854 | +$form['buttons']['form control tabs suffix'] = array( |
|
855 | + '#value' => '</ul>', |
|
856 | + '#weight' => 1010, |
|
857 | +); |
|
858 | + |
|
859 | +return $form; |
|
860 | 860 | } |
861 | 861 | |
862 | 862 | /** |
863 | 863 | * Validation handler for revertemail form |
864 | 864 | */ |
865 | 865 | function boincuser_revertemail_validate($form, &$form_state) { |
866 | - // Load account and boincuser |
|
867 | - $account = $form_state['values']['_account']; |
|
868 | - $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
869 | - |
|
870 | - if (BoincUser::lookup_email_addr($boinc_user->previous_email_addr)) { |
|
871 | - rules_invoke_event('boincuser_revert_email_error', $boinc_user->previous_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
872 | - form_set_error('mail', |
|
873 | - bts('An account already exists for @email. Previous email address cannot be used because another account is using it as their email address. The @project administrators have been notified.', |
|
874 | - array( |
|
875 | - '@email' => $boinc_user->previous_email_addr, |
|
876 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
877 | - ), NULL, 'boinc:add-new-user')); |
|
878 | - } |
|
866 | +// Load account and boincuser |
|
867 | +$account = $form_state['values']['_account']; |
|
868 | +$boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
869 | + |
|
870 | +if (BoincUser::lookup_email_addr($boinc_user->previous_email_addr)) { |
|
871 | +rules_invoke_event('boincuser_revert_email_error', $boinc_user->previous_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
872 | +form_set_error('mail', |
|
873 | + bts('An account already exists for @email. Previous email address cannot be used because another account is using it as their email address. The @project administrators have been notified.', |
|
874 | + array( |
|
875 | + '@email' => $boinc_user->previous_email_addr, |
|
876 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
877 | + ), NULL, 'boinc:add-new-user')); |
|
878 | +} |
|
879 | 879 | |
880 | 880 | } |
881 | 881 | |
@@ -883,25 +883,25 @@ discard block |
||
883 | 883 | * Submit handler for revertemail form |
884 | 884 | */ |
885 | 885 | function boincuser_revertemail_submit($form, &$form_state) { |
886 | - require_boinc('password_compat/password'); |
|
886 | +require_boinc('password_compat/password'); |
|
887 | 887 | |
888 | - // Load account and boincuser |
|
889 | - $account = $form_state['values']['_account']; |
|
890 | - $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
888 | +// Load account and boincuser |
|
889 | +$account = $form_state['values']['_account']; |
|
890 | +$boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
891 | 891 | |
892 | - $pem = strtolower($boinc_user->previous_email_addr); |
|
892 | +$pem = strtolower($boinc_user->previous_email_addr); |
|
893 | 893 | |
894 | - // Set new password based on previous email address and entered |
|
895 | - // password. |
|
896 | - $new_passwd_hash = password_hash( md5($form_state['values']['pass'].$pem), PASSWORD_DEFAULT); |
|
894 | +// Set new password based on previous email address and entered |
|
895 | +// password. |
|
896 | +$new_passwd_hash = password_hash( md5($form_state['values']['pass'].$pem), PASSWORD_DEFAULT); |
|
897 | 897 | |
898 | - $boinc_user->update("email_addr='${pem}', previous_email_addr='', email_addr_change_time=0, passwd_hash='${new_passwd_hash}'"); |
|
898 | +$boinc_user->update("email_addr='${pem}', previous_email_addr='', email_addr_change_time=0, passwd_hash='${new_passwd_hash}'"); |
|
899 | 899 | |
900 | - // Set email in drupal database to previous email |
|
901 | - user_save($account, array('mail' => $pem)); |
|
900 | +// Set email in drupal database to previous email |
|
901 | +user_save($account, array('mail' => $pem)); |
|
902 | 902 | |
903 | - // delete the token |
|
904 | - $result = delete_token($account->boincuser_id, $form_state['values']['_token'], 'E'); |
|
903 | +// delete the token |
|
904 | +$result = delete_token($account->boincuser_id, $form_state['values']['_token'], 'E'); |
|
905 | 905 | |
906 | - drupal_goto('account'); |
|
906 | +drupal_goto('account'); |
|
907 | 907 | } |