Passed
Push — master ( 880135...91f40d )
by Christian
08:48 queued 11s
created
drupal/sites/default/boinc/modules/boincuser/includes/boincuser.helpers.inc 1 patch
Switch Indentation   +371 added lines, -371 removed lines patch added patch discarded remove patch
@@ -11,12 +11,12 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincuser/includes/boincuser.rules.inc 1 patch
Switch Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -16,59 +16,59 @@
 block discarded – undo
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
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincuser/includes/boincuser.forms.inc 1 patch
Switch Indentation   +673 added lines, -673 removed lines patch added patch discarded remove patch
@@ -15,59 +15,59 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
-      '&lt;account&gt;' . "\n" .
506
-      "  &lt;master_url&gt;http://{$project_domain}/&lt;/master_url&gt;" . "\n" .
507
-      '  &lt;authenticator&gt;8b8496fdd26df7dc0423ecd43c09a56b&lt;/authenticator&gt;' . "\n" .
508
-      "  &lt;project_name&gt;{$project_name}&lt;/project_name&gt;" . "\n" .
509
-      '  ...' . "\n" .
510
-      '&lt;/account&gt;' .
511
-      '      </pre>' .
512
-      '    </li>' .
513
-      '    <li>' . bts('Select and Copy the string between &lt;authenticator&gt; and &lt;/authenticator&gt; (%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
+  '&lt;account&gt;' . "\n" .
506
+  "  &lt;master_url&gt;http://{$project_domain}/&lt;/master_url&gt;" . "\n" .
507
+  '  &lt;authenticator&gt;8b8496fdd26df7dc0423ecd43c09a56b&lt;/authenticator&gt;' . "\n" .
508
+  "  &lt;project_name&gt;{$project_name}&lt;/project_name&gt;" . "\n" .
509
+  '  ...' . "\n" .
510
+  '&lt;/account&gt;' .
511
+  '      </pre>' .
512
+  '    </li>' .
513
+  '    <li>' . bts('Select and Copy the string between &lt;authenticator&gt; and &lt;/authenticator&gt; (%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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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'  => '&nbsp;',
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'  => '&nbsp;',
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
 block discarded – undo
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
 block discarded – undo
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
 }
Please login to merge, or discard this patch.