@@ -11,12 +11,12 @@ discard block |
||
11 | 11 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
12 | 12 | |
13 | 13 | if (!function_exists('user_load_by_mail')) { |
14 | - /** |
|
15 | - * user_load_by_mail will be broken out of user_load |
|
16 | - */ |
|
17 | - function user_load_by_mail($mail) { |
|
14 | + /** |
|
15 | + * user_load_by_mail will be broken out of user_load |
|
16 | + */ |
|
17 | + function user_load_by_mail($mail) { |
|
18 | 18 | return user_load(array('mail' => $mail)); |
19 | - } |
|
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) { |
|
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 | 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); |
|
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) { |
|
50 | + global $user; |
|
51 | + if (!$user->uid) { |
|
52 | 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 | - |
|
59 | - // Set user roles based on current penalty status... |
|
60 | - if ($account->boincuser_penalty_expiration > time()) { |
|
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 | + |
|
59 | + // Set user roles based on current penalty status... |
|
60 | + if ($account->boincuser_penalty_expiration > time()) { |
|
61 | 61 | drupal_set_message(bts( |
62 | - 'You are banned from community participation until @date', |
|
63 | - array('@date' => format_date($account->boincuser_penalty_expiration)) |
|
62 | + 'You are banned from community participation until @date', |
|
63 | + array('@date' => format_date($account->boincuser_penalty_expiration)) |
|
64 | 64 | ), 'warning', FALSE); |
65 | 65 | if (isset($account->roles[$community_role])) { |
66 | - // Remove from the community role, if not already |
|
67 | - unset($account->roles[$community_role]); |
|
66 | + // Remove from the community role, if not already |
|
67 | + unset($account->roles[$community_role]); |
|
68 | 68 | } |
69 | 69 | if (isset($account->roles[$unrestricted_role])) { |
70 | - // Likewise, revoke extra privileges |
|
71 | - unset($account->roles[$unrestricted_role]); |
|
70 | + // Likewise, revoke extra privileges |
|
71 | + unset($account->roles[$unrestricted_role]); |
|
72 | 72 | } |
73 | 73 | user_save($account, array('roles' => $account->roles)); |
74 | - } |
|
75 | - else { |
|
74 | + } |
|
75 | + else { |
|
76 | 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)); |
|
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 | 81 | } |
82 | 82 | |
83 | 83 | // ... and total credit. |
84 | 84 | if ($account->boincuser_total_credit >= $min_credit_to_post) { |
85 | - if (!isset($account->roles[$unrestricted_role])) { |
|
85 | + if (!isset($account->roles[$unrestricted_role])) { |
|
86 | 86 | // This user is now above the credit threshold and is allowed full |
87 | 87 | // privileges |
88 | 88 | $account->roles[$unrestricted_role] = 'verified contributor'; |
89 | 89 | user_save($account, array('roles' => $account->roles)); |
90 | - } |
|
90 | + } |
|
91 | 91 | } |
92 | 92 | else { |
93 | - drupal_set_message(bts( |
|
93 | + drupal_set_message(bts( |
|
94 | 94 | 'You must earn @count more credits to be able to post comments on this site and create or modify your user profile.', |
95 | 95 | array('@count' => $min_credit_to_post - $account->boincuser_total_credit) |
96 | - ), 'warning', FALSE); |
|
97 | - if (isset($account->roles[$unrestricted_role])) { |
|
96 | + ), 'warning', FALSE); |
|
97 | + if (isset($account->roles[$unrestricted_role])) { |
|
98 | 98 | // Either the threshold has been raised or credits have been revoked; |
99 | 99 | // this user no longer qualifies for full privileges |
100 | 100 | unset($account->roles[$unrestricted_role]); |
101 | 101 | user_save($account, array('roles' => $account->roles)); |
102 | - } |
|
102 | + } |
|
103 | 103 | } |
104 | 104 | |
105 | - } |
|
105 | + } |
|
106 | 106 | } |
107 | 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) { |
|
112 | + if (!$uid) { |
|
113 | 113 | global $user; |
114 | 114 | $uid = $user->uid; |
115 | - } |
|
116 | - return db_result(db_query(" |
|
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 |
@@ -124,40 +124,40 @@ discard block |
||
124 | 124 | ORDER BY c.timestamp ASC |
125 | 125 | LIMIT 1", |
126 | 126 | $uid, $nid |
127 | - )); |
|
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)) { |
|
143 | + ); |
|
144 | + db_set_active('default'); |
|
145 | + $active_users = array(); |
|
146 | + while ($user_with_credit = db_fetch_object($users_with_credit)) { |
|
147 | 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(" |
|
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) { |
|
156 | + )); |
|
157 | + $new_uotd_uid = 0; |
|
158 | + while (!$new_uotd_uid) { |
|
159 | 159 | // Select a user of the day randomly from the pool |
160 | - $new_uotd_uid = db_result(db_query(" |
|
160 | + $new_uotd_uid = db_result(db_query(" |
|
161 | 161 | SELECT |
162 | 162 | n.uid |
163 | 163 | FROM {node} n |
@@ -171,31 +171,31 @@ discard block |
||
171 | 171 | LIMIT 1" |
172 | 172 | )); |
173 | 173 | if (!$new_uotd_uid) { |
174 | - // Can't find a user with a profile; remove constraints on the pool |
|
175 | - if ($never_been_picked) { |
|
174 | + // Can't find a user with a profile; remove constraints on the pool |
|
175 | + if ($never_been_picked) { |
|
176 | 176 | // Allow users who have been previously selected |
177 | 177 | $never_been_picked = FALSE; |
178 | - } |
|
179 | - elseif ($active_users) { |
|
178 | + } |
|
179 | + elseif ($active_users) { |
|
180 | 180 | // Allow users who are not even active (getting desperate) |
181 | 181 | $active_users = FALSE; |
182 | - } |
|
183 | - else { |
|
182 | + } |
|
183 | + else { |
|
184 | 184 | // Process failed... |
185 | 185 | return FALSE; |
186 | - } |
|
186 | + } |
|
187 | 187 | } |
188 | - } |
|
189 | - $uotd = user_load($new_uotd_uid); |
|
190 | - if ($uotd->uid) { |
|
188 | + } |
|
189 | + $uotd = user_load($new_uotd_uid); |
|
190 | + if ($uotd->uid) { |
|
191 | 191 | db_query(" |
192 | 192 | UPDATE {boincuser} |
193 | 193 | SET uotd_time = '%d' |
194 | 194 | WHERE uid = '%d'", |
195 | - time(), $uotd->uid |
|
195 | + time(), $uotd->uid |
|
196 | 196 | ); |
197 | - } |
|
198 | - return $uotd; |
|
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'); |
|
216 | + require_boinc('token'); |
|
217 | + module_load_include('inc', 'rules', 'modules/system.rules'); |
|
218 | 218 | |
219 | - global $base_url; |
|
220 | - $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
219 | + global $base_url; |
|
220 | + $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
221 | 221 | |
222 | - if (is_null($new_email)) { |
|
222 | + if (is_null($new_email)) { |
|
223 | 223 | $new_email = $account->mail; |
224 | - } |
|
225 | - if (is_null($prev_email)) { |
|
224 | + } |
|
225 | + if (is_null($prev_email)) { |
|
226 | 226 | $prev_email = $account->boincuser_previous_email_addr; |
227 | - } |
|
228 | - |
|
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) { |
|
227 | + } |
|
228 | + |
|
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 | 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 { |
|
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 | 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 | - } |
|
245 | - |
|
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( |
|
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 | + } |
|
245 | + |
|
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 | 257 | 'from' => '', |
258 | 258 | 'to' => $new_email, |
259 | 259 | 'subject' => $mysubject, |
260 | 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( |
|
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 | 274 | 'from' => '', |
275 | 275 | 'to' => $prev_email, |
276 | 276 | 'subject' => $mysubject, |
277 | 277 | 'message' => $mymessage, |
278 | - ); |
|
278 | + ); |
|
279 | 279 | |
280 | - rules_action_mail($settings); |
|
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) { |
|
290 | + if (!$requested_name) { |
|
291 | 291 | // If the name is empty, set it |
292 | 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) { |
|
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 | 303 | // Name is limited to 60 characters, but we want to leave space to add a |
304 | 304 | // tally if needed (for users with duplicate names); Limit to 56 chars and |
305 | 305 | // replace the middle of the string with "..." if too long |
306 | 306 | $cleaned_name = substr_replace($cleaned_name, '...', 28, ($name_length-56)+3); |
307 | - } |
|
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"))) { |
|
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 | 312 | $same_name_tally++; |
313 | 313 | $unique_name = "{$cleaned_name}_{$same_name_tally}"; |
314 | - } |
|
315 | - return $unique_name; |
|
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); |
|
342 | + require_boinc('consent'); |
|
343 | + $boinc_user = boincuser_load($user->uid, TRUE); |
|
344 | 344 | |
345 | - list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | - if ($checkct) { |
|
345 | + list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | + if ($checkct) { |
|
347 | 347 | $rc1 = consent_to_a_policy($boinc_user, $ctid, 1, 0, 'Webform', time()); |
348 | 348 | if (!$rc1) { |
349 | - drupal_set_message( |
|
349 | + drupal_set_message( |
|
350 | 350 | bts("ERROR: Database error when attempting to INSERT into table consent with ID=@id. The @project administrators have been notified.", |
351 | 351 | array( |
352 | - '@id' => $boinc_user->id, |
|
353 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
352 | + '@id' => $boinc_user->id, |
|
353 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
354 | 354 | ), |
355 | 355 | 'NULL', 'boinc:consent-termsofuse'), |
356 | - 'error'); |
|
357 | - rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
356 | + 'error'); |
|
357 | + rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
358 | 358 | } |
359 | 359 | return $rc1; |
360 | - } |
|
361 | - else { |
|
360 | + } |
|
361 | + else { |
|
362 | 362 | drupal_set_message( |
363 | - bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
363 | + bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
364 | 364 | array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:consent-termsofuse'), |
365 | 365 | 'error'); |
366 | 366 | rules_invoke_event('boincuser_general_consent_type_error', CONSENT_TYPE_ENROLL, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
367 | - } |
|
368 | - return FALSE; |
|
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) { |
|
377 | + foreach ($paths_to_ignore as $pi) { |
|
378 | 378 | // @todo Currently this function uses {} as PHP regexp |
379 | 379 | // delimiters. Curly brace is not really allowed un URLs, but a |
380 | 380 | // more robust function would first check for these curly braces |
381 | 381 | // in the path_to_ignore patterms, just in case. |
382 | 382 | if (preg_match('{' . $pi . '}', $path)) { |
383 | - return TRUE; |
|
383 | + return TRUE; |
|
384 | 384 | } |
385 | - } |
|
386 | - return FALSE; |
|
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( |
|
394 | + $params = array( |
|
395 | 395 | 'boincid' => isset($_GET['id']) ? $_GET['id'] : '', |
396 | 396 | 'token' => isset($_GET['token']) ? $_GET['token'] : '' |
397 | - ); |
|
397 | + ); |
|
398 | 398 | |
399 | - // If boincid or token is not present, then go to the home page. |
|
400 | - if (empty($params['boincid']) or empty($params['token'])) { |
|
399 | + // If boincid or token is not present, then go to the home page. |
|
400 | + if (empty($params['boincid']) or empty($params['token'])) { |
|
401 | 401 | $redirect = ''; |
402 | - } |
|
403 | - else { |
|
402 | + } |
|
403 | + else { |
|
404 | 404 | $uid = boincuser_lookup_uid($params['boincid']); |
405 | 405 | $redirect = "/user/${uid}/recoveremail/${params['token']}"; |
406 | - } |
|
407 | - drupal_goto($redirect); |
|
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')) { |
|
418 | + if ($include_dir = boinc_get_path('html_inc')) { |
|
419 | 419 | $working_dir = getcwd(); |
420 | 420 | chdir($include_dir); |
421 | 421 | if (!is_array($libraries)) { |
422 | - $libraries = array($libraries); |
|
422 | + $libraries = array($libraries); |
|
423 | 423 | } |
424 | 424 | foreach ($libraries as $library) { |
425 | - require_once("{$library}.inc"); |
|
425 | + require_once("{$library}.inc"); |
|
426 | 426 | } |
427 | 427 | chdir($working_dir); |
428 | - } |
|
428 | + } |
|
429 | 429 | } |
430 | 430 | |
431 | 431 | /** |
@@ -433,7 +433,7 @@ 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()) { |
|
436 | + if ($include_dir = boinc_get_path()) { |
|
437 | 437 | $include_dir .= '/html'; |
438 | 438 | $workingDir = getcwd(); |
439 | 439 | $path = dirname($file); |
@@ -441,84 +441,84 @@ discard block |
||
441 | 441 | chdir("{$include_dir}/{$path}"); |
442 | 442 | include($file); |
443 | 443 | chdir($workingDir); |
444 | - } |
|
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", '')) { |
|
451 | + $dir = "boinc_{$type}_dir"; |
|
452 | + if ($include_dir = variable_get("boinc_{$type}_dir", '')) { |
|
453 | 453 | return $include_dir; |
454 | - } |
|
455 | - else { |
|
454 | + } |
|
455 | + else { |
|
456 | 456 | // Don't show errors on blacklisted pages |
457 | 457 | $page_blacklist = array( |
458 | - 'admin/boinc/environment' |
|
458 | + 'admin/boinc/environment' |
|
459 | 459 | ); |
460 | 460 | if (!in_array($_GET['q'], $page_blacklist)) { |
461 | - watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
461 | + watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
462 | 462 | !configure_it', array('!configure_it' => l(t('configure it now'), |
463 | 463 | 'admin/boinc/environment')), WATCHDOG_WARNING); |
464 | - if (user_access('administer site configuration')) { |
|
464 | + if (user_access('administer site configuration')) { |
|
465 | 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 | 467 | 'admin/boinc/environment'))), 'warning', FALSE); |
468 | - } |
|
469 | - else { |
|
468 | + } |
|
469 | + else { |
|
470 | 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( |
|
472 | + } |
|
473 | + // Redirect home to display the error message and avoid fatal errors |
|
474 | + // (unless on a blacklisted page) |
|
475 | + $redirect_blacklist = array( |
|
476 | 476 | 'admin/settings/performance', |
477 | 477 | 'admin/boinc/environment', |
478 | 478 | 'home', |
479 | 479 | '' |
480 | - ); |
|
481 | - if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
480 | + ); |
|
481 | + if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
482 | 482 | drupal_goto(''); |
483 | - } |
|
483 | + } |
|
484 | 484 | } |
485 | 485 | else { |
486 | - // Clear the messages on the environment config page |
|
487 | - drupal_get_messages(); |
|
486 | + // Clear the messages on the environment config page |
|
487 | + drupal_get_messages(); |
|
488 | 488 | } |
489 | - } |
|
490 | - return FALSE; |
|
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( |
|
497 | + // Don't generate messages for blacklisted pages |
|
498 | + $page_blacklist = array( |
|
499 | 499 | 'admin/boinc/environment', |
500 | 500 | 'admin/boinc/scheduler' |
501 | - ); |
|
502 | - if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
501 | + ); |
|
502 | + if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
503 | 503 | return explode("\r\n", $url_config); |
504 | - } |
|
505 | - elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
504 | + } |
|
505 | + elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
506 | 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>' . |
|
508 | + array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
509 | 509 | t('and') . '</strong> ' . t('save the configuration'), |
510 | 510 | 'admin/boinc/scheduler', array('html' => TRUE)) |
511 | - ), WATCHDOG_WARNING); |
|
511 | + ), WATCHDOG_WARNING); |
|
512 | 512 | if (user_access('administer site configuration')) { |
513 | - drupal_set_message(t('The BOINC scheduling server settings are not yet |
|
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 | 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)) |
|
516 | + t('and') . '</strong> ' . t('save the configuration'), |
|
517 | + 'admin/boinc/scheduler', array('html' => TRUE)) |
|
518 | 518 | )), 'warning', FALSE); |
519 | 519 | } |
520 | - } |
|
521 | - return array(); |
|
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) { |
|
533 | + global $user; |
|
534 | + if (!$user->uid) { |
|
535 | 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); |
|
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) { |
|
557 | + if (!$user_id) { |
|
558 | 558 | global $user; |
559 | 559 | $user_id = $user->uid; |
560 | 560 | $is_drupal_id = TRUE; |
561 | - } |
|
562 | - if ($is_drupal_id) { |
|
561 | + } |
|
562 | + if ($is_drupal_id) { |
|
563 | 563 | $account = user_load($user_id); |
564 | 564 | $user_id = $account->boincuser_id; |
565 | - } |
|
566 | - require_boinc('boinc_db'); |
|
567 | - return BoincUser::lookup_id($user_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(parse_serialnum($x)) : 'err!'; |
|
591 | + require_boinc('host'); |
|
592 | + return function_exists('boinc_version') ? boinc_version(parse_serialnum($x)) : 'err!'; |
|
593 | 593 | } |
594 | 594 | |
595 | 595 | |
@@ -598,14 +598,14 @@ discard block |
||
598 | 598 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
599 | 599 | |
600 | 600 | /** |
601 | - * Generate the friend block header |
|
602 | - */ |
|
601 | + * Generate the friend block header |
|
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)', |
|
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 | 609 | array('@count' => $friend_count)) . '</h2>'; |
610 | 610 | } |
611 | 611 | |
@@ -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 | - } |
|
624 | - |
|
625 | - drupal_json((object)$matches); |
|
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 | + |
|
625 | + drupal_json((object)$matches); |
|
626 | 626 | } |
@@ -35,7 +35,7 @@ discard block |
||
35 | 35 | $host = BoincHost::lookup_id($res->hostid); |
36 | 36 | $hosts[$res->hostid] = $host; |
37 | 37 | } |
38 | - $fpops = $res->cpu_time * $host->p_fpops; |
|
38 | + $fpops = $res->cpu_time*$host->p_fpops; |
|
39 | 39 | $samples[] = $res->cpu_time; |
40 | 40 | //$fpops /= 1e9; |
41 | 41 | //echo "$res->cpu_time $fpops\n"; |
@@ -45,11 +45,11 @@ discard block |
||
45 | 45 | } |
46 | 46 | |
47 | 47 | function show($samples) { |
48 | - $x = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; |
|
48 | + $x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; |
|
49 | 49 | foreach ($samples as $s) { |
50 | 50 | $x[(int)log10($s)] += 1; |
51 | 51 | } |
52 | - for ($i=0; $i<16; $i++) { |
|
52 | + for ($i = 0; $i < 16; $i++) { |
|
53 | 53 | echo sprintf("%d: %d\n", $i, $x[$i]); |
54 | 54 | } |
55 | 55 | } |
@@ -158,7 +158,7 @@ discard block |
||
158 | 158 | $user_submit = BoincUserSubmit::lookup_userid($user->id); |
159 | 159 | if (!$user_submit) return null; |
160 | 160 | $a = array(); |
161 | - foreach($apps as $app) { |
|
161 | + foreach ($apps as $app) { |
|
162 | 162 | if ($user_submit->submit_all) { |
163 | 163 | $a[] = $app; |
164 | 164 | } else { |
@@ -235,9 +235,9 @@ discard block |
||
235 | 235 | $input_url = get_str('input_url'); |
236 | 236 | if (!$input_url) error_page("missing input URL"); |
237 | 237 | $param_lo = (double)get_str('param_lo'); |
238 | - if ($param_lo<0 || $param_lo>60) error_page("param lo must be in 0..60"); |
|
238 | + if ($param_lo < 0 || $param_lo > 60) error_page("param lo must be in 0..60"); |
|
239 | 239 | $param_hi = (double)get_str('param_hi'); |
240 | - if ($param_hi<0 || $param_hi>60 || $param_hi <= $param_lo) { |
|
240 | + if ($param_hi < 0 || $param_hi > 60 || $param_hi <= $param_lo) { |
|
241 | 241 | error_page("param hi must be in 0..60 and > param lo"); |
242 | 242 | } |
243 | 243 | $param_inc = (double)get_str('param_inc'); |
@@ -254,7 +254,7 @@ discard block |
||
254 | 254 | $f->source = $input_url; |
255 | 255 | $f->mode = 'semilocal'; |
256 | 256 | |
257 | - for ($x=$param_lo; $x<$param_hi; $x += $param_inc) { |
|
257 | + for ($x = $param_lo; $x < $param_hi; $x += $param_inc) { |
|
258 | 258 | $job = new StdClass; |
259 | 259 | $job->rsc_fpops_est = $x*1e9; |
260 | 260 | $job->command_line = "--t $x"; |
@@ -343,7 +343,7 @@ discard block |
||
343 | 343 | "status", |
344 | 344 | "Canonical instance<br><p class=\"text-muted\">click to see result page on BOINC server</p>" |
345 | 345 | ); |
346 | - foreach($batch->jobs as $job) { |
|
346 | + foreach ($batch->jobs as $job) { |
|
347 | 347 | $id = (int)$job->id; |
348 | 348 | $resultid = (int)$job->canonical_instance_id; |
349 | 349 | if ($resultid) { |
@@ -386,7 +386,7 @@ discard block |
||
386 | 386 | "Instance ID<br><p class=\"text-muted\">click for result page on BOINC server</p>", |
387 | 387 | "State", "Output files" |
388 | 388 | ); |
389 | - foreach($reply->instances as $inst) { |
|
389 | + foreach ($reply->instances as $inst) { |
|
390 | 390 | echo "<tr> |
391 | 391 | <td><a href=result.php?resultid=$inst->id>$inst->id</a></td> |
392 | 392 | <td>$inst->state</td> |
@@ -31,7 +31,7 @@ |
||
31 | 31 | function reg_form() { |
32 | 32 | $config = get_config(); |
33 | 33 | $disable_acct = parse_bool($config, "disable_account_creation"); |
34 | - page_head("Register", null, null, null, boinc_recaptcha_get_head_extra()); |
|
34 | + page_head("Register", null, null, null, boinc_recaptcha_get_head_extra()); |
|
35 | 35 | echo "<h3>Create an account</h3>"; |
36 | 36 | form_start("create_account_action.php", "post"); |
37 | 37 | create_account_form(0, "download_software.php"); |
@@ -64,7 +64,7 @@ |
||
64 | 64 | } |
65 | 65 | } |
66 | 66 | |
67 | -form_start("create_account_action.php","post"); |
|
67 | +form_start("create_account_action.php", "post"); |
|
68 | 68 | create_account_form($teamid, $next_url); |
69 | 69 | if (recaptcha_public_key()) { |
70 | 70 | form_general("", boinc_recaptcha_get_html(recaptcha_public_key())); |
@@ -58,10 +58,10 @@ |
||
58 | 58 | //panel(null, 'panel_contents'); |
59 | 59 | } |
60 | 60 | |
61 | -function left(){ |
|
61 | +function left() { |
|
62 | 62 | global $user, $no_web_account_creation, $project_id; |
63 | 63 | panel( |
64 | - $user?tra("Welcome, %1", $user->name):tra("What is %1?", PROJECT), |
|
64 | + $user ?tra("Welcome, %1", $user->name) : tra("What is %1?", PROJECT), |
|
65 | 65 | function() use($user) { |
66 | 66 | global $no_web_account_creation, $project_id; |
67 | 67 | if ($user) { |
@@ -58,7 +58,7 @@ |
||
58 | 58 | //panel(null, 'panel_contents'); |
59 | 59 | } |
60 | 60 | |
61 | -function left(){ |
|
61 | +function left() { |
|
62 | 62 | global $user, $no_web_account_creation, $project_id; |
63 | 63 | panel( |
64 | 64 | $user?tra("Welcome, %1", $user->name):tra("What is %1?", PROJECT), |
@@ -32,7 +32,7 @@ discard block |
||
32 | 32 | // If $selection is provided, and if it matches one of the entries in the file, |
33 | 33 | // it will be selected by default. |
34 | 34 | // |
35 | -function show_combo_box($name, $filename, $selection=null) { |
|
35 | +function show_combo_box($name, $filename, $selection = null) { |
|
36 | 36 | echo "<select name=\"$name\" class=\"form-control\">\n"; |
37 | 37 | |
38 | 38 | $file = fopen($filename, "r"); |
@@ -63,14 +63,14 @@ discard block |
||
63 | 63 | <tr><td colspan=2> |
64 | 64 | <table border=0 cellpadding=5 |
65 | 65 | <tr> |
66 | -<td valign=top><a href=\"" . IMAGE_URL . $profile->userid . '.jpg' . "\"><img src=\"" . IMAGE_URL . $profile->userid . '_sm.jpg' . "\"></a> |
|
66 | +<td valign=top><a href=\"" . IMAGE_URL.$profile->userid.'.jpg'."\"><img src=\"".IMAGE_URL.$profile->userid.'_sm.jpg'."\"></a> |
|
67 | 67 | </td> |
68 | -<td valign=top>" .tra("%1 Your profile picture is shown to the left.", $warning) ." |
|
68 | +<td valign=top>" .tra("%1 Your profile picture is shown to the left.", $warning)." |
|
69 | 69 | <p>". |
70 | -tra("To replace it, click the \"Browse\" button and select a JPEG or PNG file (%1 or less).", "50KB") ."<br /> |
|
70 | +tra("To replace it, click the \"Browse\" button and select a JPEG or PNG file (%1 or less).", "50KB")."<br /> |
|
71 | 71 | <input name=picture type=file><br> |
72 | 72 | <p>". |
73 | -tra("To remove it from your profile, check this box:") . " |
|
73 | +tra("To remove it from your profile, check this box:")." |
|
74 | 74 | <input type=checkbox name=delete_pic> |
75 | 75 | <p> |
76 | 76 | </td></tr>"; |
@@ -78,7 +78,7 @@ discard block |
||
78 | 78 | end_table(); |
79 | 79 | echo "</td></tr>"; |
80 | 80 | } else { |
81 | - rowify(tra("If you would like include a picture with your profile, click the \"Browse\" button and select a JPEG or PNG file. Please select images of %1 or less.", "50KB") . " |
|
81 | + rowify(tra("If you would like include a picture with your profile, click the \"Browse\" button and select a JPEG or PNG file. Please select images of %1 or less.", "50KB")." |
|
82 | 82 | <p> |
83 | 83 | <input name=picture type=file> |
84 | 84 | "); |
@@ -93,7 +93,7 @@ discard block |
||
93 | 93 | row1(tra("Language")); |
94 | 94 | echo "<tr><td> |
95 | 95 | <p>" . |
96 | - tra("Select the language in which your profile is written:") . " |
|
96 | + tra("Select the language in which your profile is written:")." |
|
97 | 97 | <p> |
98 | 98 | "; |
99 | 99 | if (isset($profile->language)) { |
@@ -109,7 +109,7 @@ discard block |
||
109 | 109 | if (recaptcha_public_key()) { |
110 | 110 | table_row(boinc_recaptcha_get_html(recaptcha_public_key())); |
111 | 111 | } |
112 | - table_row("<p><input class=\"btn btn-success\" type=\"submit\" value=\"".tra("Create/edit profile") ."\" name=\"submit\">"); |
|
112 | + table_row("<p><input class=\"btn btn-success\" type=\"submit\" value=\"".tra("Create/edit profile")."\" name=\"submit\">"); |
|
113 | 113 | } |
114 | 114 | |
115 | 115 | // Returns an array containing: |
@@ -123,7 +123,7 @@ discard block |
||
123 | 123 | |
124 | 124 | // Determine if the filetype uploaded is supported. |
125 | 125 | // TODO: Change these to constants. |
126 | - switch($size[2]) { |
|
126 | + switch ($size[2]) { |
|
127 | 127 | case '2': // JPEG |
128 | 128 | $image = imageCreateFromJPEG($fileName); |
129 | 129 | break; |
@@ -160,7 +160,7 @@ discard block |
||
160 | 160 | |
161 | 161 | function show_description() { |
162 | 162 | echo " |
163 | - <p>" .tra("Your %1 profile %2 lets you share your opinions and background with the %3 community.", "<b>", "</b>", PROJECT) . " |
|
163 | + <p>" .tra("Your %1 profile %2 lets you share your opinions and background with the %3 community.", "<b>", "</b>", PROJECT)." |
|
164 | 164 | <p> |
165 | 165 | "; |
166 | 166 | } |
@@ -178,14 +178,14 @@ discard block |
||
178 | 178 | row1(show_profile_heading1()); |
179 | 179 | rowify(show_profile_question1().bbcode_info()); |
180 | 180 | show_textarea("response1", $response1); |
181 | - row1( show_profile_heading2()); |
|
182 | - rowify( show_profile_question2().bbcode_info()); |
|
181 | + row1(show_profile_heading2()); |
|
182 | + rowify(show_profile_question2().bbcode_info()); |
|
183 | 183 | show_textarea("response2", $response2); |
184 | 184 | show_language_selection($profile); |
185 | 185 | } |
186 | 186 | |
187 | 187 | function show_textarea($name, $text) { |
188 | - rowify("<textarea name=\"$name\" class=\"form-control\" rows=\"10\">" . $text . "</textarea>"); |
|
188 | + rowify("<textarea name=\"$name\" class=\"form-control\" rows=\"10\">".$text."</textarea>"); |
|
189 | 189 | } |
190 | 190 | |
191 | 191 | // $profile is null if user doesn't already have a profile. |
@@ -229,8 +229,8 @@ discard block |
||
229 | 229 | $delete_pic = "off"; |
230 | 230 | } |
231 | 231 | |
232 | - if (strlen($response1)==0 && |
|
233 | - strlen($response2)==0 && |
|
232 | + if (strlen($response1) == 0 && |
|
233 | + strlen($response2) == 0 && |
|
234 | 234 | $delete_pic != "on" && |
235 | 235 | !is_uploaded_file($_FILES['picture']['tmp_name']) |
236 | 236 | ) { |
@@ -244,7 +244,7 @@ discard block |
||
244 | 244 | $profile->verification = 0; |
245 | 245 | } |
246 | 246 | |
247 | - $profile ? $has_picture = $profile->has_picture: $has_picture = false; |
|
247 | + $profile ? $has_picture = $profile->has_picture : $has_picture = false; |
|
248 | 248 | |
249 | 249 | if (is_uploaded_file($_FILES['picture']['tmp_name'])) { |
250 | 250 | $has_picture = true; |
@@ -259,13 +259,13 @@ discard block |
||
259 | 259 | |
260 | 260 | // Write the original image file to disk. |
261 | 261 | // TODO: define a constant for image quality. |
262 | - ImageJPEG($images[0], IMAGE_PATH . $user->id . '.jpg'); |
|
263 | - ImageJPEG($images[1], IMAGE_PATH . $user->id . '_sm.jpg'); |
|
262 | + ImageJPEG($images[0], IMAGE_PATH.$user->id.'.jpg'); |
|
263 | + ImageJPEG($images[1], IMAGE_PATH.$user->id.'_sm.jpg'); |
|
264 | 264 | } |
265 | 265 | $response1 = sanitize_html($response1); |
266 | 266 | $response2 = sanitize_html($response2); |
267 | 267 | |
268 | - $has_picture = $has_picture?1:0; |
|
268 | + $has_picture = $has_picture ? 1 : 0; |
|
269 | 269 | if ($profile) { |
270 | 270 | $query = " response1 = '".BoincDb::escape_string($response1)."'," |
271 | 271 | ." response2 = '".BoincDb::escape_string($response2)."'," |
@@ -307,7 +307,7 @@ discard block |
||
307 | 307 | page_tail(); |
308 | 308 | } |
309 | 309 | |
310 | -function show_profile_form($profile, $warning=null) { |
|
310 | +function show_profile_form($profile, $warning = null) { |
|
311 | 311 | if ($profile) { |
312 | 312 | page_head(tra("Edit your profile"), null, null, null, boinc_recaptcha_get_head_extra()); |
313 | 313 | } else { |
@@ -28,138 +28,138 @@ |
||
28 | 28 | check_tokens($user->authenticator); |
29 | 29 | |
30 | 30 | function account_ownership_action($user) { |
31 | - // POST request - the user has submitted the form. |
|
32 | - page_head(tra("Proof of account ownership results"), null, null, null, boinc_recaptcha_get_head_extra()); |
|
33 | - |
|
34 | - if (recaptcha_private_key()) { |
|
35 | - // Recaptcha is enabled on the BOINC server |
|
36 | - if (!boinc_recaptcha_isValidated(recaptcha_private_key())) { |
|
37 | - // The user failed to solve the recaptcha prompt - redirect them to an error message! |
|
38 | - error_page( |
|
39 | - tra("Your reCAPTCHA response was not correct. Please try again.") |
|
40 | - ); |
|
41 | - } |
|
42 | - } |
|
43 | - |
|
44 | - // Input is passed in from the openssl_sign_form |
|
45 | - $user_data = htmlentities(post_str("user_data", true), ENT_QUOTES, "UTF-8"); // Convert special characters to html equivelant |
|
46 | - |
|
47 | - if ((strlen($user_data) > 0) && (strlen($user_data) <= 4096)) { |
|
48 | - require_once("../inc/account_ownership.inc"); |
|
49 | - // Check that the private key file exists where specified. If not, redirect to error page. |
|
50 | - if (!file_exists($account_ownership_private_key_file_path)) { |
|
51 | - error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
52 | - } |
|
53 | - |
|
54 | - // Check that the public key file exists where specified. If not, redirect to error page. |
|
55 | - if (!file_exists($account_ownership_public_key_file_path)) { |
|
56 | - error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
57 | - } |
|
58 | - |
|
59 | - $privkey = fopen($account_ownership_private_key_file_path, "r"); // Opening private key file |
|
60 | - if (!isset($privkey) || empty($privkey)) { |
|
31 | + // POST request - the user has submitted the form. |
|
32 | + page_head(tra("Proof of account ownership results"), null, null, null, boinc_recaptcha_get_head_extra()); |
|
33 | + |
|
34 | + if (recaptcha_private_key()) { |
|
35 | + // Recaptcha is enabled on the BOINC server |
|
36 | + if (!boinc_recaptcha_isValidated(recaptcha_private_key())) { |
|
37 | + // The user failed to solve the recaptcha prompt - redirect them to an error message! |
|
38 | + error_page( |
|
39 | + tra("Your reCAPTCHA response was not correct. Please try again.") |
|
40 | + ); |
|
41 | + } |
|
42 | + } |
|
43 | + |
|
44 | + // Input is passed in from the openssl_sign_form |
|
45 | + $user_data = htmlentities(post_str("user_data", true), ENT_QUOTES, "UTF-8"); // Convert special characters to html equivelant |
|
46 | + |
|
47 | + if ((strlen($user_data) > 0) && (strlen($user_data) <= 4096)) { |
|
48 | + require_once("../inc/account_ownership.inc"); |
|
49 | + // Check that the private key file exists where specified. If not, redirect to error page. |
|
50 | + if (!file_exists($account_ownership_private_key_file_path)) { |
|
51 | + error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
52 | + } |
|
53 | + |
|
54 | + // Check that the public key file exists where specified. If not, redirect to error page. |
|
55 | + if (!file_exists($account_ownership_public_key_file_path)) { |
|
56 | + error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
57 | + } |
|
58 | + |
|
59 | + $privkey = fopen($account_ownership_private_key_file_path, "r"); // Opening private key file |
|
60 | + if (!isset($privkey) || empty($privkey)) { |
|
61 | 61 | error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
62 | - } |
|
63 | - $privkey_contents = fread($privkey, 8192); // Reading contents of private key into var |
|
64 | - fclose($privkey); // Closing private key file |
|
62 | + } |
|
63 | + $privkey_contents = fread($privkey, 8192); // Reading contents of private key into var |
|
64 | + fclose($privkey); // Closing private key file |
|
65 | 65 | |
66 | - $userid = $user->id; // Retrieving the user's UserId |
|
67 | - $message_data = "$userid $user_data"; // Create the message which will be signed. |
|
66 | + $userid = $user->id; // Retrieving the user's UserId |
|
67 | + $message_data = "$userid $user_data"; // Create the message which will be signed. |
|
68 | 68 | |
69 | - $private_key_pem = openssl_pkey_get_private($privkey_contents); // Loading the private key into memory |
|
70 | - openssl_sign($message_data, $signature, $private_key_pem, OPENSSL_ALGO_SHA512); // Compute signature using SHA512 |
|
71 | - openssl_free_key($private_key_pem); // Free the private key from memory for additional security |
|
69 | + $private_key_pem = openssl_pkey_get_private($privkey_contents); // Loading the private key into memory |
|
70 | + openssl_sign($message_data, $signature, $private_key_pem, OPENSSL_ALGO_SHA512); // Compute signature using SHA512 |
|
71 | + openssl_free_key($private_key_pem); // Free the private key from memory for additional security |
|
72 | 72 | |
73 | - $pubkey = fopen($account_ownership_public_key_file_path, "r"); // Open public key file |
|
74 | - if ((!isset($pubkey)) || empty($pubkey)) { |
|
73 | + $pubkey = fopen($account_ownership_public_key_file_path, "r"); // Open public key file |
|
74 | + if ((!isset($pubkey)) || empty($pubkey)) { |
|
75 | 75 | error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
76 | - } |
|
77 | - $pubkey_contents = fread($pubkey, 8192); // Read contents to var |
|
78 | - fclose($pubkey); // Close pub key file |
|
79 | - |
|
80 | - $base64_sig = base64_encode($signature); // Base64 encode the generated signature to enable safe output to text file. |
|
81 | - $decoded_sig = base64_decode($base64_sig); // Decode base64 sig for use in sig_verification |
|
82 | - $pubkeyid = openssl_pkey_get_public($pubkey_contents); // fetch public key into memory |
|
83 | - $sig_verification = openssl_verify($message_data, $decoded_sig, $pubkeyid, OPENSSL_ALGO_SHA512); // Verify that the generated signature against the original data, using the public key. |
|
84 | - openssl_free_key($pubkeyid); // Free the public key from memory |
|
85 | - |
|
86 | - // Check if signature was successfully validated |
|
87 | - if ($sig_verification == 1) { |
|
88 | - $url_tokens = url_tokens($user->authenticator); |
|
89 | - // The generated signature has been successfully verified using the public key. |
|
90 | - $master_url = master_url(); |
|
91 | - echo "<p>Do not share this information with anyone other than the external system which has requested this proof of account ownership.</p>"; |
|
92 | - echo "<textarea rows='13' cols='50' id='result_textbox'><account_ownership_verification>\n<master_url>$master_url</master_url>\n<msg>$message_data</msg>\n<signature>$base64_sig</signature>\n</account_ownership_verification></textarea>"; |
|
93 | - echo "<br/><br/><button class='btn btn-success' onclick='copy_result_textbox()'>Copy text</button>"; |
|
94 | - echo "<a href='account_ownership.php?$url_tokens'><button class='btn btn-default'>Go back</button></a>"; |
|
95 | - echo '<script type="text/javascript">'; |
|
96 | - echo 'function copy_result_textbox() { |
|
76 | + } |
|
77 | + $pubkey_contents = fread($pubkey, 8192); // Read contents to var |
|
78 | + fclose($pubkey); // Close pub key file |
|
79 | + |
|
80 | + $base64_sig = base64_encode($signature); // Base64 encode the generated signature to enable safe output to text file. |
|
81 | + $decoded_sig = base64_decode($base64_sig); // Decode base64 sig for use in sig_verification |
|
82 | + $pubkeyid = openssl_pkey_get_public($pubkey_contents); // fetch public key into memory |
|
83 | + $sig_verification = openssl_verify($message_data, $decoded_sig, $pubkeyid, OPENSSL_ALGO_SHA512); // Verify that the generated signature against the original data, using the public key. |
|
84 | + openssl_free_key($pubkeyid); // Free the public key from memory |
|
85 | + |
|
86 | + // Check if signature was successfully validated |
|
87 | + if ($sig_verification == 1) { |
|
88 | + $url_tokens = url_tokens($user->authenticator); |
|
89 | + // The generated signature has been successfully verified using the public key. |
|
90 | + $master_url = master_url(); |
|
91 | + echo "<p>Do not share this information with anyone other than the external system which has requested this proof of account ownership.</p>"; |
|
92 | + echo "<textarea rows='13' cols='50' id='result_textbox'><account_ownership_verification>\n<master_url>$master_url</master_url>\n<msg>$message_data</msg>\n<signature>$base64_sig</signature>\n</account_ownership_verification></textarea>"; |
|
93 | + echo "<br/><br/><button class='btn btn-success' onclick='copy_result_textbox()'>Copy text</button>"; |
|
94 | + echo "<a href='account_ownership.php?$url_tokens'><button class='btn btn-default'>Go back</button></a>"; |
|
95 | + echo '<script type="text/javascript">'; |
|
96 | + echo 'function copy_result_textbox() { |
|
97 | 97 | var target_textbox = document.getElementById("result_textbox"); |
98 | 98 | target_textbox.select(); |
99 | 99 | document.execCommand("copy"); |
100 | 100 | alert("Copied to clipboard"); |
101 | 101 | }'; |
102 | - echo '</script>'; |
|
103 | - page_tail(); |
|
104 | - |
|
105 | - } elseif ($sig_verification == 0) { |
|
106 | - // The generated signature has not been verified. The private/public keys do not match. |
|
107 | - error_page(tra("Signature verification failed. Contact the project administrator to resolve the issue.")); |
|
108 | - } else { |
|
109 | - // Something has gone wrong & an error has occurred. |
|
110 | - error_page(tra("An error occurred during the signature verification. Contact the project administrator to resolve the issue.")); |
|
111 | - } |
|
112 | - } else { |
|
113 | - // User data input invalid |
|
114 | - error_page(tra("Invalid input. User input must have a length > 0 and < 4096. <form><input type='button' value='Go back!'' onclick='history.back()'></form>")); |
|
115 | - } |
|
102 | + echo '</script>'; |
|
103 | + page_tail(); |
|
104 | + |
|
105 | + } elseif ($sig_verification == 0) { |
|
106 | + // The generated signature has not been verified. The private/public keys do not match. |
|
107 | + error_page(tra("Signature verification failed. Contact the project administrator to resolve the issue.")); |
|
108 | + } else { |
|
109 | + // Something has gone wrong & an error has occurred. |
|
110 | + error_page(tra("An error occurred during the signature verification. Contact the project administrator to resolve the issue.")); |
|
111 | + } |
|
112 | + } else { |
|
113 | + // User data input invalid |
|
114 | + error_page(tra("Invalid input. User input must have a length > 0 and < 4096. <form><input type='button' value='Go back!'' onclick='history.back()'></form>")); |
|
115 | + } |
|
116 | 116 | } |
117 | 117 | |
118 | 118 | function account_ownership_form($user) { |
119 | - // GET request - the user has navigated to the page. |
|
120 | - page_head(tra("Generate proof of account ownership"), null, null, null, boinc_recaptcha_get_head_extra()); |
|
121 | - |
|
122 | - if ($user) { // Verify the user is logged in |
|
123 | - require_once("../inc/account_ownership.inc"); |
|
124 | - |
|
125 | - if (!file_exists($account_ownership_private_key_file_path)) { |
|
126 | - // Check that the private key file exists where specified. If not, redirect to error page. |
|
127 | - error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
128 | - } |
|
129 | - |
|
130 | - if (!file_exists($account_ownership_public_key_file_path)) { |
|
131 | - // Check that the public key file exists where specified. If not, redirect to error page. |
|
132 | - error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
133 | - } |
|
134 | - |
|
135 | - echo "<p>This tool is designed to create a proof of account ownership for external systems.</p>"; |
|
136 | - |
|
137 | - if (recaptcha_public_key()) { |
|
138 | - // Recaptcha configured |
|
139 | - echo "<p>Enter a message with length less than 4096 characters into the input textbox below, solve the captcha then click the 'Generate' button.</p>"; |
|
140 | - } else { |
|
141 | - // Recaptcha not configured |
|
142 | - echo "<p>Enter a message with length less than 4096 characters into the input textbox below then click the 'Generate' button.</p>"; |
|
143 | - } |
|
144 | - echo "<p>A textbox will then appear which contains your proof of account ownership."; |
|
145 | - echo "<form method=post action=account_ownership.php>"; |
|
146 | - |
|
147 | - echo form_tokens($user->authenticator); |
|
148 | - echo "<textarea rows='4' cols='50' name=user_data type=text size=20 placeholder='Enter text'></textarea><br/><br/>"; |
|
149 | - |
|
150 | - if (recaptcha_public_key()) { |
|
151 | - // Trigger recaptcha! |
|
152 | - form_general("", boinc_recaptcha_get_html(recaptcha_public_key())); |
|
153 | - } |
|
154 | - |
|
155 | - echo "<input class=\"btn btn-success\" type=submit value='".tra("Generate")."'>"; |
|
156 | - echo "</form><br/><hr/>"; |
|
157 | - } else { |
|
158 | - // The user is not logged in! |
|
159 | - echo "<p>You need to be logged in to use this functionality.</p>"; |
|
160 | - } |
|
161 | - |
|
162 | - page_tail(); |
|
119 | + // GET request - the user has navigated to the page. |
|
120 | + page_head(tra("Generate proof of account ownership"), null, null, null, boinc_recaptcha_get_head_extra()); |
|
121 | + |
|
122 | + if ($user) { // Verify the user is logged in |
|
123 | + require_once("../inc/account_ownership.inc"); |
|
124 | + |
|
125 | + if (!file_exists($account_ownership_private_key_file_path)) { |
|
126 | + // Check that the private key file exists where specified. If not, redirect to error page. |
|
127 | + error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
128 | + } |
|
129 | + |
|
130 | + if (!file_exists($account_ownership_public_key_file_path)) { |
|
131 | + // Check that the public key file exists where specified. If not, redirect to error page. |
|
132 | + error_page(tra("The proof of account ownership feature is not set up properly. Contact the project administrator to resolve the issue.")); |
|
133 | + } |
|
134 | + |
|
135 | + echo "<p>This tool is designed to create a proof of account ownership for external systems.</p>"; |
|
136 | + |
|
137 | + if (recaptcha_public_key()) { |
|
138 | + // Recaptcha configured |
|
139 | + echo "<p>Enter a message with length less than 4096 characters into the input textbox below, solve the captcha then click the 'Generate' button.</p>"; |
|
140 | + } else { |
|
141 | + // Recaptcha not configured |
|
142 | + echo "<p>Enter a message with length less than 4096 characters into the input textbox below then click the 'Generate' button.</p>"; |
|
143 | + } |
|
144 | + echo "<p>A textbox will then appear which contains your proof of account ownership."; |
|
145 | + echo "<form method=post action=account_ownership.php>"; |
|
146 | + |
|
147 | + echo form_tokens($user->authenticator); |
|
148 | + echo "<textarea rows='4' cols='50' name=user_data type=text size=20 placeholder='Enter text'></textarea><br/><br/>"; |
|
149 | + |
|
150 | + if (recaptcha_public_key()) { |
|
151 | + // Trigger recaptcha! |
|
152 | + form_general("", boinc_recaptcha_get_html(recaptcha_public_key())); |
|
153 | + } |
|
154 | + |
|
155 | + echo "<input class=\"btn btn-success\" type=submit value='".tra("Generate")."'>"; |
|
156 | + echo "</form><br/><hr/>"; |
|
157 | + } else { |
|
158 | + // The user is not logged in! |
|
159 | + echo "<p>You need to be logged in to use this functionality.</p>"; |
|
160 | + } |
|
161 | + |
|
162 | + page_tail(); |
|
163 | 163 | } |
164 | 164 | |
165 | 165 | if ($_SERVER['REQUEST_METHOD'] === 'POST') { |
@@ -30,7 +30,7 @@ discard block |
||
30 | 30 | require_once("../inc/bootstrap.inc"); |
31 | 31 | |
32 | 32 | function master_url() { |
33 | - return parse_config(get_config() , "<master_url>"); |
|
33 | + return parse_config(get_config(), "<master_url>"); |
|
34 | 34 | } |
35 | 35 | function recaptcha_public_key() { |
36 | 36 | return parse_config(get_config(), "<recaptcha_public_key>"); |
@@ -42,10 +42,10 @@ discard block |
||
42 | 42 | // Set parameters to defaults if not defined in config.xml |
43 | 43 | |
44 | 44 | $x = parse_config(get_config(), "<user_country>"); |
45 | -define('USER_COUNTRY', ($x===null)?1:(int)$x); |
|
45 | +define('USER_COUNTRY', ($x === null) ? 1 : (int)$x); |
|
46 | 46 | |
47 | 47 | $x = parse_config(get_config(), "<user_url>"); |
48 | -define('USER_URL', ($x===null)?1:(int)$x); |
|
48 | +define('USER_URL', ($x === null) ? 1 : (int)$x); |
|
49 | 49 | |
50 | 50 | // Set parameters to defaults if not defined in project.inc |
51 | 51 | |
@@ -155,10 +155,10 @@ discard block |
||
155 | 155 | } |
156 | 156 | |
157 | 157 | function url_base() { |
158 | - return is_https()?secure_url_base():URL_BASE; |
|
158 | + return is_https() ?secure_url_base() : URL_BASE; |
|
159 | 159 | } |
160 | 160 | |
161 | -function send_cookie($name, $value, $permanent, $ops=false) { |
|
161 | +function send_cookie($name, $value, $permanent, $ops = false) { |
|
162 | 162 | // the following allows independent login for projects on the same server |
163 | 163 | // |
164 | 164 | $url = parse_url(master_url()); |
@@ -167,28 +167,28 @@ discard block |
||
167 | 167 | $path = substr($path, 0, -1); |
168 | 168 | $path .= "_ops/"; |
169 | 169 | } |
170 | - $expire = $permanent?time()+3600*24*365:0; |
|
170 | + $expire = $permanent ?time() + 3600*24*365 : 0; |
|
171 | 171 | setcookie($name, $value, $expire, $path, |
172 | 172 | '', |
173 | - is_https(), // if this page is secure, make cookie secure |
|
173 | + is_https(), // if this page is secure, make cookie secure |
|
174 | 174 | true // httponly; no JS access |
175 | 175 | ); |
176 | 176 | } |
177 | 177 | |
178 | -function clear_cookie($name, $ops=false) { |
|
178 | +function clear_cookie($name, $ops = false) { |
|
179 | 179 | $url = parse_url(master_url()); |
180 | 180 | $path = $url['path']; |
181 | 181 | if ($ops) { |
182 | 182 | $path = substr($path, 0, -1); |
183 | 183 | $path .= "_ops/"; |
184 | 184 | } |
185 | - setcookie($name, '', time()-3600, $path); |
|
185 | + setcookie($name, '', time() - 3600, $path); |
|
186 | 186 | } |
187 | 187 | |
188 | 188 | $g_logged_in_user = null; |
189 | 189 | $got_logged_in_user = false; |
190 | 190 | |
191 | -function get_logged_in_user($must_be_logged_in=true) { |
|
191 | +function get_logged_in_user($must_be_logged_in = true) { |
|
192 | 192 | global $g_logged_in_user, $got_logged_in_user; |
193 | 193 | if ($got_logged_in_user) { |
194 | 194 | // this could have been called earlier with $must_be_logged_in false |
@@ -214,7 +214,7 @@ discard block |
||
214 | 214 | $next_url = $_SERVER['REQUEST_URI']; |
215 | 215 | $n = strrpos($next_url, "/"); |
216 | 216 | if ($n) { |
217 | - $next_url = substr($next_url, $n+1); |
|
217 | + $next_url = substr($next_url, $n + 1); |
|
218 | 218 | } |
219 | 219 | } |
220 | 220 | $next_url = urlencode($next_url); |
@@ -225,7 +225,7 @@ discard block |
||
225 | 225 | return $g_logged_in_user; |
226 | 226 | } |
227 | 227 | |
228 | -function show_login_info($prefix="") { |
|
228 | +function show_login_info($prefix = "") { |
|
229 | 229 | $user = get_logged_in_user(false); |
230 | 230 | if ($user) { |
231 | 231 | $url_tokens = url_tokens($user->authenticator); |
@@ -235,7 +235,7 @@ discard block |
||
235 | 235 | } |
236 | 236 | } |
237 | 237 | |
238 | -$cache_control_extra=""; |
|
238 | +$cache_control_extra = ""; |
|
239 | 239 | $is_login_page = false; |
240 | 240 | |
241 | 241 | // Call this to start pages. |
@@ -247,11 +247,11 @@ discard block |
||
247 | 247 | // with an existing web framework can more easily do so. |
248 | 248 | // To do so, define page_head() in html/project/project.inc |
249 | 249 | // |
250 | -if (!function_exists("page_head")){ |
|
250 | +if (!function_exists("page_head")) { |
|
251 | 251 | function page_head( |
252 | 252 | $title, |
253 | 253 | // page title. Put in <title>, used as title for browser tab. |
254 | - $body_attrs=null, |
|
254 | + $body_attrs = null, |
|
255 | 255 | // <body XXXX> |
256 | 256 | // e.g. Javascript to put focus in an input field |
257 | 257 | // (onload="document.form.foo.focus()") |
@@ -260,10 +260,10 @@ discard block |
||
260 | 260 | // if set, include schedulers.txt. |
261 | 261 | // also pass to project_banner() in case you want a different |
262 | 262 | // header for your main page. |
263 | - $url_prefix="", |
|
263 | + $url_prefix = "", |
|
264 | 264 | // prepend this to links. |
265 | 265 | // Use for web pages not in the top directory |
266 | - $head_extra=null |
|
266 | + $head_extra = null |
|
267 | 267 | // extra stuff to put in <head>. E.g.: |
268 | 268 | // reCAPTCHA code (create_profile.php) |
269 | 269 | // bbcode javascript (forums) |
@@ -285,7 +285,7 @@ discard block |
||
285 | 285 | header("Content-type: text/html; charset=utf-8"); |
286 | 286 | header("Expires: Mon, 26 Jul 1997 05:00:00 UTC"); |
287 | 287 | // Date in the past |
288 | - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " UTC"); |
|
288 | + header("Last-Modified: ".gmdate("D, d M Y H:i:s")." UTC"); |
|
289 | 289 | // always modified |
290 | 290 | header("Cache-Control: $cache_control_extra no-cache, must-revalidate, post-check=0, pre-check=0"); |
291 | 291 | // for HTTP/1.1 |
@@ -308,11 +308,11 @@ discard block |
||
308 | 308 | if ($head_extra) { |
309 | 309 | echo "\n$head_extra\n"; |
310 | 310 | } |
311 | - if ($is_main && (!defined('NO_COMPUTING')||!NO_COMPUTING)) { |
|
311 | + if ($is_main && (!defined('NO_COMPUTING') || !NO_COMPUTING)) { |
|
312 | 312 | readfile("schedulers.txt"); |
313 | 313 | } |
314 | 314 | |
315 | - $t = $title?$title:PROJECT; |
|
315 | + $t = $title ? $title : PROJECT; |
|
316 | 316 | echo "<title>$t</title>\n"; |
317 | 317 | echo ' |
318 | 318 | <meta charset="utf-8"> |
@@ -368,7 +368,7 @@ discard block |
||
368 | 368 | echo '<div class="container-fluid"> |
369 | 369 | '; |
370 | 370 | |
371 | - switch($title) { //kludge |
|
371 | + switch ($title) { //kludge |
|
372 | 372 | case tra("Log in"): |
373 | 373 | case tra("Create an account"): |
374 | 374 | case tra("Server status page"): |
@@ -383,13 +383,13 @@ discard block |
||
383 | 383 | |
384 | 384 | // See the comments for page_head() |
385 | 385 | // |
386 | -if (!function_exists("page_tail")){ |
|
386 | +if (!function_exists("page_tail")) { |
|
387 | 387 | function page_tail( |
388 | - $show_date=false, |
|
388 | + $show_date = false, |
|
389 | 389 | // true for pages that are generated periodically rather than on the fly |
390 | - $url_prefix="", |
|
390 | + $url_prefix = "", |
|
391 | 391 | // use for pages not at top level |
392 | - $is_main=false |
|
392 | + $is_main = false |
|
393 | 393 | // passed to project_footer; |
394 | 394 | ) { |
395 | 395 | echo "<br>\n"; |
@@ -423,24 +423,24 @@ discard block |
||
423 | 423 | // convert time interval in seconds to a string of the form |
424 | 424 | // 'D days h hours m min s sec'. |
425 | 425 | |
426 | -function time_diff($x, $res=3) { |
|
426 | +function time_diff($x, $res = 3) { |
|
427 | 427 | $x = (int)$x; |
428 | 428 | $days = (int)($x/86400); |
429 | - $hours = (int)(($x-$days*86400)/3600); |
|
430 | - $minutes = (int)(($x-$days*86400-$hours*3600)/60); |
|
431 | - $seconds = $x % 60; |
|
429 | + $hours = (int)(($x - $days*86400)/3600); |
|
430 | + $minutes = (int)(($x - $days*86400 - $hours*3600)/60); |
|
431 | + $seconds = $x%60; |
|
432 | 432 | |
433 | 433 | $s = ""; |
434 | 434 | if ($days) { |
435 | 435 | $s .= "$days ".tra("days")." "; |
436 | 436 | } |
437 | - if ($res>0 && ($hours || strlen($s))) { |
|
437 | + if ($res > 0 && ($hours || strlen($s))) { |
|
438 | 438 | $s .= "$hours ".tra("hours")." "; |
439 | 439 | } |
440 | - if ($res>1 && ($minutes || strlen($s))) { |
|
440 | + if ($res > 1 && ($minutes || strlen($s))) { |
|
441 | 441 | $s .= "$minutes ".tra("min")." "; |
442 | 442 | } |
443 | - if ($res>2) { |
|
443 | + if ($res > 2) { |
|
444 | 444 | $s .= "$seconds ".tra("sec")." "; |
445 | 445 | } |
446 | 446 | return $s; |
@@ -454,7 +454,7 @@ discard block |
||
454 | 454 | |
455 | 455 | function time_str($x) { |
456 | 456 | if ($x == 0) return "---"; |
457 | - return gmdate('j M Y, G:i:s', (int)$x) . " UTC"; |
|
457 | + return gmdate('j M Y, G:i:s', (int)$x)." UTC"; |
|
458 | 458 | } |
459 | 459 | |
460 | 460 | function local_time_str($x) { |
@@ -466,14 +466,14 @@ discard block |
||
466 | 466 | return time_str($x); |
467 | 467 | } |
468 | 468 | |
469 | -function start_table_str($class="", $style="") { |
|
470 | - $s = $style?'style="'.$style.'"':''; |
|
469 | +function start_table_str($class = "", $style = "") { |
|
470 | + $s = $style ? 'style="'.$style.'"' : ''; |
|
471 | 471 | return '<div class="table"> |
472 | 472 | <table '.$s.' width="100%" class="table table-condensed '.$class.'" > |
473 | 473 | '; |
474 | 474 | } |
475 | 475 | |
476 | -function start_table($class="", $style="") { |
|
476 | +function start_table($class = "", $style = "") { |
|
477 | 477 | echo start_table_str($class, $style); |
478 | 478 | } |
479 | 479 | |
@@ -518,7 +518,7 @@ discard block |
||
518 | 518 | echo "</tr>\n"; |
519 | 519 | } |
520 | 520 | |
521 | -function row1($x, $ncols=2, $class="heading") { |
|
521 | +function row1($x, $ncols = 2, $class = "heading") { |
|
522 | 522 | if ($class == "heading") { |
523 | 523 | echo "<tr><th class=\"bg-primary\" colspan=\"$ncols\">$x</th></tr>\n"; |
524 | 524 | } else { |
@@ -532,10 +532,10 @@ discard block |
||
532 | 532 | |
533 | 533 | // a table row with 2 columns, with the left on right-aligned |
534 | 534 | |
535 | -function row2($x, $y, $show_error=false, $lwidth='40%') { |
|
536 | - if ($x==="") $x="<br>"; |
|
537 | - if ($y==="") $y="<br>"; |
|
538 | - $attrs = $show_error?VALUE_ATTRS_ERR:VALUE_ATTRS; |
|
535 | +function row2($x, $y, $show_error = false, $lwidth = '40%') { |
|
536 | + if ($x === "") $x = "<br>"; |
|
537 | + if ($y === "") $y = "<br>"; |
|
538 | + $attrs = $show_error ?VALUE_ATTRS_ERR:VALUE_ATTRS; |
|
539 | 539 | echo "<tr> |
540 | 540 | <td width=\"$lwidth\" ".NAME_ATTRS.">$x</td> |
541 | 541 | <td $attrs >$y</td> |
@@ -546,7 +546,7 @@ discard block |
||
546 | 546 | // output the first part of row2(); |
547 | 547 | // then write the content, followed by </td></tr> |
548 | 548 | |
549 | -function row2_init($x, $lwidth='40%') { |
|
549 | +function row2_init($x, $lwidth = '40%') { |
|
550 | 550 | echo sprintf('<tr> |
551 | 551 | <td width="%s" %s>%s</td> |
552 | 552 | <td %s>', |
@@ -562,31 +562,31 @@ discard block |
||
562 | 562 | echo "<tr><td>$string</td></tr>"; |
563 | 563 | } |
564 | 564 | |
565 | -function row_array($x, $attrs=null) { |
|
565 | +function row_array($x, $attrs = null) { |
|
566 | 566 | echo "<tr>\n"; |
567 | 567 | $i = 0; |
568 | 568 | foreach ($x as $h) { |
569 | - $a = $attrs?$attrs[$i]:""; |
|
569 | + $a = $attrs ? $attrs[$i] : ""; |
|
570 | 570 | echo "<td $a>$h</td>\n"; |
571 | 571 | $i++; |
572 | 572 | } |
573 | 573 | echo "</tr>\n"; |
574 | 574 | } |
575 | 575 | |
576 | -define ('ALIGN_RIGHT', 'style="text-align:right;"'); |
|
576 | +define('ALIGN_RIGHT', 'style="text-align:right;"'); |
|
577 | 577 | |
578 | -function row_heading_array($x, $attrs=null, $class='bg-primary') { |
|
578 | +function row_heading_array($x, $attrs = null, $class = 'bg-primary') { |
|
579 | 579 | echo "<tr>"; |
580 | 580 | $i = 0; |
581 | 581 | foreach ($x as $h) { |
582 | - $a = $attrs?$attrs[$i]:""; |
|
582 | + $a = $attrs ? $attrs[$i] : ""; |
|
583 | 583 | echo "<th $a class=\"$class\">$h</th>"; |
584 | 584 | $i++; |
585 | 585 | } |
586 | 586 | echo "</tr>\n"; |
587 | 587 | } |
588 | 588 | |
589 | -function row_heading($x, $class='bg-primary') { |
|
589 | +function row_heading($x, $class = 'bg-primary') { |
|
590 | 590 | echo sprintf('<tr><th class="%s" colspan=99>%s</th></tr> |
591 | 591 | ', $class, $x |
592 | 592 | ); |
@@ -646,7 +646,7 @@ discard block |
||
646 | 646 | // If $ellipsis is true, then an ellipsis is added to any sentence which |
647 | 647 | // is cut short. |
648 | 648 | |
649 | -function sub_sentence($sentence, $delimiter, $max_chars, $ellipsis=false) { |
|
649 | +function sub_sentence($sentence, $delimiter, $max_chars, $ellipsis = false) { |
|
650 | 650 | $words = explode($delimiter, $sentence); |
651 | 651 | $total_chars = 0; |
652 | 652 | $trunc = false; |
@@ -729,8 +729,8 @@ discard block |
||
729 | 729 | |
730 | 730 | // returns null if the arg is optional and missing |
731 | 731 | // |
732 | -function get_int($name, $optional=false) { |
|
733 | - $x=null; |
|
732 | +function get_int($name, $optional = false) { |
|
733 | + $x = null; |
|
734 | 734 | if (isset($_GET[$name])) $x = $_GET[$name]; |
735 | 735 | if (!is_numeric($x)) { |
736 | 736 | if ($optional) { |
@@ -749,7 +749,7 @@ discard block |
||
749 | 749 | |
750 | 750 | // returns null if the arg is optional and missing |
751 | 751 | // |
752 | -function post_num($name, $optional=false) { |
|
752 | +function post_num($name, $optional = false) { |
|
753 | 753 | $x = null; |
754 | 754 | if (isset($_POST[$name])) $x = $_POST[$name]; |
755 | 755 | if (!is_numeric($x)) { |
@@ -764,7 +764,7 @@ discard block |
||
764 | 764 | |
765 | 765 | // returns null if the arg is optional and missing |
766 | 766 | // |
767 | -function post_int($name, $optional=false) { |
|
767 | +function post_int($name, $optional = false) { |
|
768 | 768 | $x = post_num($name, $optional); |
769 | 769 | if (is_null($x)) return null; |
770 | 770 | $y = (int)$x; |
@@ -782,7 +782,7 @@ discard block |
||
782 | 782 | } |
783 | 783 | } |
784 | 784 | |
785 | -function get_str($name, $optional=false) { |
|
785 | +function get_str($name, $optional = false) { |
|
786 | 786 | if (isset($_GET[$name])) { |
787 | 787 | $x = $_GET[$name]; |
788 | 788 | } else { |
@@ -794,7 +794,7 @@ discard block |
||
794 | 794 | return undo_magic_quotes($x); |
795 | 795 | } |
796 | 796 | |
797 | -function post_str($name, $optional=false) { |
|
797 | +function post_str($name, $optional = false) { |
|
798 | 798 | if (isset($_POST[$name])) { |
799 | 799 | $x = $_POST[$name]; |
800 | 800 | } else { |
@@ -806,7 +806,7 @@ discard block |
||
806 | 806 | return undo_magic_quotes($x); |
807 | 807 | } |
808 | 808 | |
809 | -function post_arr($name, $optional=false) { |
|
809 | +function post_arr($name, $optional = false) { |
|
810 | 810 | if (isset($_POST[$name]) && is_array($_POST[$name])) { |
811 | 811 | $x = $_POST[$name]; |
812 | 812 | } else { |
@@ -822,7 +822,7 @@ discard block |
||
822 | 822 | // the mb_* functions are not included by default |
823 | 823 | // return (mb_detect_encoding($passwd) -= 'ASCII'); |
824 | 824 | |
825 | - for ($i=0; $i<strlen($str); $i++) { |
|
825 | + for ($i = 0; $i < strlen($str); $i++) { |
|
826 | 826 | $c = ord(substr($str, $i)); |
827 | 827 | if ($c < 32 || $c > 127) return false; |
828 | 828 | } |
@@ -846,7 +846,7 @@ discard block |
||
846 | 846 | $number = str_replace(',', '.', $number); // replace the german decimal separator |
847 | 847 | // if no value was entered and this is ok |
848 | 848 | // |
849 | - if ($number=='' && !$low) return true; |
|
849 | + if ($number == '' && !$low) return true; |
|
850 | 850 | |
851 | 851 | // the supplied value contains alphabetic characters |
852 | 852 | // |
@@ -863,7 +863,7 @@ discard block |
||
863 | 863 | |
864 | 864 | // Generate a "select" element from an array of values |
865 | 865 | // |
866 | -function select_from_array($name, $array, $selection=null, $width=240) { |
|
866 | +function select_from_array($name, $array, $selection = null, $width = 240) { |
|
867 | 867 | $out = '<select style="color:#000;"class="form-control input-sm" style="width:'.$width.'px" name="'.$name.'">"'; |
868 | 868 | |
869 | 869 | foreach ($array as $key => $value) { |
@@ -888,12 +888,12 @@ discard block |
||
888 | 888 | return $str; |
889 | 889 | } |
890 | 890 | |
891 | -function strip_bbcode($string){ |
|
892 | - return preg_replace("/((\[.+\])+?)(.+?)((\[\/.+\])+?)/","",$string); |
|
891 | +function strip_bbcode($string) { |
|
892 | + return preg_replace("/((\[.+\])+?)(.+?)((\[\/.+\])+?)/", "", $string); |
|
893 | 893 | } |
894 | 894 | |
895 | 895 | function current_url() { |
896 | - $url = is_https()?'https':'http'; |
|
896 | + $url = is_https() ? 'https' : 'http'; |
|
897 | 897 | $url .= "://"; |
898 | 898 | $url .= $_SERVER['SERVER_NAME']; |
899 | 899 | $url .= ":".$_SERVER['SERVER_PORT']; |
@@ -911,7 +911,7 @@ discard block |
||
911 | 911 | // the colors for bootstrap's btn-success are almost illegible; |
912 | 912 | // the green is too light. Use a darker green. |
913 | 913 | // |
914 | -function button_style($color='green', $font_size=null) { |
|
914 | +function button_style($color = 'green', $font_size = null) { |
|
915 | 915 | $fs = ''; |
916 | 916 | if ($font_size) { |
917 | 917 | $fs = sprintf('; font-size:%dpx', $font_size); |
@@ -930,7 +930,7 @@ discard block |
||
930 | 930 | // class: class of the button, e.g. btn |
931 | 931 | // extra: Additional text in href tag |
932 | 932 | // |
933 | -function button_text($url, $text, $desc=null, $class=null, $extra='') { |
|
933 | +function button_text($url, $text, $desc = null, $class = null, $extra = '') { |
|
934 | 934 | if (!$desc) { |
935 | 935 | $desc = $text; |
936 | 936 | } |
@@ -945,23 +945,23 @@ discard block |
||
945 | 945 | ); |
946 | 946 | } |
947 | 947 | |
948 | -function button_text_small($url, $text, $desc=null) { |
|
948 | +function button_text_small($url, $text, $desc = null) { |
|
949 | 949 | return button_text($url, $text, $desc, "btn btn-xs", button_style()); |
950 | 950 | } |
951 | 951 | |
952 | -function show_button($url, $text, $desc=null, $class=null, $extra=null) { |
|
952 | +function show_button($url, $text, $desc = null, $class = null, $extra = null) { |
|
953 | 953 | echo button_text($url, $text, $desc, $class, $extra); |
954 | 954 | } |
955 | 955 | |
956 | 956 | // for places with a bunch of buttons, like forum posts |
957 | 957 | // |
958 | -function show_button_small($url, $text, $desc=null) { |
|
958 | +function show_button_small($url, $text, $desc = null) { |
|
959 | 959 | echo button_text_small($url, $text, $desc); |
960 | 960 | } |
961 | 961 | |
962 | 962 | // used for showing icons |
963 | 963 | // |
964 | -function show_image($src, $title, $alt, $height=null) { |
|
964 | +function show_image($src, $title, $alt, $height = null) { |
|
965 | 965 | $h = ""; |
966 | 966 | if ($height) { |
967 | 967 | $h = "height=\"$height\""; |
@@ -998,7 +998,7 @@ discard block |
||
998 | 998 | // tries instead to connect to <replica_db_host> if tag exists. |
999 | 999 | // DEPRECATED - use boinc_db.inc |
1000 | 1000 | // |
1001 | -function db_init($try_replica=false) { |
|
1001 | +function db_init($try_replica = false) { |
|
1002 | 1002 | check_web_stopped(); |
1003 | 1003 | $retval = db_init_aux($try_replica); |
1004 | 1004 | if ($retval == 1) { |
@@ -1074,7 +1074,7 @@ discard block |
||
1074 | 1074 | // Check this to avoid XSS vulnerability |
1075 | 1075 | // |
1076 | 1076 | function sanitize_sort_by($x) { |
1077 | - switch($x) { |
|
1077 | + switch ($x) { |
|
1078 | 1078 | case 'expavg_credit': |
1079 | 1079 | case 'total_credit': |
1080 | 1080 | return; |
@@ -1092,7 +1092,7 @@ discard block |
||
1092 | 1092 | } |
1093 | 1093 | |
1094 | 1094 | function do_download($path) { |
1095 | - $name=basename($path); |
|
1095 | + $name = basename($path); |
|
1096 | 1096 | header('Content-Description: File Transfer'); |
1097 | 1097 | header('Content-Type: application/octet-stream'); |
1098 | 1098 | header('Content-Disposition: attachment; filename='.$name); |
@@ -1100,7 +1100,7 @@ discard block |
||
1100 | 1100 | header('Expires: 0'); |
1101 | 1101 | header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
1102 | 1102 | header('Pragma: public'); |
1103 | - header('Content-Length: ' . filesize($path)); |
|
1103 | + header('Content-Length: '.filesize($path)); |
|
1104 | 1104 | flush(); |
1105 | 1105 | readfile($path); |
1106 | 1106 | } |
@@ -1149,10 +1149,10 @@ discard block |
||
1149 | 1149 | // Otherwise return 0. |
1150 | 1150 | // Format of user agent string is "BOINC client (windows_x86_64 7.3.17)" |
1151 | 1151 | // |
1152 | -function boinc_client_version(){ |
|
1152 | +function boinc_client_version() { |
|
1153 | 1153 | if (!array_key_exists('HTTP_USER_AGENT', $_SERVER)) return 0; |
1154 | 1154 | $x = $_SERVER['HTTP_USER_AGENT']; |
1155 | - $e = "/BOINC client [^ ]* (\d+).(\d+).(\d+)\)/"; |
|
1155 | + $e = "/BOINC client [^ ]* (\d+).(\d+).(\d+)\)/"; |
|
1156 | 1156 | if (preg_match($e, $x, $matches)) { |
1157 | 1157 | return $matches[1]*10000 + $matches[2]*100 + $matches[3]; |
1158 | 1158 | } |
@@ -1181,7 +1181,7 @@ discard block |
||
1181 | 1181 | $rem_name = $name."_remaining"; |
1182 | 1182 | return "<textarea name=\"$name\" class=\"form-control\" rows=3 id=\"$name\" onkeydown=\"text_counter(this.form.$name, this.form.$rem_name, $maxlen);\" |
1183 | 1183 | onkeyup=\"text_counter(this.form.$name, this.form.$rem_name, $maxlen);\">".$text."</textarea> |
1184 | - <br><input name=\"$rem_name\" type=\"text\" id=\"$rem_name\" value=\"".($maxlen-strlen($text))."\" size=\"3\" maxlength=\"3\" readonly> ".tra("characters remaining") |
|
1184 | + <br><input name=\"$rem_name\" type=\"text\" id=\"$rem_name\" value=\"".($maxlen - strlen($text))."\" size=\"3\" maxlength=\"3\" readonly> ".tra("characters remaining") |
|
1185 | 1185 | ; |
1186 | 1186 | } |
1187 | 1187 | |
@@ -1211,7 +1211,7 @@ discard block |
||
1211 | 1211 | // use the following around text with long lines, |
1212 | 1212 | // to limit the width and make it more readable. |
1213 | 1213 | // |
1214 | -function text_start($width=640) { |
|
1214 | +function text_start($width = 640) { |
|
1215 | 1215 | echo sprintf("<div style=\"max-width: %dpx;\">\n", $width); |
1216 | 1216 | } |
1217 | 1217 | function text_end() { |
@@ -1237,7 +1237,7 @@ discard block |
||
1237 | 1237 | } |
1238 | 1238 | |
1239 | 1239 | function cert_filename() { |
1240 | - return defined("CERT_FILENAME")?CERT_FILENAME:"cert1.php"; |
|
1240 | + return defined("CERT_FILENAME") ?CERT_FILENAME:"cert1.php"; |
|
1241 | 1241 | } |
1242 | 1242 | |
1243 | 1243 | // if user hasn't validated their email addr, tell them to |