Passed
Pull Request — master (#3042)
by Christian
07:09
created
default/boinc/modules/boincuser/boincuser_delete/boincuser_delete.module 1 patch
Indentation   +263 added lines, -263 removed lines patch added patch discarded remove patch
@@ -19,15 +19,15 @@  discard block
 block discarded – undo
19 19
  * Implementation of hook_perm().
20 20
  */
21 21
 function boincuser_delete_perm() {
22
-  return array('delete own account');
22
+    return array('delete own account');
23 23
 }
24 24
 
25 25
 /**
26 26
  * Implementation of hook_menu().
27 27
  */
28 28
 function boincuser_delete_menu() {
29
-  $items = array();
30
-  $items['admin/boinc/user_delete'] = array(
29
+    $items = array();
30
+    $items['admin/boinc/user_delete'] = array(
31 31
     'title' => t('Preferences: BOINC user delete'),
32 32
     'description' => t('Configure the BOINC user delete action.'),
33 33
     'page callback' => 'drupal_get_form',
@@ -35,9 +35,9 @@  discard block
 block discarded – undo
35 35
     'access arguments' => array('administer users'),
36 36
     'type' => MENU_NORMAL_ITEM,
37 37
     'file' => 'boincuser_delete.admin.inc',
38
-  );
38
+    );
39 39
 
40
-  $items['admin/boinc/user_delete/%'] = array(
40
+    $items['admin/boinc/user_delete/%'] = array(
41 41
     'title' => t('Admin delete user'),
42 42
     'description' => t('Deletes a user as an admin'),
43 43
     'page callback' => 'drupal_get_form',
@@ -45,9 +45,9 @@  discard block
 block discarded – undo
45 45
     'access arguments' => array('administer users'),
46 46
     'type' => MENU_CALLBACK,
47 47
     'file' => 'boincuser_delete.admin.inc',
48
-  );
48
+    );
49 49
 
50
-  $items['user/%user/deleteconfirm/%'] = array(
50
+    $items['user/%user/deleteconfirm/%'] = array(
51 51
     'title' => t('Final confirmation for account deletion'),
52 52
     'description' => t('Final confirmation for account deletion'),
53 53
     'page callback' => 'drupal_get_form',
@@ -55,9 +55,9 @@  discard block
 block discarded – undo
55 55
     'access callback' => 'boincuser_delete_access',
56 56
     'access arguments' => array(1),
57 57
     'type' => MENU_CALLBACK,
58
-  );
58
+    );
59 59
 
60
-  $items['user/%user/odeleteconfirm/%'] = array(
60
+    $items['user/%user/odeleteconfirm/%'] = array(
61 61
     'title' => t('Final confirmation for account deletion'),
62 62
     'description' => t('Final confirmation for account deletion'),
63 63
     'page callback' => 'drupal_get_form',
@@ -65,204 +65,204 @@  discard block
 block discarded – undo
65 65
     'access callback' => 'boincuser_delete_access',
66 66
     'access arguments' => array(1),
67 67
     'type' => MENU_CALLBACK,
68
-  );
68
+    );
69 69
 
70
-  return $items;
70
+    return $items;
71 71
 }
72 72
 
73 73
 /**
74 74
  * Checks whether a user can delete an account.
75 75
  */
76 76
 function boincuser_delete_access($account) {
77
-  global $user;
78
-  return ((user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)) && $account->uid > 0);
77
+    global $user;
78
+    return ((user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)) && $account->uid > 0);
79 79
 }
80 80
 
81 81
 /**
82 82
  * Implementation of hook_menu_alter().
83 83
  */
84 84
 function boincuser_delete_menu_alter(&$callbacks) {
85
-  $callbacks['user/%user/delete']['access callback'] = 'boincuser_delete_access';
86
-  $callbacks['user/%user/delete']['access arguments'] = array(1);
87
-  $callbacks['user/%user/delete']['type'] = MENU_CALLBACK;
85
+    $callbacks['user/%user/delete']['access callback'] = 'boincuser_delete_access';
86
+    $callbacks['user/%user/delete']['access arguments'] = array(1);
87
+    $callbacks['user/%user/delete']['type'] = MENU_CALLBACK;
88 88
 }
89 89
 
90 90
 /**
91 91
  * Implementation of hook_form_alter().
92 92
  */
93 93
 function boincuser_delete_form_alter(&$form, $form_state, $form_id) {
94
-  global $user;
94
+    global $user;
95 95
 
96
-  switch($form_id) {
96
+    switch($form_id) {
97 97
     case 'user_profile_form':
98 98
       if ( user_access('delete own account') AND ($form['#uid'] == $user->uid) AND (arg(3)=='') ) {
99 99
         $form['delete'] = array(
100
-          '#type' => 'submit',
101
-          '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'),
102
-          '#weight' => 1009,
103
-          '#submit' => array('user_edit_delete_submit'),
104
-          '#prefix' => '<li class="tab">',
105
-          '#suffix' => '</li>',
100
+            '#type' => 'submit',
101
+            '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'),
102
+            '#weight' => 1009,
103
+            '#submit' => array('user_edit_delete_submit'),
104
+            '#prefix' => '<li class="tab">',
105
+            '#suffix' => '</li>',
106 106
         );
107
-      }
108
-      else if ( user_access('administer users') ) {
107
+        }
108
+        else if ( user_access('administer users') ) {
109 109
         $form['delete'] = array(
110
-          '#type' => 'submit',
111
-          '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'),
112
-          '#weight' => 1009,
113
-          '#submit' => array('_boincuser_delete_goto_admindelete'),
114
-          '#prefix' => '<li class="tab">',
115
-          '#suffix' => '</li>',
110
+            '#type' => 'submit',
111
+            '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'),
112
+            '#weight' => 1009,
113
+            '#submit' => array('_boincuser_delete_goto_admindelete'),
114
+            '#prefix' => '<li class="tab">',
115
+            '#suffix' => '</li>',
116 116
         );
117
-      }
118
-      else {
117
+        }
118
+        else {
119 119
         unset($form['delete']);
120
-      }
121
-      break;
120
+        }
121
+        break;
122 122
     case 'user_confirm_delete':
123 123
 
124 124
       $disable_delete = FALSE;
125
-      // If email address was changed less than 7 days (7 * 86400 s)
126
-      // ago, it cannot be changed again.
127
-      $duration = TOKEN_DURATION_ONE_WEEK;
128
-      if (($form['_account']['#value']->boincuser_email_addr_change_time + $duration) > time()) {
125
+        // If email address was changed less than 7 days (7 * 86400 s)
126
+        // ago, it cannot be changed again.
127
+        $duration = TOKEN_DURATION_ONE_WEEK;
128
+        if (($form['_account']['#value']->boincuser_email_addr_change_time + $duration) > time()) {
129 129
         drupal_set_message(
130
-          bts("INFO: Your email address was changed within the past seven (7) days. You may not delete your account until after !time.",
130
+            bts("INFO: Your email address was changed within the past seven (7) days. You may not delete your account until after !time.",
131 131
             array(
132
-              '!time' => date('F j, Y \a\t G:i T', $form['_account']['#value']->boincuser_email_addr_change_time + $duration),
132
+                '!time' => date('F j, Y \a\t G:i T', $form['_account']['#value']->boincuser_email_addr_change_time + $duration),
133 133
             ), NULL, 'boinc:account-credentials-change')
134 134
         , 'info');
135 135
         $disable_delete = TRUE;
136
-      }
136
+        }
137 137
 
138
-      // Configure radio options
139
-      $common_acts = bts("All your posts and comments will be attributed to the Anonymous User. Your user profile will be deleted. Your host information will be deleted. And you will be removed from any team you are a member of.", array(), NULL, 'boinc:delete-user-account');
138
+        // Configure radio options
139
+        $common_acts = bts("All your posts and comments will be attributed to the Anonymous User. Your user profile will be deleted. Your host information will be deleted. And you will be removed from any team you are a member of.", array(), NULL, 'boinc:delete-user-account');
140 140
 
141
-      $deleteoptions = array(
141
+        $deleteoptions = array(
142 142
         'boincuser_delete_softdelete' => bts('<b>Soft delete</b> your account. Your account will be disabled. ', array(), NULL, 'boinc:delete-user-account'),
143 143
         'boincuser_delete_delete' => bts('<b>Delete</b> your account. ', array(), NULL, 'boinc:delete-user-account'),
144
-      );
144
+        );
145 145
 
146
-      $dtypes = variable_get('boincuser_delete_type', 'user_decides');
147
-      // Unset the other option if dtype is set. i.e., if dtype is set
148
-      // to soft delete, unset the hard delete option.  Likewise, add
149
-      // the 'common_acts' sentences to the option that remains.
150
-      switch ($dtypes) {
146
+        $dtypes = variable_get('boincuser_delete_type', 'user_decides');
147
+        // Unset the other option if dtype is set. i.e., if dtype is set
148
+        // to soft delete, unset the hard delete option.  Likewise, add
149
+        // the 'common_acts' sentences to the option that remains.
150
+        switch ($dtypes) {
151 151
         case 'soft_obfuscate':
152 152
           unset($deleteoptions['boincuser_delete_delete']);
153
-          $deleteoptions['boincuser_delete_softdelete'] .= $common_acts;
154
-          break;
153
+            $deleteoptions['boincuser_delete_softdelete'] .= $common_acts;
154
+            break;
155 155
         case 'hard_wipe':
156 156
           unset($deleteoptions['boincuser_delete_softdelete']);
157
-          $deleteoptions['boincuser_delete_delete'] .= $common_acts;
158
-          break;
159
-      }
157
+            $deleteoptions['boincuser_delete_delete'] .= $common_acts;
158
+            break;
159
+        }
160 160
 
161
-      $question = 'Are you sure you want to delete the account <em>' . htmlspecialchars($form['_account']['#value']->boincuser_name) . '</em>?';
162
-      drupal_set_title($question);
161
+        $question = 'Are you sure you want to delete the account <em>' . htmlspecialchars($form['_account']['#value']->boincuser_name) . '</em>?';
162
+        drupal_set_title($question);
163 163
 
164
-      unset($form['description']);
164
+        unset($form['description']);
165 165
 
166
-      $form['main'] = array(
166
+        $form['main'] = array(
167 167
         '#type' => 'fieldset',
168 168
         '#weight' => 1,
169
-      );
169
+        );
170 170
 
171
-      $form['main']['fs1'] = array(
171
+        $form['main']['fs1'] = array(
172 172
         '#type' => 'fieldset',
173 173
         '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'),
174 174
         '#weight' => 10,
175 175
         '#collapsible' => TRUE,
176 176
         '#collapsed' => TRUE,
177
-      );
178
-      $form['main']['fs1']['help'] = array(
177
+        );
178
+        $form['main']['fs1']['help'] = array(
179 179
         '#value' => bts(
180
-          "<p>In order to delete your account, you must provide your password below. You will then be sent an email to the email address on record, with a one-time token that expires in 24-hours. Clicking on this link will bring you to a second form where you must enter your password again. After doing so your account will be deleted.</p>" .
181
-          "<p>If necessary, you may !link first before deleting your account. But you must wait <b>seven (7) days</b> after an email address change before you may delete your account.</p>",
182
-          array(
180
+            "<p>In order to delete your account, you must provide your password below. You will then be sent an email to the email address on record, with a one-time token that expires in 24-hours. Clicking on this link will bring you to a second form where you must enter your password again. After doing so your account will be deleted.</p>" .
181
+            "<p>If necessary, you may !link first before deleting your account. But you must wait <b>seven (7) days</b> after an email address change before you may delete your account.</p>",
182
+            array(
183 183
             '!link' => l(bts('change your email address', array(), NULL, 'boinc:delete-user-account'), '/account/info/edit'),
184
-          ), NULL, 'boinc:delete-user-account'),
184
+            ), NULL, 'boinc:delete-user-account'),
185 185
         '#weight' => 11,
186 186
         '#prefix' => "<div id='delete-instructions'>",
187 187
         '#suffix' => "</div>",
188
-      );
188
+        );
189 189
 
190
-      if ($dtypes == 'user_decides') {
190
+        if ($dtypes == 'user_decides') {
191 191
         $form['main']['common'] = array(
192
-          '#value'  => bts('All choices: ', array(), NULL, 'boinc:delete-user-account') . $common_acts . '<p>' . bts('Disabled means some of your personal data, such as your username and email address, are kept on our systems. Choose \'delete your account\' if you want all personal data to be removed.', array(), NULL, 'boinc:delete-user-account'),
193
-          '#prefix' => "<div id='delete-instructions'>",
194
-          '#suffix' => "</div>",
195
-          '#weight' => 20,
192
+            '#value'  => bts('All choices: ', array(), NULL, 'boinc:delete-user-account') . $common_acts . '<p>' . bts('Disabled means some of your personal data, such as your username and email address, are kept on our systems. Choose \'delete your account\' if you want all personal data to be removed.', array(), NULL, 'boinc:delete-user-account'),
193
+            '#prefix' => "<div id='delete-instructions'>",
194
+            '#suffix' => "</div>",
195
+            '#weight' => 20,
196 196
         );
197
-      }
197
+        }
198 198
 
199
-      $form['main']['user_delete_action'] = array(
199
+        $form['main']['user_delete_action'] = array(
200 200
         '#type' => 'radios',
201 201
         '#options' => $deleteoptions,
202 202
         '#weight' => 21,
203
-      );
204
-      if ($disable_delete) {
203
+        );
204
+        if ($disable_delete) {
205 205
         $form['main']['user_delete_action']['#disabled'] = TRUE;
206
-      }
206
+        }
207 207
 
208
-      // Password field
209
-      if (!$disable_delete) {
208
+        // Password field
209
+        if (!$disable_delete) {
210 210
         $form['main']['current_pass'] = array(
211
-          '#type' => 'password',
212
-          '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'),
213
-          '#size' => 17,
214
-          '#attributes' => array(
211
+            '#type' => 'password',
212
+            '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'),
213
+            '#size' => 17,
214
+            '#attributes' => array(
215 215
             'autocomplete' => 'off',
216
-          ),
217
-          '#prefix' => "<div id='delete-password-field'>",
218
-          '#suffix' => "</div>",
219
-          '#weight' => 25,
216
+            ),
217
+            '#prefix' => "<div id='delete-password-field'>",
218
+            '#suffix' => "</div>",
219
+            '#weight' => 25,
220 220
         );
221
-      }
221
+        }
222 222
 
223
-      $form['separator_bottom'] = array(
223
+        $form['separator_bottom'] = array(
224 224
         '#value' => '<div class="separator buttons"></div>',
225 225
         '#weight' => 999,
226
-      );
226
+        );
227 227
 
228
-      // Configure the action buttons
229
-      $uid = $form['_account']['#value']->uid;
230
-      $form['actions']['#weight'] = 1000;
231
-      $form['actions']['form control tabs prefix'] = array(
228
+        // Configure the action buttons
229
+        $uid = $form['_account']['#value']->uid;
230
+        $form['actions']['#weight'] = 1000;
231
+        $form['actions']['form control tabs prefix'] = array(
232 232
         '#value' => '<ul class="form-control tab-list">',
233 233
         '#weight' => 1001,
234
-      );
235
-
236
-      unset($form['actions']['#prefix']);
237
-      unset($form['actions']['#suffix']);
238
-      $form['actions']['submit']['#prefix'] = '<li class="first tab">';
239
-      $form['actions']['submit']['#suffix'] = '</li>';
240
-      $form['actions']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit');
241
-      $form['actions']['submit']['#weight'] = 1002;
242
-      if ($disable_delete) {
234
+        );
235
+
236
+        unset($form['actions']['#prefix']);
237
+        unset($form['actions']['#suffix']);
238
+        $form['actions']['submit']['#prefix'] = '<li class="first tab">';
239
+        $form['actions']['submit']['#suffix'] = '</li>';
240
+        $form['actions']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit');
241
+        $form['actions']['submit']['#weight'] = 1002;
242
+        if ($disable_delete) {
243 243
         $form['actions']['submit']['#disabled'] = TRUE;
244 244
         $form['actions']['submit']['#value'] = '';
245
-      }
245
+        }
246 246
 
247
-      $form['actions']['cancel']['#prefix'] = '<li class="tab">';
248
-      $form['actions']['cancel']['#suffix'] = '</li>';
249
-      $form['actions']['cancel']['#weight'] = 1003;
250
-      $form['actions']['cancel']['#value'] = l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'account/info/edit');
251
-      if ($disable_delete) {
247
+        $form['actions']['cancel']['#prefix'] = '<li class="tab">';
248
+        $form['actions']['cancel']['#suffix'] = '</li>';
249
+        $form['actions']['cancel']['#weight'] = 1003;
250
+        $form['actions']['cancel']['#value'] = l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'account/info/edit');
251
+        if ($disable_delete) {
252 252
         $form['actions']['cancel']['#prefix'] = '<li class="first tab">';
253
-      }
253
+        }
254 254
 
255
-      $form['actions']['form control tabs suffix'] = array(
255
+        $form['actions']['form control tabs suffix'] = array(
256 256
         '#value' => '</ul>',
257 257
         '#weight' => 1010,
258
-      );
258
+        );
259 259
 
260
-      $form['#redirect'] = 'account/' . $uid;
261
-      $form['#validate'] = array('boincuser_delete_validate');
262
-      $form['#submit'] = array('boincuser_delete_submit');
263
-      break;
260
+        $form['#redirect'] = 'account/' . $uid;
261
+        $form['#validate'] = array('boincuser_delete_validate');
262
+        $form['#submit'] = array('boincuser_delete_submit');
263
+        break;
264 264
 
265
-  } // switch
265
+    } // switch
266 266
 }
267 267
 
268 268
 
@@ -273,24 +273,24 @@  discard block
 block discarded – undo
273 273
  * password.
274 274
  */
275 275
 function boincuser_delete_validate($form, &$form_state) {
276
-  require_boinc('boinc_db');
276
+    require_boinc('boinc_db');
277 277
 
278
-  if ($form_state['values']['user_delete_action'] == '') {
278
+    if ($form_state['values']['user_delete_action'] == '') {
279 279
     form_set_error('user_delete_action', bts('Please select an action to perform using the radio buttons.', array(), NULL, 'boinc:delete-user-account'));
280
-  }
280
+    }
281 281
 
282
-  // check BOINC user exists
283
-  $account = $form_state['values']['_account'];
284
-  $boinc_user = boincuser_load($account->uid, TRUE);
285
-  if (!$boinc_user) {
282
+    // check BOINC user exists
283
+    $account = $form_state['values']['_account'];
284
+    $boinc_user = boincuser_load($account->uid, TRUE);
285
+    if (!$boinc_user) {
286 286
     return form_set_error('current_pass',
287
-      bts('There was a problem deleting your account. Please contact the site administrators.', array(), NULL, 'boinc:delete-user-account')
287
+        bts('There was a problem deleting your account. Please contact the site administrators.', array(), NULL, 'boinc:delete-user-account')
288 288
     );
289
-  }
289
+    }
290 290
 
291
-  if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) {
291
+    if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) {
292 292
     return true;
293
-  }
293
+    }
294 294
 }
295 295
 
296 296
 /**
@@ -301,39 +301,39 @@  discard block
 block discarded – undo
301 301
  * to delete the account.
302 302
  */
303 303
 function boincuser_delete_submit($form, &$form_state) {
304
-  require_boinc('token');
305
-  global $user;
304
+    require_boinc('token');
305
+    global $user;
306 306
 
307
-  $uid = $form_state['values']['_account']->uid;
308
-  $account = user_load(array('uid' => $uid));
307
+    $uid = $form_state['values']['_account']->uid;
308
+    $account = user_load(array('uid' => $uid));
309 309
 
310
-  if (!$account) {
310
+    if (!$account) {
311 311
     drupal_set_message(bts('ERROR: The user account @uid does not exist.', array('@uid' => $uid), array(), NULL, 'delete-user-account'), 'error');
312 312
     watchdog('user', 'Attempted to cancel non-existing user account UID: %uid.', array('%uid' => $uid), WATCHDOG_ERROR);
313 313
     return;
314
-  }
315
-
316
-  global $base_url;
317
-  global $base_path;
318
-  module_load_include('inc', 'rules', 'modules/system.rules');
319
-  $site_name = variable_get('site_name', 'Drupal-BOINC');
320
-  $site_url = $base_url . $base_path . "user/login";
321
-
322
-  // Perform the requested operation
323
-  $op = $form_state['values']['user_delete_action'];
324
-  // create token with 1 day/24 hour expiration
325
-  $mytoken = create_token($account->boincuser_id, 'D', 24*60*60);
326
-  switch ($op) {
314
+    }
315
+
316
+    global $base_url;
317
+    global $base_path;
318
+    module_load_include('inc', 'rules', 'modules/system.rules');
319
+    $site_name = variable_get('site_name', 'Drupal-BOINC');
320
+    $site_url = $base_url . $base_path . "user/login";
321
+
322
+    // Perform the requested operation
323
+    $op = $form_state['values']['user_delete_action'];
324
+    // create token with 1 day/24 hour expiration
325
+    $mytoken = create_token($account->boincuser_id, 'D', 24*60*60);
326
+    switch ($op) {
327 327
     case 'boincuser_delete_softdelete':
328 328
       $myurl = "${base_url}/user/{$account->uid}/odeleteconfirm/$mytoken";
329
-      break;
329
+        break;
330 330
     case 'boincuser_delete_delete':
331 331
       $myurl = "${base_url}/user/{$account->uid}/deleteconfirm/$mytoken";
332
-      break;
333
-  }
332
+        break;
333
+    }
334 334
 
335
-  $mysubject = "Instructions for account deletion at {$site_name}";
336
-  $mymessage = ''
335
+    $mysubject = "Instructions for account deletion at {$site_name}";
336
+    $mymessage = ''
337 337
     . "{$account->boincuser_name},\n"
338 338
     . "\n"
339 339
     . "We have received a request to DELETE your user account at "
@@ -355,25 +355,25 @@  discard block
 block discarded – undo
355 355
     . "\n"
356 356
     . "{$site_name} support team";
357 357
 
358
-  // Create array for sending email to user to notify account is being
359
-  // disabled/deleted. Then send email.
360
-  $settings = array(
358
+    // Create array for sending email to user to notify account is being
359
+    // disabled/deleted. Then send email.
360
+    $settings = array(
361 361
     'from' => '',
362 362
     'subject' => $mysubject,
363 363
     'message' => $mymessage,
364
-  );
365
-  rules_action_mail_to_user($account, $settings);
364
+    );
365
+    rules_action_mail_to_user($account, $settings);
366 366
 
367
-  drupal_set_message(bts("INFO: You have requested account deletion. Please check your email for further instructions.", array(), NULL, 'boinc:delete-user-account'),'info');
367
+    drupal_set_message(bts("INFO: You have requested account deletion. Please check your email for further instructions.", array(), NULL, 'boinc:delete-user-account'),'info');
368 368
 
369
-  $redirect = variable_get('boincuser_delete_redirect', '<front>');
370
-  // Redirect
371
-  if (!empty($redirect)) {
369
+    $redirect = variable_get('boincuser_delete_redirect', '<front>');
370
+    // Redirect
371
+    if (!empty($redirect)) {
372 372
     drupal_goto($redirect);
373
-  }
374
-  else {
373
+    }
374
+    else {
375 375
     drupal_goto();
376
-  }
376
+    }
377 377
 }
378 378
 
379 379
 
@@ -385,88 +385,88 @@  discard block
 block discarded – undo
385 385
  * The final confirmation form for the user to delete their account.
386 386
  */
387 387
 function boincuser_delete_finalconfirmation(&$form_state, $token) {
388
-  require_boinc('token');
388
+    require_boinc('token');
389 389
 
390
-  global $user;
391
-  $form = array();
390
+    global $user;
391
+    $form = array();
392 392
 
393
-  // check BOINC user exists
394
-  $account = user_load(array('uid' => $user->uid));
395
-  $uid = $user->uid;
396
-  $boincid = $account->boincuser_id;
397
-  // check $token is valid
398
-  if (!is_valid_token($boincid, $token, 'D')) {
393
+    // check BOINC user exists
394
+    $account = user_load(array('uid' => $user->uid));
395
+    $uid = $user->uid;
396
+    $boincid = $account->boincuser_id;
397
+    // check $token is valid
398
+    if (!is_valid_token($boincid, $token, 'D')) {
399 399
     drupal_set_message(bts('ERROR: You have supplied an incorrect (most likely expired) token. Please obtain a new token by !link your account be deleted.',
400 400
     array(
401
-      '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"),
401
+        '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"),
402 402
     ),
403 403
     NULL, 'boinc:delete-user-account'), 'error');
404 404
     drupal_goto();
405
-  }
405
+    }
406 406
 
407
-  // Attach account to this form.
408
-  $form['_account'] = array('#type' => 'value', '#value' => $account);
407
+    // Attach account to this form.
408
+    $form['_account'] = array('#type' => 'value', '#value' => $account);
409 409
 
410
-  // This form is for hard/wipe delete
411
-  $form['_action'] = array('#type' => 'value', '#value' => 'hard_wipe');
410
+    // This form is for hard/wipe delete
411
+    $form['_action'] = array('#type' => 'value', '#value' => 'hard_wipe');
412 412
 
413
-  // Instructions
414
-  $form['main']['fs1'] = array(
413
+    // Instructions
414
+    $form['main']['fs1'] = array(
415 415
     '#type' => 'fieldset',
416 416
     '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'),
417 417
     '#weight' => 10,
418 418
     '#collapsible' => TRUE,
419 419
     '#collapsed' => TRUE,
420
-  );
421
-  $form['main']['fs1']['instructions1'] = array(
420
+    );
421
+    $form['main']['fs1']['instructions1'] = array(
422 422
     '#value' => '<p>'.
423 423
     bts('You are one-step away from deleting your account. Enter your password in the textbox below and click submit. This action is irreversable: once you delete your account, there is no way un-delete.', array(), NULL, 'boinc:delete-user-account').
424 424
     '</p>',
425 425
     '#prefix' => "<div id='delete-instructions'>",
426 426
     '#suffix' => "</div>",
427
-  );
427
+    );
428 428
 
429
-  $form['main']['fs1']['instructions2'] = array(
429
+    $form['main']['fs1']['instructions2'] = array(
430 430
     '#value' => '<p>'.
431 431
     bts('If you wish to cancel, click cancel and you will be taken to your account dashboard.', array(), NULL, 'boinc:delete-user-account').
432 432
     '</p>',
433 433
     '#prefix' => "<div id='delete-instructions'>",
434 434
     '#suffix' => "</div>",
435
-  );
435
+    );
436 436
 
437
-  // Password field
438
-  $form['main']['current_pass'] = array(
437
+    // Password field
438
+    $form['main']['current_pass'] = array(
439 439
     '#type' => 'password',
440 440
     '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'),
441 441
     '#size' => 17,
442 442
     '#attributes' => array(
443
-      'autocomplete' => 'off',
443
+        'autocomplete' => 'off',
444 444
     ),
445 445
     '#weight' => 25,
446
-  );
446
+    );
447 447
 
448
-  // Form control
449
-  $form['form control tabs prefix'] = array(
448
+    // Form control
449
+    $form['form control tabs prefix'] = array(
450 450
     '#value' => '<ul class="form-control tab-list">',
451 451
     '#weight' => 1001,
452
-  );
453
-  $form['submit'] = array(
452
+    );
453
+    $form['submit'] = array(
454 454
     '#prefix' => '<li class="first tab">',
455 455
     '#type' => 'submit',
456 456
     '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'),
457 457
     '#suffix' => '</li>',
458 458
     '#weight' => 1002,
459
-  );
460
-  $form['form control tabs'] = array(
459
+    );
460
+    $form['form control tabs'] = array(
461 461
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/") . '</li>',
462 462
     '#weight' => 1003,
463
-  );
464
-  $form['form control tabs suffix'] = array(
463
+    );
464
+    $form['form control tabs suffix'] = array(
465 465
     '#value' => '</ul>',
466 466
     '#weight' => 1004,
467
-  );
467
+    );
468 468
 
469
-  return $form;
469
+    return $form;
470 470
 }
471 471
 
472 472
 /**
@@ -474,133 +474,133 @@  discard block
 block discarded – undo
474 474
  * the soft/obfuscate method.
475 475
  */
476 476
 function boincuser_delete_softdelconfirmation(&$form_state, $token) {
477
-  require_boinc('token');
477
+    require_boinc('token');
478 478
 
479
-  global $user;
480
-  $form = array();
479
+    global $user;
480
+    $form = array();
481 481
 
482
-  // check BOINC user exists
483
-  $account = user_load(array('uid' => $user->uid));
484
-  $uid = $user->uid;
485
-  $boincid = $account->boincuser_id;
482
+    // check BOINC user exists
483
+    $account = user_load(array('uid' => $user->uid));
484
+    $uid = $user->uid;
485
+    $boincid = $account->boincuser_id;
486 486
 
487
-  // check $token is valid
488
-  if (!is_valid_token($boincid, $token, 'D')) {
487
+    // check $token is valid
488
+    if (!is_valid_token($boincid, $token, 'D')) {
489 489
     drupal_set_message(bts('ERROR: You have supplied an incorrect (most likely expired) token. Please obtain a new token by !link your account be deleted.',
490 490
     array(
491
-      '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"),
491
+        '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"),
492 492
     ),
493 493
     NULL, 'boinc:delete-user-account'), 'error');
494 494
     drupal_goto();
495
-  }
495
+    }
496 496
 
497
-  // Attach account to this form.
498
-  $form['_account'] = array('#type' => 'value', '#value' => $account);
497
+    // Attach account to this form.
498
+    $form['_account'] = array('#type' => 'value', '#value' => $account);
499 499
 
500
-  // This form is for hard/wipe delete
501
-  $form['_action'] = array('#type' => 'value', '#value' => 'soft_obfuscate');
500
+    // This form is for hard/wipe delete
501
+    $form['_action'] = array('#type' => 'value', '#value' => 'soft_obfuscate');
502 502
 
503
-  // Instructions
504
-  $form['main']['fs1'] = array(
503
+    // Instructions
504
+    $form['main']['fs1'] = array(
505 505
     '#type' => 'fieldset',
506 506
     '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'),
507 507
     '#weight' => 10,
508 508
     '#collapsible' => TRUE,
509 509
     '#collapsed' => TRUE,
510
-  );
511
-  $form['main']['fs1']['instructions1'] = array(
510
+    );
511
+    $form['main']['fs1']['instructions1'] = array(
512 512
     '#value' => '<p>'.
513 513
     bts('You are one-step away from deleting your account. Enter your password in the textbox below and click submit. This action is irreversable: once you delete your account, there is no way un-delete.', array(), NULL, 'boinc:delete-user-account').
514 514
     '</p>',
515 515
     '#prefix' => "<div id='delete-instructions'>",
516 516
     '#suffix' => "</div>",
517
-  );
517
+    );
518 518
 
519
-  $form['main']['fs1']['instructions2'] = array(
519
+    $form['main']['fs1']['instructions2'] = array(
520 520
     '#value' => '<p>'.
521 521
     bts('If you wish to cancel, click cancel and you will be taken to your account dashboard.', array(), NULL, 'boinc:delete-user-account').
522 522
     '</p>',
523 523
     '#prefix' => "<div id='delete-instructions'>",
524 524
     '#suffix' => "</div>",
525
-  );
525
+    );
526 526
 
527
-  // Password field
528
-  $form['main']['current_pass'] = array(
527
+    // Password field
528
+    $form['main']['current_pass'] = array(
529 529
     '#type' => 'password',
530 530
     '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'),
531 531
     '#size' => 17,
532 532
     '#attributes' => array(
533
-      'autocomplete' => 'off',
533
+        'autocomplete' => 'off',
534 534
     ),
535 535
     '#weight' => 25,
536
-  );
536
+    );
537 537
 
538
-  // Form control
539
-  $form['form control tabs prefix'] = array(
538
+    // Form control
539
+    $form['form control tabs prefix'] = array(
540 540
     '#value' => '<ul class="form-control tab-list">',
541 541
     '#weight' => 1001,
542
-  );
543
-  $form['submit'] = array(
542
+    );
543
+    $form['submit'] = array(
544 544
     '#prefix' => '<li class="first tab">',
545 545
     '#type' => 'submit',
546 546
     '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'),
547 547
     '#suffix' => '</li>',
548 548
     '#weight' => 1002,
549
-  );
550
-  $form['form control tabs'] = array(
549
+    );
550
+    $form['form control tabs'] = array(
551 551
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/") . '</li>',
552 552
     '#weight' => 1003,
553
-  );
554
-  $form['form control tabs suffix'] = array(
553
+    );
554
+    $form['form control tabs suffix'] = array(
555 555
     '#value' => '</ul>',
556 556
     '#weight' => 1004,
557
-  );
557
+    );
558 558
 
559
-  //set validation and submit to the functions below
560
-  $form['#validate'][] = 'boincuser_delete_finalconfirmation_validate';
561
-  $form['#submit'][] = 'boincuser_delete_finalconfirmation_submit';
562
-  return $form;
559
+    //set validation and submit to the functions below
560
+    $form['#validate'][] = 'boincuser_delete_finalconfirmation_validate';
561
+    $form['#submit'][] = 'boincuser_delete_finalconfirmation_submit';
562
+    return $form;
563 563
 }
564 564
 
565 565
 /**
566 566
  * Validation for final confirmation
567 567
  */
568 568
 function boincuser_delete_finalconfirmation_validate($form, &$form_state) {
569
-  $account = $form_state['values']['_account'];
570
-  $boinc_user = BoincUser::lookup_id($account->boincuser_id);
569
+    $account = $form_state['values']['_account'];
570
+    $boinc_user = BoincUser::lookup_id($account->boincuser_id);
571 571
 
572
-  if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) {
572
+    if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) {
573 573
     return true;
574
-  }
574
+    }
575 575
 }
576 576
 
577 577
 /**
578 578
  * Submit for final confirmation
579 579
  */
580 580
 function boincuser_delete_finalconfirmation_submit($form, &$form_state) {
581
-  global $user;
581
+    global $user;
582 582
 
583
-  // Delete the user
584
-  $account = $form_state['values']['_account'];
585
-  $action = $form_state['values']['_action'];
586
-  _boincuser_delete_deleteuser($account, $action);
583
+    // Delete the user
584
+    $account = $form_state['values']['_account'];
585
+    $action = $form_state['values']['_action'];
586
+    _boincuser_delete_deleteuser($account, $action);
587 587
 
588
-  // Destroy the current session:
589
-  session_destroy();
590
-  // Only variables can be passed by reference workaround.
591
-  $null = NULL;
592
-  user_module_invoke('logout', $null, $user);
588
+    // Destroy the current session:
589
+    session_destroy();
590
+    // Only variables can be passed by reference workaround.
591
+    $null = NULL;
592
+    user_module_invoke('logout', $null, $user);
593 593
 
594
-  // Load the anonymous user
595
-  $user = drupal_anonymous_user();
594
+    // Load the anonymous user
595
+    $user = drupal_anonymous_user();
596 596
 
597
-  $redirect = variable_get('boincuser_delete_redirect', '<front>');
598
-  // Redirect
599
-  if (!empty($redirect)) {
597
+    $redirect = variable_get('boincuser_delete_redirect', '<front>');
598
+    // Redirect
599
+    if (!empty($redirect)) {
600 600
     drupal_goto($redirect);
601
-  }
602
-  else {
601
+    }
602
+    else {
603 603
     drupal_goto();
604
-  }
604
+    }
605 605
 
606 606
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincuser/includes/boincuser.helpers.inc 1 patch
Indentation   +241 added lines, -241 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
-  /**
15
-   * user_load_by_mail will be broken out of user_load
16
-   */
17
-  function user_load_by_mail($mail) {
14
+    /**
15
+     * user_load_by_mail will be broken out of user_load
16
+     */
17
+    function user_load_by_mail($mail) {
18 18
     return user_load(array('mail' => $mail));
19
-  }
19
+    }
20 20
 }
21 21
  
22 22
 
@@ -28,14 +28,14 @@  discard block
 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) {
31
+    $field = content_fields($field_name, $content_type); 
32
+    $validators = array_merge(filefield_widget_upload_validators($field), imagefield_widget_upload_validators($field));
33
+    if ($ignore_resolution) {
34 34
     unset($validators['filefield_validate_image_resolution']);
35
-  }
36
-  $target_path = filefield_widget_file_path($field);
37
-  // Create the image object
38
-  return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE);
35
+    }
36
+    $target_path = filefield_widget_file_path($field);
37
+    // Create the image object
38
+    return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE);
39 39
 }
40 40
 
41 41
 
@@ -47,73 +47,73 @@  discard block
 block discarded – undo
47 47
  * 
48 48
  */
49 49
 function boincuser_check_credit_requirements() {
50
-  global $user;
51
-  if (!$user->uid) {
50
+    global $user;
51
+    if (!$user->uid) {
52 52
     return FALSE;
53
-  }
54
-  $account = user_load($user->uid);
55
-  $min_credit_to_post = variable_get('boinc_comment_min_credit', 0);
56
-  $community_role = array_search('community member', user_roles(true));
57
-  $unrestricted_role = array_search('verified contributor', user_roles(true));
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()) {
59
+    // Set user roles based on current penalty status...
60
+    if ($account->boincuser_penalty_expiration > time()) {
61 61
     drupal_set_message(bts(
62
-      'You are banned from community participation until @date',
63
-      array('@date' => format_date($account->boincuser_penalty_expiration))
62
+        'You are banned from community participation until @date',
63
+        array('@date' => format_date($account->boincuser_penalty_expiration))
64 64
     ), 'warning', FALSE);
65 65
     if (isset($account->roles[$community_role])) {
66
-      // Remove from the community role, if not already
67
-      unset($account->roles[$community_role]);
66
+        // Remove from the community role, if not already
67
+        unset($account->roles[$community_role]);
68 68
     }
69 69
     if (isset($account->roles[$unrestricted_role])) {
70
-      // Likewise, revoke extra privileges
71
-      unset($account->roles[$unrestricted_role]);
70
+        // Likewise, revoke extra privileges
71
+        unset($account->roles[$unrestricted_role]);
72 72
     }
73 73
     user_save($account, array('roles' => $account->roles));
74
-  }
75
-  else {
74
+    }
75
+    else {
76 76
     if (!isset($account->roles[$community_role])) {
77
-      // The user should be a 'community member' role. If the user was
78
-      // previously banned, this will restore that role.
79
-      $account->roles[$community_role] = 'community member';
80
-      user_save($account, array('roles' => $account->roles));
77
+        // The user should be a 'community member' role. If the user was
78
+        // previously banned, this will restore that role.
79
+        $account->roles[$community_role] = 'community member';
80
+        user_save($account, array('roles' => $account->roles));
81 81
     }
82 82
 
83 83
     // ... and total credit.
84 84
     if ($account->boincuser_total_credit >= $min_credit_to_post) {
85
-      if (!isset($account->roles[$unrestricted_role])) {
85
+        if (!isset($account->roles[$unrestricted_role])) {
86 86
         // This user is now above the credit threshold and is allowed full
87 87
         // privileges
88 88
         $account->roles[$unrestricted_role] = 'verified contributor';
89 89
         user_save($account, array('roles' => $account->roles));
90
-      }
90
+        }
91 91
     }
92 92
     else {
93
-      drupal_set_message(bts(
93
+        drupal_set_message(bts(
94 94
         'You must earn @count more credits to be able to post comments on this site and create or modify your user profile.',
95 95
         array('@count' => $min_credit_to_post - $account->boincuser_total_credit)
96
-      ), 'warning', FALSE);
97
-      if (isset($account->roles[$unrestricted_role])) {
96
+        ), 'warning', FALSE);
97
+        if (isset($account->roles[$unrestricted_role])) {
98 98
         // Either the threshold has been raised or credits have been revoked;
99 99
         // this user no longer qualifies for full privileges
100 100
         unset($account->roles[$unrestricted_role]);
101 101
         user_save($account, array('roles' => $account->roles));
102
-      }
102
+        }
103 103
     }
104 104
 
105
-  }
105
+    }
106 106
 }
107 107
 
108 108
 /**
109 109
  * Get the cid of the first comment the user has not seen on a given node
110 110
  */
111 111
 function boincuser_get_first_unread_comment_id($nid, $uid = NULL) {
112
-  if (!$uid) {
112
+    if (!$uid) {
113 113
     global $user;
114 114
     $uid = $user->uid;
115
-  }
116
-  return db_result(db_query("
115
+    }
116
+    return db_result(db_query("
117 117
     SELECT c.cid
118 118
     FROM {node} n
119 119
     INNER JOIN {comments} c ON c.nid = n.nid
@@ -124,40 +124,40 @@  discard block
 block discarded – undo
124 124
     ORDER BY c.timestamp ASC
125 125
     LIMIT 1",
126 126
     $uid, $nid
127
-  ));
127
+    ));
128 128
 }
129 129
 
130 130
 /**
131 131
  * Choose and set the user of the day
132 132
  */
133 133
 function boincuser_select_user_of_the_day() {
134
-  // First get a list of users with recent credit
135
-  db_set_active('boinc_rw');
136
-  $users_with_credit = db_query("
134
+    // First get a list of users with recent credit
135
+    db_set_active('boinc_rw');
136
+    $users_with_credit = db_query("
137 137
     SELECT
138 138
       id
139 139
     FROM {user} u
140 140
     JOIN {profile} p ON p.userid = u.id
141 141
     WHERE expavg_credit > 1
142 142
     ORDER BY uotd_time ASC, RAND()"
143
-  );
144
-  db_set_active('default');
145
-  $active_users = array();
146
-  while ($user_with_credit = db_fetch_object($users_with_credit)) {
143
+    );
144
+    db_set_active('default');
145
+    $active_users = array();
146
+    while ($user_with_credit = db_fetch_object($users_with_credit)) {
147 147
     $active_users[] = $user_with_credit->id;
148
-  }
149
-  $active_users = implode(',', $active_users);
150
-  // Limit to users who have never been user of the day, if there are any
151
-  $never_been_picked = db_result(db_query("
148
+    }
149
+    $active_users = implode(',', $active_users);
150
+    // Limit to users who have never been user of the day, if there are any
151
+    $never_been_picked = db_result(db_query("
152 152
     SELECT COUNT(*)
153 153
     FROM {boincuser} bu
154 154
     WHERE bu.uotd_time = 0
155 155
     " . ($active_users ? " AND bu.boinc_id IN ({$active_users}) " : '')
156
-  ));
157
-  $new_uotd_uid = 0;
158
-  while (!$new_uotd_uid) {
156
+    ));
157
+    $new_uotd_uid = 0;
158
+    while (!$new_uotd_uid) {
159 159
     // Select a user of the day randomly from the pool
160
-      $new_uotd_uid = db_result(db_query("
160
+        $new_uotd_uid = db_result(db_query("
161 161
       SELECT
162 162
         n.uid
163 163
       FROM {node} n
@@ -171,31 +171,31 @@  discard block
 block discarded – undo
171 171
       LIMIT 1"
172 172
     ));
173 173
     if (!$new_uotd_uid) {
174
-      // Can't find a user with a profile; remove constraints on the pool
175
-      if ($never_been_picked) {
174
+        // Can't find a user with a profile; remove constraints on the pool
175
+        if ($never_been_picked) {
176 176
         // Allow users who have been previously selected
177 177
         $never_been_picked = FALSE;
178
-      }
179
-      elseif ($active_users) {
178
+        }
179
+        elseif ($active_users) {
180 180
         // Allow users who are not even active (getting desperate)
181 181
         $active_users = FALSE;
182
-      }
183
-      else {
182
+        }
183
+        else {
184 184
         // Process failed...
185 185
         return FALSE;
186
-      }
186
+        }
187 187
     }
188
-  }
189
-  $uotd = user_load($new_uotd_uid);
190
-  if ($uotd->uid) {
188
+    }
189
+    $uotd = user_load($new_uotd_uid);
190
+    if ($uotd->uid) {
191 191
     db_query("
192 192
       UPDATE {boincuser}
193 193
       SET uotd_time = '%d'
194 194
       WHERE uid = '%d'",
195
-      time(), $uotd->uid
195
+        time(), $uotd->uid
196 196
     );
197
-  }
198
-  return $uotd;
197
+    }
198
+    return $uotd;
199 199
 }
200 200
 
201 201
 
@@ -213,71 +213,71 @@  discard block
 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');
216
+    require_boinc('token');
217
+    module_load_include('inc', 'rules', 'modules/system.rules');
218 218
 
219
-  global $base_url;
220
-  $site_name = variable_get('site_name', 'Drupal-BOINC');
219
+    global $base_url;
220
+    $site_name = variable_get('site_name', 'Drupal-BOINC');
221 221
 
222
-  if (is_null($new_email)) {
222
+    if (is_null($new_email)) {
223 223
     $new_email = $account->mail;
224
-  }
225
-  if (is_null($prev_email)) {
224
+    }
225
+    if (is_null($prev_email)) {
226 226
     $prev_email = $account->boincuser_previous_email_addr;
227
-  }
228
-
229
-  // @todo - set constant in drupal, or use BOINC contsants
230
-  $duration = TOKEN_DURATION_ONE_WEEK;
231
-  $changedate = date('F j, Y \a\t G:i T', time());
232
-  $newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration);
233
-  $token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration);
234
-  if ($adminuser) {
227
+    }
228
+
229
+    // @todo - set constant in drupal, or use BOINC contsants
230
+    $duration = TOKEN_DURATION_ONE_WEEK;
231
+    $changedate = date('F j, Y \a\t G:i T', time());
232
+    $newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration);
233
+    $token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration);
234
+    if ($adminuser) {
235 235
     $graf1 = "Your email address was changed from {$prev_email} to {$new_email} "
236
-      . "on {$changedate}. If you need to reverse this change, please look for "
237
-      . "an email send to the email address: {$prev_email}.\n";
238
-  }
239
-  else {
236
+        . "on {$changedate}. If you need to reverse this change, please look for "
237
+        . "an email send to the email address: {$prev_email}.\n";
238
+    }
239
+    else {
240 240
     $graf1 = "Your email address was changed from {$prev_email} to {$new_email} "
241
-      . "on {$changedate}. You will not be able to change your email address "
242
-      . "until {$newdate}. If you need to reverse this change, please look for "
243
-      . "an email send to the email address: {$prev_email}.\n";
244
-  }
245
-
246
-  // Send email #1 to current address
247
-  $mysubject = "Notification of email change at {$site_name}";
248
-  $mymessage = ''
249
-      . "{$account->boincuser_name},\n"
250
-      . "\n"
251
-      . $graf1
252
-      . "\n"
253
-      . "Thanks, \n"
254
-      . "{$site_name} support team\n";
255
-
256
-  $settings = array(
241
+        . "on {$changedate}. You will not be able to change your email address "
242
+        . "until {$newdate}. If you need to reverse this change, please look for "
243
+        . "an email send to the email address: {$prev_email}.\n";
244
+    }
245
+
246
+    // Send email #1 to current address
247
+    $mysubject = "Notification of email change at {$site_name}";
248
+    $mymessage = ''
249
+        . "{$account->boincuser_name},\n"
250
+        . "\n"
251
+        . $graf1
252
+        . "\n"
253
+        . "Thanks, \n"
254
+        . "{$site_name} support team\n";
255
+
256
+    $settings = array(
257 257
     'from' => '',
258 258
     'to' => $new_email,
259 259
     'subject' => $mysubject,
260 260
     'message' => $mymessage,
261
-  );
262
-  rules_action_mail_to_user($account, $settings);
263
-
264
-  // Send email #2 to previous address.
265
-  $mymessage = ''
266
-      . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n"
267
-      . "\n"
268
-      . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n"
269
-      . "\n"
270
-      . "Thanks, \n"
271
-      . "{$site_name} support team\n";
272
-
273
-  $settings = array(
261
+    );
262
+    rules_action_mail_to_user($account, $settings);
263
+
264
+    // Send email #2 to previous address.
265
+    $mymessage = ''
266
+        . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n"
267
+        . "\n"
268
+        . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n"
269
+        . "\n"
270
+        . "Thanks, \n"
271
+        . "{$site_name} support team\n";
272
+
273
+    $settings = array(
274 274
     'from' => '',
275 275
     'to' => $prev_email,
276 276
     'subject' => $mysubject,
277 277
     'message' => $mymessage,
278
-  );
278
+    );
279 279
 
280
-  rules_action_mail($settings);
280
+    rules_action_mail($settings);
281 281
 }
282 282
 
283 283
 /**
@@ -287,32 +287,32 @@  discard block
 block discarded – undo
287 287
  *
288 288
  */
289 289
 function create_proper_drupalname($requested_name) {
290
-  if (!$requested_name) {
290
+    if (!$requested_name) {
291 291
     // If the name is empty, set it
292 292
     $requested_name = 'anonymous';
293
-  }
294
-  $same_name_tally = 1;
295
-
296
-  // Remove extra spaces
297
-  $name2 = preg_replace("/ {2,}/", " ", trim($requested_name));
298
-  // Remove any non-valid characters
299
-  $cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2);
300
-  // Truncate name
301
-  $name_length = strlen($cleaned_name);
302
-  if ($name_length > 56) {
293
+    }
294
+    $same_name_tally = 1;
295
+
296
+    // Remove extra spaces
297
+    $name2 = preg_replace("/ {2,}/", " ", trim($requested_name));
298
+    // Remove any non-valid characters
299
+    $cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2);
300
+    // Truncate name
301
+    $name_length = strlen($cleaned_name);
302
+    if ($name_length > 56) {
303 303
     // Name is limited to 60 characters, but we want to leave space to add a
304 304
     // tally if needed (for users with duplicate names); Limit to 56 chars and
305 305
     // replace the middle of the string with "..." if too long
306 306
     $cleaned_name = substr_replace($cleaned_name, '...', 28, ($name_length-56)+3);
307
-  }
307
+    }
308 308
 
309
-  // Determine if there are duplicate names, if so append a number to end.
310
-  $unique_name = $cleaned_name;
311
-  while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) {
309
+    // Determine if there are duplicate names, if so append a number to end.
310
+    $unique_name = $cleaned_name;
311
+    while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) {
312 312
     $same_name_tally++;
313 313
     $unique_name = "{$cleaned_name}_{$same_name_tally}";
314
-  }
315
-  return $unique_name;
314
+    }
315
+    return $unique_name;
316 316
 }
317 317
 
318 318
 
@@ -326,9 +326,9 @@  discard block
 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,27 +339,27 @@  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);
342
+    require_boinc('consent');
343
+    $boinc_user = boincuser_load($user->uid, TRUE);
344 344
 
345
-  list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL);
346
-  if ($checkct) {
345
+    list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL);
346
+    if ($checkct) {
347 347
     $rc1 = consent_to_a_policy($boinc_user, $ctid, 1, 0, 'Webform', time());
348 348
     if (!$rc1) {
349
-      drupal_set_message(
349
+        drupal_set_message(
350 350
         bts("ERROR: Database error when attempting to INSERT into table consent with ID=@id. Please contact site administrators.",
351 351
         array('@id' => $boinc_user->id),
352 352
         'NULL', 'boinc:consent-termsofuse'),
353
-      'error');
353
+        'error');
354 354
     }
355 355
     return $rc1;
356
-  }
357
-  else {
356
+    }
357
+    else {
358 358
     drupal_set_message(
359
-      bts('ERROR: Consent type for enrollment not found. Please contact site administrators.', array(), 'NULL', 'boinc:consent-termsofuse'),
359
+        bts('ERROR: Consent type for enrollment not found. Please contact site administrators.', array(), 'NULL', 'boinc:consent-termsofuse'),
360 360
     'error');
361
-  }
362
-  return FALSE;
361
+    }
362
+    return FALSE;
363 363
 }
364 364
 
365 365
 /**
@@ -368,16 +368,16 @@  discard block
 block discarded – undo
368 368
  */
369 369
 function _boincuser_ignore_paths($path, $paths_to_ignore) {
370 370
 
371
-  foreach ($paths_to_ignore as $pi) {
371
+    foreach ($paths_to_ignore as $pi) {
372 372
     // @todo Currently this function uses {} as PHP regexp
373 373
     // delimiters. Curly brace is not really allowed un URLs, but a
374 374
     // more robust function would first check for these curly braces
375 375
     // in the path_to_ignore patterms, just in case.
376 376
     if (preg_match('{' . $pi . '}', $path)) {
377
-      return TRUE;
377
+        return TRUE;
378 378
     }
379
-  }
380
-  return FALSE;
379
+    }
380
+    return FALSE;
381 381
 }
382 382
 
383 383
 /**
@@ -385,20 +385,20 @@  discard block
 block discarded – undo
385 385
  * Drupal's recover email path.
386 386
  */
387 387
 function _boincuser_redirect_recover_email() {
388
-  $params = array(
388
+    $params = array(
389 389
     'boincid' => isset($_GET['id']) ? $_GET['id'] : '',
390 390
     'token' => isset($_GET['token']) ? $_GET['token'] : ''
391
-  );
391
+    );
392 392
 
393
-  // If boincid or token is not present, then go to the home page.
394
-  if (empty($params['boincid']) or empty($params['token'])) {
393
+    // If boincid or token is not present, then go to the home page.
394
+    if (empty($params['boincid']) or empty($params['token'])) {
395 395
     $redirect = '';
396
-  }
397
-  else {
396
+    }
397
+    else {
398 398
     $uid = boincuser_lookup_uid($params['boincid']);
399 399
     $redirect = "/user/${uid}/recoveremail/${params['token']}";
400
-  }
401
-  drupal_goto($redirect);
400
+    }
401
+    drupal_goto($redirect);
402 402
 }
403 403
 
404 404
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -409,17 +409,17 @@  discard block
 block discarded – undo
409 409
  * Require BOINC library
410 410
  */
411 411
 function require_boinc($libraries) {
412
-  if ($include_dir = boinc_get_path('html_inc')) {
412
+    if ($include_dir = boinc_get_path('html_inc')) {
413 413
     $working_dir = getcwd();
414 414
     chdir($include_dir);
415 415
     if (!is_array($libraries)) {
416
-      $libraries = array($libraries);
416
+        $libraries = array($libraries);
417 417
     }
418 418
     foreach ($libraries as $library) {
419
-      require_once("{$library}.inc");
419
+        require_once("{$library}.inc");
420 420
     }
421 421
     chdir($working_dir);
422
-  }
422
+    }
423 423
 }
424 424
 
425 425
 /**
@@ -427,7 +427,7 @@  discard block
 block discarded – undo
427 427
  * The path from the BOINC html root must be included (e.g. user/file.php)
428 428
  */
429 429
 function include_boinc($file) {
430
-  if ($include_dir = boinc_get_path()) {
430
+    if ($include_dir = boinc_get_path()) {
431 431
     $include_dir .= '/html';
432 432
     $workingDir = getcwd();
433 433
     $path = dirname($file);
@@ -435,84 +435,84 @@  discard block
 block discarded – undo
435 435
     chdir("{$include_dir}/{$path}");
436 436
     include($file);
437 437
     chdir($workingDir);
438
-  }
438
+    }
439 439
 }
440 440
 
441 441
 /**
442 442
  * Get the BOINC include path
443 443
  */
444 444
 function boinc_get_path($type = 'root') {
445
-  $dir = "boinc_{$type}_dir";
446
-  if ($include_dir = variable_get("boinc_{$type}_dir", '')) {
445
+    $dir = "boinc_{$type}_dir";
446
+    if ($include_dir = variable_get("boinc_{$type}_dir", '')) {
447 447
     return $include_dir;
448
-  }
449
-  else {
448
+    }
449
+    else {
450 450
     // Don't show errors on blacklisted pages
451 451
     $page_blacklist = array(
452
-      'admin/boinc/environment'
452
+        'admin/boinc/environment'
453 453
     );
454 454
     if (!in_array($_GET['q'], $page_blacklist)) {
455
-      watchdog('boincuser', 'The BOINC environment is not configured. Please
455
+        watchdog('boincuser', 'The BOINC environment is not configured. Please
456 456
           !configure_it', array('!configure_it' => l(t('configure it now'),
457 457
             'admin/boinc/environment')), WATCHDOG_WARNING);
458
-      if (user_access('administer site configuration')) {
458
+        if (user_access('administer site configuration')) {
459 459
         drupal_set_message(t('The BOINC environment is not configured. Please
460 460
           !configure_it', array('!configure_it' => l(t('configure it now'),
461 461
             'admin/boinc/environment'))), 'warning', FALSE);
462
-      }
463
-      else {
462
+        }
463
+        else {
464 464
         drupal_set_message(t('There is a problem with the site. Please contact
465 465
           the system administrator.'), 'error', FALSE);
466
-      }
467
-      // Redirect home to display the error message and avoid fatal errors
468
-      // (unless on a blacklisted page)
469
-      $redirect_blacklist = array(
466
+        }
467
+        // Redirect home to display the error message and avoid fatal errors
468
+        // (unless on a blacklisted page)
469
+        $redirect_blacklist = array(
470 470
         'admin/settings/performance',
471 471
         'admin/boinc/environment',
472 472
         'home',
473 473
         ''
474
-      );
475
-      if (!in_array($_GET['q'], $redirect_blacklist)) {
474
+        );
475
+        if (!in_array($_GET['q'], $redirect_blacklist)) {
476 476
         drupal_goto('');
477
-      }
477
+        }
478 478
     }
479 479
     else {
480
-      // Clear the messages on the environment config page
481
-      drupal_get_messages();
480
+        // Clear the messages on the environment config page
481
+        drupal_get_messages();
482 482
     }
483
-  }
484
-  return FALSE;
483
+    }
484
+    return FALSE;
485 485
 }
486 486
 
487 487
 /**
488 488
  * Get the configured scheduler tags
489 489
  */
490 490
 function boinc_get_scheduler_tags() {
491
-  // Don't generate messages for blacklisted pages
492
-  $page_blacklist = array(
491
+    // Don't generate messages for blacklisted pages
492
+    $page_blacklist = array(
493 493
     'admin/boinc/environment',
494 494
     'admin/boinc/scheduler'
495
-  );
496
-  if ($url_config = variable_get('boinc_scheduler_urls', '')) {
495
+    );
496
+    if ($url_config = variable_get('boinc_scheduler_urls', '')) {
497 497
     return explode("\r\n", $url_config);
498
-  }
499
-  elseif (!in_array($_GET['q'], $page_blacklist)) {
498
+    }
499
+    elseif (!in_array($_GET['q'], $page_blacklist)) {
500 500
     watchdog('boincuser', 'The BOINC scheduling server settings are not yet
501 501
         configured. Please !verify for the settings to become effective.',
502
-          array('!verify' => l(t('verify the default values') . ' <strong>' . 
502
+            array('!verify' => l(t('verify the default values') . ' <strong>' . 
503 503
             t('and') . '</strong> ' . t('save the configuration'),
504 504
             'admin/boinc/scheduler', array('html' => TRUE))
505
-          ), WATCHDOG_WARNING);
505
+            ), WATCHDOG_WARNING);
506 506
     if (user_access('administer site configuration')) {
507
-      drupal_set_message(t('The BOINC scheduling server settings are not yet
507
+        drupal_set_message(t('The BOINC scheduling server settings are not yet
508 508
           configured. Please !verify for the settings to become effective',
509 509
             array('!verify' => l(t('verify the default values') . ' <strong>' . 
510
-              t('and') . '</strong> ' . t('save the configuration'),
511
-              'admin/boinc/scheduler', array('html' => TRUE))
510
+                t('and') . '</strong> ' . t('save the configuration'),
511
+                'admin/boinc/scheduler', array('html' => TRUE))
512 512
             )), 'warning', FALSE);
513 513
     }
514
-  }
515
-  return array();
514
+    }
515
+    return array();
516 516
 }
517 517
 
518 518
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -524,41 +524,41 @@  discard block
 block discarded – undo
524 524
  * Determine if a BOINC ID matches the logged in user
525 525
  */
526 526
 function is_current_boinc_user($boinc_id) {
527
-  global $user;
528
-  if (!$user->uid) {
527
+    global $user;
528
+    if (!$user->uid) {
529 529
     return FALSE;
530
-  }
531
-  // boincuser_id is not stored in the global user, so load a new instance
532
-  $drupuser = user_load($user->uid);
533
-  return ($boinc_id == $drupuser->boincuser_id);
530
+    }
531
+    // boincuser_id is not stored in the global user, so load a new instance
532
+    $drupuser = user_load($user->uid);
533
+    return ($boinc_id == $drupuser->boincuser_id);
534 534
 }
535 535
 
536 536
 /**
537 537
  * Convert a BOINC ID to a Drupal ID
538 538
  */
539 539
 function boincuser_lookup_uid($boinc_id) {
540
-  $drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id));
541
-  return $drupal_id;
540
+    $drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id));
541
+    return $drupal_id;
542 542
 }
543 543
 function get_drupal_id($boinc_id) {
544
-  return boincuser_lookup_uid($boinc_id);
544
+    return boincuser_lookup_uid($boinc_id);
545 545
 }
546 546
 
547 547
 /**
548 548
  * Get a BOINC user object
549 549
  */
550 550
 function boincuser_load($user_id = NULL, $is_drupal_id = FALSE) {
551
-  if (!$user_id) {
551
+    if (!$user_id) {
552 552
     global $user;
553 553
     $user_id = $user->uid;
554 554
     $is_drupal_id = TRUE;
555
-  }
556
-  if ($is_drupal_id) {
555
+    }
556
+    if ($is_drupal_id) {
557 557
     $account = user_load($user_id);
558 558
     $user_id = $account->boincuser_id;
559
-  }
560
-  require_boinc('boinc_db');
561
-  return BoincUser::lookup_id($user_id);
559
+    }
560
+    require_boinc('boinc_db');
561
+    return BoincUser::lookup_id($user_id);
562 562
 }
563 563
 
564 564
 /**
@@ -568,10 +568,10 @@  discard block
 block discarded – undo
568 568
  * page, delete button.
569 569
  */
570 570
 function _boincuser_node_profile_delete_submit($form, &$form_state) {
571
-  $node = $form['#node'];
572
-  $deleteurl = 'node/'. $node->nid .'/delete';
573
-  $afterq = 'destination=account';
574
-  drupal_goto($deleteurl, $afterq);
571
+    $node = $form['#node'];
572
+    $deleteurl = 'node/'. $node->nid .'/delete';
573
+    $afterq = 'destination=account';
574
+    drupal_goto($deleteurl, $afterq);
575 575
 }
576 576
 
577 577
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -582,8 +582,8 @@  discard block
 block discarded – undo
582 582
  * Wrapper for boinc_version() function
583 583
  */
584 584
 function get_boinc_version($x) {
585
-  require_boinc('host');
586
-  return function_exists('boinc_version') ? boinc_version($x) : 'err!';
585
+    require_boinc('host');
586
+    return function_exists('boinc_version') ? boinc_version($x) : 'err!';
587 587
 }
588 588
   
589 589
 
@@ -592,14 +592,14 @@  discard block
 block discarded – undo
592 592
  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
593 593
 
594 594
 /**
595
-  * Generate the friend block header
596
-  */
595
+ * Generate the friend block header
596
+ */
597 597
 function boincuser_views_friends_block_header($context = null) {
598
-  // Get the friend count for the user being viewed
599
-  $view = views_get_current_view();
600
-  $account_id = $view->args[0];
601
-  $friend_count = flag_friend_get_friend_count($account_id);
602
-  return '<h2 class="pane-title">' . bts('Friends (@count)', 
598
+    // Get the friend count for the user being viewed
599
+    $view = views_get_current_view();
600
+    $account_id = $view->args[0];
601
+    $friend_count = flag_friend_get_friend_count($account_id);
602
+    return '<h2 class="pane-title">' . bts('Friends (@count)', 
603 603
     array('@count' => $friend_count)) . '</h2>';
604 604
 }
605 605
 
@@ -608,13 +608,13 @@  discard block
 block discarded – undo
608 608
  * database.
609 609
  */
610 610
 function _boincuser_user_name_autocomplete($string) {
611
-  $matches = array();
612
-  db_set_active('boinc_ro');
613
-  $result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10);
614
-  db_set_active('default');
615
-  while ($user = db_fetch_object($result)) {
616
-      $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')';
617
-  }
618
-
619
-  drupal_json((object)$matches);
611
+    $matches = array();
612
+    db_set_active('boinc_ro');
613
+    $result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10);
614
+    db_set_active('default');
615
+    while ($user = db_fetch_object($result)) {
616
+        $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')';
617
+    }
618
+
619
+    drupal_json((object)$matches);
620 620
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincwork/includes/boincwork.helpers.inc 1 patch
Indentation   +863 added lines, -863 removed lines patch added patch discarded remove patch
@@ -11,19 +11,19 @@  discard block
 block discarded – undo
11 11
  * that was selected
12 12
  */
13 13
 function boincwork_ahah_helper_venue_submit($form, &$form_state) {
14
-  $form_state['storage']['prefs']['preset'] = null;
15
-  ahah_helper_generic_submit($form, $form_state);
14
+    $form_state['storage']['prefs']['preset'] = null;
15
+    ahah_helper_generic_submit($form, $form_state);
16 16
 }
17 17
 
18 18
 /**
19 19
  * Get a predetermined set of preferences
20 20
  */
21 21
 function boincwork_get_preset_prefs($preset = null) {
22
-  $saved_state = variable_get('boincwork_preset_prefs', null);
22
+    $saved_state = variable_get('boincwork_preset_prefs', null);
23 23
   
24
-  // If not configured yet, use these values as for inital
25
-  // computing/general preferences.
26
-  if (!$saved_state) {
24
+    // If not configured yet, use these values as for inital
25
+    // computing/general preferences.
26
+    if (!$saved_state) {
27 27
     // Get BOINC project disk space configurations from config.xml to
28 28
     // fill in initial preference values.
29 29
     require_boinc(array('db', 'prefs'));
@@ -160,88 +160,88 @@  discard block
 block discarded – undo
160 160
           <dont_verify_images>0</dont_verify_images>
161 161
         </preset>
162 162
       </general_preferences>';
163
-  }
163
+    }
164 164
   
165
-  // Convert XML data to array format
166
-  $preset_prefs = load_configuration($saved_state);
165
+    // Convert XML data to array format
166
+    $preset_prefs = load_configuration($saved_state);
167 167
   
168
-  if ($preset) {
168
+    if ($preset) {
169 169
     // Load preset from configuration
170 170
     $preset_prefs = (array) $preset_prefs['general_preferences'];
171 171
     if (isset($preset_prefs['preset'])) {
172
-      if (!is_numeric(key($preset_prefs['preset']))) {
172
+        if (!is_numeric(key($preset_prefs['preset']))) {
173 173
         $preset_prefs['preset'] = array($preset_prefs['preset']);
174
-      }
175
-      foreach ($preset_prefs['preset'] as $key => $prefs) {
174
+        }
175
+        foreach ($preset_prefs['preset'] as $key => $prefs) {
176 176
         if (isset($prefs['@attributes']['name']) AND $prefs['@attributes']['name'] == $preset) {
177
-          return $preset_prefs['preset'][$key];
177
+            return $preset_prefs['preset'][$key];
178
+        }
178 179
         }
179
-      }
180 180
     }
181
-  }
182
-  return $preset_prefs;
181
+    }
182
+    return $preset_prefs;
183 183
 }
184 184
 
185 185
 /**
186 186
  * Load (and validate) the project specific configuration XML
187 187
  */
188 188
 function boincwork_get_project_specific_config() {
189
-  $raw_config_data = variable_get('boinc_project_specific_prefs_config', '');
189
+    $raw_config_data = variable_get('boinc_project_specific_prefs_config', '');
190 190
   
191
-  $xsd = './' . drupal_get_path('module', 'boincwork') . '/includes/projectprefs.xsd';
192
-  libxml_use_internal_errors(true);
191
+    $xsd = './' . drupal_get_path('module', 'boincwork') . '/includes/projectprefs.xsd';
192
+    libxml_use_internal_errors(true);
193 193
   
194
-  $xml = new DomDocument();
195
-  $xml->loadXML($raw_config_data, LIBXML_NOBLANKS);
196
-  if (!$xml->schemaValidate($xsd)) {
194
+    $xml = new DomDocument();
195
+    $xml->loadXML($raw_config_data, LIBXML_NOBLANKS);
196
+    if (!$xml->schemaValidate($xsd)) {
197 197
     $errors = libxml_get_errors();
198 198
     $lines = explode("\r", $raw_config_data);
199 199
     drupal_set_message("{$errors[0]->message} at line {$errors[0]->line}" .
200
-      ': <br/>' . htmlentities($lines[$errors[0]->line - 1]), 'error');
200
+        ': <br/>' . htmlentities($lines[$errors[0]->line - 1]), 'error');
201 201
     return NULL;
202
-  }
202
+    }
203 203
   
204
-  // Convert XML to array for validation
205
-  $xml = load_configuration($raw_config_data);
206
-  return $xml;
204
+    // Convert XML to array for validation
205
+    $xml = load_configuration($raw_config_data);
206
+    return $xml;
207 207
 }
208 208
 
209 209
 /**
210 210
  * Get rules by which to validate project specific data
211 211
  */
212 212
 function boincwork_get_project_specific_config_validation_rules($xml = array()) {
213
-  $rules = array();
214
-  if (!$xml) {
213
+    $rules = array();
214
+    if (!$xml) {
215 215
     // Read the config XML
216 216
     $xml = boincwork_get_project_specific_config();
217 217
     $xml = $xml['project_specific_preferences'];
218
-  }
219
-  foreach ($xml as $type => $elements) {
218
+    }
219
+    foreach ($xml as $type => $elements) {
220 220
     if (is_array($elements) AND !is_numeric(key($elements))) {
221
-      $elements = array($elements);
221
+        $elements = array($elements);
222 222
     }
223 223
     switch ($type) {
224 224
     case 'compound':
225 225
       foreach ($elements as $element) {
226 226
         $name = $element['@attributes']['name'];
227 227
         $rules[$name] = boincwork_get_project_specific_config_validation_rules($element['attributes']);
228
-      }
229
-      break;
228
+        }
229
+        break;
230 230
       
231 231
     case 'text':
232 232
       foreach ($elements as $element) {
233 233
         $name = $element['@attributes']['name'];
234 234
         $rules[$name] = array(
235
-          'datatype' => $element['@attributes']['datatype']
235
+            'datatype' => $element['@attributes']['datatype']
236 236
         );
237 237
         if (isset($element['@attributes']['min'])) {
238
-          $rules[$name]['min'] = $element['@attributes']['min'];
238
+            $rules[$name]['min'] = $element['@attributes']['min'];
239 239
         }
240 240
         if (isset($element['@attributes']['max'])) {
241
-          $rules[$name]['max'] = $element['@attributes']['max'];
241
+            $rules[$name]['max'] = $element['@attributes']['max'];
242 242
         }
243
-      }
244
-      break;
243
+        }
244
+        break;
245 245
     /*
246 246
     case 'radio':
247 247
     case 'dropdown':
@@ -265,24 +265,24 @@  discard block
 block discarded – undo
265 265
       $rules['apps'] = array(
266 266
         'minimum selected' => 1,
267 267
         'list' => array()
268
-      );
269
-      foreach ($elements as $element) {
268
+        );
269
+        foreach ($elements as $element) {
270 270
         foreach ($element['app'] as $app) {
271
-          $name = "app_{$app['@attributes']['id']}";
272
-          $rules['apps']['list'][] = $name;
273
-          //$rules[$name] = array(
274
-          //  'options' => $options
275
-          //);
271
+            $name = "app_{$app['@attributes']['id']}";
272
+            $rules['apps']['list'][] = $name;
273
+            //$rules[$name] = array(
274
+            //  'options' => $options
275
+            //);
276 276
         }
277
-      }
278
-      break;
277
+        }
278
+        break;
279 279
       
280 280
     case 'group':
281 281
       foreach ($elements as $element) {
282 282
         $name = $element['@attributes']['name'];
283 283
         $rules += boincwork_get_project_specific_config_validation_rules($element);
284
-      }
285
-      break;
284
+        }
285
+        break;
286 286
     /*
287 287
     case 'boolean':
288 288
       // Shouldn't need to validate boolean...
@@ -290,39 +290,39 @@  discard block
 block discarded – undo
290 290
       */
291 291
     default:
292 292
     }
293
-  }
294
-  return $rules;
293
+    }
294
+    return $rules;
295 295
 }
296 296
 
297 297
 /**
298 298
  * Define how project specific settings should be saved
299 299
  */
300 300
 function boincwork_format_project_specific_prefs_data($values, $xml = array()) {
301
-  $defaults = array();
302
-  if (!$xml) {
301
+    $defaults = array();
302
+    if (!$xml) {
303 303
     // Read the config XML
304 304
     $xml = boincwork_get_project_specific_config();
305 305
     $xml = $xml['project_specific_preferences'];
306
-  }
307
-  foreach ($xml as $type => $elements) {
306
+    }
307
+    foreach ($xml as $type => $elements) {
308 308
     $structure_data = array();
309 309
     if (is_array($elements) AND !is_numeric(key($elements))) {
310
-      $elements = array($elements);
310
+        $elements = array($elements);
311 311
     }
312 312
     switch ($type) {
313 313
     case 'compound':
314 314
       foreach ($elements as $element) {
315 315
         $name = $element['@attributes']['name'];
316 316
         $default[$name]['@attributes'] = boincwork_format_project_specific_prefs_data($values[$name], $element['attributes']);
317
-      }
318
-      $defaults += $default;
319
-      break;
317
+        }
318
+        $defaults += $default;
319
+        break;
320 320
       
321 321
     case 'group':
322 322
       foreach ($elements as $element) {
323 323
         $defaults += boincwork_format_project_specific_prefs_data($values, $element);
324
-      }
325
-      break;
324
+        }
325
+        break;
326 326
       
327 327
     case 'text':
328 328
     case 'radio':
@@ -331,315 +331,315 @@  discard block
 block discarded – undo
331 331
       foreach ($elements as $element) {
332 332
         $name = $element['@attributes']['name'];
333 333
         if (isset($element['@attributes']['entitytype']) AND $element['@attributes']['entitytype'] == 'attribute') {
334
-          $defaults['@attributes'][$name] = $values[$name];
334
+            $defaults['@attributes'][$name] = $values[$name];
335 335
         }
336 336
         else {
337
-          $defaults[$name] = $values[$name];
337
+            $defaults[$name] = $values[$name];
338 338
         }
339
-      }
340
-      break;
339
+        }
340
+        break;
341 341
     
342 342
     case 'apps':
343 343
       foreach ($elements as $element) {
344 344
         $defaults['app_id'] = array();
345 345
         foreach ($element['app'] as $app) {
346
-          $app_id = $app['@attributes']['id'];
347
-          if ($values['applications']["app_{$app_id}"]) {
346
+            $app_id = $app['@attributes']['id'];
347
+            if ($values['applications']["app_{$app_id}"]) {
348 348
             $defaults['app_id'][] = $app_id;
349
-          }
349
+            }
350 350
         }
351
-      }
352
-      break;
351
+        }
352
+        break;
353 353
       
354 354
     default:
355 355
     }
356
-  }
357
-  return $defaults;
356
+    }
357
+    return $defaults;
358 358
 }
359 359
 
360 360
 /**
361 361
  * Add an element to the form based on its definition
362 362
  */
363 363
 function boincwork_generate_prefs_element(&$form, $type, $elements, $user_prefs = null) {
364
-  switch ($type) {
365
-  case 'text':
364
+    switch ($type) {
365
+    case 'text':
366 366
     if (!is_numeric(key($elements))) {
367
-      $elements = array($elements);
367
+        $elements = array($elements);
368 368
     }
369 369
     foreach ($elements as $element) {
370
-      $name = $element['@attributes']['name'];
371
-      $default = $element['@attributes']['default'];
372
-      $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
373
-      $description = '';
374
-      if (isset($element['description'])) {
370
+        $name = $element['@attributes']['name'];
371
+        $default = $element['@attributes']['default'];
372
+        $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
373
+        $description = '';
374
+        if (isset($element['description'])) {
375 375
         $description = is_array($element['description']) ? $element['description']['@value'] : $element['description'];
376
-      }
376
+        }
377 377
       
378
-      $value = $default;
379
-      $user_pref = $user_prefs;
380
-      $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
381
-      if ($entitytype == 'attribute') {
378
+        $value = $default;
379
+        $user_pref = $user_prefs;
380
+        $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
381
+        if ($entitytype == 'attribute') {
382 382
         $user_pref = $user_prefs['@attributes'];
383
-      }
384
-      if (isset($user_pref[$name])) {
383
+        }
384
+        if (isset($user_pref[$name])) {
385 385
         if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) {
386
-          $value = $user_pref[$name]['@value'];
386
+            $value = $user_pref[$name]['@value'];
387 387
         }
388 388
         else {
389
-          $value = $user_pref[$name];
389
+            $value = $user_pref[$name];
390
+        }
390 391
         }
391
-      }
392 392
       
393
-      // Use appropriate datatype
394
-      if (isset($element['@attributes']['datatype'])) {
393
+        // Use appropriate datatype
394
+        if (isset($element['@attributes']['datatype'])) {
395 395
         switch($element['@attributes']['datatype']) {
396 396
         case 'integer':
397 397
           $value = (int) $value;
398
-          break;
398
+            break;
399 399
           
400 400
         case 'float':
401 401
           $value = number_format((float) $value, 2);
402
-          break;
402
+            break;
403 403
         
404 404
         default:
405 405
         }
406
-      }
406
+        }
407 407
       
408
-      // Translate elements as appropriate
409
-      if ($title) {
408
+        // Translate elements as appropriate
409
+        if ($title) {
410 410
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
411 411
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
412
-      }
413
-      if ($description) {
412
+        }
413
+        if ($description) {
414 414
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description));
415 415
         $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description));
416
-      }
416
+        }
417 417
       
418
-      $form[$name] = array(
418
+        $form[$name] = array(
419 419
         '#title' => $title,
420 420
         '#type' => 'textfield',
421 421
         '#default_value' => $value,
422 422
         '#size' => 5,
423 423
         '#description' => $description . bts(' Default value: @default', array('@default' => $default), NULL, 'boinc:account-preferences-project')
424
-      );
424
+        );
425 425
     }
426 426
     break;
427 427
     
428
-  case 'boolean':
428
+    case 'boolean':
429 429
     if (!is_numeric(key($elements))) {
430
-      $elements = array($elements);
430
+        $elements = array($elements);
431 431
     }
432 432
     foreach ($elements as $element) {
433
-      $name = $element['@attributes']['name'];
434
-      $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
435
-      $default = (isset($element['@attributes']['selected']) AND $element['@attributes']['selected'] == 'true') ? 1 : 0;
436
-      $description = '';
437
-      if (isset($element['description'])) {
433
+        $name = $element['@attributes']['name'];
434
+        $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
435
+        $default = (isset($element['@attributes']['selected']) AND $element['@attributes']['selected'] == 'true') ? 1 : 0;
436
+        $description = '';
437
+        if (isset($element['description'])) {
438 438
         $description = is_array($element['description']) ? $element['description']['@value'] : $element['description'];
439
-      }
439
+        }
440 440
       
441
-      $value = $default;
442
-      $user_pref = $user_prefs;
443
-      $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
444
-      if ($entitytype == 'attribute') {
441
+        $value = $default;
442
+        $user_pref = $user_prefs;
443
+        $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
444
+        if ($entitytype == 'attribute') {
445 445
         $user_pref = $user_prefs['@attributes'];
446
-      }
447
-      if (isset($user_pref[$name])) {
446
+        }
447
+        if (isset($user_pref[$name])) {
448 448
         if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) {
449
-          $value = $user_pref[$name]['@value'];
449
+            $value = $user_pref[$name]['@value'];
450 450
         }
451 451
         else {
452
-          $value = $user_pref[$name];
452
+            $value = $user_pref[$name];
453
+        }
453 454
         }
454
-      }
455 455
       
456
-      // Translate elements as appropriate
457
-      if ($title) {
456
+        // Translate elements as appropriate
457
+        if ($title) {
458 458
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
459 459
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
460
-      }
461
-      if ($description) {
460
+        }
461
+        if ($description) {
462 462
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description));
463 463
         $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description));
464
-      }
464
+        }
465 465
       
466
-      $form[$name] = array(
466
+        $form[$name] = array(
467 467
         '#title' => $title,
468 468
         '#type' => 'radios',
469 469
         '#options' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes')),
470 470
         '#attributes' => array('class' => 'fancy'),
471 471
         '#default_value' => $value,
472 472
         '#description' => $description
473
-      );
473
+        );
474 474
     }
475 475
     break;
476 476
     
477
-  case 'radio':
477
+    case 'radio':
478 478
   case 'dropdown':
479 479
     
480 480
     if (!is_numeric(key($elements))) {
481
-      $elements = array($elements);
481
+        $elements = array($elements);
482 482
     }
483 483
     foreach ($elements as $element) {
484
-      $name = $element['@attributes']['name'];
485
-      $default = null;
486
-      $options = array();
487
-      foreach($element['items']['item'] as $item) {
484
+        $name = $element['@attributes']['name'];
485
+        $default = null;
486
+        $options = array();
487
+        foreach($element['items']['item'] as $item) {
488 488
         if (is_array($item)) {
489
-          $value = $item['@value'];
490
-          if ($default === NULL AND
489
+            $value = $item['@value'];
490
+            if ($default === NULL AND
491 491
               isset($item['@attributes']) AND
492 492
               isset($item['@attributes']['selected'])) {
493 493
             $default = ($item['@attributes']['selected'] == 'true') ? $item['@value'] : null;
494
-          }
494
+            }
495 495
         }
496 496
         else {
497
-          $value = $item;
497
+            $value = $item;
498 498
         }
499 499
         $options[$value] = $value;
500
-      }
501
-      $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
502
-      $description = '';
503
-      if (isset($element['description'])) {
500
+        }
501
+        $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
502
+        $description = '';
503
+        if (isset($element['description'])) {
504 504
         $description = is_array($element['description']) ? $element['description']['@value'] : $element['description'];
505
-      }
506
-      $user_pref = $user_prefs;
507
-      $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
508
-      if ($entitytype == 'attribute') {
505
+        }
506
+        $user_pref = $user_prefs;
507
+        $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element';
508
+        if ($entitytype == 'attribute') {
509 509
         $user_pref = $user_prefs['@attributes'];
510
-      }
511
-      $value = isset($user_pref[$name]) ? $user_pref[$name] : $default;
510
+        }
511
+        $value = isset($user_pref[$name]) ? $user_pref[$name] : $default;
512 512
       
513
-      // Translate elements as appropriate
514
-      if ($title) {
513
+        // Translate elements as appropriate
514
+        if ($title) {
515 515
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
516 516
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
517
-      }
518
-      if ($description) {
517
+        }
518
+        if ($description) {
519 519
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description));
520 520
         $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description));
521
-      }
521
+        }
522 522
       
523
-      $form[$name] = array(
523
+        $form[$name] = array(
524 524
         '#title' => $title,
525 525
         '#type' => ($type == 'radio') ? 'radios' : 'select',
526 526
         '#options' => $options,
527 527
         '#attributes' => array('class' => 'fancy'),
528 528
         '#default_value' => $value,
529 529
         '#description' => $description . bts(' Default value: @default', array('@default' =>$default), NULL, 'boinc:account-preferences-project')
530
-      );
530
+        );
531 531
     }
532 532
     break;
533 533
     
534
-  case 'apps':
534
+    case 'apps':
535 535
     $title = is_array($elements['title']) ? $elements['title']['@value'] : $elements['title'];
536 536
     
537
-      // Translate elements as appropriate
538
-      if ($title) {
537
+        // Translate elements as appropriate
538
+        if ($title) {
539 539
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
540 540
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
541
-      }
541
+        }
542 542
     
543 543
     $form['applications'] = array(
544
-      '#title' => bts('Applications', array(), NULL, 'boinc:account-preferences'),
545
-      '#type' => 'fieldset',
546
-      '#description' => $title,
547
-      '#collapsible' => TRUE,
548
-      '#collapsed' => FALSE
544
+        '#title' => bts('Applications', array(), NULL, 'boinc:account-preferences'),
545
+        '#type' => 'fieldset',
546
+        '#description' => $title,
547
+        '#collapsible' => TRUE,
548
+        '#collapsed' => FALSE
549 549
     );
550 550
     $applications = array();
551 551
     if (!is_array($user_prefs['app_id'])) {
552
-      $user_prefs['app_id'] = array($user_prefs['app_id']);
552
+        $user_prefs['app_id'] = array($user_prefs['app_id']);
553 553
     }
554 554
     foreach ($user_prefs['app_id'] as $app) {
555
-      if (!$app) continue;
556
-      if (is_array($app) AND isset($app['@value'])) {
555
+        if (!$app) continue;
556
+        if (is_array($app) AND isset($app['@value'])) {
557 557
         $app = $app['@value'];
558
-      }
559
-      $applications[] = $app;
558
+        }
559
+        $applications[] = $app;
560 560
     }
561 561
     foreach ($elements['app'] as $app) {
562
-      $app_id = $app['@attributes']['id'];
563
-      $app_name = $app['@value'];
564
-      $app_enabled = TRUE;
565
-      if (isset($app['@attributes']['enabled']) AND
562
+        $app_id = $app['@attributes']['id'];
563
+        $app_name = $app['@value'];
564
+        $app_enabled = TRUE;
565
+        if (isset($app['@attributes']['enabled']) AND
566 566
           $app['@attributes']['enabled'] == 'false') {
567 567
         $app_enabled = FALSE;
568
-      }
569
-      if ($applications) {
568
+        }
569
+        if ($applications) {
570 570
         $checked = in_array($app_id, $applications);
571
-      } else {
571
+        } else {
572 572
         $checked = TRUE;
573 573
         if (isset($app['@attributes']['selected']) AND
574 574
             $app['@attributes']['selected'] == 'false') {
575
-          $checked = FALSE;
575
+            $checked = FALSE;
576 576
         }
577
-      }
578
-      $form['applications']["app_{$app_id}"] = array(
577
+        }
578
+        $form['applications']["app_{$app_id}"] = array(
579 579
         '#title' => $app_name,
580 580
         '#type' => 'checkbox',
581 581
         '#default_value' => ($checked) ? 'x' : false,
582 582
         '#disabled' => !$app_enabled
583
-      );
583
+        );
584 584
     }
585 585
     
586 586
     break;
587 587
     
588
-  case 'group':
588
+    case 'group':
589 589
     if (!is_numeric(key($elements))) {
590
-      $elements = array($elements);
590
+        $elements = array($elements);
591 591
     }
592 592
     foreach ($elements as $key => $element) {
593
-      $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
594
-      $name = str_replace(' ','_',strtolower($title));
595
-      $name = "group_{$name}";
593
+        $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
594
+        $name = str_replace(' ','_',strtolower($title));
595
+        $name = "group_{$name}";
596 596
       
597
-      // Translate elements as appropriate
598
-      if ($title) {
597
+        // Translate elements as appropriate
598
+        if ($title) {
599 599
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
600 600
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
601
-      }
601
+        }
602 602
       
603
-      $form[$name] = array(
604
-          '#title' => $title,
605
-          '#type' => 'fieldset',
606
-          '#tree' => FALSE,
607
-          //'#description' => t('Notes about this group of fields'),
608
-          '#collapsible' => TRUE,
609
-          '#collapsed' => FALSE
610
-      );
611
-      // Recursively populate the compound element
612
-      foreach ($element as $child_type => $child) {
603
+        $form[$name] = array(
604
+            '#title' => $title,
605
+            '#type' => 'fieldset',
606
+            '#tree' => FALSE,
607
+            //'#description' => t('Notes about this group of fields'),
608
+            '#collapsible' => TRUE,
609
+            '#collapsed' => FALSE
610
+        );
611
+        // Recursively populate the compound element
612
+        foreach ($element as $child_type => $child) {
613 613
         boincwork_generate_prefs_element($form[$name], $child_type, $child, $user_prefs);
614
-      }
614
+        }
615 615
     }
616 616
     break;
617 617
     
618
-  case 'compound':
618
+    case 'compound':
619 619
     if (!is_numeric(key($elements))) {
620
-      $elements = array($elements);
620
+        $elements = array($elements);
621 621
     }
622 622
     foreach ($elements as $element) {
623
-      $name = $element['@attributes']['name'];
624
-      $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
623
+        $name = $element['@attributes']['name'];
624
+        $title = is_array($element['title']) ? $element['title']['@value'] : $element['title'];
625 625
       
626
-      // Translate elements as appropriate
627
-      if ($title) {
626
+        // Translate elements as appropriate
627
+        if ($title) {
628 628
         i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title));
629 629
         $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title));
630
-      }
630
+        }
631 631
       
632
-      $form[$name] = array(
633
-          '#title' => $title,
634
-          '#type' => 'fieldset',
635
-          //'#description' => t('Notes about this group of fields'),
636
-          '#collapsible' => TRUE,
637
-          '#collapsed' => FALSE
638
-      );
639
-      // Recursively populate the compound element
640
-      foreach ($element['attributes'] as $child_type => $child) {
632
+        $form[$name] = array(
633
+            '#title' => $title,
634
+            '#type' => 'fieldset',
635
+            //'#description' => t('Notes about this group of fields'),
636
+            '#collapsible' => TRUE,
637
+            '#collapsed' => FALSE
638
+        );
639
+        // Recursively populate the compound element
640
+        foreach ($element['attributes'] as $child_type => $child) {
641 641
         boincwork_generate_prefs_element($form[$name], $child_type, $child, $user_prefs[$name]['@attributes']);
642
-      }
642
+        }
643 643
     }
644 644
     break;
645 645
     
@@ -655,24 +655,24 @@  discard block
 block discarded – undo
655 655
  */
656 656
 function boincwork_make_prefs_table($prefs, $top_level = TRUE) {
657 657
 
658
-  $prefs_table = array();
659
-  $uncategorized = array();
658
+    $prefs_table = array();
659
+    $uncategorized = array();
660 660
   
661
-  // Parse the project preferences form
662
-  foreach ($prefs as $key => $element) {
661
+    // Parse the project preferences form
662
+    foreach ($prefs as $key => $element) {
663 663
     
664 664
     // Determine which type of element this is and act accordingly
665 665
     $element_type = NULL;
666 666
     if (is_array($element) AND isset($element['#type'])) {
667
-      $element_type = $element['#type'];
667
+        $element_type = $element['#type'];
668 668
     }
669 669
     switch ($element_type) {
670 670
     case 'fieldset':
671 671
       $prefs_table[$key] = array(
672 672
         'name' => $element['#title'],
673 673
         'elements' => boincwork_make_prefs_table($element, FALSE),
674
-      );
675
-      break;
674
+        );
675
+        break;
676 676
     case 'textfield':
677 677
     case 'radios':
678 678
     case 'checkbox':
@@ -682,45 +682,45 @@  discard block
 block discarded – undo
682 682
         switch ($key) {
683 683
         case 'start_hour':
684 684
           $element['#title'] = bts('Compute only between:', array(), NULL, 'boinc:account-preferences-computing');
685
-          break;
685
+            break;
686 686
         case 'net_start_hour':
687 687
           $element['#title'] = bts('Transfer files only between:', array(), NULL, 'boinc:account-preferences-comuting');
688
-          break;
688
+            break;
689 689
         default:
690 690
         }
691
-      }
692
-      $prefs_element = array(
691
+        }
692
+        $prefs_element = array(
693 693
         'name' => (isset($element['#title'])) ? $element['#title'] : '',
694 694
         'description' => (isset($element['#description'])) ? $element['#description'] : '',
695 695
         'default_value' => (isset($element['#default_value'])) ? $element['#default_value'] : NULL,
696
-      );
697
-      if ($top_level) {
696
+        );
697
+        if ($top_level) {
698 698
         $uncategorized[$key] = $prefs_element;
699
-      }
700
-      else {
699
+        }
700
+        else {
701 701
         $prefs_table[$key] = $prefs_element;
702
-      }
703
-      break;
702
+        }
703
+        break;
704 704
     default:
705 705
     }
706
-  }
706
+    }
707 707
   
708
-  if ($prefs_table AND $uncategorized) {
708
+    if ($prefs_table AND $uncategorized) {
709 709
     // Throw any settings that don't fit elsewhere into "other"
710 710
     $prefs_table['other'] = array(
711
-      'name' => bts('Other settings', array(), NULL, 'boinc:account-preferences'),
712
-      'elements' => $uncategorized,
711
+        'name' => bts('Other settings', array(), NULL, 'boinc:account-preferences'),
712
+        'elements' => $uncategorized,
713 713
     );
714
-  }
715
-  elseif ($uncategorized) {
714
+    }
715
+    elseif ($uncategorized) {
716 716
     // If nothing is categorized, output all prefs under a general "settings"
717 717
     $prefs_table['settings'] = array(
718
-      'name' => bts('Settings', array(), NULL, 'boinc:account-preferences'),
719
-      'elements' => $uncategorized,
718
+        'name' => bts('Settings', array(), NULL, 'boinc:account-preferences'),
719
+        'elements' => $uncategorized,
720 720
     );
721
-  }
721
+    }
722 722
   
723
-  return $prefs_table;
723
+    return $prefs_table;
724 724
 }
725 725
  
726 726
 /**
@@ -728,33 +728,33 @@  discard block
 block discarded – undo
728 728
  */
729 729
 function boincwork_load_prefs($type = 'general', $venue = null, $account = null) {
730 730
   
731
-  require_boinc(array('user'));
731
+    require_boinc(array('user'));
732 732
   
733
-  // Load the BOINC user object
734
-  if (!$account) {
733
+    // Load the BOINC user object
734
+    if (!$account) {
735 735
     global $user;
736 736
     $account = $user;
737
-  }
738
-  $account = user_load($account->uid);
739
-  $boincuser = BoincUser::lookup_id($account->boincuser_id);
737
+    }
738
+    $account = user_load($account->uid);
739
+    $boincuser = BoincUser::lookup_id($account->boincuser_id);
740 740
   
741
-  // Load the desired preferences for the user
742
-  $main_prefs = array();
743
-  if ($type == 'project') {
741
+    // Load the desired preferences for the user
742
+    $main_prefs = array();
743
+    if ($type == 'project') {
744 744
     if ($boincuser->project_prefs) {
745
-      $main_prefs = load_configuration($boincuser->project_prefs);
746
-      $main_prefs = (array) $main_prefs['project_preferences'];
745
+        $main_prefs = load_configuration($boincuser->project_prefs);
746
+        $main_prefs = (array) $main_prefs['project_preferences'];
747 747
     }
748
-  }
749
-  else {
748
+    }
749
+    else {
750 750
     if ($boincuser->global_prefs) {
751
-      $main_prefs = load_configuration($boincuser->global_prefs);
752
-      $main_prefs = (array) $main_prefs['global_preferences'];
751
+        $main_prefs = load_configuration($boincuser->global_prefs);
752
+        $main_prefs = (array) $main_prefs['global_preferences'];
753
+    }
753 754
     }
754
-  }
755 755
   
756
-  // Return general preferences or a subset based on venue
757
-  if (!$venue OR $venue == 'generic') {
756
+    // Return general preferences or a subset based on venue
757
+    if (!$venue OR $venue == 'generic') {
758 758
     unset($main_prefs['venue']);
759 759
     // Use the length of the $main_prefs array as a condition as to
760 760
     // whether the preferences have already been set. This is
@@ -762,23 +762,23 @@  discard block
 block discarded – undo
762 762
     if (count($main_prefs) < 3)
763 763
         $main_prefs['@attributes'] = array('cleared' => 1);
764 764
     return $main_prefs;
765
-  }
766
-  else {
765
+    }
766
+    else {
767 767
     if (isset($main_prefs['venue'])) {
768
-      if (!is_numeric(key($main_prefs['venue']))) {
768
+        if (!is_numeric(key($main_prefs['venue']))) {
769 769
         $main_prefs['venue'] = array($main_prefs['venue']);
770
-      }
771
-      foreach ($main_prefs['venue'] as $key => $prefs_venue) {
770
+        }
771
+        foreach ($main_prefs['venue'] as $key => $prefs_venue) {
772 772
         if (isset($prefs_venue['@attributes']['name']) AND $prefs_venue['@attributes']['name'] == $venue) {
773
-          return $main_prefs['venue'][$key];
773
+            return $main_prefs['venue'][$key];
774
+        }
774 775
         }
775
-      }
776 776
     }
777
-  }
777
+    }
778 778
 
779
-  return array(
779
+    return array(
780 780
     '@attributes' => array('name' => $venue, 'cleared' => 1)
781
-  );
781
+    );
782 782
 }
783 783
 
784 784
 /**
@@ -786,104 +786,104 @@  discard block
 block discarded – undo
786 786
  */
787 787
 function boincwork_save_prefs($prefs, $type = 'general', $venue = null, $account = null) {
788 788
   
789
-  require_boinc(array('user'));
789
+    require_boinc(array('user'));
790 790
   
791
-  // Load existing project prefs from the BOINC user object
792
-  if (!$account) {
791
+    // Load existing project prefs from the BOINC user object
792
+    if (!$account) {
793 793
     global $user;
794 794
     $account = $user;
795
-  }
796
-  $account = user_load($account->uid);
797
-  $boincuser = BoincUser::lookup_id($account->boincuser_id);
795
+    }
796
+    $account = user_load($account->uid);
797
+    $boincuser = BoincUser::lookup_id($account->boincuser_id);
798 798
   
799
-  // Load the specified preferences for the user
800
-  $main_prefs = array();
801
-  if ($type == 'project') {
799
+    // Load the specified preferences for the user
800
+    $main_prefs = array();
801
+    if ($type == 'project') {
802 802
     if ($boincuser->project_prefs) {
803
-      $main_prefs = load_configuration($boincuser->project_prefs);
804
-      $main_prefs = (array) $main_prefs['project_preferences'];
803
+        $main_prefs = load_configuration($boincuser->project_prefs);
804
+        $main_prefs = (array) $main_prefs['project_preferences'];
805 805
     }
806
-  }
807
-  else {
806
+    }
807
+    else {
808 808
     if ($boincuser->global_prefs) {
809
-      $main_prefs = load_configuration($boincuser->global_prefs);
810
-      $main_prefs = (array) $main_prefs['global_preferences'];
809
+        $main_prefs = load_configuration($boincuser->global_prefs);
810
+        $main_prefs = (array) $main_prefs['global_preferences'];
811
+    }
811 812
     }
812
-  }
813 813
   
814
-  // Save all preferences or a subset based on venue
815
-  //drupal_set_message('<pre>' . print_r($main_prefs, true) . '</pre>');
816
-  $new_venue = true;
817
-  if (!$venue OR $venue == 'generic') {
814
+    // Save all preferences or a subset based on venue
815
+    //drupal_set_message('<pre>' . print_r($main_prefs, true) . '</pre>');
816
+    $new_venue = true;
817
+    if (!$venue OR $venue == 'generic') {
818 818
     //$main_prefs = $prefs;
819 819
     $main_prefs = $prefs + $main_prefs;
820
-  }
821
-  else {
820
+    }
821
+    else {
822 822
     if (isset($main_prefs['venue'])) {
823
-      if (!is_numeric(key($main_prefs['venue']))) {
823
+        if (!is_numeric(key($main_prefs['venue']))) {
824 824
         $main_prefs['venue'] = array($main_prefs['venue']);
825
-      }
826
-      foreach ($main_prefs['venue'] as $key => $prefs_venue) {
825
+        }
826
+        foreach ($main_prefs['venue'] as $key => $prefs_venue) {
827 827
         if (isset($prefs_venue['@attributes']['name']) AND $prefs_venue['@attributes']['name'] == $venue) {
828
-          if ($prefs) {
828
+            if ($prefs) {
829 829
             $main_prefs['venue'][$key] = $prefs;
830
-          }
831
-          else {
830
+            }
831
+            else {
832 832
             // If prefs is null, clear out this preference set
833 833
             unset($main_prefs['venue'][$key]);
834 834
             if (count($main_prefs['venue']) == 0) {
835
-              // If that was the only preference set configured, unset the
836
-              // venue tag altogether
837
-              unset($main_prefs['venue']);
835
+                // If that was the only preference set configured, unset the
836
+                // venue tag altogether
837
+                unset($main_prefs['venue']);
838 838
             }
839
-          }
840
-          $new_venue = false;
841
-          break;
839
+            }
840
+            $new_venue = false;
841
+            break;
842
+        }
842 843
         }
843
-      }
844 844
     }
845 845
     if ($new_venue) {
846
-      $main_prefs['venue'][] = $prefs;
846
+        $main_prefs['venue'][] = $prefs;
847
+    }
847 848
     }
848
-  }
849 849
 
850
-  // Set modified time
851
-  if ($type == 'project') {
850
+    // Set modified time
851
+    if ($type == 'project') {
852 852
     if (!isset($main_prefs['modified'])) {
853
-      $main_prefs = array_merge(array('modified' => 0), $main_prefs);
853
+        $main_prefs = array_merge(array('modified' => 0), $main_prefs);
854 854
     }
855 855
     $main_prefs['modified'] = time();
856
-  } else {
856
+    } else {
857 857
     if (!isset($main_prefs['mod_time'])) {
858
-      $main_prefs = array_merge(array('mod_time' => 0), $main_prefs);
858
+        $main_prefs = array_merge(array('mod_time' => 0), $main_prefs);
859 859
     }
860 860
     $main_prefs['mod_time'] = time();
861 861
     // unset source information, the Client will fill this in again
862 862
     if (isset($main_prefs['source_project'])) {
863
-      unset($main_prefs['source_project']);
863
+        unset($main_prefs['source_project']);
864 864
     }
865 865
     if (isset($main_prefs['source_scheduler'])) {
866
-      unset($main_prefs['source_scheduler']);
866
+        unset($main_prefs['source_scheduler']);
867
+    }
867 868
     }
868
-  }
869 869
 
870
-  // Convert prefs back to XML and save to database
871
-  $result = null;
872
-  if ($type == 'project') {
870
+    // Convert prefs back to XML and save to database
871
+    $result = null;
872
+    if ($type == 'project') {
873 873
     $main_prefs = array('project_preferences' => $main_prefs);
874 874
     $boincuser->project_prefs = save_configuration($main_prefs);
875 875
     db_set_active('boinc_rw');
876 876
     $result = db_query("UPDATE user SET project_prefs = '{$boincuser->project_prefs}' WHERE id = '{$boincuser->id}'");
877 877
     db_set_active('default');
878
-  }
879
-  else {
878
+    }
879
+    else {
880 880
     $main_prefs = array('global_preferences' => $main_prefs);
881 881
     $boincuser->global_prefs = save_configuration($main_prefs);
882 882
     db_set_active('boinc_rw');
883 883
     $result = db_query("UPDATE user SET global_prefs = '{$boincuser->global_prefs}' WHERE id = '{$boincuser->id}'");
884 884
     db_set_active('default');
885
-  }
886
-  return $result;
885
+    }
886
+    return $result;
887 887
 }
888 888
 
889 889
 
@@ -900,9 +900,9 @@  discard block
 block discarded – undo
900 900
  *username. Called from privacy preference form.
901 901
  */
902 902
 function boincwork_ignore_user_add_user_username($name = NULL) {
903
-  global $user;
903
+    global $user;
904 904
 
905
-  if (isset($name)) {
905
+    if (isset($name)) {
906 906
     // Get the BOINC ID from the name string, and lookup the
907 907
     // corresponding drupal user.
908 908
     $boincname = substr($name, 0, strrpos($name, '_'));
@@ -911,84 +911,84 @@  discard block
 block discarded – undo
911 911
     $iuid = get_drupal_id($boincid);
912 912
 
913 913
     if ($user->uid == $iuid) {
914
-      drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error');
915
-      drupal_goto('account/prefs/privacy');
914
+        drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error');
915
+        drupal_goto('account/prefs/privacy');
916 916
     }
917 917
 
918 918
     if (is_numeric($iuid) && $iuid > 0) {
919
-      if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) {
919
+        if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) {
920 920
         db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid);
921
-      }// endif db_result
921
+        }// endif db_result
922 922
 
923
-      if (module_exists('pm_block_user')) {
923
+        if (module_exists('pm_block_user')) {
924 924
         if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) {
925
-          db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid);
925
+            db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid);
926 926
         }// endif db_result
927
-      }// endif module_exists('pm_block_user')
927
+        }// endif module_exists('pm_block_user')
928 928
 
929 929
     }// endif $iuid
930
-  }
930
+    }
931 931
 }
932 932
 
933 933
 /**
934 934
  * Add another user's UID to the current user's ignore list.
935 935
  */
936 936
 function boincwork_ignore_user_add_user($iuid = NULL) {
937
-  global $user;
937
+    global $user;
938 938
 
939
-  if ($user->uid == $iuid) {
939
+    if ($user->uid == $iuid) {
940 940
     drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error');
941 941
     drupal_goto();
942
-  }
942
+    }
943 943
 
944
-  $otheraccount = user_load($iuid);
944
+    $otheraccount = user_load($iuid);
945 945
 
946
-  if (is_numeric($iuid) && $iuid > 0) {
946
+    if (is_numeric($iuid) && $iuid > 0) {
947 947
     if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) {
948
-      db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid);
948
+        db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid);
949 949
     }// endif db_result
950 950
 
951 951
     if (module_exists('pm_block_user')) {
952
-      if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) {
952
+        if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) {
953 953
         db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid);
954
-      }// endif db_result
954
+        }// endif db_result
955 955
     }// endif module_exists('pm_block_user')
956 956
 
957 957
     drupal_set_message(
958
-      bts('@username has been added to your ignore list. See your !privacy_preferences for more details.',
958
+        bts('@username has been added to your ignore list. See your !privacy_preferences for more details.',
959 959
         array(
960
-          '@username' => $otheraccount->boincuser_name,
961
-          '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'),
960
+            '@username' => $otheraccount->boincuser_name,
961
+            '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'),
962 962
         ),
963 963
         NULL, 'boinc:ignore-user-add'),
964
-      'status');
964
+        'status');
965 965
     drupal_goto();
966
-  }
967
-  else {
966
+    }
967
+    else {
968 968
     drupal_not_found();
969
-  }// endif iuid
969
+    }// endif iuid
970 970
 }
971 971
 
972 972
 /**
973 973
  * Remove user from user's ignore list.
974 974
  */
975 975
 function boincwork_ignore_user_remove_user($iuid = NULL) {
976
-  global $user;
977
-  $otheraccount = user_load($iuid);
976
+    global $user;
977
+    $otheraccount = user_load($iuid);
978 978
 
979
-  db_query('DELETE FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid);
980
-  if (module_exists('pm_block_user')) {
979
+    db_query('DELETE FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid);
980
+    if (module_exists('pm_block_user')) {
981 981
     db_query('DELETE FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid);
982
-  }// endif module_exists
983
-  drupal_set_message(
982
+    }// endif module_exists
983
+    drupal_set_message(
984 984
     bts('@username has been removed from your ignore list. See your !privacy_preferences for more details.',
985
-      array(
985
+        array(
986 986
         '@username' => $otheraccount->boincuser_name,
987 987
         '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'),
988
-      ),
989
-      NULL, 'boinc:ignore-user-add'),
988
+        ),
989
+        NULL, 'boinc:ignore-user-add'),
990 990
     'status');
991
-  drupal_goto('account/prefs/privacy');
991
+    drupal_goto('account/prefs/privacy');
992 992
 }
993 993
 
994 994
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -1002,18 +1002,18 @@  discard block
 block discarded – undo
1002 1002
  */
1003 1003
 function boincwork_load_privacyconsenttypes() {
1004 1004
 
1005
-  db_set_active('boinc_rw');
1006
-  $db_result = db_query("SELECT id,shortname,description FROM consent_type WHERE enabled=1 AND privacypref=1 ORDER by project_specific ASC");
1007
-  db_set_active('drupal');
1005
+    db_set_active('boinc_rw');
1006
+    $db_result = db_query("SELECT id,shortname,description FROM consent_type WHERE enabled=1 AND privacypref=1 ORDER by project_specific ASC");
1007
+    db_set_active('drupal');
1008 1008
 
1009
-  if ($db_result) {
1009
+    if ($db_result) {
1010 1010
     $consent_types = array();
1011 1011
     while ($result = db_fetch_array($db_result)) {
1012
-      $consent_types[] = $result;
1012
+        $consent_types[] = $result;
1013 1013
     }
1014 1014
     return $consent_types;
1015
-  }
1016
-  return array();
1015
+    }
1016
+    return array();
1017 1017
 }
1018 1018
 
1019 1019
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -1025,94 +1025,94 @@  discard block
 block discarded – undo
1025 1025
  */ 
1026 1026
 function boincwork_set_default_venue($venue = '') {
1027 1027
   
1028
-  global $user;
1029
-  $account = user_load($user->uid);
1028
+    global $user;
1029
+    $account = user_load($user->uid);
1030 1030
   
1031
-  if ($venue == 'generic') {
1031
+    if ($venue == 'generic') {
1032 1032
     $venue = '';
1033
-  }
1033
+    }
1034 1034
   
1035
-  db_set_active('boinc_rw');
1036
-  db_query("
1035
+    db_set_active('boinc_rw');
1036
+    db_query("
1037 1037
     UPDATE user
1038 1038
     SET venue = '%s'
1039 1039
     WHERE id = %d",
1040 1040
     $venue, $account->boincuser_id
1041
-  );
1042
-  db_set_active('default');
1041
+    );
1042
+    db_set_active('default');
1043 1043
 }
1044 1044
 
1045 1045
 /**
1046 1046
  * Recursively validate submitted form values against a set of rules
1047 1047
  */ 
1048 1048
 function boincwork_validate_form($validation_rules, $values, $path = array()) {
1049
-  foreach ($validation_rules as $field => $rules) {
1049
+    foreach ($validation_rules as $field => $rules) {
1050 1050
     $parents = $path;
1051 1051
     if (is_array($values[$field])) {
1052
-      // Process nested form elements
1053
-      $parents[] = $field;
1054
-      boincwork_validate_form($rules, $values[$field], $parents);
1052
+        // Process nested form elements
1053
+        $parents[] = $field;
1054
+        boincwork_validate_form($rules, $values[$field], $parents);
1055 1055
     }
1056 1056
     else {
1057
-      if ($parents) {
1057
+        if ($parents) {
1058 1058
         // form_set_error() identifies nested form elements with '][' as a
1059 1059
         // delimiter between each parent and child element
1060 1060
         $parents[] = $field;
1061 1061
         $form_field = implode('][', $parents);
1062
-      }
1063
-      else {
1062
+        }
1063
+        else {
1064 1064
         $form_field = $field;
1065
-      }
1066
-      if (isset($rules['datatype']) AND !boincwork_validate_datatype($values[$field], $rules['datatype'])) {
1065
+        }
1066
+        if (isset($rules['datatype']) AND !boincwork_validate_datatype($values[$field], $rules['datatype'])) {
1067 1067
         form_set_error($form_field, bts('Invalid data type for @field', array('@field' => $field), NULL, 'boinc:account-preferences'));
1068
-      }
1069
-      if (isset($rules['min']) AND $values[$field] < $rules['min']) {
1068
+        }
1069
+        if (isset($rules['min']) AND $values[$field] < $rules['min']) {
1070 1070
         form_set_error($form_field, bts('Minimum value not met for @field', array('@field' => $field), NULL, 'boinc:account-preferences'));
1071
-      }
1072
-      if (isset($rules['max']) AND $values[$field] > $rules['max']) {
1071
+        }
1072
+        if (isset($rules['max']) AND $values[$field] > $rules['max']) {
1073 1073
         form_set_error($form_field, bts('Maximum value exceeded for @field', array('@field' => $field), NULL, 'boinc:account-preferences'));
1074
-      }
1074
+        }
1075
+    }
1075 1076
     }
1076
-  }
1077 1077
 }
1078 1078
 
1079 1079
 /**
1080 1080
  * Check that numeric data conforms to specifications
1081 1081
  */
1082 1082
 function boincwork_validate_datatype($data, $datatype = NULL) {
1083
-  switch ($datatype) {
1084
-  case 'float':
1083
+    switch ($datatype) {
1084
+    case 'float':
1085 1085
     if (!is_numeric($data)) {
1086
-      return FALSE;
1086
+        return FALSE;
1087 1087
     }
1088 1088
     $data += 0.0;
1089 1089
     if (!is_float($data)) {
1090
-      return FALSE;
1090
+        return FALSE;
1091 1091
     }
1092 1092
     break;
1093 1093
     
1094
-  case 'integer':
1094
+    case 'integer':
1095 1095
     if (!is_numeric($data)) {
1096
-      return FALSE;
1096
+        return FALSE;
1097 1097
     }
1098 1098
     $data += 0;
1099 1099
     if (!is_int($data)) {
1100
-      return FALSE;
1100
+        return FALSE;
1101 1101
     }
1102 1102
     break;
1103 1103
   
1104
-  case 'text':
1104
+    case 'text':
1105 1105
   default:
1106 1106
     
1107 1107
   }
1108
-  return TRUE;
1108
+    return TRUE;
1109 1109
 }
1110 1110
 
1111 1111
 /**
1112 1112
  * Format a number to be displayed using a maximum number of digits
1113 1113
  */ 
1114 1114
 function boincwork_format_stats($number, $max_digits = 4) {
1115
-  $suffix = array(
1115
+    $suffix = array(
1116 1116
     0 => '',
1117 1117
     1 => 'k',
1118 1118
     2 => 'M',
@@ -1122,94 +1122,94 @@  discard block
 block discarded – undo
1122 1122
     6 => 'E',
1123 1123
     7 => 'Z',
1124 1124
     8 => 'Y'
1125
-  );
1126
-  if (!is_numeric($number)) $number = 0;
1125
+    );
1126
+    if (!is_numeric($number)) $number = 0;
1127 1127
   
1128
-  $digits = floor(log($number, 10)) + 1;
1129
-  $magnitude = 0;
1130
-  $precision = 0;
1131
-  if ($digits > $max_digits) {
1128
+    $digits = floor(log($number, 10)) + 1;
1129
+    $magnitude = 0;
1130
+    $precision = 0;
1131
+    if ($digits > $max_digits) {
1132 1132
     $magnitude = floor(($digits - ($max_digits - 3)) / 3);
1133 1133
     $precision = $max_digits - ($digits - ($magnitude * 3) + 1);
1134 1134
     $number = round($number / pow(1000, $magnitude), $precision);
1135
-  }
1136
-  $number = number_format($number, $precision) . (($magnitude) ? "{$suffix[$magnitude]}" : '');
1135
+    }
1136
+    $number = number_format($number, $precision) . (($magnitude) ? "{$suffix[$magnitude]}" : '');
1137 1137
   
1138
-  return $number;
1138
+    return $number;
1139 1139
 }
1140 1140
 
1141
-  //------------------------------------------------------------------------------------------------
1142
-  //  load_configuration(): Convert structured text/xml to array
1143
-  //------------------------------------------------------------------------------------------------
1141
+    //------------------------------------------------------------------------------------------------
1142
+    //  load_configuration(): Convert structured text/xml to array
1143
+    //------------------------------------------------------------------------------------------------
1144 1144
   
1145
-  function load_configuration($text)
1146
-  {
1147
-      if (preg_match('/^\<\?xml .*\?\>$/i', $text)) return null;
1148
-      if ($xml = text_to_xml($text)) return xml_to_array($xml);
1149
-      return false;
1150
-  }
1145
+    function load_configuration($text)
1146
+    {
1147
+        if (preg_match('/^\<\?xml .*\?\>$/i', $text)) return null;
1148
+        if ($xml = text_to_xml($text)) return xml_to_array($xml);
1149
+        return false;
1150
+    }
1151 1151
   
1152
-  //------------------------------------------------------------------------------------------------
1153
-  //  save_configuration(): Convert array to structured text/xml
1154
-  //------------------------------------------------------------------------------------------------
1152
+    //------------------------------------------------------------------------------------------------
1153
+    //  save_configuration(): Convert array to structured text/xml
1154
+    //------------------------------------------------------------------------------------------------
1155 1155
   
1156
-  function save_configuration($array)
1157
-  {
1158
-      if ($xml = array_to_xml($array)) return xml_to_text($xml, false, true);
1159
-      return false;
1160
-  }
1156
+    function save_configuration($array)
1157
+    {
1158
+        if ($xml = array_to_xml($array)) return xml_to_text($xml, false, true);
1159
+        return false;
1160
+    }
1161 1161
   
1162
-  //------------------------------------------------------------------------------------------------
1163
-  //  array_to_xml(): Take a multidimensional array and convert it to a structured
1164
-  //  DOM XML object
1165
-  //------------------------------------------------------------------------------------------------
1162
+    //------------------------------------------------------------------------------------------------
1163
+    //  array_to_xml(): Take a multidimensional array and convert it to a structured
1164
+    //  DOM XML object
1165
+    //------------------------------------------------------------------------------------------------
1166 1166
   
1167
-  function array_to_xml($array, $dom = false, $parent_node = false) {
1167
+    function array_to_xml($array, $dom = false, $parent_node = false) {
1168 1168
     $is_root = false;
1169 1169
     if (!$dom) $dom = new DomDocument('1.0');
1170 1170
     if (!$parent_node) {
1171
-      $parent_node = $dom;
1172
-      $is_root = true;
1171
+        $parent_node = $dom;
1172
+        $is_root = true;
1173 1173
     }
1174 1174
     // Created an intermediate array to attempt to sort by @position
1175 1175
     $ordered_array = array();
1176 1176
     $unordered_array = array();
1177 1177
     foreach ($array as $name => $value) {
1178
-      if ($is_root) {
1178
+        if ($is_root) {
1179 1179
         $unordered_array[] = $array;
1180 1180
         break;
1181
-      }
1182
-      if (is_array($value)) {
1181
+        }
1182
+        if (is_array($value)) {
1183 1183
         if (is_numeric(key($value))) {
1184
-          foreach ($value as $item) {
1184
+            foreach ($value as $item) {
1185 1185
             if (is_array($item) AND isset($item['@position'])) {
1186
-              $ordered_array[$item['@position']] = array(
1186
+                $ordered_array[$item['@position']] = array(
1187 1187
                 $name => $item
1188
-              );
1188
+                );
1189 1189
             }
1190 1190
             else {
1191
-              $unordered_array[] = array(
1191
+                $unordered_array[] = array(
1192 1192
                 $name => $item
1193
-              );
1193
+                );
1194
+            }
1194 1195
             }
1195
-          }
1196 1196
         }
1197 1197
         elseif (isset($value['@position'])) {
1198
-          $ordered_array[$value['@position']] = array(
1198
+            $ordered_array[$value['@position']] = array(
1199 1199
             $name => $value
1200
-          );
1200
+            );
1201 1201
         }
1202 1202
         else {
1203
-          $unordered_array[] = array(
1203
+            $unordered_array[] = array(
1204 1204
             $name => $value
1205
-          );
1205
+            );
1206 1206
         }
1207
-      }
1208
-      else {
1207
+        }
1208
+        else {
1209 1209
         $unordered_array[] = array(
1210
-          $name => $value
1210
+            $name => $value
1211 1211
         );
1212
-      }
1212
+        }
1213 1213
     }
1214 1214
     
1215 1215
     // Now append items without explicit positions at the end
@@ -1217,39 +1217,39 @@  discard block
 block discarded – undo
1217 1217
     
1218 1218
     // Convert to XML...
1219 1219
     foreach ($primed_array as $item) {
1220
-      list($name, $value) = each($item);
1221
-      if (strcmp($name, '@attributes') == 0) {
1220
+        list($name, $value) = each($item);
1221
+        if (strcmp($name, '@attributes') == 0) {
1222 1222
         if (!is_array($value)) continue;
1223 1223
         foreach ($value as $attributeName => $attributeValue) {
1224
-          $parent_node->setAttribute($attributeName, $attributeValue);
1224
+            $parent_node->setAttribute($attributeName, $attributeValue);
1225 1225
         }
1226
-      } elseif (strcmp($name, '@value') == 0) {
1226
+        } elseif (strcmp($name, '@value') == 0) {
1227 1227
         if (isset($value)) $parent_node->nodeValue = $value;
1228
-      } elseif (strcmp($name, '@position') == 0) {
1228
+        } elseif (strcmp($name, '@position') == 0) {
1229 1229
         continue;
1230
-      } else {
1230
+        } else {
1231 1231
         if (is_numeric($name)) {
1232
-          $name = $parent_node->tagName;
1232
+            $name = $parent_node->tagName;
1233 1233
         }
1234 1234
         $current_item = $dom->createElement($name);
1235 1235
         if (is_array($value)) {
1236
-          if (is_numeric(key($value))) {
1236
+            if (is_numeric(key($value))) {
1237 1237
             $current_node = $parent_node->appendChild($current_item);
1238 1238
             $current_node = array_to_xml($value, $dom, $current_node);
1239 1239
             $child_count = $current_node->childNodes->length;
1240 1240
             for ($i = 0; $i < $child_count; $i++) {
1241
-              $parent_node->appendChild($current_node->childNodes->item(0));
1241
+                $parent_node->appendChild($current_node->childNodes->item(0));
1242 1242
             }
1243 1243
             $parent_node->removeChild($current_node);
1244
-          } else {
1244
+            } else {
1245 1245
             $current_node = $dom->appendChild($current_item);
1246 1246
             $parent_node->appendChild(array_to_xml($value, $dom, $current_node));
1247
-          }
1247
+            }
1248 1248
         } else {
1249
-          if (isset($value)) $current_item->nodeValue = $value;
1250
-          $parent_node->appendChild($current_item);
1249
+            if (isset($value)) $current_item->nodeValue = $value;
1250
+            $parent_node->appendChild($current_item);
1251
+        }
1251 1252
         }
1252
-      }
1253 1253
     }
1254 1254
     /*
1255 1255
     foreach ($array as $name => $value) {
@@ -1285,114 +1285,114 @@  discard block
 block discarded – undo
1285 1285
       }
1286 1286
     }*/
1287 1287
     return $parent_node;
1288
-  }
1288
+    }
1289 1289
   
1290
-  //------------------------------------------------------------------------------------------------
1291
-  //  xml_to_text(): Convert an XML DOM object to string format
1292
-  //------------------------------------------------------------------------------------------------
1290
+    //------------------------------------------------------------------------------------------------
1291
+    //  xml_to_text(): Convert an XML DOM object to string format
1292
+    //------------------------------------------------------------------------------------------------
1293 1293
   
1294
-  function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false)
1295
-  {
1296
-      $xml->formatOutput = true;
1297
-      $text = $xml->saveXML();
1298
-      if (!$include_xml_declaration) {
1294
+    function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false)
1295
+    {
1296
+        $xml->formatOutput = true;
1297
+        $text = $xml->saveXML();
1298
+        if (!$include_xml_declaration) {
1299 1299
         $text = preg_replace('/<\?xml version=.*\?>\s*/i', '', $text, 1);
1300
-      }
1301
-      if ($add_carriage_returns) {;
1300
+        }
1301
+        if ($add_carriage_returns) {;
1302 1302
         $text = preg_replace('/\n/i', "\r\n", $text);
1303
-      }
1304
-      return trim($text);
1305
-  }
1303
+        }
1304
+        return trim($text);
1305
+    }
1306 1306
   
1307
-  //------------------------------------------------------------------------------------------------
1308
-  //  text_to_xml(): Convert an XML DOM object to string format
1309
-  //------------------------------------------------------------------------------------------------
1307
+    //------------------------------------------------------------------------------------------------
1308
+    //  text_to_xml(): Convert an XML DOM object to string format
1309
+    //------------------------------------------------------------------------------------------------
1310 1310
   
1311
-  function text_to_xml($text) {
1311
+    function text_to_xml($text) {
1312 1312
     $xml = new DomDocument();
1313 1313
     if ( !($xml->loadXML($text)) ) return false;
1314 1314
     return $xml;
1315
-  }
1315
+    }
1316 1316
   
1317 1317
   
1318
-  //------------------------------------------------------------------------------------------------
1319
-  //  xml_to_array(): Convert an XML DOM object to array format
1320
-  //------------------------------------------------------------------------------------------------
1318
+    //------------------------------------------------------------------------------------------------
1319
+    //  xml_to_array(): Convert an XML DOM object to array format
1320
+    //------------------------------------------------------------------------------------------------
1321 1321
   
1322
-  function xml_to_array($xml) {
1323
-      $node = $xml->firstChild; //$xml->first_child();
1324
-      $result = '';
1325
-      $index = 1;
1326
-      $position = 0;
1327
-      while (!is_null($node)) {
1328
-          switch ($node->nodeType) {
1329
-          case XML_TEXT_NODE:
1322
+    function xml_to_array($xml) {
1323
+        $node = $xml->firstChild; //$xml->first_child();
1324
+        $result = '';
1325
+        $index = 1;
1326
+        $position = 0;
1327
+        while (!is_null($node)) {
1328
+            switch ($node->nodeType) {
1329
+            case XML_TEXT_NODE:
1330 1330
               if (trim($node->nodeValue)  != '') $result = $node->nodeValue;
1331
-              break;
1332
-          case XML_ELEMENT_NODE:
1331
+                break;
1332
+            case XML_ELEMENT_NODE:
1333 1333
               $node_name = $node->nodeName;
1334
-              $parent = $node->parentNode;
1335
-              $sibling = $node->nextSibling;
1334
+                $parent = $node->parentNode;
1335
+                $sibling = $node->nextSibling;
1336 1336
               
1337
-              // Determine if this node forms a set with siblings (share a node name)
1338
-              while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->nextSibling;
1339
-              if (!$sibling) {
1340
-                  $sibling = $node->previousSibling;
1341
-                  while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->previousSibling;
1342
-              }
1337
+                // Determine if this node forms a set with siblings (share a node name)
1338
+                while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->nextSibling;
1339
+                if (!$sibling) {
1340
+                    $sibling = $node->previousSibling;
1341
+                    while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->previousSibling;
1342
+                }
1343 1343
               
1344
-              if ($sibling) {
1345
-                  $result[$node_name][$index] = '';
1346
-                  if ($node->childNodes) {
1347
-                      $result[$node_name][$index] = xml_to_array($node) ;
1348
-                  }
1349
-                  if ($node->hasAttributes()) {
1350
-                      $attributes = $node->attributes;
1351
-                      if ($result[$node_name][$index] !== '' AND !is_array($result[$node_name][$index])) {
1352
-                          $result[$node_name][$index] = array('@value' => $result[$node_name][$index]);
1353
-                      }
1354
-                      foreach ($attributes as $key => $attribute) {
1355
-                          $result[$node_name][$index]['@attributes'][$attribute->name] = $attribute->value;
1356
-                      }
1357
-                  }
1358
-                  // Retain the position of the element
1359
-                  if (!is_array($result[$node_name][$index])) {
1344
+                if ($sibling) {
1345
+                    $result[$node_name][$index] = '';
1346
+                    if ($node->childNodes) {
1347
+                        $result[$node_name][$index] = xml_to_array($node) ;
1348
+                    }
1349
+                    if ($node->hasAttributes()) {
1350
+                        $attributes = $node->attributes;
1351
+                        if ($result[$node_name][$index] !== '' AND !is_array($result[$node_name][$index])) {
1352
+                            $result[$node_name][$index] = array('@value' => $result[$node_name][$index]);
1353
+                        }
1354
+                        foreach ($attributes as $key => $attribute) {
1355
+                            $result[$node_name][$index]['@attributes'][$attribute->name] = $attribute->value;
1356
+                        }
1357
+                    }
1358
+                    // Retain the position of the element
1359
+                    if (!is_array($result[$node_name][$index])) {
1360 1360
                     $result[$node_name][$index] = array(
1361
-                      '@value' => $result[$node_name][$index]
1361
+                        '@value' => $result[$node_name][$index]
1362 1362
                     );
1363
-                  }
1364
-                  $result[$node_name][$index]['@position'] = $position;
1365
-                  $position++;
1366
-                  $index++;
1367
-              } else {
1368
-                  $result[$node_name] = '';
1369
-                  if ($node->childNodes) {
1370
-                      $result[$node_name] = xml_to_array($node) ;
1371
-                  }
1372
-                  if ($node->hasAttributes()) {
1373
-                      $attributes = $node->attributes;
1374
-                      if ($result[$node_name] !== '' AND !is_array($result[$node_name])) {
1375
-                          $result[$node_name] = array('@value' => $result[$node_name]);
1376
-                      }
1377
-                      foreach($attributes as $key => $attribute) {
1378
-                          $result[$node_name]['@attributes'][$attribute->name] = $attribute->value;
1379
-                      }
1380
-                  }
1381
-                  // Retain the position of the element
1382
-                  if (!is_array($result[$node_name])) {
1363
+                    }
1364
+                    $result[$node_name][$index]['@position'] = $position;
1365
+                    $position++;
1366
+                    $index++;
1367
+                } else {
1368
+                    $result[$node_name] = '';
1369
+                    if ($node->childNodes) {
1370
+                        $result[$node_name] = xml_to_array($node) ;
1371
+                    }
1372
+                    if ($node->hasAttributes()) {
1373
+                        $attributes = $node->attributes;
1374
+                        if ($result[$node_name] !== '' AND !is_array($result[$node_name])) {
1375
+                            $result[$node_name] = array('@value' => $result[$node_name]);
1376
+                        }
1377
+                        foreach($attributes as $key => $attribute) {
1378
+                            $result[$node_name]['@attributes'][$attribute->name] = $attribute->value;
1379
+                        }
1380
+                    }
1381
+                    // Retain the position of the element
1382
+                    if (!is_array($result[$node_name])) {
1383 1383
                     $result[$node_name] = array(
1384
-                      '@value' => $result[$node_name]
1384
+                        '@value' => $result[$node_name]
1385 1385
                     );
1386
-                  }
1387
-                  $result[$node_name]['@position'] = $position;
1388
-                  $position++;
1389
-              }
1390
-              break;
1391
-          }
1392
-          $node = $node->nextSibling;
1393
-      }
1394
-      return $result;
1395
-  }
1386
+                    }
1387
+                    $result[$node_name]['@position'] = $position;
1388
+                    $position++;
1389
+                }
1390
+                break;
1391
+            }
1392
+            $node = $node->nextSibling;
1393
+        }
1394
+        return $result;
1395
+    }
1396 1396
   
1397 1397
 
1398 1398
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -1400,172 +1400,172 @@  discard block
 block discarded – undo
1400 1400
  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
1401 1401
 
1402 1402
 /**
1403
-  * Determine output for host list views when no hosts are found.
1404
-  */
1403
+ * Determine output for host list views when no hosts are found.
1404
+ */
1405 1405
 function boincwork_views_host_list_empty_text($context = NULL) {
1406 1406
   
1407
-  // Pull the BOINC user ID from the view arguments to get show_hosts 
1408
-  // preference for that user
1409
-  require_boinc('boinc_db');
1410
-  $view = views_get_current_view();
1411
-  $account = user_load($view->args[0]);
1412
-  $boincuser = BoincUser::lookup_id($account->boincuser_id);
1407
+    // Pull the BOINC user ID from the view arguments to get show_hosts 
1408
+    // preference for that user
1409
+    require_boinc('boinc_db');
1410
+    $view = views_get_current_view();
1411
+    $account = user_load($view->args[0]);
1412
+    $boincuser = BoincUser::lookup_id($account->boincuser_id);
1413 1413
   
1414
-  // Determine if hosts are associated at all or just hidden
1415
-  $output = '';
1416
-  if ($boincuser->show_hosts) {
1414
+    // Determine if hosts are associated at all or just hidden
1415
+    $output = '';
1416
+    if ($boincuser->show_hosts) {
1417 1417
     switch($context) {
1418 1418
     case 'active':
1419 1419
       $output .=  '<h2>' . bts('No active computers', array(), NULL, 'boinc:host-list') . '</h2>';
1420
-      $output .=  '<p>' . bts('This user has no computers that have been'
1421
-      . ' active in the last 30 days.', array(), NULL, 'boinc:host-list') . '</p>';
1422
-      break;
1420
+        $output .=  '<p>' . bts('This user has no computers that have been'
1421
+        . ' active in the last 30 days.', array(), NULL, 'boinc:host-list') . '</p>';
1422
+        break;
1423 1423
       
1424 1424
     case 'preferences':
1425 1425
       $output .=  '<h2>' . bts('No computers', array(), NULL, 'boinc:host-list') . '</h2>';
1426
-      $output .=  '<p>' . bts('There are no computers assigned to this'
1427
-      . ' preference set.', array(), NULL, 'boinc:host-list') . '</p>';
1428
-      break;
1426
+        $output .=  '<p>' . bts('There are no computers assigned to this'
1427
+        . ' preference set.', array(), NULL, 'boinc:host-list') . '</p>';
1428
+        break;
1429 1429
     
1430 1430
     default:
1431 1431
       $output .=  '<h2>' . bts('Computers pending', array(), NULL, 'boinc:host-list') . '</h2>';
1432
-      $output .=  '<p>' . bts('This user does not yet have any associated'
1433
-      . ' computers. Computers will be displayed when they have earned their'
1434
-      . ' first credits.', array(), NULL, 'boinc:host-list') . '</p>';
1432
+        $output .=  '<p>' . bts('This user does not yet have any associated'
1433
+        . ' computers. Computers will be displayed when they have earned their'
1434
+        . ' first credits.', array(), NULL, 'boinc:host-list') . '</p>';
1435 1435
     }
1436
-  }
1437
-  else {
1436
+    }
1437
+    else {
1438 1438
     $output .=  '<h2>' . bts('Computers hidden', array(), NULL, 'boinc:host-list') . '</h2>';
1439 1439
     $output .=  '<p>' . bts('This user has chosen not to show information'
1440 1440
     . ' about their computers.', array(), NULL, 'boinc:host-list') . '</p>';
1441
-  }
1442
-  return $output;
1441
+    }
1442
+    return $output;
1443 1443
 }
1444 1444
 
1445 1445
 /**
1446
-  * Determine output for task list views when no tasks are found.
1447
-  */
1446
+ * Determine output for task list views when no tasks are found.
1447
+ */
1448 1448
 function boincwork_views_task_list_empty_text($context = NULL) {
1449 1449
   
1450
-  // 
1451
-  $output = '';
1452
-  switch($context) {
1453
-  default:
1450
+    // 
1451
+    $output = '';
1452
+    switch($context) {
1453
+    default:
1454 1454
     $output .=  '<h2>' . bts('No @type tasks', array('@type' => $context), NULL, 'boinc:task-list')
1455 1455
     . '</h2>';
1456 1456
     $output .=  '<p>' . bts('There are no tasks of this type on record', array(), NULL, 'boinc:task-list')
1457 1457
     . '</p>';
1458
-  }
1459
-  return $output;
1458
+    }
1459
+    return $output;
1460 1460
 }
1461 1461
 
1462 1462
 /**
1463
-  * Output links to perform host actions
1464
-  */
1463
+ * Output links to perform host actions
1464
+ */
1465 1465
 function boincwork_host_action_links($host_id) {
1466
-  $output = '';
1467
-  if (boincwork_host_user_is_owner($host_id)) {
1466
+    $output = '';
1467
+    if (boincwork_host_user_is_owner($host_id)) {
1468 1468
     // Show merge hosts option
1469 1469
     $output = '<ul class="tab-list"><li class="first tab">';
1470 1470
     $output .= l(bts('Merge', array(), NULL, 'boinc:form-merge'), "host/{$host_id}/merge");
1471 1471
     $output .= '</li>';
1472 1472
     // If host has no tasks, allow the host to be deleted
1473 1473
     if (!boincwork_host_get_task_count($host_id)) {
1474
-      $output .= '<li class="tab">';
1475
-      $output .= l(bts('Delete', array(), NULL, 'boinc:form-delete'), "host/{$host_id}/delete",
1474
+        $output .= '<li class="tab">';
1475
+        $output .= l(bts('Delete', array(), NULL, 'boinc:form-delete'), "host/{$host_id}/delete",
1476 1476
         array(
1477
-          'attributes' => array(
1477
+            'attributes' => array(
1478 1478
             'onclick' => 'return confirm(\'' . bts('This will delete host @id'
1479
-              . ' from your account forever. Are you sure this is OK?',
1480
-              array('@id' => $host_id),
1481
-              NULL, 'boinc:account-host-delete') . '\')'
1482
-          )
1479
+                . ' from your account forever. Are you sure this is OK?',
1480
+                array('@id' => $host_id),
1481
+                NULL, 'boinc:account-host-delete') . '\')'
1482
+            )
1483 1483
         )
1484
-      );
1485
-      $output .= '</li>';
1484
+        );
1485
+        $output .= '</li>';
1486 1486
     }
1487 1487
     $output .= '</ul>';
1488
-  }
1489
-  return $output;
1488
+    }
1489
+    return $output;
1490 1490
 }
1491 1491
 
1492 1492
 /**
1493 1493
  * Get details for a given host
1494 1494
  */
1495 1495
 function boincwork_host_get_info($host_id) {
1496
-  db_set_active('boinc_ro');
1497
-  $host = db_fetch_object(db_query(
1496
+    db_set_active('boinc_ro');
1497
+    $host = db_fetch_object(db_query(
1498 1498
     "SELECT * FROM {host} WHERE id = '%d'",
1499 1499
     $host_id
1500
-  ));
1501
-  db_set_active('default');
1502
-  return $host;
1500
+    ));
1501
+    db_set_active('default');
1502
+    return $host;
1503 1503
 }
1504 1504
 
1505 1505
 /**
1506 1506
  * Get the number of tasks associated with a given host
1507 1507
  */
1508 1508
 function boincwork_host_get_task_count($host_id) {
1509
-  db_set_active('boinc_ro');
1510
-  $count = db_result(db_query(
1509
+    db_set_active('boinc_ro');
1510
+    $count = db_result(db_query(
1511 1511
     "SELECT COUNT(*) FROM {result} WHERE hostid = '%d'",
1512 1512
     $host_id
1513
-  ));
1514
-  db_set_active('default');
1515
-  return $count;
1513
+    ));
1514
+    db_set_active('default');
1515
+    return $count;
1516 1516
 }
1517 1517
 
1518 1518
 /**
1519 1519
  * Check whether a user is the owner of a host
1520 1520
  */
1521 1521
 function boincwork_host_user_is_owner($host_id, $uid = NULL) {
1522
-  if (!$uid) {
1522
+    if (!$uid) {
1523 1523
     global $user;
1524 1524
     $uid = $user->uid;
1525
-  }
1526
-  $account = user_load($uid);
1527
-  // Get host owner
1528
-  db_set_active('boinc_ro');
1529
-  $owner = db_result(db_query(
1525
+    }
1526
+    $account = user_load($uid);
1527
+    // Get host owner
1528
+    db_set_active('boinc_ro');
1529
+    $owner = db_result(db_query(
1530 1530
     "SELECT userid FROM {host} WHERE id = '%d'",
1531 1531
     $host_id
1532
-  ));
1533
-  db_set_active('default');
1534
-  return ($account->boincuser_id === $owner);
1532
+    ));
1533
+    db_set_active('default');
1534
+    return ($account->boincuser_id === $owner);
1535 1535
 }
1536 1536
 
1537 1537
 /**
1538
-  * Determine output for host last contact time
1539
-  */
1538
+ * Determine output for host last contact time
1539
+ */
1540 1540
 function boincwork_host_last_contact($timestamp, $host_id = NULL, $context = NULL) {
1541
-  $output = '---';
1542
-  $root_log_dir = variable_get('boinc_host_sched_logs_dir', '');
1543
-  $log = '';
1544
-  if ($timestamp) {
1541
+    $output = '---';
1542
+    $root_log_dir = variable_get('boinc_host_sched_logs_dir', '');
1543
+    $log = '';
1544
+    if ($timestamp) {
1545 1545
     $output = date('j M Y G:i:s T', $timestamp);
1546
-  }
1547
-  if ($root_log_dir AND $host_id) {
1546
+    }
1547
+    if ($root_log_dir AND $host_id) {
1548 1548
     $subdir = substr($host_id, 0, -3) OR $subdir = 0;
1549 1549
     $log = implode('/', array($root_log_dir, $subdir, $host_id));
1550
-  }
1551
-  if ($log AND file_exists($log)) {
1550
+    }
1551
+    if ($log AND file_exists($log)) {
1552 1552
     $output = l($output, "host/{$host_id}/log");
1553
-  }
1554
-  return $output;
1553
+    }
1554
+    return $output;
1555 1555
 }
1556 1556
 
1557 1557
 /**
1558 1558
  * 
1559 1559
  */
1560 1560
 function boincwork_host_venue_selector($host_id) {
1561
-  $output = '';
1562
-  if (function_exists('jump_quickly')) {
1561
+    $output = '';
1562
+    if (function_exists('jump_quickly')) {
1563 1563
     $path = "host/{$host_id}/set-venue";
1564 1564
     $venues = array(
1565
-      "{$path}/generic" => bts('Generic', array(), NULL, 'boinc:account-preferences-location'),
1566
-      "{$path}/home" => bts('Home', array(), NULL, 'boinc:account-preferences-location:-1:ignoreoverwrite'),
1567
-      "{$path}/work" => bts('Work', array(), NULL, 'boinc:account-preferences-location'),
1568
-      "{$path}/school" => bts('School', array(), NULL, 'boinc:account-preferences-location')
1565
+        "{$path}/generic" => bts('Generic', array(), NULL, 'boinc:account-preferences-location'),
1566
+        "{$path}/home" => bts('Home', array(), NULL, 'boinc:account-preferences-location:-1:ignoreoverwrite'),
1567
+        "{$path}/work" => bts('Work', array(), NULL, 'boinc:account-preferences-location'),
1568
+        "{$path}/school" => bts('School', array(), NULL, 'boinc:account-preferences-location')
1569 1569
     );
1570 1570
     variable_set('jump_use_js_venues-Array', 1);
1571 1571
     drupal_add_js(drupal_get_path('module', 'jump') . '/jump.js');
@@ -1573,34 +1573,34 @@  discard block
 block discarded – undo
1573 1573
     // Get current venue
1574 1574
     db_set_active('boinc_ro');
1575 1575
     $venue = db_result(db_query(
1576
-      "SELECT venue FROM {host} WHERE id = '%d'",
1577
-      $host_id
1576
+        "SELECT venue FROM {host} WHERE id = '%d'",
1577
+        $host_id
1578 1578
     ));
1579 1579
     db_set_active('default');
1580 1580
     $output .= jump_quickly($venues, 'venues', 1, "{$path}/{$venue}");
1581
-  }
1582
-  return $output;
1581
+    }
1582
+    return $output;
1583 1583
 }
1584 1584
 
1585 1585
 /**
1586
-  * Determine output for task reported time / deadline
1587
-  */
1586
+ * Determine output for task reported time / deadline
1587
+ */
1588 1588
 function boincwork_task_time_reported($received_time = NULL, $deadline = NULL, $context = NULL) {
1589
-  $output = '---';
1590
-  if ($received_time OR $deadline) {
1589
+    $output = '---';
1590
+    if ($received_time OR $deadline) {
1591 1591
     $timestamp = ($received_time) ? $received_time : $deadline;
1592 1592
     $output = date('j M Y G:i:s T', $timestamp);
1593 1593
     // Add a wrapper to deadline text
1594 1594
     if (!$received_time) {
1595
-      if (time() < $deadline) {
1595
+        if (time() < $deadline) {
1596 1596
         $output = '<span class="on-time">' . $output . '</span>';
1597
-      }
1598
-      else {
1597
+        }
1598
+        else {
1599 1599
         $output = '<span class="past-due">' . $output . '</span>';
1600
-      }
1600
+        }
1601 1601
     }
1602
-  }
1603
-  return $output;
1602
+    }
1603
+    return $output;
1604 1604
 }
1605 1605
 
1606 1606
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -1631,345 +1631,345 @@  discard block
 block discarded – undo
1631 1631
  *   Number of table row to display per page. Defaults to 20.
1632 1632
  */
1633 1633
 function boincwork_tasktable($category = 0, $queryid = 1, $tselect = NULL, $app_id = 0, $tablerows = 20) {
1634
-  // Check type parameter, if not (0,2) then return an error.
1635
-  if ( ($category!=0) AND ($category!=1) AND ($category!=2) ) {
1634
+    // Check type parameter, if not (0,2) then return an error.
1635
+    if ( ($category!=0) AND ($category!=1) AND ($category!=2) ) {
1636 1636
     watchdog('boincwork', 'task table called with invalid category = %category', array('%category' => $category), WATCHDOG_WARNING);
1637 1637
     return '';
1638
-  }
1638
+    }
1639 1639
 
1640
-  require_boinc( array('util', 'result') );
1640
+    require_boinc( array('util', 'result') );
1641 1641
 
1642
-  global $language;
1643
-  $locality=$language->language;
1644
-  $nf = new NumberFormatter($locality, NumberFormatter::DECIMAL);
1645
-  $nf->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 0);
1646
-  $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
1642
+    global $language;
1643
+    $locality=$language->language;
1644
+    $nf = new NumberFormatter($locality, NumberFormatter::DECIMAL);
1645
+    $nf->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 0);
1646
+    $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0);
1647 1647
 
1648
-  $output = '';
1648
+    $output = '';
1649 1649
 
1650
-  $state_hnames = array(
1650
+    $state_hnames = array(
1651 1651
     STATE_ALL => 'All',
1652 1652
     STATE_IN_PROGRESS => 'In progress',
1653 1653
     STATE_PENDING => 'Pending',
1654 1654
     STATE_VALID => 'Valid',
1655 1655
     STATE_INVALID => 'Invalid',
1656 1656
     STATE_ERROR => 'Error',
1657
-  );
1658
-  // Array (hash) to count total number of results/tasks, and their states.
1659
-  $taskstates = array(
1657
+    );
1658
+    // Array (hash) to count total number of results/tasks, and their states.
1659
+    $taskstates = array(
1660 1660
     STATE_ALL => 0,
1661 1661
     STATE_IN_PROGRESS => 0,
1662 1662
     STATE_PENDING => 0,
1663 1663
     STATE_VALID => 0,
1664 1664
     STATE_INVALID => 0,
1665 1665
     STATE_ERROR => 0,
1666
-  );
1667
-  // Array to hold pretty-print result data to be displayed in a table.
1668
-  $resultdata = array();
1669
-  // Arrays for applications. Form below uses $applications as parameter.
1670
-  $application_map = array();
1671
-  $application_select_count = array();
1672
-  $applications = array();
1673
-
1674
-  // BOINC DB queries for results, application names
1675
-  db_set_active('boinc_ro');
1676
-
1677
-  // Query to retreive all results, in order to calculate status for a
1678
-  // host with application names for each result.
1679
-  $sqlall = "SELECT user_friendly_name,"
1680
-      ."r.appid as appid,"
1681
-      ."r.server_state AS server_state,"
1682
-      ."r.outcome AS outcome,"
1683
-      ."r.client_state AS client_state,"
1684
-      ."r.validate_state AS validate_state,"
1685
-      ."r.exit_status AS exit_status "
1686
-      ."FROM {result} AS r "
1687
-      ."INNER JOIN {app} AS a "
1688
-      ."ON r.appid=a.id ";
1689
-
1690
-  // Use userid, hostid, or workunitid
1691
-  if ($category==0) {
1666
+    );
1667
+    // Array to hold pretty-print result data to be displayed in a table.
1668
+    $resultdata = array();
1669
+    // Arrays for applications. Form below uses $applications as parameter.
1670
+    $application_map = array();
1671
+    $application_select_count = array();
1672
+    $applications = array();
1673
+
1674
+    // BOINC DB queries for results, application names
1675
+    db_set_active('boinc_ro');
1676
+
1677
+    // Query to retreive all results, in order to calculate status for a
1678
+    // host with application names for each result.
1679
+    $sqlall = "SELECT user_friendly_name,"
1680
+        ."r.appid as appid,"
1681
+        ."r.server_state AS server_state,"
1682
+        ."r.outcome AS outcome,"
1683
+        ."r.client_state AS client_state,"
1684
+        ."r.validate_state AS validate_state,"
1685
+        ."r.exit_status AS exit_status "
1686
+        ."FROM {result} AS r "
1687
+        ."INNER JOIN {app} AS a "
1688
+        ."ON r.appid=a.id ";
1689
+
1690
+    // Use userid, hostid, or workunitid
1691
+    if ($category==0) {
1692 1692
     $sqlall .= " WHERE r.userid='%s' ";
1693
-  }
1694
-  elseif ($category==1) {
1693
+    }
1694
+    elseif ($category==1) {
1695 1695
     $sqlall .= " WHERE r.workunitid='%s' ";
1696
-  }
1697
-  elseif ($category==2) {
1696
+    }
1697
+    elseif ($category==2) {
1698 1698
     $sqlall .= " WHERE r.hostid='%s' ";
1699
-  }
1700
-  $sqlall .= " ORDER BY user_friendly_name";
1701
-  $dbres_all = db_query($sqlall, $queryid);
1702
-  db_set_active('default');
1699
+    }
1700
+    $sqlall .= " ORDER BY user_friendly_name";
1701
+    $dbres_all = db_query($sqlall, $queryid);
1702
+    db_set_active('default');
1703 1703
 
1704
-  // Loop 1 of DB results
1705
-  if ($dbres_all) {
1704
+    // Loop 1 of DB results
1705
+    if ($dbres_all) {
1706 1706
     while ($result = db_fetch_object($dbres_all)) {
1707
-      $mystate = state_num($result);
1708
-      if ( ($result->appid==$app_id) OR ($app_id==0) OR ($app_id==-1) ) {
1707
+        $mystate = state_num($result);
1708
+        if ( ($result->appid==$app_id) OR ($app_id==0) OR ($app_id==-1) ) {
1709 1709
         $taskstates[STATE_ALL]++;
1710 1710
         switch ($mystate) {
1711 1711
         case STATE_IN_PROGRESS:
1712 1712
           $taskstates[STATE_IN_PROGRESS]++;
1713
-          break;
1713
+            break;
1714 1714
         case STATE_PENDING:
1715 1715
           $taskstates[STATE_PENDING]++;
1716
-          break;
1716
+            break;
1717 1717
         case STATE_VALID:
1718 1718
           $taskstates[STATE_VALID]++;
1719
-          break;
1719
+            break;
1720 1720
         case STATE_INVALID:
1721 1721
           $taskstates[STATE_INVALID]++;
1722
-          break;
1722
+            break;
1723 1723
         case STATE_ERROR:
1724 1724
           $taskstates[STATE_ERROR]++;
1725
-          break;
1725
+            break;
1726 1726
         }
1727
-      }// if app_id
1727
+        }// if app_id
1728 1728
 
1729
-      //map holds a map between app ids and user friendly names for all applications.
1730
-      $application_map[$result->appid] = $result->user_friendly_name;
1731
-      if ( ($mystate == $tselect) OR ($tselect==STATE_ALL) ) {
1729
+        //map holds a map between app ids and user friendly names for all applications.
1730
+        $application_map[$result->appid] = $result->user_friendly_name;
1731
+        if ( ($mystate == $tselect) OR ($tselect==STATE_ALL) ) {
1732 1732
         //count of appids in the results.
1733 1733
         $application_select_count[$result->appid]++;
1734
-      }// if mystate
1734
+        }// if mystate
1735 1735
 
1736 1736
     }// while
1737
-  }
1738
-  else {
1739
-  }
1737
+    }
1738
+    else {
1739
+    }
1740 1740
   
1741
-  // Entry for all applications.
1742
-  $allcount = $application_select_count ? array_sum($application_select_count) : 0;
1743
-  $applications[-1] = bts('Application', array(), NULL, 'boinc:task-table');
1744
-  $applications[0] = bts('All applications', array(), NULL, 'boinc:task-table') . ' (' . $allcount . ')';
1745
-  // Create application filter from application_map and application_select_count.
1746
-  foreach($application_map as $akey => $aname) {
1741
+    // Entry for all applications.
1742
+    $allcount = $application_select_count ? array_sum($application_select_count) : 0;
1743
+    $applications[-1] = bts('Application', array(), NULL, 'boinc:task-table');
1744
+    $applications[0] = bts('All applications', array(), NULL, 'boinc:task-table') . ' (' . $allcount . ')';
1745
+    // Create application filter from application_map and application_select_count.
1746
+    foreach($application_map as $akey => $aname) {
1747 1747
     $acount = 0;
1748 1748
     if ( $application_select_count and array_key_exists($akey, $application_select_count) ) {
1749
-      $acount = $application_select_count[$akey];
1749
+        $acount = $application_select_count[$akey];
1750 1750
     }
1751 1751
     $applications[$akey] = $aname . ' ('. $acount . ')';
1752
-  }
1753
-  // Header array for (sub) results table.
1754
-  $resultheader = array(
1752
+    }
1753
+    // Header array for (sub) results table.
1754
+    $resultheader = array(
1755 1755
     array(
1756
-      'data' => bts('Task ID', array(), NULL, 'boinc:task-table'),
1757
-      'field' => 'id',
1756
+        'data' => bts('Task ID', array(), NULL, 'boinc:task-table'),
1757
+        'field' => 'id',
1758 1758
     ),
1759 1759
     array(
1760
-      'data' => bts('Workunit ID', array(), NULL, 'boinc:task-table'),
1761
-      'field' => 'workunitid',
1760
+        'data' => bts('Workunit ID', array(), NULL, 'boinc:task-table'),
1761
+        'field' => 'workunitid',
1762 1762
     ),
1763 1763
     array(
1764
-      'data' => bts('Computer', array(), NULL, 'boinc:task-table'),
1765
-      'field' => 'hostid',
1764
+        'data' => bts('Computer', array(), NULL, 'boinc:task-table'),
1765
+        'field' => 'hostid',
1766 1766
     ),
1767 1767
     array(
1768
-      'data' => bts('Sent', array(), NULL, 'boinc:task-table'),
1769
-      'field' => 'sent_time',
1768
+        'data' => bts('Sent', array(), NULL, 'boinc:task-table'),
1769
+        'field' => 'sent_time',
1770 1770
     ),
1771 1771
     array(
1772
-      'data' => bts('Time Reported or Deadline', array(), NULL, 'boinc:task-table')
1772
+        'data' => bts('Time Reported or Deadline', array(), NULL, 'boinc:task-table')
1773 1773
     ),
1774 1774
     array(
1775
-      'data' => bts('Status', array(), NULL, 'boinc:task-table')
1775
+        'data' => bts('Status', array(), NULL, 'boinc:task-table')
1776 1776
     ),
1777 1777
     array(
1778
-      'data' => bts('Run time', array(), NULL, 'boinc:task-table'),
1779
-      'field' => 'elapsed_time',
1778
+        'data' => bts('Run time', array(), NULL, 'boinc:task-table'),
1779
+        'field' => 'elapsed_time',
1780 1780
     ),
1781 1781
     array(
1782
-      'data' => bts('CPU time', array(), NULL, 'boinc:task-table'),
1783
-      'field' => 'cpu_time',
1782
+        'data' => bts('CPU time', array(), NULL, 'boinc:task-table'),
1783
+        'field' => 'cpu_time',
1784 1784
     ),
1785 1785
     array(
1786
-      'data' => bts('Granted Credit', array(), NULL, 'boinc:task-table'),
1787
-      'field' => 'granted_credit',
1786
+        'data' => bts('Granted Credit', array(), NULL, 'boinc:task-table'),
1787
+        'field' => 'granted_credit',
1788 1788
     ),
1789 1789
     // Application is a column, but won't be added until after tablesort_sql().
1790
-  );
1791
-
1792
-  // Query to retreive a subset of the total results for the results table.
1793
-  db_set_active('boinc_ro');
1794
-  $sqlsub = "SELECT r.id AS id,"
1795
-      ."r.name AS name,"
1796
-      ."r.workunitid AS workunitid,"
1797
-      ."r.hostid as hostid,"
1798
-      ."r.sent_time AS sent_time,"
1799
-      ."r.received_time AS received_time,"
1800
-      ."r.report_deadline AS report_deadline,"
1801
-      ."r.server_state AS server_state,"
1802
-      ."r.outcome AS outcome,"
1803
-      ."r.client_state AS client_state,"
1804
-      ."r.validate_state AS validate_state,"
1805
-      ."r.exit_status AS exit_status,"
1806
-      ."r.elapsed_time AS elapsed_time,"
1807
-      ."r.cpu_time AS cpu_time,"
1808
-      ."r.granted_credit AS granted_credit,"
1809
-      ."r.appid AS appid,"
1810
-      ."r.app_version_id AS app_version_id,"
1811
-      ."a.user_friendly_name,"
1812
-      ."av.version_num AS version_number,"
1813
-      ."av.plan_class AS plan_class,"
1814
-      ."pl.name AS platform "
1815
-      ."FROM {result} AS r "
1816
-      ."INNER JOIN {app} AS a "
1817
-      ."ON r.appid=a.id "
1818
-      ."LEFT JOIN {app_version} AS av "
1819
-      ."ON r.app_version_id=av.id "
1820
-      ."LEFT JOIN {platform} AS pl "
1821
-      ."ON av.platformid=pl.id ";
1822
-
1823
-  // Build an array for the WHERE clauses. The individual clauses are
1824
-  // placed into an array, and implode() is used to combine them into
1825
-  // a WHERE statement for the sql query. If no such clauses are added
1826
-  // to the array, then no WHERE statement will be included.
1827
-  $sqlwhere = array();
1828
-
1829
-  // Use userid, hostid, or workunitid
1830
-  if ($category==0) {
1790
+    );
1791
+
1792
+    // Query to retreive a subset of the total results for the results table.
1793
+    db_set_active('boinc_ro');
1794
+    $sqlsub = "SELECT r.id AS id,"
1795
+        ."r.name AS name,"
1796
+        ."r.workunitid AS workunitid,"
1797
+        ."r.hostid as hostid,"
1798
+        ."r.sent_time AS sent_time,"
1799
+        ."r.received_time AS received_time,"
1800
+        ."r.report_deadline AS report_deadline,"
1801
+        ."r.server_state AS server_state,"
1802
+        ."r.outcome AS outcome,"
1803
+        ."r.client_state AS client_state,"
1804
+        ."r.validate_state AS validate_state,"
1805
+        ."r.exit_status AS exit_status,"
1806
+        ."r.elapsed_time AS elapsed_time,"
1807
+        ."r.cpu_time AS cpu_time,"
1808
+        ."r.granted_credit AS granted_credit,"
1809
+        ."r.appid AS appid,"
1810
+        ."r.app_version_id AS app_version_id,"
1811
+        ."a.user_friendly_name,"
1812
+        ."av.version_num AS version_number,"
1813
+        ."av.plan_class AS plan_class,"
1814
+        ."pl.name AS platform "
1815
+        ."FROM {result} AS r "
1816
+        ."INNER JOIN {app} AS a "
1817
+        ."ON r.appid=a.id "
1818
+        ."LEFT JOIN {app_version} AS av "
1819
+        ."ON r.app_version_id=av.id "
1820
+        ."LEFT JOIN {platform} AS pl "
1821
+        ."ON av.platformid=pl.id ";
1822
+
1823
+    // Build an array for the WHERE clauses. The individual clauses are
1824
+    // placed into an array, and implode() is used to combine them into
1825
+    // a WHERE statement for the sql query. If no such clauses are added
1826
+    // to the array, then no WHERE statement will be included.
1827
+    $sqlwhere = array();
1828
+
1829
+    // Use userid, hostid, or workunitid
1830
+    if ($category==0) {
1831 1831
     $sqlwhere[] = "r.userid = '%s'";
1832
-  }
1833
-  elseif ($category==1) {
1832
+    }
1833
+    elseif ($category==1) {
1834 1834
     $sqlwhere[] = "r.workunitid = '%s'";
1835
-  }
1836
-  elseif ($category==2) {
1835
+    }
1836
+    elseif ($category==2) {
1837 1837
     $sqlwhere[] = "r.hostid = '%s'";
1838
-  }
1838
+    }
1839 1839
 
1840
-  // Append additional where clauses based on task selection.
1841
-  switch ($tselect) {
1842
-  case STATE_IN_PROGRESS:
1840
+    // Append additional where clauses based on task selection.
1841
+    switch ($tselect) {
1842
+    case STATE_IN_PROGRESS:
1843 1843
     $sqlwhere[] = "r.server_state = 4";
1844 1844
     break;
1845
-  case STATE_PENDING:
1845
+    case STATE_PENDING:
1846 1846
     $sqlwhere[] = "(r.server_state = 5) AND (r.outcome = 1) AND (r.validate_state >= 0) AND (r.validate_state <= 0 OR r.validate_state >= 4) AND (r.validate_state <= 4)";
1847 1847
     break;
1848
-  case STATE_VALID:
1848
+    case STATE_VALID:
1849 1849
     $sqlwhere[] = "(r.server_state = 5) AND (r.outcome = 1) AND (r.validate_state = 1)";
1850 1850
     break;
1851
-  case STATE_INVALID:
1851
+    case STATE_INVALID:
1852 1852
     $sqlwhere[] = "(r.server_state = 5) AND ((r.outcome = 6) OR ((r.outcome = 1) AND ((r.validate_state = 2) OR (r.validate_state = 3) OR (r.validate_state = 5))))";
1853 1853
     break;
1854
-  case STATE_ERROR:
1854
+    case STATE_ERROR:
1855 1855
     $sqlwhere[] = "(r.server_state = 5) AND (r.outcome >= 3) AND (r.outcome <= 4 OR r.outcome >= 7) AND (r.outcome <= 7)";
1856 1856
     break;
1857
-  default:
1857
+    default:
1858 1858
   }
1859 1859
 
1860
-  if (is_numeric($app_id) AND $app_id>0 ) {
1860
+    if (is_numeric($app_id) AND $app_id>0 ) {
1861 1861
     $sqlwhere[] = "r.appid = '%s'";
1862 1862
     if ($sqlwhere)  $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere);
1863 1863
     $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid, $app_id);
1864
-  }
1865
-  else {
1864
+    }
1865
+    else {
1866 1866
     if ($sqlwhere)  $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere);
1867 1867
     $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid);
1868
-  }
1869
-  db_set_active('default');
1868
+    }
1869
+    db_set_active('default');
1870 1870
 
1871
-  // Loop 2 over DB results.
1872
-  if ($dbres_sub) {
1871
+    // Loop 2 over DB results.
1872
+    if ($dbres_sub) {
1873 1873
     while ($result = db_fetch_object($dbres_sub)) {
1874
-      // state_num() function changes $result object, clone $result
1875
-      // object for use in state_num()
1876
-      // check if state matches selection
1877
-      if ( (state_num(clone $result) == $tselect) OR ($tselect==STATE_ALL) ) {
1874
+        // state_num() function changes $result object, clone $result
1875
+        // object for use in state_num()
1876
+        // check if state matches selection
1877
+        if ( (state_num(clone $result) == $tselect) OR ($tselect==STATE_ALL) ) {
1878 1878
         // create pretty result row
1879 1879
         $prettyresult = array(
1880
-          array(
1880
+            array(
1881 1881
             'data' => l($result->name, "task/{$result->id}"),
1882 1882
             'class' => 'task-name',
1883
-          ),
1884
-          l($result->workunitid, "workunit/{$result->workunitid}"),
1885
-          l($result->hostid, "host/{$result->hostid}"),
1886
-          date('j M Y G:i:s T', $result->sent_time),
1887
-          boincwork_task_time_reported($result->received_time, $result->report_deadline),
1888
-          state_string($result),
1889
-          $nf->format($result->elapsed_time),
1890
-          $nf->format($result->cpu_time),
1891
-          $nf->format($result->granted_credit),
1892
-          array(
1883
+            ),
1884
+            l($result->workunitid, "workunit/{$result->workunitid}"),
1885
+            l($result->hostid, "host/{$result->hostid}"),
1886
+            date('j M Y G:i:s T', $result->sent_time),
1887
+            boincwork_task_time_reported($result->received_time, $result->report_deadline),
1888
+            state_string($result),
1889
+            $nf->format($result->elapsed_time),
1890
+            $nf->format($result->cpu_time),
1891
+            $nf->format($result->granted_credit),
1892
+            array(
1893 1893
             'data' => $result->user_friendly_name . " " . pretty_application_version($result->app_version_id,$result->version_number, $result->plan_class, $result->platform),
1894 1894
             'class' => 'task-app',
1895
-          ),
1895
+            ),
1896 1896
         );
1897 1897
         $resultdata[] = array_values($prettyresult);
1898
-      }
1898
+        }
1899 1899
     }// while
1900
-  }
1901
-  else {
1902
-  }
1903
-  // Begin result navigation
1900
+    }
1901
+    else {
1902
+    }
1903
+    // Begin result navigation
1904 1904
 
1905
-  // Set pathprefix based on type
1906
-  if ($category==0) {
1905
+    // Set pathprefix based on type
1906
+    if ($category==0) {
1907 1907
     $pathprefix = 'account/tasks';
1908
-  }
1909
-  elseif ($category==1) {
1908
+    }
1909
+    elseif ($category==1) {
1910 1910
     $pathprefix = 'workunit/' . $queryid . '/tasks';
1911
-  }
1912
-  elseif ($category==2) {
1911
+    }
1912
+    elseif ($category==2) {
1913 1913
     $pathprefix = 'host/' . $queryid . '/tasks';
1914
-  }
1915
-  // Need an "All" tab as well, maps to app_id of zero.
1916
-  $application_map[0] = bts('All', array(), NULL, 'boinc:task-table');
1917
-  $stitems = array();
1918
-  foreach ($taskstates as $state => $numstates) {
1914
+    }
1915
+    // Need an "All" tab as well, maps to app_id of zero.
1916
+    $application_map[0] = bts('All', array(), NULL, 'boinc:task-table');
1917
+    $stitems = array();
1918
+    foreach ($taskstates as $state => $numstates) {
1919 1919
     $mypath = $pathprefix . '/' . $state . '/' . $app_id;
1920 1920
     if ($state==STATE_ALL) {
1921
-      $ltext = '<span class="tab task-app-name">' . bts('All', array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>';
1921
+        $ltext = '<span class="tab task-app-name">' . bts('All', array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>';
1922 1922
     }
1923 1923
     else {
1924
-      $ltext = '<span class="tab">' . bts($state_hnames[$state], array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>';
1924
+        $ltext = '<span class="tab">' . bts($state_hnames[$state], array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>';
1925 1925
     }
1926 1926
     $myitem = array(
1927
-      'data' => l($ltext, $mypath, array('html' => TRUE) ),
1927
+        'data' => l($ltext, $mypath, array('html' => TRUE) ),
1928 1928
     );
1929 1929
     if ($state==$tselect) {
1930
-      $myitem['class'] = 'active';
1930
+        $myitem['class'] = 'active';
1931 1931
     }
1932 1932
     $stitems[] = $myitem;
1933
-  }
1934
-  // Add reset button
1935
-  $mypath = $pathprefix . '/0/0';
1936
-  $ltext = '<span class="tab">' . bts('Reset', array(), NULL, 'boinc:task-table') . '</span>';
1937
-  $stitems[] = array( 'data' => l($ltext, $mypath, array('html' => TRUE) ) );
1933
+    }
1934
+    // Add reset button
1935
+    $mypath = $pathprefix . '/0/0';
1936
+    $ltext = '<span class="tab">' . bts('Reset', array(), NULL, 'boinc:task-table') . '</span>';
1937
+    $stitems[] = array( 'data' => l($ltext, $mypath, array('html' => TRUE) ) );
1938 1938
 
1939
-  $output .= theme_item_list($stitems, NULL, 'ul' . ' class="tabs secondary clearfix"');
1939
+    $output .= theme_item_list($stitems, NULL, 'ul' . ' class="tabs secondary clearfix"');
1940 1940
 
1941
-  // Application select-drop down form
1942
-  // Hack to place Application form into header
1943
-  // App ID of zero maps to "-1" for drop-down box.
1944
-  if ($app_id==0) {
1941
+    // Application select-drop down form
1942
+    // Hack to place Application form into header
1943
+    // App ID of zero maps to "-1" for drop-down box.
1944
+    if ($app_id==0) {
1945 1945
     $app_id=-1;
1946
-  }
1947
-  $resultheader[] = drupal_get_form('boincwork_selectapp_form', $applications, $app_id);
1946
+    }
1947
+    $resultheader[] = drupal_get_form('boincwork_selectapp_form', $applications, $app_id);
1948 1948
 
1949
-  // Begin table of results
1950
-  if ( is_array($resultheader) AND is_array($resultdata) ) {
1949
+    // Begin table of results
1950
+    if ( is_array($resultheader) AND is_array($resultdata) ) {
1951 1951
 
1952 1952
     // Take advantage of the fact that $category is the same as the row/column we want to remove.
1953 1953
     if ( ($category==1) OR ($category==2) ) {
1954
-      unset($resultheader[$category]);
1955
-      delete_col($resultdata, $category);
1954
+        unset($resultheader[$category]);
1955
+        delete_col($resultdata, $category);
1956 1956
     }
1957 1957
 
1958 1958
     $output .= theme_table($resultheader, $resultdata);
1959 1959
     if (count($resultdata) > 0) {
1960
-      $output .= theme('pager');
1960
+        $output .= theme('pager');
1961 1961
     }
1962
-  }
1963
-  return $output;
1962
+    }
1963
+    return $output;
1964 1964
 }
1965 1965
 
1966 1966
 /**
1967 1967
  * Function to delete a column from an array.
1968 1968
  */
1969 1969
 function delete_col(&$array, $offset) {
1970
-  return array_walk($array, function (&$v) use ($offset) {
1971
-     array_splice($v, $offset, 1);
1972
-  });
1970
+    return array_walk($array, function (&$v) use ($offset) {
1971
+        array_splice($v, $offset, 1);
1972
+    });
1973 1973
 }
1974 1974
 
1975 1975
 /**
@@ -1989,7 +1989,7 @@  discard block
 block discarded – undo
1989 1989
  *  platform name, may be NULL
1990 1990
  */
1991 1991
 function pretty_application_version($appverid, $vernum, $plan_class, $plfm) {
1992
-  switch ($appverid) {
1992
+    switch ($appverid) {
1993 1993
     case ANON_PLATFORM_UNKNOWN:
1994 1994
       return "Anonymous platform";
1995 1995
     case ANON_PLATFORM_CPU:
@@ -2008,11 +2008,11 @@  discard block
 block discarded – undo
2008 2008
       // that is not handled by the above case statements.
2009 2009
       if ($appverid < 0) {
2010 2010
         return "Unknown Anonymous platform";
2011
-      }
2012
-      else {
2011
+        }
2012
+        else {
2013 2013
         $prettyv = sprintf("%d.%02d", $vernum/100, $vernum%100);
2014 2014
         $prettyc = ($plan_class) ? "($av->plan_class)" : '';
2015 2015
         return "v$prettyv $prettyc $plfm";
2016
-      }
2017
-  }
2016
+        }
2017
+    }
2018 2018
 }
Please login to merge, or discard this patch.
drupal/sites/all/features/boinc_standard/boinc_standard.features.inc 1 patch
Indentation   +1047 added lines, -1047 removed lines patch added patch discarded remove patch
@@ -4,38 +4,38 @@  discard block
 block discarded – undo
4 4
  * Implementation of hook_ctools_plugin_api().
5 5
  */
6 6
 function boinc_standard_ctools_plugin_api() {
7
-  list($module, $api) = func_get_args();
8
-  if ($module == "input_formats" && $api == "input_formats") {
7
+    list($module, $api) = func_get_args();
8
+    if ($module == "input_formats" && $api == "input_formats") {
9 9
     return array("version" => 1);
10
-  }
11
-  elseif ($module == "page_manager" && $api == "pages_default") {
10
+    }
11
+    elseif ($module == "page_manager" && $api == "pages_default") {
12 12
     return array("version" => 1);
13
-  }
14
-  elseif ($module == "panels_mini" && $api == "panels_default") {
13
+    }
14
+    elseif ($module == "panels_mini" && $api == "panels_default") {
15 15
     return array("version" => 1);
16
-  }
17
-  elseif ($module == "strongarm" && $api == "strongarm") {
16
+    }
17
+    elseif ($module == "strongarm" && $api == "strongarm") {
18 18
     return array("version" => 1);
19
-  }
20
-  elseif ($module == "wysiwyg" && $api == "wysiwyg") {
19
+    }
20
+    elseif ($module == "wysiwyg" && $api == "wysiwyg") {
21 21
     return array("version" => 2);
22
-  }
22
+    }
23 23
 }
24 24
 
25 25
 /**
26 26
  * Implementation of hook_flag_default_flags().
27 27
  */
28 28
 function boinc_standard_flag_default_flags() {
29
-  $flags = array();
30
-  // Exported flag: "Comment Abuse".
31
-  $flags['abuse_comment'] = array(
29
+    $flags = array();
30
+    // Exported flag: "Comment Abuse".
31
+    $flags['abuse_comment'] = array(
32 32
     'content_type' => 'comment',
33 33
     'title' => 'Comment Abuse',
34 34
     'global' => FALSE,
35 35
     'types' => array(
36
-      '0' => 'forum',
37
-      '1' => 'news',
38
-      '2' => 'team_forum',
36
+        '0' => 'forum',
37
+        '1' => 'news',
38
+        '2' => 'team_forum',
39 39
     ),
40 40
     'flag_short' => 'Report',
41 41
     'flag_long' => 'Report this content as offensive.',
@@ -46,31 +46,31 @@  discard block
 block discarded – undo
46 46
     'unflag_denied_text' => '',
47 47
     'link_type' => 'toggle',
48 48
     'roles' => array(
49
-      'flag' => array(
49
+        'flag' => array(
50 50
         '0' => 2,
51
-      ),
52
-      'unflag' => array(
51
+        ),
52
+        'unflag' => array(
53 53
         '0' => 2,
54
-      ),
54
+        ),
55 55
     ),
56 56
     'weight' => 0,
57 57
     'access_author' => '',
58 58
     'show_on_comment' => 1,
59 59
     'module' => 'boinc_standard',
60 60
     'locked' => array(
61
-      '0' => 'name',
61
+        '0' => 'name',
62 62
     ),
63 63
     'api_version' => 2,
64
-  );
65
-  // Exported flag: "Node Abuse".
66
-  $flags['abuse_node'] = array(
64
+    );
65
+    // Exported flag: "Node Abuse".
66
+    $flags['abuse_node'] = array(
67 67
     'content_type' => 'node',
68 68
     'title' => 'Node Abuse',
69 69
     'global' => FALSE,
70 70
     'types' => array(
71
-      '0' => 'forum',
72
-      '1' => 'profile',
73
-      '2' => 'team_forum',
71
+        '0' => 'forum',
72
+        '1' => 'profile',
73
+        '2' => 'team_forum',
74 74
     ),
75 75
     'flag_short' => 'Report',
76 76
     'flag_long' => 'Report this content as offensive.',
@@ -81,12 +81,12 @@  discard block
 block discarded – undo
81 81
     'unflag_denied_text' => '',
82 82
     'link_type' => 'toggle',
83 83
     'roles' => array(
84
-      'flag' => array(
84
+        'flag' => array(
85 85
         '0' => 2,
86
-      ),
87
-      'unflag' => array(
86
+        ),
87
+        'unflag' => array(
88 88
         '0' => 2,
89
-      ),
89
+        ),
90 90
     ),
91 91
     'weight' => 0,
92 92
     'show_on_page' => 1,
@@ -96,12 +96,12 @@  discard block
 block discarded – undo
96 96
     'i18n' => '0',
97 97
     'module' => 'boinc_standard',
98 98
     'locked' => array(
99
-      '0' => 'name',
99
+        '0' => 'name',
100 100
     ),
101 101
     'api_version' => 2,
102
-  );
103
-  // Exported flag: "User Abuse".
104
-  $flags['abuse_user'] = array(
102
+    );
103
+    // Exported flag: "User Abuse".
104
+    $flags['abuse_user'] = array(
105 105
     'content_type' => 'user',
106 106
     'title' => 'User Abuse',
107 107
     'global' => '0',
@@ -115,12 +115,12 @@  discard block
 block discarded – undo
115 115
     'unflag_denied_text' => '',
116 116
     'link_type' => 'confirm',
117 117
     'roles' => array(
118
-      'flag' => array(
118
+        'flag' => array(
119 119
         '0' => '2',
120
-      ),
121
-      'unflag' => array(
120
+        ),
121
+        'unflag' => array(
122 122
         '0' => '2',
123
-      ),
123
+        ),
124 124
     ),
125 125
     'weight' => 0,
126 126
     'show_on_profile' => TRUE,
@@ -129,19 +129,19 @@  discard block
 block discarded – undo
129 129
     'unflag_confirmation' => 'Are you sure you want to remove your report of this user?',
130 130
     'module' => 'boinc_standard',
131 131
     'locked' => array(
132
-      '0' => 'name',
132
+        '0' => 'name',
133 133
     ),
134 134
     'api_version' => 2,
135
-  );
136
-  // Exported flag: "Subscriptions".
137
-  $flags['subscriptions'] = array(
135
+    );
136
+    // Exported flag: "Subscriptions".
137
+    $flags['subscriptions'] = array(
138 138
     'content_type' => 'node',
139 139
     'title' => 'Subscriptions',
140 140
     'global' => '0',
141 141
     'types' => array(
142
-      '0' => 'forum',
143
-      '1' => 'news',
144
-      '2' => 'team_forum',
142
+        '0' => 'forum',
143
+        '1' => 'news',
144
+        '2' => 'team_forum',
145 145
     ),
146 146
     'flag_short' => 'subscribe',
147 147
     'flag_long' => 'Subscribe to this topic',
@@ -152,12 +152,12 @@  discard block
 block discarded – undo
152 152
     'unflag_denied_text' => '',
153 153
     'link_type' => 'toggle',
154 154
     'roles' => array(
155
-      'flag' => array(
155
+        'flag' => array(
156 156
         '0' => 2,
157
-      ),
158
-      'unflag' => array(
157
+        ),
158
+        'unflag' => array(
159 159
         '0' => 2,
160
-      ),
160
+        ),
161 161
     ),
162 162
     'weight' => 0,
163 163
     'show_on_page' => 1,
@@ -167,11 +167,11 @@  discard block
 block discarded – undo
167 167
     'i18n' => '0',
168 168
     'module' => 'boinc_standard',
169 169
     'locked' => array(
170
-      '0' => 'name',
170
+        '0' => 'name',
171 171
     ),
172 172
     'api_version' => 2,
173
-  );
174
-  return $flags;
173
+    );
174
+    return $flags;
175 175
 
176 176
 }
177 177
 
@@ -179,2146 +179,2146 @@  discard block
 block discarded – undo
179 179
  * Implementation of hook_node_info().
180 180
  */
181 181
 function boinc_standard_node_info() {
182
-  $items = array(
182
+    $items = array(
183 183
     'page' => array(
184
-      'name' => t('Page'),
185
-      'module' => 'features',
186
-      'description' => t('A <em>page</em>, similar in form to a <em>story</em>, is a simple method for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a <em>page</em> entry does not allow visitor comments and is not featured on the site\'s initial home page.'),
187
-      'has_title' => '1',
188
-      'title_label' => t('Title'),
189
-      'has_body' => '1',
190
-      'body_label' => t('Body'),
191
-      'min_word_count' => '0',
192
-      'help' => '',
184
+        'name' => t('Page'),
185
+        'module' => 'features',
186
+        'description' => t('A <em>page</em>, similar in form to a <em>story</em>, is a simple method for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a <em>page</em> entry does not allow visitor comments and is not featured on the site\'s initial home page.'),
187
+        'has_title' => '1',
188
+        'title_label' => t('Title'),
189
+        'has_body' => '1',
190
+        'body_label' => t('Body'),
191
+        'min_word_count' => '0',
192
+        'help' => '',
193 193
     ),
194
-  );
195
-  return $items;
194
+    );
195
+    return $items;
196 196
 }
197 197
 
198 198
 /**
199 199
  * Implementation of hook_rules_defaults().
200 200
  */
201 201
 function boinc_standard_rules_defaults() {
202
-  return array(
202
+    return array(
203 203
     'rules' => array(
204
-      'rules_comment_converted_to_new_forum_topic_by_moderator_or_admin' => array(
204
+        'rules_comment_converted_to_new_forum_topic_by_moderator_or_admin' => array(
205 205
         '#type' => 'rule',
206 206
         '#set' => 'event_boinccore_comment_convert',
207 207
         '#label' => 'Comment is converted to new forum topic by moderator or admin',
208 208
         '#active' => 1,
209 209
         '#weight' => '0',
210 210
         '#categories' => array(
211
-          '0' => 'boinc_standard',
212
-          '1' => 'moderator notification',
211
+            '0' => 'boinc_standard',
212
+            '1' => 'moderator notification',
213 213
         ),
214 214
         '#status' => 'default',
215 215
         '#conditions' => array(),
216 216
         '#actions' => array(
217
-          '0' => array(
217
+            '0' => array(
218 218
             '#info' => array(
219
-              'label' => 'Notify moderators via email',
220
-              'module' => 'BOINC core',
221
-              'eval input' => array(
219
+                'label' => 'Notify moderators via email',
220
+                'module' => 'BOINC core',
221
+                'eval input' => array(
222 222
                 '0' => 'subject',
223 223
                 '1' => 'message',
224 224
                 '2' => 'from',
225
-              ),
225
+                ),
226 226
             ),
227 227
             '#name' => 'boinccore_rules_action_mail_to_moderators',
228 228
             '#settings' => array(
229
-              'from' => '',
230
-              'subject' => 'Comment at [:global:site-name] converted to new forum topic',
231
-              'message' => "Comment has been converted to new forum topic by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
232
-              '#eval input' => array(
229
+                'from' => '',
230
+                'subject' => 'Comment at [:global:site-name] converted to new forum topic',
231
+                'message' => "Comment has been converted to new forum topic by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
232
+                '#eval input' => array(
233 233
                 'token_rules_input_evaluator' => array(
234
-                  'subject' => array(
234
+                    'subject' => array(
235 235
                     '0' => ':global',
236
-                  ),
237
-                  'message' => array(
236
+                    ),
237
+                    'message' => array(
238 238
                     '0' => 'user',
239 239
                     '1' => ':global',
240
-                  ),
241
-                  'from' => array(
240
+                    ),
241
+                    'from' => array(
242 242
                     '0' => ':global',
243
-                  ),
243
+                    ),
244 244
                 ),
245 245
                 'rules_input_evaluator_php' => array(
246
-                  'message' => array(
246
+                    'message' => array(
247 247
                     '0' => 'node',
248
-                  ),
248
+                    ),
249
+                ),
249 250
                 ),
250
-              ),
251 251
             ),
252 252
             '#type' => 'action',
253 253
             '#weight' => 0.0,
254
-          ),
254
+            ),
255 255
         ),
256 256
         '#version' => 6003,
257
-      ),
258
-      'rules_comment_deleted_by_admin' => array(
257
+        ),
258
+        'rules_comment_deleted_by_admin' => array(
259 259
         '#type' => 'rule',
260 260
         '#set' => 'event_comment_delete',
261 261
         '#label' => 'Comment deleted by admin',
262 262
         '#active' => 1,
263 263
         '#weight' => '0',
264 264
         '#categories' => array(
265
-          '0' => 'moderator notification',
266
-          '1' => 'boinc_standard',
265
+            '0' => 'moderator notification',
266
+            '1' => 'boinc_standard',
267 267
         ),
268 268
         '#status' => 'default',
269 269
         '#conditions' => array(),
270 270
         '#actions' => array(
271
-          '0' => array(
271
+            '0' => array(
272 272
             '#type' => 'action',
273 273
             '#settings' => array(
274
-              'from' => '',
275
-              'subject' => 'Comment deleted at [:global:site-name] by admin',
276
-              'message' => "Comment to [node:type] topic '[node:title]' deleted by admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
277
-              '#eval input' => array(
274
+                'from' => '',
275
+                'subject' => 'Comment deleted at [:global:site-name] by admin',
276
+                'message' => "Comment to [node:type] topic '[node:title]' deleted by admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
277
+                '#eval input' => array(
278 278
                 'token_rules_input_evaluator' => array(
279
-                  'subject' => array(
279
+                    'subject' => array(
280 280
                     '0' => ':global',
281
-                  ),
282
-                  'message' => array(
281
+                    ),
282
+                    'message' => array(
283 283
                     '0' => 'node',
284 284
                     '1' => 'user',
285 285
                     '2' => ':global',
286
-                  ),
287
-                  'from' => array(
286
+                    ),
287
+                    'from' => array(
288 288
                     '0' => ':global',
289
-                  ),
289
+                    ),
290 290
                 ),
291 291
                 'rules_input_evaluator_php' => array(
292
-                  'message' => array(
292
+                    'message' => array(
293 293
                     '0' => 'node',
294
-                  ),
294
+                    ),
295
+                ),
295 296
                 ),
296
-              ),
297 297
             ),
298 298
             '#name' => 'boinccore_rules_action_mail_to_moderators',
299 299
             '#info' => array(
300
-              'label' => 'Notify moderators via email',
301
-              'module' => 'BOINC core',
302
-              'eval input' => array(
300
+                'label' => 'Notify moderators via email',
301
+                'module' => 'BOINC core',
302
+                'eval input' => array(
303 303
                 '0' => 'subject',
304 304
                 '1' => 'message',
305 305
                 '2' => 'from',
306
-              ),
306
+                ),
307 307
             ),
308 308
             '#weight' => 0.0,
309
-          ),
309
+            ),
310 310
         ),
311 311
         '#version' => 6003,
312
-      ),
313
-      'rules_comment_edited_by_moderator_or_admin' => array(
312
+        ),
313
+        'rules_comment_edited_by_moderator_or_admin' => array(
314 314
         '#type' => 'rule',
315 315
         '#set' => 'event_comment_update',
316 316
         '#label' => 'Comment is edited by moderator or admin',
317 317
         '#active' => 1,
318 318
         '#weight' => '0',
319 319
         '#categories' => array(
320
-          '0' => 'boinc_standard',
321
-          '1' => 'moderator notification',
320
+            '0' => 'boinc_standard',
321
+            '1' => 'moderator notification',
322 322
         ),
323 323
         '#status' => 'default',
324 324
         '#conditions' => array(
325
-          '0' => array(
325
+            '0' => array(
326 326
             '#negate' => 1,
327 327
             '#weight' => 0.0,
328 328
             '#info' => array(
329
-              'label' => 'Compare two users: acting user (who edited the comment) is NOT the comment author',
330
-              'label callback' => FALSE,
331
-              'arguments' => array(
329
+                'label' => 'Compare two users: acting user (who edited the comment) is NOT the comment author',
330
+                'label callback' => FALSE,
331
+                'arguments' => array(
332 332
                 'user1' => array(
333
-                  'type' => 'user',
334
-                  'label' => 'User account 1',
333
+                    'type' => 'user',
334
+                    'label' => 'User account 1',
335 335
                 ),
336 336
                 'user2' => array(
337
-                  'type' => 'user',
338
-                  'label' => 'User account 2',
337
+                    'type' => 'user',
338
+                    'label' => 'User account 2',
339
+                ),
339 340
                 ),
340
-              ),
341
-              'module' => 'User',
341
+                'module' => 'User',
342 342
             ),
343 343
             '#name' => 'rules_condition_user_comparison',
344 344
             '#settings' => array(
345
-              '#argument map' => array(
345
+                '#argument map' => array(
346 346
                 'user1' => 'user',
347 347
                 'user2' => 'comment_author',
348
-              ),
348
+                ),
349 349
             ),
350 350
             '#type' => 'condition',
351
-          ),
351
+            ),
352 352
         ),
353 353
         '#actions' => array(
354
-          '0' => array(
354
+            '0' => array(
355 355
             '#type' => 'action',
356 356
             '#settings' => array(
357
-              'from' => '',
358
-              'subject' => 'Comment edited at [:global:site-name] by moderator or admin',
359
-              'message' => "Comment has been edited by moderator/admin [user:display-name]\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
360
-              '#eval input' => array(
357
+                'from' => '',
358
+                'subject' => 'Comment edited at [:global:site-name] by moderator or admin',
359
+                'message' => "Comment has been edited by moderator/admin [user:display-name]\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
360
+                '#eval input' => array(
361 361
                 'token_rules_input_evaluator' => array(
362
-                  'subject' => array(
362
+                    'subject' => array(
363 363
                     '0' => ':global',
364
-                  ),
365
-                  'message' => array(
364
+                    ),
365
+                    'message' => array(
366 366
                     '0' => 'comment',
367 367
                     '1' => 'user',
368 368
                     '2' => ':global',
369
-                  ),
370
-                  'from' => array(
369
+                    ),
370
+                    'from' => array(
371 371
                     '0' => ':global',
372
-                  ),
372
+                    ),
373 373
                 ),
374 374
                 'rules_input_evaluator_php' => array(
375
-                  'message' => array(),
375
+                    'message' => array(),
376
+                ),
376 377
                 ),
377
-              ),
378 378
             ),
379 379
             '#name' => 'boinccore_rules_action_mail_to_moderators',
380 380
             '#info' => array(
381
-              'label' => 'Notify moderators via email',
382
-              'module' => 'BOINC core',
383
-              'eval input' => array(
381
+                'label' => 'Notify moderators via email',
382
+                'module' => 'BOINC core',
383
+                'eval input' => array(
384 384
                 '0' => 'subject',
385 385
                 '1' => 'message',
386 386
                 '2' => 'from',
387
-              ),
387
+                ),
388 388
             ),
389 389
             '#weight' => 0.0,
390
-          ),
390
+            ),
391 391
         ),
392 392
         '#version' => 6003,
393
-      ),
394
-      'rules_comment_is_published_unhidden_by_moderator_or_admin' => array(
393
+        ),
394
+        'rules_comment_is_published_unhidden_by_moderator_or_admin' => array(
395 395
         '#type' => 'rule',
396 396
         '#set' => 'event_boinccore_comment_unhidden',
397 397
         '#label' => 'Comment is unhidden by moderator or admin',
398 398
         '#active' => 1,
399 399
         '#weight' => '0',
400 400
         '#categories' => array(
401
-          '0' => 'boinc_standard',
402
-          '1' => 'moderator notification',
401
+            '0' => 'boinc_standard',
402
+            '1' => 'moderator notification',
403 403
         ),
404 404
         '#status' => 'default',
405 405
         '#conditions' => array(
406
-          '0' => array(
406
+            '0' => array(
407 407
             '#type' => 'condition',
408 408
             '#settings' => array(
409
-              '#argument map' => array(
409
+                '#argument map' => array(
410 410
                 'user1' => 'user',
411 411
                 'user2' => 'comment_author',
412
-              ),
412
+                ),
413 413
             ),
414 414
             '#name' => 'rules_condition_user_comparison',
415 415
             '#info' => array(
416
-              'label' => 'Compare two users: acting user (who unhid the comment) is NOT the comment author',
417
-              'label callback' => FALSE,
418
-              'arguments' => array(
416
+                'label' => 'Compare two users: acting user (who unhid the comment) is NOT the comment author',
417
+                'label callback' => FALSE,
418
+                'arguments' => array(
419 419
                 'user1' => array(
420
-                  'type' => 'user',
421
-                  'label' => 'User account 1',
420
+                    'type' => 'user',
421
+                    'label' => 'User account 1',
422 422
                 ),
423 423
                 'user2' => array(
424
-                  'type' => 'user',
425
-                  'label' => 'User account 2',
424
+                    'type' => 'user',
425
+                    'label' => 'User account 2',
426
+                ),
426 427
                 ),
427
-              ),
428
-              'module' => 'User',
428
+                'module' => 'User',
429 429
             ),
430 430
             '#negate' => 1,
431 431
             '#weight' => 0.0,
432
-          ),
432
+            ),
433 433
         ),
434 434
         '#actions' => array(
435
-          '0' => array(
435
+            '0' => array(
436 436
             '#info' => array(
437
-              'label' => 'Notify moderators via email',
438
-              'module' => 'BOINC core',
439
-              'eval input' => array(
437
+                'label' => 'Notify moderators via email',
438
+                'module' => 'BOINC core',
439
+                'eval input' => array(
440 440
                 '0' => 'subject',
441 441
                 '1' => 'message',
442 442
                 '2' => 'from',
443
-              ),
443
+                ),
444 444
             ),
445 445
             '#name' => 'boinccore_rules_action_mail_to_moderators',
446 446
             '#settings' => array(
447
-              'from' => '',
448
-              'subject' => 'Comment at [:global:site-name] unhidden by moderator or admin',
449
-              'message' => "Comment has been unhidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
450
-              '#eval input' => array(
447
+                'from' => '',
448
+                'subject' => 'Comment at [:global:site-name] unhidden by moderator or admin',
449
+                'message' => "Comment has been unhidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
450
+                '#eval input' => array(
451 451
                 'token_rules_input_evaluator' => array(
452
-                  'subject' => array(
452
+                    'subject' => array(
453 453
                     '0' => ':global',
454
-                  ),
455
-                  'message' => array(
454
+                    ),
455
+                    'message' => array(
456 456
                     '0' => 'comment',
457 457
                     '1' => 'user',
458 458
                     '2' => ':global',
459
-                  ),
460
-                  'from' => array(
459
+                    ),
460
+                    'from' => array(
461 461
                     '0' => ':global',
462
-                  ),
462
+                    ),
463 463
                 ),
464 464
                 'rules_input_evaluator_php' => array(
465
-                  'message' => array(),
465
+                    'message' => array(),
466
+                ),
466 467
                 ),
467
-              ),
468 468
             ),
469 469
             '#type' => 'action',
470 470
             '#weight' => 0.0,
471
-          ),
471
+            ),
472 472
         ),
473 473
         '#version' => 6003,
474
-      ),
475
-      'rules_comment_is_unpublished_hidden_by_moderator_or_admin' => array(
474
+        ),
475
+        'rules_comment_is_unpublished_hidden_by_moderator_or_admin' => array(
476 476
         '#type' => 'rule',
477 477
         '#set' => 'event_comment_unpublish',
478 478
         '#label' => 'Comment is hidden by moderator or admin',
479 479
         '#active' => 1,
480 480
         '#weight' => '0',
481 481
         '#categories' => array(
482
-          '0' => 'boinc_standard',
483
-          '1' => 'moderator notification',
482
+            '0' => 'boinc_standard',
483
+            '1' => 'moderator notification',
484 484
         ),
485 485
         '#status' => 'default',
486 486
         '#conditions' => array(
487
-          '0' => array(
487
+            '0' => array(
488 488
             '#weight' => 0.0,
489 489
             '#negate' => 1,
490 490
             '#info' => array(
491
-              'label' => 'Compare two users: acting user (who hid the comment) is NOT the comment author',
492
-              'label callback' => FALSE,
493
-              'arguments' => array(
491
+                'label' => 'Compare two users: acting user (who hid the comment) is NOT the comment author',
492
+                'label callback' => FALSE,
493
+                'arguments' => array(
494 494
                 'user1' => array(
495
-                  'type' => 'user',
496
-                  'label' => 'User account 1',
495
+                    'type' => 'user',
496
+                    'label' => 'User account 1',
497 497
                 ),
498 498
                 'user2' => array(
499
-                  'type' => 'user',
500
-                  'label' => 'User account 2',
499
+                    'type' => 'user',
500
+                    'label' => 'User account 2',
501
+                ),
501 502
                 ),
502
-              ),
503
-              'module' => 'User',
503
+                'module' => 'User',
504 504
             ),
505 505
             '#name' => 'rules_condition_user_comparison',
506 506
             '#type' => 'condition',
507 507
             '#settings' => array(
508
-              '#argument map' => array(
508
+                '#argument map' => array(
509 509
                 'user1' => 'user',
510 510
                 'user2' => 'comment_author',
511
-              ),
511
+                ),
512
+            ),
512 513
             ),
513
-          ),
514 514
         ),
515 515
         '#actions' => array(
516
-          '0' => array(
516
+            '0' => array(
517 517
             '#type' => 'action',
518 518
             '#settings' => array(
519
-              'from' => '',
520
-              'subject' => 'Comment at [:global:site-name] hidden by moderator or admin',
521
-              'message' => "Comment has been hidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
522
-              '#eval input' => array(
519
+                'from' => '',
520
+                'subject' => 'Comment at [:global:site-name] hidden by moderator or admin',
521
+                'message' => "Comment has been hidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]",
522
+                '#eval input' => array(
523 523
                 'token_rules_input_evaluator' => array(
524
-                  'subject' => array(
524
+                    'subject' => array(
525 525
                     '0' => ':global',
526
-                  ),
527
-                  'message' => array(
526
+                    ),
527
+                    'message' => array(
528 528
                     '0' => 'comment',
529 529
                     '1' => 'user',
530 530
                     '2' => ':global',
531
-                  ),
532
-                  'from' => array(
531
+                    ),
532
+                    'from' => array(
533 533
                     '0' => ':global',
534
-                  ),
534
+                    ),
535 535
                 ),
536 536
                 'rules_input_evaluator_php' => array(
537
-                  'message' => array(),
537
+                    'message' => array(),
538
+                ),
538 539
                 ),
539
-              ),
540 540
             ),
541 541
             '#name' => 'boinccore_rules_action_mail_to_moderators',
542 542
             '#info' => array(
543
-              'label' => 'Notify moderators via email',
544
-              'module' => 'BOINC core',
545
-              'eval input' => array(
543
+                'label' => 'Notify moderators via email',
544
+                'module' => 'BOINC core',
545
+                'eval input' => array(
546 546
                 '0' => 'subject',
547 547
                 '1' => 'message',
548 548
                 '2' => 'from',
549
-              ),
549
+                ),
550 550
             ),
551 551
             '#weight' => 0.0,
552
-          ),
552
+            ),
553 553
         ),
554 554
         '#version' => 6003,
555
-      ),
556
-      'rules_forum_topic_is_edited_by_moderator_or_admin' => array(
555
+        ),
556
+        'rules_forum_topic_is_edited_by_moderator_or_admin' => array(
557 557
         '#type' => 'rule',
558 558
         '#set' => 'event_node_update',
559 559
         '#label' => 'Forum topic is edited by moderator or admin',
560 560
         '#active' => 1,
561 561
         '#weight' => '0',
562 562
         '#categories' => array(
563
-          '0' => 'boinc_standard',
564
-          '1' => 'moderator notification',
563
+            '0' => 'boinc_standard',
564
+            '1' => 'moderator notification',
565 565
         ),
566 566
         '#status' => 'default',
567 567
         '#conditions' => array(
568
-          '0' => array(
568
+            '0' => array(
569 569
             '#weight' => 0.0,
570 570
             '#type' => 'condition',
571 571
             '#settings' => array(
572
-              'roles' => array(
572
+                'roles' => array(
573 573
                 '0' => 3519698132,
574 574
                 '1' => 1271379760,
575
-              ),
576
-              'operation' => 'OR',
577
-              '#argument map' => array(
575
+                ),
576
+                'operation' => 'OR',
577
+                '#argument map' => array(
578 578
                 'user' => 'user',
579
-              ),
579
+                ),
580 580
             ),
581 581
             '#name' => 'rules_condition_user_hasrole',
582 582
             '#info' => array(
583
-              'label' => 'User has role(s): administrator or moderator',
584
-              'label callback' => FALSE,
585
-              'arguments' => array(
583
+                'label' => 'User has role(s): administrator or moderator',
584
+                'label callback' => FALSE,
585
+                'arguments' => array(
586 586
                 'user' => array(
587
-                  'type' => 'user',
588
-                  'label' => 'User',
587
+                    'type' => 'user',
588
+                    'label' => 'User',
589
+                ),
589 590
                 ),
590
-              ),
591
-              'module' => 'User',
591
+                'module' => 'User',
592 592
             ),
593
-          ),
594
-          '1' => array(
593
+            ),
594
+            '1' => array(
595 595
             '#weight' => 0.0,
596 596
             '0' => array(
597
-              '#weight' => 0.0,
598
-              '#info' => array(
597
+                '#weight' => 0.0,
598
+                '#info' => array(
599 599
                 'label' => 'Updated content is Forum topic',
600 600
                 'arguments' => array(
601
-                  'node' => array(
601
+                    'node' => array(
602 602
                     'type' => 'node',
603 603
                     'label' => 'Content',
604
-                  ),
604
+                    ),
605 605
                 ),
606 606
                 'module' => 'Node',
607
-              ),
608
-              '#name' => 'rules_condition_content_is_type',
609
-              '#settings' => array(
607
+                ),
608
+                '#name' => 'rules_condition_content_is_type',
609
+                '#settings' => array(
610 610
                 'type' => array(
611
-                  'forum' => 'forum',
611
+                    'forum' => 'forum',
612 612
                 ),
613 613
                 '#argument map' => array(
614
-                  'node' => 'node',
614
+                    'node' => 'node',
615
+                ),
615 616
                 ),
616
-              ),
617
-              '#type' => 'condition',
617
+                '#type' => 'condition',
618 618
             ),
619 619
             '#type' => 'OR',
620 620
             '1' => array(
621
-              '#type' => 'condition',
622
-              '#settings' => array(
621
+                '#type' => 'condition',
622
+                '#settings' => array(
623 623
                 'type' => array(
624
-                  'team_forum' => 'team_forum',
624
+                    'team_forum' => 'team_forum',
625 625
                 ),
626 626
                 '#argument map' => array(
627
-                  'node' => 'node',
627
+                    'node' => 'node',
628 628
                 ),
629
-              ),
630
-              '#name' => 'rules_condition_content_is_type',
631
-              '#info' => array(
629
+                ),
630
+                '#name' => 'rules_condition_content_is_type',
631
+                '#info' => array(
632 632
                 'label' => 'Updated content is Team forum topic',
633 633
                 'arguments' => array(
634
-                  'node' => array(
634
+                    'node' => array(
635 635
                     'type' => 'node',
636 636
                     'label' => 'Content',
637
-                  ),
637
+                    ),
638 638
                 ),
639 639
                 'module' => 'Node',
640
-              ),
641
-              '#weight' => 0.0,
640
+                ),
641
+                '#weight' => 0.0,
642 642
             ),
643
-          ),
644
-          '2' => array(
643
+            ),
644
+            '2' => array(
645 645
             '#weight' => 0.0,
646 646
             '#info' => array(
647
-              'label' => 'PHP code: content changed',
648
-              'label callback' => FALSE,
649
-              'module' => 'PHP',
650
-              'eval input' => array(
647
+                'label' => 'PHP code: content changed',
648
+                'label callback' => FALSE,
649
+                'module' => 'PHP',
650
+                'eval input' => array(
651 651
                 '0' => 'code',
652
-              ),
652
+                ),
653 653
             ),
654 654
             '#name' => 'rules_condition_custom_php',
655 655
             '#settings' => array(
656
-              'code' => 'return ($node->body != $node_unchanged->body);',
657
-              'vars' => array(
656
+                'code' => 'return ($node->body != $node_unchanged->body);',
657
+                'vars' => array(
658 658
                 '0' => 'node',
659 659
                 '1' => 'node_unchanged',
660
-              ),
661
-              '#eval input' => array(
660
+                ),
661
+                '#eval input' => array(
662 662
                 'token_rules_input_evaluator' => array(
663
-                  'code' => array(
663
+                    'code' => array(
664 664
                     '0' => ':global',
665
-                  ),
665
+                    ),
666
+                ),
666 667
                 ),
667
-              ),
668 668
             ),
669 669
             '#type' => 'condition',
670
-          ),
670
+            ),
671 671
         ),
672 672
         '#actions' => array(
673
-          '0' => array(
673
+            '0' => array(
674 674
             '#type' => 'action',
675 675
             '#settings' => array(
676
-              'from' => '',
677
-              'subject' => 'Forum topic at [:global:site-name] edited by moderator/admin',
678
-              'message' => "[node:type] topic '[node:title]' has been edited by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
679
-              '#eval input' => array(
676
+                'from' => '',
677
+                'subject' => 'Forum topic at [:global:site-name] edited by moderator/admin',
678
+                'message' => "[node:type] topic '[node:title]' has been edited by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
679
+                '#eval input' => array(
680 680
                 'token_rules_input_evaluator' => array(
681
-                  'subject' => array(
681
+                    'subject' => array(
682 682
                     '0' => ':global',
683
-                  ),
684
-                  'message' => array(
683
+                    ),
684
+                    'message' => array(
685 685
                     '0' => 'node',
686 686
                     '1' => 'user',
687 687
                     '2' => ':global',
688
-                  ),
689
-                  'from' => array(
688
+                    ),
689
+                    'from' => array(
690 690
                     '0' => ':global',
691
-                  ),
691
+                    ),
692 692
                 ),
693 693
                 'rules_input_evaluator_php' => array(
694
-                  'message' => array(
694
+                    'message' => array(
695 695
                     '0' => 'node',
696
-                  ),
696
+                    ),
697
+                ),
697 698
                 ),
698
-              ),
699 699
             ),
700 700
             '#name' => 'boinccore_rules_action_mail_to_moderators',
701 701
             '#info' => array(
702
-              'label' => 'Notify moderators via email',
703
-              'module' => 'BOINC core',
704
-              'eval input' => array(
702
+                'label' => 'Notify moderators via email',
703
+                'module' => 'BOINC core',
704
+                'eval input' => array(
705 705
                 '0' => 'subject',
706 706
                 '1' => 'message',
707 707
                 '2' => 'from',
708
-              ),
708
+                ),
709 709
             ),
710 710
             '#weight' => 0.0,
711
-          ),
711
+            ),
712 712
         ),
713 713
         '#version' => 6003,
714
-      ),
715
-      'rules_forum_topic_is_hidden_by_moderator_admin' => array(
714
+        ),
715
+        'rules_forum_topic_is_hidden_by_moderator_admin' => array(
716 716
         '#type' => 'rule',
717 717
         '#set' => 'event_node_update',
718 718
         '#label' => 'Forum topic is hidden by moderator/admin',
719 719
         '#active' => 1,
720 720
         '#weight' => '0',
721 721
         '#categories' => array(
722
-          '0' => 'boinc_standard',
723
-          '1' => 'moderator notification',
722
+            '0' => 'boinc_standard',
723
+            '1' => 'moderator notification',
724 724
         ),
725 725
         '#status' => 'default',
726 726
         '#conditions' => array(
727
-          '0' => array(
727
+            '0' => array(
728 728
             '#type' => 'condition',
729 729
             '#settings' => array(
730
-              'roles' => array(
730
+                'roles' => array(
731 731
                 '0' => 3519698132,
732 732
                 '1' => 1271379760,
733
-              ),
734
-              'operation' => 'OR',
735
-              '#argument map' => array(
733
+                ),
734
+                'operation' => 'OR',
735
+                '#argument map' => array(
736 736
                 'user' => 'user',
737
-              ),
737
+                ),
738 738
             ),
739 739
             '#name' => 'rules_condition_user_hasrole',
740 740
             '#info' => array(
741
-              'label' => 'User has role(s): administrator or moderator',
742
-              'label callback' => FALSE,
743
-              'arguments' => array(
741
+                'label' => 'User has role(s): administrator or moderator',
742
+                'label callback' => FALSE,
743
+                'arguments' => array(
744 744
                 'user' => array(
745
-                  'type' => 'user',
746
-                  'label' => 'User',
745
+                    'type' => 'user',
746
+                    'label' => 'User',
747
+                ),
747 748
                 ),
748
-              ),
749
-              'module' => 'User',
749
+                'module' => 'User',
750 750
             ),
751 751
             '#weight' => 0.0,
752
-          ),
753
-          '1' => array(
752
+            ),
753
+            '1' => array(
754 754
             '#weight' => 0.0,
755 755
             '0' => array(
756
-              '#weight' => 0.0,
757
-              '#type' => 'condition',
758
-              '#settings' => array(
756
+                '#weight' => 0.0,
757
+                '#type' => 'condition',
758
+                '#settings' => array(
759 759
                 'type' => array(
760
-                  'forum' => 'forum',
760
+                    'forum' => 'forum',
761 761
                 ),
762 762
                 '#argument map' => array(
763
-                  'node' => 'node',
763
+                    'node' => 'node',
764 764
                 ),
765
-              ),
766
-              '#name' => 'rules_condition_content_is_type',
767
-              '#info' => array(
765
+                ),
766
+                '#name' => 'rules_condition_content_is_type',
767
+                '#info' => array(
768 768
                 'label' => 'Updated content is Forum topic',
769 769
                 'arguments' => array(
770
-                  'node' => array(
770
+                    'node' => array(
771 771
                     'type' => 'node',
772 772
                     'label' => 'Content',
773
-                  ),
773
+                    ),
774 774
                 ),
775 775
                 'module' => 'Node',
776
-              ),
776
+                ),
777 777
             ),
778 778
             '#type' => 'OR',
779 779
             '1' => array(
780
-              '#type' => 'condition',
781
-              '#settings' => array(
780
+                '#type' => 'condition',
781
+                '#settings' => array(
782 782
                 'type' => array(
783
-                  'team_forum' => 'team_forum',
783
+                    'team_forum' => 'team_forum',
784 784
                 ),
785 785
                 '#argument map' => array(
786
-                  'node' => 'node',
786
+                    'node' => 'node',
787
+                ),
787 788
                 ),
788
-              ),
789
-              '#name' => 'rules_condition_content_is_type',
790
-              '#info' => array(
789
+                '#name' => 'rules_condition_content_is_type',
790
+                '#info' => array(
791 791
                 'label' => 'Updated content is Team forum topic',
792 792
                 'arguments' => array(
793
-                  'node' => array(
793
+                    'node' => array(
794 794
                     'type' => 'node',
795 795
                     'label' => 'Content',
796
-                  ),
796
+                    ),
797 797
                 ),
798 798
                 'module' => 'Node',
799
-              ),
800
-              '#weight' => 0.0,
799
+                ),
800
+                '#weight' => 0.0,
801
+            ),
801 802
             ),
802
-          ),
803
-          '3' => array(
803
+            '3' => array(
804 804
             '#weight' => 0.0,
805 805
             '#info' => array(
806
-              'label' => 'PHP code: node content unchanged',
807
-              'label callback' => FALSE,
808
-              'module' => 'PHP',
809
-              'eval input' => array(
806
+                'label' => 'PHP code: node content unchanged',
807
+                'label callback' => FALSE,
808
+                'module' => 'PHP',
809
+                'eval input' => array(
810 810
                 '0' => 'code',
811
-              ),
811
+                ),
812 812
             ),
813 813
             '#name' => 'rules_condition_custom_php',
814 814
             '#settings' => array(
815
-              'code' => 'return $node->body == $node_unchanged->body;',
816
-              'vars' => array(
815
+                'code' => 'return $node->body == $node_unchanged->body;',
816
+                'vars' => array(
817 817
                 '0' => 'node',
818 818
                 '1' => 'node_unchanged',
819
-              ),
820
-              '#eval input' => array(
819
+                ),
820
+                '#eval input' => array(
821 821
                 'token_rules_input_evaluator' => array(
822
-                  'code' => array(
822
+                    'code' => array(
823 823
                     '0' => ':global',
824
-                  ),
824
+                    ),
825
+                ),
825 826
                 ),
826
-              ),
827 827
             ),
828 828
             '#type' => 'condition',
829
-          ),
830
-          '4' => array(
829
+            ),
830
+            '4' => array(
831 831
             '#weight' => 0.0,
832 832
             '#info' => array(
833
-              'label' => 'PHP code: node status changed to hidden',
834
-              'label callback' => FALSE,
835
-              'module' => 'PHP',
836
-              'eval input' => array(
833
+                'label' => 'PHP code: node status changed to hidden',
834
+                'label callback' => FALSE,
835
+                'module' => 'PHP',
836
+                'eval input' => array(
837 837
                 '0' => 'code',
838
-              ),
838
+                ),
839 839
             ),
840 840
             '#name' => 'rules_condition_custom_php',
841 841
             '#type' => 'condition',
842 842
             '#settings' => array(
843
-              'code' => 'return $node_unchanged->status == 1 && $node->status == 0;',
844
-              'vars' => array(
843
+                'code' => 'return $node_unchanged->status == 1 && $node->status == 0;',
844
+                'vars' => array(
845 845
                 '0' => 'node',
846 846
                 '1' => 'node_unchanged',
847
-              ),
848
-              '#eval input' => array(
847
+                ),
848
+                '#eval input' => array(
849 849
                 'token_rules_input_evaluator' => array(
850
-                  'code' => array(
850
+                    'code' => array(
851 851
                     '0' => ':global',
852
-                  ),
852
+                    ),
853
+                ),
853 854
                 ),
854
-              ),
855 855
             ),
856
-          ),
856
+            ),
857 857
         ),
858 858
         '#actions' => array(
859
-          '0' => array(
859
+            '0' => array(
860 860
             '#info' => array(
861
-              'label' => 'Notify moderators via email',
862
-              'module' => 'BOINC core',
863
-              'eval input' => array(
861
+                'label' => 'Notify moderators via email',
862
+                'module' => 'BOINC core',
863
+                'eval input' => array(
864 864
                 '0' => 'subject',
865 865
                 '1' => 'message',
866 866
                 '2' => 'from',
867
-              ),
867
+                ),
868 868
             ),
869 869
             '#name' => 'boinccore_rules_action_mail_to_moderators',
870 870
             '#settings' => array(
871
-              'from' => '',
872
-              'subject' => 'Forum topic at [:global:site-name] hidden by moderator/admin',
873
-              'message' => "[node:type] topic '[node:title]' has been hidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
874
-              '#eval input' => array(
871
+                'from' => '',
872
+                'subject' => 'Forum topic at [:global:site-name] hidden by moderator/admin',
873
+                'message' => "[node:type] topic '[node:title]' has been hidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
874
+                '#eval input' => array(
875 875
                 'token_rules_input_evaluator' => array(
876
-                  'subject' => array(
876
+                    'subject' => array(
877 877
                     '0' => ':global',
878
-                  ),
879
-                  'message' => array(
878
+                    ),
879
+                    'message' => array(
880 880
                     '0' => 'node',
881 881
                     '1' => 'user',
882 882
                     '2' => ':global',
883
-                  ),
884
-                  'from' => array(
883
+                    ),
884
+                    'from' => array(
885 885
                     '0' => ':global',
886
-                  ),
886
+                    ),
887 887
                 ),
888 888
                 'rules_input_evaluator_php' => array(
889
-                  'message' => array(
889
+                    'message' => array(
890 890
                     '0' => 'node',
891
-                  ),
891
+                    ),
892
+                ),
892 893
                 ),
893
-              ),
894 894
             ),
895 895
             '#type' => 'action',
896 896
             '#weight' => 0.0,
897
-          ),
897
+            ),
898 898
         ),
899 899
         '#version' => 6003,
900
-      ),
901
-      'rules_forum_topic_is_moved_to_a_different_forum_by_moderator_or_admin' => array(
900
+        ),
901
+        'rules_forum_topic_is_moved_to_a_different_forum_by_moderator_or_admin' => array(
902 902
         '#type' => 'rule',
903 903
         '#set' => 'event_node_update',
904 904
         '#label' => 'Forum topic is moved to a different forum by moderator or admin',
905 905
         '#active' => 1,
906 906
         '#weight' => '0',
907 907
         '#categories' => array(
908
-          '0' => 'boinc_standard',
909
-          '1' => 'moderator notification',
908
+            '0' => 'boinc_standard',
909
+            '1' => 'moderator notification',
910 910
         ),
911 911
         '#status' => 'default',
912 912
         '#conditions' => array(
913
-          '0' => array(
913
+            '0' => array(
914 914
             '#weight' => 0.0,
915 915
             '#type' => 'condition',
916 916
             '#settings' => array(
917
-              'roles' => array(
917
+                'roles' => array(
918 918
                 '0' => 3519698132,
919 919
                 '1' => 1271379760,
920
-              ),
921
-              'operation' => 'OR',
922
-              '#argument map' => array(
920
+                ),
921
+                'operation' => 'OR',
922
+                '#argument map' => array(
923 923
                 'user' => 'user',
924
-              ),
924
+                ),
925 925
             ),
926 926
             '#name' => 'rules_condition_user_hasrole',
927 927
             '#info' => array(
928
-              'label' => 'User has role(s): administrator or moderator',
929
-              'label callback' => FALSE,
930
-              'arguments' => array(
928
+                'label' => 'User has role(s): administrator or moderator',
929
+                'label callback' => FALSE,
930
+                'arguments' => array(
931 931
                 'user' => array(
932
-                  'type' => 'user',
933
-                  'label' => 'User',
932
+                    'type' => 'user',
933
+                    'label' => 'User',
934 934
                 ),
935
-              ),
936
-              'module' => 'User',
935
+                ),
936
+                'module' => 'User',
937
+            ),
937 938
             ),
938
-          ),
939
-          '1' => array(
939
+            '1' => array(
940 940
             '#weight' => 0.0,
941 941
             '0' => array(
942
-              '#weight' => 0.0,
943
-              '#info' => array(
942
+                '#weight' => 0.0,
943
+                '#info' => array(
944 944
                 'label' => 'Updated content is Forum topic',
945 945
                 'arguments' => array(
946
-                  'node' => array(
946
+                    'node' => array(
947 947
                     'type' => 'node',
948 948
                     'label' => 'Content',
949
-                  ),
949
+                    ),
950 950
                 ),
951 951
                 'module' => 'Node',
952
-              ),
953
-              '#name' => 'rules_condition_content_is_type',
954
-              '#settings' => array(
952
+                ),
953
+                '#name' => 'rules_condition_content_is_type',
954
+                '#settings' => array(
955 955
                 'type' => array(
956
-                  'forum' => 'forum',
956
+                    'forum' => 'forum',
957 957
                 ),
958 958
                 '#argument map' => array(
959
-                  'node' => 'node',
959
+                    'node' => 'node',
960 960
                 ),
961
-              ),
962
-              '#type' => 'condition',
961
+                ),
962
+                '#type' => 'condition',
963 963
             ),
964 964
             '#type' => 'OR',
965 965
             '1' => array(
966
-              '#type' => 'condition',
967
-              '#settings' => array(
966
+                '#type' => 'condition',
967
+                '#settings' => array(
968 968
                 'type' => array(
969
-                  'team_forum' => 'team_forum',
969
+                    'team_forum' => 'team_forum',
970 970
                 ),
971 971
                 '#argument map' => array(
972
-                  'node' => 'node',
972
+                    'node' => 'node',
973
+                ),
973 974
                 ),
974
-              ),
975
-              '#name' => 'rules_condition_content_is_type',
976
-              '#info' => array(
975
+                '#name' => 'rules_condition_content_is_type',
976
+                '#info' => array(
977 977
                 'label' => 'Updated content is Team forum topic',
978 978
                 'arguments' => array(
979
-                  'node' => array(
979
+                    'node' => array(
980 980
                     'type' => 'node',
981 981
                     'label' => 'Content',
982
-                  ),
982
+                    ),
983 983
                 ),
984 984
                 'module' => 'Node',
985
-              ),
986
-              '#weight' => 0.0,
985
+                ),
986
+                '#weight' => 0.0,
987 987
             ),
988
-          ),
989
-          '2' => array(
988
+            ),
989
+            '2' => array(
990 990
             '#weight' => 0.0,
991 991
             '#info' => array(
992
-              'label' => 'PHP code: node moved to new forum parent',
993
-              'label callback' => FALSE,
994
-              'module' => 'PHP',
995
-              'eval input' => array(
992
+                'label' => 'PHP code: node moved to new forum parent',
993
+                'label callback' => FALSE,
994
+                'module' => 'PHP',
995
+                'eval input' => array(
996 996
                 '0' => 'code',
997
-              ),
997
+                ),
998 998
             ),
999 999
             '#name' => 'rules_condition_custom_php',
1000 1000
             '#settings' => array(
1001
-              'code' => 'return ($node->tid != $node_unchanged->tid);',
1002
-              'vars' => array(
1001
+                'code' => 'return ($node->tid != $node_unchanged->tid);',
1002
+                'vars' => array(
1003 1003
                 '0' => 'node',
1004 1004
                 '1' => 'node_unchanged',
1005
-              ),
1006
-              '#eval input' => array(
1005
+                ),
1006
+                '#eval input' => array(
1007 1007
                 'token_rules_input_evaluator' => array(
1008
-                  'code' => array(
1008
+                    'code' => array(
1009 1009
                     '0' => ':global',
1010
-                  ),
1010
+                    ),
1011
+                ),
1011 1012
                 ),
1012
-              ),
1013 1013
             ),
1014 1014
             '#type' => 'condition',
1015
-          ),
1015
+            ),
1016 1016
         ),
1017 1017
         '#actions' => array(
1018
-          '0' => array(
1018
+            '0' => array(
1019 1019
             '#type' => 'action',
1020 1020
             '#settings' => array(
1021
-              'from' => '',
1022
-              'subject' => 'Forum topic at [:global:site-name] moved by moderator/admin',
1023
-              'message' => "[node:type] topic '[node:title]' has been moved by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1024
-              '#eval input' => array(
1021
+                'from' => '',
1022
+                'subject' => 'Forum topic at [:global:site-name] moved by moderator/admin',
1023
+                'message' => "[node:type] topic '[node:title]' has been moved by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1024
+                '#eval input' => array(
1025 1025
                 'token_rules_input_evaluator' => array(
1026
-                  'subject' => array(
1026
+                    'subject' => array(
1027 1027
                     '0' => ':global',
1028
-                  ),
1029
-                  'message' => array(
1028
+                    ),
1029
+                    'message' => array(
1030 1030
                     '0' => 'node',
1031 1031
                     '1' => 'user',
1032 1032
                     '2' => ':global',
1033
-                  ),
1034
-                  'from' => array(
1033
+                    ),
1034
+                    'from' => array(
1035 1035
                     '0' => ':global',
1036
-                  ),
1036
+                    ),
1037 1037
                 ),
1038 1038
                 'rules_input_evaluator_php' => array(
1039
-                  'message' => array(
1039
+                    'message' => array(
1040 1040
                     '0' => 'node',
1041
-                  ),
1041
+                    ),
1042
+                ),
1042 1043
                 ),
1043
-              ),
1044 1044
             ),
1045 1045
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1046 1046
             '#info' => array(
1047
-              'label' => 'Notify moderators via email',
1048
-              'module' => 'BOINC core',
1049
-              'eval input' => array(
1047
+                'label' => 'Notify moderators via email',
1048
+                'module' => 'BOINC core',
1049
+                'eval input' => array(
1050 1050
                 '0' => 'subject',
1051 1051
                 '1' => 'message',
1052 1052
                 '2' => 'from',
1053
-              ),
1053
+                ),
1054 1054
             ),
1055 1055
             '#weight' => 0.0,
1056
-          ),
1056
+            ),
1057 1057
         ),
1058 1058
         '#version' => 6003,
1059
-      ),
1060
-      'rules_forum_topic_is_unhidden_by_moderator_admin' => array(
1059
+        ),
1060
+        'rules_forum_topic_is_unhidden_by_moderator_admin' => array(
1061 1061
         '#type' => 'rule',
1062 1062
         '#set' => 'event_node_update',
1063 1063
         '#label' => 'Forum topic is unhidden by moderator/admin',
1064 1064
         '#active' => 1,
1065 1065
         '#weight' => '0',
1066 1066
         '#categories' => array(
1067
-          '0' => 'boinc_standard',
1068
-          '1' => 'moderator notification',
1067
+            '0' => 'boinc_standard',
1068
+            '1' => 'moderator notification',
1069 1069
         ),
1070 1070
         '#status' => 'default',
1071 1071
         '#conditions' => array(
1072
-          '0' => array(
1072
+            '0' => array(
1073 1073
             '#type' => 'condition',
1074 1074
             '#settings' => array(
1075
-              'roles' => array(
1075
+                'roles' => array(
1076 1076
                 '0' => 3519698132,
1077 1077
                 '1' => 1271379760,
1078
-              ),
1079
-              'operation' => 'OR',
1080
-              '#argument map' => array(
1078
+                ),
1079
+                'operation' => 'OR',
1080
+                '#argument map' => array(
1081 1081
                 'user' => 'user',
1082
-              ),
1082
+                ),
1083 1083
             ),
1084 1084
             '#name' => 'rules_condition_user_hasrole',
1085 1085
             '#info' => array(
1086
-              'label' => 'User has role(s): administrator or moderator',
1087
-              'label callback' => FALSE,
1088
-              'arguments' => array(
1086
+                'label' => 'User has role(s): administrator or moderator',
1087
+                'label callback' => FALSE,
1088
+                'arguments' => array(
1089 1089
                 'user' => array(
1090
-                  'type' => 'user',
1091
-                  'label' => 'User',
1090
+                    'type' => 'user',
1091
+                    'label' => 'User',
1092 1092
                 ),
1093
-              ),
1094
-              'module' => 'User',
1093
+                ),
1094
+                'module' => 'User',
1095 1095
             ),
1096 1096
             '#weight' => 0.0,
1097
-          ),
1098
-          '1' => array(
1097
+            ),
1098
+            '1' => array(
1099 1099
             '#type' => 'OR',
1100 1100
             '0' => array(
1101
-              '#info' => array(
1101
+                '#info' => array(
1102 1102
                 'label' => 'Updated content is Forum topic',
1103 1103
                 'arguments' => array(
1104
-                  'node' => array(
1104
+                    'node' => array(
1105 1105
                     'type' => 'node',
1106 1106
                     'label' => 'Content',
1107
-                  ),
1107
+                    ),
1108 1108
                 ),
1109 1109
                 'module' => 'Node',
1110
-              ),
1111
-              '#name' => 'rules_condition_content_is_type',
1112
-              '#settings' => array(
1110
+                ),
1111
+                '#name' => 'rules_condition_content_is_type',
1112
+                '#settings' => array(
1113 1113
                 'type' => array(
1114
-                  'forum' => 'forum',
1114
+                    'forum' => 'forum',
1115 1115
                 ),
1116 1116
                 '#argument map' => array(
1117
-                  'node' => 'node',
1117
+                    'node' => 'node',
1118
+                ),
1118 1119
                 ),
1119
-              ),
1120
-              '#type' => 'condition',
1121
-              '#weight' => 0.0,
1120
+                '#type' => 'condition',
1121
+                '#weight' => 0.0,
1122 1122
             ),
1123 1123
             '#weight' => 0.0,
1124 1124
             '1' => array(
1125
-              '#weight' => 0.0,
1126
-              '#info' => array(
1125
+                '#weight' => 0.0,
1126
+                '#info' => array(
1127 1127
                 'label' => 'Updated content is Team forum topic',
1128 1128
                 'arguments' => array(
1129
-                  'node' => array(
1129
+                    'node' => array(
1130 1130
                     'type' => 'node',
1131 1131
                     'label' => 'Content',
1132
-                  ),
1132
+                    ),
1133 1133
                 ),
1134 1134
                 'module' => 'Node',
1135
-              ),
1136
-              '#name' => 'rules_condition_content_is_type',
1137
-              '#settings' => array(
1135
+                ),
1136
+                '#name' => 'rules_condition_content_is_type',
1137
+                '#settings' => array(
1138 1138
                 'type' => array(
1139
-                  'team_forum' => 'team_forum',
1139
+                    'team_forum' => 'team_forum',
1140 1140
                 ),
1141 1141
                 '#argument map' => array(
1142
-                  'node' => 'node',
1142
+                    'node' => 'node',
1143
+                ),
1143 1144
                 ),
1144
-              ),
1145
-              '#type' => 'condition',
1145
+                '#type' => 'condition',
1146 1146
             ),
1147
-          ),
1148
-          '3' => array(
1147
+            ),
1148
+            '3' => array(
1149 1149
             '#type' => 'condition',
1150 1150
             '#settings' => array(
1151
-              'code' => 'return $node->body == $node_unchanged->body;',
1152
-              'vars' => array(
1151
+                'code' => 'return $node->body == $node_unchanged->body;',
1152
+                'vars' => array(
1153 1153
                 '0' => 'node',
1154 1154
                 '1' => 'node_unchanged',
1155
-              ),
1156
-              '#eval input' => array(
1155
+                ),
1156
+                '#eval input' => array(
1157 1157
                 'token_rules_input_evaluator' => array(
1158
-                  'code' => array(
1158
+                    'code' => array(
1159 1159
                     '0' => ':global',
1160
-                  ),
1160
+                    ),
1161
+                ),
1161 1162
                 ),
1162
-              ),
1163 1163
             ),
1164 1164
             '#name' => 'rules_condition_custom_php',
1165 1165
             '#info' => array(
1166
-              'label' => 'PHP code: node content is unchanged',
1167
-              'label callback' => FALSE,
1168
-              'module' => 'PHP',
1169
-              'eval input' => array(
1166
+                'label' => 'PHP code: node content is unchanged',
1167
+                'label callback' => FALSE,
1168
+                'module' => 'PHP',
1169
+                'eval input' => array(
1170 1170
                 '0' => 'code',
1171
-              ),
1171
+                ),
1172 1172
             ),
1173 1173
             '#weight' => 0.0,
1174
-          ),
1175
-          '4' => array(
1174
+            ),
1175
+            '4' => array(
1176 1176
             '#type' => 'condition',
1177 1177
             '#settings' => array(
1178
-              'code' => 'return $node_unchanged->status == 0 && $node->status == 1;',
1179
-              'vars' => array(
1178
+                'code' => 'return $node_unchanged->status == 0 && $node->status == 1;',
1179
+                'vars' => array(
1180 1180
                 '0' => 'node',
1181 1181
                 '1' => 'node_unchanged',
1182
-              ),
1183
-              '#eval input' => array(
1182
+                ),
1183
+                '#eval input' => array(
1184 1184
                 'token_rules_input_evaluator' => array(
1185
-                  'code' => array(
1185
+                    'code' => array(
1186 1186
                     '0' => ':global',
1187
-                  ),
1187
+                    ),
1188
+                ),
1188 1189
                 ),
1189
-              ),
1190 1190
             ),
1191 1191
             '#name' => 'rules_condition_custom_php',
1192 1192
             '#info' => array(
1193
-              'label' => 'PHP code: node status changed to unhidden',
1194
-              'label callback' => FALSE,
1195
-              'module' => 'PHP',
1196
-              'eval input' => array(
1193
+                'label' => 'PHP code: node status changed to unhidden',
1194
+                'label callback' => FALSE,
1195
+                'module' => 'PHP',
1196
+                'eval input' => array(
1197 1197
                 '0' => 'code',
1198
-              ),
1198
+                ),
1199 1199
             ),
1200 1200
             '#weight' => 0.0,
1201
-          ),
1201
+            ),
1202 1202
         ),
1203 1203
         '#actions' => array(
1204
-          '0' => array(
1204
+            '0' => array(
1205 1205
             '#info' => array(
1206
-              'label' => 'Notify moderators via email',
1207
-              'module' => 'BOINC core',
1208
-              'eval input' => array(
1206
+                'label' => 'Notify moderators via email',
1207
+                'module' => 'BOINC core',
1208
+                'eval input' => array(
1209 1209
                 '0' => 'subject',
1210 1210
                 '1' => 'message',
1211 1211
                 '2' => 'from',
1212
-              ),
1212
+                ),
1213 1213
             ),
1214 1214
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1215 1215
             '#settings' => array(
1216
-              'from' => '',
1217
-              'subject' => 'Forum topic at [:global:site-name] unhidden by moderator/admin',
1218
-              'message' => "[node:type] topic '[node:title]' has been unhidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1219
-              '#eval input' => array(
1216
+                'from' => '',
1217
+                'subject' => 'Forum topic at [:global:site-name] unhidden by moderator/admin',
1218
+                'message' => "[node:type] topic '[node:title]' has been unhidden by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1219
+                '#eval input' => array(
1220 1220
                 'token_rules_input_evaluator' => array(
1221
-                  'subject' => array(
1221
+                    'subject' => array(
1222 1222
                     '0' => ':global',
1223
-                  ),
1224
-                  'message' => array(
1223
+                    ),
1224
+                    'message' => array(
1225 1225
                     '0' => 'node',
1226 1226
                     '1' => 'user',
1227 1227
                     '2' => ':global',
1228
-                  ),
1229
-                  'from' => array(
1228
+                    ),
1229
+                    'from' => array(
1230 1230
                     '0' => ':global',
1231
-                  ),
1231
+                    ),
1232 1232
                 ),
1233 1233
                 'rules_input_evaluator_php' => array(
1234
-                  'message' => array(
1234
+                    'message' => array(
1235 1235
                     '0' => 'node',
1236
-                  ),
1236
+                    ),
1237
+                ),
1237 1238
                 ),
1238
-              ),
1239 1239
             ),
1240 1240
             '#type' => 'action',
1241 1241
             '#weight' => 0.0,
1242
-          ),
1242
+            ),
1243 1243
         ),
1244 1244
         '#version' => 6003,
1245
-      ),
1246
-      'rules_forum_topic_locked_by_moderator_admin' => array(
1245
+        ),
1246
+        'rules_forum_topic_locked_by_moderator_admin' => array(
1247 1247
         '#type' => 'rule',
1248 1248
         '#set' => 'event_node_update',
1249 1249
         '#label' => 'Forum topic locked by moderator/admin',
1250 1250
         '#active' => 1,
1251 1251
         '#weight' => '0',
1252 1252
         '#categories' => array(
1253
-          '0' => 'boinc_standard',
1254
-          '1' => 'moderator notification',
1253
+            '0' => 'boinc_standard',
1254
+            '1' => 'moderator notification',
1255 1255
         ),
1256 1256
         '#status' => 'default',
1257 1257
         '#conditions' => array(
1258
-          '0' => array(
1258
+            '0' => array(
1259 1259
             '#type' => 'condition',
1260 1260
             '#settings' => array(
1261
-              'roles' => array(
1261
+                'roles' => array(
1262 1262
                 '0' => 3519698132,
1263 1263
                 '1' => 1271379760,
1264
-              ),
1265
-              'operation' => 'OR',
1266
-              '#argument map' => array(
1264
+                ),
1265
+                'operation' => 'OR',
1266
+                '#argument map' => array(
1267 1267
                 'user' => 'user',
1268
-              ),
1268
+                ),
1269 1269
             ),
1270 1270
             '#name' => 'rules_condition_user_hasrole',
1271 1271
             '#info' => array(
1272
-              'label' => 'User has role(s): administrator or moderator',
1273
-              'label callback' => FALSE,
1274
-              'arguments' => array(
1272
+                'label' => 'User has role(s): administrator or moderator',
1273
+                'label callback' => FALSE,
1274
+                'arguments' => array(
1275 1275
                 'user' => array(
1276
-                  'type' => 'user',
1277
-                  'label' => 'User',
1276
+                    'type' => 'user',
1277
+                    'label' => 'User',
1278
+                ),
1278 1279
                 ),
1279
-              ),
1280
-              'module' => 'User',
1280
+                'module' => 'User',
1281 1281
             ),
1282 1282
             '#weight' => 0.0,
1283
-          ),
1284
-          '1' => array(
1283
+            ),
1284
+            '1' => array(
1285 1285
             '#weight' => 0.0,
1286 1286
             '0' => array(
1287
-              '#weight' => 0.0,
1288
-              '#type' => 'condition',
1289
-              '#settings' => array(
1287
+                '#weight' => 0.0,
1288
+                '#type' => 'condition',
1289
+                '#settings' => array(
1290 1290
                 'type' => array(
1291
-                  'forum' => 'forum',
1291
+                    'forum' => 'forum',
1292 1292
                 ),
1293 1293
                 '#argument map' => array(
1294
-                  'node' => 'node',
1294
+                    'node' => 'node',
1295
+                ),
1295 1296
                 ),
1296
-              ),
1297
-              '#name' => 'rules_condition_content_is_type',
1298
-              '#info' => array(
1297
+                '#name' => 'rules_condition_content_is_type',
1298
+                '#info' => array(
1299 1299
                 'label' => 'Updated content is Forum topic',
1300 1300
                 'arguments' => array(
1301
-                  'node' => array(
1301
+                    'node' => array(
1302 1302
                     'type' => 'node',
1303 1303
                     'label' => 'Content',
1304
-                  ),
1304
+                    ),
1305 1305
                 ),
1306 1306
                 'module' => 'Node',
1307
-              ),
1307
+                ),
1308 1308
             ),
1309 1309
             '#type' => 'OR',
1310 1310
             '1' => array(
1311
-              '#type' => 'condition',
1312
-              '#settings' => array(
1311
+                '#type' => 'condition',
1312
+                '#settings' => array(
1313 1313
                 'type' => array(
1314
-                  'team_forum' => 'team_forum',
1314
+                    'team_forum' => 'team_forum',
1315 1315
                 ),
1316 1316
                 '#argument map' => array(
1317
-                  'node' => 'node',
1317
+                    'node' => 'node',
1318
+                ),
1318 1319
                 ),
1319
-              ),
1320
-              '#name' => 'rules_condition_content_is_type',
1321
-              '#info' => array(
1320
+                '#name' => 'rules_condition_content_is_type',
1321
+                '#info' => array(
1322 1322
                 'label' => 'Updated content is Team forum topic',
1323 1323
                 'arguments' => array(
1324
-                  'node' => array(
1324
+                    'node' => array(
1325 1325
                     'type' => 'node',
1326 1326
                     'label' => 'Content',
1327
-                  ),
1327
+                    ),
1328 1328
                 ),
1329 1329
                 'module' => 'Node',
1330
-              ),
1331
-              '#weight' => 0.0,
1330
+                ),
1331
+                '#weight' => 0.0,
1332
+            ),
1332 1333
             ),
1333
-          ),
1334
-          '3' => array(
1334
+            '3' => array(
1335 1335
             '#weight' => 0.0,
1336 1336
             '#info' => array(
1337
-              'label' => 'PHP code: node content unchanged',
1338
-              'label callback' => FALSE,
1339
-              'module' => 'PHP',
1340
-              'eval input' => array(
1337
+                'label' => 'PHP code: node content unchanged',
1338
+                'label callback' => FALSE,
1339
+                'module' => 'PHP',
1340
+                'eval input' => array(
1341 1341
                 '0' => 'code',
1342
-              ),
1342
+                ),
1343 1343
             ),
1344 1344
             '#name' => 'rules_condition_custom_php',
1345 1345
             '#settings' => array(
1346
-              'code' => 'return $node->body == $node_unchanged->body;',
1347
-              'vars' => array(
1346
+                'code' => 'return $node->body == $node_unchanged->body;',
1347
+                'vars' => array(
1348 1348
                 '0' => 'node',
1349 1349
                 '1' => 'node_unchanged',
1350
-              ),
1351
-              '#eval input' => array(
1350
+                ),
1351
+                '#eval input' => array(
1352 1352
                 'token_rules_input_evaluator' => array(
1353
-                  'code' => array(
1353
+                    'code' => array(
1354 1354
                     '0' => ':global',
1355
-                  ),
1355
+                    ),
1356
+                ),
1356 1357
                 ),
1357
-              ),
1358 1358
             ),
1359 1359
             '#type' => 'condition',
1360
-          ),
1361
-          '4' => array(
1360
+            ),
1361
+            '4' => array(
1362 1362
             '#weight' => 0.0,
1363 1363
             '#info' => array(
1364
-              'label' => 'PHP code: node locked',
1365
-              'label callback' => FALSE,
1366
-              'module' => 'PHP',
1367
-              'eval input' => array(
1364
+                'label' => 'PHP code: node locked',
1365
+                'label callback' => FALSE,
1366
+                'module' => 'PHP',
1367
+                'eval input' => array(
1368 1368
                 '0' => 'code',
1369
-              ),
1369
+                ),
1370 1370
             ),
1371 1371
             '#name' => 'rules_condition_custom_php',
1372 1372
             '#type' => 'condition',
1373 1373
             '#settings' => array(
1374
-              'code' => 'return $node_unchanged->comment == 2 && $node->comment == 1;',
1375
-              'vars' => array(
1374
+                'code' => 'return $node_unchanged->comment == 2 && $node->comment == 1;',
1375
+                'vars' => array(
1376 1376
                 '0' => 'node',
1377 1377
                 '1' => 'node_unchanged',
1378
-              ),
1379
-              '#eval input' => array(
1378
+                ),
1379
+                '#eval input' => array(
1380 1380
                 'token_rules_input_evaluator' => array(
1381
-                  'code' => array(
1381
+                    'code' => array(
1382 1382
                     '0' => ':global',
1383
-                  ),
1383
+                    ),
1384
+                ),
1384 1385
                 ),
1385
-              ),
1386 1386
             ),
1387
-          ),
1387
+            ),
1388 1388
         ),
1389 1389
         '#actions' => array(
1390
-          '0' => array(
1390
+            '0' => array(
1391 1391
             '#info' => array(
1392
-              'label' => 'Notify moderators via email',
1393
-              'module' => 'BOINC core',
1394
-              'eval input' => array(
1392
+                'label' => 'Notify moderators via email',
1393
+                'module' => 'BOINC core',
1394
+                'eval input' => array(
1395 1395
                 '0' => 'subject',
1396 1396
                 '1' => 'message',
1397 1397
                 '2' => 'from',
1398
-              ),
1398
+                ),
1399 1399
             ),
1400 1400
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1401 1401
             '#settings' => array(
1402
-              'from' => '',
1403
-              'subject' => 'Forum topic at [:global:site-name] locked by moderator/admin',
1404
-              'message' => "[node:type] topic '[node:title]' has been locked by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1405
-              '#eval input' => array(
1402
+                'from' => '',
1403
+                'subject' => 'Forum topic at [:global:site-name] locked by moderator/admin',
1404
+                'message' => "[node:type] topic '[node:title]' has been locked by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1405
+                '#eval input' => array(
1406 1406
                 'token_rules_input_evaluator' => array(
1407
-                  'subject' => array(
1407
+                    'subject' => array(
1408 1408
                     '0' => ':global',
1409
-                  ),
1410
-                  'message' => array(
1409
+                    ),
1410
+                    'message' => array(
1411 1411
                     '0' => 'node',
1412 1412
                     '1' => 'user',
1413 1413
                     '2' => ':global',
1414
-                  ),
1415
-                  'from' => array(
1414
+                    ),
1415
+                    'from' => array(
1416 1416
                     '0' => ':global',
1417
-                  ),
1417
+                    ),
1418 1418
                 ),
1419 1419
                 'rules_input_evaluator_php' => array(
1420
-                  'message' => array(
1420
+                    'message' => array(
1421 1421
                     '0' => 'node',
1422
-                  ),
1422
+                    ),
1423
+                ),
1423 1424
                 ),
1424
-              ),
1425 1425
             ),
1426 1426
             '#type' => 'action',
1427 1427
             '#weight' => 0.0,
1428
-          ),
1428
+            ),
1429 1429
         ),
1430 1430
         '#version' => 6003,
1431
-      ),
1432
-      'rules_forum_topic_marked_sticky_by_moderator_admin' => array(
1431
+        ),
1432
+        'rules_forum_topic_marked_sticky_by_moderator_admin' => array(
1433 1433
         '#type' => 'rule',
1434 1434
         '#set' => 'event_node_update',
1435 1435
         '#label' => 'Forum topic marked sticky by moderator/admin',
1436 1436
         '#active' => 1,
1437 1437
         '#weight' => '0',
1438 1438
         '#categories' => array(
1439
-          '0' => 'boinc_standard',
1440
-          '1' => 'moderator notification',
1439
+            '0' => 'boinc_standard',
1440
+            '1' => 'moderator notification',
1441 1441
         ),
1442 1442
         '#status' => 'default',
1443 1443
         '#conditions' => array(
1444
-          '0' => array(
1444
+            '0' => array(
1445 1445
             '#type' => 'condition',
1446 1446
             '#settings' => array(
1447
-              'roles' => array(
1447
+                'roles' => array(
1448 1448
                 '0' => 3519698132,
1449 1449
                 '1' => 1271379760,
1450
-              ),
1451
-              'operation' => 'OR',
1452
-              '#argument map' => array(
1450
+                ),
1451
+                'operation' => 'OR',
1452
+                '#argument map' => array(
1453 1453
                 'user' => 'user',
1454
-              ),
1454
+                ),
1455 1455
             ),
1456 1456
             '#name' => 'rules_condition_user_hasrole',
1457 1457
             '#info' => array(
1458
-              'label' => 'User has role(s): administrator or moderator',
1459
-              'label callback' => FALSE,
1460
-              'arguments' => array(
1458
+                'label' => 'User has role(s): administrator or moderator',
1459
+                'label callback' => FALSE,
1460
+                'arguments' => array(
1461 1461
                 'user' => array(
1462
-                  'type' => 'user',
1463
-                  'label' => 'User',
1462
+                    'type' => 'user',
1463
+                    'label' => 'User',
1464 1464
                 ),
1465
-              ),
1466
-              'module' => 'User',
1465
+                ),
1466
+                'module' => 'User',
1467 1467
             ),
1468 1468
             '#weight' => 0.0,
1469
-          ),
1470
-          '1' => array(
1469
+            ),
1470
+            '1' => array(
1471 1471
             '#weight' => 0.0,
1472 1472
             '0' => array(
1473
-              '#weight' => 0.0,
1474
-              '#type' => 'condition',
1475
-              '#settings' => array(
1473
+                '#weight' => 0.0,
1474
+                '#type' => 'condition',
1475
+                '#settings' => array(
1476 1476
                 'type' => array(
1477
-                  'forum' => 'forum',
1477
+                    'forum' => 'forum',
1478 1478
                 ),
1479 1479
                 '#argument map' => array(
1480
-                  'node' => 'node',
1480
+                    'node' => 'node',
1481
+                ),
1481 1482
                 ),
1482
-              ),
1483
-              '#name' => 'rules_condition_content_is_type',
1484
-              '#info' => array(
1483
+                '#name' => 'rules_condition_content_is_type',
1484
+                '#info' => array(
1485 1485
                 'label' => 'Updated content is Forum topic',
1486 1486
                 'arguments' => array(
1487
-                  'node' => array(
1487
+                    'node' => array(
1488 1488
                     'type' => 'node',
1489 1489
                     'label' => 'Content',
1490
-                  ),
1490
+                    ),
1491 1491
                 ),
1492 1492
                 'module' => 'Node',
1493
-              ),
1493
+                ),
1494 1494
             ),
1495 1495
             '#type' => 'OR',
1496 1496
             '1' => array(
1497
-              '#type' => 'condition',
1498
-              '#settings' => array(
1497
+                '#type' => 'condition',
1498
+                '#settings' => array(
1499 1499
                 'type' => array(
1500
-                  'team_forum' => 'team_forum',
1500
+                    'team_forum' => 'team_forum',
1501 1501
                 ),
1502 1502
                 '#argument map' => array(
1503
-                  'node' => 'node',
1503
+                    'node' => 'node',
1504 1504
                 ),
1505
-              ),
1506
-              '#name' => 'rules_condition_content_is_type',
1507
-              '#info' => array(
1505
+                ),
1506
+                '#name' => 'rules_condition_content_is_type',
1507
+                '#info' => array(
1508 1508
                 'label' => 'Updated content is Team forum topic',
1509 1509
                 'arguments' => array(
1510
-                  'node' => array(
1510
+                    'node' => array(
1511 1511
                     'type' => 'node',
1512 1512
                     'label' => 'Content',
1513
-                  ),
1513
+                    ),
1514 1514
                 ),
1515 1515
                 'module' => 'Node',
1516
-              ),
1517
-              '#weight' => 0.0,
1516
+                ),
1517
+                '#weight' => 0.0,
1518 1518
             ),
1519
-          ),
1520
-          '3' => array(
1519
+            ),
1520
+            '3' => array(
1521 1521
             '#weight' => 0.0,
1522 1522
             '#info' => array(
1523
-              'label' => 'PHP code: node content unchanged',
1524
-              'label callback' => FALSE,
1525
-              'module' => 'PHP',
1526
-              'eval input' => array(
1523
+                'label' => 'PHP code: node content unchanged',
1524
+                'label callback' => FALSE,
1525
+                'module' => 'PHP',
1526
+                'eval input' => array(
1527 1527
                 '0' => 'code',
1528
-              ),
1528
+                ),
1529 1529
             ),
1530 1530
             '#name' => 'rules_condition_custom_php',
1531 1531
             '#settings' => array(
1532
-              'code' => 'return $node->body == $node_unchanged->body;',
1533
-              'vars' => array(
1532
+                'code' => 'return $node->body == $node_unchanged->body;',
1533
+                'vars' => array(
1534 1534
                 '0' => 'node',
1535 1535
                 '1' => 'node_unchanged',
1536
-              ),
1537
-              '#eval input' => array(
1536
+                ),
1537
+                '#eval input' => array(
1538 1538
                 'token_rules_input_evaluator' => array(
1539
-                  'code' => array(
1539
+                    'code' => array(
1540 1540
                     '0' => ':global',
1541
-                  ),
1541
+                    ),
1542
+                ),
1542 1543
                 ),
1543
-              ),
1544 1544
             ),
1545 1545
             '#type' => 'condition',
1546
-          ),
1547
-          '4' => array(
1546
+            ),
1547
+            '4' => array(
1548 1548
             '#weight' => 0.0,
1549 1549
             '#info' => array(
1550
-              'label' => 'PHP code: node made sticky',
1551
-              'label callback' => FALSE,
1552
-              'module' => 'PHP',
1553
-              'eval input' => array(
1550
+                'label' => 'PHP code: node made sticky',
1551
+                'label callback' => FALSE,
1552
+                'module' => 'PHP',
1553
+                'eval input' => array(
1554 1554
                 '0' => 'code',
1555
-              ),
1555
+                ),
1556 1556
             ),
1557 1557
             '#name' => 'rules_condition_custom_php',
1558 1558
             '#type' => 'condition',
1559 1559
             '#settings' => array(
1560
-              'code' => 'return $node_unchanged->sticky == 0 && $node->sticky == 1;',
1561
-              'vars' => array(
1560
+                'code' => 'return $node_unchanged->sticky == 0 && $node->sticky == 1;',
1561
+                'vars' => array(
1562 1562
                 '0' => 'node',
1563 1563
                 '1' => 'node_unchanged',
1564
-              ),
1565
-              '#eval input' => array(
1564
+                ),
1565
+                '#eval input' => array(
1566 1566
                 'token_rules_input_evaluator' => array(
1567
-                  'code' => array(
1567
+                    'code' => array(
1568 1568
                     '0' => ':global',
1569
-                  ),
1569
+                    ),
1570 1570
                 ),
1571
-              ),
1571
+                ),
1572
+            ),
1572 1573
             ),
1573
-          ),
1574 1574
         ),
1575 1575
         '#actions' => array(
1576
-          '0' => array(
1576
+            '0' => array(
1577 1577
             '#info' => array(
1578
-              'label' => 'Notify moderators via email',
1579
-              'module' => 'BOINC core',
1580
-              'eval input' => array(
1578
+                'label' => 'Notify moderators via email',
1579
+                'module' => 'BOINC core',
1580
+                'eval input' => array(
1581 1581
                 '0' => 'subject',
1582 1582
                 '1' => 'message',
1583 1583
                 '2' => 'from',
1584
-              ),
1584
+                ),
1585 1585
             ),
1586 1586
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1587 1587
             '#settings' => array(
1588
-              'from' => '',
1589
-              'subject' => 'Forum topic at [:global:site-name] marked sticky by moderator/admin',
1590
-              'message' => "[node:type] topic '[node:title]' has been marked sticky by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1591
-              '#eval input' => array(
1588
+                'from' => '',
1589
+                'subject' => 'Forum topic at [:global:site-name] marked sticky by moderator/admin',
1590
+                'message' => "[node:type] topic '[node:title]' has been marked sticky by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1591
+                '#eval input' => array(
1592 1592
                 'token_rules_input_evaluator' => array(
1593
-                  'subject' => array(
1593
+                    'subject' => array(
1594 1594
                     '0' => ':global',
1595
-                  ),
1596
-                  'message' => array(
1595
+                    ),
1596
+                    'message' => array(
1597 1597
                     '0' => 'node',
1598 1598
                     '1' => 'user',
1599 1599
                     '2' => ':global',
1600
-                  ),
1601
-                  'from' => array(
1600
+                    ),
1601
+                    'from' => array(
1602 1602
                     '0' => ':global',
1603
-                  ),
1603
+                    ),
1604 1604
                 ),
1605 1605
                 'rules_input_evaluator_php' => array(
1606
-                  'message' => array(
1606
+                    'message' => array(
1607 1607
                     '0' => 'node',
1608
-                  ),
1608
+                    ),
1609
+                ),
1609 1610
                 ),
1610
-              ),
1611 1611
             ),
1612 1612
             '#type' => 'action',
1613 1613
             '#weight' => 0.0,
1614
-          ),
1614
+            ),
1615 1615
         ),
1616 1616
         '#version' => 6003,
1617
-      ),
1618
-      'rules_forum_topic_marked_unsticky_by_moderator_admin' => array(
1617
+        ),
1618
+        'rules_forum_topic_marked_unsticky_by_moderator_admin' => array(
1619 1619
         '#type' => 'rule',
1620 1620
         '#set' => 'event_node_update',
1621 1621
         '#label' => 'Forum topic marked unsticky by moderator/admin',
1622 1622
         '#active' => 1,
1623 1623
         '#weight' => '0',
1624 1624
         '#categories' => array(
1625
-          '0' => 'boinc_standard',
1626
-          '1' => 'moderator notification',
1625
+            '0' => 'boinc_standard',
1626
+            '1' => 'moderator notification',
1627 1627
         ),
1628 1628
         '#status' => 'default',
1629 1629
         '#conditions' => array(
1630
-          '0' => array(
1630
+            '0' => array(
1631 1631
             '#type' => 'condition',
1632 1632
             '#settings' => array(
1633
-              'roles' => array(
1633
+                'roles' => array(
1634 1634
                 '0' => 3519698132,
1635 1635
                 '1' => 1271379760,
1636
-              ),
1637
-              'operation' => 'OR',
1638
-              '#argument map' => array(
1636
+                ),
1637
+                'operation' => 'OR',
1638
+                '#argument map' => array(
1639 1639
                 'user' => 'user',
1640
-              ),
1640
+                ),
1641 1641
             ),
1642 1642
             '#name' => 'rules_condition_user_hasrole',
1643 1643
             '#info' => array(
1644
-              'label' => 'User has role(s): administrator or moderator',
1645
-              'label callback' => FALSE,
1646
-              'arguments' => array(
1644
+                'label' => 'User has role(s): administrator or moderator',
1645
+                'label callback' => FALSE,
1646
+                'arguments' => array(
1647 1647
                 'user' => array(
1648
-                  'type' => 'user',
1649
-                  'label' => 'User',
1648
+                    'type' => 'user',
1649
+                    'label' => 'User',
1650
+                ),
1650 1651
                 ),
1651
-              ),
1652
-              'module' => 'User',
1652
+                'module' => 'User',
1653 1653
             ),
1654 1654
             '#weight' => 0.0,
1655
-          ),
1656
-          '1' => array(
1655
+            ),
1656
+            '1' => array(
1657 1657
             '#weight' => 0.0,
1658 1658
             '0' => array(
1659
-              '#weight' => 0.0,
1660
-              '#type' => 'condition',
1661
-              '#settings' => array(
1659
+                '#weight' => 0.0,
1660
+                '#type' => 'condition',
1661
+                '#settings' => array(
1662 1662
                 'type' => array(
1663
-                  'forum' => 'forum',
1663
+                    'forum' => 'forum',
1664 1664
                 ),
1665 1665
                 '#argument map' => array(
1666
-                  'node' => 'node',
1666
+                    'node' => 'node',
1667 1667
                 ),
1668
-              ),
1669
-              '#name' => 'rules_condition_content_is_type',
1670
-              '#info' => array(
1668
+                ),
1669
+                '#name' => 'rules_condition_content_is_type',
1670
+                '#info' => array(
1671 1671
                 'label' => 'Updated content is Forum topic',
1672 1672
                 'arguments' => array(
1673
-                  'node' => array(
1673
+                    'node' => array(
1674 1674
                     'type' => 'node',
1675 1675
                     'label' => 'Content',
1676
-                  ),
1676
+                    ),
1677 1677
                 ),
1678 1678
                 'module' => 'Node',
1679
-              ),
1679
+                ),
1680 1680
             ),
1681 1681
             '#type' => 'OR',
1682 1682
             '1' => array(
1683
-              '#type' => 'condition',
1684
-              '#settings' => array(
1683
+                '#type' => 'condition',
1684
+                '#settings' => array(
1685 1685
                 'type' => array(
1686
-                  'team_forum' => 'team_forum',
1686
+                    'team_forum' => 'team_forum',
1687 1687
                 ),
1688 1688
                 '#argument map' => array(
1689
-                  'node' => 'node',
1689
+                    'node' => 'node',
1690
+                ),
1690 1691
                 ),
1691
-              ),
1692
-              '#name' => 'rules_condition_content_is_type',
1693
-              '#info' => array(
1692
+                '#name' => 'rules_condition_content_is_type',
1693
+                '#info' => array(
1694 1694
                 'label' => 'Updated content is Team forum topic',
1695 1695
                 'arguments' => array(
1696
-                  'node' => array(
1696
+                    'node' => array(
1697 1697
                     'type' => 'node',
1698 1698
                     'label' => 'Content',
1699
-                  ),
1699
+                    ),
1700 1700
                 ),
1701 1701
                 'module' => 'Node',
1702
-              ),
1703
-              '#weight' => 0.0,
1702
+                ),
1703
+                '#weight' => 0.0,
1704
+            ),
1704 1705
             ),
1705
-          ),
1706
-          '3' => array(
1706
+            '3' => array(
1707 1707
             '#weight' => 0.0,
1708 1708
             '#info' => array(
1709
-              'label' => 'PHP code: node content unchanged',
1710
-              'label callback' => FALSE,
1711
-              'module' => 'PHP',
1712
-              'eval input' => array(
1709
+                'label' => 'PHP code: node content unchanged',
1710
+                'label callback' => FALSE,
1711
+                'module' => 'PHP',
1712
+                'eval input' => array(
1713 1713
                 '0' => 'code',
1714
-              ),
1714
+                ),
1715 1715
             ),
1716 1716
             '#name' => 'rules_condition_custom_php',
1717 1717
             '#settings' => array(
1718
-              'code' => 'return $node->body == $node_unchanged->body;',
1719
-              'vars' => array(
1718
+                'code' => 'return $node->body == $node_unchanged->body;',
1719
+                'vars' => array(
1720 1720
                 '0' => 'node',
1721 1721
                 '1' => 'node_unchanged',
1722
-              ),
1723
-              '#eval input' => array(
1722
+                ),
1723
+                '#eval input' => array(
1724 1724
                 'token_rules_input_evaluator' => array(
1725
-                  'code' => array(
1725
+                    'code' => array(
1726 1726
                     '0' => ':global',
1727
-                  ),
1727
+                    ),
1728
+                ),
1728 1729
                 ),
1729
-              ),
1730 1730
             ),
1731 1731
             '#type' => 'condition',
1732
-          ),
1733
-          '4' => array(
1732
+            ),
1733
+            '4' => array(
1734 1734
             '#weight' => 0.0,
1735 1735
             '#info' => array(
1736
-              'label' => 'PHP code: node made sticky',
1737
-              'label callback' => FALSE,
1738
-              'module' => 'PHP',
1739
-              'eval input' => array(
1736
+                'label' => 'PHP code: node made sticky',
1737
+                'label callback' => FALSE,
1738
+                'module' => 'PHP',
1739
+                'eval input' => array(
1740 1740
                 '0' => 'code',
1741
-              ),
1741
+                ),
1742 1742
             ),
1743 1743
             '#name' => 'rules_condition_custom_php',
1744 1744
             '#type' => 'condition',
1745 1745
             '#settings' => array(
1746
-              'code' => 'return $node_unchanged->sticky == 1 && $node->sticky == 0;',
1747
-              'vars' => array(
1746
+                'code' => 'return $node_unchanged->sticky == 1 && $node->sticky == 0;',
1747
+                'vars' => array(
1748 1748
                 '0' => 'node',
1749 1749
                 '1' => 'node_unchanged',
1750
-              ),
1751
-              '#eval input' => array(
1750
+                ),
1751
+                '#eval input' => array(
1752 1752
                 'token_rules_input_evaluator' => array(
1753
-                  'code' => array(
1753
+                    'code' => array(
1754 1754
                     '0' => ':global',
1755
-                  ),
1755
+                    ),
1756
+                ),
1756 1757
                 ),
1757
-              ),
1758 1758
             ),
1759
-          ),
1759
+            ),
1760 1760
         ),
1761 1761
         '#actions' => array(
1762
-          '0' => array(
1762
+            '0' => array(
1763 1763
             '#info' => array(
1764
-              'label' => 'Notify moderators via email',
1765
-              'module' => 'BOINC core',
1766
-              'eval input' => array(
1764
+                'label' => 'Notify moderators via email',
1765
+                'module' => 'BOINC core',
1766
+                'eval input' => array(
1767 1767
                 '0' => 'subject',
1768 1768
                 '1' => 'message',
1769 1769
                 '2' => 'from',
1770
-              ),
1770
+                ),
1771 1771
             ),
1772 1772
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1773 1773
             '#settings' => array(
1774
-              'from' => '',
1775
-              'subject' => 'Forum topic at [:global:site-name] marked unsticky by moderator/admin',
1776
-              'message' => "[node:type] topic '[node:title]' has been marked unsticky by moderator/admin [user:display-name].\r\n\\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1777
-              '#eval input' => array(
1774
+                'from' => '',
1775
+                'subject' => 'Forum topic at [:global:site-name] marked unsticky by moderator/admin',
1776
+                'message' => "[node:type] topic '[node:title]' has been marked unsticky by moderator/admin [user:display-name].\r\n\\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1777
+                '#eval input' => array(
1778 1778
                 'token_rules_input_evaluator' => array(
1779
-                  'subject' => array(
1779
+                    'subject' => array(
1780 1780
                     '0' => ':global',
1781
-                  ),
1782
-                  'message' => array(
1781
+                    ),
1782
+                    'message' => array(
1783 1783
                     '0' => 'node',
1784 1784
                     '1' => 'user',
1785 1785
                     '2' => ':global',
1786
-                  ),
1787
-                  'from' => array(
1786
+                    ),
1787
+                    'from' => array(
1788 1788
                     '0' => ':global',
1789
-                  ),
1789
+                    ),
1790 1790
                 ),
1791 1791
                 'rules_input_evaluator_php' => array(
1792
-                  'message' => array(
1792
+                    'message' => array(
1793 1793
                     '0' => 'node',
1794
-                  ),
1794
+                    ),
1795
+                ),
1795 1796
                 ),
1796
-              ),
1797 1797
             ),
1798 1798
             '#type' => 'action',
1799 1799
             '#weight' => 0.0,
1800
-          ),
1800
+            ),
1801 1801
         ),
1802 1802
         '#version' => 6003,
1803
-      ),
1804
-      'rules_forum_topic_nenamed_title_by_moderator_or_admin' => array(
1803
+        ),
1804
+        'rules_forum_topic_nenamed_title_by_moderator_or_admin' => array(
1805 1805
         '#type' => 'rule',
1806 1806
         '#set' => 'event_node_update',
1807 1807
         '#label' => 'Forum topic renamed title by moderator or admin',
1808 1808
         '#active' => 1,
1809 1809
         '#weight' => '0',
1810 1810
         '#categories' => array(
1811
-          '0' => 'boinc_standard',
1812
-          '1' => 'moderator notification',
1811
+            '0' => 'boinc_standard',
1812
+            '1' => 'moderator notification',
1813 1813
         ),
1814 1814
         '#status' => 'default',
1815 1815
         '#conditions' => array(
1816
-          '0' => array(
1816
+            '0' => array(
1817 1817
             '#weight' => 0.0,
1818 1818
             '#type' => 'condition',
1819 1819
             '#settings' => array(
1820
-              'roles' => array(
1820
+                'roles' => array(
1821 1821
                 '0' => 3519698132,
1822 1822
                 '1' => 1271379760,
1823
-              ),
1824
-              'operation' => 'OR',
1825
-              '#argument map' => array(
1823
+                ),
1824
+                'operation' => 'OR',
1825
+                '#argument map' => array(
1826 1826
                 'user' => 'user',
1827
-              ),
1827
+                ),
1828 1828
             ),
1829 1829
             '#name' => 'rules_condition_user_hasrole',
1830 1830
             '#info' => array(
1831
-              'label' => 'User has role(s): administrator or moderator',
1832
-              'label callback' => FALSE,
1833
-              'arguments' => array(
1831
+                'label' => 'User has role(s): administrator or moderator',
1832
+                'label callback' => FALSE,
1833
+                'arguments' => array(
1834 1834
                 'user' => array(
1835
-                  'type' => 'user',
1836
-                  'label' => 'User',
1835
+                    'type' => 'user',
1836
+                    'label' => 'User',
1837 1837
                 ),
1838
-              ),
1839
-              'module' => 'User',
1838
+                ),
1839
+                'module' => 'User',
1840
+            ),
1840 1841
             ),
1841
-          ),
1842
-          '1' => array(
1842
+            '1' => array(
1843 1843
             '#weight' => 0.0,
1844 1844
             '0' => array(
1845
-              '#weight' => 0.0,
1846
-              '#info' => array(
1845
+                '#weight' => 0.0,
1846
+                '#info' => array(
1847 1847
                 'label' => 'Updated content is Forum topic',
1848 1848
                 'arguments' => array(
1849
-                  'node' => array(
1849
+                    'node' => array(
1850 1850
                     'type' => 'node',
1851 1851
                     'label' => 'Content',
1852
-                  ),
1852
+                    ),
1853 1853
                 ),
1854 1854
                 'module' => 'Node',
1855
-              ),
1856
-              '#name' => 'rules_condition_content_is_type',
1857
-              '#settings' => array(
1855
+                ),
1856
+                '#name' => 'rules_condition_content_is_type',
1857
+                '#settings' => array(
1858 1858
                 'type' => array(
1859
-                  'forum' => 'forum',
1859
+                    'forum' => 'forum',
1860 1860
                 ),
1861 1861
                 '#argument map' => array(
1862
-                  'node' => 'node',
1862
+                    'node' => 'node',
1863 1863
                 ),
1864
-              ),
1865
-              '#type' => 'condition',
1864
+                ),
1865
+                '#type' => 'condition',
1866 1866
             ),
1867 1867
             '#type' => 'OR',
1868 1868
             '1' => array(
1869
-              '#type' => 'condition',
1870
-              '#settings' => array(
1869
+                '#type' => 'condition',
1870
+                '#settings' => array(
1871 1871
                 'type' => array(
1872
-                  'team_forum' => 'team_forum',
1872
+                    'team_forum' => 'team_forum',
1873 1873
                 ),
1874 1874
                 '#argument map' => array(
1875
-                  'node' => 'node',
1875
+                    'node' => 'node',
1876
+                ),
1876 1877
                 ),
1877
-              ),
1878
-              '#name' => 'rules_condition_content_is_type',
1879
-              '#info' => array(
1878
+                '#name' => 'rules_condition_content_is_type',
1879
+                '#info' => array(
1880 1880
                 'label' => 'Updated content is Team forum topic',
1881 1881
                 'arguments' => array(
1882
-                  'node' => array(
1882
+                    'node' => array(
1883 1883
                     'type' => 'node',
1884 1884
                     'label' => 'Content',
1885
-                  ),
1885
+                    ),
1886 1886
                 ),
1887 1887
                 'module' => 'Node',
1888
-              ),
1889
-              '#weight' => 0.0,
1888
+                ),
1889
+                '#weight' => 0.0,
1890 1890
             ),
1891
-          ),
1892
-          '2' => array(
1891
+            ),
1892
+            '2' => array(
1893 1893
             '#weight' => 0.0,
1894 1894
             '#info' => array(
1895
-              'label' => 'PHP code: title changed',
1896
-              'label callback' => FALSE,
1897
-              'module' => 'PHP',
1898
-              'eval input' => array(
1895
+                'label' => 'PHP code: title changed',
1896
+                'label callback' => FALSE,
1897
+                'module' => 'PHP',
1898
+                'eval input' => array(
1899 1899
                 '0' => 'code',
1900
-              ),
1900
+                ),
1901 1901
             ),
1902 1902
             '#name' => 'rules_condition_custom_php',
1903 1903
             '#settings' => array(
1904
-              'code' => 'return ($node->title != $node_unchanged->title);',
1905
-              'vars' => array(
1904
+                'code' => 'return ($node->title != $node_unchanged->title);',
1905
+                'vars' => array(
1906 1906
                 '0' => 'node',
1907 1907
                 '1' => 'node_unchanged',
1908
-              ),
1909
-              '#eval input' => array(
1908
+                ),
1909
+                '#eval input' => array(
1910 1910
                 'token_rules_input_evaluator' => array(
1911
-                  'code' => array(
1911
+                    'code' => array(
1912 1912
                     '0' => ':global',
1913
-                  ),
1913
+                    ),
1914
+                ),
1914 1915
                 ),
1915
-              ),
1916 1916
             ),
1917 1917
             '#type' => 'condition',
1918
-          ),
1918
+            ),
1919 1919
         ),
1920 1920
         '#actions' => array(
1921
-          '0' => array(
1921
+            '0' => array(
1922 1922
             '#type' => 'action',
1923 1923
             '#settings' => array(
1924
-              'from' => '',
1925
-              'subject' => 'Forum topic at [:global:site-name] renamed by moderator/admin',
1926
-              'message' => "[node:type] topic '[node:title]' has its title renamed by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1927
-              '#eval input' => array(
1924
+                'from' => '',
1925
+                'subject' => 'Forum topic at [:global:site-name] renamed by moderator/admin',
1926
+                'message' => "[node:type] topic '[node:title]' has its title renamed by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
1927
+                '#eval input' => array(
1928 1928
                 'token_rules_input_evaluator' => array(
1929
-                  'subject' => array(
1929
+                    'subject' => array(
1930 1930
                     '0' => ':global',
1931
-                  ),
1932
-                  'message' => array(
1931
+                    ),
1932
+                    'message' => array(
1933 1933
                     '0' => 'node',
1934 1934
                     '1' => 'user',
1935 1935
                     '2' => ':global',
1936
-                  ),
1937
-                  'from' => array(
1936
+                    ),
1937
+                    'from' => array(
1938 1938
                     '0' => ':global',
1939
-                  ),
1939
+                    ),
1940 1940
                 ),
1941 1941
                 'rules_input_evaluator_php' => array(
1942
-                  'message' => array(
1942
+                    'message' => array(
1943 1943
                     '0' => 'node',
1944
-                  ),
1944
+                    ),
1945
+                ),
1945 1946
                 ),
1946
-              ),
1947 1947
             ),
1948 1948
             '#name' => 'boinccore_rules_action_mail_to_moderators',
1949 1949
             '#info' => array(
1950
-              'label' => 'Notify moderators via email',
1951
-              'module' => 'BOINC core',
1952
-              'eval input' => array(
1950
+                'label' => 'Notify moderators via email',
1951
+                'module' => 'BOINC core',
1952
+                'eval input' => array(
1953 1953
                 '0' => 'subject',
1954 1954
                 '1' => 'message',
1955 1955
                 '2' => 'from',
1956
-              ),
1956
+                ),
1957 1957
             ),
1958 1958
             '#weight' => 0.0,
1959
-          ),
1959
+            ),
1960 1960
         ),
1961 1961
         '#version' => 6003,
1962
-      ),
1963
-      'rules_forum_topic_unlocked_by_moderator_admin' => array(
1962
+        ),
1963
+        'rules_forum_topic_unlocked_by_moderator_admin' => array(
1964 1964
         '#type' => 'rule',
1965 1965
         '#set' => 'event_node_update',
1966 1966
         '#label' => 'Forum topic unlocked by moderator/admin',
1967 1967
         '#active' => 1,
1968 1968
         '#weight' => '0',
1969 1969
         '#categories' => array(
1970
-          '0' => 'boinc_standard',
1971
-          '1' => 'moderator notification',
1970
+            '0' => 'boinc_standard',
1971
+            '1' => 'moderator notification',
1972 1972
         ),
1973 1973
         '#status' => 'default',
1974 1974
         '#conditions' => array(
1975
-          '0' => array(
1975
+            '0' => array(
1976 1976
             '#type' => 'condition',
1977 1977
             '#settings' => array(
1978
-              'roles' => array(
1978
+                'roles' => array(
1979 1979
                 '0' => 3519698132,
1980 1980
                 '1' => 1271379760,
1981
-              ),
1982
-              'operation' => 'OR',
1983
-              '#argument map' => array(
1981
+                ),
1982
+                'operation' => 'OR',
1983
+                '#argument map' => array(
1984 1984
                 'user' => 'user',
1985
-              ),
1985
+                ),
1986 1986
             ),
1987 1987
             '#name' => 'rules_condition_user_hasrole',
1988 1988
             '#info' => array(
1989
-              'label' => 'User has role(s): administrator or moderator',
1990
-              'label callback' => FALSE,
1991
-              'arguments' => array(
1989
+                'label' => 'User has role(s): administrator or moderator',
1990
+                'label callback' => FALSE,
1991
+                'arguments' => array(
1992 1992
                 'user' => array(
1993
-                  'type' => 'user',
1994
-                  'label' => 'User',
1993
+                    'type' => 'user',
1994
+                    'label' => 'User',
1995 1995
                 ),
1996
-              ),
1997
-              'module' => 'User',
1996
+                ),
1997
+                'module' => 'User',
1998 1998
             ),
1999 1999
             '#weight' => 0.0,
2000
-          ),
2001
-          '1' => array(
2000
+            ),
2001
+            '1' => array(
2002 2002
             '#weight' => 0.0,
2003 2003
             '0' => array(
2004
-              '#weight' => 0.0,
2005
-              '#type' => 'condition',
2006
-              '#settings' => array(
2004
+                '#weight' => 0.0,
2005
+                '#type' => 'condition',
2006
+                '#settings' => array(
2007 2007
                 'type' => array(
2008
-                  'forum' => 'forum',
2008
+                    'forum' => 'forum',
2009 2009
                 ),
2010 2010
                 '#argument map' => array(
2011
-                  'node' => 'node',
2011
+                    'node' => 'node',
2012 2012
                 ),
2013
-              ),
2014
-              '#name' => 'rules_condition_content_is_type',
2015
-              '#info' => array(
2013
+                ),
2014
+                '#name' => 'rules_condition_content_is_type',
2015
+                '#info' => array(
2016 2016
                 'label' => 'Updated content is Forum topic',
2017 2017
                 'arguments' => array(
2018
-                  'node' => array(
2018
+                    'node' => array(
2019 2019
                     'type' => 'node',
2020 2020
                     'label' => 'Content',
2021
-                  ),
2021
+                    ),
2022 2022
                 ),
2023 2023
                 'module' => 'Node',
2024
-              ),
2024
+                ),
2025 2025
             ),
2026 2026
             '#type' => 'OR',
2027 2027
             '1' => array(
2028
-              '#type' => 'condition',
2029
-              '#settings' => array(
2028
+                '#type' => 'condition',
2029
+                '#settings' => array(
2030 2030
                 'type' => array(
2031
-                  'team_forum' => 'team_forum',
2031
+                    'team_forum' => 'team_forum',
2032 2032
                 ),
2033 2033
                 '#argument map' => array(
2034
-                  'node' => 'node',
2034
+                    'node' => 'node',
2035 2035
                 ),
2036
-              ),
2037
-              '#name' => 'rules_condition_content_is_type',
2038
-              '#info' => array(
2036
+                ),
2037
+                '#name' => 'rules_condition_content_is_type',
2038
+                '#info' => array(
2039 2039
                 'label' => 'Updated content is Team forum topic',
2040 2040
                 'arguments' => array(
2041
-                  'node' => array(
2041
+                    'node' => array(
2042 2042
                     'type' => 'node',
2043 2043
                     'label' => 'Content',
2044
-                  ),
2044
+                    ),
2045 2045
                 ),
2046 2046
                 'module' => 'Node',
2047
-              ),
2048
-              '#weight' => 0.0,
2047
+                ),
2048
+                '#weight' => 0.0,
2049 2049
             ),
2050
-          ),
2051
-          '3' => array(
2050
+            ),
2051
+            '3' => array(
2052 2052
             '#weight' => 0.0,
2053 2053
             '#info' => array(
2054
-              'label' => 'PHP code: node content unchanged',
2055
-              'label callback' => FALSE,
2056
-              'module' => 'PHP',
2057
-              'eval input' => array(
2054
+                'label' => 'PHP code: node content unchanged',
2055
+                'label callback' => FALSE,
2056
+                'module' => 'PHP',
2057
+                'eval input' => array(
2058 2058
                 '0' => 'code',
2059
-              ),
2059
+                ),
2060 2060
             ),
2061 2061
             '#name' => 'rules_condition_custom_php',
2062 2062
             '#settings' => array(
2063
-              'code' => 'return $node->body == $node_unchanged->body;',
2064
-              'vars' => array(
2063
+                'code' => 'return $node->body == $node_unchanged->body;',
2064
+                'vars' => array(
2065 2065
                 '0' => 'node',
2066 2066
                 '1' => 'node_unchanged',
2067
-              ),
2068
-              '#eval input' => array(
2067
+                ),
2068
+                '#eval input' => array(
2069 2069
                 'token_rules_input_evaluator' => array(
2070
-                  'code' => array(
2070
+                    'code' => array(
2071 2071
                     '0' => ':global',
2072
-                  ),
2072
+                    ),
2073
+                ),
2073 2074
                 ),
2074
-              ),
2075 2075
             ),
2076 2076
             '#type' => 'condition',
2077
-          ),
2078
-          '4' => array(
2077
+            ),
2078
+            '4' => array(
2079 2079
             '#weight' => 0.0,
2080 2080
             '#info' => array(
2081
-              'label' => 'PHP code: node unlocked',
2082
-              'label callback' => FALSE,
2083
-              'module' => 'PHP',
2084
-              'eval input' => array(
2081
+                'label' => 'PHP code: node unlocked',
2082
+                'label callback' => FALSE,
2083
+                'module' => 'PHP',
2084
+                'eval input' => array(
2085 2085
                 '0' => 'code',
2086
-              ),
2086
+                ),
2087 2087
             ),
2088 2088
             '#name' => 'rules_condition_custom_php',
2089 2089
             '#type' => 'condition',
2090 2090
             '#settings' => array(
2091
-              'code' => 'return $node_unchanged->comment == 1 && $node->comment == 2;',
2092
-              'vars' => array(
2091
+                'code' => 'return $node_unchanged->comment == 1 && $node->comment == 2;',
2092
+                'vars' => array(
2093 2093
                 '0' => 'node',
2094 2094
                 '1' => 'node_unchanged',
2095
-              ),
2096
-              '#eval input' => array(
2095
+                ),
2096
+                '#eval input' => array(
2097 2097
                 'token_rules_input_evaluator' => array(
2098
-                  'code' => array(
2098
+                    'code' => array(
2099 2099
                     '0' => ':global',
2100
-                  ),
2100
+                    ),
2101 2101
                 ),
2102
-              ),
2102
+                ),
2103
+            ),
2103 2104
             ),
2104
-          ),
2105 2105
         ),
2106 2106
         '#actions' => array(
2107
-          '0' => array(
2107
+            '0' => array(
2108 2108
             '#info' => array(
2109
-              'label' => 'Notify moderators via email',
2110
-              'module' => 'BOINC core',
2111
-              'eval input' => array(
2109
+                'label' => 'Notify moderators via email',
2110
+                'module' => 'BOINC core',
2111
+                'eval input' => array(
2112 2112
                 '0' => 'subject',
2113 2113
                 '1' => 'message',
2114 2114
                 '2' => 'from',
2115
-              ),
2115
+                ),
2116 2116
             ),
2117 2117
             '#name' => 'boinccore_rules_action_mail_to_moderators',
2118 2118
             '#settings' => array(
2119
-              'from' => '',
2120
-              'subject' => 'Forum topic at [:global:site-name] unlocked by moderator/admin',
2121
-              'message' => "[node:type] topic '[node:title]' has been unlocked by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
2122
-              '#eval input' => array(
2119
+                'from' => '',
2120
+                'subject' => 'Forum topic at [:global:site-name] unlocked by moderator/admin',
2121
+                'message' => "[node:type] topic '[node:title]' has been unlocked by moderator/admin [user:display-name].\r\n\r\nLink: <?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>",
2122
+                '#eval input' => array(
2123 2123
                 'token_rules_input_evaluator' => array(
2124
-                  'subject' => array(
2124
+                    'subject' => array(
2125 2125
                     '0' => ':global',
2126
-                  ),
2127
-                  'message' => array(
2126
+                    ),
2127
+                    'message' => array(
2128 2128
                     '0' => 'node',
2129 2129
                     '1' => 'user',
2130 2130
                     '2' => ':global',
2131
-                  ),
2132
-                  'from' => array(
2131
+                    ),
2132
+                    'from' => array(
2133 2133
                     '0' => ':global',
2134
-                  ),
2134
+                    ),
2135 2135
                 ),
2136 2136
                 'rules_input_evaluator_php' => array(
2137
-                  'message' => array(
2137
+                    'message' => array(
2138 2138
                     '0' => 'node',
2139
-                  ),
2139
+                    ),
2140
+                ),
2140 2141
                 ),
2141
-              ),
2142 2142
             ),
2143 2143
             '#type' => 'action',
2144 2144
             '#weight' => 0.0,
2145
-          ),
2145
+            ),
2146 2146
         ),
2147 2147
         '#version' => 6003,
2148
-      ),
2149
-      'rules_offensive_comment_reported' => array(
2148
+        ),
2149
+        'rules_offensive_comment_reported' => array(
2150 2150
         '#type' => 'rule',
2151 2151
         '#set' => 'event_flag_flagged_abuse_comment',
2152 2152
         '#label' => 'Offensive comment reported',
2153 2153
         '#active' => 1,
2154 2154
         '#weight' => '0',
2155 2155
         '#categories' => array(
2156
-          '0' => 'moderator notification',
2157
-          '1' => 'boinc_standard',
2156
+            '0' => 'moderator notification',
2157
+            '1' => 'boinc_standard',
2158 2158
         ),
2159 2159
         '#status' => 'default',
2160 2160
         '#conditions' => array(),
2161 2161
         '#actions' => array(
2162
-          '1' => array(
2162
+            '1' => array(
2163 2163
             '#info' => array(
2164
-              'label' => 'Notify moderators via email',
2165
-              'module' => 'BOINC core',
2166
-              'eval input' => array(
2164
+                'label' => 'Notify moderators via email',
2165
+                'module' => 'BOINC core',
2166
+                'eval input' => array(
2167 2167
                 '0' => 'subject',
2168 2168
                 '1' => 'message',
2169 2169
                 '2' => 'from',
2170
-              ),
2170
+                ),
2171 2171
             ),
2172 2172
             '#name' => 'boinccore_rules_action_mail_to_moderators',
2173 2173
             '#settings' => array(
2174
-              'from' => '',
2175
-              'subject' => 'Report of offensive [node:type] comment at [:global:site-name]',
2176
-              'message' => "[flagging_user:display-name] has reported the following comment on [node:type] content as being offensive or inappropriate for the [:global:site-name] site:\r\n\r\n<?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]\r\n\r\nTotal reports of this comment: [comment:flag-abuse-comment-count]",
2177
-              '#eval input' => array(
2174
+                'from' => '',
2175
+                'subject' => 'Report of offensive [node:type] comment at [:global:site-name]',
2176
+                'message' => "[flagging_user:display-name] has reported the following comment on [node:type] content as being offensive or inappropriate for the [:global:site-name] site:\r\n\r\n<?php print url('<front>', array('absolute' => TRUE, 'language' => 'en')); ?>/goto/comment/[comment:comment-cid]\r\n\r\nTotal reports of this comment: [comment:flag-abuse-comment-count]",
2177
+                '#eval input' => array(
2178 2178
                 'token_rules_input_evaluator' => array(
2179
-                  'subject' => array(
2179
+                    'subject' => array(
2180 2180
                     '0' => 'node',
2181 2181
                     '1' => ':global',
2182
-                  ),
2183
-                  'message' => array(
2182
+                    ),
2183
+                    'message' => array(
2184 2184
                     '0' => 'flagging_user',
2185 2185
                     '1' => 'comment',
2186 2186
                     '2' => 'node',
2187 2187
                     '3' => ':global',
2188
-                  ),
2189
-                  'from' => array(
2188
+                    ),
2189
+                    'from' => array(
2190 2190
                     '0' => ':global',
2191
-                  ),
2191
+                    ),
2192 2192
                 ),
2193 2193
                 'rules_input_evaluator_php' => array(
2194
-                  'message' => array(),
2194
+                    'message' => array(),
2195
+                ),
2195 2196
                 ),
2196
-              ),
2197 2197
             ),
2198 2198
             '#type' => 'action',
2199 2199
             '#weight' => 0.0,
2200
-          ),
2200
+            ),
2201 2201
         ),
2202 2202
         '#version' => 6003,
2203
-      ),
2204
-      'rules_offensive_content_reported' => array(
2203
+        ),
2204
+        'rules_offensive_content_reported' => array(
2205 2205
         '#type' => 'rule',
2206 2206
         '#set' => 'event_flag_flagged_abuse_node',
2207 2207
         '#label' => 'Offensive content reported',
2208 2208
         '#active' => 1,
2209 2209
         '#weight' => '0',
2210 2210
         '#categories' => array(
2211
-          '0' => 'moderator notification',
2212
-          'boinc_standard' => 'boinc_standard',
2211
+            '0' => 'moderator notification',
2212
+            'boinc_standard' => 'boinc_standard',
2213 2213
         ),
2214 2214
         '#status' => 'default',
2215 2215
         '#conditions' => array(),
2216 2216
         '#actions' => array(
2217
-          '1' => array(
2217
+            '1' => array(
2218 2218
             '#type' => 'action',
2219 2219
             '#settings' => array(
2220
-              'from' => '',
2221
-              'subject' => 'Report of offensive [node:type] content at [:global:site-name]',
2222
-              'message' => "[flagging_user:display-name] has reported the following [node:type] content as being offensive or inappropriate for the [:global:site-name] site:\r\n\r\n<?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>\r\n\r\nTotal reports of this content: [node:flag-abuse-node-count]",
2223
-              '#eval input' => array(
2220
+                'from' => '',
2221
+                'subject' => 'Report of offensive [node:type] content at [:global:site-name]',
2222
+                'message' => "[flagging_user:display-name] has reported the following [node:type] content as being offensive or inappropriate for the [:global:site-name] site:\r\n\r\n<?php print url('node/' . \$node->nid, array('absolute' => TRUE, 'language' => 'en')); ?>\r\n\r\nTotal reports of this content: [node:flag-abuse-node-count]",
2223
+                '#eval input' => array(
2224 2224
                 'token_rules_input_evaluator' => array(
2225
-                  'subject' => array(
2225
+                    'subject' => array(
2226 2226
                     '0' => 'node',
2227 2227
                     '1' => ':global',
2228
-                  ),
2229
-                  'message' => array(
2228
+                    ),
2229
+                    'message' => array(
2230 2230
                     '0' => 'flagging_user',
2231 2231
                     '1' => 'node',
2232 2232
                     '2' => ':global',
2233
-                  ),
2234
-                  'from' => array(
2233
+                    ),
2234
+                    'from' => array(
2235 2235
                     '0' => ':global',
2236
-                  ),
2236
+                    ),
2237 2237
                 ),
2238 2238
                 'rules_input_evaluator_php' => array(
2239
-                  'message' => array(
2239
+                    'message' => array(
2240 2240
                     '0' => 'node',
2241
-                  ),
2241
+                    ),
2242
+                ),
2242 2243
                 ),
2243
-              ),
2244 2244
             ),
2245 2245
             '#name' => 'boinccore_rules_action_mail_to_moderators',
2246 2246
             '#info' => array(
2247
-              'label' => 'Notify moderators via email',
2248
-              'module' => 'BOINC core',
2249
-              'eval input' => array(
2247
+                'label' => 'Notify moderators via email',
2248
+                'module' => 'BOINC core',
2249
+                'eval input' => array(
2250 2250
                 '0' => 'subject',
2251 2251
                 '1' => 'message',
2252 2252
                 '2' => 'from',
2253
-              ),
2253
+                ),
2254 2254
             ),
2255 2255
             '#weight' => 0.0,
2256
-          ),
2256
+            ),
2257 2257
         ),
2258 2258
         '#version' => 6003,
2259
-      ),
2260
-      'rules_offensive_user_reported' => array(
2259
+        ),
2260
+        'rules_offensive_user_reported' => array(
2261 2261
         '#type' => 'rule',
2262 2262
         '#set' => 'event_flag_flagged_abuse_user',
2263 2263
         '#label' => 'Offensive user reported',
2264 2264
         '#active' => 1,
2265 2265
         '#weight' => '0',
2266 2266
         '#categories' => array(
2267
-          '0' => 'moderator notification',
2268
-          'boinc_standard' => 'boinc_standard',
2267
+            '0' => 'moderator notification',
2268
+            'boinc_standard' => 'boinc_standard',
2269 2269
         ),
2270 2270
         '#status' => 'default',
2271 2271
         '#conditions' => array(),
2272 2272
         '#actions' => array(
2273
-          '1' => array(
2273
+            '1' => array(
2274 2274
             '#type' => 'action',
2275 2275
             '#settings' => array(
2276
-              'from' => '',
2277
-              'subject' => 'Report of offensive user at [:global:site-name]',
2278
-              'message' => "[flagging_user:display-name] has reported [account:display-name] for inappropriate behavior:\r\n\r\n<?php print url(\'<front>\', array(\'absolute\' => TRUE, \'language\' => \'en\')); ?>/account/[account:uid]\r\n\r\nTotal current reports of this user: [account:flag-abuse-user-count]",
2279
-              '#eval input' => array(
2276
+                'from' => '',
2277
+                'subject' => 'Report of offensive user at [:global:site-name]',
2278
+                'message' => "[flagging_user:display-name] has reported [account:display-name] for inappropriate behavior:\r\n\r\n<?php print url(\'<front>\', array(\'absolute\' => TRUE, \'language\' => \'en\')); ?>/account/[account:uid]\r\n\r\nTotal current reports of this user: [account:flag-abuse-user-count]",
2279
+                '#eval input' => array(
2280 2280
                 'token_rules_input_evaluator' => array(
2281
-                  'subject' => array(
2281
+                    'subject' => array(
2282 2282
                     '0' => ':global',
2283
-                  ),
2284
-                  'message' => array(
2283
+                    ),
2284
+                    'message' => array(
2285 2285
                     '0' => 'flagging_user',
2286 2286
                     '1' => 'account',
2287 2287
                     '2' => ':global',
2288
-                  ),
2289
-                  'from' => array(
2288
+                    ),
2289
+                    'from' => array(
2290 2290
                     '0' => ':global',
2291
-                  ),
2291
+                    ),
2292 2292
                 ),
2293 2293
                 'rules_input_evaluator_php' => array(
2294
-                  'message' => array(),
2294
+                    'message' => array(),
2295
+                ),
2295 2296
                 ),
2296
-              ),
2297 2297
             ),
2298 2298
             '#name' => 'boinccore_rules_action_mail_to_moderators',
2299 2299
             '#info' => array(
2300
-              'label' => 'Notify moderators via email',
2301
-              'module' => 'BOINC core',
2302
-              'eval input' => array(
2300
+                'label' => 'Notify moderators via email',
2301
+                'module' => 'BOINC core',
2302
+                'eval input' => array(
2303 2303
                 '0' => 'subject',
2304 2304
                 '1' => 'message',
2305 2305
                 '2' => 'from',
2306
-              ),
2306
+                ),
2307 2307
             ),
2308 2308
             '#weight' => 0.0,
2309
-          ),
2309
+            ),
2310 2310
         ),
2311 2311
         '#version' => 6003,
2312
-      ),
2312
+        ),
2313 2313
     ),
2314
-  );
2314
+    );
2315 2315
 }
2316 2316
 
2317 2317
 /**
2318 2318
  * Implementation of hook_views_api().
2319 2319
  */
2320 2320
 function boinc_standard_views_api() {
2321
-  return array(
2321
+    return array(
2322 2322
     'api' => '2',
2323
-  );
2323
+    );
2324 2324
 }
Please login to merge, or discard this patch.
html/user/get_project_config.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -86,11 +86,11 @@  discard block
 block discarded – undo
86 86
 }
87 87
 
88 88
 if ($disable_account_creation || defined('INVITE_CODES')) {
89
-	echo "    <account_creation_disabled/>\n";
89
+    echo "    <account_creation_disabled/>\n";
90 90
 }
91 91
 
92 92
 if (defined('INVITE_CODES')) {
93
-	echo "    <invite_code_required/>\n";
93
+    echo "    <invite_code_required/>\n";
94 94
 }
95 95
 
96 96
 echo "    <min_passwd_length>$min_passwd_length</min_passwd_length>\n";
@@ -113,9 +113,9 @@  discard block
 block discarded – undo
113 113
 // the terms_of_use.txt file in the project base directory.
114 114
 //
115 115
 if (defined('TERMSOFUSE_FILE')) {
116
-  $tou_file = TERMSOFUSE_FILE;
116
+    $tou_file = TERMSOFUSE_FILE;
117 117
 } else {
118
-  $tou_file =  "../../terms_of_use.txt";
118
+    $tou_file =  "../../terms_of_use.txt";
119 119
 }
120 120
 if (file_exists($tou_file)) {
121 121
     $terms_of_use = trim(file_get_contents($tou_file));
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincwork/includes/boincwork.forms.inc 1 patch
Indentation   +949 added lines, -949 removed lines patch added patch discarded remove patch
@@ -15,16 +15,16 @@  discard block
 block discarded – undo
15 15
  * The structure of the general preferences form
16 16
  */
17 17
 function boincwork_generalprefs_form(&$form_state, $venue, $prefs_preset = null, $advanced = FALSE) {
18
-  $form = array();
19
-  $prefs = null;
20
-  $established = TRUE;
18
+    $form = array();
19
+    $prefs = null;
20
+    $established = TRUE;
21 21
   
22
-  // Enable AHAH form support for dynamically updating content based on preset
23
-  ahah_helper_register($form, $form_state);
22
+    // Enable AHAH form support for dynamically updating content based on preset
23
+    ahah_helper_register($form, $form_state);
24 24
   
25
-  if (!$prefs_preset) {
25
+    if (!$prefs_preset) {
26 26
     if (isset($form_state['storage']['prefs']['preset'])) {
27
-      $prefs_preset = $form_state['storage']['prefs']['preset'];
27
+        $prefs_preset = $form_state['storage']['prefs']['preset'];
28 28
     }
29 29
     
30 30
     // Load preferences from BOINC account
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
     
33 33
     // Take note if this is not an established preference set on the account
34 34
     if (isset($prefs['@attributes']['cleared'])) {
35
-      $established = FALSE;
35
+        $established = FALSE;
36 36
     }
37 37
     
38 38
     // Determine if a preset is selected or if these are custom settings
@@ -47,45 +47,45 @@  discard block
 block discarded – undo
47 47
             $prefs_preset = $prefs['preset']['@value'];
48 48
         }
49 49
     }// if !$prefs_preset
50
-  }
51
-  // Extract mod_time tag if present, because it will be erased with
52
-  // boincwork_get_preset_prefs() below.
53
-  $mod_time = null;
54
-  if (isset($prefs['mod_time']['@value'])) {
55
-      $mod_time = $prefs['mod_time']['@value'];
56
-  }
57
-
58
-  if (isset($form_state['storage']['wip'])) {
59
-      switch ($prefs_preset) {
60
-      case 'standard':
50
+    }
51
+    // Extract mod_time tag if present, because it will be erased with
52
+    // boincwork_get_preset_prefs() below.
53
+    $mod_time = null;
54
+    if (isset($prefs['mod_time']['@value'])) {
55
+        $mod_time = $prefs['mod_time']['@value'];
56
+    }
57
+
58
+    if (isset($form_state['storage']['wip'])) {
59
+        switch ($prefs_preset) {
60
+        case 'standard':
61 61
       case 'maximum':
62 62
       case 'green':
63 63
       case 'minimum':
64 64
           $prefs = boincwork_get_preset_prefs($prefs_preset);
65
-          break;
66
-      case 'custom':
65
+            break;
66
+        case 'custom':
67 67
       default:
68 68
           // Just keeps prefs as they are
69 69
           unset($prefs['preset']);
70
-          break;
71
-      }// switch
72
-  } else {
73
-      $form_state['storage']['wip'] = TRUE;
74
-      if ( !in_array($prefs_preset, array('standard','maximum','green','minimum','custom')) ) {
75
-          if ($established) {
76
-              $prefs_preset = 'custom';
77
-          } else {
78
-              $prefs_preset = 'standard';
79
-              $prefs = boincwork_get_preset_prefs($prefs_preset);
80
-          }// if $established
81
-      }// if $prefs_preset
82
-  }// if WIP
83
-  
84
-  // This set of preferences is used in the form if no preferences
85
-  // have been set above, in variable $prefs.
86
-  require_boinc(array('db', 'prefs'));
87
-  $disk_space_config = get_disk_space_config();
88
-  $default = array(
70
+            break;
71
+        }// switch
72
+    } else {
73
+        $form_state['storage']['wip'] = TRUE;
74
+        if ( !in_array($prefs_preset, array('standard','maximum','green','minimum','custom')) ) {
75
+            if ($established) {
76
+                $prefs_preset = 'custom';
77
+            } else {
78
+                $prefs_preset = 'standard';
79
+                $prefs = boincwork_get_preset_prefs($prefs_preset);
80
+            }// if $established
81
+        }// if $prefs_preset
82
+    }// if WIP
83
+  
84
+    // This set of preferences is used in the form if no preferences
85
+    // have been set above, in variable $prefs.
86
+    require_boinc(array('db', 'prefs'));
87
+    $disk_space_config = get_disk_space_config();
88
+    $default = array(
89 89
     'preset' => $prefs_preset,
90 90
     // Processing...
91 91
     'run_on_batteries' => 0,
@@ -120,385 +120,385 @@  discard block
 block discarded – undo
120 120
     'daily_xfer_limit_mb' => 0,
121 121
     'daily_xfer_period_days' => 0,
122 122
     'dont_verify_images' => 0
123
-  );
124
-  foreach ($default as $name => $value) {
123
+    );
124
+    foreach ($default as $name => $value) {
125 125
     if (isset($prefs[$name])) {
126
-      if (is_array($prefs[$name])) {
126
+        if (is_array($prefs[$name])) {
127 127
         if (isset($prefs[$name]['@value'])) {
128
-          $default[$name] = $prefs[$name]['@value'];
128
+            $default[$name] = $prefs[$name]['@value'];
129
+        }
129 130
         }
130
-      }
131
-      else {
131
+        else {
132 132
         $default[$name] = $prefs[$name];
133
-      }
133
+        }
134
+    }
134 135
     }
135
-  }
136 136
 
137
-  // Standard option sets
138
-  $form['boolean_options'] = array(
137
+    // Standard option sets
138
+    $form['boolean_options'] = array(
139 139
     '#type' => 'value',
140 140
     '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes'))
141
-  );
142
-  $form['hour_options'] = array(
141
+    );
142
+    $form['hour_options'] = array(
143 143
     '#type' => 'value',
144 144
     '#value' => array('0:00','1:00','2:00','3:00','4:00', 
145
-     '5:00','6:00','7:00','8:00','9:00','10:00','11:00', 
146
-     '12:00','13:00','14:00','15:00','16:00','17:00',
147
-     '18:00','19:00','20:00','21:00','22:00','23:00')
148
-  );
149
-  
150
-  // Identify preference sets that are established to distinguish what has been
151
-  // saved to the database from what is just showing default values
152
-  $form['#established'] = $established;
145
+        '5:00','6:00','7:00','8:00','9:00','10:00','11:00', 
146
+        '12:00','13:00','14:00','15:00','16:00','17:00',
147
+        '18:00','19:00','20:00','21:00','22:00','23:00')
148
+    );
149
+  
150
+    // Identify preference sets that are established to distinguish what has been
151
+    // saved to the database from what is just showing default values
152
+    $form['#established'] = $established;
153 153
    
154
-  // Set up the preference container for AHAH
155
-  $form['prefs'] = array(
154
+    // Set up the preference container for AHAH
155
+    $form['prefs'] = array(
156 156
     '#title' => '',
157 157
     '#type' => 'fieldset',
158 158
     '#prefix' => '<div id="prefs-wrapper">', // This is our wrapper div.
159 159
     '#attributes' => array('class' => 'ahah-container'),
160 160
     '#suffix' => '</div>',
161 161
     '#tree'   => TRUE
162
-  );
163
-  //$form['prefs']['debug'] = array('#value' => '<pre>' . print_r($form_state, true) . '</pre>');
162
+    );
163
+    //$form['prefs']['debug'] = array('#value' => '<pre>' . print_r($form_state, true) . '</pre>');
164 164
   
165
-  // Hidden elements
166
-  $form['prefs']['modified'] = array(
165
+    // Hidden elements
166
+    $form['prefs']['modified'] = array(
167 167
     '#type' => 'hidden',
168 168
     '#value' => $mod_time
169
-  );
170
-  $form['prefs']['venue'] = array(
169
+    );
170
+    $form['prefs']['venue'] = array(
171 171
     '#type' => 'hidden',
172 172
     '#value' => $venue
173
-  );
173
+    );
174 174
   
175
-  $form['prefs']['separator_top'] = array(
175
+    $form['prefs']['separator_top'] = array(
176 176
     '#value' => '<div class="separator"></div>'
177
-  );
177
+    );
178 178
   
179
-  // Simplified selectors
180
-  $form['prefs']['preset'] = array(
181
-      '#title' => bts('Presets', array(), NULL, 'boinc:account-preferences-preset:-1:for a user to choose a computing or project preference preset.'),
179
+    // Simplified selectors
180
+    $form['prefs']['preset'] = array(
181
+        '#title' => bts('Presets', array(), NULL, 'boinc:account-preferences-preset:-1:for a user to choose a computing or project preference preset.'),
182 182
     '#type' => 'radios',
183 183
     '#description' => ' ',
184 184
     '#options' => array(
185
-      'standard' => bts('Standard', array(), NULL, 'boinc:account-preferences-preset'),
186
-      'maximum' => bts('Maximum', array(), NULL, 'boinc:account-preferences-preset'),
187
-      'green' => bts('Green', array(), NULL, 'boinc:account-preferences-preset'),
188
-      'minimum' => bts('Minimum', array(), NULL, 'boinc:account-preferences-preset'),
189
-      'custom' => bts('Custom', array(), NULL, 'boinc:account-preferences-preset')
185
+        'standard' => bts('Standard', array(), NULL, 'boinc:account-preferences-preset'),
186
+        'maximum' => bts('Maximum', array(), NULL, 'boinc:account-preferences-preset'),
187
+        'green' => bts('Green', array(), NULL, 'boinc:account-preferences-preset'),
188
+        'minimum' => bts('Minimum', array(), NULL, 'boinc:account-preferences-preset'),
189
+        'custom' => bts('Custom', array(), NULL, 'boinc:account-preferences-preset')
190 190
     ),
191 191
     '#prefix' => '<div class="simple-form-controls">',
192 192
     '#suffix' => '</div>',
193 193
     '#default_value' => $default['preset'],
194 194
     '#ahah' => array(
195
-      'event' => 'change',
196
-      'path' => ahah_helper_path(array('prefs')),
197
-      'wrapper' => 'prefs-wrapper'
195
+        'event' => 'change',
196
+        'path' => ahah_helper_path(array('prefs')),
197
+        'wrapper' => 'prefs-wrapper'
198 198
     )
199
-  );
200
-  $form['prefs']['select preset'] = array(
199
+    );
200
+    $form['prefs']['select preset'] = array(
201 201
     '#type'  => 'submit',
202 202
     '#value' => bts('Update preset', array(), NULL, 'boinc:account-preferences-preset'),
203 203
     '#submit' => array('ahah_helper_generic_submit'),
204 204
     // The 'no-js' class only displays this button if javascript is disabled
205 205
     '#attributes' => array('class' => 'no-js'),
206
-  );
206
+    );
207 207
   
208
-  // Advanced preferences
209
-  $form['prefs']['advanced'] = array(
208
+    // Advanced preferences
209
+    $form['prefs']['advanced'] = array(
210 210
     '#title' => bts('Advanced settings', array(), NULL, 'boinc:account-preferences-option'),
211 211
     '#type' => 'fieldset',
212 212
     '#description' => '',
213 213
     '#collapsible' => TRUE,
214 214
     '#collapsed' => !$advanced,
215 215
     '#attributes' => array('class' => 'advanced-settings'),
216
-  );
216
+    );
217 217
   
218
-  // Processing preferences
218
+    // Processing preferences
219 219
   
220
-  $form['prefs']['advanced']['anchor'] = array(
220
+    $form['prefs']['advanced']['anchor'] = array(
221 221
     '#value' => '<a name="advanced"></a>'
222
-  );
222
+    );
223 223
   
224
-  $form['prefs']['advanced']['separator_top'] = array(
224
+    $form['prefs']['advanced']['separator_top'] = array(
225 225
     '#value' => '<div class="separator"></div>'
226
-  );
226
+    );
227 227
   
228
-  $form['prefs']['advanced']['processor'] = array(
228
+    $form['prefs']['advanced']['processor'] = array(
229 229
     '#title' => bts('Processor usage', array(), NULL, 'boinc:account-preferences-computing'),
230 230
     '#type' => 'fieldset',
231 231
     '#description' => '',
232 232
     '#collapsible' => FALSE,
233 233
     '#collapsed' => FALSE
234
-  );
235
-  $form['prefs']['advanced']['processor']['run_on_batteries'] = array(
234
+    );
235
+    $form['prefs']['advanced']['processor']['run_on_batteries'] = array(
236 236
     '#title' => bts('Suspend when computer is on battery?', array(), NULL, 'boinc:account-preferences-computing'),
237 237
     '#type' => 'radios',
238 238
     '#description' => bts('Suspends computing on portables when running on battery power.', array(), NULL, 'boinc:account-preferences-computing'),
239 239
     '#options' => $form['boolean_options']['#value'],
240 240
     '#attributes' => array('class' => 'fancy'),
241 241
     '#default_value' => ($default['run_on_batteries']) ? 0 : 1 // intentional inversion of setting
242
-  );
243
-  $form['prefs']['advanced']['processor']['run_if_user_active'] = array(
242
+    );
243
+    $form['prefs']['advanced']['processor']['run_if_user_active'] = array(
244 244
     '#title' => bts('Suspend when computer is in use?', array(), NULL, 'boinc:account-preferences-computing'),
245 245
     '#type' => 'radios',
246 246
     '#description' => bts("Suspends computing and file transfers when you're using the computer.", array(), NULL, 'boinc:account-preferences-computing'),
247 247
     '#options' => $form['boolean_options']['#value'],
248 248
     '#attributes' => array('class' => 'fancy'),
249 249
     '#default_value' => ($default['run_if_user_active']) ? 0 : 1 // intentional inversion of setting
250
-  );
251
-  $form['prefs']['advanced']['processor']['run_gpu_if_user_active'] = array(
250
+    );
251
+    $form['prefs']['advanced']['processor']['run_gpu_if_user_active'] = array(
252 252
     '#title' => bts('Suspend GPU computing when computer is in use?', array(), NULL, 'boinc:account-preferences-computing'),
253 253
     '#type' => 'radios',
254 254
     '#description' => bts("Suspends GPU computing when you're using the computer.", array(), NULL, 'boinc:account-preferences-computing'),
255 255
     '#options' => $form['boolean_options']['#value'],
256 256
     '#attributes' => array('class' => 'fancy'),
257 257
     '#default_value' => ($default['run_gpu_if_user_active']) ? 0 : 1 // intentional inversion of setting
258
-  );
259
-  $form['prefs']['advanced']['processor']['idle_time_to_run'] = array(
260
-      '#title' => bts('"In use" means mouse/keyboard input in last', array(), NULL, 'boinc:account-preferences-computing'),
258
+    );
259
+    $form['prefs']['advanced']['processor']['idle_time_to_run'] = array(
260
+        '#title' => bts('"In use" means mouse/keyboard input in last', array(), NULL, 'boinc:account-preferences-computing'),
261 261
     '#type' => 'textfield',
262 262
     '#field_suffix' => bts('minutes', array(), NULL, 'boinc:unit-of-time'),
263 263
     '#default_value' => $default['idle_time_to_run'],
264 264
     '#size' => 1,
265 265
     '#description' => bts('This determines when the computer is considered "in use".', array(), NULL, 'boinc:account-preferences-computing')
266
-  );
267
-  $form['prefs']['advanced']['processor']['suspend_if_no_recent_input'] = array(
266
+    );
267
+    $form['prefs']['advanced']['processor']['suspend_if_no_recent_input'] = array(
268 268
     '#title' => bts('Suspend when no mouse/keyboard input in last', array(), NULL, 'boinc:account-preferences-computing'),
269 269
     '#type' => 'textfield',
270 270
     '#field_suffix' => bts('minutes', array(), NULL, 'boinc:unit-of-time'),
271 271
     '#default_value' => $default['suspend_if_no_recent_input'],
272 272
     '#size' => 1,
273 273
     '#description' => bts('This allows some computers to enter low-power mode when not in use.', array(), NULL, 'boinc:account-preferences-computing')
274
-  );
275
-  $form['prefs']['advanced']['processor']['suspend_cpu_usage'] = array(
274
+    );
275
+    $form['prefs']['advanced']['processor']['suspend_cpu_usage'] = array(
276 276
     '#title' => bts('Suspend when non-BOINC CPU usage is above', array(), NULL, 'boinc:account-preferences-computing'),
277 277
     '#type' => 'textfield',
278 278
     '#field_suffix' => '%',
279 279
     '#default_value' => $default['suspend_cpu_usage'],
280 280
     '#size' => 1,
281 281
     '#description' => bts('Suspend computing when your computer is busy running other programs.', array(), NULL, 'boinc:account-preferences-computing'),
282
-  );
283
-  $form['prefs']['advanced']['processor']['hour_label'] = array(
282
+    );
283
+    $form['prefs']['advanced']['processor']['hour_label'] = array(
284 284
     '#value' => '<div class="form-item"><label>' . bts('Compute only between:', array(), NULL, 'boinc:account-preferences-computing') . '</label></div>'
285
-  );
286
-  $form['prefs']['advanced']['processor']['start_hour'] = array(
285
+    );
286
+    $form['prefs']['advanced']['processor']['start_hour'] = array(
287 287
     '#type' => 'select',
288 288
     '#options' => $form['hour_options']['#value'],
289 289
     '#default_value' => $default['start_hour']
290
-  );
291
-  $form['prefs']['advanced']['processor']['hour_delimiter'] = array(
290
+    );
291
+    $form['prefs']['advanced']['processor']['hour_delimiter'] = array(
292 292
     '#value' => '<span>' . bts('and', array(), NULL, 'boinc:account-preference') . '</span>'
293
-  );
294
-  $form['prefs']['advanced']['processor']['end_hour'] = array(
293
+    );
294
+    $form['prefs']['advanced']['processor']['end_hour'] = array(
295 295
     '#type' => 'select',
296 296
     '#options' => $form['hour_options']['#value'],
297 297
     '#default_value' => $default['end_hour']
298
-  );
299
-  $form['prefs']['advanced']['processor']['hour_description'] = array(
298
+    );
299
+    $form['prefs']['advanced']['processor']['hour_description'] = array(
300 300
     '#value' => '<div class="form-item slim"><div class="description">' . bts('Compute only during a particular period each day.', array(), NULL, 'boinc:account-preferences-computing') . '</div></div>'
301
-  );
302
-  $form['prefs']['advanced']['processor']['leave_apps_in_memory'] = array(
301
+    );
302
+    $form['prefs']['advanced']['processor']['leave_apps_in_memory'] = array(
303 303
     '#title' => bts('Leave non-GPU tasks in memory while suspended?', array(), NULL, 'boinc:account-preferences-computing'),
304 304
     '#type' => 'radios',
305 305
     '#options' => $form['boolean_options']['#value'],
306 306
     '#attributes' => array('class' => 'fancy'),
307 307
     '#default_value' => $default['leave_apps_in_memory'],
308 308
     '#description' => bts('If "Yes", suspended tasks stay in memory, and resume with no work lost. If "No", suspended tasks are removed from memory, and resume from their last checkpoint.', array(), NULL, 'boinc:account-preferences-computing')
309
-  );
310
-  $form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes'] = array(
309
+    );
310
+    $form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes'] = array(
311 311
     '#title' => bts('Switch between tasks every', array(), NULL, 'boinc:account-preferences-computing'),
312 312
     '#type' => 'textfield',
313 313
     '#field_suffix' => bts('minutes', array(), NULL, 'boinc:unit-of-time'),
314 314
     '#default_value' => $default['cpu_scheduling_period_minutes'],
315 315
     '#size' => 1,
316 316
     '#description' => bts('If you run several projects, BOINC may switch between them this often.', array(), NULL, 'boinc:account-preferences-computing')
317
-  );
318
-  $form['prefs']['advanced']['processor']['max_ncpus_pct'] = array(
317
+    );
318
+    $form['prefs']['advanced']['processor']['max_ncpus_pct'] = array(
319 319
     '#title' => bts('Use at most', array(), NULL, 'boinc:account-preferences-computing'),
320 320
     '#type' => 'textfield',
321 321
     '#field_suffix' => bts('% of the processors', array(), NULL, 'boinc:account-preferences-computing'),
322 322
     '#default_value' => $default['max_ncpus_pct'],
323 323
     '#size' => 1,
324 324
     '#description' => bts('Keep some CPUs free for other applications. Example: 75% means use 6 cores on an 8-core CPU.', array(), NULL, 'boinc:account-preferences-computing'),
325
-  );
326
-  $form['prefs']['advanced']['processor']['cpu_usage_limit'] = array(
325
+    );
326
+    $form['prefs']['advanced']['processor']['cpu_usage_limit'] = array(
327 327
     '#title' => bts('Use at most', array(), NULL, 'boinc:account-preferences-computing'),
328 328
     '#type' => 'textfield',
329 329
     '#field_suffix' => bts('% of the CPU time', array(), NULL, 'boinc:account-preferences-computing'),
330 330
     '#default_value' => $default['cpu_usage_limit'],
331 331
     '#size' => 1,
332 332
     '#description' => bts('Suspend/resume computing every few seconds to reduce CPU temperature and energy usage. Example: 75% means compute for 3 seconds, wait for 1 second, and repeat.', array(), NULL, 'boinc:account-preferences-computing')
333
-  );
333
+    );
334 334
   
335
-  // Disk and memory preferences
336
-  $form['prefs']['advanced']['storage'] = array(
335
+    // Disk and memory preferences
336
+    $form['prefs']['advanced']['storage'] = array(
337 337
     '#title' => bts('Disk and memory usage', array(), NULL, 'boinc:account-preferences-computing'),
338 338
     '#type' => 'fieldset',
339 339
     '#description' => '',
340 340
     '#collapsible' => FALSE,
341 341
     '#collapsed' => FALSE
342
-  );
343
-  $form['prefs']['advanced']['storage']['disk_max_used_gb'] = array(
342
+    );
343
+    $form['prefs']['advanced']['storage']['disk_max_used_gb'] = array(
344 344
     '#title' => bts('Disk: use no more than', array(), NULL, 'boinc:account-preferences-computing'),
345 345
     '#type' => 'textfield',
346 346
     '#field_suffix' => 'GB',
347 347
     '#default_value' => $default['disk_max_used_gb'],
348 348
     '#size' => 1,
349 349
     '#description' => bts('Limit the total amount of disk space used by BOINC.', array(), NULL, 'boinc:account-preferences-computing'),
350
-  ); 
351
-  $form['prefs']['advanced']['storage']['disk_min_free_gb'] = array(
350
+    ); 
351
+    $form['prefs']['advanced']['storage']['disk_min_free_gb'] = array(
352 352
     '#title' => bts('Disk: leave at least', array(), NULL, 'boinc:account-preferences-computing'),
353 353
     '#type' => 'textfield',
354 354
     '#field_suffix' => 'GB free',
355 355
     '#default_value' => $default['disk_min_free_gb'],
356 356
     '#size' => 1,
357 357
     '#description' => bts('Limit disk usage to leave this much free space on the volume where BOINC stores data.', array(), NULL, 'boinc:account-preferences-computing'),
358
-  );
359
-  $form['prefs']['advanced']['storage']['disk_max_used_pct'] = array(
358
+    );
359
+    $form['prefs']['advanced']['storage']['disk_max_used_pct'] = array(
360 360
     '#title' => bts('Disk: use no more than', array(), NULL, 'boinc:account-preferences-computing'),
361 361
     '#type' => 'textfield',
362 362
     '#field_suffix' => bts('% of total', array(), NULL, 'boinc:account-preferences-computing'),
363 363
     '#default_value' => $default['disk_max_used_pct'],
364 364
     '#size' => 1,
365 365
     '#description' => bts('Limit the percentage of disk space used by BOINC on the volume where it stores data.', array(), NULL, 'boinc:account-preferences-computing')
366
-  ); 
367
-  $form['prefs']['advanced']['storage']['disk_interval'] = array(
366
+    ); 
367
+    $form['prefs']['advanced']['storage']['disk_interval'] = array(
368 368
     '#title' => bts('Request tasks to checkpoint at most every', array(), NULL, 'boinc:account-preferences-computing'),
369 369
     '#type' => 'textfield',
370 370
     '#field_suffix' => bts('seconds', array(), NULL, 'boinc:unit-of-time'),
371 371
     '#default_value' => $default['disk_interval'],
372 372
     '#size' => 1,
373 373
     '#description' => bts('This controls how often tasks save their state to disk, so that later they can be continued from that point.', array(), NULL, 'boinc:account-preferences-computing')
374
-  );
375
-  $form['prefs']['advanced']['storage']['vm_max_used_pct'] = array(
374
+    );
375
+    $form['prefs']['advanced']['storage']['vm_max_used_pct'] = array(
376 376
     '#title' => bts('Page/swap file: use at most', array(), NULL, 'boinc:account-preferences-computing'),
377 377
     '#type' => 'textfield',
378 378
     '#field_suffix' => bts('% of total', array(), NULL, 'boinc:account-preferences-computing'),
379 379
     '#default_value' => $default['vm_max_used_pct'],
380 380
     '#size' => 1,
381 381
     '#description' => bts('Limit the swap space (page file) used by BOINC.', array(), NULL, 'boinc:account-preferences-computing')
382
-  );
383
-  $form['prefs']['advanced']['storage']['ram_max_used_busy_pct'] = array(
382
+    );
383
+    $form['prefs']['advanced']['storage']['ram_max_used_busy_pct'] = array(
384 384
     '#title' => bts('Memory: when computer is in use, use at most', array(), NULL, 'boinc:account-preferences-computing'),
385 385
     '#type' => 'textfield',
386 386
     '#field_suffix' => bts('% of total', array(), NULL, 'boinc:account-preferences-computing'),
387 387
     '#default_value' => $default['ram_max_used_busy_pct'],
388 388
     '#size' => 1,
389 389
     '#description' => bts("Limit the memory used by BOINC when you're using the computer.", array(), NULL, 'boinc:account-preferences-computing')
390
-  );
391
-  $form['prefs']['advanced']['storage']['ram_max_used_idle_pct'] = array(
390
+    );
391
+    $form['prefs']['advanced']['storage']['ram_max_used_idle_pct'] = array(
392 392
     '#title' => bts('Memory: when computer is not in use, use at most', array(), NULL, 'boinc:account-preferences-computing'),
393 393
     '#type' => 'textfield',
394 394
     '#field_suffix' => bts('% of total', array(), NULL, 'boinc:account-preferences-computing'),
395 395
     '#default_value' => $default['ram_max_used_idle_pct'],
396 396
     '#size' => 1,
397 397
     '#description' => bts("Limit the memory used by BOINC when you're not using the computer.", array(), NULL, 'boinc:account-preferences-computing')
398
-  );
398
+    );
399 399
   
400
-  // Network preferences
401
-  $form['prefs']['advanced']['network'] = array(
400
+    // Network preferences
401
+    $form['prefs']['advanced']['network'] = array(
402 402
     '#title' => bts('Network usage', array(), NULL, 'boinc:account-preferences-computing'),
403 403
     '#type' => 'fieldset',
404 404
     '#description' => '',
405 405
     '#collapsible' => FALSE,
406 406
     '#collapsed' => FALSE
407
-  );
408
-  $form['prefs']['advanced']['network']['work_buf_min_days'] = array(
407
+    );
408
+    $form['prefs']['advanced']['network']['work_buf_min_days'] = array(
409 409
     '#title' => bts('Store at least', array(), NULL, 'boinc:account-preferences-computing'),
410 410
     '#type' => 'textfield',
411 411
     '#field_suffix' => bts('days of work', array(), NULL, 'boinc:account-preferences-computing'),
412 412
     '#default_value' => $default['work_buf_min_days'],
413 413
     '#size' => 1,
414 414
     '#description' => bts('Store at least enough tasks to keep the computer busy for this long.', array(), NULL, 'boinc:account-preferences-computing')
415
-  ); 
416
-  $form['prefs']['advanced']['network']['work_buf_additional_days'] = array(
415
+    ); 
416
+    $form['prefs']['advanced']['network']['work_buf_additional_days'] = array(
417 417
     '#title' => bts('Store up to an additional', array(), NULL, 'boinc:account-preferences-computing'),
418 418
     '#type' => 'textfield',
419 419
     '#field_suffix' => bts('days', array(), NULL, 'boinc:unit-of-time'),
420 420
     '#default_value' => $default['work_buf_additional_days'],
421 421
     '#size' => 1,
422 422
     '#description' => bts('Store additional tasks above the minimum level.  Determines how much work is requested when contacting a project.', array(), NULL, 'boinc:account-preferences-computing')
423
-  ); 
424
-  $form['prefs']['advanced']['network']['confirm_before_connecting'] = array(
423
+    ); 
424
+    $form['prefs']['advanced']['network']['confirm_before_connecting'] = array(
425 425
     '#title' => bts('Confirm before connecting to Internet?', array(), NULL, 'boinc:account-preferences-computing'),
426 426
     '#type' => 'radios',
427 427
     '#options' => $form['boolean_options']['#value'],
428 428
     '#attributes' => array('class' => 'fancy'),
429 429
     '#default_value' => $default['confirm_before_connecting'],
430 430
     '#description' => bts('Useful only if you have a modem, ISDN or VPN connection.', array(), NULL, 'boinc:account-preferences-computing')
431
-  ); 
432
-  $form['prefs']['advanced']['network']['hangup_if_dialed'] = array(
431
+    ); 
432
+    $form['prefs']['advanced']['network']['hangup_if_dialed'] = array(
433 433
     '#title' => bts('Disconnect when done?', array(), NULL, 'boinc:account-preferences-computing'),
434 434
     '#type' => 'radios',
435 435
     '#options' => $form['boolean_options']['#value'],
436 436
     '#attributes' => array('class' => 'fancy'),
437 437
     '#default_value' => $default['hangup_if_dialed'],
438 438
     '#description' => bts('Useful only if you have a modem, ISDN or VPN connection.', array(), NULL, 'boinc:account-preferences-computing')
439
-  );
440
-  $form['prefs']['advanced']['network']['max_bytes_sec_down'] = array(
439
+    );
440
+    $form['prefs']['advanced']['network']['max_bytes_sec_down'] = array(
441 441
     '#title' => bts('Limit download rate to', array(), NULL, 'boinc:account-preferences-computing'),
442 442
     '#type' => 'textfield',
443 443
     '#field_suffix' => 'Kbytes/sec',
444 444
     '#default_value' => $default['max_bytes_sec_down']/1000,
445 445
     '#size' => 1,
446 446
     '#description' => bts('Limit the download rate of file transfers.', array(), NULL, 'boinc:account-preferences-computing')
447
-  ); 
448
-  $form['prefs']['advanced']['network']['max_bytes_sec_up'] = array(
447
+    ); 
448
+    $form['prefs']['advanced']['network']['max_bytes_sec_up'] = array(
449 449
     '#title' => bts('Limit upload rate to', array(), NULL, 'boinc:account-preferences-computing'),
450 450
     '#type' => 'textfield',
451 451
     '#field_suffix' => 'Kbytes/sec',
452 452
     '#default_value' => $default['max_bytes_sec_up']/1000,
453 453
     '#size' => 1,
454 454
     '#description' => bts('Limit the upload rate of file transfers.', array(), NULL, 'boinc:account-preferences-computing')
455
-  );
456
-  $form['prefs']['advanced']['network']['hour_label'] = array(
455
+    );
456
+    $form['prefs']['advanced']['network']['hour_label'] = array(
457 457
     '#value' => '<div class="form-item"><label>' . bts('Transfer files only between', array(), NULL, 'boinc:account-preferences-computing') . '</label></div>'
458
-  );
459
-  $form['prefs']['advanced']['network']['net_start_hour'] = array(
458
+    );
459
+    $form['prefs']['advanced']['network']['net_start_hour'] = array(
460 460
     '#type' => 'select',
461 461
     '#options' => $form['hour_options']['#value'],
462 462
     '#default_value' => $default['net_start_hour']
463
-  );
464
-  $form['prefs']['advanced']['network']['hour_delimiter'] = array(
463
+    );
464
+    $form['prefs']['advanced']['network']['hour_delimiter'] = array(
465 465
     '#value' => '<span>' . bts('and', array(), NULL, 'boinc:account-preference') . '</span>'
466
-  );
467
-  $form['prefs']['advanced']['network']['net_end_hour'] = array(
466
+    );
467
+    $form['prefs']['advanced']['network']['net_end_hour'] = array(
468 468
     '#type' => 'select',
469 469
     '#options' => $form['hour_options']['#value'],
470 470
     '#default_value' => $default['net_end_hour']
471
-  );
472
-  $form['prefs']['advanced']['network']['hour_description'] = array(
471
+    );
472
+    $form['prefs']['advanced']['network']['hour_description'] = array(
473 473
     '#value' => '<div class="form-item slim"><div class="description">' . bts('Transfer files only during a particular period each day.', array(), NULL, 'boinc:account-preferences-computing') . '</div></div>'
474
-  ); 
475
-  $form['prefs']['advanced']['network']['daily_xfer_limit_mb'] = array(
474
+    ); 
475
+    $form['prefs']['advanced']['network']['daily_xfer_limit_mb'] = array(
476 476
     '#title' => bts('Limit usage to', array(), NULL, 'boinc:account-preferences-computing'),
477 477
     '#type' => 'textfield',
478 478
     '#field_suffix' => 'Mbytes',
479 479
     '#default_value' => $default['daily_xfer_limit_mb'],
480 480
     '#size' => 1
481
-  ); 
482
-  $form['prefs']['advanced']['network']['daily_xfer_period_days'] = array(
481
+    ); 
482
+    $form['prefs']['advanced']['network']['daily_xfer_period_days'] = array(
483 483
     '#field_prefix' => 'every',
484 484
     '#type' => 'textfield',
485 485
     '#field_suffix' => bts('days', array(), NULL, 'boinc:unit-of-time'),
486 486
     '#default_value' => $default['daily_xfer_period_days'],
487 487
     '#size' => 1,
488 488
     '#description' => bts('Example: BOINC should transfer at most 2000 MB of data every 30 days.', array(), NULL, 'boinc:account-preferences-computing'),
489
-  ); 
490
-  $form['prefs']['advanced']['network']['dont_verify_images'] = array(
489
+    ); 
490
+    $form['prefs']['advanced']['network']['dont_verify_images'] = array(
491 491
     '#title' => bts('Skip data verification for image files?', array(), NULL, 'boinc:account-preferences-computing'),
492 492
     '#type' => 'radios',
493 493
     '#options' => $form['boolean_options']['#value'],
494 494
     '#attributes' => array('class' => 'fancy'),
495 495
     '#default_value' => $default['dont_verify_images'],
496 496
     '#description' => bts('Only select "Yes" if your Internet provider modifies image files. Skipping verification reduces the security of BOINC.', array(), NULL, 'boinc:account-preferences-computing')
497
-  );
497
+    );
498 498
   
499
-  // The "fancy radios" are made via javascript on document load. In order for
500
-  // these to work with AHAH, we need this crazy setTimeout() call.
501
-  $form['prefs']['fancy-radios'] = array(
499
+    // The "fancy radios" are made via javascript on document load. In order for
500
+    // these to work with AHAH, we need this crazy setTimeout() call.
501
+    $form['prefs']['fancy-radios'] = array(
502 502
     '#value' => '
503 503
       <script>
504 504
         setTimeout(
@@ -509,177 +509,177 @@  discard block
 block discarded – undo
509 509
           300
510 510
         )
511 511
       </script>'
512
-  );
513
-  $form['prefs']['view advanced'] = array(
512
+    );
513
+    $form['prefs']['view advanced'] = array(
514 514
     '#type' => 'hidden',
515 515
     '#value' => 1
516
-  );
516
+    );
517 517
   
518
-  $form['prefs']['separator_bottom'] = array(
518
+    $form['prefs']['separator_bottom'] = array(
519 519
     '#value' => '<div class="separator buttons"></div>'
520
-  );
520
+    );
521 521
   
522
-  // Form control
523
-  $form['prefs']['form control tabs prefix'] = array(
522
+    // Form control
523
+    $form['prefs']['form control tabs prefix'] = array(
524 524
     '#value' => '<ul class="form-control tab-list">'
525
-  );
526
-  $form['prefs']['submit'] = array(
525
+    );
526
+    $form['prefs']['submit'] = array(
527 527
     '#prefix' => '<li class="first tab">',
528 528
     '#type' => 'submit',
529 529
     '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'),
530 530
     '#suffix' => '</li>'
531
-  );
532
-  $form['prefs']['form control tabs'] = array(
531
+    );
532
+    $form['prefs']['form control tabs'] = array(
533 533
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), drupal_get_path_alias("account/prefs/computing/edit")) . '</li>'
534
-  );
535
-  if ($venue AND $venue != 'generic') {
534
+    );
535
+    if ($venue AND $venue != 'generic') {
536 536
     global $base_path;
537 537
     $form['prefs']['form control tabs']['#value'] .= '<li class="tab">' . 
538
-      l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/computing/clear/{$venue}",
538
+        l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/computing/clear/{$venue}",
539 539
         array(
540
-          'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/computing/combined')),
541
-          'attributes' => array(
540
+            'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/computing/combined')),
541
+            'attributes' => array(
542 542
             'onclick' => 'return confirm(\'' . bts('This will remove all of your settings from the @name preference set. Are you sure?',
543
-              array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')'
544
-          )
543
+                array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')'
544
+            )
545 545
         )
546
-      ) . '</li>';
547
-  }
548
-  $form['prefs']['view control'] = array(
546
+        ) . '</li>';
547
+    }
548
+    $form['prefs']['view control'] = array(
549 549
     '#value' => '<li class="first alt tab">' . l('(' . bts('Show comparison view', array(), NULL, 'boinc:account-preferences') . ')', 'account/prefs/computing/combined') . '</li>'
550
-  );
551
-  $form['prefs']['form control tabs suffix'] = array(
550
+    );
551
+    $form['prefs']['form control tabs suffix'] = array(
552 552
     '#value' => '</ul>'
553
-  );
554
-  $form['#submit'][] = 'boincwork_generalprefs_form_submit';
553
+    );
554
+    $form['#submit'][] = 'boincwork_generalprefs_form_submit';
555 555
   
556
-  return $form;
556
+    return $form;
557 557
 }
558 558
 
559 559
 /**
560
-  * Validate the general preferences form.
561
-  */
560
+ * Validate the general preferences form.
561
+ */
562 562
 function boincwork_generalprefs_form_validate($form, &$form_state) {
563
-  require_boinc('util');
564
-  $values = $form_state['values']['prefs']['advanced'];
565
-  
566
-  //drupal_set_message('<pre>' . print_r($form_state['values'], true) . '</pre>');
567
-  // Verify all non-boolean user input values and notify form API of failures
568
-  
569
-  // Processing preferences
570
-  if (!verify_numeric($values['processor']['idle_time_to_run'], 1, 9999)) form_set_error('idle_time_to_run', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['idle_time_to_run']['#title']} [x] {$form['prefs']['advanced']['processor']['idle_time_to_run']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
571
-  if (!verify_numeric($values['processor']['suspend_if_no_recent_input'], 0, 9999)) form_set_error('suspend_if_no_recent_input', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['suspend_if_no_recent_input']['#title']} [x] {$form['prefs']['advanced']['processor']['suspend_if_no_recent_input']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
572
-  if (!verify_numeric($values['processor']['suspend_cpu_usage'], 0, 100)) form_set_error('suspend_cpu_usage', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['suspend_cpu_usage']['#title']} [x] {$form['prefs']['advanced']['processor']['suspend_cpu_usage']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
573
-  if (!verify_numeric($values['processor']['start_hour'], 0, 23)) form_set_error('start_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['start_hour']['#title']} [x] {$form['prefs']['advanced']['processor']['start_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
574
-  if (!verify_numeric($values['processor']['end_hour'], 0, 23)) form_set_error('end_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['end_hour']['#title']} [x] {$form['prefs']['advanced']['processor']['end_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
575
-  if (!verify_numeric($values['processor']['cpu_scheduling_period_minutes'], 1, 9999)) form_set_error('cpu_scheduling_period_minutes', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes']['#title']} [x] {$form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
576
-  if (!verify_numeric($values['processor']['max_ncpus_pct'], 0, 100)) form_set_error('max_ncpus_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['max_ncpus_pct']['#title']} [x] {$form['prefs']['advanced']['processor']['max_ncpus_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
577
-  if (!verify_numeric($values['processor']['cpu_usage_limit'], 0, 100)) form_set_error('cpu_usage_limit', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['cpu_usage_limit']['#title']} [x] {$form['prefs']['advanced']['processor']['cpu_usage_limit']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
578
-
579
-  // Storage preferences
580
-  if (!verify_numeric($values['storage']['disk_max_used_gb'], 0, 9999999)) form_set_error('disk_max_used_gb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_max_used_gb']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_max_used_gb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
581
-  if (!verify_numeric($values['storage']['disk_min_free_gb'], 0.001, 9999999)) form_set_error('disk_min_free_gb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_min_free_gb']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_min_free_gb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
582
-  if (!verify_numeric($values['storage']['disk_max_used_pct'], 0, 100)) form_set_error('disk_max_used_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_max_used_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_max_used_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
583
-  if (!verify_numeric($values['storage']['disk_interval'], 0, 9999999)) form_set_error('disk_interval', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_interval']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_interval']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
584
-  if (!verify_numeric($values['storage']['vm_max_used_pct'], 0, 100)) form_set_error('vm_max_used_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['vm_max_used_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['vm_max_used_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
585
-  if (!verify_numeric($values['storage']['ram_max_used_busy_pct'], 0, 100)) form_set_error('ram_max_used_busy_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['ram_max_used_busy_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['ram_max_used_busy_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
586
-  if (!verify_numeric($values['storage']['ram_max_used_idle_pct'], 0, 100)) form_set_error('ram_max_used_idle_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['ram_max_used_idle_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['ram_max_used_idle_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
587
-
588
-  // Network preferences
589
-  if (!verify_numeric($values['network']['work_buf_min_days'], 0, 10)) form_set_error('work_buf_min_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['work_buf_min_days']['#title']} [x] {$form['prefs']['advanced']['network']['work_buf_min_days']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
590
-  if (!verify_numeric($values['network']['work_buf_additional_days'], 0, 10)) form_set_error('work_buf_additional_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['work_buf_additional_days']['#title']} [x] {$form['prefs']['advanced']['network']['work_buf_additional_days']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
591
-  if (!verify_numeric($values['network']['max_bytes_sec_down'], 0, 9999.999)) form_set_error('max_bytes_sec_down', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['max_bytes_sec_down']['#title']} [x] {$form['prefs']['advanced']['network']['max_bytes_sec_down']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
592
-  if (!verify_numeric($values['network']['max_bytes_sec_up'], 0, 9999.999)) form_set_error('max_bytes_sec_up', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['max_bytes_sec_up']['#title']} [x] {$form['prefs']['advanced']['network']['max_bytes_sec_up']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
593
-  if (!verify_numeric($values['network']['net_start_hour'], 0, 23)) form_set_error('net_start_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['net_start_hour']['#title']} [x] {$form['prefs']['advanced']['network']['net_start_hour']['#field_suffix']}"), NULL, 'boinc:account-prefrences-computing'));
594
-  if (!verify_numeric($values['network']['net_end_hour'], 0, 23)) form_set_error('net_end_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['net_end_hour']['#title']} [x] {$form['prefs']['advanced']['network']['net_end_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
595
-  if (!verify_numeric($values['network']['daily_xfer_limit_mb'], 0, 9999999)) form_set_error('daily_xfer_limit_mb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#title']} [x] {$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
596
-  if (!verify_numeric($values['network']['daily_xfer_period_days'], 0, 9999999)) form_set_error('daily_xfer_period_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#title']} [x] {$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
563
+    require_boinc('util');
564
+    $values = $form_state['values']['prefs']['advanced'];
565
+  
566
+    //drupal_set_message('<pre>' . print_r($form_state['values'], true) . '</pre>');
567
+    // Verify all non-boolean user input values and notify form API of failures
568
+  
569
+    // Processing preferences
570
+    if (!verify_numeric($values['processor']['idle_time_to_run'], 1, 9999)) form_set_error('idle_time_to_run', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['idle_time_to_run']['#title']} [x] {$form['prefs']['advanced']['processor']['idle_time_to_run']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
571
+    if (!verify_numeric($values['processor']['suspend_if_no_recent_input'], 0, 9999)) form_set_error('suspend_if_no_recent_input', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['suspend_if_no_recent_input']['#title']} [x] {$form['prefs']['advanced']['processor']['suspend_if_no_recent_input']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
572
+    if (!verify_numeric($values['processor']['suspend_cpu_usage'], 0, 100)) form_set_error('suspend_cpu_usage', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['suspend_cpu_usage']['#title']} [x] {$form['prefs']['advanced']['processor']['suspend_cpu_usage']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
573
+    if (!verify_numeric($values['processor']['start_hour'], 0, 23)) form_set_error('start_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['start_hour']['#title']} [x] {$form['prefs']['advanced']['processor']['start_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
574
+    if (!verify_numeric($values['processor']['end_hour'], 0, 23)) form_set_error('end_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['end_hour']['#title']} [x] {$form['prefs']['advanced']['processor']['end_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
575
+    if (!verify_numeric($values['processor']['cpu_scheduling_period_minutes'], 1, 9999)) form_set_error('cpu_scheduling_period_minutes', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes']['#title']} [x] {$form['prefs']['advanced']['processor']['cpu_scheduling_period_minutes']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
576
+    if (!verify_numeric($values['processor']['max_ncpus_pct'], 0, 100)) form_set_error('max_ncpus_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['max_ncpus_pct']['#title']} [x] {$form['prefs']['advanced']['processor']['max_ncpus_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
577
+    if (!verify_numeric($values['processor']['cpu_usage_limit'], 0, 100)) form_set_error('cpu_usage_limit', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['processor']['cpu_usage_limit']['#title']} [x] {$form['prefs']['advanced']['processor']['cpu_usage_limit']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
578
+
579
+    // Storage preferences
580
+    if (!verify_numeric($values['storage']['disk_max_used_gb'], 0, 9999999)) form_set_error('disk_max_used_gb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_max_used_gb']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_max_used_gb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
581
+    if (!verify_numeric($values['storage']['disk_min_free_gb'], 0.001, 9999999)) form_set_error('disk_min_free_gb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_min_free_gb']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_min_free_gb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
582
+    if (!verify_numeric($values['storage']['disk_max_used_pct'], 0, 100)) form_set_error('disk_max_used_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_max_used_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_max_used_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
583
+    if (!verify_numeric($values['storage']['disk_interval'], 0, 9999999)) form_set_error('disk_interval', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['disk_interval']['#title']} [x] {$form['prefs']['advanced']['storage']['disk_interval']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
584
+    if (!verify_numeric($values['storage']['vm_max_used_pct'], 0, 100)) form_set_error('vm_max_used_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['vm_max_used_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['vm_max_used_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
585
+    if (!verify_numeric($values['storage']['ram_max_used_busy_pct'], 0, 100)) form_set_error('ram_max_used_busy_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['ram_max_used_busy_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['ram_max_used_busy_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
586
+    if (!verify_numeric($values['storage']['ram_max_used_idle_pct'], 0, 100)) form_set_error('ram_max_used_idle_pct', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['storage']['ram_max_used_idle_pct']['#title']} [x] {$form['prefs']['advanced']['storage']['ram_max_used_idle_pct']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
587
+
588
+    // Network preferences
589
+    if (!verify_numeric($values['network']['work_buf_min_days'], 0, 10)) form_set_error('work_buf_min_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['work_buf_min_days']['#title']} [x] {$form['prefs']['advanced']['network']['work_buf_min_days']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
590
+    if (!verify_numeric($values['network']['work_buf_additional_days'], 0, 10)) form_set_error('work_buf_additional_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['work_buf_additional_days']['#title']} [x] {$form['prefs']['advanced']['network']['work_buf_additional_days']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
591
+    if (!verify_numeric($values['network']['max_bytes_sec_down'], 0, 9999.999)) form_set_error('max_bytes_sec_down', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['max_bytes_sec_down']['#title']} [x] {$form['prefs']['advanced']['network']['max_bytes_sec_down']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
592
+    if (!verify_numeric($values['network']['max_bytes_sec_up'], 0, 9999.999)) form_set_error('max_bytes_sec_up', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['max_bytes_sec_up']['#title']} [x] {$form['prefs']['advanced']['network']['max_bytes_sec_up']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
593
+    if (!verify_numeric($values['network']['net_start_hour'], 0, 23)) form_set_error('net_start_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['net_start_hour']['#title']} [x] {$form['prefs']['advanced']['network']['net_start_hour']['#field_suffix']}"), NULL, 'boinc:account-prefrences-computing'));
594
+    if (!verify_numeric($values['network']['net_end_hour'], 0, 23)) form_set_error('net_end_hour', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['net_end_hour']['#title']} [x] {$form['prefs']['advanced']['network']['net_end_hour']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
595
+    if (!verify_numeric($values['network']['daily_xfer_limit_mb'], 0, 9999999)) form_set_error('daily_xfer_limit_mb', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#title']} [x] {$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
596
+    if (!verify_numeric($values['network']['daily_xfer_period_days'], 0, 9999999)) form_set_error('daily_xfer_period_days', bts('Invalid setting for "%preference"', array('%preference' => "{$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#title']} [x] {$form['prefs']['advanced']['network']['daily_xfer_limit_mb']['#field_suffix']}"), NULL, 'boinc:account-preferences-computing'));
597 597
 }
598 598
 
599 599
 /**
600
-  * Handle post-validation submission of general preferences form.
601
-  */
600
+ * Handle post-validation submission of general preferences form.
601
+ */
602 602
 function boincwork_generalprefs_form_submit($form, &$form_state) {
603
-  global $user;
604
-  $account = user_load($user->uid);
605
-  
606
-  $values = $form_state['values']['prefs']['advanced'];
607
-  $venue = $form_state['values']['prefs']['venue'];
608
-  $preset = $form_state['values']['prefs']['preset'];
609
-  
610
-  // Load preferences from BOINC account
611
-  $prefs = boincwork_load_prefs('general', $venue);
612
-  
613
-  // Processing preferences
614
-  $prefs['run_on_batteries'] = ($values['processor']['run_on_batteries']) ? 0 : 1;
615
-  $prefs['run_if_user_active'] = ($values['processor']['run_if_user_active']) ? 0 : 1;
616
-  $prefs['run_gpu_if_user_active'] = ($values['processor']['run_gpu_if_user_active']) ? 0 : 1;
617
-  $prefs['idle_time_to_run'] = $values['processor']['idle_time_to_run'];
618
-  $prefs['suspend_if_no_recent_input'] = $values['processor']['suspend_if_no_recent_input'];
619
-  $prefs['suspend_cpu_usage'] = $values['processor']['suspend_cpu_usage'];
620
-  $prefs['start_hour'] = $values['processor']['start_hour'];
621
-  $prefs['end_hour'] = $values['processor']['end_hour'];
622
-  $prefs['leave_apps_in_memory'] = ($values['processor']['leave_apps_in_memory']) ? 1 : 0;
623
-  $prefs['cpu_scheduling_period_minutes'] = $values['processor']['cpu_scheduling_period_minutes'];
624
-  $prefs['max_ncpus_pct'] = $values['processor']['max_ncpus_pct'];
625
-  $prefs['cpu_usage_limit'] = $values['processor']['cpu_usage_limit'];
626
-  
627
-  // Storage preferences
628
-  $prefs['disk_max_used_gb'] = $values['storage']['disk_max_used_gb'];
629
-  $prefs['disk_min_free_gb'] = $values['storage']['disk_min_free_gb'];
630
-  $prefs['disk_max_used_pct'] = $values['storage']['disk_max_used_pct'];
631
-  $prefs['disk_interval'] = $values['storage']['disk_interval'];
632
-  $prefs['vm_max_used_pct'] = $values['storage']['vm_max_used_pct'];
633
-  $prefs['ram_max_used_busy_pct'] = $values['storage']['ram_max_used_busy_pct'];
634
-  $prefs['ram_max_used_idle_pct'] = $values['storage']['ram_max_used_idle_pct'];
635
-  
636
-  // Network preferences
637
-  $prefs['work_buf_min_days'] = $values['network']['work_buf_min_days'];
638
-  $prefs['work_buf_additional_days'] = $values['network']['work_buf_additional_days'];
639
-  $prefs['confirm_before_connecting'] = ($values['network']['confirm_before_connecting']) ? 1 : 0;
640
-  $prefs['hangup_if_dialed'] = ($values['network']['hangup_if_dialed']) ? 1 : 0;
641
-  $prefs['max_bytes_sec_down'] = $values['network']['max_bytes_sec_down']*1000;
642
-  $prefs['max_bytes_sec_up'] = $values['network']['max_bytes_sec_up']*1000;
643
-  $prefs['net_start_hour'] = $values['network']['net_start_hour'];
644
-  $prefs['net_end_hour'] = $values['network']['net_end_hour'];
645
-  $prefs['daily_xfer_limit_mb'] = $values['network']['daily_xfer_limit_mb'];
646
-  $prefs['daily_xfer_period_days'] = $values['network']['daily_xfer_period_days'];
647
-  $prefs['dont_verify_images'] = ($values['network']['dont_verify_images']) ? 1 : 0;
648
-
649
-  // transform old way to store the preset into new way
650
-  // ideally this should already have happened in boincwork_generalprefs_form()
651
-  if (isset($prefs['@attributes']['preset'])) {
603
+    global $user;
604
+    $account = user_load($user->uid);
605
+  
606
+    $values = $form_state['values']['prefs']['advanced'];
607
+    $venue = $form_state['values']['prefs']['venue'];
608
+    $preset = $form_state['values']['prefs']['preset'];
609
+  
610
+    // Load preferences from BOINC account
611
+    $prefs = boincwork_load_prefs('general', $venue);
612
+  
613
+    // Processing preferences
614
+    $prefs['run_on_batteries'] = ($values['processor']['run_on_batteries']) ? 0 : 1;
615
+    $prefs['run_if_user_active'] = ($values['processor']['run_if_user_active']) ? 0 : 1;
616
+    $prefs['run_gpu_if_user_active'] = ($values['processor']['run_gpu_if_user_active']) ? 0 : 1;
617
+    $prefs['idle_time_to_run'] = $values['processor']['idle_time_to_run'];
618
+    $prefs['suspend_if_no_recent_input'] = $values['processor']['suspend_if_no_recent_input'];
619
+    $prefs['suspend_cpu_usage'] = $values['processor']['suspend_cpu_usage'];
620
+    $prefs['start_hour'] = $values['processor']['start_hour'];
621
+    $prefs['end_hour'] = $values['processor']['end_hour'];
622
+    $prefs['leave_apps_in_memory'] = ($values['processor']['leave_apps_in_memory']) ? 1 : 0;
623
+    $prefs['cpu_scheduling_period_minutes'] = $values['processor']['cpu_scheduling_period_minutes'];
624
+    $prefs['max_ncpus_pct'] = $values['processor']['max_ncpus_pct'];
625
+    $prefs['cpu_usage_limit'] = $values['processor']['cpu_usage_limit'];
626
+  
627
+    // Storage preferences
628
+    $prefs['disk_max_used_gb'] = $values['storage']['disk_max_used_gb'];
629
+    $prefs['disk_min_free_gb'] = $values['storage']['disk_min_free_gb'];
630
+    $prefs['disk_max_used_pct'] = $values['storage']['disk_max_used_pct'];
631
+    $prefs['disk_interval'] = $values['storage']['disk_interval'];
632
+    $prefs['vm_max_used_pct'] = $values['storage']['vm_max_used_pct'];
633
+    $prefs['ram_max_used_busy_pct'] = $values['storage']['ram_max_used_busy_pct'];
634
+    $prefs['ram_max_used_idle_pct'] = $values['storage']['ram_max_used_idle_pct'];
635
+  
636
+    // Network preferences
637
+    $prefs['work_buf_min_days'] = $values['network']['work_buf_min_days'];
638
+    $prefs['work_buf_additional_days'] = $values['network']['work_buf_additional_days'];
639
+    $prefs['confirm_before_connecting'] = ($values['network']['confirm_before_connecting']) ? 1 : 0;
640
+    $prefs['hangup_if_dialed'] = ($values['network']['hangup_if_dialed']) ? 1 : 0;
641
+    $prefs['max_bytes_sec_down'] = $values['network']['max_bytes_sec_down']*1000;
642
+    $prefs['max_bytes_sec_up'] = $values['network']['max_bytes_sec_up']*1000;
643
+    $prefs['net_start_hour'] = $values['network']['net_start_hour'];
644
+    $prefs['net_end_hour'] = $values['network']['net_end_hour'];
645
+    $prefs['daily_xfer_limit_mb'] = $values['network']['daily_xfer_limit_mb'];
646
+    $prefs['daily_xfer_period_days'] = $values['network']['daily_xfer_period_days'];
647
+    $prefs['dont_verify_images'] = ($values['network']['dont_verify_images']) ? 1 : 0;
648
+
649
+    // transform old way to store the preset into new way
650
+    // ideally this should already have happened in boincwork_generalprefs_form()
651
+    if (isset($prefs['@attributes']['preset'])) {
652 652
     $prefs['preset'] = $prefs['@attributes']['preset'];
653 653
     unset($prefs['@attributes']['preset']);
654
-  }
655
-  // Save the preset selection (or lack thereof)
656
-  if (!$preset OR $preset == 'custom') {
654
+    }
655
+    // Save the preset selection (or lack thereof)
656
+    if (!$preset OR $preset == 'custom') {
657 657
     $prefs['preset'] = 'custom';
658
-  }
659
-  else {
658
+    }
659
+    else {
660 660
     $prefs['preset'] = $preset;
661
-  }
661
+    }
662 662
   
663
-  // If this is a new preference set, be sure to unset the "cleared" attribute
664
-  if (isset($prefs['@attributes']['cleared'])) {
663
+    // If this is a new preference set, be sure to unset the "cleared" attribute
664
+    if (isset($prefs['@attributes']['cleared'])) {
665 665
     unset($prefs['@attributes']['cleared']);
666
-  }
666
+    }
667 667
   
668
-  // Update database
669
-  $result = boincwork_save_prefs($prefs, 'general', $venue);
668
+    // Update database
669
+    $result = boincwork_save_prefs($prefs, 'general', $venue);
670 670
   
671
-  if (!$result) {
671
+    if (!$result) {
672 672
     watchdog('boincwork', 'Error updating global prefs for user @id: @message', array('@id' => $account->id, '@message' => mysqli_error()), WATCHDOG_ERROR);
673 673
     drupal_set_message(t('Your changes could not be saved. Please contact support!'), 'error');
674
-  }
675
-  elseif (!drupal_get_messages('status', FALSE)) {
674
+    }
675
+    elseif (!drupal_get_messages('status', FALSE)) {
676 676
     // Show this message if the set wasn't created automatically (in which case
677 677
     // there is a message tailored to that) {
678 678
     drupal_set_message(t('Your preferences have been updated.
679 679
       Client-related preferences will take effect when your computer 
680 680
       communicates with @project or you issue the "Update"
681 681
       command from the BOINC client.', array('@project' => PROJECT)));
682
-  }
682
+    }
683 683
 }
684 684
 
685 685
 
@@ -691,88 +691,88 @@  discard block
 block discarded – undo
691 691
  * Find compatible hosts for merging
692 692
  */
693 693
 function boincwork_host_get_compatible_hosts($host_id) {
694
-  require_boinc('host');
695
-  global $user;
696
-  $account = user_load($user->uid);
697
-  $compatible_hosts = array();
698
-  $host_count = 0;
699
-  db_set_active('boinc_ro');
700
-  $current_host = db_fetch_object(db_query("
694
+    require_boinc('host');
695
+    global $user;
696
+    $account = user_load($user->uid);
697
+    $compatible_hosts = array();
698
+    $host_count = 0;
699
+    db_set_active('boinc_ro');
700
+    $current_host = db_fetch_object(db_query("
701 701
     SELECT id, domain_name, create_time, total_credit, rpc_time, os_name,
702 702
       p_vendor, p_model
703 703
     FROM {host}
704 704
     WHERE userid = '%d' AND id = '%d'",
705 705
     $account->boincuser_id, $host_id
706
-  ));
707
-  db_set_active('default');
708
-  $current_host->task_count = boincwork_host_get_task_count($current_host->id);
709
-  $current_host->is_new = !$current_host->total_credit AND !$current_host->task_count;
710
-  // Get the list of all other hosts owned by this user for comparison
711
-  db_set_active('boinc_ro');
712
-  $all_other_hosts = db_query("
706
+    ));
707
+    db_set_active('default');
708
+    $current_host->task_count = boincwork_host_get_task_count($current_host->id);
709
+    $current_host->is_new = !$current_host->total_credit AND !$current_host->task_count;
710
+    // Get the list of all other hosts owned by this user for comparison
711
+    db_set_active('boinc_ro');
712
+    $all_other_hosts = db_query("
713 713
     SELECT id, domain_name, create_time, total_credit, rpc_time, os_name,
714 714
       p_vendor, p_model
715 715
     FROM {host}
716 716
     WHERE userid = '%d' AND id <> '%d'",
717 717
     $account->boincuser_id, $host_id
718
-  );
719
-  db_set_active('default');
720
-  // Compare all hosts to see if any are plausible duplicates
721
-  while ($other_host = db_fetch_object($all_other_hosts)) {
718
+    );
719
+    db_set_active('default');
720
+    // Compare all hosts to see if any are plausible duplicates
721
+    while ($other_host = db_fetch_object($all_other_hosts)) {
722 722
     // First, disqualify if hosts were active at the same time
723 723
     if (!$current_host->is_new) {
724
-      $other_host->task_count = boincwork_host_get_task_count($other_host->id);
725
-      $other_host->is_new = !$other_host->total_credit AND !$other_host->task_count;
726
-      if (!$other_host->is_new) {
724
+        $other_host->task_count = boincwork_host_get_task_count($other_host->id);
725
+        $other_host->is_new = !$other_host->total_credit AND !$other_host->task_count;
726
+        if (!$other_host->is_new) {
727 727
         // If both hosts being compared are not new, see if times overlap
728 728
         if (!times_disjoint($current_host, $other_host)) {
729
-          // Hosts were active at the same time; can't be a duplicate
730
-          continue;
729
+            // Hosts were active at the same time; can't be a duplicate
730
+            continue;
731
+        }
731 732
         }
732
-      }
733 733
     }
734 734
     // Next, disqualify if hosts have different OS platforms
735 735
     if (!os_compatible($current_host, $other_host)) {
736
-      // Hosts have different OS platforms; not really a duplicate
737
-      continue;
736
+        // Hosts have different OS platforms; not really a duplicate
737
+        continue;
738 738
     }
739 739
     // Finally, disqualify if hosts have different CPUs
740 740
     if (!cpus_compatible($current_host, $other_host)) {
741
-      // CPUs don't match; not a duplicate
742
-      continue;
741
+        // CPUs don't match; not a duplicate
742
+        continue;
743 743
     }
744 744
     // If not disqualified, this host is available for merging
745 745
     $hosts[] = $other_host;
746 746
     $host_count++;
747 747
     if ($host_count == 500) {
748
-      // This is enough!
749
-      break;
748
+        // This is enough!
749
+        break;
750 750
     }
751
-  }
752
-  return $hosts;
751
+    }
752
+    return $hosts;
753 753
 }
754 754
 
755 755
 /**
756 756
  * Perform the database updates to merge the old host into the new host
757 757
  */
758 758
 function boincwork_host_merge($old_host, $new_host, &$message = NULL) {
759
-  // Decay the average credit of the two hosts
760
-  require_boinc('credit');
761
-  $now = time();
762
-  update_average($now, 0, 0, $old_host->expavg_credit, $old_host->expavg_time);
763
-  update_average($now, 0, 0, $new_host->expavg_credit, $new_host->expavg_time);
764
-  
765
-  // Update the database:
766
-  // - add credit from old host to new host
767
-  // - change results to refer to the new host
768
-  // - put old host in "zombie" state (userid=0, rpc_seqno=[new_host_id])
769
-  
770
-  $total_credit = $old_host->total_credit + $new_host->total_credit;
771
-  $recent_credit = $old_host->expavg_credit + $new_host->expavg_credit;
772
-  
773
-  // Move credit from the old host to the new host
774
-  db_set_active('boinc_rw');
775
-  $credit_updated = db_query("
759
+    // Decay the average credit of the two hosts
760
+    require_boinc('credit');
761
+    $now = time();
762
+    update_average($now, 0, 0, $old_host->expavg_credit, $old_host->expavg_time);
763
+    update_average($now, 0, 0, $new_host->expavg_credit, $new_host->expavg_time);
764
+  
765
+    // Update the database:
766
+    // - add credit from old host to new host
767
+    // - change results to refer to the new host
768
+    // - put old host in "zombie" state (userid=0, rpc_seqno=[new_host_id])
769
+  
770
+    $total_credit = $old_host->total_credit + $new_host->total_credit;
771
+    $recent_credit = $old_host->expavg_credit + $new_host->expavg_credit;
772
+  
773
+    // Move credit from the old host to the new host
774
+    db_set_active('boinc_rw');
775
+    $credit_updated = db_query("
776 776
     UPDATE {host}
777 777
     SET
778 778
       total_credit = '%d',
@@ -780,34 +780,34 @@  discard block
 block discarded – undo
780 780
       expavg_time = '%d'
781 781
     WHERE id = '%d'",
782 782
     $total_credit, $recent_credit, $now, $new_host->id
783
-  );
784
-  db_set_active('default');
785
-  if (!$credit_updated) {
783
+    );
784
+    db_set_active('default');
785
+    if (!$credit_updated) {
786 786
     if ($message !== NULL) {
787
-      $message = bts('Could not update credit', array(), NULL, 'boinc:account-host-merge');
787
+        $message = bts('Could not update credit', array(), NULL, 'boinc:account-host-merge');
788 788
     }
789 789
     return FALSE;
790
-  }
790
+    }
791 791
   
792
-  // Move results from the old host to the new host
793
-  db_set_active('boinc_rw');
794
-  $results_updated = db_query("
792
+    // Move results from the old host to the new host
793
+    db_set_active('boinc_rw');
794
+    $results_updated = db_query("
795 795
     UPDATE {result}
796 796
     SET hostid = '%d'
797 797
     WHERE hostid = '%d'",
798 798
     $new_host->id, $old_host->id
799
-  );
800
-  db_set_active('default');
801
-  if (!$results_updated) {
799
+    );
800
+    db_set_active('default');
801
+    if (!$results_updated) {
802 802
     if ($message !== NULL) {
803
-      $message = bts('Could not update results', array(), NULL, 'boinc:account-host-merge');
803
+        $message = bts('Could not update results', array(), NULL, 'boinc:account-host-merge');
804 804
     }
805 805
     return FALSE;
806
-  }
806
+    }
807 807
   
808
-  // Retire the old host
809
-  db_set_active('boinc_rw');
810
-  $old_host_retired = db_query("
808
+    // Retire the old host
809
+    db_set_active('boinc_rw');
810
+    $old_host_retired = db_query("
811 811
     UPDATE {host}
812 812
     SET
813 813
       total_credit = '0',
@@ -816,16 +816,16 @@  discard block
 block discarded – undo
816 816
       rpc_seqno = '%d'
817 817
     WHERE id = '%d'",
818 818
     $new_host->id, $old_host->id
819
-  );
820
-  db_set_active('default');
821
-  if (!$old_host_retired) {
819
+    );
820
+    db_set_active('default');
821
+    if (!$old_host_retired) {
822 822
     if ($message !== NULL) {
823
-      $message = bts('Could not retire old computer', array(), NULL, 'boinc:account-host-merge');
823
+        $message = bts('Could not retire old computer', array(), NULL, 'boinc:account-host-merge');
824 824
     }
825 825
     return FALSE;
826
-  }
826
+    }
827 827
   
828
-  return TRUE;
828
+    return TRUE;
829 829
 }
830 830
 
831 831
 /**
@@ -833,75 +833,75 @@  discard block
 block discarded – undo
833 833
  */
834 834
 function boincwork_host_merge_form(&$form_state, $host_id) {
835 835
 
836
-  if (!boincwork_host_user_is_owner($host_id)) {
836
+    if (!boincwork_host_user_is_owner($host_id)) {
837 837
     drupal_goto("host/{$host_id}");
838
-  }
838
+    }
839 839
   
840
-  $form = array();
841
-  $form_state['storage']['current_host_id'] = $host_id;
842
-  $current_host = boincwork_host_get_info($host_id);
840
+    $form = array();
841
+    $form_state['storage']['current_host_id'] = $host_id;
842
+    $current_host = boincwork_host_get_info($host_id);
843 843
   
844
-  // Get hosts that could be merged with this one
845
-  $hosts = boincwork_host_get_compatible_hosts($host_id);
844
+    // Get hosts that could be merged with this one
845
+    $hosts = boincwork_host_get_compatible_hosts($host_id);
846 846
   
847
-  if (!$hosts) {
847
+    if (!$hosts) {
848 848
     drupal_set_message(t('There are no computers eligible for merging with this
849 849
       one'), 'warning'
850 850
     );
851 851
     drupal_goto("host/{$host_id}");
852
-  }
852
+    }
853 853
   
854
-  $form['overview'] = array(
854
+    $form['overview'] = array(
855 855
     '#value' => '<p>' . bts('Sometimes BOINC assigns separate identities to'
856
-      . ' the same computer by mistake. You can correct this by merging old'
857
-      . ' identities with the newest one.', array(), NULL, 'boinc:account-host-merge') . '</p>'
858
-      . '<p>'
859
-      . bts('Check the computers that are the same as @name'
860
-      . ' (created on @date at @time with computer ID @id)',
856
+        . ' the same computer by mistake. You can correct this by merging old'
857
+        . ' identities with the newest one.', array(), NULL, 'boinc:account-host-merge') . '</p>'
858
+        . '<p>'
859
+        . bts('Check the computers that are the same as @name'
860
+        . ' (created on @date at @time with computer ID @id)',
861 861
         array(
862
-          '@name' => $current_host->domain_name,
863
-          '@date' => date('j M Y', $current_host->create_time),
864
-          '@time' => date('G:i:s T', $current_host->create_time),
865
-          '@id' => $current_host->id,
862
+            '@name' => $current_host->domain_name,
863
+            '@date' => date('j M Y', $current_host->create_time),
864
+            '@time' => date('G:i:s T', $current_host->create_time),
865
+            '@id' => $current_host->id,
866 866
         ),
867 867
         NULL, 'boinc:account-host-merge') . '</p>',
868
-  );
868
+    );
869 869
   
870
-  $options = array();
871
-  foreach ($hosts as $host) {
870
+    $options = array();
871
+    foreach ($hosts as $host) {
872 872
     $options[$host->id] = array(
873
-      $host->domain_name,
874
-      date('j M Y G:i:s T', $host->create_time),
875
-      $host->id,
873
+        $host->domain_name,
874
+        date('j M Y G:i:s T', $host->create_time),
875
+        $host->id,
876 876
     );
877
-  }
877
+    }
878 878
   
879
-  $form['merge'] = array(
879
+    $form['merge'] = array(
880 880
     '#title' => '',
881 881
     '#type' => 'tableselect',
882 882
     '#header' => array(bts('Name', array(), NULL, 'boinc:details:-1:name-of-the-host-or-task-or-workunit-etc-being-viewed-ignoreoverwrite'), bts('Created', array(), NULL, 'boinc:host-details'), bts('Computer ID', array(), NULL, 'boinc:host-list')),
883 883
     '#options' => $options,
884
-  );
884
+    );
885 885
   
886
-  $form['prefs']['separator_bottom'] = array(
887
-  //  '#value' => '<div class="separator buttons"></div>'
888
-  );
886
+    $form['prefs']['separator_bottom'] = array(
887
+    //  '#value' => '<div class="separator buttons"></div>'
888
+    );
889 889
   
890
-  // Form control
891
-  $form['prefs']['form control tabs prefix'] = array(
890
+    // Form control
891
+    $form['prefs']['form control tabs prefix'] = array(
892 892
     '#value' => '<ul class="form-control tab-list">'
893
-  );
894
-  $form['prefs']['submit'] = array(
893
+    );
894
+    $form['prefs']['submit'] = array(
895 895
     '#prefix' => '<li class="first tab">',
896 896
     '#type' => 'submit',
897 897
     '#value' => bts('Merge', array(), NULL, 'boinc:form-merge'),
898 898
     '#suffix' => '</li>'
899
-  );
900
-  $form['prefs']['form control tabs'] = array(
899
+    );
900
+    $form['prefs']['form control tabs'] = array(
901 901
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "host/{$host_id}") . '</li>'
902
-  );
902
+    );
903 903
   
904
-  return $form;
904
+    return $form;
905 905
 }
906 906
 
907 907
 /**
@@ -914,76 +914,76 @@  discard block
 block discarded – undo
914 914
  * Handle submission of the merge host form
915 915
  */
916 916
 function boincwork_host_merge_form_submit($form, &$form_state) {
917
-  $merged = array();
918
-  $errors = array();
919
-  $current_host_id = $form_state['storage']['current_host_id'];
920
-  $current_host = boincwork_host_get_info($current_host_id);
921
-  $selected_hosts = array_filter($form_state['values']['merge']);
917
+    $merged = array();
918
+    $errors = array();
919
+    $current_host_id = $form_state['storage']['current_host_id'];
920
+    $current_host = boincwork_host_get_info($current_host_id);
921
+    $selected_hosts = array_filter($form_state['values']['merge']);
922 922
   
923
-  foreach ($selected_hosts as $host_id) {
923
+    foreach ($selected_hosts as $host_id) {
924 924
     // Attempt to merge each host, noting the results
925 925
     $message = '';
926 926
     $old_host = boincwork_host_get_info($host_id);
927 927
     if (boincwork_host_merge($old_host, $current_host, $message)) {
928
-      $merged[$old_host->id] = $old_host->id;
929
-      $current_host = boincwork_host_get_info($current_host_id);
928
+        $merged[$old_host->id] = $old_host->id;
929
+        $current_host = boincwork_host_get_info($current_host_id);
930 930
     }
931 931
     else {
932
-      $errors[$old_host->id] = $message;
932
+        $errors[$old_host->id] = $message;
933
+    }
933 934
     }
934
-  }
935 935
   
936
-  if ($merged) {
936
+    if ($merged) {
937 937
     // Generate a natural language list of IDs that were merged
938 938
     $oxford_comma = ',';
939 939
     $conjunction = bts('and', array(), NULL, 'boinc:account-preference');
940 940
     $list = array_keys($merged);
941 941
     $last = array_pop($list);
942 942
     if ($list) {
943
-      if (count($merged) == 2) {
943
+        if (count($merged) == 2) {
944 944
         $oxford_comma = '';
945
-      }
946
-      $list = implode(', ', $list) . $oxford_comma . ' ' . $conjunction . ' ' . $last;
945
+        }
946
+        $list = implode(', ', $list) . $oxford_comma . ' ' . $conjunction . ' ' . $last;
947 947
     }
948 948
     else {
949
-      $list = $last;
949
+        $list = $last;
950 950
     }
951 951
     if (count($merged) == 1) {
952
-      drupal_set_message(bts(
952
+        drupal_set_message(bts(
953 953
         'Computer @old_id has been merged successfully into @id.',
954 954
         array(
955
-          '@old_id' => $list,
956
-          '@id' => $current_host_id
955
+            '@old_id' => $list,
956
+            '@id' => $current_host_id
957 957
         ),
958 958
         NULL, 'boinc:account-host-merge'));
959 959
     }
960 960
     else {
961
-      drupal_set_message(bts(
961
+        drupal_set_message(bts(
962 962
         'Computers @old_ids have been merged successfully into @id.',
963 963
         array(
964
-          '@old_ids' => $list,
965
-          '@id' => $current_host_id
964
+            '@old_ids' => $list,
965
+            '@id' => $current_host_id
966 966
         ),
967 967
         NULL, 'boinc:account-host-merge'));
968 968
     }
969
-  }
969
+    }
970 970
   
971
-  if ($errors) {
971
+    if ($errors) {
972 972
     // Report any hosts that failed to merge
973 973
     foreach ($errors as $id => $error) {
974
-      drupal_set_message(
974
+        drupal_set_message(
975 975
         bts('Computer @old_id failed to merge: @message',
976
-          array(
976
+            array(
977 977
             '@old_id' => $id,
978 978
             '@message' => $error,
979
-          ),
980
-          NULL, 'boinc:account-host-merge'),
979
+            ),
980
+            NULL, 'boinc:account-host-merge'),
981 981
         'warning'
982
-      );
982
+        );
983
+    }
983 984
     }
984
-  }
985 985
   
986
-  drupal_goto("host/{$current_host_id}");
986
+    drupal_goto("host/{$current_host_id}");
987 987
 }
988 988
 
989 989
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -995,44 +995,44 @@  discard block
 block discarded – undo
995 995
  */
996 996
 function boincwork_projectprefs_form(&$form_state, $venue) {
997 997
   
998
-  global $user;
999
-  $account = user_load($user->uid);
998
+    global $user;
999
+    $account = user_load($user->uid);
1000 1000
   
1001
-  $established = TRUE;
1001
+    $established = TRUE;
1002 1002
   
1003
-  // Get availability of special BOINC preferences
1004
-  require_boinc(array('util'));
1005
-  $app_types = get_app_types();
1003
+    // Get availability of special BOINC preferences
1004
+    require_boinc(array('util'));
1005
+    $app_types = get_app_types();
1006 1006
   
1007
-  // Load any existing preferences from BOINC account
1008
-  $prefs = boincwork_load_prefs('project', $venue);
1007
+    // Load any existing preferences from BOINC account
1008
+    $prefs = boincwork_load_prefs('project', $venue);
1009 1009
   
1010
-  // Take note if this is not an established preference set on the account
1011
-  if (isset($prefs['@attributes']['cleared'])) {
1010
+    // Take note if this is not an established preference set on the account
1011
+    if (isset($prefs['@attributes']['cleared'])) {
1012 1012
     $established = FALSE;
1013
-  }
1013
+    }
1014 1014
 
1015
-  // Extract modified tag if present
1016
-  $modified = NULL;
1017
-  if (isset($prefs['modified']['@value'])) {
1015
+    // Extract modified tag if present
1016
+    $modified = NULL;
1017
+    if (isset($prefs['modified']['@value'])) {
1018 1018
     $modified = $prefs['modified']['@value'];
1019
-  }
1019
+    }
1020 1020
 
1021
-  $venue_is_default = FALSE;
1022
-  if ($account->boincuser_default_pref_set) {
1021
+    $venue_is_default = FALSE;
1022
+    if ($account->boincuser_default_pref_set) {
1023 1023
     if ($account->boincuser_default_pref_set == $venue) {
1024
-      $venue_is_default = TRUE;
1024
+        $venue_is_default = TRUE;
1025 1025
     }
1026
-  }
1027
-  elseif (!$venue OR $venue == 'generic') {
1026
+    }
1027
+    elseif (!$venue OR $venue == 'generic') {
1028 1028
     $venue_is_default = TRUE;
1029
-  }
1030
-  else {
1029
+    }
1030
+    else {
1031 1031
     $venue_is_default = FALSE;
1032
-  }
1032
+    }
1033 1033
   
1034
-  // Define form defaults
1035
-  $default = array(
1034
+    // Define form defaults
1035
+    $default = array(
1036 1036
     'resource_share' => 100,
1037 1037
     'no_cpu' => 0,
1038 1038
     'no_cuda' => 0,
@@ -1040,333 +1040,333 @@  discard block
 block discarded – undo
1040 1040
     'no_intel_gpu' => 0,
1041 1041
     'default_venue' => $venue_is_default,
1042 1042
     'allow_beta_work' => $prefs['allow_beta_work'],
1043
-  );
1044
-  foreach ($default as $name => $value) {
1043
+    );
1044
+    foreach ($default as $name => $value) {
1045 1045
     if (isset($prefs[$name])) {
1046
-      if (is_array($prefs[$name])) {
1046
+        if (is_array($prefs[$name])) {
1047 1047
         if (isset($prefs[$name]['@value'])) {
1048
-          $default[$name] = $prefs[$name]['@value'];
1048
+            $default[$name] = $prefs[$name]['@value'];
1049 1049
         }
1050
-      }
1051
-      else {
1050
+        }
1051
+        else {
1052 1052
         $default[$name] = $prefs[$name];
1053
-      }
1053
+        }
1054
+    }
1054 1055
     }
1055
-  }
1056 1056
   
1057
-  // Standard option sets
1058
-  $form['boolean_options'] = array(
1057
+    // Standard option sets
1058
+    $form['boolean_options'] = array(
1059 1059
     '#type' => 'value',
1060 1060
     '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes'))
1061
-  );
1061
+    );
1062 1062
   
1063
-  // Identify preference sets that are established to distinguish what has been
1064
-  // saved to the database from what is just showing default values
1065
-  $form['#established'] = $established;
1063
+    // Identify preference sets that are established to distinguish what has been
1064
+    // saved to the database from what is just showing default values
1065
+    $form['#established'] = $established;
1066 1066
   
1067
-  // Top level form options
1068
-  $form['#tree'] = TRUE;
1067
+    // Top level form options
1068
+    $form['#tree'] = TRUE;
1069 1069
   
1070
-  // Hidden elements
1071
-  $form['modified'] = array(
1070
+    // Hidden elements
1071
+    $form['modified'] = array(
1072 1072
     '#type' => 'hidden',
1073 1073
     '#value' => $modified,
1074
-  );
1075
-  $form['venue'] = array(
1074
+    );
1075
+    $form['venue'] = array(
1076 1076
     '#type' => 'hidden',
1077 1077
     '#value' => $venue,
1078
-  );
1078
+    );
1079 1079
   
1080
-  $form['separator_top'] = array(
1080
+    $form['separator_top'] = array(
1081 1081
     '#value' => '<div class="separator"></div>'
1082
-  );
1082
+    );
1083 1083
   
1084
-  // Common project preferences  
1085
-  $form['resource'] = array(
1084
+    // Common project preferences  
1085
+    $form['resource'] = array(
1086 1086
     '#title' => bts('Resource settings', array(), NULL, 'boinc:account-preferences-project'),
1087 1087
     '#type' => 'fieldset',
1088 1088
     '#description' => null,
1089 1089
     '#collapsible' => TRUE,
1090 1090
     '#collapsed' => FALSE
1091
-  );
1092
-  $form['resource']['resource_share'] = array(
1091
+    );
1092
+    $form['resource']['resource_share'] = array(
1093 1093
     '#title' => bts('Resource share', array(), NULL, 'boinc:account-preferences-project'),
1094 1094
     '#type' => 'textfield',
1095 1095
     '#default_value' => $default['resource_share'],
1096 1096
     '#size' => 5,
1097 1097
     '#description' => bts("Determines the proportion of your computer's resources allocated to this project. Example: if you participate in two BOINC projects with resource shares of 100 and 200, the first will get 1/3 of your resources and the second will get 2/3.", array(), NULL, 'boinc:account-preferences-project')
1098
-  );
1099
-  if ($app_types->count > 1) {
1098
+    );
1099
+    if ($app_types->count > 1) {
1100 1100
     if ($app_types->cpu) {
1101
-      $form['resource']['no_cpu'] = array(
1101
+        $form['resource']['no_cpu'] = array(
1102 1102
         '#title' => bts('Use CPU', array(), NULL, 'boinc:account-preferences-project'),
1103 1103
         '#type' => 'radios',
1104 1104
         '#options' => $form['boolean_options']['#value'],
1105 1105
         '#attributes' => array('class' => 'fancy'),
1106 1106
         '#default_value' => $default['no_cpu'] ? 0 : 1,
1107 1107
         '#description' => bts('Request CPU-only tasks from this project.', array(), NULL, 'boinc:account-preferences-project')
1108
-      );
1108
+        );
1109 1109
     }
1110 1110
     if ($app_types->cuda) {
1111
-      $form['resource']['no_cuda'] = array(
1111
+        $form['resource']['no_cuda'] = array(
1112 1112
         '#title' => bts('Use NVIDIA GPU', array(), NULL, 'boinc:account-preferences-project'),
1113 1113
         '#type' => 'radios',
1114 1114
         '#options' => $form['boolean_options']['#value'],
1115 1115
         '#attributes' => array('class' => 'fancy'),
1116 1116
         '#default_value' => $default['no_cuda'] ? 0 : 1,
1117 1117
         '#description' => bts('Request NVIDIA GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project')
1118
-      );
1118
+        );
1119 1119
     }
1120 1120
     if ($app_types->ati) {
1121
-      $form['resource']['no_ati'] = array(
1121
+        $form['resource']['no_ati'] = array(
1122 1122
         '#title' => bts('Use AMD GPU', array(), NULL, 'boinc:account-preferences-project'),
1123 1123
         '#type' => 'radios',
1124 1124
         '#options' => $form['boolean_options']['#value'],
1125 1125
         '#attributes' => array('class' => 'fancy'),
1126 1126
         '#default_value' => $default['no_ati'] ? 0 : 1,
1127 1127
         '#description' => bts('Request AMD GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project')
1128
-      );
1128
+        );
1129 1129
     }
1130 1130
     if ($app_types->intel_gpu) {
1131
-      $form['resource']['no_intel_gpu'] = array(
1131
+        $form['resource']['no_intel_gpu'] = array(
1132 1132
         '#title' => bts('Use INTEL GPU', array(), NULL, 'boinc:account-preferences-project'),
1133 1133
         '#type' => 'radios',
1134 1134
         '#options' => $form['boolean_options']['#value'],
1135 1135
         '#attributes' => array('class' => 'fancy'),
1136 1136
         '#default_value' => $default['no_intel_gpu'] ? 0 : 1,
1137 1137
         '#description' => bts('Request Intel GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project')
1138
-      );
1138
+        );
1139
+    }
1139 1140
     }
1140
-  }
1141 1141
   
1142
-  if (variable_get('boinc_prefs_options_beta', FALSE)) {
1142
+    if (variable_get('boinc_prefs_options_beta', FALSE)) {
1143 1143
     $form['beta'] = array(
1144
-      '#title' => bts('Beta settings', array(), NULL, 'boinc:account-preferences-project'),
1145
-      '#type' => 'fieldset',
1146
-      '#description' => null,
1147
-      '#collapsible' => TRUE,
1148
-      '#collapsed' => FALSE
1144
+        '#title' => bts('Beta settings', array(), NULL, 'boinc:account-preferences-project'),
1145
+        '#type' => 'fieldset',
1146
+        '#description' => null,
1147
+        '#collapsible' => TRUE,
1148
+        '#collapsed' => FALSE
1149 1149
     );
1150 1150
     $form['beta']['allow_beta_work'] = array(
1151
-      '#title' => bts('Run test applications?', array(), NULL, 'boinc:account-preferences-project'),
1152
-      '#type' => 'radios',
1153
-      '#options' => $form['boolean_options']['#value'],
1154
-      '#attributes' => array('class' => 'fancy'),
1155
-      '#default_value' => ($default['allow_beta_work']) ? 1 : 0,
1156
-      '#description' => bts('This helps us develop applications, but may cause jobs to fail on your computer', array(), NULL, 'boinc:account-preferences-project')
1151
+        '#title' => bts('Run test applications?', array(), NULL, 'boinc:account-preferences-project'),
1152
+        '#type' => 'radios',
1153
+        '#options' => $form['boolean_options']['#value'],
1154
+        '#attributes' => array('class' => 'fancy'),
1155
+        '#default_value' => ($default['allow_beta_work']) ? 1 : 0,
1156
+        '#description' => bts('This helps us develop applications, but may cause jobs to fail on your computer', array(), NULL, 'boinc:account-preferences-project')
1157 1157
     );
1158
-  }
1158
+    }
1159 1159
   
1160
-  // Add project specific prefs to the form
1161
-  boincwork_add_project_specific_prefs($form, $prefs);
1160
+    // Add project specific prefs to the form
1161
+    boincwork_add_project_specific_prefs($form, $prefs);
1162 1162
   
1163
-  // Set whether to use this preference set by default for new computers
1164
-  $form['default_set'] = array(
1163
+    // Set whether to use this preference set by default for new computers
1164
+    $form['default_set'] = array(
1165 1165
     '#title' => bts('Default set', array(), NULL, 'boinc:account-preferences-project'),
1166 1166
     '#type' => 'fieldset',
1167 1167
     '#description' => null,
1168 1168
     '#collapsible' => TRUE,
1169 1169
     '#collapsed' => FALSE
1170
-  );
1171
-  $form['default_set']['default_venue'] = array(
1170
+    );
1171
+    $form['default_set']['default_venue'] = array(
1172 1172
     '#title' => bts('Set used for new computers', array(), NULL, 'boinc:account-preferences-project'),
1173 1173
     '#type' => 'radios',
1174 1174
     '#options' => $form['boolean_options']['#value'],
1175 1175
     '#attributes' => array('class' => 'fancy'),
1176 1176
     '#default_value' => $default['default_venue'] ? 1 : 0,
1177 1177
     '#description' => ''
1178
-  );
1178
+    );
1179 1179
   
1180
-  $form['prefs']['separator_bottom'] = array(
1180
+    $form['prefs']['separator_bottom'] = array(
1181 1181
     '#value' => '<div class="separator buttons"></div>'
1182
-  );
1182
+    );
1183 1183
   
1184
-  // Form control
1185
-  $form['prefs']['form control tabs prefix'] = array(
1184
+    // Form control
1185
+    $form['prefs']['form control tabs prefix'] = array(
1186 1186
     '#value' => '<ul class="form-control tab-list">'
1187
-  );
1188
-  $form['prefs']['submit'] = array(
1187
+    );
1188
+    $form['prefs']['submit'] = array(
1189 1189
     '#prefix' => '<li class="first tab">',
1190 1190
     '#type' => 'submit',
1191 1191
     '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'),
1192 1192
     '#suffix' => '</li>'
1193
-  );
1194
-  $form['prefs']['form control tabs'] = array(
1193
+    );
1194
+    $form['prefs']['form control tabs'] = array(
1195 1195
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>'
1196
-  );
1197
-  if ($venue AND $venue != 'generic') {
1196
+    );
1197
+    if ($venue AND $venue != 'generic') {
1198 1198
     global $base_path;
1199 1199
     $form['prefs']['form control tabs']['#value'] .= '<li class="tab">' . 
1200
-      l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/project/clear/{$venue}",
1200
+        l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/project/clear/{$venue}",
1201 1201
         array(
1202
-          'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/project/combined')),
1203
-          'attributes' => array(
1202
+            'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/project/combined')),
1203
+            'attributes' => array(
1204 1204
             'onclick' => 'return confirm(\'' . bts('This will remove all of your settings from the @name preference set. Are you sure?',
1205
-              array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')'
1206
-          )
1205
+                array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')'
1206
+            )
1207 1207
         )
1208
-      ) . '</li>';
1209
-  }
1210
-  $form['prefs']['view control'] = array(
1211
-      '#value' => '<li class="first alt tab">' . l('(' . bts('Show comparison view', array(), NULL, 'boinc:account-preferences') . ')', 'account/prefs/project/combined') . '</li>'
1212
-  );
1213
-  $form['prefs']['form control tabs suffix'] = array(
1208
+        ) . '</li>';
1209
+    }
1210
+    $form['prefs']['view control'] = array(
1211
+        '#value' => '<li class="first alt tab">' . l('(' . bts('Show comparison view', array(), NULL, 'boinc:account-preferences') . ')', 'account/prefs/project/combined') . '</li>'
1212
+    );
1213
+    $form['prefs']['form control tabs suffix'] = array(
1214 1214
     '#value' => '</ul>'
1215
-  );
1215
+    );
1216 1216
   
1217
-  return $form;
1217
+    return $form;
1218 1218
 }
1219 1219
 
1220 1220
 /**
1221 1221
  * Add project specific preferences to the project preferences form
1222 1222
  */
1223 1223
 function boincwork_add_project_specific_prefs(&$form, $prefs) {
1224
-  // Load project specific preferences from XML config
1225
-  $xml = boincwork_get_project_specific_config();
1224
+    // Load project specific preferences from XML config
1225
+    $xml = boincwork_get_project_specific_config();
1226 1226
   
1227
-  // Respect the order of the top level elements
1228
-  $ordered_array = array();
1229
-  $unordered_array = array();
1230
-  foreach ($xml['project_specific_preferences'] as $type => $element) {
1227
+    // Respect the order of the top level elements
1228
+    $ordered_array = array();
1229
+    $unordered_array = array();
1230
+    foreach ($xml['project_specific_preferences'] as $type => $element) {
1231 1231
     if (is_array($element) AND is_numeric(key($element))) {
1232
-      foreach ($element as $ordered_element) {
1232
+        foreach ($element as $ordered_element) {
1233 1233
         if (isset($ordered_element['@position'])) {
1234
-          $ordered_array[$ordered_element['@position']] = array($type => $ordered_element);
1234
+            $ordered_array[$ordered_element['@position']] = array($type => $ordered_element);
1235 1235
         }
1236 1236
         else {
1237
-          $unordered_array[] = array($type => $ordered_element);
1237
+            $unordered_array[] = array($type => $ordered_element);
1238
+        }
1238 1239
         }
1239
-      }
1240 1240
     }
1241 1241
     elseif (isset($element['@position'])) {
1242
-      $ordered_array[$element['@position']] = array($type => $element);
1242
+        $ordered_array[$element['@position']] = array($type => $element);
1243 1243
     }
1244 1244
     else {
1245
-      $unordered_array[] = array($type => $element);
1245
+        $unordered_array[] = array($type => $element);
1246
+    }
1246 1247
     }
1247
-  }
1248
-  ksort($ordered_array);
1249
-  $primed_array = array_merge($ordered_array, $unordered_array);
1250
-  $xml = array('project_specific_preferences' => $primed_array);
1248
+    ksort($ordered_array);
1249
+    $primed_array = array_merge($ordered_array, $unordered_array);
1250
+    $xml = array('project_specific_preferences' => $primed_array);
1251 1251
     
1252
-  foreach ($xml['project_specific_preferences'] as $wrapped_element) {
1252
+    foreach ($xml['project_specific_preferences'] as $wrapped_element) {
1253 1253
     $type = key($wrapped_element);
1254 1254
     $element= reset($wrapped_element);
1255 1255
     boincwork_generate_prefs_element($form, $type, $element, $prefs['project_specific']);
1256
-  }
1256
+    }
1257 1257
 }
1258 1258
 
1259 1259
 /**
1260
-  * Validate the project preferences form.
1261
-  */
1260
+ * Validate the project preferences form.
1261
+ */
1262 1262
 function boincwork_projectprefs_form_validate($form, &$form_state) {
1263 1263
   
1264
-  // Verify all text user input values and notify form API of failures
1265
-  $validation_rules = array(
1264
+    // Verify all text user input values and notify form API of failures
1265
+    $validation_rules = array(
1266 1266
     'resource' => array(
1267
-      'resource_share' => array(
1267
+        'resource_share' => array(
1268 1268
         'datatype' => 'integer',
1269 1269
         'min' => 0
1270
-      ),
1270
+        ),
1271 1271
     ),
1272
-  );
1272
+    );
1273 1273
   
1274
-  // Add validation rules for project specific settings
1275
-  $validation_rules += boincwork_get_project_specific_config_validation_rules();
1274
+    // Add validation rules for project specific settings
1275
+    $validation_rules += boincwork_get_project_specific_config_validation_rules();
1276 1276
   
1277
-  // Perform validation
1278
-  boincwork_validate_form($validation_rules, $form_state['values']);
1277
+    // Perform validation
1278
+    boincwork_validate_form($validation_rules, $form_state['values']);
1279 1279
   
1280
-  // Check for app validation
1281
-  if (isset($validation_rules['apps'])) {
1280
+    // Check for app validation
1281
+    if (isset($validation_rules['apps'])) {
1282 1282
     if (isset($validation_rules['apps']['minimum selected'])
1283 1283
         AND $validation_rules['apps']['minimum selected'] > 0) {
1284
-      $apps_selected = 0;
1285
-      foreach ($validation_rules['apps']['list'] as $app) {
1284
+        $apps_selected = 0;
1285
+        foreach ($validation_rules['apps']['list'] as $app) {
1286 1286
         if ($form_state['values']['applications'][$app]) $apps_selected++;
1287
-      }
1288
-      if ($apps_selected < $validation_rules['apps']['minimum selected']) {
1287
+        }
1288
+        if ($apps_selected < $validation_rules['apps']['minimum selected']) {
1289 1289
         form_set_error(
1290
-          'applications',
1291
-          bts('At least one application must be selected', array(), NULL, 'boinc:account-preferences-project')
1290
+            'applications',
1291
+            bts('At least one application must be selected', array(), NULL, 'boinc:account-preferences-project')
1292 1292
         );
1293
-      }
1294
-      if ($apps_selected == count($validation_rules['apps']['list'])) {
1293
+        }
1294
+        if ($apps_selected == count($validation_rules['apps']['list'])) {
1295 1295
         foreach ($validation_rules['apps']['list'] as $app) {
1296
-          unset($form_state['values']['applications'][$app]);
1296
+            unset($form_state['values']['applications'][$app]);
1297 1297
         }
1298 1298
         $form_state['storage']['all apps selected'] = TRUE;
1299
-      }
1299
+        }
1300
+    }
1300 1301
     }
1301
-  }
1302 1302
 }
1303 1303
 
1304 1304
 /**
1305
-  * Handle post-validation submission of project preferences form.
1306
-  */
1305
+ * Handle post-validation submission of project preferences form.
1306
+ */
1307 1307
 function boincwork_projectprefs_form_submit($form, &$form_state) {
1308
-  global $user;
1309
-  global $site_name;
1308
+    global $user;
1309
+    global $site_name;
1310 1310
   
1311
-  require_boinc(array('util'));
1312
-  $app_types = get_app_types();
1311
+    require_boinc(array('util'));
1312
+    $app_types = get_app_types();
1313 1313
   
1314
-  $account = user_load($user->uid);
1315
-  $edit = $form_state['values'];
1316
-  $venue = $edit['venue'];
1314
+    $account = user_load($user->uid);
1315
+    $edit = $form_state['values'];
1316
+    $venue = $edit['venue'];
1317 1317
   
1318
-  // Load preferences from BOINC account
1319
-  $prefs = boincwork_load_prefs('project', $venue);
1318
+    // Load preferences from BOINC account
1319
+    $prefs = boincwork_load_prefs('project', $venue);
1320 1320
   
1321
-  // Resource preferences
1322
-  $prefs['resource_share'] = $edit['resource']['resource_share'];
1323
-  if ($app_types->count > 1) {
1321
+    // Resource preferences
1322
+    $prefs['resource_share'] = $edit['resource']['resource_share'];
1323
+    if ($app_types->count > 1) {
1324 1324
     if ($app_types->cpu) $prefs['no_cpu'] = ($edit['resource']['no_cpu']) ? 0 : 1;
1325 1325
     if ($app_types->cuda) $prefs['no_cuda'] = ($edit['resource']['no_cuda']) ? 0 : 1;
1326 1326
     if ($app_types->ati) $prefs['no_ati'] = ($edit['resource']['no_ati']) ? 0 : 1;
1327 1327
     if ($app_types->intel_gpu) $prefs['no_intel_gpu'] = ($edit['resource']['no_intel_gpu']) ? 0 : 1;
1328
-  }
1328
+    }
1329 1329
   
1330
-  // Beta preferences
1331
-  if (variable_get('boinc_prefs_options_beta', FALSE)) {
1330
+    // Beta preferences
1331
+    if (variable_get('boinc_prefs_options_beta', FALSE)) {
1332 1332
     $prefs['allow_beta_work'] = ($edit['beta']['allow_beta_work']) ? 1 : 0;
1333
-  }
1333
+    }
1334 1334
   
1335
-  // Load project specific preferences from XML config
1336
-  $xml = boincwork_get_project_specific_config();
1337
-  $updated_prefs = array(
1335
+    // Load project specific preferences from XML config
1336
+    $xml = boincwork_get_project_specific_config();
1337
+    $updated_prefs = array(
1338 1338
     'project_specific' => boincwork_format_project_specific_prefs_data($edit)
1339
-  );
1340
-  $prefs = $updated_prefs + $prefs;
1339
+    );
1340
+    $prefs = $updated_prefs + $prefs;
1341 1341
   
1342
-  // Don't specify apps if all are selected
1343
-  if (isset($form_state['storage']['all apps selected'])) {
1342
+    // Don't specify apps if all are selected
1343
+    if (isset($form_state['storage']['all apps selected'])) {
1344 1344
     unset($prefs['project_specific']['app_id']);
1345 1345
     unset($form_state['storage']['all apps selected']);
1346
-  }
1346
+    }
1347 1347
   
1348
-  // If this is a new preference set, be sure to unset the "cleared" attribute
1349
-  if (isset($prefs['@attributes']['cleared'])) {
1348
+    // If this is a new preference set, be sure to unset the "cleared" attribute
1349
+    if (isset($prefs['@attributes']['cleared'])) {
1350 1350
     unset($prefs['@attributes']['cleared']);
1351
-  }
1351
+    }
1352 1352
   
1353
-  // Save preferences back to the BOINC account
1354
-  $result = boincwork_save_prefs($prefs, 'project', $venue);
1353
+    // Save preferences back to the BOINC account
1354
+    $result = boincwork_save_prefs($prefs, 'project', $venue);
1355 1355
   
1356
-  // Update the user's default preference set
1357
-  if ($edit['default_set']['default_venue']) {
1356
+    // Update the user's default preference set
1357
+    if ($edit['default_set']['default_venue']) {
1358 1358
     boincwork_set_default_venue($venue);
1359
-  }
1360
-  elseif ($venue == $account->boincuser_default_pref_set) {
1359
+    }
1360
+    elseif ($venue == $account->boincuser_default_pref_set) {
1361 1361
     // User has cleared out the default venue setting
1362 1362
     boincwork_set_default_venue();
1363
-  }
1363
+    }
1364 1364
   
1365
-  if (!$result) {
1365
+    if (!$result) {
1366 1366
     watchdog('boincwork', 'Error updating project prefs for user @id: @message', array('@id' => $user->id, '@message' => mysqli_error()), WATCHDOG_ERROR);
1367 1367
     drupal_set_message(t('Your changes could not be saved. Please contact support!'), 'error');
1368
-  }
1369
-  elseif (!drupal_get_messages('status', FALSE)) {
1368
+    }
1369
+    elseif (!drupal_get_messages('status', FALSE)) {
1370 1370
     // Show this message if the set wasn't created automatically (in which case
1371 1371
     // there is a message tailored to that)
1372 1372
     drupal_set_message(t('Your preferences have been updated.
@@ -1374,53 +1374,53 @@  discard block
 block discarded – undo
1374 1374
         communicates with @project or you issue the "Update"
1375 1375
         command from the BOINC client.', 
1376 1376
         array('@project' => $site_name)));
1377
-  }
1377
+    }
1378 1378
 }
1379 1379
 
1380 1380
 /**
1381 1381
  * The structure of the community preferences form
1382 1382
  */
1383 1383
 function communityprefs_form(&$form_state) {
1384
-  global $user;
1385
-  $account = user_load($user->uid);
1386
-  $form = array();
1387
-  
1388
-  // Pull in some elements from the profile form
1389
-  $profile_form_state = array();
1390
-  $profile = new stdClass();
1391
-  $profile->type = 'profile';
1392
-  $profile->language = '';
1393
-  if ($profile_nid = content_profile_profile_exists($profile, $account->uid)) {
1384
+    global $user;
1385
+    $account = user_load($user->uid);
1386
+    $form = array();
1387
+  
1388
+    // Pull in some elements from the profile form
1389
+    $profile_form_state = array();
1390
+    $profile = new stdClass();
1391
+    $profile->type = 'profile';
1392
+    $profile->language = '';
1393
+    if ($profile_nid = content_profile_profile_exists($profile, $account->uid)) {
1394 1394
     $profile_node = node_load($profile_nid);
1395 1395
     $form_state['storage']['profile_node'] = $profile_node;
1396 1396
     module_load_include('inc', 'node', 'node.pages');    
1397 1397
     $profile_form = drupal_retrieve_form('profile_node_form', $profile_form_state, $profile_node);
1398 1398
     drupal_prepare_form('profile_node_form', $profile_form, $profile_form_state);
1399
-  }
1399
+    }
1400 1400
   
1401
-  // Standard option sets
1402
-  $form['boolean_options'] = array(
1401
+    // Standard option sets
1402
+    $form['boolean_options'] = array(
1403 1403
     '#type' => 'value',
1404 1404
     '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes'))
1405
-  );
1405
+    );
1406 1406
   
1407
-  $default = array(
1407
+    $default = array(
1408 1408
     'pm_send_notification' => '', // This is set already in pm_email_notify_user
1409 1409
     'friend_notification' => isset($account->friend_notification) ? $account->friend_notification : 0,
1410 1410
     'comments_per_page' => (isset($account->comments_per_page) AND $account->comments_per_page) ? $account->comments_per_page : variable_get('comment_default_per_page_forum', 50),
1411 1411
     'comments_order' => (isset($account->sort) AND $account->sort) ? $account->sort : variable_get('comment_default_order_forum', COMMENT_ORDER_OLDEST_FIRST),
1412
-  );
1412
+    );
1413 1413
   
1414
-  // General options
1415
-  $form['general'] = array(
1414
+    // General options
1415
+    $form['general'] = array(
1416 1416
     '#type' => 'fieldset',
1417 1417
     '#title' => bts('General settings', array(), NULL, 'boinc:account-preferences-community'),
1418 1418
     '#weight' => 0,
1419 1419
     '#collapsible' => TRUE,
1420 1420
     '#collapsed' => FALSE
1421
-  );
1422
-  // Add the BOINC user name (non-unique, user editable)
1423
-  $form['general']['boincuser_name'] = array(
1421
+    );
1422
+    // Add the BOINC user name (non-unique, user editable)
1423
+    $form['general']['boincuser_name'] = array(
1424 1424
     '#type' => 'textfield',
1425 1425
     '#title' => bts('Name', array(), NULL, 'boinc:user-or-team-name'),
1426 1426
     '#default_value' => $account->boincuser_name,
@@ -1428,252 +1428,252 @@  discard block
 block discarded – undo
1428 1428
     '#required' => TRUE,
1429 1429
     '#description' => '',
1430 1430
     '#size' => 40
1431
-  );
1432
-  // Time zone
1433
-  if (variable_get('configurable_timezones', 1)) {
1431
+    );
1432
+    // Time zone
1433
+    if (variable_get('configurable_timezones', 1)) {
1434 1434
     $zones = _system_zonelist();
1435 1435
     $form['general']['timezone'] = array(
1436
-      '#type' => 'select',
1437
-      '#title' => bts('Time zone', array(), NULL, 'boinc:account-preferences-community'),
1438
-      '#default_value' => ($account->timezone !== NULL) ? $account->timezone : variable_get('date_default_timezone', 0),
1439
-      '#options' => $zones,
1440
-      '#description' => '',
1436
+        '#type' => 'select',
1437
+        '#title' => bts('Time zone', array(), NULL, 'boinc:account-preferences-community'),
1438
+        '#default_value' => ($account->timezone !== NULL) ? $account->timezone : variable_get('date_default_timezone', 0),
1439
+        '#options' => $zones,
1440
+        '#description' => '',
1441 1441
     );
1442
-  }
1442
+    }
1443 1443
   
1444
-  // Notification options
1445
-  $form['notifications'] = array(
1444
+    // Notification options
1445
+    $form['notifications'] = array(
1446 1446
     '#type' => 'fieldset',
1447 1447
     '#title' => bts('Notification settings', array(), NULL, 'boinc:account-preferences-community'),
1448 1448
     '#weight' => 5,
1449 1449
     '#collapsible' => TRUE,
1450 1450
     '#collapsed' => FALSE
1451
-  );
1452
-  // Pull in private message notification handling and tweak the form
1453
-  $pm_notify = pm_email_notify_user('form', $edit, $account, 'account');
1454
-  $form['notifications']['pm_send_notifications'] = array_replace(
1451
+    );
1452
+    // Pull in private message notification handling and tweak the form
1453
+    $pm_notify = pm_email_notify_user('form', $edit, $account, 'account');
1454
+    $form['notifications']['pm_send_notifications'] = array_replace(
1455 1455
     $pm_notify['enable_pm_mail']['pm_send_notifications'],
1456 1456
     array(
1457
-      '#type' => 'radios',
1458
-      '#title' => bts('Receive email notification for private messages?', array(), NULL, 'boinc:account-preferences-community'),
1459
-      '#description' => ' ',
1460
-      '#options' => $form['boolean_options']['#value'],
1461
-      '#attributes' => array('class' => 'fancy')
1457
+        '#type' => 'radios',
1458
+        '#title' => bts('Receive email notification for private messages?', array(), NULL, 'boinc:account-preferences-community'),
1459
+        '#description' => ' ',
1460
+        '#options' => $form['boolean_options']['#value'],
1461
+        '#attributes' => array('class' => 'fancy')
1462 1462
     )
1463
-  );
1464
-  $form['notifications']['friend_notification'] = array(
1463
+    );
1464
+    $form['notifications']['friend_notification'] = array(
1465 1465
     '#type' => 'radios',
1466 1466
     '#title' => bts('Receive email notification for friend requests?', array(), NULL, 'boinc:account-preferences-community'),
1467 1467
     '#description' => ' ',
1468 1468
     '#options' => array(0 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), -1 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes')),
1469 1469
     '#attributes' => array('class' => 'fancy'),
1470 1470
     '#default_value' => $default['friend_notification']
1471
-  );
1471
+    );
1472 1472
   
1473
-  // Internationalization options
1474
-  if (module_exists('internationalization')) {
1473
+    // Internationalization options
1474
+    if (module_exists('internationalization')) {
1475 1475
     $languages = language_list('enabled');
1476 1476
     $languages = $languages[1];
1477 1477
     $names = array();
1478 1478
     foreach ($languages as $langcode => $item) {
1479
-      $name = t($item->name);
1480
-      $names[check_plain($langcode)] = check_plain($name . ($item->native != $name ? ' ('. $item->native .')' : ''));
1479
+        $name = t($item->name);
1480
+        $names[check_plain($langcode)] = check_plain($name . ($item->native != $name ? ' ('. $item->native .')' : ''));
1481 1481
     }
1482 1482
     $form['locale'] = array(
1483
-      '#type' => 'fieldset',
1484
-      '#title' => bts('Language settings', array(), NULL, 'boinc:account-preferences-community'),
1485
-      '#weight' => 10,
1486
-      '#collapsible' => TRUE,
1487
-      '#collapsed' => FALSE,
1483
+        '#type' => 'fieldset',
1484
+        '#title' => bts('Language settings', array(), NULL, 'boinc:account-preferences-community'),
1485
+        '#weight' => 10,
1486
+        '#collapsible' => TRUE,
1487
+        '#collapsed' => FALSE,
1488 1488
     );
1489 1489
 
1490 1490
     // Get language negotiation settings.
1491 1491
     $mode = variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE);
1492 1492
     $user_preferred_language = user_preferred_language($account);
1493 1493
     $form['locale']['language'] = array(
1494
-      '#type' => 'select',
1495
-      '#title' => bts('Language', array(), NULL, 'boinc:account-preferences-community'),
1496
-      '#default_value' => check_plain($user_preferred_language->language),
1497
-      '#options' => $names,
1498
-      '#description' => ($mode == LANGUAGE_NEGOTIATION_PATH) ? bts("This account's default language for e-mails and preferred language for site presentation.", array(), NULL, 'boinc:account-preferences-community') : bts("This account's default language for e-mails.", array(), NULL, 'boinc:account-preferences-community'),
1494
+        '#type' => 'select',
1495
+        '#title' => bts('Language', array(), NULL, 'boinc:account-preferences-community'),
1496
+        '#default_value' => check_plain($user_preferred_language->language),
1497
+        '#options' => $names,
1498
+        '#description' => ($mode == LANGUAGE_NEGOTIATION_PATH) ? bts("This account's default language for e-mails and preferred language for site presentation.", array(), NULL, 'boinc:account-preferences-community') : bts("This account's default language for e-mails.", array(), NULL, 'boinc:account-preferences-community'),
1499 1499
     );
1500
-  }
1500
+    }
1501 1501
   
1502
-  // Avatar options
1503
-  $form['gravatar'] = array(
1502
+    // Avatar options
1503
+    $form['gravatar'] = array(
1504 1504
     '#type' => 'item',
1505 1505
     '#value' => bts('If you have a <a href="@gravatar-check">valid Gravatar</a> associated with your e-mail address, it will be used for your user picture.', array('@gravatar-check' => 'http://en.gravatar.com/site/check/' . $account->mail), NULL, 'boinc:account-preferences-community'),
1506 1506
     '#description' => bts('Your Gravatar will not be shown if you upload a user picture.', array(), NULL, 'boinc:account-preferences-community'),
1507
-  );
1508
-  if (user_access('disable own gravatar', $account)) {
1507
+    );
1508
+    if (user_access('disable own gravatar', $account)) {
1509 1509
     $form['gravatar'] = array(
1510
-      '#type' => 'checkbox',
1511
-      '#title' => bts('If you have a <a href="@gravatar-check">valid Gravatar</a> associated with your e-mail address, use it for your user picture.', array('@gravatar-check' => 'http://en.gravatar.com/site/check/' . $account->mail), NULL, 'boinc:account-preferences-community'),
1512
-      '#description' => bts('Gravatar will not be shown if an avatar is uploaded.', array(), NULL, 'boinc:account-preferences-community'),
1513
-      '#default_value' => isset($account->gravatar) ? $account->gravatar : 0,
1514
-      '#disabled' => !empty($account->picture),
1515
-    );
1516
-  }
1517
-  $form['gravatar']['#weight'] = 15;
1518
-  $form['gravatar']['#prefix'] = '<fieldset class="collapsible"><legend><a href="#">' . bts('Avatar settings', array(), NULL, 'boinc:account-preferences-community') . '</a></legend>';
1519
-  // Upload an avatar (pulled from profile_node_form):
1520
-  if (!empty($profile_form['field_image'])) {
1510
+        '#type' => 'checkbox',
1511
+        '#title' => bts('If you have a <a href="@gravatar-check">valid Gravatar</a> associated with your e-mail address, use it for your user picture.', array('@gravatar-check' => 'http://en.gravatar.com/site/check/' . $account->mail), NULL, 'boinc:account-preferences-community'),
1512
+        '#description' => bts('Gravatar will not be shown if an avatar is uploaded.', array(), NULL, 'boinc:account-preferences-community'),
1513
+        '#default_value' => isset($account->gravatar) ? $account->gravatar : 0,
1514
+        '#disabled' => !empty($account->picture),
1515
+    );
1516
+    }
1517
+    $form['gravatar']['#weight'] = 15;
1518
+    $form['gravatar']['#prefix'] = '<fieldset class="collapsible"><legend><a href="#">' . bts('Avatar settings', array(), NULL, 'boinc:account-preferences-community') . '</a></legend>';
1519
+    // Upload an avatar (pulled from profile_node_form):
1520
+    if (!empty($profile_form['field_image'])) {
1521 1521
     $form['field_image'] = $profile_form['field_image'];
1522
-  }
1523
-  else {
1522
+    }
1523
+    else {
1524 1524
     $form['field_image'] = array(
1525
-      '#value' => '<div class="form-item">'
1525
+        '#value' => '<div class="form-item">'
1526 1526
         . '<label class="placeholder">'
1527 1527
         . bts('This is not available until your profile is set up.', array(), NULL, 'boinc:account-preferences-community')
1528 1528
         . '</label>'
1529 1529
         . l(bts('Create a profile', array(), NULL, 'boinc:account-preferences-community'), 'account/profile/edit', array('attributes' => array('class' => 'form-link')))
1530 1530
         . '</div>',
1531 1531
     );
1532
-  }
1533
-  $form['field_image'][0]['#title'] = bts('Upload an avatar', array(), NULL, 'boinc:account-preferences-community');
1534
-  $form['field_image']['#weight'] = 20;
1535
-  $form['field_image']['#suffix'] = '</fieldset>';
1532
+    }
1533
+    $form['field_image'][0]['#title'] = bts('Upload an avatar', array(), NULL, 'boinc:account-preferences-community');
1534
+    $form['field_image']['#weight'] = 20;
1535
+    $form['field_image']['#suffix'] = '</fieldset>';
1536 1536
   
1537
-  // Forum options
1538
-  $form['forums'] = array(
1537
+    // Forum options
1538
+    $form['forums'] = array(
1539 1539
     '#type' => 'fieldset',
1540 1540
     '#title' => bts('Forum settings', array(), NULL, 'boinc:account-preferences-community'),
1541 1541
     '#weight' => 25,
1542 1542
     '#collapsible' => TRUE,
1543 1543
     '#collapsed' => FALSE
1544
-  );
1545
-  $form['forums']['comments_per_page'] = array(
1544
+    );
1545
+    $form['forums']['comments_per_page'] = array(
1546 1546
     '#type' => 'select',
1547 1547
     '#title' => bts('In discussion topics, show at most @comments_per_page', array('@comments_per_page' => ''), NULL, 'boinc:account-preferences-community'),
1548 1548
     '#options' => array(10 => 10, 20 => 20, 30 => 30, 50 => 50, 100 => 100),
1549 1549
     '#default_value' => $default['comments_per_page']
1550
-  );
1551
-  // Can't have a typical Drupal form suffix on a select box?
1552
-  $form['forums']['comments_per_page_suffix'] = array(
1550
+    );
1551
+    // Can't have a typical Drupal form suffix on a select box?
1552
+    $form['forums']['comments_per_page_suffix'] = array(
1553 1553
     '#value' => '<span>' . bts('comments per page', array(), NULL, 'boinc:account-preferences-community') . '</span>'
1554
-  );
1555
-  $form['forums']['comments_order'] = array(
1554
+    );
1555
+    $form['forums']['comments_order'] = array(
1556 1556
     '#type' => 'select',
1557 1557
     '#title' => bts('Sort comments in discussions', array(), NULL, 'boinc:account-preferences-community'),
1558 1558
     '#options' => array(1 => bts('Newest post first', array(), NULL, 'boinc:account-preferences-community'), 2 => bts('Oldest post first', array(), NULL, 'boinc:account-preferences-community')),
1559 1559
     '#default_value' => $default['comments_order']
1560
-  );
1561
-  // Signature (pulled from user_edit_form):
1562
-  if (variable_get('user_signatures', 0) && module_exists('comment')) {
1560
+    );
1561
+    // Signature (pulled from user_edit_form):
1562
+    if (variable_get('user_signatures', 0) && module_exists('comment')) {
1563 1563
     $form['forums']['signature'] = array(
1564
-      '#type' => 'textarea',
1565
-      '#title' => bts('Signature', array(), NULL, 'boinc:account-preferences-community'),
1566
-      '#description' => bts('Your signature will be publicly displayed at the end of your comments.', array(), NULL, 'boinc:account-preferences-community'),
1567
-      '#default_value' => $account->signature
1568
-      );
1564
+        '#type' => 'textarea',
1565
+        '#title' => bts('Signature', array(), NULL, 'boinc:account-preferences-community'),
1566
+        '#description' => bts('Your signature will be publicly displayed at the end of your comments.', array(), NULL, 'boinc:account-preferences-community'),
1567
+        '#default_value' => $account->signature
1568
+        );
1569 1569
     // Prevent a "validation error" message when the user attempts to save with a default value they
1570 1570
     // do not have access to.
1571 1571
     if (!filter_access($account->signature_format) && empty($_POST)) {
1572
-      drupal_set_message(t("The signature input format has been set to a format you don't have access to. It will be changed to a format you have access to when you save this page."));
1573
-      $edit['signature_format'] = FILTER_FORMAT_DEFAULT;
1572
+        drupal_set_message(t("The signature input format has been set to a format you don't have access to. It will be changed to a format you have access to when you save this page."));
1573
+        $edit['signature_format'] = FILTER_FORMAT_DEFAULT;
1574 1574
     }
1575 1575
     $form['forums']['signature_format'] = filter_form($account->signature_format, NULL, array('signature_format'));
1576 1576
     // Optionally hide signatures from comments
1577 1577
     $form['forums']['hide_signatures'] = array(
1578
-      '#type' => 'radios',
1579
-      '#title' => bts('Hide signatures in forums', array(), NULL, 'boinc:account-preferences-community'),
1580
-      '#description' => ' ',
1581
-      '#options' => $form['boolean_options']['#value'],
1582
-      '#attributes' => array('class' => 'fancy'),
1583
-      '#default_value' => isset($account->hide_signatures) ? $account->hide_signatures : 0,
1578
+        '#type' => 'radios',
1579
+        '#title' => bts('Hide signatures in forums', array(), NULL, 'boinc:account-preferences-community'),
1580
+        '#description' => ' ',
1581
+        '#options' => $form['boolean_options']['#value'],
1582
+        '#attributes' => array('class' => 'fancy'),
1583
+        '#default_value' => isset($account->hide_signatures) ? $account->hide_signatures : 0,
1584 1584
     );
1585
-  }
1585
+    }
1586 1586
 
1587
-  //Bottom separator
1588
-  $form['separator_bottom'] = array(
1587
+    //Bottom separator
1588
+    $form['separator_bottom'] = array(
1589 1589
     '#value' => '<div class="separator buttons"></div>',
1590 1590
     '#weight' => 999,
1591
-  );
1591
+    );
1592 1592
   
1593
-  // Form control
1594
-  $form['form control tabs prefix'] = array(
1593
+    // Form control
1594
+    $form['form control tabs prefix'] = array(
1595 1595
     '#value' => '<ul class="form-control tab-list">',
1596 1596
     '#weight' => 1001,
1597
-  );
1598
-  $form['submit'] = array(
1597
+    );
1598
+    $form['submit'] = array(
1599 1599
     '#prefix' => '<li class="first tab">',
1600 1600
     '#type' => 'submit',
1601 1601
     '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'),
1602 1602
     '#suffix' => '</li>',
1603 1603
     '#weight' => 1002,
1604
-  );
1605
-  $form['form control tabs'] = array(
1604
+    );
1605
+    $form['form control tabs'] = array(
1606 1606
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>',
1607 1607
     '#weight' => 1003,
1608
-  );
1609
-  $form['form control tabs suffix'] = array(
1608
+    );
1609
+    $form['form control tabs suffix'] = array(
1610 1610
     '#value' => '</ul>',
1611 1611
     '#weight' => 1004,
1612
-  );
1613
-  return $form;
1612
+    );
1613
+    return $form;
1614 1614
 }
1615 1615
 
1616 1616
 /**
1617
-  * Handle validation submission of community preferences form.
1618
-  */
1617
+ * Handle validation submission of community preferences form.
1618
+ */
1619 1619
 function communityprefs_form_validate($form, &$form_state) {
1620
-  // require_boinc();
1621
-  global $user;
1622
-  $account = user_load($user->uid);
1623
-  $boinc_user = BoincUser::lookup_id($account->boincuser_id);
1624
-  $edit = $form_state['values'];
1620
+    // require_boinc();
1621
+    global $user;
1622
+    $account = user_load($user->uid);
1623
+    $boinc_user = BoincUser::lookup_id($account->boincuser_id);
1624
+    $edit = $form_state['values'];
1625 1625
 
1626
-  if ($edit['boincuser_name'] != $boinc_user->name) {
1626
+    if ($edit['boincuser_name'] != $boinc_user->name) {
1627 1627
     $blacklist1 = preg_split('/\r\n|\r|\n/', variable_get('boinc_weboptions_blacklisted_usernames', "admin\nadministrator\nmoderator"));
1628 1628
     $blacklist2 = array();
1629 1629
     if (is_array($blacklist1)) {
1630
-      $blacklist2 = array_map('strtolower', $blacklist1);
1630
+        $blacklist2 = array_map('strtolower', $blacklist1);
1631 1631
     }
1632 1632
     if (in_array(strtolower($edit['boincuser_name']), $blacklist2)) {
1633
-      form_set_error('boincuser_name',
1633
+        form_set_error('boincuser_name',
1634 1634
         bts('You may not use username @blname, as that name is not allowed. Please choose another name.',
1635 1635
             array('@blname' => $edit['boincuser_name']),
1636 1636
             NULL, 'boinc:account-preferences-community'));
1637
-      return false;
1637
+        return false;
1638
+    }
1638 1639
     }
1639
-  }
1640 1640
 
1641
-  return true;
1641
+    return true;
1642 1642
 }
1643 1643
 
1644 1644
 /**
1645
-  * Handle post-validation submission of community preferences form.
1646
-  */
1645
+ * Handle post-validation submission of community preferences form.
1646
+ */
1647 1647
 function communityprefs_form_submit($form, &$form_state) {
1648
-  require_boinc('boinc_db');
1649
-  global $user;
1650
-  $account = user_load($user->uid);
1651
-  $boinc_user = BoincUser::lookup_id($account->boincuser_id);
1652
-  $edit = $form_state['values'];
1653
-  $profile_node = $form_state['storage']['profile_node'];
1654
-  
1655
-  // Display name
1656
-  if ($edit['boincuser_name'] != $boinc_user->name) {
1648
+    require_boinc('boinc_db');
1649
+    global $user;
1650
+    $account = user_load($user->uid);
1651
+    $boinc_user = BoincUser::lookup_id($account->boincuser_id);
1652
+    $edit = $form_state['values'];
1653
+    $profile_node = $form_state['storage']['profile_node'];
1654
+  
1655
+    // Display name
1656
+    if ($edit['boincuser_name'] != $boinc_user->name) {
1657 1657
     $boincuser_name = $edit['boincuser_name'];
1658 1658
     $result = $boinc_user->update(
1659 1659
         "name='{$boincuser_name}'"
1660 1660
     );
1661
-  }
1661
+    }
1662 1662
   
1663
-  // Private message settings
1664
-  pm_email_notify_user('submit', $edit, $user);
1663
+    // Private message settings
1664
+    pm_email_notify_user('submit', $edit, $user);
1665 1665
   
1666
-  // Avatar settings - only set if profile_node exists.
1667
-  if ($profile_node) {
1666
+    // Avatar settings - only set if profile_node exists.
1667
+    if ($profile_node) {
1668 1668
     if (!$edit['field_image']) $edit['field_image'] = array();
1669 1669
     $profile_node->field_image = $edit['field_image'];
1670 1670
     node_save($profile_node);
1671 1671
     // Flush this from the node cache or changes won't show up immediately!
1672 1672
     $profile_node = node_load($profile_node->nid, NULL, TRUE);
1673
-  }
1673
+    }
1674 1674
 
1675
-  // All other settings
1676
-  $settings = array(
1675
+    // All other settings
1676
+    $settings = array(
1677 1677
     'signature' => $edit['signature'],
1678 1678
     'signature_format' => $edit['signature_format'],
1679 1679
     'timezone' => $edit['timezone'],
@@ -1682,183 +1682,183 @@  discard block
 block discarded – undo
1682 1682
     'hide_signatures' => $edit['hide_signatures'],
1683 1683
     'sort' => $edit['comments_order'],
1684 1684
     'gravatar' => $edit['gravatar'],
1685
-  );
1686
-  if (module_exists('internationalization')) {
1685
+    );
1686
+    if (module_exists('internationalization')) {
1687 1687
     $settings['language'] = $edit['language'];
1688 1688
     global $language;
1689 1689
     if ($user->language != $edit['language']) {
1690
-      global $base_url;
1691
-      if ($edit['language'] != language_default('language')) {
1690
+        global $base_url;
1691
+        if ($edit['language'] != language_default('language')) {
1692 1692
         $form_state['redirect'] = $base_url . '/' . $edit['language'] . '/' . $_GET['q'];
1693
-      }
1694
-      else {
1693
+        }
1694
+        else {
1695 1695
         $form_state['redirect'] = $base_url . '/' . $_GET['q'];
1696
-      }
1696
+        }
1697 1697
     }
1698
-  }
1699
-  user_save($user, $settings);
1698
+    }
1699
+    user_save($user, $settings);
1700 1700
   
1701
-  drupal_set_message(bts('Your community preferences have been updated.', array(), NULL, 'boinc:account-preferences-community'));
1701
+    drupal_set_message(bts('Your community preferences have been updated.', array(), NULL, 'boinc:account-preferences-community'));
1702 1702
   
1703
-  // Form will not redirect if storage is set; not good if language changes
1704
-  unset($form_state['storage']);
1703
+    // Form will not redirect if storage is set; not good if language changes
1704
+    unset($form_state['storage']);
1705 1705
 }
1706 1706
 
1707 1707
 /**
1708 1708
  * The structure of the privacy preferences form
1709 1709
  */
1710 1710
 function boincwork_privacyprefs_form(&$form_state) {
1711
-  require_boinc(array('user', 'prefs', 'util', 'consent'));
1711
+    require_boinc(array('user', 'prefs', 'util', 'consent'));
1712 1712
   
1713
-  global $user;
1714
-  $account = user_load($user->uid);
1715
-  $boincuser = BoincUser::lookup_id($account->boincuser_id);
1713
+    global $user;
1714
+    $account = user_load($user->uid);
1715
+    $boincuser = BoincUser::lookup_id($account->boincuser_id);
1716 1716
   
1717
-  // Load preferences from BOINC account
1718
-  $prefs = boincwork_load_prefs('project');
1717
+    // Load preferences from BOINC account
1718
+    $prefs = boincwork_load_prefs('project');
1719 1719
   
1720
-  //if (!$prefs AND !$initialize_if_empty) return null;
1720
+    //if (!$prefs AND !$initialize_if_empty) return null;
1721 1721
 
1722
-  $privacy_consent_types = boincwork_load_privacyconsenttypes();
1722
+    $privacy_consent_types = boincwork_load_privacyconsenttypes();
1723 1723
   
1724
-  // Define form defaults
1725
-  $default = array(
1724
+    // Define form defaults
1725
+    $default = array(
1726 1726
     'privacy' => array(
1727
-      'send_email' => ($boincuser->send_email) ? 1 : 0,
1728
-      'show_hosts' => ($boincuser->show_hosts) ? 1 : 0
1727
+        'send_email' => ($boincuser->send_email) ? 1 : 0,
1728
+        'show_hosts' => ($boincuser->show_hosts) ? 1 : 0
1729 1729
     )
1730
-  );
1730
+    );
1731 1731
   
1732
-  // Standard option sets
1733
-  $form['boolean_options'] = array(
1732
+    // Standard option sets
1733
+    $form['boolean_options'] = array(
1734 1734
     '#type' => 'value',
1735 1735
     '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes'))
1736
-  );
1736
+    );
1737 1737
   
1738
-  $form['privacy'] = array(
1738
+    $form['privacy'] = array(
1739 1739
     '#title' => bts('Privacy settings', array(), NULL, 'boinc:account-preferences-privacy'),
1740 1740
     '#type' => 'fieldset',
1741 1741
     '#description' => null,
1742 1742
     '#collapsible' => TRUE,
1743 1743
     '#collapsed' => FALSE
1744
-  );
1745
-  $form['privacy']['send_email'] = array(
1744
+    );
1745
+    $form['privacy']['send_email'] = array(
1746 1746
     '#title' => bts('Is it OK for @project and your team (if any) to email you?', array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:account-preferences-privacy'),
1747 1747
     '#type' => 'radios',
1748 1748
     '#options' => $form['boolean_options']['#value'],
1749 1749
     '#attributes' => array('class' => 'fancy'),
1750 1750
     '#default_value' => $default['privacy']['send_email']
1751
-  );
1752
-  $form['privacy']['show_hosts'] = array(
1751
+    );
1752
+    $form['privacy']['show_hosts'] = array(
1753 1753
     '#title' => bts('Should @project show your computers on its web site?', array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:account-preferences-privacy'),
1754 1754
     '#description' => bts('At times, you may be asked to enable this option in order to receive help from the forums. Advanced users may need to be able to inspect your computers\' information in order to help diagnose any problems.', array(), NULL, 'boinc:account-preferences-privacy'),
1755 1755
     '#type' => 'radios',
1756 1756
     '#options' => $form['boolean_options']['#value'],
1757 1757
     '#attributes' => array('class' => 'fancy'),
1758 1758
     '#default_value' => $default['privacy']['show_hosts']
1759
-  );
1759
+    );
1760 1760
 
1761
-  // Loop over privacy consent types and create form question for each
1762
-  // option that deals with privacy.
1763
-  foreach ($privacy_consent_types as $ct) {
1761
+    // Loop over privacy consent types and create form question for each
1762
+    // option that deals with privacy.
1763
+    foreach ($privacy_consent_types as $ct) {
1764 1764
 
1765 1765
     $currstate = (check_user_consent($boincuser, $ct['shortname'])) ? 1 : 0 ;
1766 1766
     // Set name to 'privacyconsent_SHORTNAME', which can be parsed
1767 1767
     // later in the submit function.
1768 1768
     $form['privacy']['privacyconsent_'.$ct['shortname']] = array(
1769
-      '#title' => bts($ct['description'], array(), NULL, 'boinc:account-preferences-privacy'),
1770
-      '#type' => 'radios',
1771
-      '#options' => $form['boolean_options']['#value'],
1772
-      '#attributes' => array('class' => 'fancy'),
1773
-      '#default_value' => $currstate,
1769
+        '#title' => bts($ct['description'], array(), NULL, 'boinc:account-preferences-privacy'),
1770
+        '#type' => 'radios',
1771
+        '#options' => $form['boolean_options']['#value'],
1772
+        '#attributes' => array('class' => 'fancy'),
1773
+        '#default_value' => $currstate,
1774 1774
     );
1775
-  }
1775
+    }
1776 1776
 
1777
-  // Ignore and block users
1778
-  if (module_exists('ignore_user')) {
1777
+    // Ignore and block users
1778
+    if (module_exists('ignore_user')) {
1779 1779
     $form['ignoreblock'] = array(
1780
-      '#title' => bts('Ignore Users', array(), NULL, 'boinc:account-preferences-privacy'),
1781
-      '#type' => 'fieldset',
1782
-      '#description' => bts('<p>You may ignore users in the forums and block users from sending you private messages.<p>', array(), NULL, 'boinc:ignore-user-help'),
1783
-      '#collapsible' => TRUE,
1784
-      '#collapsed' => FALSE
1780
+        '#title' => bts('Ignore Users', array(), NULL, 'boinc:account-preferences-privacy'),
1781
+        '#type' => 'fieldset',
1782
+        '#description' => bts('<p>You may ignore users in the forums and block users from sending you private messages.<p>', array(), NULL, 'boinc:ignore-user-help'),
1783
+        '#collapsible' => TRUE,
1784
+        '#collapsed' => FALSE
1785 1785
     );
1786 1786
 
1787 1787
     // Table for ignored users
1788 1788
     $form['ignoreblock']['current_ignore_section'] = array(
1789
-      '#type' => 'item',
1790
-      '#value' => bts('Current users on your Ignore List', array(), NULL, 'boinc:ignore-user-list'),
1791
-      '#prefix' => '<h4>',
1792
-      '#suffix' => '</h4>',
1793
-      '#weight' => -20,
1789
+        '#type' => 'item',
1790
+        '#value' => bts('Current users on your Ignore List', array(), NULL, 'boinc:ignore-user-list'),
1791
+        '#prefix' => '<h4>',
1792
+        '#suffix' => '</h4>',
1793
+        '#weight' => -20,
1794 1794
     );
1795 1795
 
1796 1796
     $ignored_users = _ignore_user_ignored_users();
1797 1797
     foreach ($ignored_users as $ignored_user) {
1798
-      $form['ignoreblock']['username'][$ignored_user['iuid']] = array(
1798
+        $form['ignoreblock']['username'][$ignored_user['iuid']] = array(
1799 1799
         '#value' => $ignored_user['username'],
1800
-      );
1801
-      $form['ignoreblock']['delete'][$ignored_user['iuid']] = array(
1800
+        );
1801
+        $form['ignoreblock']['delete'][$ignored_user['iuid']] = array(
1802 1802
         '#value' => l(
1803
-          bts('delete', array(), NULL, 'boinc:ignore-user-delete-button'),
1804
-          'account/prefs/privacy/ignore_user/remove/'. $ignored_user['iuid'],
1805
-          array()
1803
+            bts('delete', array(), NULL, 'boinc:ignore-user-delete-button'),
1804
+            'account/prefs/privacy/ignore_user/remove/'. $ignored_user['iuid'],
1805
+            array()
1806 1806
         ),
1807
-      );
1807
+        );
1808 1808
     }
1809 1809
     $form['ignoreblock']['pager'] = array('#value' => theme('pager', NULL, 10, 0));
1810 1810
 
1811 1811
     // Sub-form to add user to ignore list
1812 1812
     $form['ignoreblock']['add_ignore_user_section'] = array(
1813
-      '#type' => 'item',
1814
-      '#value' => bts('Add user to Ignore List', array(), NULL, 'boinc:ignore-user-add'),
1815
-      '#prefix' => '<h4>',
1816
-      '#suffix' => '</h4>',
1817
-      '#weight' => 10,
1813
+        '#type' => 'item',
1814
+        '#value' => bts('Add user to Ignore List', array(), NULL, 'boinc:ignore-user-add'),
1815
+        '#prefix' => '<h4>',
1816
+        '#suffix' => '</h4>',
1817
+        '#weight' => 10,
1818 1818
     );
1819 1819
 
1820 1820
     $form['ignoreblock']['addusername_toignorelist'] = array(
1821
-      '#type' => 'textfield',
1822
-      '#title' => bts('Username', array(), NULL, 'boinc:ignore-user-searchbox'),
1823
-      '#description' => bts('To lookup a username start typing in the search box. A list of usernames will appear as you type. The number appearing in the suffix is the BOINC id. You can find a user\'s BOINC id on their user profile page.', array(), NULL, 'boinc:ignore-user-searchbox-help'),
1824
-      '#weight' => 11,
1825
-      '#size' => 50,
1826
-      '#autocomplete_path' => 'boincuser/autocomplete',
1821
+        '#type' => 'textfield',
1822
+        '#title' => bts('Username', array(), NULL, 'boinc:ignore-user-searchbox'),
1823
+        '#description' => bts('To lookup a username start typing in the search box. A list of usernames will appear as you type. The number appearing in the suffix is the BOINC id. You can find a user\'s BOINC id on their user profile page.', array(), NULL, 'boinc:ignore-user-searchbox-help'),
1824
+        '#weight' => 11,
1825
+        '#size' => 50,
1826
+        '#autocomplete_path' => 'boincuser/autocomplete',
1827 1827
     );
1828 1828
 
1829 1829
     $form['ignoreblock']['addusername_submit'] = array(
1830
-      '#type' => 'submit',
1831
-      '#value' => bts('Ignore user', array(), NULL, 'boinc:ignore-user-add'),
1832
-      '#submit' => array('_boincwork_ignore_list_form_submit'),
1833
-      '#weight' => 12,
1834
-      '#attributes' => array('class' => 'add_ignore_user'),
1830
+        '#type' => 'submit',
1831
+        '#value' => bts('Ignore user', array(), NULL, 'boinc:ignore-user-add'),
1832
+        '#submit' => array('_boincwork_ignore_list_form_submit'),
1833
+        '#weight' => 12,
1834
+        '#attributes' => array('class' => 'add_ignore_user'),
1835 1835
     );
1836
-  }// endif module_exists
1836
+    }// endif module_exists
1837 1837
 
1838
-  $form['prefs']['separator_bottom'] = array(
1838
+    $form['prefs']['separator_bottom'] = array(
1839 1839
     '#value' => '<div class="separator buttons"></div>'
1840
-  );
1840
+    );
1841 1841
   
1842
-  // Form control
1843
-  $form['prefs']['form control tabs prefix'] = array(
1842
+    // Form control
1843
+    $form['prefs']['form control tabs prefix'] = array(
1844 1844
     '#value' => '<ul class="form-control tab-list">'
1845
-  );
1846
-  $form['prefs']['submit'] = array(
1845
+    );
1846
+    $form['prefs']['submit'] = array(
1847 1847
     '#prefix' => '<li class="first tab">',
1848 1848
     '#type' => 'submit',
1849 1849
     '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'),
1850 1850
     '#validate' => array('boincwork_privacyprefs_form_validate'),
1851 1851
     '#submit' => array('boincwork_privacyprefs_form_submit'),
1852 1852
     '#suffix' => '</li>'
1853
-  );
1854
-  $form['prefs']['form control tabs'] = array(
1853
+    );
1854
+    $form['prefs']['form control tabs'] = array(
1855 1855
     '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>'
1856
-  );
1857
-  $form['prefs']['form control tabs suffix'] = array(
1856
+    );
1857
+    $form['prefs']['form control tabs suffix'] = array(
1858 1858
     '#value' => '</ul>'
1859
-  );
1859
+    );
1860 1860
   
1861
-  return $form;
1861
+    return $form;
1862 1862
 }
1863 1863
 
1864 1864
 /**
@@ -1866,93 +1866,93 @@  discard block
 block discarded – undo
1866 1866
  */
1867 1867
 function theme_boincwork_privacyprefs_form($form) {
1868 1868
 
1869
-  $output = '';
1870
-  $output .= drupal_render($form['privacy']);
1869
+    $output = '';
1870
+    $output .= drupal_render($form['privacy']);
1871 1871
 
1872
-  $header = array(
1872
+    $header = array(
1873 1873
     bts('Username', array(), NULL, 'boinc:ignore-user-list'),
1874 1874
     bts('Operations', array(), NULL, 'boinc:ignore-user-list')
1875
-  );
1875
+    );
1876 1876
 
1877
-  $rows = array();
1878
-  if (isset($form['ignoreblock']['username']) && is_array($form['ignoreblock']['username'])) {
1877
+    $rows = array();
1878
+    if (isset($form['ignoreblock']['username']) && is_array($form['ignoreblock']['username'])) {
1879 1879
     foreach (element_children($form['ignoreblock']['username']) as $key) {
1880
-      $row = array();
1881
-      $row[] = drupal_render($form['ignoreblock']['username'][$key]);
1882
-      $row[] = drupal_render($form['ignoreblock']['delete'][$key]);
1883
-      $rows[] = $row;
1880
+        $row = array();
1881
+        $row[] = drupal_render($form['ignoreblock']['username'][$key]);
1882
+        $row[] = drupal_render($form['ignoreblock']['delete'][$key]);
1883
+        $rows[] = $row;
1884
+    }
1884 1885
     }
1885
-  }
1886
-  else {
1886
+    else {
1887 1887
     $rows[] = array(
1888
-      array(
1888
+        array(
1889 1889
         'data' => bts('You have not added any users to your Ignore List.', array(), NULL, 'boinc:ignore-user-list'),
1890 1890
         'colspan' => '2',
1891
-      )
1891
+        )
1892 1892
     );
1893
-  }
1893
+    }
1894 1894
 
1895
-  $attr = array('class' => 'ignore_user');
1896
-  $form['ignoreblock']['current_list']['ignored_users']['#value'] = theme('table', $header, $rows, $attr);
1897
-  $output .= drupal_render($form['current_list']);
1895
+    $attr = array('class' => 'ignore_user');
1896
+    $form['ignoreblock']['current_list']['ignored_users']['#value'] = theme('table', $header, $rows, $attr);
1897
+    $output .= drupal_render($form['current_list']);
1898 1898
 
1899
-  if ($form['pager']['#value']) {
1899
+    if ($form['pager']['#value']) {
1900 1900
     $output .= drupal_render($form['pager']);
1901
-  }
1901
+    }
1902 1902
 
1903
-  $output .= drupal_render($form);
1903
+    $output .= drupal_render($form);
1904 1904
 
1905
-  return $output;
1905
+    return $output;
1906 1906
 }
1907 1907
 
1908 1908
 /**
1909
-  * Validate the privacy preferences form.
1910
-  */
1909
+ * Validate the privacy preferences form.
1910
+ */
1911 1911
 function boincwork_privacyprefs_form_validate($form, &$form_state) {
1912
-  require_boinc('util');
1912
+    require_boinc('util');
1913 1913
   
1914
-  // Verify all non-boolean user input values and notify form API of failures
1915
-  // ... currently there are no non-boolean values!
1914
+    // Verify all non-boolean user input values and notify form API of failures
1915
+    // ... currently there are no non-boolean values!
1916 1916
 }
1917 1917
 
1918 1918
 /**
1919
-  * Handle post-validation submission of privacy preferences form.
1920
-  */
1919
+ * Handle post-validation submission of privacy preferences form.
1920
+ */
1921 1921
 function boincwork_privacyprefs_form_submit($form, &$form_state) {
1922
-  require_boinc(array('user', 'prefs', 'consent'));
1922
+    require_boinc(array('user', 'prefs', 'consent'));
1923 1923
 
1924
-  global $user;
1925
-  $account = user_load($user->uid);
1924
+    global $user;
1925
+    $account = user_load($user->uid);
1926 1926
 
1927
-  // Load BOINC account
1928
-  $boincuser = BoincUser::lookup_id($account->boincuser_id);
1927
+    // Load BOINC account
1928
+    $boincuser = BoincUser::lookup_id($account->boincuser_id);
1929 1929
   
1930
-  // Privacy preferences
1931
-  $boincuser->send_email = ($form_state['values']['send_email']) ? true : false;
1932
-  $boincuser->show_hosts = ($form_state['values']['show_hosts']) ? true : false;
1930
+    // Privacy preferences
1931
+    $boincuser->send_email = ($form_state['values']['send_email']) ? true : false;
1932
+    $boincuser->show_hosts = ($form_state['values']['show_hosts']) ? true : false;
1933 1933
 
1934
-  // Privacy consent options, extract the 'privacyconsent_SHORTNAME'
1935
-  // from values array, and loop over them; each is checked with
1936
-  // check_consent_type(). Also check the current state of the option
1937
-  // in the database. If the form value is a new state, then set it.
1938
-  $result = preg_grep("/^privacyconsent/", array_keys($form_state['values']));
1939
-  $privacyconsent_prefs = array_intersect_key($form_state['values'], array_flip($result));
1940
-  foreach ($privacyconsent_prefs as $name => $newstate) {
1934
+    // Privacy consent options, extract the 'privacyconsent_SHORTNAME'
1935
+    // from values array, and loop over them; each is checked with
1936
+    // check_consent_type(). Also check the current state of the option
1937
+    // in the database. If the form value is a new state, then set it.
1938
+    $result = preg_grep("/^privacyconsent/", array_keys($form_state['values']));
1939
+    $privacyconsent_prefs = array_intersect_key($form_state['values'], array_flip($result));
1940
+    foreach ($privacyconsent_prefs as $name => $newstate) {
1941 1941
     $subname = explode('_', $name)[1];
1942 1942
     $currstate = (check_user_consent($boincuser, $subname)) ? 1 : 0 ;
1943 1943
     list($checkct, $ctid) = check_consent_type($subname);
1944 1944
     if ($checkct && ($currstate != $newstate)) {
1945
-      consent_to_a_policy($boincuser, $ctid, $newstate, 0, 'Webform', time());
1945
+        consent_to_a_policy($boincuser, $ctid, $newstate, 0, 'Webform', time());
1946
+    }
1946 1947
     }
1947
-  }
1948 1948
 
1949
-  //project_prefs_update($boincuser, $main_prefs);
1949
+    //project_prefs_update($boincuser, $main_prefs);
1950 1950
   
1951
-  db_set_active('boinc_rw');
1952
-  db_query("UPDATE user SET send_email = '{$boincuser->send_email}', show_hosts = '{$boincuser->show_hosts}' WHERE id = '{$boincuser->id}'");
1953
-  db_set_active('default');
1951
+    db_set_active('boinc_rw');
1952
+    db_query("UPDATE user SET send_email = '{$boincuser->send_email}', show_hosts = '{$boincuser->show_hosts}' WHERE id = '{$boincuser->id}'");
1953
+    db_set_active('default');
1954 1954
   
1955
-  drupal_set_message(t('Your privacy preferences have been updated.'));
1955
+    drupal_set_message(t('Your privacy preferences have been updated.'));
1956 1956
 }
1957 1957
 
1958 1958
 /**
@@ -1960,14 +1960,14 @@  discard block
 block discarded – undo
1960 1960
  * ignore list.
1961 1961
  */
1962 1962
 function _boincwork_ignore_list_form_submit($form, $form_state) {
1963
-  boincwork_ignore_user_add_user_username($form_state['values']['addusername_toignorelist']);
1964
-  drupal_set_message(
1963
+    boincwork_ignore_user_add_user_username($form_state['values']['addusername_toignorelist']);
1964
+    drupal_set_message(
1965 1965
     bts('@username has been added to your ignore list. See your !privacy_preferences for more details.',
1966
-      array(
1966
+        array(
1967 1967
         '@username' => $form_state['values']['addusername_toignorelist'],
1968 1968
         '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'),
1969
-      ),
1970
-      NULL, 'boinc:ignore-user-add'),
1969
+        ),
1970
+        NULL, 'boinc:ignore-user-add'),
1971 1971
     'status');
1972 1972
 }
1973 1973
 
@@ -1976,37 +1976,37 @@  discard block
 block discarded – undo
1976 1976
  */
1977 1977
 function boincwork_selectapp_form(&$form_state, $apps, $current_app) {
1978 1978
 
1979
-  $form['selectapp'] = array(
1979
+    $form['selectapp'] = array(
1980 1980
     '#type' => 'select',
1981 1981
     '#attributes' => array(
1982
-      'class' => 'task-app-filter',
1983
-      'onchange' => 'this.form.submit();',
1982
+        'class' => 'task-app-filter',
1983
+        'onchange' => 'this.form.submit();',
1984 1984
     ),
1985 1985
     '#default_value' => $current_app,
1986 1986
     '#options' => $apps,
1987 1987
     '#post_render' => array('_boincwork_selectapp_form_callback'),
1988
-  );
1988
+    );
1989 1989
 
1990
-  // Class task-app-filter-submit for this form is used in
1991
-  // theming. CSS sets 'display:none' if javascript is present. Thus
1992
-  // only non-js users/browsers will see the Apply Filter button.
1993
-  $form['submit'] = array(
1990
+    // Class task-app-filter-submit for this form is used in
1991
+    // theming. CSS sets 'display:none' if javascript is present. Thus
1992
+    // only non-js users/browsers will see the Apply Filter button.
1993
+    $form['submit'] = array(
1994 1994
     '#type' => 'submit',
1995 1995
     '#value' => bts('Apply Filter', array(), NULL, 'boinc:form-save'),
1996 1996
     '#attributes' => array('class' => 'js-hide',),
1997
-  );
1997
+    );
1998 1998
 
1999
-  return $form;
1999
+    return $form;
2000 2000
 }
2001 2001
 
2002 2002
 /**
2003 2003
  * Submit function for select appliacation form.
2004 2004
  */
2005 2005
 function boincwork_selectapp_form_submit($form, &$form_state) {
2006
-  $myargs = arg();
2007
-  array_pop($myargs);
2008
-  $newpath = implode('/', $myargs ) . '/' . $form['selectapp']['#value'];
2009
-  $form_state['redirect'] = $newpath;
2006
+    $myargs = arg();
2007
+    array_pop($myargs);
2008
+    $newpath = implode('/', $myargs ) . '/' . $form['selectapp']['#value'];
2009
+    $form_state['redirect'] = $newpath;
2010 2010
 }
2011 2011
 
2012 2012
 /**
@@ -2016,7 +2016,7 @@  discard block
 block discarded – undo
2016 2016
  * 'title' for the Application drop down box.
2017 2017
  */
2018 2018
 function _boincwork_selectapp_form_callback($theContent, $theElement) {
2019
-  $disabled = '<option value="-1" disabled hidden';
2020
-  $newContent = preg_replace('/<option value="-1"/', $disabled, $theContent);
2021
-  return $newContent;
2019
+    $disabled = '<option value="-1" disabled hidden';
2020
+    $newContent = preg_replace('/<option value="-1"/', $disabled, $theContent);
2021
+    return $newContent;
2022 2022
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincimport/boincimport.module 1 patch
Indentation   +1726 added lines, -1726 removed lines patch added patch discarded remove patch
@@ -19,9 +19,9 @@  discard block
 block discarded – undo
19 19
  * Implementation of hook_menu()
20 20
  */
21 21
 function boincimport_menu() {
22
-  $items = array();
22
+    $items = array();
23 23
   
24
-  $items['admin/boinc/import'] = array(
24
+    $items['admin/boinc/import'] = array(
25 25
     'title' => 'Environment: Data import',
26 26
     'description' => 'Overview of the BOINC data import process.',
27 27
     'access callback' => 'user_access',
@@ -29,8 +29,8 @@  discard block
 block discarded – undo
29 29
     'page callback' => 'boincimport_main',
30 30
     'file' => 'boincimport.pages.inc',
31 31
     'type' => MENU_NORMAL_ITEM,
32
-  );
33
-  $items['admin/boinc/import/post_configuration'] = array(
32
+    );
33
+    $items['admin/boinc/import/post_configuration'] = array(
34 34
     'title' => 'Post-migration configuration',
35 35
     'description' => 'Tie up a few odds and ends in the system configuration
36 36
       after data importation is complete.',
@@ -39,44 +39,44 @@  discard block
 block discarded – undo
39 39
     'page callback' => 'boincimport_post_configuration', 
40 40
     'file' => 'boincimport.pages.inc',
41 41
     'type' => MENU_CALLBACK,
42
-  );
43
-  $items['admin/boinc/import/cleanup'] = array(
42
+    );
43
+    $items['admin/boinc/import/cleanup'] = array(
44 44
     'title' => 'Cleanup',
45 45
     'access callback' => 'user_access',
46 46
     'access arguments' => array('import boinc data'),
47 47
     'page callback' => 'boincimport_cleanup', 
48 48
     'type' => MENU_CALLBACK,
49
-  );
50
-  $items['admin/boinc/import/complete/%'] = array(
49
+    );
50
+    $items['admin/boinc/import/complete/%'] = array(
51 51
     'title' => 'Complete',
52 52
     'access callback' => 'user_access',
53 53
     'access arguments' => array('import boinc data'),
54 54
     'page callback' => 'boincimport_complete',
55 55
     'page arguments' => array(4),
56 56
     'type' => MENU_CALLBACK,
57
-  );
58
-  $items['admin/boinc/import/process'] = array(
57
+    );
58
+    $items['admin/boinc/import/process'] = array(
59 59
     'title' => 'Execute migration',
60 60
     'access callback' => 'user_access',
61 61
     'access arguments' => array('import boinc data'),
62 62
     'page callback' => 'boincimport_process', 
63 63
     'type' => MENU_CALLBACK,
64
-  );
65
-  $items['admin/boinc/import/reset'] = array(
64
+    );
65
+    $items['admin/boinc/import/reset'] = array(
66 66
     'title' => 'Reset BOINC database URL',
67 67
     'access callback' => 'user_access',
68 68
     'access arguments' => array('import boinc data'),
69 69
     'page callback' => 'boincimport_reset',
70 70
     'type' => MENU_CALLBACK,
71
-  );
72
-  $items['admin/boinc/import/unlock'] = array(
71
+    );
72
+    $items['admin/boinc/import/unlock'] = array(
73 73
     'title' => 'Unlock BOINC import process',
74 74
     'access callback' => 'user_access',
75 75
     'access arguments' => array('import boinc data'),
76 76
     'page callback' => 'boincimport_unlock',
77 77
     'type' => MENU_CALLBACK,
78
-  );
79
-  $items['admin/boinc/import/settings'] = array(
78
+    );
79
+    $items['admin/boinc/import/settings'] = array(
80 80
     'title' => 'BOINC data import settings',
81 81
     'description' => 'Configure the BOINC data import process in preparation
82 82
       for pulling user accounts, teams, and forums into Drupal.',
@@ -86,37 +86,37 @@  discard block
 block discarded – undo
86 86
     'page arguments' => array('boincimport_admin_settings'),
87 87
     'file' => 'boincimport.pages.inc',
88 88
     'type' => MENU_CALLBACK,
89
-  );
90
-  return $items;
89
+    );
90
+    return $items;
91 91
 }
92 92
 
93 93
 /**
94 94
  * Implementation of hook_perm()
95 95
  */
96 96
 function boincimport_perm() {
97
-  return array('import boinc data');
97
+    return array('import boinc data');
98 98
 }
99 99
 
100 100
 /**
101 101
  * Callback admin/boinc/import/reset
102 102
  */
103 103
 function boincimport_reset() {
104
-  global $db_url;
105
-  $boinc_db_url = (is_array($db_url)) ? (isset($db_url['boinc_rw']) ? $db_url['boinc_rw'] : $db_url['default']) : $db_url;
106
-  variable_set('boincimport_db_url', $boinc_db_url);
107
-  variable_set('boincimport_ready', 0);
108
-  return '<p>'. t('The BOINC database URL has been reset. You may now <a href="@configlink">go back to the configuration page</a>.',
109
-      array('@configlink' => url('admin/boinc/import/settings'))) .'</p>';
104
+    global $db_url;
105
+    $boinc_db_url = (is_array($db_url)) ? (isset($db_url['boinc_rw']) ? $db_url['boinc_rw'] : $db_url['default']) : $db_url;
106
+    variable_set('boincimport_db_url', $boinc_db_url);
107
+    variable_set('boincimport_ready', 0);
108
+    return '<p>'. t('The BOINC database URL has been reset. You may now <a href="@configlink">go back to the configuration page</a>.',
109
+        array('@configlink' => url('admin/boinc/import/settings'))) .'</p>';
110 110
 }
111 111
 
112 112
 /**
113 113
  * Callback admin/boinc/import/unlock
114 114
  */
115 115
 function boincimport_unlock() {
116
-  variable_del('boincimport_process_locked');
117
-  return '<p>'. t('The BOINC data import process has been unlocked. You may
116
+    variable_del('boincimport_process_locked');
117
+    return '<p>'. t('The BOINC data import process has been unlocked. You may
118 118
     now !proceed_with_import.', array(
119
-      '!proceed_with_import' => l(t('proceed with the import'),
119
+        '!proceed_with_import' => l(t('proceed with the import'),
120 120
         'admin/boinc/import/process')
121 121
     )) .'</p>';
122 122
 }
@@ -125,7 +125,7 @@  discard block
 block discarded – undo
125 125
  * Callback admin/boinc/import/cleanup
126 126
  */
127 127
 function boincimport_cleanup() {
128
-  return boincimport_process_cleanup() .'<p>'. t('Drupal database cleaned.') .'</p>';
128
+    return boincimport_process_cleanup() .'<p>'. t('Drupal database cleaned.') .'</p>';
129 129
 }
130 130
 
131 131
 /**
@@ -139,23 +139,23 @@  discard block
 block discarded – undo
139 139
  * want to test. Therefore, the test part of the code is not used, now.
140 140
  */
141 141
 function _boincimport_db_connect($test= 0) {
142
-  global $db_url;
143
-  $db_ready = variable_get('boincimport_db_configured', 1);
144
-  if (!$db_ready) {
142
+    global $db_url;
143
+    $db_ready = variable_get('boincimport_db_configured', 1);
144
+    if (!$db_ready) {
145 145
     if (is_array($db_url)) {
146
-      $db_url2 = $db_url;
146
+        $db_url2 = $db_url;
147 147
     } else {
148
-      $db_url2['default'] = $db_url;
148
+        $db_url2['default'] = $db_url;
149 149
     }
150 150
     $db_url2['boinc_rw'] = variable_get('boincimport_db_url', $db_url);
151 151
     $GLOBALS['db_url'] =& $db_url2;
152 152
     if ($test) {
153
-      if (!db_connect($db_url2['boinc_rw'])) {
153
+        if (!db_connect($db_url2['boinc_rw'])) {
154 154
         return 0;
155
-      }
155
+        }
156 156
     }
157
-  }
158
-  return 1;
157
+    }
158
+    return 1;
159 159
   
160 160
 }
161 161
 
@@ -167,17 +167,17 @@  discard block
 block discarded – undo
167 167
  *    $out['result'] = boolean.
168 168
  */
169 169
 function _boincimport_check_module($module) {
170
-  $out['html'] = '<ul>';
171
-  $result = module_exists($module);
172
-  $out['result'] = $result;
173
-  if ($result == 1) {
170
+    $out['html'] = '<ul>';
171
+    $result = module_exists($module);
172
+    $out['result'] = $result;
173
+    if ($result == 1) {
174 174
     $out['html'] .= '<li>'. t('Module %module is enabled. OK!', array('%module' => $module)) .'</li>';
175
-  }
176
-  else {
175
+    }
176
+    else {
177 177
     $out['html'] .= '<li><span class="marker">'. t('Module %module is disabled.', array('%module' => $module)) .'</span></li>';
178
-  }
179
-  $out['html'] .= '</ul>';
180
-  return $out;
178
+    }
179
+    $out['html'] .= '</ul>';
180
+    return $out;
181 181
 }
182 182
 
183 183
 /**
@@ -188,259 +188,259 @@  discard block
 block discarded – undo
188 188
  *   $out['result'] = boolean.
189 189
  */
190 190
 function _boincimport_check_tables($tables = array(), $db = 'default' , $prefix = 1) {
191
-  _boincimport_db_connect();
191
+    _boincimport_db_connect();
192 192
 
193
-  $out['html'] = '<ul>';
194
-  $out['result']= 1;
195
-  foreach ($tables as $table) {
193
+    $out['html'] = '<ul>';
194
+    $out['result']= 1;
195
+    foreach ($tables as $table) {
196 196
     if ($prefix) {
197
-      $table = db_prefix_tables('{'. $table .'}');
197
+        $table = db_prefix_tables('{'. $table .'}');
198 198
     }  
199 199
 
200 200
     db_set_active($db);
201 201
     if ($GLOBALS['db_type'] == 'pgsql') {
202
-      // adapt from db_table_exists in database.pgsql.inc
203
-      $result = (bool) db_result(db_query("SELECT COUNT(*) FROM pg_class WHERE relname = '%s'", $table));
202
+        // adapt from db_table_exists in database.pgsql.inc
203
+        $result = (bool) db_result(db_query("SELECT COUNT(*) FROM pg_class WHERE relname = '%s'", $table));
204 204
     }
205 205
     else {
206
-      // adapt from db_table_exists in database.mysql.inc
207
-      $result = (bool) db_fetch_object(db_query("SHOW TABLES LIKE '%s'", $table));
206
+        // adapt from db_table_exists in database.mysql.inc
207
+        $result = (bool) db_fetch_object(db_query("SHOW TABLES LIKE '%s'", $table));
208 208
     }
209 209
     db_set_active('default');
210 210
     if ($result) {
211
-      $out['html'] .= '<li>'. t('Table %table: OK!', array('%table' => $table)) .'</li>';
211
+        $out['html'] .= '<li>'. t('Table %table: OK!', array('%table' => $table)) .'</li>';
212 212
     }
213 213
     else {
214
-      $out['html'] .= '<li><span class="marker">'. t('Table <strong>%table</strong> does not exist!', array('%table' => $table)) .'</span></li>';
215
-      $out['result']= 0;
214
+        $out['html'] .= '<li><span class="marker">'. t('Table <strong>%table</strong> does not exist!', array('%table' => $table)) .'</span></li>';
215
+        $out['result']= 0;
216 216
     }
217
-  }
218
-  $out['html'] .= '</ul>';
219
-  return $out;
217
+    }
218
+    $out['html'] .= '</ul>';
219
+    return $out;
220 220
 }
221 221
 
222 222
 
223 223
 
224 224
 function boincimport_process() {
225
-  // Start with a quick sanity check on the BOINC environment
226
-  boinc_get_path();
225
+    // Start with a quick sanity check on the BOINC environment
226
+    boinc_get_path();
227 227
   
228
-  if (!variable_get('boincimport_ready', 0)) {
228
+    if (!variable_get('boincimport_ready', 0)) {
229 229
     return '<p>'. t('You cannot import the data now. Please <a href="@settings">complete the setup first</a>', array('@settings' => url('admin/boinc/import/settings'))) .'</p>';
230
-  }
230
+    }
231 231
 
232
-  $output = 'BOINC import process form';
233
-  $output .= drupal_get_form('boincimport_process_form');
234
-  return $output;
232
+    $output = 'BOINC import process form';
233
+    $output .= drupal_get_form('boincimport_process_form');
234
+    return $output;
235 235
 }
236 236
 
237 237
 function boincimport_process_form() {
238
-  $form = array();
239
-  _boincimport_db_connect() ;
240
-  // Causes problems with form api redirect
241
-  //ini_set('display_errors', TRUE);
238
+    $form = array();
239
+    _boincimport_db_connect() ;
240
+    // Causes problems with form api redirect
241
+    //ini_set('display_errors', TRUE);
242 242
 
243
-  // Adjust how long you want the script to run...
244
-  if (!ini_get('safe_mode')) {
243
+    // Adjust how long you want the script to run...
244
+    if (!ini_get('safe_mode')) {
245 245
     // This will always be set on PHP7, but not on PHP5 with safe mode
246 246
     set_time_limit(variable_get('boincimport_time_limit', 0));
247
-  }
247
+    }
248 248
 
249
-  // Check for a lock on the import process
250
-  if (variable_get('boincimport_process_locked', 0)) {
249
+    // Check for a lock on the import process
250
+    if (variable_get('boincimport_process_locked', 0)) {
251 251
     drupal_set_message(t('The import process is locked. If you are sure that
252 252
       it is no longer running, you may !unlock_it', 
253
-      array('!unlock_it' => l(t('release the lock'),
253
+        array('!unlock_it' => l(t('release the lock'),
254 254
         'admin/boinc/import/unlock')
255
-      )), 'warning');
255
+        )), 'warning');
256 256
     watchdog('boincimport', 'The import process is locked. If you are sure that
257 257
       it is no longer running, you may !unlock_it', 
258
-      array('!unlock_it' => l(t('release the lock'),
258
+        array('!unlock_it' => l(t('release the lock'),
259 259
         'admin/boinc/import/unlock')
260
-      ), WATCHDOG_WARNING); 
261
-  }
262
-  else {
260
+        ), WATCHDOG_WARNING); 
261
+    }
262
+    else {
263 263
     $boincimport_functions = array(
264
-      'users' => t('Import users'),
265
-      'teams' => t('Import teams'),
266
-      'friends' => t('Import friendships'), 
267
-      'preferences' => t('Import user preferences'),
268
-      'private messages' => t('Import private messages'),
269
-      'categories' => t('Import forum containers'),
270
-      'topics' => t('Import topics'),
271
-      'posts' => t('Import posts'),
272
-      'team forums' => t('Import team forums'),
273
-      'team topics' => t('Import team topics'),
274
-      'team posts' => t('Import team posts'),
275
-      'url' => t('Transform URLs'),
264
+        'users' => t('Import users'),
265
+        'teams' => t('Import teams'),
266
+        'friends' => t('Import friendships'), 
267
+        'preferences' => t('Import user preferences'),
268
+        'private messages' => t('Import private messages'),
269
+        'categories' => t('Import forum containers'),
270
+        'topics' => t('Import topics'),
271
+        'posts' => t('Import posts'),
272
+        'team forums' => t('Import team forums'),
273
+        'team topics' => t('Import team topics'),
274
+        'team posts' => t('Import team posts'),
275
+        'url' => t('Transform URLs'),
276 276
     );
277 277
 
278 278
     $form['import'] = array(
279
-      '#type' => 'select',
280
-      '#title' => t('Next import to perform'),
281
-      '#default_value' => $_SESSION['boincimport_stage_selected'],
282
-      '#options' => $boincimport_functions,
279
+        '#type' => 'select',
280
+        '#title' => t('Next import to perform'),
281
+        '#default_value' => $_SESSION['boincimport_stage_selected'],
282
+        '#options' => $boincimport_functions,
283 283
     );
284 284
     $form[] = array(
285
-      '#type' => 'submit',
286
-      '#value' => t('Import'),
285
+        '#type' => 'submit',
286
+        '#value' => t('Import'),
287 287
     );
288
-  }
289
-  return $form;
288
+    }
289
+    return $form;
290 290
 }
291 291
 
292 292
 function boincimport_process_form_submit($form, $form_state) {
293 293
   
294
-  // Lock the import process
295
-  if (!variable_get('boincimport_process_locked', 0)) {
294
+    // Lock the import process
295
+    if (!variable_get('boincimport_process_locked', 0)) {
296 296
     variable_set('boincimport_process_locked', 1);
297
-  }
298
-  else {
297
+    }
298
+    else {
299 299
     watchdog('boincimport', 'The import process is locked, but another process
300 300
       is trying to access it...', array(), WATCHDOG_WARNING); 
301
-  }
301
+    }
302 302
   
303
-  switch ($form_state['values']['import']) {
303
+    switch ($form_state['values']['import']) {
304 304
     case 'users':
305 305
       boincimport_users();
306
-      break;
306
+        break;
307 307
 
308 308
     case 'teams':
309 309
       boincimport_teams();
310
-      if (!variable_get('boincimport_import_team_successful', 0)) {
310
+        if (!variable_get('boincimport_import_team_successful', 0)) {
311 311
         $_SESSION['boincimport_stage_selected'] = 'teams';
312
-      }
313
-      else {
312
+        }
313
+        else {
314 314
         $_SESSION['boincimport_stage_selected'] = 'friends';
315
-      }
316
-      break;
315
+        }
316
+        break;
317 317
 
318 318
     case 'friends':
319 319
       boincimport_friends();
320
-      if (!variable_get('boincimport_import_friend_successful', 0)) {
320
+        if (!variable_get('boincimport_import_friend_successful', 0)) {
321 321
         $_SESSION['boincimport_stage_selected'] = 'friends';
322
-      }
323
-      else {
322
+        }
323
+        else {
324 324
         $_SESSION['boincimport_stage_selected'] = 'preferences';
325
-      }
326
-      break;
325
+        }
326
+        break;
327 327
 
328 328
     case 'preferences':
329 329
       boincimport_preferences();
330
-      if (!variable_get('boincimport_import_preferences_successful', 0)) {
330
+        if (!variable_get('boincimport_import_preferences_successful', 0)) {
331 331
         $_SESSION['boincimport_stage_selected'] = 'preferences';
332
-      }
333
-      else {
332
+        }
333
+        else {
334 334
         $_SESSION['boincimport_stage_selected'] = 'private messages';
335
-      }
336
-      break;
335
+        }
336
+        break;
337 337
 
338 338
     case 'private messages':
339 339
       boincimport_private_msgs();
340
-      if (!variable_get('boincimport_import_private_msg_successful', 0)) {
340
+        if (!variable_get('boincimport_import_private_msg_successful', 0)) {
341 341
         $_SESSION['boincimport_stage_selected'] = 'private messages';
342
-      }
343
-      else {
342
+        }
343
+        else {
344 344
         $_SESSION['boincimport_stage_selected'] = 'categories';
345
-      }
346
-      break;
345
+        }
346
+        break;
347 347
 
348 348
     case 'categories':
349 349
       boincimport_forum_categories();
350
-      if (!variable_get('boincimport_import_category_successful', 0)) {
350
+        if (!variable_get('boincimport_import_category_successful', 0)) {
351 351
         $_SESSION['boincimport_stage_selected'] = 'categories';
352
-      }
353
-      else {
352
+        }
353
+        else {
354 354
         $_SESSION['boincimport_stage_selected'] = 'topics';
355
-      }
356
-      break;
355
+        }
356
+        break;
357 357
 
358 358
     case 'topics':      
359 359
       boincimport_forum_topics();
360
-      if (!variable_get('boincimport_import_topic_successful', 0)) {
360
+        if (!variable_get('boincimport_import_topic_successful', 0)) {
361 361
         $_SESSION['boincimport_stage_selected'] = 'topics';
362
-      }
363
-      else {
362
+        }
363
+        else {
364 364
         $_SESSION['boincimport_stage_selected'] = 'posts';
365
-      }
366
-      break;
365
+        }
366
+        break;
367 367
       
368 368
     case 'posts':
369 369
       boincimport_forum_posts();
370
-      if (!variable_get('boincimport_import_post_successful', 0)) {
370
+        if (!variable_get('boincimport_import_post_successful', 0)) {
371 371
         $_SESSION['boincimport_stage_selected'] = 'posts';
372
-      }
373
-      else {
372
+        }
373
+        else {
374 374
         $_SESSION['boincimport_stage_selected'] = 'url';
375
-      }
376
-      break;
375
+        }
376
+        break;
377 377
 
378 378
     case 'team forums':
379 379
       boincimport_team_forums();
380
-      if (!variable_get('boincimport_team_forum_successful', 0)) {
380
+        if (!variable_get('boincimport_team_forum_successful', 0)) {
381 381
         $_SESSION['boincimport_stage_selected'] = 'team forums';
382
-      }
383
-      else {
382
+        }
383
+        else {
384 384
         $_SESSION['boincimport_stage_selected'] = 'team topics';
385
-      }
386
-      break;
385
+        }
386
+        break;
387 387
 
388 388
     case 'team topics':      
389 389
       boincimport_team_forum_topics();
390
-      if (!variable_get('boincimport_team_topic_successful', 0)) {
390
+        if (!variable_get('boincimport_team_topic_successful', 0)) {
391 391
         $_SESSION['boincimport_stage_selected'] = 'team topics';
392
-      }
393
-      else {
392
+        }
393
+        else {
394 394
         $_SESSION['boincimport_stage_selected'] = 'team posts';
395
-      }
396
-      break;
395
+        }
396
+        break;
397 397
       
398 398
     case 'team posts':
399 399
       boincimport_team_forum_posts();
400
-      if (!variable_get('boincimport_team_post_successful', 0)) {
400
+        if (!variable_get('boincimport_team_post_successful', 0)) {
401 401
         $_SESSION['boincimport_stage_selected'] = 'team posts';
402
-      }
403
-      else {
402
+        }
403
+        else {
404 404
         $_SESSION['boincimport_stage_selected'] = 'url';
405
-      }
406
-      break;
405
+        }
406
+        break;
407 407
 
408 408
     case 'url':
409 409
       boincimport_replace_urls();
410
-      if (!variable_get('boincimport_replace_url_successful', 0)) {
410
+        if (!variable_get('boincimport_replace_url_successful', 0)) {
411 411
         $_SESSION['boincimport_stage_selected'] = 'url';
412
-      }
413
-      else {
412
+        }
413
+        else {
414 414
         drupal_set_message('Congratulations.  Import Finished');
415 415
         drupal_set_message('Please visit the '. l('Post migration configuration', 'admin/boinc/import/post_configuration') .' page');
416 416
         watchdog('boincimport', 'Import process is complete', array(), WATCHDOG_INFO); 
417 417
         unset($_SESSION['boincimport_stage_selected']);
418
-      }
419
-      break;
418
+        }
419
+        break;
420 420
     default:
421 421
       $_SESSION['boincimport_stage_selected'] = 'users';
422
-      break;
423
-  }
422
+        break;
423
+    }
424 424
 }
425 425
 
426 426
 function boincimport_complete($section) {
427
-  switch ($section) {
428
-  case 'users':
427
+    switch ($section) {
428
+    case 'users':
429 429
     // Set the user import successful flag in the variable table
430 430
     variable_set('boincimport_import_user_successful', '1');
431 431
     $_SESSION['boincimport_stage_selected'] = 'teams';
432 432
     break;
433
-  case 'teams':
433
+    case 'teams':
434 434
     
435 435
     break;
436 436
   
437
-  default:
437
+    default:
438 438
   }
439 439
   
440
-  // Release the lock on the import process
441
-  variable_del('boincimport_process_locked');
440
+    // Release the lock on the import process
441
+    variable_del('boincimport_process_locked');
442 442
   
443
-  drupal_goto('admin/boinc/import/process');
443
+    drupal_goto('admin/boinc/import/process');
444 444
 }
445 445
 
446 446
 
@@ -452,26 +452,26 @@  discard block
 block discarded – undo
452 452
  * Import users (at least those required for further data import)
453 453
  */
454 454
 function boincimport_users() {
455
-  // Check whether the user table has been successfully imported already
456
-  if (variable_get('boincimport_import_user_successful', 0)) {
455
+    // Check whether the user table has been successfully imported already
456
+    if (variable_get('boincimport_import_user_successful', 0)) {
457 457
     drupal_set_message(t('Note: user import has already run successfully'));
458 458
     watchdog(
459
-      'boincimport', 'Note: user import has already run successfully',
460
-      array(), WATCHDOG_INFO
459
+        'boincimport', 'Note: user import has already run successfully',
460
+        array(), WATCHDOG_INFO
461 461
     ); 
462
-  } 
462
+    } 
463 463
 
464
-  if (!variable_get('boincimport_import_user_started', 0)) {
464
+    if (!variable_get('boincimport_import_user_started', 0)) {
465 465
     // Could prepare database tables, if new fields are necessary, etc.
466 466
     variable_set('boincimport_import_user_started', 1);
467
-  }
467
+    }
468 468
 
469
-  $pre = variable_get('boincimport_table_prefix', '');
470
-  $import_lurkers = variable_get('boincimport_import_lurkers', 1);
469
+    $pre = variable_get('boincimport_table_prefix', '');
470
+    $import_lurkers = variable_get('boincimport_import_lurkers', 1);
471 471
 
472
-  // Determine which users need to be processed
473
-  db_set_active('boinc_rw');
474
-  if ($import_lurkers) {
472
+    // Determine which users need to be processed
473
+    db_set_active('boinc_rw');
474
+    if ($import_lurkers) {
475 475
     // Import all users, even those who have no community participation; other
476 476
     // users will be imported when they first try to log into the drupal site
477 477
     $boinc_accounts = db_query('
@@ -479,8 +479,8 @@  discard block
 block discarded – undo
479 479
       ORDER BY id ASC'
480 480
     );
481 481
     $user_count = mysqli_num_rows($boinc_accounts);
482
-  }
483
-  else {
482
+    }
483
+    else {
484 484
     // Need to import any user who is currently ignored in order to keep them
485 485
     // ignored... not particularly clean (ignored users are stored in a string)
486 486
     $ignored_user_list = array(0);
@@ -491,7 +491,7 @@  discard block
 block discarded – undo
491 491
       ORDER BY userid ASC"
492 492
     );
493 493
     while ($ignoring_user = db_fetch_object($ignoring_users)) {
494
-      $ignored_user_list = $ignored_user_list + array_fill_keys(explode('|', trim($ignoring_user->ignorelist, '|')), 1);
494
+        $ignored_user_list = $ignored_user_list + array_fill_keys(explode('|', trim($ignoring_user->ignorelist, '|')), 1);
495 495
     }
496 496
     $ignored_user_list = array_keys($ignored_user_list);
497 497
     // Get IDs for all users who will need to be imported now
@@ -507,86 +507,86 @@  discard block
 block discarded – undo
507 507
         (SELECT DISTINCT userid FROM {private_messages}) UNION
508 508
         (SELECT DISTINCT senderid FROM {private_messages})
509 509
       ) AS usersToImport",
510
-      implode(',', $ignored_user_list)
510
+        implode(',', $ignored_user_list)
511 511
     );
512 512
     $user_count = mysqli_num_rows($boinc_accounts);
513
-  }
514
-  db_set_active('default');
513
+    }
514
+    db_set_active('default');
515 515
   
516
-  if (!$user_count) {
516
+    if (!$user_count) {
517 517
     drupal_set_message(
518
-      t('There were no users found: Aborting script'), 'error'
518
+        t('There were no users found: Aborting script'), 'error'
519 519
     );
520 520
     watchdog('boincimport',
521
-      'There were no users found: Aborting script', array(), WATCHDOG_INFO
521
+        'There were no users found: Aborting script', array(), WATCHDOG_INFO
522 522
     );
523 523
     // Release the lock on the import process
524 524
     variable_del('boincimport_process_locked');
525 525
     return t('There were no users found: Aborting script.');
526
-  }
526
+    }
527 527
 
528
-  watchdog('boincimport',
528
+    watchdog('boincimport',
529 529
     'Found %user_count users: Beginning import',
530 530
     array('%user_count' => $user_count), WATCHDOG_INFO
531
-  ); 
532
-  
533
-  // User import relies on Drupal and BOINC APIs to manage data being read
534
-  // from one database and saved to the other. This approach keeps things
535
-  // clean and simple, but since a sizable user base will wreak havoc on system
536
-  // resources, the job is broken into batches here and each batch is processed
537
-  // by a separate process. 
538
-  
539
-  //$batch_size = variable_get('boincimport_user_batch_size', 50);
540
-  //$batch_count = $user_count - ($user_count % $batch_size) + $batch_size;
541
-  $operations = array();
542
-  $existing_users = array();
543
-  $duplicates = array();
544
-  
545
-  // Get the list of users already in Drupal to be sure we're not importing
546
-  // any twice
547
-  $result = db_query('
531
+    ); 
532
+  
533
+    // User import relies on Drupal and BOINC APIs to manage data being read
534
+    // from one database and saved to the other. This approach keeps things
535
+    // clean and simple, but since a sizable user base will wreak havoc on system
536
+    // resources, the job is broken into batches here and each batch is processed
537
+    // by a separate process. 
538
+  
539
+    //$batch_size = variable_get('boincimport_user_batch_size', 50);
540
+    //$batch_count = $user_count - ($user_count % $batch_size) + $batch_size;
541
+    $operations = array();
542
+    $existing_users = array();
543
+    $duplicates = array();
544
+  
545
+    // Get the list of users already in Drupal to be sure we're not importing
546
+    // any twice
547
+    $result = db_query('
548 548
     SELECT uid, boinc_id FROM {boincuser}'
549
-  );
550
-  while ($row = db_fetch_object($result)) {
549
+    );
550
+    while ($row = db_fetch_object($result)) {
551 551
     $existing_users[$row->boinc_id] = $row->uid;
552
-  }
552
+    }
553 553
   
554
-  // Create batches to process
555
-  while ($boinc_account = db_fetch_object($boinc_accounts)) {
556
-     if (isset($existing_users[$boinc_account->id])) {
557
-      // This user has already been imported
558
-      $duplicates[] = $boinc_account->id;
554
+    // Create batches to process
555
+    while ($boinc_account = db_fetch_object($boinc_accounts)) {
556
+        if (isset($existing_users[$boinc_account->id])) {
557
+        // This user has already been imported
558
+        $duplicates[] = $boinc_account->id;
559 559
     }
560 560
     else {
561
-      $operations[] = array(
561
+        $operations[] = array(
562 562
         'boincimport_users_op', array(
563
-          $boinc_account->id
563
+            $boinc_account->id
564 564
         )
565
-      );
565
+        );
566
+    }
566 567
     }
567
-  }
568 568
   
569
-  if ($duplicates) {
569
+    if ($duplicates) {
570 570
     drupal_set_message(t(
571
-      'Skipped @count accounts that were already imported',
572
-      array('@count' => count($duplicates))
571
+        'Skipped @count accounts that were already imported',
572
+        array('@count' => count($duplicates))
573 573
     ));
574 574
     watchdog('boincimport',
575
-      'Skipped @count accounts that were already imported',
576
-      array('@count' => count($duplicates)), WATCHDOG_INFO
575
+        'Skipped @count accounts that were already imported',
576
+        array('@count' => count($duplicates)), WATCHDOG_INFO
577 577
     ); 
578
-  }
578
+    }
579 579
   
580
-  $batch = array(
580
+    $batch = array(
581 581
     'operations' => $operations,
582 582
     'finished' => 'boincimport_users_finished',
583 583
     'title' => t('Importing users'),
584 584
     'init_message' => t('Beginning user import...'),
585 585
     'progress_message' => t('Processed @current out of @total users.'),
586 586
     'error_message' => t('User import has encountered an error.'),
587
-  );
587
+    );
588 588
   
589
-  batch_set($batch);
589
+    batch_set($batch);
590 590
 }
591 591
 
592 592
 /**
@@ -594,81 +594,81 @@  discard block
 block discarded – undo
594 594
  */
595 595
 function boincimport_users_op($boinc_id, &$context) {
596 596
   
597
-  // Use the $context['sandbox'] to store information needed to track progress
598
-  // between successive calls.
599
-  if (!isset($context['sandbox']['progress'])) {
597
+    // Use the $context['sandbox'] to store information needed to track progress
598
+    // between successive calls.
599
+    if (!isset($context['sandbox']['progress'])) {
600 600
     $context['sandbox']['progress'] = 0;
601 601
     $context['sandbox']['current_user'] = 0;
602 602
     $context['sandbox']['max'] = 1;
603
-  }
603
+    }
604 604
 
605
-  // Note about batch size: When a batch is processed, the batch update engine
606
-  // determines whether it should continue processing in the same request or
607
-  // provide progress feedback to the user and wait for the next request.
605
+    // Note about batch size: When a batch is processed, the batch update engine
606
+    // determines whether it should continue processing in the same request or
607
+    // provide progress feedback to the user and wait for the next request.
608 608
   
609
-  // Grab the BOINC user object and create a Drupal user from it
610
-  $account = boincuser_register_make_drupal_user($boinc_id);
611
-  $message = '';
612
-  if ($account) {
609
+    // Grab the BOINC user object and create a Drupal user from it
610
+    $account = boincuser_register_make_drupal_user($boinc_id);
611
+    $message = '';
612
+    if ($account) {
613 613
     // Store some result for post-processing in the finished callback.
614 614
     $context['results']['success'][] = $boinc_id;
615 615
     $message = "Successfully imported user {$boinc_id}";
616
-  }
617
-  else {
616
+    }
617
+    else {
618 618
     $context['results']['failure'][] = $boinc_id;
619 619
     $message = "Failed to import user {$boinc_id}!";
620 620
     watchdog('boincimport',
621
-      'Failed to import user @id!',
622
-      array('@id' => $boinc_id), WATCHDOG_WARNING
621
+        'Failed to import user @id!',
622
+        array('@id' => $boinc_id), WATCHDOG_WARNING
623 623
     ); 
624
-  }
624
+    }
625 625
   
626
-  // Update our progress information.
627
-  $context['sandbox']['progress']++;
628
-  $context['sandbox']['current_user'] = $boinc_id;
629
-  $context['message'] = $message;
626
+    // Update our progress information.
627
+    $context['sandbox']['progress']++;
628
+    $context['sandbox']['current_user'] = $boinc_id;
629
+    $context['message'] = $message;
630 630
 
631
-  // Update the progress for the batch engine
632
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
631
+    // Update the progress for the batch engine
632
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
633 633
     $context['finished'] = 1;
634
-  }
635
-  else {
634
+    }
635
+    else {
636 636
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
637
-  }
637
+    }
638 638
 }
639 639
 
640 640
 /**
641 641
  * Batch 'finished' callback
642 642
  */
643 643
 function boincimport_users_finished($success, $results, $operations) {
644
-  if ($success) {
644
+    if ($success) {
645 645
     // Let's count our successes
646 646
     $total_imported = count($results['success']);
647 647
     $total_failures = count($results['failure']);
648 648
     $message = t(
649
-      'Successfully imported @count users (@fail_count failures)',
650
-      array('@count' => $total_imported, '@fail_count' => $total_failures)
649
+        'Successfully imported @count users (@fail_count failures)',
650
+        array('@count' => $total_imported, '@fail_count' => $total_failures)
651 651
     );
652 652
     watchdog('boincimport',
653
-      'Successfully imported @count users (@fail_count failures).',
654
-      array('@count' => $total_imported, '@fail_count' => $total_failures),
655
-      WATCHDOG_INFO
653
+        'Successfully imported @count users (@fail_count failures).',
654
+        array('@count' => $total_imported, '@fail_count' => $total_failures),
655
+        WATCHDOG_INFO
656 656
     ); 
657 657
     // Set the user import successful flag in the variable table
658 658
     variable_set('boincimport_import_user_successful', '1');
659 659
     $_SESSION['boincimport_stage_selected'] = 'teams';
660
-  }
661
-  else {
660
+    }
661
+    else {
662 662
     // An error occurred.
663 663
     // $operations contains the operations that remained unprocessed.
664 664
     $error_operation = reset($operations);
665 665
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
666
-  }
667
-  drupal_set_message($message);
666
+    }
667
+    drupal_set_message($message);
668 668
   
669
-  // Release the lock on the import process
670
-  variable_del('boincimport_process_locked');
671
-  drupal_goto('admin/boinc/import/process');
669
+    // Release the lock on the import process
670
+    variable_del('boincimport_process_locked');
671
+    drupal_goto('admin/boinc/import/process');
672 672
 }
673 673
 
674 674
 
@@ -681,23 +681,23 @@  discard block
 block discarded – undo
681 681
  */
682 682
 function boincimport_teams() {
683 683
   
684
-  // Check whether the team table has been successfully imported already
685
-  if (variable_get('boincimport_import_team_successful', 0)) {
684
+    // Check whether the team table has been successfully imported already
685
+    if (variable_get('boincimport_import_team_successful', 0)) {
686 686
     drupal_set_message(t('Note: team import has already run successfully'));
687 687
     watchdog(
688
-      'boincimport', 'Note: team import has already run successfully',
689
-      array(), WATCHDOG_INFO
688
+        'boincimport', 'Note: team import has already run successfully',
689
+        array(), WATCHDOG_INFO
690 690
     ); 
691
-  }
691
+    }
692 692
 
693
-  if (!variable_get('boincimport_import_team_started', 0)) {
693
+    if (!variable_get('boincimport_import_team_started', 0)) {
694 694
     // Could prepare database tables, if new fields are necessary, etc.
695 695
     variable_set('boincimport_import_team_started', 1);
696
-  }
696
+    }
697 697
   
698
-  // Initialize the map of BOINC team types to taxonomy IDs, if needed
699
-  $team_type_map = variable_get('boincimport_team_types', array());
700
-  if (!$team_type_map) {
698
+    // Initialize the map of BOINC team types to taxonomy IDs, if needed
699
+    $team_type_map = variable_get('boincimport_team_types', array());
700
+    if (!$team_type_map) {
701 701
     // Import team types from BOINC to a Drupal vocabulary
702 702
     require_boinc('team_types');
703 703
     global $team_types;
@@ -705,112 +705,112 @@  discard block
 block discarded – undo
705 705
     // Create vocabulary if it isn't set
706 706
     $team_vid = db_result(db_query('SELECT vid FROM {vocabulary} WHERE name="%s"', 'Teams'));
707 707
     if (!$team_vid) {
708
-      $team_vocab = array(
708
+        $team_vocab = array(
709 709
         'name' => t('Teams'),
710 710
         'description' => t('Types of BOINC teams'),
711
-      );
712
-      taxonomy_save_vocabulary($team_vocab);
713
-      $team_vid = db_result(db_query('SELECT vid FROM {vocabulary} WHERE name="%s"', 'Teams'));
711
+        );
712
+        taxonomy_save_vocabulary($team_vocab);
713
+        $team_vid = db_result(db_query('SELECT vid FROM {vocabulary} WHERE name="%s"', 'Teams'));
714 714
     }
715 715
     
716 716
     foreach ($team_types as $boinc_type_id => $name) {
717
-      // Check for an existing term in the vocabulary
718
-      $team_type_id = db_result(db_query("SELECT tid FROM {term_data} WHERE vid = '{$team_vid}' AND LOWER(name) = LOWER('%s')", trim($name)));
719
-      if ($team_type_id) {
717
+        // Check for an existing term in the vocabulary
718
+        $team_type_id = db_result(db_query("SELECT tid FROM {term_data} WHERE vid = '{$team_vid}' AND LOWER(name) = LOWER('%s')", trim($name)));
719
+        if ($team_type_id) {
720 720
         $team_type = array(
721
-          'tid' => $team_type_id
721
+            'tid' => $team_type_id
722 722
         );
723
-      }
724
-      else {
723
+        }
724
+        else {
725 725
         if (!$name) continue;
726 726
         $team_type = array(
727
-          'name' => strip_tags($name),
728
-          'vid' => $team_vid,
729
-          'description' => '',
730
-          'parent' => 0
727
+            'name' => strip_tags($name),
728
+            'vid' => $team_vid,
729
+            'description' => '',
730
+            'parent' => 0
731 731
         );
732 732
         taxonomy_save_term($team_type);
733
-      }
734
-      // Note the taxonomy ID for mapping forums to categories
735
-      $team_type_map[$boinc_type_id] = $team_type['tid'];
733
+        }
734
+        // Note the taxonomy ID for mapping forums to categories
735
+        $team_type_map[$boinc_type_id] = $team_type['tid'];
736 736
     }
737 737
     variable_set('boincimport_team_types', $team_type_map);
738
-  }
738
+    }
739 739
   
740
-  $pre = variable_get('boincimport_table_prefix', '');
740
+    $pre = variable_get('boincimport_table_prefix', '');
741 741
 
742
-  // Get the list of teams to import
743
-  db_set_active('boinc_rw');
744
-  $boinc_teams = db_query('
742
+    // Get the list of teams to import
743
+    db_set_active('boinc_rw');
744
+    $boinc_teams = db_query('
745 745
     SELECT id, name, description, userid, create_time
746 746
     FROM %steam',
747 747
     $pre
748
-  );
749
-  $team_count = mysqli_num_rows($boinc_teams);
750
-  db_set_active('default');
748
+    );
749
+    $team_count = mysqli_num_rows($boinc_teams);
750
+    db_set_active('default');
751 751
 
752
-  if (!$team_count) {
752
+    if (!$team_count) {
753 753
     drupal_set_message(
754
-      t('There were no teams found: Aborting script'), 'error'
754
+        t('There were no teams found: Aborting script'), 'error'
755 755
     );
756 756
     watchdog('boincimport',
757
-      'There were no teams found: Aborting script', array(), WATCHDOG_INFO
757
+        'There were no teams found: Aborting script', array(), WATCHDOG_INFO
758 758
     );
759 759
     // Release the lock on the import process
760 760
     variable_del('boincimport_process_locked');
761 761
     return t('There were no teams found: Aborting script.');
762
-  }
762
+    }
763 763
 
764
-  watchdog('boincimport',
764
+    watchdog('boincimport',
765 765
     'Found %team_count teams: Beginning Import',
766 766
     array('%team_count' => $team_count), WATCHDOG_INFO
767
-  );
767
+    );
768 768
   
769
-  $operations = array();
770
-  $existing_teams = array();
771
-  $duplicates = array();
769
+    $operations = array();
770
+    $existing_teams = array();
771
+    $duplicates = array();
772 772
   
773
-  // Get the list of teams already in Drupal to be sure we're not importing
774
-  // any twice
775
-  $result = db_query('
773
+    // Get the list of teams already in Drupal to be sure we're not importing
774
+    // any twice
775
+    $result = db_query('
776 776
     SELECT nid, team_id FROM {boincteam}'
777
-  );
778
-  while ($row = db_fetch_object($result)) {
777
+    );
778
+    while ($row = db_fetch_object($result)) {
779 779
     $existing_teams[$row->team_id] = $row->nid;
780
-  }
780
+    }
781 781
   
782
-  // Create batches to process
783
-  while ($boinc_team = db_fetch_object($boinc_teams)) {
784
-     if (isset($existing_teams[$boinc_team->id])) {
785
-      // This team has already been imported
786
-      $duplicates[] = $boinc_team->id;
782
+    // Create batches to process
783
+    while ($boinc_team = db_fetch_object($boinc_teams)) {
784
+        if (isset($existing_teams[$boinc_team->id])) {
785
+        // This team has already been imported
786
+        $duplicates[] = $boinc_team->id;
787 787
     }
788 788
     else {
789
-      $operations[] = array(
789
+        $operations[] = array(
790 790
         'boincimport_teams_op', array(
791
-          $boinc_team
791
+            $boinc_team
792 792
         )
793
-      );
793
+        );
794
+    }
794 795
     }
795
-  }
796 796
   
797
-  if ($duplicates) {
797
+    if ($duplicates) {
798 798
     drupal_set_message(t(
799
-      'Skipped @count teams that were already imported',
800
-      array('@count' => count($duplicates))
799
+        'Skipped @count teams that were already imported',
800
+        array('@count' => count($duplicates))
801 801
     ));
802
-  }
802
+    }
803 803
   
804
-  $batch = array(
804
+    $batch = array(
805 805
     'operations' => $operations,
806 806
     'finished' => 'boincimport_teams_finished',
807 807
     'title' => t('Importing teams'),
808 808
     'init_message' => t('Beginning team import...'),
809 809
     'progress_message' => t('Processed @current out of @total teams.'),
810 810
     'error_message' => t('Team import has encountered an error.'),
811
-  );
811
+    );
812 812
   
813
-  batch_set($batch);
813
+    batch_set($batch);
814 814
 }
815 815
 
816 816
 /**
@@ -819,67 +819,67 @@  discard block
 block discarded – undo
819 819
  */
820 820
 function boincimport_teams_op($boincteam, &$context) {
821 821
   
822
-  $success = boincteam_import($boincteam);
822
+    $success = boincteam_import($boincteam);
823 823
   
824
-  $message = '';
825
-  if ($success) {
824
+    $message = '';
825
+    if ($success) {
826 826
     // Store some result for post-processing in the finished callback.
827 827
     $context['results']['success'][] = $boincteam->id;
828 828
     $message = "Successfully imported team {$boincteam->id}";
829
-  }
830
-  else {
829
+    }
830
+    else {
831 831
     $context['results']['failure'][] = $boincteam->id;
832 832
     $message = "Failed to import team {$boincteam->id}!";
833 833
     watchdog('boincimport',
834
-      'Failed to import team @id!',
835
-      array('@id' => $boincteam->id), WATCHDOG_WARNING
834
+        'Failed to import team @id!',
835
+        array('@id' => $boincteam->id), WATCHDOG_WARNING
836 836
     ); 
837
-  }
837
+    }
838 838
   
839
-  // Update our progress information.
840
-  $context['sandbox']['progress']++;
841
-  $context['sandbox']['current_team'] = $boincteam->id;
842
-  $context['message'] = $message;
839
+    // Update our progress information.
840
+    $context['sandbox']['progress']++;
841
+    $context['sandbox']['current_team'] = $boincteam->id;
842
+    $context['message'] = $message;
843 843
 
844
-  // Update the progress for the batch engine
845
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
844
+    // Update the progress for the batch engine
845
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
846 846
     $context['finished'] = 1;
847
-  }
848
-  else {
847
+    }
848
+    else {
849 849
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
850
-  }
850
+    }
851 851
 }
852 852
 
853 853
 /**
854 854
  * Batch 'finished' callback
855 855
  */
856 856
 function boincimport_teams_finished($success, $results, $operations) {
857
-  if ($success) {
857
+    if ($success) {
858 858
     // Let's count our successes
859 859
     $total_imported = count($results['success']);
860 860
     $message = t(
861
-      'Successfully imported @count teams',
862
-      array('@count' => $total_imported)
861
+        'Successfully imported @count teams',
862
+        array('@count' => $total_imported)
863 863
     );
864 864
     watchdog('boincimport',
865
-      'Successfully imported @count teams.',
866
-      array('@count' => $total_imported), WATCHDOG_INFO
865
+        'Successfully imported @count teams.',
866
+        array('@count' => $total_imported), WATCHDOG_INFO
867 867
     ); 
868 868
     // Set the team import successful flag in the variable table
869 869
     variable_set('boincimport_import_team_successful', '1');
870 870
     $_SESSION['boincimport_stage_selected'] = 'friends';
871
-  }
872
-  else {
871
+    }
872
+    else {
873 873
     // An error occurred.
874 874
     // $operations contains the operations that remained unprocessed.
875 875
     $error_operation = reset($operations);
876 876
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
877
-  }
878
-  drupal_set_message($message);
877
+    }
878
+    drupal_set_message($message);
879 879
   
880
-  // Release the lock on the import process
881
-  variable_del('boincimport_process_locked');
882
-  drupal_goto('admin/boinc/import/process');
880
+    // Release the lock on the import process
881
+    variable_del('boincimport_process_locked');
882
+    drupal_goto('admin/boinc/import/process');
883 883
 }
884 884
 
885 885
 
@@ -892,25 +892,25 @@  discard block
 block discarded – undo
892 892
  */
893 893
 function boincimport_friends() {
894 894
   
895
-  // Check whether friendships have been successfully imported already
896
-  if (variable_get('boincimport_import_friend_successful', 0)) {
895
+    // Check whether friendships have been successfully imported already
896
+    if (variable_get('boincimport_import_friend_successful', 0)) {
897 897
     drupal_set_message(t('Note: Friends import has already run successfully'));
898 898
     watchdog(
899
-      'boincimport', 'Note: Friends import has already run successfully',
900
-      array(), WATCHDOG_INFO
899
+        'boincimport', 'Note: Friends import has already run successfully',
900
+        array(), WATCHDOG_INFO
901 901
     ); 
902
-  }
902
+    }
903 903
 
904
-  if (!variable_get('boincimport_import_friend_started', 0)) {
904
+    if (!variable_get('boincimport_import_friend_started', 0)) {
905 905
     // Could prepare database tables, if new fields are necessary, etc.
906 906
     variable_set('boincimport_import_friend_started', 1);
907
-  }
907
+    }
908 908
   
909
-  $pre = variable_get('boincimport_table_prefix', '');
909
+    $pre = variable_get('boincimport_table_prefix', '');
910 910
 
911
-  // Get stuff to import
912
-  db_set_active('boinc_rw');
913
-  $friendships = db_query('
911
+    // Get stuff to import
912
+    db_set_active('boinc_rw');
913
+    $friendships = db_query('
914 914
     SELECT
915 915
       f1.user_src,
916 916
       f1.user_dest,
@@ -924,51 +924,51 @@  discard block
 block discarded – undo
924 924
       AND (f2.user_src IS NULL OR f1.create_time < f2.create_time)
925 925
     ORDER BY create_time',
926 926
     $pre, $pre
927
-  );
928
-  $friendship_count = mysqli_num_rows($friendships);
929
-  db_set_active('default');
927
+    );
928
+    $friendship_count = mysqli_num_rows($friendships);
929
+    db_set_active('default');
930 930
 
931
-  if (!$friendship_count) {
931
+    if (!$friendship_count) {
932 932
     drupal_set_message(
933
-      t('There were no friendships found: Aborting script'), 'error'
933
+        t('There were no friendships found: Aborting script'), 'error'
934 934
     );
935 935
     watchdog('boincimport',
936
-      'There were no friendships found: Aborting script', array(), WATCHDOG_INFO
936
+        'There were no friendships found: Aborting script', array(), WATCHDOG_INFO
937 937
     );
938 938
     // Release the lock on the import process
939 939
     variable_del('boincimport_process_locked');
940 940
     return t('There were no friendships found: Aborting script.');
941
-  }
941
+    }
942 942
 
943
-  watchdog('boincimport',
943
+    watchdog('boincimport',
944 944
     'Found %count friend relationships: Beginning Import',
945 945
     array('%count' => $friendship_count), WATCHDOG_INFO
946
-  );
946
+    );
947 947
   
948
-  $operations = array();
948
+    $operations = array();
949 949
   
950
-  // It doesn't matter if a friend relationship has already been imported, just
951
-  // do it again if so
950
+    // It doesn't matter if a friend relationship has already been imported, just
951
+    // do it again if so
952 952
   
953
-  // Create batches to process
954
-  while ($friendship = db_fetch_object($friendships)) {
953
+    // Create batches to process
954
+    while ($friendship = db_fetch_object($friendships)) {
955 955
     $operations[] = array(
956
-      'boincimport_friends_op', array(
956
+        'boincimport_friends_op', array(
957 957
         $friendship
958
-      )
958
+        )
959 959
     );
960
-  }
960
+    }
961 961
   
962
-  $batch = array(
962
+    $batch = array(
963 963
     'operations' => $operations,
964 964
     'finished' => 'boincimport_friends_finished',
965 965
     'title' => t('Importing friend relationships'),
966 966
     'init_message' => t('Beginning friend import...'),
967 967
     'progress_message' => t('Processed @current out of @total friendships.'),
968 968
     'error_message' => t('Friend import has encountered an error.'),
969
-  );
969
+    );
970 970
   
971
-  batch_set($batch);
971
+    batch_set($batch);
972 972
 }
973 973
 
974 974
 /**
@@ -977,83 +977,83 @@  discard block
 block discarded – undo
977 977
  */
978 978
 function boincimport_friends_op($friendship, &$context) {
979 979
   
980
-  $input_format = variable_get('boincimport_input_format', 0);
981
-  $success = FALSE;
982
-  $message = '';
980
+    $input_format = variable_get('boincimport_input_format', 0);
981
+    $success = FALSE;
982
+    $message = '';
983 983
   
984
-  // Convert BOINC friends to Drupal friends
985
-  $uid = boincuser_lookup_uid($friendship->user_src);
986
-  $friend_uid = boincuser_lookup_uid($friendship->user_dest);
987
-  if ($uid AND $friend_uid) {
984
+    // Convert BOINC friends to Drupal friends
985
+    $uid = boincuser_lookup_uid($friendship->user_src);
986
+    $friend_uid = boincuser_lookup_uid($friendship->user_dest);
987
+    if ($uid AND $friend_uid) {
988 988
     $success = db_query("
989 989
       INSERT IGNORE INTO {flag_friend}
990 990
       SET uid = '%d', friend_uid = '%d', created = '%d'",
991
-      $uid, $friend_uid, $friendship->create_time
991
+        $uid, $friend_uid, $friendship->create_time
992 992
     );
993
-  }
994
-  else {
993
+    }
994
+    else {
995 995
     $boinc_id = ($uid) ? $friendship->user_dest : $friendship->user_src;
996 996
     $message = "No Drupal account exists for BOINC user {$boinc_id}!";
997
-  }
997
+    }
998 998
   
999
-  if ($success) {
999
+    if ($success) {
1000 1000
     // Store some result for post-processing in the finished callback.
1001 1001
     $context['results']['success'][] = $uid;
1002 1002
     $message = "Successfully made users {$uid} and {$friend_uid} friends";
1003
-  }
1004
-  else {
1003
+    }
1004
+    else {
1005 1005
     $context['results']['failure'][] = $uid;
1006 1006
     if (!$message) {
1007
-      $message = "Failed to make users {$uid} and {$friend_uid} friends!";
1007
+        $message = "Failed to make users {$uid} and {$friend_uid} friends!";
1008 1008
     }
1009 1009
     watchdog('boincimport', $message, array(), WATCHDOG_WARNING);
1010
-  }
1010
+    }
1011 1011
   
1012
-  // Update our progress information.
1013
-  $context['sandbox']['progress']++;
1014
-  $context['sandbox']['current_user'] = $uid;
1015
-  $context['message'] = $message;
1012
+    // Update our progress information.
1013
+    $context['sandbox']['progress']++;
1014
+    $context['sandbox']['current_user'] = $uid;
1015
+    $context['message'] = $message;
1016 1016
 
1017
-  // Update the progress for the batch engine
1018
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1017
+    // Update the progress for the batch engine
1018
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1019 1019
     $context['finished'] = 1;
1020
-  }
1021
-  else {
1020
+    }
1021
+    else {
1022 1022
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
1023
-  }
1023
+    }
1024 1024
 }
1025 1025
 
1026 1026
 /**
1027 1027
  * Batch 'finished' callback
1028 1028
  */
1029 1029
 function boincimport_friends_finished($success, $results, $operations) {
1030
-  if ($success) {
1030
+    if ($success) {
1031 1031
     // Let's count our successes
1032 1032
     $total_imported = count($results['success']);
1033 1033
     $failures = count($results['failure']);
1034 1034
     $message = t(
1035
-      'Successfully imported @count friendships (@failed failures)',
1036
-      array(
1035
+        'Successfully imported @count friendships (@failed failures)',
1036
+        array(
1037 1037
         '@count' => $total_imported,
1038 1038
         '@failed' => $failures,
1039
-      )
1039
+        )
1040 1040
     );
1041 1041
     watchdog('boincimport', $message, array(), WATCHDOG_INFO); 
1042 1042
     // Set the friend import successful flag in the variable table
1043 1043
     variable_set('boincimport_import_friend_successful', '1');
1044 1044
     $_SESSION['boincimport_stage_selected'] = 'preferences';
1045
-  }
1046
-  else {
1045
+    }
1046
+    else {
1047 1047
     // An error occurred.
1048 1048
     // $operations contains the operations that remained unprocessed.
1049 1049
     $error_operation = reset($operations);
1050 1050
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
1051
-  }
1052
-  drupal_set_message($message);
1051
+    }
1052
+    drupal_set_message($message);
1053 1053
   
1054
-  // Release the lock on the import process
1055
-  variable_del('boincimport_process_locked');
1056
-  drupal_goto('admin/boinc/import/process');
1054
+    // Release the lock on the import process
1055
+    variable_del('boincimport_process_locked');
1056
+    drupal_goto('admin/boinc/import/process');
1057 1057
 }
1058 1058
 
1059 1059
 
@@ -1066,78 +1066,78 @@  discard block
 block discarded – undo
1066 1066
  */
1067 1067
 function boincimport_preferences() {
1068 1068
   
1069
-  // Check whether preferences have been successfully imported already
1070
-  if (variable_get('boincimport_import_preferences_successful', 0)) {
1069
+    // Check whether preferences have been successfully imported already
1070
+    if (variable_get('boincimport_import_preferences_successful', 0)) {
1071 1071
     drupal_set_message(t('Note: preferences import has already run successfully'));
1072 1072
     watchdog(
1073
-      'boincimport', 'Note: preferences import has already run successfully',
1074
-      array(), WATCHDOG_INFO
1073
+        'boincimport', 'Note: preferences import has already run successfully',
1074
+        array(), WATCHDOG_INFO
1075 1075
     ); 
1076
-  }
1076
+    }
1077 1077
 
1078
-  if (!variable_get('boincimport_import_preferences_started', 0)) {
1078
+    if (!variable_get('boincimport_import_preferences_started', 0)) {
1079 1079
     // Could prepare database tables, if new fields are necessary, etc.
1080 1080
     variable_set('boincimport_import_preferences_started', 1);
1081
-  }
1081
+    }
1082 1082
   
1083
-  $pre = variable_get('boincimport_table_prefix', '');
1083
+    $pre = variable_get('boincimport_table_prefix', '');
1084 1084
   
1085
-  // Currently the only preferences being imported are BOINC "filtered users"
1086
-  // This concept of users blocking other users when they don't get along maps
1087
-  // to the Drupal ignore users module
1085
+    // Currently the only preferences being imported are BOINC "filtered users"
1086
+    // This concept of users blocking other users when they don't get along maps
1087
+    // to the Drupal ignore users module
1088 1088
   
1089
-  // Find users who are involved in quarrels
1090
-  db_set_active('boinc_rw');
1091
-  $quarrelers = db_query("
1089
+    // Find users who are involved in quarrels
1090
+    db_set_active('boinc_rw');
1091
+    $quarrelers = db_query("
1092 1092
     SELECT userid, ignorelist
1093 1093
     FROM %sforum_preferences
1094 1094
     WHERE ignorelist <> ''",
1095 1095
     $pre
1096
-  );
1097
-  $quarreler_count = mysqli_num_rows($quarrelers);
1098
-  db_set_active('default');
1096
+    );
1097
+    $quarreler_count = mysqli_num_rows($quarrelers);
1098
+    db_set_active('default');
1099 1099
 
1100
-  if (!$quarreler_count) {
1100
+    if (!$quarreler_count) {
1101 1101
     drupal_set_message(
1102
-      t('There were no quarrels found: Moving on...')
1102
+        t('There were no quarrels found: Moving on...')
1103 1103
     );
1104 1104
     watchdog('boincimport',
1105
-      'There were no quarrels found: Moving on...', array(), WATCHDOG_INFO
1105
+        'There were no quarrels found: Moving on...', array(), WATCHDOG_INFO
1106 1106
     );
1107 1107
     // Release the lock on the import process
1108 1108
     variable_del('boincimport_process_locked');
1109 1109
     return t('There were no quarrels found: Moving on...');
1110
-  }
1110
+    }
1111 1111
 
1112
-  watchdog('boincimport',
1112
+    watchdog('boincimport',
1113 1113
     'Found %count quarreling users: Beginning Import',
1114 1114
     array('%count' => $quarreler_count), WATCHDOG_INFO
1115
-  );
1115
+    );
1116 1116
   
1117
-  $operations = array();
1117
+    $operations = array();
1118 1118
   
1119
-  // It doesn't matter if a filtered user preference has already been imported,
1120
-  // just do it again if so
1119
+    // It doesn't matter if a filtered user preference has already been imported,
1120
+    // just do it again if so
1121 1121
   
1122
-  // Create batches to process
1123
-  while ($quarreler = db_fetch_object($quarrelers)) {
1122
+    // Create batches to process
1123
+    while ($quarreler = db_fetch_object($quarrelers)) {
1124 1124
     $operations[] = array(
1125
-      'boincimport_quarrels_op', array(
1125
+        'boincimport_quarrels_op', array(
1126 1126
         $quarreler
1127
-      )
1127
+        )
1128 1128
     );
1129
-  }
1129
+    }
1130 1130
   
1131
-  $batch = array(
1131
+    $batch = array(
1132 1132
     'operations' => $operations,
1133 1133
     'finished' => 'boincimport_preferences_finished',
1134 1134
     'title' => t('Importing preferences'),
1135 1135
     'init_message' => t('Beginning preference import...'),
1136 1136
     'progress_message' => t('Processed @current out of @total preferences.'),
1137 1137
     'error_message' => t('Preference import has encountered an error.'),
1138
-  );
1138
+    );
1139 1139
   
1140
-  batch_set($batch);
1140
+    batch_set($batch);
1141 1141
 }
1142 1142
 
1143 1143
 /**
@@ -1146,99 +1146,99 @@  discard block
 block discarded – undo
1146 1146
  */
1147 1147
 function boincimport_quarrels_op($boinc_user, &$context) {
1148 1148
   
1149
-  $success = FALSE;
1150
-  $uid = boincuser_lookup_uid($boinc_user->userid);
1151
-  $ignored_users = explode('|', trim($boinc_user->ignorelist, '|'));
1152
-  foreach ($ignored_users as $ignored_user) {
1149
+    $success = FALSE;
1150
+    $uid = boincuser_lookup_uid($boinc_user->userid);
1151
+    $ignored_users = explode('|', trim($boinc_user->ignorelist, '|'));
1152
+    foreach ($ignored_users as $ignored_user) {
1153 1153
     $ignored_user_uid = boincuser_lookup_uid($ignored_user);
1154 1154
     if (!$ignored_user_uid) {
1155
-      $context['results']['warning'][] = "{$uid}:{$ignored_user_uid}";
1156
-      watchdog('boincimport',
1155
+        $context['results']['warning'][] = "{$uid}:{$ignored_user_uid}";
1156
+        watchdog('boincimport',
1157 1157
         'Error adding to ignore list of user @uid: No Drupal ID found for BOINC user @boinc_id',
1158 1158
         array('@boinc_id' => $ignored_user, '@uid' => $uid),
1159 1159
         WATCHDOG_WARNING
1160
-      );
1161
-      continue;
1160
+        );
1161
+        continue;
1162 1162
     }
1163 1163
     $user_ignored = db_query("
1164 1164
       INSERT IGNORE INTO {ignore_user}
1165 1165
       SET uid = '%d', iuid = '%d'",
1166
-      $uid, $ignored_user_uid
1166
+        $uid, $ignored_user_uid
1167 1167
     );
1168 1168
     if ($user_ignored) {
1169
-      $success = TRUE;
1169
+        $success = TRUE;
1170 1170
     }
1171 1171
     else {
1172
-      $context['results']['warning'][] = "{$uid}:{$ignored_user_uid}";
1173
-      watchdog('boincimport',
1172
+        $context['results']['warning'][] = "{$uid}:{$ignored_user_uid}";
1173
+        watchdog('boincimport',
1174 1174
         'Could not add user @ignored_uid to the ignore list of user @uid',
1175 1175
         array('@ignored_uid' => $ignored_user_uid, '@uid' => $uid),
1176 1176
         WATCHDOG_WARNING
1177
-      );
1177
+        );
1178
+    }
1178 1179
     }
1179
-  }
1180 1180
   
1181
-  $message = '';
1182
-  if ($success) {
1181
+    $message = '';
1182
+    if ($success) {
1183 1183
     // Store some result for post-processing in the finished callback.
1184 1184
     $context['results']['success'][] = $uid;
1185 1185
     $message = "Successfully imported ignored users for user {$uid}";
1186
-  }
1187
-  else {
1186
+    }
1187
+    else {
1188 1188
     $context['results']['failure'][] = $uid;
1189 1189
     $message = "Failed to import any user filter preferences for user {$uid}!";
1190 1190
     watchdog('boincimport',
1191
-      'Failed to import any user filter preferences for user @id!',
1192
-      array('@id' => $uid), WATCHDOG_WARNING
1191
+        'Failed to import any user filter preferences for user @id!',
1192
+        array('@id' => $uid), WATCHDOG_WARNING
1193 1193
     ); 
1194
-  }
1194
+    }
1195 1195
   
1196
-  // Update our progress information.
1197
-  $context['sandbox']['progress']++;
1198
-  $context['sandbox']['current_user'] = $uid;
1199
-  $context['message'] = $message;
1196
+    // Update our progress information.
1197
+    $context['sandbox']['progress']++;
1198
+    $context['sandbox']['current_user'] = $uid;
1199
+    $context['message'] = $message;
1200 1200
 
1201
-  // Update the progress for the batch engine
1202
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1201
+    // Update the progress for the batch engine
1202
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1203 1203
     $context['finished'] = 1;
1204
-  }
1205
-  else {
1204
+    }
1205
+    else {
1206 1206
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
1207
-  }
1207
+    }
1208 1208
 }
1209 1209
 
1210 1210
 /**
1211 1211
  * Batch 'finished' callback
1212 1212
  */
1213 1213
 function boincimport_preferences_finished($success, $results, $operations) {
1214
-  if ($success) {
1214
+    if ($success) {
1215 1215
     // Let's count our successes
1216 1216
     $total_imported = count($results['success']);
1217 1217
     $total_warnings = count($results['warning']);
1218 1218
     $message = t(
1219
-      'Successfully imported preferences for @count users (with @warn warnings)',
1220
-      array('@count' => $total_imported, '@warn' => $total_warnings)
1219
+        'Successfully imported preferences for @count users (with @warn warnings)',
1220
+        array('@count' => $total_imported, '@warn' => $total_warnings)
1221 1221
     );
1222 1222
     watchdog('boincimport',
1223
-      'Successfully imported preferences for @count users (with @warn warnings)',
1224
-      array('@count' => $total_imported, '@warn' => $total_warnings),
1225
-      WATCHDOG_INFO
1223
+        'Successfully imported preferences for @count users (with @warn warnings)',
1224
+        array('@count' => $total_imported, '@warn' => $total_warnings),
1225
+        WATCHDOG_INFO
1226 1226
     );
1227 1227
     // Set the preference import successful flag in the variable table
1228 1228
     variable_set('boincimport_import_preferences_successful', '1');
1229 1229
     $_SESSION['boincimport_stage_selected'] = 'private messages';
1230
-  }
1231
-  else {
1230
+    }
1231
+    else {
1232 1232
     // An error occurred.
1233 1233
     // $operations contains the operations that remained unprocessed.
1234 1234
     $error_operation = reset($operations);
1235 1235
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
1236
-  }
1237
-  drupal_set_message($message);
1236
+    }
1237
+    drupal_set_message($message);
1238 1238
   
1239
-  // Release the lock on the import process
1240
-  variable_del('boincimport_process_locked');
1241
-  drupal_goto('admin/boinc/import/process');
1239
+    // Release the lock on the import process
1240
+    variable_del('boincimport_process_locked');
1241
+    drupal_goto('admin/boinc/import/process');
1242 1242
 }
1243 1243
 
1244 1244
 
@@ -1251,74 +1251,74 @@  discard block
 block discarded – undo
1251 1251
  */
1252 1252
 function boincimport_private_msgs() {
1253 1253
   
1254
-  // Check whether private messages have been successfully imported already
1255
-  if (variable_get('boincimport_import_private_msg_successful', 0)) {
1254
+    // Check whether private messages have been successfully imported already
1255
+    if (variable_get('boincimport_import_private_msg_successful', 0)) {
1256 1256
     drupal_set_message(t('Private message import has already run successfully -- repeating this process could result in duplicate messages!'), 'warning');
1257 1257
     watchdog(
1258
-      'boincimport', 'Private message import has already run successfully',
1259
-      array(), WATCHDOG_WARNING
1258
+        'boincimport', 'Private message import has already run successfully',
1259
+        array(), WATCHDOG_WARNING
1260 1260
     );
1261 1261
     return;
1262
-  }
1262
+    }
1263 1263
 
1264
-  if (!variable_get('boincimport_import_private_msg_started', 0)) {
1264
+    if (!variable_get('boincimport_import_private_msg_started', 0)) {
1265 1265
     // Could prepare database tables, if new fields are necessary, etc.
1266 1266
     variable_set('boincimport_import_private_msg_started', 1);
1267
-  }
1267
+    }
1268 1268
   
1269
-  $pre = variable_get('boincimport_table_prefix', '');
1269
+    $pre = variable_get('boincimport_table_prefix', '');
1270 1270
 
1271
-  // Get stuff to import
1272
-  db_set_active('boinc_rw');
1273
-  $boinc_private_msgs = db_query('
1271
+    // Get stuff to import
1272
+    db_set_active('boinc_rw');
1273
+    $boinc_private_msgs = db_query('
1274 1274
     SELECT id, subject, content, userid, senderid, date, opened
1275 1275
     FROM %sprivate_messages',
1276 1276
     $pre
1277
-  );
1278
-  $private_msg_count = mysqli_num_rows($boinc_private_msgs);
1279
-  db_set_active('default');
1277
+    );
1278
+    $private_msg_count = mysqli_num_rows($boinc_private_msgs);
1279
+    db_set_active('default');
1280 1280
 
1281
-  if (!$private_msg_count) {
1281
+    if (!$private_msg_count) {
1282 1282
     drupal_set_message(
1283
-      t('There were no private messages found: Moving on...')
1283
+        t('There were no private messages found: Moving on...')
1284 1284
     );
1285 1285
     watchdog('boincimport',
1286
-      'There were no private messages found: Moving on...', array(), WATCHDOG_INFO
1286
+        'There were no private messages found: Moving on...', array(), WATCHDOG_INFO
1287 1287
     );
1288 1288
     // Release the lock on the import process
1289 1289
     variable_del('boincimport_process_locked');
1290 1290
     return t('There were no private messages found: Moving on...');
1291
-  }
1291
+    }
1292 1292
 
1293
-  watchdog('boincimport',
1293
+    watchdog('boincimport',
1294 1294
     'Found %count private messages: Beginning Import',
1295 1295
     array('%count' => $private_msg_count), WATCHDOG_INFO
1296
-  );
1296
+    );
1297 1297
   
1298
-  $operations = array();
1298
+    $operations = array();
1299 1299
   
1300
-  // We don't know if a given private message has been imported already or not;
1301
-  // if this is needed, a relation table must be added to the Drupal DB
1300
+    // We don't know if a given private message has been imported already or not;
1301
+    // if this is needed, a relation table must be added to the Drupal DB
1302 1302
   
1303
-  // Create batches to process
1304
-  while ($boinc_private_msg = db_fetch_object($boinc_private_msgs)) {
1303
+    // Create batches to process
1304
+    while ($boinc_private_msg = db_fetch_object($boinc_private_msgs)) {
1305 1305
     $operations[] = array(
1306
-      'boincimport_private_msgs_op', array(
1306
+        'boincimport_private_msgs_op', array(
1307 1307
         $boinc_private_msg
1308
-      )
1308
+        )
1309 1309
     );
1310
-  }
1310
+    }
1311 1311
   
1312
-  $batch = array(
1312
+    $batch = array(
1313 1313
     'operations' => $operations,
1314 1314
     'finished' => 'boincimport_private_msgs_finished',
1315 1315
     'title' => t('Importing private messages'),
1316 1316
     'init_message' => t('Beginning private message import...'),
1317 1317
     'progress_message' => t('Processed @current out of @total private messages.'),
1318 1318
     'error_message' => t('Private message import has encountered an error.'),
1319
-  );
1319
+    );
1320 1320
   
1321
-  batch_set($batch);
1321
+    batch_set($batch);
1322 1322
 }
1323 1323
 
1324 1324
 /**
@@ -1327,95 +1327,95 @@  discard block
 block discarded – undo
1327 1327
  */
1328 1328
 function boincimport_private_msgs_op($pm, &$context) {
1329 1329
   
1330
-  $input_format = variable_get('boincimport_input_format', 0);
1330
+    $input_format = variable_get('boincimport_input_format', 0);
1331 1331
   
1332
-  $uid = boincuser_lookup_uid($pm->userid);
1333
-  $sender_uid = boincuser_lookup_uid($pm->senderid);
1332
+    $uid = boincuser_lookup_uid($pm->userid);
1333
+    $sender_uid = boincuser_lookup_uid($pm->senderid);
1334 1334
   
1335
-  $pm->content = _boincimport_strip_bbcode($pm->content);
1336
-  $pm->content = _boincimport_text_sanitize($pm->content);
1335
+    $pm->content = _boincimport_strip_bbcode($pm->content);
1336
+    $pm->content = _boincimport_text_sanitize($pm->content);
1337 1337
   
1338
-  // First save the message
1339
-  $message_added = db_query("
1338
+    // First save the message
1339
+    $message_added = db_query("
1340 1340
     INSERT INTO {pm_message} (subject, author, body, format, timestamp)
1341 1341
     VALUES ('%s', %d, '%s', %d, %d)",
1342 1342
     $pm->subject, $sender_uid, $pm->content, $input_format, $pm->date
1343
-  );
1344
-  $mid = db_last_insert_id('pm_message', 'mid');
1343
+    );
1344
+    $mid = db_last_insert_id('pm_message', 'mid');
1345 1345
   
1346
-  // Then attach recipients and set status (note that threads are not a BOINC
1347
-  // feature, so just consider every message to be a new thread)
1348
-  $recipient_added = db_query("
1346
+    // Then attach recipients and set status (note that threads are not a BOINC
1347
+    // feature, so just consider every message to be a new thread)
1348
+    $recipient_added = db_query("
1349 1349
     INSERT INTO {pm_index} (mid, thread_id, uid, is_new, deleted)
1350 1350
     VALUES (%d, %d, %d, %d, 0)",
1351 1351
     $mid, $mid, $uid, !$pm->opened
1352
-  );
1353
-  // In Drupal, the sender should be attached as well
1354
-  $sender_added = db_query("
1352
+    );
1353
+    // In Drupal, the sender should be attached as well
1354
+    $sender_added = db_query("
1355 1355
     INSERT INTO {pm_index} (mid, thread_id, uid, is_new, deleted)
1356 1356
     VALUES (%d, %d, %d, %d, 0)",
1357 1357
     $mid, $mid, $sender_uid, 0
1358
-  );
1358
+    );
1359 1359
   
1360
-  $message = '';
1361
-  if ($message_added AND $recipient_added AND $sender_added) {
1360
+    $message = '';
1361
+    if ($message_added AND $recipient_added AND $sender_added) {
1362 1362
     // Store some result for post-processing in the finished callback.
1363 1363
     $context['results']['success'][] = $pm->id;
1364 1364
     $message = "Successfully imported private message {$pm->id}";
1365
-  }
1366
-  else {
1365
+    }
1366
+    else {
1367 1367
     $context['results']['failure'][] = $pm->id;
1368 1368
     $message = "Failed to import private message {$pm->id}!";
1369 1369
     watchdog('boincimport',
1370
-      'Failed to import private message @id!',
1371
-      array('@id' => $pm->id), WATCHDOG_WARNING
1370
+        'Failed to import private message @id!',
1371
+        array('@id' => $pm->id), WATCHDOG_WARNING
1372 1372
     ); 
1373
-  }
1373
+    }
1374 1374
   
1375
-  // Update our progress information.
1376
-  $context['sandbox']['progress']++;
1377
-  $context['sandbox']['current_pm'] = $pm->id;
1378
-  $context['message'] = $message;
1375
+    // Update our progress information.
1376
+    $context['sandbox']['progress']++;
1377
+    $context['sandbox']['current_pm'] = $pm->id;
1378
+    $context['message'] = $message;
1379 1379
 
1380
-  // Update the progress for the batch engine
1381
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1380
+    // Update the progress for the batch engine
1381
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1382 1382
     $context['finished'] = 1;
1383
-  }
1384
-  else {
1383
+    }
1384
+    else {
1385 1385
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
1386
-  }
1386
+    }
1387 1387
 }
1388 1388
 
1389 1389
 /**
1390 1390
  * Batch 'finished' callback
1391 1391
  */
1392 1392
 function boincimport_private_msgs_finished($success, $results, $operations) {
1393
-  if ($success) {
1393
+    if ($success) {
1394 1394
     // Let's count our successes
1395 1395
     $total_imported = count($results['success']);
1396 1396
     $message = t(
1397
-      'Successfully imported @count private messages',
1398
-      array('@count' => $total_imported)
1397
+        'Successfully imported @count private messages',
1398
+        array('@count' => $total_imported)
1399 1399
     );
1400 1400
     watchdog('boincimport',
1401
-      'Successfully imported @count private messages.',
1402
-      array('@count' => $total_imported), WATCHDOG_INFO
1401
+        'Successfully imported @count private messages.',
1402
+        array('@count' => $total_imported), WATCHDOG_INFO
1403 1403
     ); 
1404 1404
     // Set the private message import successful flag in the variable table
1405 1405
     variable_set('boincimport_import_private_msg_successful', '1');
1406 1406
     $_SESSION['boincimport_stage_selected'] = 'categories';
1407
-  }
1408
-  else {
1407
+    }
1408
+    else {
1409 1409
     // An error occurred.
1410 1410
     // $operations contains the operations that remained unprocessed.
1411 1411
     $error_operation = reset($operations);
1412 1412
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
1413
-  }
1414
-  drupal_set_message($message);
1413
+    }
1414
+    drupal_set_message($message);
1415 1415
   
1416
-  // Release the lock on the import process
1417
-  variable_del('boincimport_process_locked');
1418
-  drupal_goto('admin/boinc/import/process');
1416
+    // Release the lock on the import process
1417
+    variable_del('boincimport_process_locked');
1418
+    drupal_goto('admin/boinc/import/process');
1419 1419
 }
1420 1420
 
1421 1421
 
@@ -1428,196 +1428,196 @@  discard block
 block discarded – undo
1428 1428
  */
1429 1429
 function boincimport_forum_categories() {
1430 1430
   
1431
-  // Check whether forums have been successfully imported already
1432
-  if (variable_get('boincimport_import_forum_category_successful', 0)) {
1431
+    // Check whether forums have been successfully imported already
1432
+    if (variable_get('boincimport_import_forum_category_successful', 0)) {
1433 1433
     drupal_set_message(t('Note: forum container import has already run successfully'));
1434 1434
     watchdog(
1435
-      'boincimport', 'Note: forum container import has already run successfully',
1436
-      array(), WATCHDOG_INFO
1435
+        'boincimport', 'Note: forum container import has already run successfully',
1436
+        array(), WATCHDOG_INFO
1437 1437
     ); 
1438
-  }
1438
+    }
1439 1439
 
1440
-  if (!variable_get('boincimport_import_forum_category_started', 0)) {
1440
+    if (!variable_get('boincimport_import_forum_category_started', 0)) {
1441 1441
     // Could prepare database tables, if new fields are necessary, etc.
1442 1442
     variable_set('boincimport_import_forum_category_started', 1);
1443
-  }
1443
+    }
1444 1444
   
1445
-  $pre = variable_get('boincimport_table_prefix', '');
1445
+    $pre = variable_get('boincimport_table_prefix', '');
1446 1446
 
1447
-  // Retrieve the vocabulary vid named "Forums"
1448
-  //$forum_vid = variable_get('forum_nav_vocabulary', 0);
1449
-  $forum_vid = db_result(db_query('
1447
+    // Retrieve the vocabulary vid named "Forums"
1448
+    //$forum_vid = variable_get('forum_nav_vocabulary', 0);
1449
+    $forum_vid = db_result(db_query('
1450 1450
     SELECT vid FROM {vocabulary}
1451 1451
     WHERE name="%s"',
1452 1452
     'Forums'
1453
-  ));
1454
-  if (!$forum_vid) {
1453
+    ));
1454
+    if (!$forum_vid) {
1455 1455
     $forum_vocab = array(
1456
-      'name' => t('Forums'),
1457
-      'description' => t('The different forum categories / containers'),
1456
+        'name' => t('Forums'),
1457
+        'description' => t('The different forum categories / containers'),
1458 1458
     );
1459 1459
     taxonomy_save_vocabulary($forum_vocab);
1460 1460
     $forum_vid = db_result(db_query('
1461 1461
       SELECT vid FROM {vocabulary}
1462 1462
       WHERE name="%s"',
1463
-      'Forums'
1463
+        'Forums'
1464 1464
     ));
1465
-  }
1465
+    }
1466 1466
   
1467
-  // Get both categories and forums from BOINC
1468
-  db_set_active('boinc_rw');
1469
-  $boinc_forum_categories = db_query('
1467
+    // Get both categories and forums from BOINC
1468
+    db_set_active('boinc_rw');
1469
+    $boinc_forum_categories = db_query('
1470 1470
     SELECT id, name
1471 1471
     FROM %scategory
1472 1472
     ORDER BY orderID',
1473 1473
     $pre
1474
-  );
1475
-  $forum_category_count = mysqli_num_rows($boinc_forum_categories);
1476
-  $boinc_forums = db_query('
1474
+    );
1475
+    $forum_category_count = mysqli_num_rows($boinc_forum_categories);
1476
+    $boinc_forums = db_query('
1477 1477
     SELECT id, category, title, description, orderID
1478 1478
     FROM %sforum
1479 1479
     WHERE parent_type = 0
1480 1480
     ORDER BY category',
1481 1481
     $pre
1482
-  );
1483
-  $forum_count = mysqli_num_rows($boinc_forums);
1484
-  db_set_active('default');
1482
+    );
1483
+    $forum_count = mysqli_num_rows($boinc_forums);
1484
+    db_set_active('default');
1485 1485
 
1486
-  if (!$forum_category_count) {
1486
+    if (!$forum_category_count) {
1487 1487
     drupal_set_message(
1488
-      t('There were no forum containers found: Aborting script'), 'warning'
1488
+        t('There were no forum containers found: Aborting script'), 'warning'
1489 1489
     );
1490 1490
     watchdog('boincimport',
1491
-      'There were no forum containers found: Aborting script', array(), WATCHDOG_WARNING
1491
+        'There were no forum containers found: Aborting script', array(), WATCHDOG_WARNING
1492 1492
     );
1493 1493
     // Release the lock on the import process
1494 1494
     variable_del('boincimport_process_locked');
1495 1495
     return t('There were no forum containers found: Aborting script.');
1496
-  }
1497
-  if (!$forum_count) {
1496
+    }
1497
+    if (!$forum_count) {
1498 1498
     drupal_set_message(
1499
-      t('There were no forums found: Aborting script'), 'warning'
1499
+        t('There were no forums found: Aborting script'), 'warning'
1500 1500
     );
1501 1501
     watchdog('boincimport',
1502
-      'There were no forums found: Aborting script', array(), WATCHDOG_WARNING
1502
+        'There were no forums found: Aborting script', array(), WATCHDOG_WARNING
1503 1503
     );
1504 1504
     // Release the lock on the import process
1505 1505
     variable_del('boincimport_process_locked');
1506 1506
     return t('There were no forums found: Aborting script.');
1507
-  }
1507
+    }
1508 1508
 
1509
-  watchdog('boincimport',
1509
+    watchdog('boincimport',
1510 1510
     'Found %forum_count forums in %category_count containers: Beginning Import',
1511 1511
     array(
1512
-      '%forum_count' => $forum_count,
1513
-      '%category_count' => $forum_category_count,
1512
+        '%forum_count' => $forum_count,
1513
+        '%category_count' => $forum_category_count,
1514 1514
     ), WATCHDOG_INFO
1515
-  );
1516
-  
1517
-  $operations = array();
1518
-  $existing_categories = array();
1519
-  $existing_forums = array();
1520
-  $duplicate_categories = array();
1521
-  $duplicate_forums = array();
1522
-  $category_map = array();
1523
-  
1524
-  // Get the list of categories already in Drupal so as not to import any twice
1525
-  $category_tree = taxonomy_get_tree($forum_vid, 0, -1, 1);
1526
-  foreach ($category_tree as $term) {
1515
+    );
1516
+  
1517
+    $operations = array();
1518
+    $existing_categories = array();
1519
+    $existing_forums = array();
1520
+    $duplicate_categories = array();
1521
+    $duplicate_forums = array();
1522
+    $category_map = array();
1523
+  
1524
+    // Get the list of categories already in Drupal so as not to import any twice
1525
+    $category_tree = taxonomy_get_tree($forum_vid, 0, -1, 1);
1526
+    foreach ($category_tree as $term) {
1527 1527
     $existing_categories[] = $term->name;
1528
-  }
1528
+    }
1529 1529
   
1530
-  // Get the list of forums already in Drupal
1531
-  $result = db_query('
1530
+    // Get the list of forums already in Drupal
1531
+    $result = db_query('
1532 1532
     SELECT forum_id, tid FROM {boincimport_temp_forum}'
1533
-  );
1534
-  while ($row = db_fetch_object($result)) {
1533
+    );
1534
+    while ($row = db_fetch_object($result)) {
1535 1535
     $existing_forums[$row->forum_id] = $row->tid;
1536
-  }
1536
+    }
1537 1537
   
1538
-  // Create batches to process
1538
+    // Create batches to process
1539 1539
   
1540
-  // Set up the "hidden" category, if necessary
1541
-  // This is to support automatic hiding of empty categories
1542
-  $hidden_forum_tid = db_result(db_query('
1540
+    // Set up the "hidden" category, if necessary
1541
+    // This is to support automatic hiding of empty categories
1542
+    $hidden_forum_tid = db_result(db_query('
1543 1543
     SELECT tid FROM {term_data}
1544 1544
     WHERE vid = %d
1545 1545
     AND name = "%s"',
1546 1546
     $forum_vid, 'Hidden'
1547
-  ));
1548
-  if (!$hidden_forum_tid) {
1547
+    ));
1548
+    if (!$hidden_forum_tid) {
1549 1549
     $operations[] = array(
1550
-      'boincimport_forum_categories_op', array(
1550
+        'boincimport_forum_categories_op', array(
1551 1551
         NULL, $forum_vid, $pre, TRUE
1552
-      )
1552
+        )
1553 1553
     );
1554
-  }
1554
+    }
1555 1555
   
1556
-  // Import categories
1557
-  while ($boinc_forum_category = db_fetch_object($boinc_forum_categories)) {
1556
+    // Import categories
1557
+    while ($boinc_forum_category = db_fetch_object($boinc_forum_categories)) {
1558 1558
     if (in_array($boinc_forum_category->name, $existing_categories)) {
1559
-      // This category has already been imported
1560
-      $duplicate_categories[] = $boinc_forum_category->name;
1559
+        // This category has already been imported
1560
+        $duplicate_categories[] = $boinc_forum_category->name;
1561 1561
     }
1562 1562
     else {
1563
-      $operations[] = array(
1563
+        $operations[] = array(
1564 1564
         'boincimport_forum_categories_op', array(
1565
-          $boinc_forum_category, $forum_vid, $pre, FALSE
1565
+            $boinc_forum_category, $forum_vid, $pre, FALSE
1566 1566
         )
1567
-      );
1567
+        );
1568
+    }
1568 1569
     }
1569
-  }
1570 1570
   
1571
-  // Import forums
1572
-  while ($boinc_forum = db_fetch_object($boinc_forums)) {
1573
-     if (isset($existing_forums[$boinc_forum->id])) {
1574
-      // This forum has already been imported
1575
-      $duplicates[] = $boinc_forum->id;
1571
+    // Import forums
1572
+    while ($boinc_forum = db_fetch_object($boinc_forums)) {
1573
+        if (isset($existing_forums[$boinc_forum->id])) {
1574
+        // This forum has already been imported
1575
+        $duplicates[] = $boinc_forum->id;
1576 1576
     }
1577 1577
     else {
1578
-      $operations[] = array(
1578
+        $operations[] = array(
1579 1579
         'boincimport_forums_op', array(
1580
-          $boinc_forum, $forum_vid, $pre
1580
+            $boinc_forum, $forum_vid, $pre
1581 1581
         )
1582
-      );
1582
+        );
1583
+    }
1583 1584
     }
1584
-  }
1585 1585
   
1586
-  // Report any duplicates that were skipped
1587
-  $skipped_message = array();
1588
-  $categories_skipped = count($duplicate_categories);
1589
-  $forums_skipped = count($duplicate_forums);
1590
-  if ($categories_skipped) {
1586
+    // Report any duplicates that were skipped
1587
+    $skipped_message = array();
1588
+    $categories_skipped = count($duplicate_categories);
1589
+    $forums_skipped = count($duplicate_forums);
1590
+    if ($categories_skipped) {
1591 1591
     $skipped_message[] = format_plural(
1592
-      $categories_skipped,
1593
-      '1 container',
1594
-      '@count containers'
1592
+        $categories_skipped,
1593
+        '1 container',
1594
+        '@count containers'
1595 1595
     );
1596
-  }
1597
-  if ($forums_skipped) {
1596
+    }
1597
+    if ($forums_skipped) {
1598 1598
     $skipped_message[] = format_plural(
1599
-      $forums_skipped,
1600
-      '1 forum',
1601
-      '@count forums'
1599
+        $forums_skipped,
1600
+        '1 forum',
1601
+        '@count forums'
1602 1602
     );
1603
-  }
1604
-  if ($skipped_message) {
1603
+    }
1604
+    if ($skipped_message) {
1605 1605
     drupal_set_message(t('Skipped @forums that were already imported',
1606
-      array('@forums' => implode(' and ', $skipped_message))
1606
+        array('@forums' => implode(' and ', $skipped_message))
1607 1607
     ));
1608
-  }
1608
+    }
1609 1609
   
1610
-  // Create and run the batch
1611
-  $batch = array(
1610
+    // Create and run the batch
1611
+    $batch = array(
1612 1612
     'operations' => $operations,
1613 1613
     'finished' => 'boincimport_forums_finished',
1614 1614
     'title' => t('Importing forums'),
1615 1615
     'init_message' => t('Beginning forum import...'),
1616 1616
     'progress_message' => t('Processed @current out of @total forums.'),
1617 1617
     'error_message' => t('Forum import has encountered an error.'),
1618
-  );
1618
+    );
1619 1619
   
1620
-  batch_set($batch);
1620
+    batch_set($batch);
1621 1621
 }
1622 1622
 
1623 1623
 /**
@@ -1626,92 +1626,92 @@  discard block
 block discarded – undo
1626 1626
  */
1627 1627
 function boincimport_forum_categories_op($category, $forum_vid, $pre, $create_hidden, &$context) {
1628 1628
   
1629
-  // Set term parameters for categories
1630
-  $forum_id = 0;
1631
-  $parent_id = 0;
1632
-  $description = '';
1633
-  $weight = 0;
1634
-  $hidden = FALSE;
1629
+    // Set term parameters for categories
1630
+    $forum_id = 0;
1631
+    $parent_id = 0;
1632
+    $description = '';
1633
+    $weight = 0;
1634
+    $hidden = FALSE;
1635 1635
   
1636
-  $category_map = variable_get('boincimport_forum_category_map', array());
1636
+    $category_map = variable_get('boincimport_forum_category_map', array());
1637 1637
   
1638
-  if (!$category AND $create_hidden) {
1638
+    if (!$category AND $create_hidden) {
1639 1639
     // Create the special "hidden" container
1640 1640
     $category = new stdClass();
1641 1641
     $category->name = 'Hidden';
1642 1642
     $category->id = 0;
1643 1643
     $hidden = TRUE;
1644
-  }
1645
-  else {
1644
+    }
1645
+    else {
1646 1646
     // If this container is empty, put it into the hidden container
1647 1647
     db_set_active('boinc_rw');
1648 1648
     $forums_contained = db_result(db_query('
1649 1649
       SELECT count(*) FROM %sforum
1650 1650
       WHERE parent_type = 0
1651 1651
       AND category = %d',
1652
-      $pre, $category->id));
1652
+        $pre, $category->id));
1653 1653
     db_set_active('default');
1654 1654
     if (!$forums_contained) {
1655
-      $parent_id = $category_map[0];
1656
-      $hidden = TRUE;
1655
+        $parent_id = $category_map[0];
1656
+        $hidden = TRUE;
1657
+    }
1657 1658
     }
1658
-  }
1659 1659
   
1660
-  $forum = array(
1660
+    $forum = array(
1661 1661
     'name' => $category->name,
1662 1662
     'vid' => $forum_vid,
1663 1663
     'description' => $description,
1664 1664
     'parent' => $parent_id,
1665 1665
     'weight' => $weight,
1666
-  );
1667
-  $forum['description'] = strip_tags($forum['description']);
1666
+    );
1667
+    $forum['description'] = strip_tags($forum['description']);
1668 1668
 
1669
-  taxonomy_save_term($forum);
1670
-  $success = isset($forum['tid']);
1669
+    taxonomy_save_term($forum);
1670
+    $success = isset($forum['tid']);
1671 1671
   
1672
-  // Serialize the forum containers
1673
-  $containers = variable_get('forum_containers', array());
1674
-  $containers[] = $forum['tid'];
1675
-  variable_set('forum_containers', $containers);
1672
+    // Serialize the forum containers
1673
+    $containers = variable_get('forum_containers', array());
1674
+    $containers[] = $forum['tid'];
1675
+    variable_set('forum_containers', $containers);
1676 1676
   
1677
-  // Note the taxonomy ID for mapping forums to categories
1678
-  $category_map[$category->id] = $forum['tid'];
1679
-  variable_set('boincimport_forum_category_map', $category_map);
1677
+    // Note the taxonomy ID for mapping forums to categories
1678
+    $category_map[$category->id] = $forum['tid'];
1679
+    variable_set('boincimport_forum_category_map', $category_map);
1680 1680
   
1681
-  boincimport_forum_set_permissions($forum, $hidden);
1681
+    boincimport_forum_set_permissions($forum, $hidden);
1682 1682
   
1683
-  $message = '';
1684
-  if ($success) {
1683
+    $message = '';
1684
+    if ($success) {
1685 1685
     // Store some result for post-processing in the finished callback.
1686 1686
     if (!$category AND $create_hidden) {
1687
-      $message = "Created special hidden container";
1687
+        $message = "Created special hidden container";
1688 1688
     }
1689 1689
     else {
1690
-      $context['results']['categories']['success'][] = $category->id;
1691
-      $message = "Successfully imported container {$category->id}";
1690
+        $context['results']['categories']['success'][] = $category->id;
1691
+        $message = "Successfully imported container {$category->id}";
1692 1692
     }
1693
-  }
1694
-  else {
1693
+    }
1694
+    else {
1695 1695
     $context['results']['categories']['failure'][] = $category->id;
1696 1696
     $message = "Failed to import container {$category->id}!";
1697 1697
     watchdog('boincimport',
1698
-      'Failed to import container @id!',
1699
-      array('@id' => $category->id), WATCHDOG_WARNING
1698
+        'Failed to import container @id!',
1699
+        array('@id' => $category->id), WATCHDOG_WARNING
1700 1700
     ); 
1701
-  }
1701
+    }
1702 1702
   
1703
-  // Update our progress information.
1704
-  $context['sandbox']['progress']++;
1705
-  $context['sandbox']['current_category'] = $category->id;
1706
-  $context['message'] = $message;
1703
+    // Update our progress information.
1704
+    $context['sandbox']['progress']++;
1705
+    $context['sandbox']['current_category'] = $category->id;
1706
+    $context['message'] = $message;
1707 1707
 
1708
-  // Update the progress for the batch engine
1709
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1708
+    // Update the progress for the batch engine
1709
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1710 1710
     $context['finished'] = 1;
1711
-  }
1712
-  else {
1711
+    }
1712
+    else {
1713 1713
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
1714
-  }
1714
+    }
1715 1715
 }
1716 1716
 
1717 1717
 /**
@@ -1720,40 +1720,40 @@  discard block
 block discarded – undo
1720 1720
  */
1721 1721
 function boincimport_forums_op($boincforum, $forum_vid, $pre = '', &$context) {
1722 1722
   
1723
-  $hidden_forum = FALSE;
1724
-  $open_forum = FALSE;
1725
-  $category_map = variable_get('boincimport_forum_category_map', array());
1726
-  
1727
-  // Set term parameters for forums
1728
-  $forum_id = $boincforum->id;
1729
-  $parent_id = isset($category_map[$boincforum->category]) ? $category_map[$boincforum->category] : $category_map[0];
1730
-  $name = $boincforum->title;
1731
-  $description = $boincforum->description;
1732
-  $weight = $boincforum->orderID;
1733
-  if ($parent_id == $category_map[0]) {
1723
+    $hidden_forum = FALSE;
1724
+    $open_forum = FALSE;
1725
+    $category_map = variable_get('boincimport_forum_category_map', array());
1726
+  
1727
+    // Set term parameters for forums
1728
+    $forum_id = $boincforum->id;
1729
+    $parent_id = isset($category_map[$boincforum->category]) ? $category_map[$boincforum->category] : $category_map[0];
1730
+    $name = $boincforum->title;
1731
+    $description = $boincforum->description;
1732
+    $weight = $boincforum->orderID;
1733
+    if ($parent_id == $category_map[0]) {
1734 1734
     // If this forum is hidden, flag for appropriate access controls
1735 1735
     $hidden_forum = TRUE;
1736
-  }
1737
-  if ($name == 'Getting Started') {
1736
+    }
1737
+    if ($name == 'Getting Started') {
1738 1738
     // Must allow users to post in this forum even if they have no credit!
1739 1739
     $open_forum = TRUE;
1740
-  }
1740
+    }
1741 1741
   
1742
-  // Try to detect a BOINC news forum and flag it so that news can be
1743
-  // imported into a Drupal news content type later
1744
-  if ($name == 'News') {
1742
+    // Try to detect a BOINC news forum and flag it so that news can be
1743
+    // imported into a Drupal news content type later
1744
+    if ($name == 'News') {
1745 1745
     // Save the ID of the News forum for later import
1746 1746
     variable_set('boincimport_news_forum_id', $forum_id);
1747 1747
     $success = TRUE;
1748
-  }
1749
-  else {
1748
+    }
1749
+    else {
1750 1750
     // Save all other forums as taxonomy terms
1751 1751
     $forum = array(
1752
-      'name' => $name,
1753
-      'vid' => $forum_vid,
1754
-      'description' => $description,
1755
-      'parent' => $parent_id,
1756
-      'weight' => $weight,
1752
+        'name' => $name,
1753
+        'vid' => $forum_vid,
1754
+        'description' => $description,
1755
+        'parent' => $parent_id,
1756
+        'weight' => $weight,
1757 1757
     );
1758 1758
     $forum['description'] = strip_tags($forum['description']);
1759 1759
 
@@ -1765,31 +1765,31 @@  discard block
 block discarded – undo
1765 1765
     
1766 1766
     // Set access controls
1767 1767
     boincimport_forum_set_permissions($forum, $hidden_forum, $open_forum);
1768
-  }
1768
+    }
1769 1769
   
1770
-  $message = '';
1771
-  if ($success) {
1770
+    $message = '';
1771
+    if ($success) {
1772 1772
     // Store some result for post-processing in the finished callback.
1773 1773
     $context['results']['forums']['success'][] = $forum_id;
1774 1774
     $message = "Successfully imported forum {$forum_id}";
1775
-  }
1776
-  else {
1775
+    }
1776
+    else {
1777 1777
     $context['results']['forums']['failure'][] = $forum_id;
1778 1778
     $message = "Failed to import forum {$forum_id}!";
1779
-  }
1779
+    }
1780 1780
   
1781
-  // Update our progress information.
1782
-  $context['sandbox']['progress']++;
1783
-  $context['sandbox']['current_forum'] = $forum_id;
1784
-  $context['message'] = $message;
1781
+    // Update our progress information.
1782
+    $context['sandbox']['progress']++;
1783
+    $context['sandbox']['current_forum'] = $forum_id;
1784
+    $context['message'] = $message;
1785 1785
 
1786
-  // Update the progress for the batch engine
1787
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1786
+    // Update the progress for the batch engine
1787
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
1788 1788
     $context['finished'] = 1;
1789
-  }
1790
-  else {
1789
+    }
1790
+    else {
1791 1791
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
1792
-  }
1792
+    }
1793 1793
 }
1794 1794
 
1795 1795
 /**
@@ -1797,46 +1797,46 @@  discard block
 block discarded – undo
1797 1797
  */
1798 1798
 function boincimport_forum_set_permissions($forum, $hidden = FALSE, $open = FALSE) {
1799 1799
   
1800
-  // Set access controls
1801
-  $forum_perms = array();
1802
-  $role_map = array_flip(user_roles());
1803
-  $forum_perms[$role_map['anonymous user']] = array(
1800
+    // Set access controls
1801
+    $forum_perms = array();
1802
+    $role_map = array_flip(user_roles());
1803
+    $forum_perms[$role_map['anonymous user']] = array(
1804 1804
     'view' => (int) !$hidden,
1805 1805
     'update' => 0,
1806 1806
     'delete' => 0,
1807 1807
     'create' => 0,
1808
-  );
1809
-  $forum_perms[$role_map['authenticated user']] = array(
1808
+    );
1809
+    $forum_perms[$role_map['authenticated user']] = array(
1810 1810
     'view' => (int) !$hidden,
1811 1811
     'update' => 0,
1812 1812
     'delete' => 0,
1813 1813
     'create' => 0,
1814
-  );
1815
-  $forum_perms[$role_map['community member']] = array(
1814
+    );
1815
+    $forum_perms[$role_map['community member']] = array(
1816 1816
     'view' => (int) !$hidden,
1817 1817
     'update' => 0,
1818 1818
     'delete' => 0,
1819 1819
     'create' => (int) $open,
1820
-  );
1821
-  $forum_perms[$role_map['verified contributor']] = array(
1820
+    );
1821
+    $forum_perms[$role_map['verified contributor']] = array(
1822 1822
     'view' => (int) !$hidden,
1823 1823
     'update' => 0,
1824 1824
     'delete' => 0,
1825 1825
     'create' => (int) !$hidden,
1826
-  );
1827
-  $forum_perms[$role_map['moderator']] = array(
1826
+    );
1827
+    $forum_perms[$role_map['moderator']] = array(
1828 1828
     'view' => (int) !$hidden,
1829 1829
     'update' => (int) !$hidden,
1830 1830
     'delete' => 0,
1831 1831
     'create' => (int) !$hidden,
1832
-  );
1833
-  $forum_perms[$role_map['administrator']] = array(
1832
+    );
1833
+    $forum_perms[$role_map['administrator']] = array(
1834 1834
     'view' => 1,
1835 1835
     'update' => 1,
1836 1836
     'delete' => 1,
1837 1837
     'create' => 1,
1838
-  );
1839
-  foreach ($forum_perms as $role => $perm) {
1838
+    );
1839
+    foreach ($forum_perms as $role => $perm) {
1840 1840
     db_query('
1841 1841
       INSERT INTO {forum_access}
1842 1842
       SET  tid = %d, rid = %d,
@@ -1845,61 +1845,61 @@  discard block
 block discarded – undo
1845 1845
       ON DUPLICATE KEY UPDATE
1846 1846
         grant_view = %d, grant_update = %d,
1847 1847
         grant_delete = %d, grant_create = %d',
1848
-      $forum['tid'], $role,
1849
-      $perm['view'], $perm['update'],
1850
-      $perm['delete'], $perm['create'],
1851
-      $perm['view'], $perm['update'],
1852
-      $perm['delete'], $perm['create']);
1853
-  }
1848
+        $forum['tid'], $role,
1849
+        $perm['view'], $perm['update'],
1850
+        $perm['delete'], $perm['create'],
1851
+        $perm['view'], $perm['update'],
1852
+        $perm['delete'], $perm['create']);
1853
+    }
1854 1854
 }
1855 1855
 
1856 1856
 /**
1857 1857
  * Batch 'finished' callback
1858 1858
  */
1859 1859
 function boincimport_forums_finished($success, $results, $operations) {
1860
-  if ($success) {
1860
+    if ($success) {
1861 1861
     // Let's count our successes
1862 1862
     $categories_imported = count($results['categories']['success']);
1863 1863
     $forums_imported = count($results['forums']['success']);
1864 1864
     
1865 1865
     $success_message = array();
1866 1866
     if ($categories_imported) {
1867
-      $success_message[] = format_plural(
1867
+        $success_message[] = format_plural(
1868 1868
         $categories_imported,
1869 1869
         '1 container',
1870 1870
         '@count containers'
1871
-      );
1871
+        );
1872 1872
     }
1873 1873
     if ($forums_imported) {
1874
-      $success_message[] = format_plural(
1874
+        $success_message[] = format_plural(
1875 1875
         $forums_imported,
1876 1876
         '1 forum',
1877 1877
         '@count forums'
1878
-      );
1878
+        );
1879 1879
     }
1880 1880
     $message = t(
1881
-      'Successfully imported @forums',
1882
-      array('@forums' => implode(' and ', $success_message))
1881
+        'Successfully imported @forums',
1882
+        array('@forums' => implode(' and ', $success_message))
1883 1883
     );
1884 1884
     watchdog('boincimport',
1885
-      'Successfully imported @forums',
1886
-      array('@forums' => implode(' and ', $success_message)), WATCHDOG_INFO
1885
+        'Successfully imported @forums',
1886
+        array('@forums' => implode(' and ', $success_message)), WATCHDOG_INFO
1887 1887
     ); 
1888 1888
     // Set the forum import successful flag in the variable table
1889 1889
     variable_set('boincimport_import_forum_successful', '1');
1890 1890
     $_SESSION['boincimport_stage_selected'] = 'topics';
1891
-  }
1892
-  else {
1891
+    }
1892
+    else {
1893 1893
     // An error occurred.
1894 1894
     // $operations contains the operations that remained unprocessed.
1895 1895
     $error_operation = reset($operations);
1896 1896
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
1897
-  }
1898
-  drupal_set_message($message);
1897
+    }
1898
+    drupal_set_message($message);
1899 1899
   
1900
-  // Release the lock on the import process
1901
-  variable_del('boincimport_process_locked');
1902
-  drupal_goto('admin/boinc/import/process');
1900
+    // Release the lock on the import process
1901
+    variable_del('boincimport_process_locked');
1902
+    drupal_goto('admin/boinc/import/process');
1903 1903
 }
1904 1904
 
1905 1905
 
@@ -1911,82 +1911,82 @@  discard block
 block discarded – undo
1911 1911
  */
1912 1912
 function boincimport_forum_topics() {
1913 1913
   
1914
-  // Check whether topics have been successfully imported already
1915
-  if (variable_get('boincimport_import_topic_successful', 0)) {
1914
+    // Check whether topics have been successfully imported already
1915
+    if (variable_get('boincimport_import_topic_successful', 0)) {
1916 1916
     drupal_set_message(t('Topic import has already run successfully'), 'warning');
1917 1917
     watchdog(
1918
-      'boincimport', 'Topic import has already run successfully',
1919
-      array(), WATCHDOG_WARNING
1918
+        'boincimport', 'Topic import has already run successfully',
1919
+        array(), WATCHDOG_WARNING
1920 1920
     );
1921 1921
     // Release the lock on the import process
1922 1922
     variable_del('boincimport_process_locked');
1923 1923
     return;
1924
-  }
1924
+    }
1925 1925
 
1926
-  if (!variable_get('boincimport_import_topic_started', 0)) {
1926
+    if (!variable_get('boincimport_import_topic_started', 0)) {
1927 1927
     // Could prepare database tables, if new fields are necessary, etc.
1928 1928
     variable_set('boincimport_import_topic_started', 1);
1929
-  }
1929
+    }
1930 1930
   
1931
-  $pre = variable_get('boincimport_table_prefix', '');
1931
+    $pre = variable_get('boincimport_table_prefix', '');
1932 1932
 
1933
-  // Get the count of non-team topics to import
1934
-  db_set_active('boinc_rw');
1935
-  $topic_count = db_result(db_query('
1933
+    // Get the count of non-team topics to import
1934
+    db_set_active('boinc_rw');
1935
+    $topic_count = db_result(db_query('
1936 1936
     SELECT COUNT(DISTINCT t.id)
1937 1937
     FROM %sthread t
1938 1938
     JOIN %sforum f ON f.id = t.forum
1939 1939
     JOIN %spost p ON p.thread = t.id
1940 1940
     WHERE f.parent_type = 0',
1941 1941
     $pre, $pre, $pre
1942
-  ));
1943
-  db_set_active('default');
1942
+    ));
1943
+    db_set_active('default');
1944 1944
 
1945
-  if (!$topic_count) {
1945
+    if (!$topic_count) {
1946 1946
     drupal_set_message(
1947
-      t('There were no topics found: Aborting script'), 'warning'
1947
+        t('There were no topics found: Aborting script'), 'warning'
1948 1948
     );
1949 1949
     watchdog('boincimport',
1950
-      'There were no topics found: Aborting script', array(), WATCHDOG_WARNING
1950
+        'There were no topics found: Aborting script', array(), WATCHDOG_WARNING
1951 1951
     );
1952 1952
     // Release the lock on the import process
1953 1953
     variable_del('boincimport_process_locked');
1954 1954
     return t('There were no topics found: Aborting script.');
1955
-  }
1955
+    }
1956 1956
 
1957
-  watchdog('boincimport',
1957
+    watchdog('boincimport',
1958 1958
     'Found %count topics: Beginning Import',
1959 1959
     array('%count' => $topic_count), WATCHDOG_INFO
1960
-  );
1960
+    );
1961 1961
   
1962
-  $operations = array();
1963
-  $batch_size = 100;
1962
+    $operations = array();
1963
+    $batch_size = 100;
1964 1964
   
1965
-  // Create batches to process
1966
-  for ($offset = 0; $offset < $topic_count; $offset+=$batch_size) {
1965
+    // Create batches to process
1966
+    for ($offset = 0; $offset < $topic_count; $offset+=$batch_size) {
1967 1967
     $topics_per_batch = $batch_size;
1968 1968
     if ($offset + $batch_size > $topic_count) {
1969
-      $topics_per_batch = $topic_count - $offset;
1969
+        $topics_per_batch = $topic_count - $offset;
1970 1970
     }
1971 1971
     $operations[] = array(
1972
-      'boincimport_topics_op', array(
1972
+        'boincimport_topics_op', array(
1973 1973
         $offset, $topics_per_batch, $pre
1974
-      )
1974
+        )
1975 1975
     );
1976
-  }
1976
+    }
1977 1977
   
1978
-  $batch = array(
1978
+    $batch = array(
1979 1979
     'operations' => $operations,
1980 1980
     'finished' => 'boincimport_topics_finished',
1981 1981
     'title' => t('Importing topics'),
1982 1982
     'init_message' => t('Beginning topic import...'),
1983 1983
     'progress_message' => t('Processed @current out of @total batches (@size topics per batch).', array(
1984
-      '@size' => $batch_size,
1984
+        '@size' => $batch_size,
1985 1985
     )),
1986 1986
     'error_message' => t('Topic import has encountered an error.'),
1987
-  );
1987
+    );
1988 1988
   
1989
-  batch_set($batch);
1989
+    batch_set($batch);
1990 1990
 }
1991 1991
 
1992 1992
 /**
@@ -1994,18 +1994,18 @@  discard block
 block discarded – undo
1994 1994
  * Create a Drupal node from the given BOINC topic object
1995 1995
  */
1996 1996
 function boincimport_topics_op($offset, $batch_size, $pre = '', &$context) {
1997
-  // Initialize the batch, if needed
1998
-  if (!isset($context['sandbox']['progress'])) {
1997
+    // Initialize the batch, if needed
1998
+    if (!isset($context['sandbox']['progress'])) {
1999 1999
     $context['sandbox']['progress'] = 0;
2000 2000
     $context['sandbox']['max'] = $batch_size;
2001
-  }
2001
+    }
2002 2002
   
2003
-  $input_format = variable_get('boincimport_input_format', 0);
2004
-  $news_forum_id = variable_get('boincimport_news_forum_id', 0);
2003
+    $input_format = variable_get('boincimport_input_format', 0);
2004
+    $news_forum_id = variable_get('boincimport_news_forum_id', 0);
2005 2005
   
2006
-  // Get the topic to import
2007
-  db_set_active('boinc_rw');
2008
-  $topics = db_query('
2006
+    // Get the topic to import
2007
+    db_set_active('boinc_rw');
2008
+    $topics = db_query('
2009 2009
     SELECT DISTINCT t.id, t.title, t.owner, t.forum, t.locked, t.hidden,
2010 2010
         t.sticky, t.timestamp, t.create_time
2011 2011
     FROM %sthread t
@@ -2015,10 +2015,10 @@  discard block
 block discarded – undo
2015 2015
     ORDER BY t.id ASC
2016 2016
     LIMIT %d,%d',
2017 2017
     $pre, $pre, $pre, $offset, $batch_size
2018
-  );
2019
-  db_set_active('default');
2018
+    );
2019
+    db_set_active('default');
2020 2020
   
2021
-  while ($topic = db_fetch_object($topics)) {
2021
+    while ($topic = db_fetch_object($topics)) {
2022 2022
     
2023 2023
     $error_detail = '';
2024 2024
     
@@ -2031,52 +2031,52 @@  discard block
 block discarded – undo
2031 2031
       WHERE thread = %d
2032 2032
       ORDER BY timestamp ASC
2033 2033
       LIMIT 1',
2034
-      $pre, $topic->id
2034
+        $pre, $topic->id
2035 2035
     ));
2036 2036
     db_set_active('default');
2037 2037
       
2038 2038
     $duplicate = db_result(db_query('
2039 2039
       SELECT COUNT(*) FROM {boincimport_temp_topic}
2040 2040
       WHERE topic_id = %d',
2041
-      $topic->id
2041
+        $topic->id
2042 2042
     ));
2043 2043
     
2044 2044
     if ($duplicate OR !$post) {
2045
-      $success = FALSE;
2045
+        $success = FALSE;
2046 2046
     }
2047 2047
     
2048 2048
     else {
2049
-      // Get the user and term IDs along with other data to define the topic
2050
-      $uid = boincuser_lookup_uid($topic->owner);
2051
-      $tid = db_result(db_query('
2049
+        // Get the user and term IDs along with other data to define the topic
2050
+        $uid = boincuser_lookup_uid($topic->owner);
2051
+        $tid = db_result(db_query('
2052 2052
         SELECT tid FROM {boincimport_temp_forum}
2053 2053
         WHERE forum_id = %d',
2054 2054
         $topic->forum
2055
-      ));
2056
-      if (!$topic->owner) {
2055
+        ));
2056
+        if (!$topic->owner) {
2057 2057
         $uid = 0;
2058
-      }
2058
+        }
2059 2059
       
2060
-      $node_type = 'forum';
2061
-      $promote = 0;
2062
-      $comment = ($topic->locked) ? 1 : 2;
2060
+        $node_type = 'forum';
2061
+        $promote = 0;
2062
+        $comment = ($topic->locked) ? 1 : 2;
2063 2063
       
2064
-      $post->content = _boincimport_strip_bbcode($post->content);
2065
-      $post->content = _boincimport_text_sanitize($post->content);
2066
-      $teaser = node_teaser($post->content);
2064
+        $post->content = _boincimport_strip_bbcode($post->content);
2065
+        $post->content = _boincimport_text_sanitize($post->content);
2066
+        $teaser = node_teaser($post->content);
2067 2067
       
2068
-      if ($topic->timestamp < $topic->create_time) {
2068
+        if ($topic->timestamp < $topic->create_time) {
2069 2069
         $topic->timestamp = $topic->create_time;
2070
-      }
2070
+        }
2071 2071
       
2072
-      // If dealing with a News topic, be sure it is imported as such
2073
-      if ($news_forum_id AND $topic->forum == $news_forum_id) {
2072
+        // If dealing with a News topic, be sure it is imported as such
2073
+        if ($news_forum_id AND $topic->forum == $news_forum_id) {
2074 2074
         $node_type = 'news';
2075 2075
         $promote = 1;
2076
-      }
2076
+        }
2077 2077
 
2078
-      // Construct the thread as a forum topic node
2079
-      $node = array(
2078
+        // Construct the thread as a forum topic node
2079
+        $node = array(
2080 2080
         'type' => $node_type,
2081 2081
         'title' => $topic->title,
2082 2082
         'uid' => $uid,
@@ -2090,61 +2090,61 @@  discard block
 block discarded – undo
2090 2090
         'sticky' => $topic->sticky,
2091 2091
         'format' => $input_format,
2092 2092
         'teaser' => $teaser,
2093
-      );
2094
-      $node['tid'] = $tid;
2093
+        );
2094
+        $node['tid'] = $tid;
2095 2095
       
2096
-      // Save the topic node
2097
-      $node = (object) $node; // node_save requires an object form
2098
-      node_save($node);
2099
-      taxonomy_node_save($node, array($tid));
2100
-      $success = ($node->nid) ? TRUE : FALSE;
2101
-      if ($success) {
2096
+        // Save the topic node
2097
+        $node = (object) $node; // node_save requires an object form
2098
+        node_save($node);
2099
+        taxonomy_node_save($node, array($tid));
2100
+        $success = ($node->nid) ? TRUE : FALSE;
2101
+        if ($success) {
2102 2102
         $success = db_query('
2103 2103
           INSERT INTO {boincimport_temp_topic} (topic_id, post_id, nid)
2104 2104
           VALUES (%d, %d, %d)', $topic->id, $post->id, $node->nid
2105 2105
         );
2106 2106
         if ($success) {
2107
-          // Hack to keep the topics in correct order
2108
-          $success = db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE nid = %d', $node->created, $node->nid);
2109
-          if (!$success) {
2107
+            // Hack to keep the topics in correct order
2108
+            $success = db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE nid = %d', $node->created, $node->nid);
2109
+            if (!$success) {
2110 2110
             $error_detail = 'topic imported, but failed to set last comment timestamp';
2111
-          }
2111
+            }
2112 2112
         }
2113 2113
         else {
2114
-          $error_detail = 'topic node saved, but failed to link in boincimport_temp_topic table';
2114
+            $error_detail = 'topic node saved, but failed to link in boincimport_temp_topic table';
2115 2115
         }
2116
-      }
2117
-      else {
2116
+        }
2117
+        else {
2118 2118
         $error_detail = 'failed to save topic node to database';
2119
-      }
2119
+        }
2120 2120
     }
2121 2121
     
2122 2122
     // See if the import worked
2123 2123
     $message = '';
2124 2124
     if ($success) {
2125
-      // Store some result for post-processing in the finished callback.
2126
-      $context['results']['success'][] = $topic->id;
2127
-      $message = "Successfully imported topic {$topic->id}";
2125
+        // Store some result for post-processing in the finished callback.
2126
+        $context['results']['success'][] = $topic->id;
2127
+        $message = "Successfully imported topic {$topic->id}";
2128 2128
     }
2129 2129
     elseif ($duplicate) {
2130
-      $context['results']['duplicate'][] = $topic->id;
2131
-      $message = "Topic {$topic->id} was already imported";
2130
+        $context['results']['duplicate'][] = $topic->id;
2131
+        $message = "Topic {$topic->id} was already imported";
2132 2132
     }
2133 2133
     elseif (!$post) {
2134
-      $context['results']['empty'][] = $topic->id;
2135
-      $message = "Skipping topic {$topic->id} as empty";
2134
+        $context['results']['empty'][] = $topic->id;
2135
+        $message = "Skipping topic {$topic->id} as empty";
2136 2136
     }
2137 2137
     else {
2138
-      $context['results']['failure'][] = $topic->id;
2139
-      $message = "Failed to import topic {$topic->id}!";
2140
-      watchdog('boincimport',
2138
+        $context['results']['failure'][] = $topic->id;
2139
+        $message = "Failed to import topic {$topic->id}!";
2140
+        watchdog('boincimport',
2141 2141
         'Failed to import topic @id! (@error)',
2142 2142
         array(
2143
-          '@id' => $topic->id,
2144
-          '@error' => $error_detail,
2143
+            '@id' => $topic->id,
2144
+            '@error' => $error_detail,
2145 2145
         ),
2146 2146
         WATCHDOG_WARNING
2147
-      ); 
2147
+        ); 
2148 2148
     }
2149 2149
     
2150 2150
     // Update our progress information.
@@ -2154,54 +2154,54 @@  discard block
 block discarded – undo
2154 2154
 
2155 2155
     // Update the progress for the batch engine
2156 2156
     if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2157
-      $context['finished'] = 1;
2157
+        $context['finished'] = 1;
2158 2158
     }
2159 2159
     else {
2160
-      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2160
+        $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2161
+    }
2161 2162
     }
2162
-  }
2163 2163
 }
2164 2164
 
2165 2165
 /**
2166 2166
  * Batch 'finished' callback
2167 2167
  */
2168 2168
 function boincimport_topics_finished($success, $results, $operations) {
2169
-  if ($success) {
2169
+    if ($success) {
2170 2170
     // Let's count our successes
2171 2171
     $total_imported = count($results['success']);
2172 2172
     $duplicates = count($results['duplicate']);
2173 2173
     $empty_topics = count($results['empty']);
2174 2174
     $message = t(
2175
-      'Successfully imported @count topics (skipped @duplicates already imported, @abandoned empty topics)',
2176
-      array(
2175
+        'Successfully imported @count topics (skipped @duplicates already imported, @abandoned empty topics)',
2176
+        array(
2177 2177
         '@count' => $total_imported,
2178 2178
         '@duplicates' => $duplicates,
2179 2179
         '@abandoned' => $empty_topics,
2180
-      )
2180
+        )
2181 2181
     );
2182 2182
     watchdog('boincimport',
2183
-      'Successfully imported @count topics (skipped @duplicates already imported, @abandoned empty topics).',
2184
-      array(
2183
+        'Successfully imported @count topics (skipped @duplicates already imported, @abandoned empty topics).',
2184
+        array(
2185 2185
         '@count' => $total_imported,
2186 2186
         '@duplicates' => $duplicates,
2187 2187
         '@abandoned' => $empty_topics,
2188
-      ), WATCHDOG_INFO
2188
+        ), WATCHDOG_INFO
2189 2189
     ); 
2190 2190
     // Set the topic import successful flag in the variable table
2191 2191
     variable_set('boincimport_import_topic_successful', '1');
2192 2192
     $_SESSION['boincimport_stage_selected'] = 'posts';
2193
-  }
2194
-  else {
2193
+    }
2194
+    else {
2195 2195
     // An error occurred.
2196 2196
     // $operations contains the operations that remained unprocessed.
2197 2197
     $error_operation = reset($operations);
2198 2198
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
2199
-  }
2200
-  drupal_set_message($message);
2199
+    }
2200
+    drupal_set_message($message);
2201 2201
   
2202
-  // Release the lock on the import process
2203
-  variable_del('boincimport_process_locked');
2204
-  drupal_goto('admin/boinc/import/process');
2202
+    // Release the lock on the import process
2203
+    variable_del('boincimport_process_locked');
2204
+    drupal_goto('admin/boinc/import/process');
2205 2205
 }
2206 2206
 
2207 2207
 
@@ -2214,91 +2214,91 @@  discard block
 block discarded – undo
2214 2214
  */
2215 2215
 function boincimport_forum_posts() {
2216 2216
   
2217
-  // Check whether forum posts have been successfully imported already
2218
-  if (variable_get('boincimport_import_post_successful', 0)) {
2217
+    // Check whether forum posts have been successfully imported already
2218
+    if (variable_get('boincimport_import_post_successful', 0)) {
2219 2219
     drupal_set_message(t('Forum post import has already run successfully'), 'warning');
2220 2220
     watchdog(
2221
-      'boincimport', 'Forum post import has already run successfully',
2222
-      array(), WATCHDOG_WARNING
2221
+        'boincimport', 'Forum post import has already run successfully',
2222
+        array(), WATCHDOG_WARNING
2223 2223
     );
2224 2224
     // Release the lock on the import process
2225 2225
     variable_del('boincimport_process_locked');
2226 2226
     return;
2227
-  }
2227
+    }
2228 2228
 
2229
-  if (!variable_get('boincimport_import_post_started', 0)) {
2229
+    if (!variable_get('boincimport_import_post_started', 0)) {
2230 2230
     // Could prepare database tables, if new fields are necessary, etc.
2231 2231
     variable_set('boincimport_import_post_started', 1);
2232
-  }
2232
+    }
2233 2233
   
2234
-  $pre = variable_get('boincimport_table_prefix', '');
2234
+    $pre = variable_get('boincimport_table_prefix', '');
2235 2235
 
2236
-  // Get the BOINC threads and get a count of posts to import
2237
-  db_set_active('boinc_rw');
2238
-  $topic_count = db_result(db_query("
2236
+    // Get the BOINC threads and get a count of posts to import
2237
+    db_set_active('boinc_rw');
2238
+    $topic_count = db_result(db_query("
2239 2239
     SELECT COUNT(DISTINCT t.id) FROM %sthread t
2240 2240
     JOIN %sforum f ON f.id = t.forum
2241 2241
     JOIN %spost p ON p.thread = t.id
2242 2242
     WHERE f.parent_type = 0", $pre, $pre, $pre
2243
-  ));
2244
-  $total_post_count = db_result(db_query("
2243
+    ));
2244
+    $total_post_count = db_result(db_query("
2245 2245
     SELECT COUNT(p.id) FROM %spost p
2246 2246
     JOIN %sthread t ON t.id = p.thread
2247 2247
     JOIN %sforum f ON f.id = t.forum
2248 2248
     WHERE f.parent_type = 0", $pre, $pre, $pre
2249
-  ));
2250
-  $post_count = $total_post_count - $topic_count;
2251
-  db_set_active('default');
2249
+    ));
2250
+    $post_count = $total_post_count - $topic_count;
2251
+    db_set_active('default');
2252 2252
 
2253
-  if ($post_count <= 0) {
2253
+    if ($post_count <= 0) {
2254 2254
     drupal_set_message(
2255
-      t('There were no posts found: Aborting script'), 'warning'
2255
+        t('There were no posts found: Aborting script'), 'warning'
2256 2256
     );
2257 2257
     watchdog('boincimport',
2258
-      'There were no posts found: Aborting script', array(), WATCHDOG_WARNING
2258
+        'There were no posts found: Aborting script', array(), WATCHDOG_WARNING
2259 2259
     );
2260 2260
     // Release the lock on the import process
2261 2261
     variable_del('boincimport_process_locked');
2262 2262
     return t('There were no posts found: Aborting script.');
2263
-  }
2263
+    }
2264 2264
 
2265
-  watchdog('boincimport',
2265
+    watchdog('boincimport',
2266 2266
     'Found %count posts: Beginning Import',
2267 2267
     array('%count' => $post_count), WATCHDOG_INFO
2268
-  );
2268
+    );
2269 2269
   
2270
-  $operations = array();
2271
-  $batch_size = 100;
2270
+    $operations = array();
2271
+    $batch_size = 100;
2272 2272
   
2273
-  // Create batches to process
2274
-  for ($offset = 0; $offset < $topic_count; $offset+=$batch_size) {
2273
+    // Create batches to process
2274
+    for ($offset = 0; $offset < $topic_count; $offset+=$batch_size) {
2275 2275
     $topics_per_batch = $batch_size;
2276 2276
     if ($offset + $batch_size > $topic_count) {
2277
-      $topics_per_batch = $topic_count - $offset;
2277
+        $topics_per_batch = $topic_count - $offset;
2278 2278
     }
2279 2279
     $operations[] = array(
2280
-      'boincimport_posts_op', array(
2280
+        'boincimport_posts_op', array(
2281 2281
         $offset, $topics_per_batch
2282
-      )
2282
+        )
2283 2283
     );
2284
-  }
2284
+    }
2285 2285
   
2286
-  $batch = array(
2286
+    $batch = array(
2287 2287
     'operations' => $operations,
2288 2288
     'finished' => 'boincimport_posts_finished',
2289 2289
     'title' => t('Importing posts'),
2290 2290
     'init_message' => t('Beginning post import...'),
2291 2291
     'progress_message' => t(
2292
-      'Processed posts in @current out of @total batches (@size topics per batch).',
2293
-      array(
2292
+        'Processed posts in @current out of @total batches (@size topics per batch).',
2293
+        array(
2294 2294
         '@size' => $batch_size,
2295 2295
         // @current and @total are managed by the batch API
2296
-      )
2296
+        )
2297 2297
     ),
2298 2298
     'error_message' => t('Post import has encountered an error.'),
2299
-  );
2299
+    );
2300 2300
   
2301
-  batch_set($batch);
2301
+    batch_set($batch);
2302 2302
 }
2303 2303
 
2304 2304
 /**
@@ -2306,17 +2306,17 @@  discard block
 block discarded – undo
2306 2306
  * Create a Drupal comment from the given BOINC post object
2307 2307
  */
2308 2308
 function boincimport_posts_op($offset, $batch_size, &$context) {
2309
-  // Initialize the batch, if needed
2310
-  if (!isset($context['sandbox']['progress'])) {
2309
+    // Initialize the batch, if needed
2310
+    if (!isset($context['sandbox']['progress'])) {
2311 2311
     $context['sandbox']['progress'] = 0;
2312 2312
     $context['sandbox']['max'] = $batch_size;
2313
-  }
2313
+    }
2314 2314
   
2315
-  $input_format = variable_get('boincimport_input_format', 0);
2315
+    $input_format = variable_get('boincimport_input_format', 0);
2316 2316
   
2317
- // Get the topics with posts to import
2318
-  db_set_active('boinc_rw');
2319
-  $boinc_topic_ids = db_query('
2317
+    // Get the topics with posts to import
2318
+    db_set_active('boinc_rw');
2319
+    $boinc_topic_ids = db_query('
2320 2320
     SELECT DISTINCT t.id FROM %sthread t
2321 2321
     JOIN %sforum f ON f.id = t.forum
2322 2322
     JOIN %spost p ON p.thread = t.id
@@ -2324,10 +2324,10 @@  discard block
 block discarded – undo
2324 2324
     ORDER BY t.id
2325 2325
     LIMIT %d,%d', 
2326 2326
     $pre, $pre, $pre, $offset, $batch_size
2327
-  );
2328
-  db_set_active('default');
2327
+    );
2328
+    db_set_active('default');
2329 2329
   
2330
-  while ($boinc_topic = db_fetch_object($boinc_topic_ids)) {
2330
+    while ($boinc_topic = db_fetch_object($boinc_topic_ids)) {
2331 2331
     // Get the posts in this topic
2332 2332
     db_set_active('boinc_rw');
2333 2333
     $boinc_posts = db_query('
@@ -2345,29 +2345,29 @@  discard block
 block discarded – undo
2345 2345
 
2346 2346
     while ($post = db_fetch_object($boinc_posts)) {
2347 2347
       
2348
-      // Skip the first post as it has already been imported as a topic
2349
-      if ($first_post) {
2348
+        // Skip the first post as it has already been imported as a topic
2349
+        if ($first_post) {
2350 2350
         $first_post = false;
2351 2351
         continue;
2352
-      }
2352
+        }
2353 2353
       
2354
-      // Making it this far confirms that there are posts to import
2355
-      $topic_has_responses = TRUE;
2354
+        // Making it this far confirms that there are posts to import
2355
+        $topic_has_responses = TRUE;
2356 2356
       
2357
-      $is_duplicate = db_result(db_query('
2357
+        $is_duplicate = db_result(db_query('
2358 2358
         SELECT COUNT(*) FROM {boincimport_temp_post}
2359 2359
         WHERE post_id = %d',
2360 2360
         $post->id
2361
-      ));
2362
-      if ($is_duplicate) {
2361
+        ));
2362
+        if ($is_duplicate) {
2363 2363
         // This post has already been imported
2364 2364
         $context['results']['posts']['duplicate'][] = $post->id;
2365 2365
         $duplicate_posts++;
2366 2366
         continue;
2367
-      }
2367
+        }
2368 2368
       
2369
-      // Make sure the post is valid
2370
-      if ($post->content) {
2369
+        // Make sure the post is valid
2370
+        if ($post->content) {
2371 2371
         
2372 2372
         // Get user, node, and parent IDs for the post and sanitize
2373 2373
         $uid = boincuser_lookup_uid($post->user);
@@ -2376,14 +2376,14 @@  discard block
 block discarded – undo
2376 2376
           FROM {boincimport_temp_topic} btt
2377 2377
           LEFT JOIN {node_revisions} AS nr ON btt.nid = nr.nid
2378 2378
           WHERE btt.topic_id = %d',
2379
-          $post->thread
2379
+            $post->thread
2380 2380
         ));
2381 2381
         $nid = $node->nid;
2382 2382
         $pid = db_result(db_query('
2383 2383
           SELECT cid
2384 2384
           FROM {boincimport_temp_post}
2385 2385
           WHERE post_id = %d',
2386
-          $post->parent_post));
2386
+            $post->parent_post));
2387 2387
         if (is_null($pid)) $pid = 0;
2388 2388
         if (!$uid) $uid = 0;
2389 2389
         
@@ -2394,85 +2394,85 @@  discard block
 block discarded – undo
2394 2394
           SELECT COUNT(*)
2395 2395
           FROM {comments}
2396 2396
           WHERE nid = %d',
2397
-          $nid
2397
+            $nid
2398 2398
         ));
2399 2399
         $post_reply = $pid;
2400 2400
         
2401 2401
         if ($post_reply OR $topic_reply) {
2402
-          // Create a subject for the post from the post content. The body may be in 
2403
-          // any format, so we:
2404
-          //  1) Filter it into HTML
2405
-          //  2) Strip out all HTML tags
2406
-          //  3) Convert entities back to plain-text.
2407
-          // Note: format is checked by check_markup().
2408
-          $subject = truncate_utf8(trim(decode_entities(strip_tags(check_markup($post->content, $input_format)))), 29, TRUE);
2409
-          // Replace "Quote:" with "RE:"
2410
-          $subject = str_replace('Quote:', 'RE: ', $subject);
2411
-          // Fringe cases where the comment body is populated only by HTML tags
2412
-          // will require a default subject...
2413
-          if ($subject === '')
2402
+            // Create a subject for the post from the post content. The body may be in 
2403
+            // any format, so we:
2404
+            //  1) Filter it into HTML
2405
+            //  2) Strip out all HTML tags
2406
+            //  3) Convert entities back to plain-text.
2407
+            // Note: format is checked by check_markup().
2408
+            $subject = truncate_utf8(trim(decode_entities(strip_tags(check_markup($post->content, $input_format)))), 29, TRUE);
2409
+            // Replace "Quote:" with "RE:"
2410
+            $subject = str_replace('Quote:', 'RE: ', $subject);
2411
+            // Fringe cases where the comment body is populated only by HTML tags
2412
+            // will require a default subject...
2413
+            if ($subject === '')
2414 2414
             $subject = "RE: {$node->title}";
2415 2415
         } else {
2416
-          // This is the first post in the topic
2417
-          $subject = $node->title;
2416
+            // This is the first post in the topic
2417
+            $subject = $node->title;
2418 2418
         }
2419 2419
         
2420 2420
         // Construct the post as a Drupal comment
2421 2421
         $comment = array(
2422
-          'pid' => $pid,
2423
-          'nid' => $nid,
2424
-          'uid' => $uid,
2425
-          'subject' => $subject,
2426
-          'comment' => $post->content,
2427
-          'timestamp' => $post->timestamp,
2428
-          'status' => $post->hidden,
2429
-          'format' => $input_format
2422
+            'pid' => $pid,
2423
+            'nid' => $nid,
2424
+            'uid' => $uid,
2425
+            'subject' => $subject,
2426
+            'comment' => $post->content,
2427
+            'timestamp' => $post->timestamp,
2428
+            'status' => $post->hidden,
2429
+            'format' => $input_format
2430 2430
         );
2431 2431
         
2432 2432
         // Save the comment
2433 2433
         if (boincimport_forum_comment_save($comment)) {
2434
-          $success = db_query('
2434
+            $success = db_query('
2435 2435
             INSERT INTO {boincimport_temp_post} (post_id, cid)
2436 2436
             VALUES (%d, %d)',
2437 2437
             $post->id, $comment['cid']
2438
-          );
2439
-          if ($success) {
2438
+            );
2439
+            if ($success) {
2440 2440
             $posts_imported++;
2441 2441
             $context['results']['posts']['success'][] = $post->id;
2442
-          }
2443
-          else {
2442
+            }
2443
+            else {
2444 2444
             $context['results']['posts']['failure'][] = $post->id;
2445 2445
             $error_posts++;
2446
-          }
2446
+            }
2447 2447
         }
2448 2448
         else {
2449
-          $context['results']['posts']['failure'][] = $post->id;
2450
-          $error_posts++;
2449
+            $context['results']['posts']['failure'][] = $post->id;
2450
+            $error_posts++;
2451
+        }
2451 2452
         }
2452
-      }
2453
-      else {
2453
+        else {
2454 2454
         $context['results']['posts']['empty'][] = $post->id;
2455 2455
         $empty_posts++;
2456
-      }
2456
+        }
2457 2457
     }
2458 2458
     
2459 2459
     $message = '';
2460 2460
     if ($success OR !$topic_has_responses) {
2461
-      // Store some result for post-processing in the finished callback.
2462
-      $context['results']['success'][] = $boinc_topic->id;
2463
-      $message = "Imported {$posts_imported} post(s) for topic {$boinc_topic->id}";
2461
+        // Store some result for post-processing in the finished callback.
2462
+        $context['results']['success'][] = $boinc_topic->id;
2463
+        $message = "Imported {$posts_imported} post(s) for topic {$boinc_topic->id}";
2464 2464
     }
2465 2465
     else {
2466
-      $context['results']['failure'][] = $boinc_topic->id;
2467
-      $message = "Failed to import any posts for topic {$boinc_topic->id} (excluded {$error_posts} errors, {$duplicate_posts} duplicates, and {$empty_posts} empty)";
2468
-      watchdog('boincimport', 'Failed to import any posts for topic @id (excluded @error_posts errors, @duplicate_posts duplicates, and @empty_posts empty)', 
2466
+        $context['results']['failure'][] = $boinc_topic->id;
2467
+        $message = "Failed to import any posts for topic {$boinc_topic->id} (excluded {$error_posts} errors, {$duplicate_posts} duplicates, and {$empty_posts} empty)";
2468
+        watchdog('boincimport', 'Failed to import any posts for topic @id (excluded @error_posts errors, @duplicate_posts duplicates, and @empty_posts empty)', 
2469 2469
         array(
2470
-          '@id' => $boinc_topic->id,
2471
-          '@error_posts' => $error_posts,
2472
-          '@duplicate_posts' => $duplicate_posts,
2473
-          '@empty_posts' => $empty_posts,
2470
+            '@id' => $boinc_topic->id,
2471
+            '@error_posts' => $error_posts,
2472
+            '@duplicate_posts' => $duplicate_posts,
2473
+            '@empty_posts' => $empty_posts,
2474 2474
         ), WATCHDOG_WARNING
2475
-      ); 
2475
+        ); 
2476 2476
     }
2477 2477
     
2478 2478
     // Update our progress information.
@@ -2482,19 +2482,19 @@  discard block
 block discarded – undo
2482 2482
 
2483 2483
     // Update the progress for the batch engine
2484 2484
     if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2485
-      $context['finished'] = 1;
2485
+        $context['finished'] = 1;
2486 2486
     }
2487 2487
     else {
2488
-      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2488
+        $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2489
+    }
2489 2490
     }
2490
-  }
2491 2491
 }
2492 2492
 
2493 2493
 /**
2494 2494
  * Batch 'finished' callback
2495 2495
  */
2496 2496
 function boincimport_posts_finished($success, $results, $operations) {
2497
-  if ($success) {
2497
+    if ($success) {
2498 2498
     // Let's count our successes
2499 2499
     $posts_imported = count($results['posts']['success']);
2500 2500
     $topic_count = count($results['success']);
@@ -2503,39 +2503,39 @@  discard block
 block discarded – undo
2503 2503
     $empty_posts = count($results['posts']['empty']);
2504 2504
     $failed_posts = count($results['posts']['failure']);
2505 2505
     $message = t(
2506
-      'Successfully imported @post_count posts in @topic_count topics ' .
2507
-      '(@skipped topics either had no replies or all replies were already imported, ' .
2508
-      '@duplicates posts were skipped as already imported, ' .
2509
-      '@empty_posts had no content, ' .
2510
-      'and @error_posts encountered errors during import)',
2511
-      array(
2506
+        'Successfully imported @post_count posts in @topic_count topics ' .
2507
+        '(@skipped topics either had no replies or all replies were already imported, ' .
2508
+        '@duplicates posts were skipped as already imported, ' .
2509
+        '@empty_posts had no content, ' .
2510
+        'and @error_posts encountered errors during import)',
2511
+        array(
2512 2512
         '@post_count' => $posts_imported,
2513 2513
         '@topic_count' => $topic_count,
2514 2514
         '@skipped' => $topics_skipped,
2515 2515
         '@duplicates' => $duplicates,
2516 2516
         '@empty_posts' => $empty_posts,
2517 2517
         '@error_posts' => $failed_posts,
2518
-      )
2518
+        )
2519 2519
     );
2520 2520
     watchdog('boincimport',
2521
-      $message,
2522
-      array(), WATCHDOG_INFO
2521
+        $message,
2522
+        array(), WATCHDOG_INFO
2523 2523
     ); 
2524 2524
     // Set the post import successful flag in the variable table
2525 2525
     variable_set('boincimport_import_post_successful', '1');
2526 2526
     $_SESSION['boincimport_stage_selected'] = 'team forums';
2527
-  }
2528
-  else {
2527
+    }
2528
+    else {
2529 2529
     // An error occurred.
2530 2530
     // $operations contains the operations that remained unprocessed.
2531 2531
     $error_operation = reset($operations);
2532 2532
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
2533
-  }
2534
-  drupal_set_message($message);
2533
+    }
2534
+    drupal_set_message($message);
2535 2535
   
2536
-  // Release the lock on the import process
2537
-  variable_del('boincimport_process_locked');
2538
-  drupal_goto('admin/boinc/import/process');
2536
+    // Release the lock on the import process
2537
+    variable_del('boincimport_process_locked');
2538
+    drupal_goto('admin/boinc/import/process');
2539 2539
 }
2540 2540
 
2541 2541
 
@@ -2548,97 +2548,97 @@  discard block
 block discarded – undo
2548 2548
  */
2549 2549
 function boincimport_team_forums() {
2550 2550
   
2551
-  // Check whether team forums have been successfully imported already
2552
-  if (variable_get('boincimport_import_team_forum_successful', 0)) {
2551
+    // Check whether team forums have been successfully imported already
2552
+    if (variable_get('boincimport_import_team_forum_successful', 0)) {
2553 2553
     drupal_set_message(t('Team forum import has already run successfully'), 'warning');
2554 2554
     watchdog(
2555
-      'boincimport', 'Team forum import has already run successfully',
2556
-      array(), WATCHDOG_WARNING
2555
+        'boincimport', 'Team forum import has already run successfully',
2556
+        array(), WATCHDOG_WARNING
2557 2557
     );
2558
-  }
2558
+    }
2559 2559
 
2560
-  if (!variable_get('boincimport_import_team_forum_started', 0)) {
2560
+    if (!variable_get('boincimport_import_team_forum_started', 0)) {
2561 2561
     // Could prepare database tables, if new fields are necessary, etc.
2562 2562
     variable_set('boincimport_import_team_forum_started', 1);
2563
-  }
2563
+    }
2564 2564
   
2565
-  $pre = variable_get('boincimport_table_prefix', '');
2565
+    $pre = variable_get('boincimport_table_prefix', '');
2566 2566
 
2567
-  // Get team forums from BOINC database
2568
-  db_set_active('boinc_rw');
2569
-  $boincteam_forums = db_query('
2567
+    // Get team forums from BOINC database
2568
+    db_set_active('boinc_rw');
2569
+    $boincteam_forums = db_query('
2570 2570
     SELECT id, title, description, category, timestamp, post_min_interval,
2571 2571
       post_min_total_credit, post_min_expavg_credit
2572 2572
     FROM %sforum
2573 2573
     WHERE parent_type = 1
2574 2574
     ORDER BY id ASC',
2575 2575
     $pre
2576
-  );
2577
-  $team_forum_count = mysqli_num_rows($boincteam_forums);
2578
-  db_set_active('default');
2576
+    );
2577
+    $team_forum_count = mysqli_num_rows($boincteam_forums);
2578
+    db_set_active('default');
2579 2579
 
2580
-  if (!$team_forum_count) {
2580
+    if (!$team_forum_count) {
2581 2581
     drupal_set_message(
2582
-      t('There were no team forums found: Aborting script'), 'warning'
2582
+        t('There were no team forums found: Aborting script'), 'warning'
2583 2583
     );
2584 2584
     watchdog('boincimport',
2585
-      'There were no team forums found: Aborting script', array(), WATCHDOG_WARNING
2585
+        'There were no team forums found: Aborting script', array(), WATCHDOG_WARNING
2586 2586
     );
2587 2587
     // Release the lock on the import process
2588 2588
     variable_del('boincimport_process_locked');
2589 2589
     return t('There were no BLAH found: Aborting script.');
2590
-  }
2590
+    }
2591 2591
 
2592
-  watchdog('boincimport',
2592
+    watchdog('boincimport',
2593 2593
     'Found %count team forums: Beginning Import',
2594 2594
     array('%count' => $team_forum_count), WATCHDOG_INFO
2595
-  );
2595
+    );
2596 2596
   
2597
-  $operations = array();
2598
-  $existing_team_forums = array();
2599
-  $duplicates = array();
2597
+    $operations = array();
2598
+    $existing_team_forums = array();
2599
+    $duplicates = array();
2600 2600
   
2601
-  // Get the list of team forums already in Drupal to be sure we're not
2602
-  // importing any twice
2603
-  $result = db_query('
2601
+    // Get the list of team forums already in Drupal to be sure we're not
2602
+    // importing any twice
2603
+    $result = db_query('
2604 2604
     SELECT nid, boinc_id FROM {boincteam_forum}'
2605
-  );
2606
-  while ($row = db_fetch_object($result)) {
2605
+    );
2606
+    while ($row = db_fetch_object($result)) {
2607 2607
     $existing_team_forums[$row->boinc_id] = $row->nid;
2608
-  }
2608
+    }
2609 2609
   
2610
-  // Create batches to process
2611
-  while ($boincteam_forum = db_fetch_object($boincteam_forums)) {
2612
-     if (isset($existing_team_forums[$boincteam_forum->id])) {
2613
-      // This team has already been imported
2614
-      $duplicates[] = $boincteam_forum->id;
2610
+    // Create batches to process
2611
+    while ($boincteam_forum = db_fetch_object($boincteam_forums)) {
2612
+        if (isset($existing_team_forums[$boincteam_forum->id])) {
2613
+        // This team has already been imported
2614
+        $duplicates[] = $boincteam_forum->id;
2615 2615
     }
2616 2616
     else {
2617
-      $operations[] = array(
2617
+        $operations[] = array(
2618 2618
         'boincimport_team_forums_op', array(
2619
-          $boincteam_forum
2619
+            $boincteam_forum
2620 2620
         )
2621
-      );
2621
+        );
2622
+    }
2622 2623
     }
2623
-  }
2624 2624
   
2625
-  if ($duplicates) {
2625
+    if ($duplicates) {
2626 2626
     drupal_set_message(t(
2627
-      'Skipped @count team forums that were already imported',
2628
-      array('@count' => count($duplicates))
2627
+        'Skipped @count team forums that were already imported',
2628
+        array('@count' => count($duplicates))
2629 2629
     ));
2630
-  }
2630
+    }
2631 2631
   
2632
-  $batch = array(
2632
+    $batch = array(
2633 2633
     'operations' => $operations,
2634 2634
     'finished' => 'boincimport_team_forums_finished',
2635 2635
     'title' => t('Importing team forums'),
2636 2636
     'init_message' => t('Beginning team forum import...'),
2637 2637
     'progress_message' => t('Processed @current out of @total team forums.'),
2638 2638
     'error_message' => t('Team forum import has encountered an error.'),
2639
-  );
2639
+    );
2640 2640
   
2641
-  batch_set($batch);
2641
+    batch_set($batch);
2642 2642
 }
2643 2643
 
2644 2644
 /**
@@ -2648,15 +2648,15 @@  discard block
 block discarded – undo
2648 2648
  */
2649 2649
 function boincimport_team_forums_op($boincteam_forum, &$context) {
2650 2650
   
2651
-  $input_format = variable_get('boincimport_input_format', 0);
2651
+    $input_format = variable_get('boincimport_input_format', 0);
2652 2652
   
2653
-  // Set term parameters for forums
2654
-  $forum_id = $boincteam_forum->id;
2655
-  $team_id = boincteam_lookup_nid($boincteam_forum->category);
2656
-  $name = $boincteam_forum->title;
2657
-  $description = strip_tags($boincteam_forum->description);
2653
+    // Set term parameters for forums
2654
+    $forum_id = $boincteam_forum->id;
2655
+    $team_id = boincteam_lookup_nid($boincteam_forum->category);
2656
+    $name = $boincteam_forum->title;
2657
+    $description = strip_tags($boincteam_forum->description);
2658 2658
   
2659
-  $success = db_query("
2659
+    $success = db_query("
2660 2660
     INSERT INTO {boincteam_forum} SET 
2661 2661
       boinc_id = %d,
2662 2662
       nid = %d,
@@ -2672,67 +2672,67 @@  discard block
 block discarded – undo
2672 2672
     time(), 0, $boincteam_forum->post_min_interval, 
2673 2673
     $boincteam_forum->post_min_total_credit,
2674 2674
     $boincteam_forum->post_min_expavg_credit
2675
-  );
2675
+    );
2676 2676
   
2677
-  $message = '';
2678
-  if ($success) {
2677
+    $message = '';
2678
+    if ($success) {
2679 2679
     // Store some result for post-processing in the finished callback.
2680 2680
     $context['results']['success'][] = $forum_id;
2681 2681
     $message = "Successfully imported team forum {$forum_id}";
2682
-  }
2683
-  else {
2682
+    }
2683
+    else {
2684 2684
     $context['results']['failure'][] = $forum_id;
2685 2685
     $message = "Failed to import team forum {$forum_id}!";
2686 2686
     watchdog('boincimport',
2687
-      'Failed to import team forum @id!',
2688
-      array('@id' => $forum_id), WATCHDOG_WARNING
2687
+        'Failed to import team forum @id!',
2688
+        array('@id' => $forum_id), WATCHDOG_WARNING
2689 2689
     ); 
2690
-  }
2690
+    }
2691 2691
   
2692
-  // Update our progress information.
2693
-  $context['sandbox']['progress']++;
2694
-  $context['sandbox']['current_forum'] = $forum_id;
2695
-  $context['message'] = $message;
2692
+    // Update our progress information.
2693
+    $context['sandbox']['progress']++;
2694
+    $context['sandbox']['current_forum'] = $forum_id;
2695
+    $context['message'] = $message;
2696 2696
 
2697
-  // Update the progress for the batch engine
2698
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2697
+    // Update the progress for the batch engine
2698
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2699 2699
     $context['finished'] = 1;
2700
-  }
2701
-  else {
2700
+    }
2701
+    else {
2702 2702
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2703
-  }
2703
+    }
2704 2704
 }
2705 2705
 
2706 2706
 /**
2707 2707
  * Batch 'finished' callback
2708 2708
  */
2709 2709
 function boincimport_team_forums_finished($success, $results, $operations) {
2710
-  if ($success) {
2710
+    if ($success) {
2711 2711
     // Let's count our successes
2712 2712
     $total_imported = count($results['success']);
2713 2713
     $message = t(
2714
-      'Successfully imported @count team forums',
2715
-      array('@count' => $total_imported)
2714
+        'Successfully imported @count team forums',
2715
+        array('@count' => $total_imported)
2716 2716
     );
2717 2717
     watchdog('boincimport',
2718
-      'Successfully imported @count team forums.',
2719
-      array('@count' => $total_imported), WATCHDOG_INFO
2718
+        'Successfully imported @count team forums.',
2719
+        array('@count' => $total_imported), WATCHDOG_INFO
2720 2720
     ); 
2721 2721
     // Set the team forum import successful flag in the variable table
2722 2722
     variable_set('boincimport_import_team_forum_successful', '1');
2723 2723
     $_SESSION['boincimport_stage_selected'] = 'team topics';
2724
-  }
2725
-  else {
2724
+    }
2725
+    else {
2726 2726
     // An error occurred.
2727 2727
     // $operations contains the operations that remained unprocessed.
2728 2728
     $error_operation = reset($operations);
2729 2729
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
2730
-  }
2731
-  drupal_set_message($message);
2730
+    }
2731
+    drupal_set_message($message);
2732 2732
   
2733
-  // Release the lock on the import process
2734
-  variable_del('boincimport_process_locked');
2735
-  drupal_goto('admin/boinc/import/process');
2733
+    // Release the lock on the import process
2734
+    variable_del('boincimport_process_locked');
2735
+    drupal_goto('admin/boinc/import/process');
2736 2736
 }
2737 2737
 
2738 2738
 
@@ -2745,25 +2745,25 @@  discard block
 block discarded – undo
2745 2745
  */
2746 2746
 function boincimport_team_forum_topics() {
2747 2747
   
2748
-  // Check whether team forum topics have been successfully imported already
2749
-  if (variable_get('boincimport_import_team_topic_successful', 0)) {
2748
+    // Check whether team forum topics have been successfully imported already
2749
+    if (variable_get('boincimport_import_team_topic_successful', 0)) {
2750 2750
     drupal_set_message(t('Team topic import has already run successfully'), 'warning');
2751 2751
     watchdog(
2752
-      'boincimport', 'Team topic import has already run successfully',
2753
-      array(), WATCHDOG_WARNING
2752
+        'boincimport', 'Team topic import has already run successfully',
2753
+        array(), WATCHDOG_WARNING
2754 2754
     );
2755
-  }
2755
+    }
2756 2756
 
2757
-  if (!variable_get('boincimport_import_team_topic_started', 0)) {
2757
+    if (!variable_get('boincimport_import_team_topic_started', 0)) {
2758 2758
     // Could prepare database tables, if new fields are necessary, etc.
2759 2759
     variable_set('boincimport_import_team_topic_started', 1);
2760
-  }
2760
+    }
2761 2761
   
2762
-  $pre = variable_get('boincimport_table_prefix', '');
2762
+    $pre = variable_get('boincimport_table_prefix', '');
2763 2763
 
2764
-  // Get all team topics to import from BOINC
2765
-  db_set_active('boinc_rw');
2766
-  $boincteam_topics = db_query('
2764
+    // Get all team topics to import from BOINC
2765
+    db_set_active('boinc_rw');
2766
+    $boincteam_topics = db_query('
2767 2767
     SELECT DISTINCT t.id, t.title, t.owner, t.forum, t.locked, t.hidden,
2768 2768
       t.sticky, t.timestamp, t.create_time
2769 2769
     FROM %sthread t
@@ -2772,78 +2772,78 @@  discard block
 block discarded – undo
2772 2772
     WHERE f.parent_type = 1
2773 2773
     ORDER BY id',
2774 2774
     $pre, $pre, $pre
2775
-  );
2776
-  $boincteam_topic_count = mysqli_num_rows($boincteam_topics);
2777
-  $total_team_topic_count = db_result(db_query('
2775
+    );
2776
+    $boincteam_topic_count = mysqli_num_rows($boincteam_topics);
2777
+    $total_team_topic_count = db_result(db_query('
2778 2778
     SELECT COUNT(*) FROM %sthread t
2779 2779
     JOIN %sforum f ON f.id = t.forum
2780 2780
     WHERE f.parent_type = 1', $pre, $pre
2781
-  ));
2782
-  $empty_topic_count = $total_team_topic_count - $boincteam_topic_count;
2783
-  db_set_active('default');
2781
+    ));
2782
+    $empty_topic_count = $total_team_topic_count - $boincteam_topic_count;
2783
+    db_set_active('default');
2784 2784
 
2785
-  if (!$boincteam_topic_count) {
2785
+    if (!$boincteam_topic_count) {
2786 2786
     drupal_set_message(
2787
-      t('There were no team topics found: Aborting script'), 'warning'
2787
+        t('There were no team topics found: Aborting script'), 'warning'
2788 2788
     );
2789 2789
     watchdog('boincimport',
2790
-      'There were no team topics found: Aborting script', array(), WATCHDOG_WARNING
2790
+        'There were no team topics found: Aborting script', array(), WATCHDOG_WARNING
2791 2791
     );
2792 2792
     // Release the lock on the import process
2793 2793
     variable_del('boincimport_process_locked');
2794 2794
     return t('There were no team topics found: Aborting script.');
2795
-  }
2795
+    }
2796 2796
 
2797
-  watchdog('boincimport',
2797
+    watchdog('boincimport',
2798 2798
     'Found %count team topics: Beginning Import',
2799 2799
     array('%count' => $boincteam_topic_count), WATCHDOG_INFO
2800
-  );
2800
+    );
2801 2801
   
2802
-  $operations = array();
2803
-  $existing_team_topics = array();
2804
-  $duplicates = array();
2802
+    $operations = array();
2803
+    $existing_team_topics = array();
2804
+    $duplicates = array();
2805 2805
   
2806
-  // Get the list of team topics already in Drupal to be sure we're not
2807
-  // importing any twice
2808
-  $result = db_query('
2806
+    // Get the list of team topics already in Drupal to be sure we're not
2807
+    // importing any twice
2808
+    $result = db_query('
2809 2809
     SELECT nid, topic_id FROM {boincimport_temp_topic}'
2810
-  );
2811
-  while ($row = db_fetch_object($result)) {
2810
+    );
2811
+    while ($row = db_fetch_object($result)) {
2812 2812
     $existing_team_topics[$row->topic_id] = $row->nid;
2813
-  }
2813
+    }
2814 2814
   
2815
-  // Create batches to process
2816
-  while ($boincteam_topic = db_fetch_object($boincteam_topics)) {
2817
-     if (isset($existing_team_topics[$boincteam_topic->id])) {
2818
-      // This team topic has already been imported
2819
-      $duplicates[] = $boincteam_topic->id;
2815
+    // Create batches to process
2816
+    while ($boincteam_topic = db_fetch_object($boincteam_topics)) {
2817
+        if (isset($existing_team_topics[$boincteam_topic->id])) {
2818
+        // This team topic has already been imported
2819
+        $duplicates[] = $boincteam_topic->id;
2820 2820
     }
2821 2821
     else {
2822
-      $operations[] = array(
2822
+        $operations[] = array(
2823 2823
         'boincimport_team_topics_op', array(
2824
-          $boincteam_topic
2824
+            $boincteam_topic
2825 2825
         )
2826
-      );
2826
+        );
2827
+    }
2827 2828
     }
2828
-  }
2829 2829
   
2830
-  if ($duplicates) {
2830
+    if ($duplicates) {
2831 2831
     drupal_set_message(t(
2832
-      'Skipped @count team topics that were already imported',
2833
-      array('@count' => count($duplicates))
2832
+        'Skipped @count team topics that were already imported',
2833
+        array('@count' => count($duplicates))
2834 2834
     ));
2835
-  }
2835
+    }
2836 2836
   
2837
-  $batch = array(
2837
+    $batch = array(
2838 2838
     'operations' => $operations,
2839 2839
     'finished' => 'boincimport_team_topics_finished',
2840 2840
     'title' => t('Importing team topics'),
2841 2841
     'init_message' => t('Beginning team topic import...'),
2842 2842
     'progress_message' => t('Processed @current out of @total team topics.'),
2843 2843
     'error_message' => t('Team topic import has encountered an error.'),
2844
-  );
2844
+    );
2845 2845
   
2846
-  batch_set($batch);
2846
+    batch_set($batch);
2847 2847
 }
2848 2848
 
2849 2849
 /**
@@ -2852,21 +2852,21 @@  discard block
 block discarded – undo
2852 2852
  */
2853 2853
 function boincimport_team_topics_op($topic, &$context) {
2854 2854
   
2855
-  $input_format = variable_get('boincimport_input_format', 0);
2856
-  $success = FALSE;
2857
-  $missing_parent = array();
2858
-  $empty_topics = array();
2855
+    $input_format = variable_get('boincimport_input_format', 0);
2856
+    $success = FALSE;
2857
+    $missing_parent = array();
2858
+    $empty_topics = array();
2859 2859
   
2860
-  // Verify that the team forum container has been imported
2861
-  $team_forum_id = db_result(db_query("
2860
+    // Verify that the team forum container has been imported
2861
+    $team_forum_id = db_result(db_query("
2862 2862
     SELECT tfid FROM {boincteam_forum}
2863 2863
     WHERE boinc_id = %d",
2864 2864
     $topic->forum
2865
-  ));
2866
-  if (!$team_forum_id) {
2865
+    ));
2866
+    if (!$team_forum_id) {
2867 2867
     $missing_parent[] = $topic->id;
2868
-  }
2869
-  else {
2868
+    }
2869
+    else {
2870 2870
     // Get the content of the post that started the topic
2871 2871
     db_set_active('boinc_rw');
2872 2872
     $query = db_query('
@@ -2875,36 +2875,36 @@  discard block
 block discarded – undo
2875 2875
       WHERE thread = %d
2876 2876
       ORDER BY timestamp ASC
2877 2877
       LIMIT 1',
2878
-      $pre, $topic->id);
2878
+        $pre, $topic->id);
2879 2879
     db_set_active('default');
2880 2880
       
2881 2881
     // Skip this topic if there are no posts
2882 2882
     if (!$post = db_fetch_object($query)) {
2883
-      // Empty topics should have already been filtered out of the import, so
2884
-      // consider this an error condition
2885
-      $empty_topics[] = $topic->id;
2883
+        // Empty topics should have already been filtered out of the import, so
2884
+        // consider this an error condition
2885
+        $empty_topics[] = $topic->id;
2886 2886
     }
2887 2887
     else {
2888
-      // Get the user ID along with other data to define the topic
2889
-      $uid = boincuser_lookup_uid($topic->owner);
2890
-       if (!$topic->owner) {
2888
+        // Get the user ID along with other data to define the topic
2889
+        $uid = boincuser_lookup_uid($topic->owner);
2890
+        if (!$topic->owner) {
2891 2891
         $uid = 0;
2892
-      }
2892
+        }
2893 2893
       
2894
-      $node_type = 'team_forum';
2895
-      $promote = 0;
2896
-      $comment = ($topic->locked) ? 1 : 2;
2894
+        $node_type = 'team_forum';
2895
+        $promote = 0;
2896
+        $comment = ($topic->locked) ? 1 : 2;
2897 2897
       
2898
-      $post->content = _boincimport_strip_bbcode($post->content);
2899
-      $post->content = _boincimport_text_sanitize($post->content);
2900
-      $teaser = node_teaser($post->content);
2898
+        $post->content = _boincimport_strip_bbcode($post->content);
2899
+        $post->content = _boincimport_text_sanitize($post->content);
2900
+        $teaser = node_teaser($post->content);
2901 2901
       
2902
-      if ($topic->timestamp < $topic->create_time) {
2902
+        if ($topic->timestamp < $topic->create_time) {
2903 2903
         $topic->timestamp = $topic->create_time;
2904
-      }
2904
+        }
2905 2905
 
2906
-      // Construct the thread as a team_forum topic node
2907
-      $node = array(
2906
+        // Construct the thread as a team_forum topic node
2907
+        $node = array(
2908 2908
         'type' => $node_type,
2909 2909
         'title' => $topic->title,
2910 2910
         'uid' => $uid,
@@ -2919,89 +2919,89 @@  discard block
 block discarded – undo
2919 2919
         'format' => $input_format,
2920 2920
         'teaser' => $teaser,
2921 2921
         'tfid' => $team_forum_id,
2922
-      );
2922
+        );
2923 2923
       
2924
-      // Save the team topic node
2925
-      $node = (object) $node; // node_save requires an object form
2926
-      node_save($node);
2924
+        // Save the team topic node
2925
+        $node = (object) $node; // node_save requires an object form
2926
+        node_save($node);
2927 2927
 
2928
-      if ($node->nid) {
2928
+        if ($node->nid) {
2929 2929
         db_query('
2930 2930
           INSERT INTO {boincimport_temp_topic} (topic_id, post_id, nid)
2931 2931
           VALUES (%d, %d, %d)',
2932
-          $topic->id, $post->id, $node->nid
2932
+            $topic->id, $post->id, $node->nid
2933 2933
         );
2934 2934
         // Hack to keep the topics in correct order
2935 2935
         db_query('
2936 2936
           UPDATE {node_comment_statistics}
2937 2937
           SET last_comment_timestamp = %d
2938 2938
           WHERE nid = %d',
2939
-          $node->created, $node->nid
2939
+            $node->created, $node->nid
2940 2940
         );
2941 2941
         $success = TRUE;
2942
-      }
2942
+        }
2943
+    }
2943 2944
     }
2944
-  }
2945 2945
   
2946
-  $message = '';
2947
-  if ($success) {
2946
+    $message = '';
2947
+    if ($success) {
2948 2948
     // Store some result for post-processing in the finished callback.
2949 2949
     $context['results']['success'][] = $topic->id;
2950 2950
     $message = "Successfully imported team topic {$topic->id}";
2951
-  }
2952
-  else {
2951
+    }
2952
+    else {
2953 2953
     $context['results']['failure'][] = $topic->id;
2954 2954
     $message = "Failed to import team topic {$topic->id}!";
2955 2955
     watchdog('boincimport',
2956
-      'Failed to import team topic @id!',
2957
-      array('@id' => $topic->id), WATCHDOG_WARNING
2956
+        'Failed to import team topic @id!',
2957
+        array('@id' => $topic->id), WATCHDOG_WARNING
2958 2958
     ); 
2959
-  }
2959
+    }
2960 2960
   
2961
-  // Update our progress information.
2962
-  $context['sandbox']['progress']++;
2963
-  $context['sandbox']['current_topic'] = $topic->id;
2964
-  $context['message'] = $message;
2961
+    // Update our progress information.
2962
+    $context['sandbox']['progress']++;
2963
+    $context['sandbox']['current_topic'] = $topic->id;
2964
+    $context['message'] = $message;
2965 2965
 
2966
-  // Update the progress for the batch engine
2967
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2966
+    // Update the progress for the batch engine
2967
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
2968 2968
     $context['finished'] = 1;
2969
-  }
2970
-  else {
2969
+    }
2970
+    else {
2971 2971
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
2972
-  }
2972
+    }
2973 2973
 }
2974 2974
 
2975 2975
 /**
2976 2976
  * Batch 'finished' callback
2977 2977
  */
2978 2978
 function boincimport_team_topics_finished($success, $results, $operations) {
2979
-  if ($success) {
2979
+    if ($success) {
2980 2980
     // Let's count our successes
2981 2981
     $total_imported = count($results['success']);
2982 2982
     $message = t(
2983
-      'Successfully imported @count team topics',
2984
-      array('@count' => $total_imported)
2983
+        'Successfully imported @count team topics',
2984
+        array('@count' => $total_imported)
2985 2985
     );
2986 2986
     watchdog('boincimport',
2987
-      'Successfully imported @count team topics.',
2988
-      array('@count' => $total_imported), WATCHDOG_INFO
2987
+        'Successfully imported @count team topics.',
2988
+        array('@count' => $total_imported), WATCHDOG_INFO
2989 2989
     ); 
2990 2990
     // Set the BLAH import successful flag in the variable table
2991 2991
     variable_set('boincimport_import_team_topic_successful', '1');
2992 2992
     $_SESSION['boincimport_stage_selected'] = 'team posts';
2993
-  }
2994
-  else {
2993
+    }
2994
+    else {
2995 2995
     // An error occurred.
2996 2996
     // $operations contains the operations that remained unprocessed.
2997 2997
     $error_operation = reset($operations);
2998 2998
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
2999
-  }
3000
-  drupal_set_message($message);
2999
+    }
3000
+    drupal_set_message($message);
3001 3001
   
3002
-  // Release the lock on the import process
3003
-  variable_del('boincimport_process_locked');
3004
-  drupal_goto('admin/boinc/import/process');
3002
+    // Release the lock on the import process
3003
+    variable_del('boincimport_process_locked');
3004
+    drupal_goto('admin/boinc/import/process');
3005 3005
 }
3006 3006
 
3007 3007
 
@@ -3014,81 +3014,81 @@  discard block
 block discarded – undo
3014 3014
  */
3015 3015
 function boincimport_team_forum_posts() {
3016 3016
   
3017
-  // Check whether team forum posts have been successfully imported already
3018
-  if (variable_get('boincimport_import_team_post_successful', 0)) {
3017
+    // Check whether team forum posts have been successfully imported already
3018
+    if (variable_get('boincimport_import_team_post_successful', 0)) {
3019 3019
     drupal_set_message(t('Team forum post import has already run successfully'), 'warning');
3020 3020
     watchdog(
3021
-      'boincimport', 'Team forum post import has already run successfully',
3022
-      array(), WATCHDOG_WARNING
3021
+        'boincimport', 'Team forum post import has already run successfully',
3022
+        array(), WATCHDOG_WARNING
3023 3023
     );
3024 3024
     // Release the lock on the import process
3025 3025
     variable_del('boincimport_process_locked');
3026 3026
     return;
3027
-  }
3027
+    }
3028 3028
 
3029
-  if (!variable_get('boincimport_import_team_post_started', 0)) {
3029
+    if (!variable_get('boincimport_import_team_post_started', 0)) {
3030 3030
     // Could prepare database tables, if new fields are necessary, etc.
3031 3031
     variable_set('boincimport_import_team_post_started', 1);
3032
-  }
3032
+    }
3033 3033
   
3034
-  $pre = variable_get('boincimport_table_prefix', '');
3034
+    $pre = variable_get('boincimport_table_prefix', '');
3035 3035
 
3036
-  // Get the BOINC threads and get a count of team posts to import
3037
-  db_set_active('boinc_rw');
3038
-  $team_topic_ids = db_query('
3036
+    // Get the BOINC threads and get a count of team posts to import
3037
+    db_set_active('boinc_rw');
3038
+    $team_topic_ids = db_query('
3039 3039
     SELECT DISTINCT t.id FROM %sthread t
3040 3040
     JOIN %sforum f ON f.id = t.forum
3041 3041
     JOIN %spost p ON p.thread = t.id
3042 3042
     WHERE f.parent_type = 1
3043 3043
     ORDER BY id', $pre, $pre
3044
-  );
3045
-  $team_topic_count = db_result(db_query("
3044
+    );
3045
+    $team_topic_count = db_result(db_query("
3046 3046
     SELECT COUNT(DISTINCT t.id) FROM %sthread t
3047 3047
     JOIN %sforum f ON f.id = t.forum
3048 3048
     JOIN %spost p ON p.thread = t.id
3049 3049
     WHERE f.parent_type = 1", $pre, $pre, $pre
3050
-  ));
3051
-  $total_team_post_count = db_result(db_query("
3050
+    ));
3051
+    $total_team_post_count = db_result(db_query("
3052 3052
     SELECT COUNT(p.id) FROM %spost p
3053 3053
     JOIN %sthread t ON t.id = p.thread
3054 3054
     JOIN %sforum f ON f.id = t.forum
3055 3055
     WHERE f.parent_type = 1", $pre, $pre, $pre
3056
-  ));
3057
-  $team_post_count = $total_team_post_count - $team_topic_count;
3058
-  db_set_active('default');
3056
+    ));
3057
+    $team_post_count = $total_team_post_count - $team_topic_count;
3058
+    db_set_active('default');
3059 3059
 
3060
-  if ($team_post_count <= 0) {
3060
+    if ($team_post_count <= 0) {
3061 3061
     drupal_set_message(
3062
-      t('There were no team posts found: Aborting script'), 'warning'
3062
+        t('There were no team posts found: Aborting script'), 'warning'
3063 3063
     );
3064 3064
     watchdog('boincimport',
3065
-      'There were no team posts found: Aborting script', array(), WATCHDOG_WARNING
3065
+        'There were no team posts found: Aborting script', array(), WATCHDOG_WARNING
3066 3066
     );
3067 3067
     // Release the lock on the import process
3068 3068
     variable_del('boincimport_process_locked');
3069 3069
     return t('There were no posts found: Aborting script.');
3070
-  }
3070
+    }
3071 3071
 
3072
-  watchdog('boincimport',
3072
+    watchdog('boincimport',
3073 3073
     'Found %count team posts: Beginning Import',
3074 3074
     array('%count' => $team_post_count), WATCHDOG_INFO
3075
-  );
3075
+    );
3076 3076
   
3077
-  $operations = array();
3078
-  $existing_posts = array();
3079
-  $duplicates = array();
3077
+    $operations = array();
3078
+    $existing_posts = array();
3079
+    $duplicates = array();
3080 3080
   
3081
-  // Get the list of team posts already in Drupal to be sure we're not
3082
-  // importing any twice
3083
-  $result = db_query('
3081
+    // Get the list of team posts already in Drupal to be sure we're not
3082
+    // importing any twice
3083
+    $result = db_query('
3084 3084
     SELECT cid, post_id FROM {boincimport_temp_post}'
3085
-  );
3086
-  while ($row = db_fetch_object($result)) {
3085
+    );
3086
+    while ($row = db_fetch_object($result)) {
3087 3087
     $existing_posts[$row->post_id] = $row->cid;
3088
-  }
3088
+    }
3089 3089
   
3090
-  // Create batches to process
3091
-  while ($boincteam_topic = db_fetch_object($team_topic_ids)) {
3090
+    // Create batches to process
3091
+    while ($boincteam_topic = db_fetch_object($team_topic_ids)) {
3092 3092
     
3093 3093
     db_set_active('boinc_rw');
3094 3094
     $boincteam_posts = db_query('
@@ -3096,7 +3096,7 @@  discard block
 block discarded – undo
3096 3096
       FROM %spost
3097 3097
       WHERE thread = %d
3098 3098
       ORDER BY timestamp ASC',
3099
-      $pre, $boincteam_topic->id
3099
+        $pre, $boincteam_topic->id
3100 3100
     );
3101 3101
     db_set_active('default');
3102 3102
     
@@ -3104,43 +3104,43 @@  discard block
 block discarded – undo
3104 3104
 
3105 3105
     while ($boincteam_post = db_fetch_object($boincteam_posts)) {
3106 3106
       
3107
-      // Skip the first post as it has already been imported as a topic
3108
-      if ($first_post) {
3107
+        // Skip the first post as it has already been imported as a topic
3108
+        if ($first_post) {
3109 3109
         $first_post = false;
3110 3110
         continue;
3111
-      }
3111
+        }
3112 3112
 
3113
-      if (isset($existing_posts[$boincteam_post->id])) {
3113
+        if (isset($existing_posts[$boincteam_post->id])) {
3114 3114
         // This post has already been imported
3115 3115
         $duplicates[] = $boincteam_post->id;
3116
-      }
3117
-      else {
3116
+        }
3117
+        else {
3118 3118
         $operations[] = array(
3119
-          'boincimport_team_posts_op', array(
3119
+            'boincimport_team_posts_op', array(
3120 3120
             $boincteam_post
3121
-          )
3121
+            )
3122 3122
         );
3123
-      }
3123
+        }
3124
+    }
3124 3125
     }
3125
-  }
3126 3126
   
3127
-  if ($duplicates) {
3127
+    if ($duplicates) {
3128 3128
     drupal_set_message(t(
3129
-      'Skipped @count team posts that were already imported',
3130
-      array('@count' => count($duplicates))
3129
+        'Skipped @count team posts that were already imported',
3130
+        array('@count' => count($duplicates))
3131 3131
     ));
3132
-  }
3132
+    }
3133 3133
   
3134
-  $batch = array(
3134
+    $batch = array(
3135 3135
     'operations' => $operations,
3136 3136
     'finished' => 'boincimport_team_posts_finished',
3137 3137
     'title' => t('Importing team posts'),
3138 3138
     'init_message' => t('Beginning team post import...'),
3139 3139
     'progress_message' => t('Processed @current out of @total team posts.'),
3140 3140
     'error_message' => t('Team post import has encountered an error.'),
3141
-  );
3141
+    );
3142 3142
   
3143
-  batch_set($batch);
3143
+    batch_set($batch);
3144 3144
 }
3145 3145
 
3146 3146
 /**
@@ -3149,11 +3149,11 @@  discard block
 block discarded – undo
3149 3149
  */
3150 3150
 function boincimport_team_posts_op($post, &$context) {
3151 3151
   
3152
-  $input_format = variable_get('boincimport_input_format', 0);
3153
-  $success = FALSE;
3152
+    $input_format = variable_get('boincimport_input_format', 0);
3153
+    $success = FALSE;
3154 3154
   
3155
-  // Make sure the post is valid
3156
-  if ($post->content) {
3155
+    // Make sure the post is valid
3156
+    if ($post->content) {
3157 3157
     
3158 3158
     // Get user, node, and parent IDs for the post and sanitize
3159 3159
     $uid = boincuser_lookup_uid($post->user);
@@ -3162,14 +3162,14 @@  discard block
 block discarded – undo
3162 3162
       FROM {boincimport_temp_topic} btt
3163 3163
       LEFT JOIN {node_revisions} AS nr ON btt.nid = nr.nid
3164 3164
       WHERE btt.topic_id = %d',
3165
-      $post->thread
3165
+        $post->thread
3166 3166
     ));
3167 3167
     $nid = $node->nid;
3168 3168
     $pid = db_result(db_query('
3169 3169
       SELECT cid
3170 3170
       FROM {boincimport_temp_post}
3171 3171
       WHERE post_id = %d',
3172
-      $post->parent_post));
3172
+        $post->parent_post));
3173 3173
     if (is_null($pid)) $pid = 0;
3174 3174
     if (!$uid) $uid = 0;
3175 3175
     
@@ -3180,110 +3180,110 @@  discard block
 block discarded – undo
3180 3180
       SELECT COUNT(*)
3181 3181
       FROM {comments}
3182 3182
       WHERE nid = %d',
3183
-      $nid
3183
+        $nid
3184 3184
     ));
3185 3185
     $post_reply = $pid;
3186 3186
     
3187 3187
     if ($post_reply OR $topic_reply) {
3188
-      // Create a subject for the post from the post content. The body may be in 
3189
-      // any format, so we:
3190
-      //  1) Filter it into HTML
3191
-      //  2) Strip out all HTML tags
3192
-      //  3) Convert entities back to plain-text.
3193
-      // Note: format is checked by check_markup().
3194
-      $subject = truncate_utf8(trim(decode_entities(strip_tags(check_markup($post->content, $input_format)))), 29, TRUE);
3195
-      // Replace "Quote:" with "RE:"
3196
-      $subject = str_replace('Quote:', 'RE: ', $subject);
3197
-      // Fringe cases where the comment body is populated only by HTML tags
3198
-      // will require a default subject...
3199
-      if ($subject === '')
3188
+        // Create a subject for the post from the post content. The body may be in 
3189
+        // any format, so we:
3190
+        //  1) Filter it into HTML
3191
+        //  2) Strip out all HTML tags
3192
+        //  3) Convert entities back to plain-text.
3193
+        // Note: format is checked by check_markup().
3194
+        $subject = truncate_utf8(trim(decode_entities(strip_tags(check_markup($post->content, $input_format)))), 29, TRUE);
3195
+        // Replace "Quote:" with "RE:"
3196
+        $subject = str_replace('Quote:', 'RE: ', $subject);
3197
+        // Fringe cases where the comment body is populated only by HTML tags
3198
+        // will require a default subject...
3199
+        if ($subject === '')
3200 3200
         $subject = "RE: {$node->title}";
3201 3201
     } else {
3202
-      // This is the first post in the topic
3203
-      $subject = $node->title;
3202
+        // This is the first post in the topic
3203
+        $subject = $node->title;
3204 3204
     }
3205 3205
     
3206 3206
     // Construct the post as a Drupal comment
3207 3207
     $comment = array(
3208
-      'pid' => $pid,
3209
-      'nid' => $nid,
3210
-      'uid' => $uid,
3211
-      'subject' => $subject,
3212
-      'comment' => $post->content,
3213
-      'timestamp' => $post->timestamp,
3214
-      'status' => $post->hidden,
3215
-      'format' => $input_format
3208
+        'pid' => $pid,
3209
+        'nid' => $nid,
3210
+        'uid' => $uid,
3211
+        'subject' => $subject,
3212
+        'comment' => $post->content,
3213
+        'timestamp' => $post->timestamp,
3214
+        'status' => $post->hidden,
3215
+        'format' => $input_format
3216 3216
     );
3217 3217
     
3218 3218
     // Save the comment
3219 3219
     if (boincimport_forum_comment_save($comment)) {
3220
-      $success = db_query('
3220
+        $success = db_query('
3221 3221
         INSERT INTO {boincimport_temp_post} (post_id, cid)
3222 3222
         VALUES (%d, %d)',
3223 3223
         $post->id, $comment['cid']
3224
-      );
3224
+        );
3225
+    }
3225 3226
     }
3226
-  }
3227 3227
   
3228
-  $message = '';
3229
-  if ($success) {
3228
+    $message = '';
3229
+    if ($success) {
3230 3230
     // Store some result for post-processing in the finished callback.
3231 3231
     $context['results']['success'][] = $post->id;
3232 3232
     $message = "Successfully imported team post {$post->id}";
3233
-  }
3234
-  else {
3233
+    }
3234
+    else {
3235 3235
     $context['results']['failure'][] = $post->id;
3236 3236
     $message = "Failed to import team post {$post->id}!";
3237 3237
     watchdog('boincimport',
3238
-      'Failed to import team post @id!',
3239
-      array('@id' => $post->id), WATCHDOG_WARNING
3238
+        'Failed to import team post @id!',
3239
+        array('@id' => $post->id), WATCHDOG_WARNING
3240 3240
     ); 
3241
-  }
3241
+    }
3242 3242
   
3243
-  // Update our progress information.
3244
-  $context['sandbox']['progress']++;
3245
-  $context['sandbox']['current_post'] = $post->id;
3246
-  $context['message'] = $message;
3243
+    // Update our progress information.
3244
+    $context['sandbox']['progress']++;
3245
+    $context['sandbox']['current_post'] = $post->id;
3246
+    $context['message'] = $message;
3247 3247
 
3248
-  // Update the progress for the batch engine
3249
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3248
+    // Update the progress for the batch engine
3249
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3250 3250
     $context['finished'] = 1;
3251
-  }
3252
-  else {
3251
+    }
3252
+    else {
3253 3253
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3254
-  }
3254
+    }
3255 3255
 }
3256 3256
 
3257 3257
 /**
3258 3258
  * Batch 'finished' callback
3259 3259
  */
3260 3260
 function boincimport_team_posts_finished($success, $results, $operations) {
3261
-  if ($success) {
3261
+    if ($success) {
3262 3262
     // Let's count our successes
3263 3263
     $total_imported = count($results['success']);
3264 3264
     $message = t(
3265
-      'Successfully imported @count team posts',
3266
-      array('@count' => $total_imported)
3265
+        'Successfully imported @count team posts',
3266
+        array('@count' => $total_imported)
3267 3267
     );
3268 3268
     watchdog('boincimport',
3269
-      'Successfully imported @count team posts.',
3270
-      array('@count' => $total_imported), WATCHDOG_INFO
3269
+        'Successfully imported @count team posts.',
3270
+        array('@count' => $total_imported), WATCHDOG_INFO
3271 3271
     ); 
3272 3272
     // Set the team post import successful flag in the variable table
3273 3273
     variable_set('boincimport_import_team_post_successful', '1');
3274 3274
     $_SESSION['boincimport_stage_selected'] = 'url';
3275
-  }
3276
-  else {
3275
+    }
3276
+    else {
3277 3277
     // An error occurred.
3278 3278
     // $operations contains the operations that remained unprocessed.
3279 3279
     $error_operation = reset($operations);
3280 3280
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
3281
-  }
3282
-  drupal_set_message($message);
3281
+    }
3282
+    drupal_set_message($message);
3283 3283
   
3284
-  // Release the lock on the import process
3285
-  variable_del('boincimport_process_locked');
3286
-  drupal_goto('admin/boinc/import/process');
3284
+    // Release the lock on the import process
3285
+    variable_del('boincimport_process_locked');
3286
+    drupal_goto('admin/boinc/import/process');
3287 3287
 }
3288 3288
 
3289 3289
 
@@ -3296,71 +3296,71 @@  discard block
 block discarded – undo
3296 3296
  */
3297 3297
 function boincimport_subscriptions() {
3298 3298
   
3299
-  // Check whether subscriptions have been successfully imported already
3300
-  if (variable_get('boincimport_import_subscription_successful', 0)) {
3299
+    // Check whether subscriptions have been successfully imported already
3300
+    if (variable_get('boincimport_import_subscription_successful', 0)) {
3301 3301
     drupal_set_message(t('Subscription import has already run successfully'), 'warning');
3302 3302
     watchdog(
3303
-      'boincimport', 'Subscription import has already run successfully',
3304
-      array(), WATCHDOG_WARNING
3303
+        'boincimport', 'Subscription import has already run successfully',
3304
+        array(), WATCHDOG_WARNING
3305 3305
     );
3306
-  }
3306
+    }
3307 3307
 
3308
-  if (!variable_get('boincimport_import_subscription_started', 0)) {
3308
+    if (!variable_get('boincimport_import_subscription_started', 0)) {
3309 3309
     // Could prepare database tables, if new fields are necessary, etc.
3310 3310
     variable_set('boincimport_import_subscription_started', 1);
3311
-  }
3311
+    }
3312 3312
   
3313
-  $pre = variable_get('boincimport_table_prefix', '');
3313
+    $pre = variable_get('boincimport_table_prefix', '');
3314 3314
 
3315
-  // Get users with subscriptions to import
3316
-  db_set_active('boinc_rw');
3317
-  $users_with_subscriptions = db_query('
3315
+    // Get users with subscriptions to import
3316
+    db_set_active('boinc_rw');
3317
+    $users_with_subscriptions = db_query('
3318 3318
     SELECT DISTINCT userid
3319 3319
     FROM %ssubscriptions
3320 3320
     ORDER BY userid ASC',
3321 3321
     $pre
3322
-  );
3323
-  $user_count = mysqli_num_rows($users_with_subscriptions);
3324
-  db_set_active('default');
3322
+    );
3323
+    $user_count = mysqli_num_rows($users_with_subscriptions);
3324
+    db_set_active('default');
3325 3325
 
3326
-  if (!$user_count) {
3326
+    if (!$user_count) {
3327 3327
     drupal_set_message(
3328
-      t('There were no subscriptions found: Aborting script'), 'warning'
3328
+        t('There were no subscriptions found: Aborting script'), 'warning'
3329 3329
     );
3330 3330
     watchdog('boincimport',
3331
-      'There were no subscriptions found: Aborting script', array(), WATCHDOG_WARNING
3331
+        'There were no subscriptions found: Aborting script', array(), WATCHDOG_WARNING
3332 3332
     );
3333 3333
     // Release the lock on the import process
3334 3334
     variable_del('boincimport_process_locked');
3335 3335
     return t('There were no subscriptions found: Aborting script.');
3336
-  }
3336
+    }
3337 3337
 
3338
-  watchdog('boincimport',
3338
+    watchdog('boincimport',
3339 3339
     'Found %count users with subscriptions: Beginning import',
3340 3340
     array('%count' => $user_count), WATCHDOG_INFO
3341
-  );
3341
+    );
3342 3342
   
3343
-  $operations = array();
3343
+    $operations = array();
3344 3344
   
3345
-  // Create batches to process
3346
-  while ($subscribed_user = db_fetch_object($users_with_subscriptions)) {
3345
+    // Create batches to process
3346
+    while ($subscribed_user = db_fetch_object($users_with_subscriptions)) {
3347 3347
     $operations[] = array(
3348
-      'boincimport_subscriptions_op', array(
3348
+        'boincimport_subscriptions_op', array(
3349 3349
         $subscribed_user->userid
3350
-      )
3350
+        )
3351 3351
     );
3352
-  }
3352
+    }
3353 3353
   
3354
-  $batch = array(
3354
+    $batch = array(
3355 3355
     'operations' => $operations,
3356 3356
     'finished' => 'boincimport_subscriptions_finished',
3357 3357
     'title' => t('Importing subscriptions'),
3358 3358
     'init_message' => t('Beginning subscription import...'),
3359 3359
     'progress_message' => t('Processed @current out of @total subscriptions.'),
3360 3360
     'error_message' => t('Subscription import has encountered an error.'),
3361
-  );
3361
+    );
3362 3362
   
3363
-  batch_set($batch);
3363
+    batch_set($batch);
3364 3364
 }
3365 3365
 
3366 3366
 /**
@@ -3369,72 +3369,72 @@  discard block
 block discarded – undo
3369 3369
  */
3370 3370
 function boincimport_subscriptions_op($boincuser_id, &$context) {
3371 3371
   
3372
-  // Get the drupal user and pull subscriptions
3373
-  $uid = get_drupal_id($boincuser_id);
3374
-  $count = boincuser_pull_subscriptions($uid);
3372
+    // Get the drupal user and pull subscriptions
3373
+    $uid = get_drupal_id($boincuser_id);
3374
+    $count = boincuser_pull_subscriptions($uid);
3375 3375
   
3376
-  $message = '';
3377
-  if ($count) {
3376
+    $message = '';
3377
+    if ($count) {
3378 3378
     // Store some result for post-processing in the finished callback.
3379 3379
     $context['results']['success'][] = $boincuser_id;
3380 3380
     $context['results']['subscriptions'][$boincuser_id] = $count;
3381 3381
     $message = "Successfully imported {$count} subscriptions for user {$boincuser_id}";
3382
-  }
3383
-  else {
3382
+    }
3383
+    else {
3384 3384
     $context['results']['failure'][] = $boincuser_id;
3385 3385
     $message = "Failed to import subscriptions for user {$boincuser_id}!";
3386 3386
     watchdog('boincimport',
3387
-      'Failed to import subscriptions for user @id!',
3388
-      array('@id' => $boincuser_id), WATCHDOG_WARNING
3387
+        'Failed to import subscriptions for user @id!',
3388
+        array('@id' => $boincuser_id), WATCHDOG_WARNING
3389 3389
     ); 
3390
-  }
3390
+    }
3391 3391
   
3392
-  // Update our progress information.
3393
-  $context['sandbox']['progress']++;
3394
-  $context['sandbox']['current_user'] = $boincuser_id;
3395
-  $context['message'] = $message;
3392
+    // Update our progress information.
3393
+    $context['sandbox']['progress']++;
3394
+    $context['sandbox']['current_user'] = $boincuser_id;
3395
+    $context['message'] = $message;
3396 3396
 
3397
-  // Update the progress for the batch engine
3398
-  if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3397
+    // Update the progress for the batch engine
3398
+    if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3399 3399
     $context['finished'] = 1;
3400
-  }
3401
-  else {
3400
+    }
3401
+    else {
3402 3402
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3403
-  }
3403
+    }
3404 3404
 }
3405 3405
 
3406 3406
 /**
3407 3407
  * Batch 'finished' callback
3408 3408
  */
3409 3409
 function boincimport_subscriptions_finished($success, $results, $operations) {
3410
-  if ($success) {
3410
+    if ($success) {
3411 3411
     // Let's count our successes
3412 3412
     $user_count = count($results['success']);
3413 3413
     $subscriptions_imported = array_sum($results['subscriptions']);
3414 3414
     $message = t(
3415
-      'Successfully imported @count subscriptions for @distinct users',
3416
-      array('@count' => $subscriptions_imported, '@distinct' => $user_count)
3415
+        'Successfully imported @count subscriptions for @distinct users',
3416
+        array('@count' => $subscriptions_imported, '@distinct' => $user_count)
3417 3417
     );
3418 3418
     watchdog('boincimport',
3419
-      'Successfully imported @count subscriptions for @distinct users.',
3420
-      array('@count' => $subscriptions_imported, '@distinct' => $user_count),
3421
-      WATCHDOG_INFO
3419
+        'Successfully imported @count subscriptions for @distinct users.',
3420
+        array('@count' => $subscriptions_imported, '@distinct' => $user_count),
3421
+        WATCHDOG_INFO
3422 3422
     ); 
3423 3423
     // Set the subscription import successful flag in the variable table
3424 3424
     variable_set('boincimport_import_subscription_successful', '1');
3425 3425
     $_SESSION['boincimport_stage_selected'] = 'url';
3426
-  }
3427
-  else {
3426
+    }
3427
+    else {
3428 3428
     // An error occurred.
3429 3429
     // $operations contains the operations that remained unprocessed.
3430 3430
     $error_operation = reset($operations);
3431 3431
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
3432
-  }
3433
-  drupal_set_message($message);
3432
+    }
3433
+    drupal_set_message($message);
3434 3434
   
3435
-  // Release the lock on the import process
3436
-  variable_del('boincimport_process_locked');
3437
-  drupal_goto('admin/boinc/import/process');
3435
+    // Release the lock on the import process
3436
+    variable_del('boincimport_process_locked');
3437
+    drupal_goto('admin/boinc/import/process');
3438 3438
 }
3439 3439
 
3440 3440
 
@@ -3446,112 +3446,112 @@  discard block
 block discarded – undo
3446 3446
  */
3447 3447
 function boincimport_replace_urls() {
3448 3448
   
3449
-  // Check whether URLs have already been fixed
3450
-  if (variable_get('boincimport_replace_url_successful', 0)) {
3449
+    // Check whether URLs have already been fixed
3450
+    if (variable_get('boincimport_replace_url_successful', 0)) {
3451 3451
     drupal_set_message(t('URLs have already been updated'), 'warning');
3452 3452
     watchdog(
3453
-      'boincimport', 'URLs have already been updated',
3454
-      array(), WATCHDOG_WARNING
3453
+        'boincimport', 'URLs have already been updated',
3454
+        array(), WATCHDOG_WARNING
3455 3455
     );
3456
-  }
3456
+    }
3457 3457
 
3458
-  if (!variable_get('boincimport_replace_url_started', 0)) {
3458
+    if (!variable_get('boincimport_replace_url_started', 0)) {
3459 3459
     // Could prepare database tables, if new fields are necessary, etc.
3460 3460
     variable_set('boincimport_replace_url_started', 1);
3461
-  }
3461
+    }
3462 3462
   
3463
-  // Get the count of nodes and comments to process for URL updates
3464
-  $node_count = db_result(db_query('
3463
+    // Get the count of nodes and comments to process for URL updates
3464
+    $node_count = db_result(db_query('
3465 3465
     SELECT COUNT(DISTINCT btt.nid)
3466 3466
     FROM {boincimport_temp_topic} AS btt
3467 3467
     LEFT JOIN {node_revisions} AS nr ON btt.nid = nr.nid'
3468
-  ));
3468
+    ));
3469 3469
   
3470
-  $comment_count = db_result(db_query('
3470
+    $comment_count = db_result(db_query('
3471 3471
     SELECT COUNT(c.cid)
3472 3472
     FROM {boincimport_temp_post} AS p
3473 3473
     LEFT JOIN {comments} AS c ON p.cid = c.cid'
3474
-  ));
3474
+    ));
3475 3475
   
3476
-  $pm_count = db_result(db_query('
3476
+    $pm_count = db_result(db_query('
3477 3477
     SELECT COUNT(*)
3478 3478
     FROM {pm_message} pm'
3479
-  ));
3479
+    ));
3480 3480
   
3481
-  if (!$node_count AND !$comment_count AND !$pm_count) {
3481
+    if (!$node_count AND !$comment_count AND !$pm_count) {
3482 3482
     drupal_set_message(
3483
-      t('There were no nodes, comments, or private messages found: Aborting script'), 'warning'
3483
+        t('There were no nodes, comments, or private messages found: Aborting script'), 'warning'
3484 3484
     );
3485 3485
     watchdog('boincimport',
3486
-      'There were no nodes,comments, or private messages found: Aborting script', array(), WATCHDOG_WARNING
3486
+        'There were no nodes,comments, or private messages found: Aborting script', array(), WATCHDOG_WARNING
3487 3487
     );
3488 3488
     // Release the lock on the import process
3489 3489
     variable_del('boincimport_process_locked');
3490 3490
     return t('There were no nodes, comments, or private messages found: Aborting script.');
3491
-  }
3491
+    }
3492 3492
   
3493
-  watchdog('boincimport',
3493
+    watchdog('boincimport',
3494 3494
     'Found %node_count nodes, %comment_count comments, and %pm_count private messages: Updating URLs...',
3495 3495
     array(
3496
-      '%node_count' => $node_count,
3497
-      '%comment_count' => $comment_count,
3498
-      '%pm_count' => $pm_count,
3496
+        '%node_count' => $node_count,
3497
+        '%comment_count' => $comment_count,
3498
+        '%pm_count' => $pm_count,
3499 3499
     ),
3500 3500
     WATCHDOG_INFO
3501
-  );
3501
+    );
3502 3502
   
3503
-  $operations = array();
3504
-  $batch_size = 100;
3503
+    $operations = array();
3504
+    $batch_size = 100;
3505 3505
   
3506
-  // Create node batches to process
3507
-  for ($offset = 0; $offset < $node_count; $offset+=$batch_size) {
3506
+    // Create node batches to process
3507
+    for ($offset = 0; $offset < $node_count; $offset+=$batch_size) {
3508 3508
     $nodes_per_batch = $batch_size;
3509 3509
     if ($offset + $batch_size > $node_count) {
3510
-      $nodes_per_batch = $node_count - $offset;
3510
+        $nodes_per_batch = $node_count - $offset;
3511 3511
     }
3512 3512
     $operations[] = array(
3513
-      'boincimport_replace_urls_node_op', array(
3513
+        'boincimport_replace_urls_node_op', array(
3514 3514
         $offset, $nodes_per_batch
3515
-      )
3515
+        )
3516 3516
     );
3517
-  }
3518
-  // Add comment batches
3519
-  for ($offset = 0; $offset < $comment_count; $offset+=$batch_size) {
3517
+    }
3518
+    // Add comment batches
3519
+    for ($offset = 0; $offset < $comment_count; $offset+=$batch_size) {
3520 3520
     $comments_per_batch = $batch_size;
3521 3521
     if ($offset + $batch_size > $comment_count) {
3522
-      $comments_per_batch = $comment_count - $offset;
3522
+        $comments_per_batch = $comment_count - $offset;
3523 3523
     }
3524 3524
     $operations[] = array(
3525
-      'boincimport_replace_urls_comment_op', array(
3525
+        'boincimport_replace_urls_comment_op', array(
3526 3526
         $offset, $comments_per_batch
3527
-      )
3527
+        )
3528 3528
     );
3529
-  }
3530
-  // And don't forget to process private messages
3531
-  for ($offset = 0; $offset < $pm_count; $offset+=$batch_size) {
3529
+    }
3530
+    // And don't forget to process private messages
3531
+    for ($offset = 0; $offset < $pm_count; $offset+=$batch_size) {
3532 3532
     $messages_per_batch = $batch_size;
3533 3533
     if ($offset + $batch_size > $pm_count) {
3534
-      $messages_per_batch = $pm_count - $offset;
3534
+        $messages_per_batch = $pm_count - $offset;
3535 3535
     }
3536 3536
     $operations[] = array(
3537
-      'boincimport_replace_urls_pm_op', array(
3537
+        'boincimport_replace_urls_pm_op', array(
3538 3538
         $offset, $messages_per_batch
3539
-      )
3539
+        )
3540 3540
     );
3541
-  }
3541
+    }
3542 3542
   
3543
-  $batch = array(
3543
+    $batch = array(
3544 3544
     'operations' => $operations,
3545 3545
     'finished' => 'boincimport_replace_urls_finished',
3546 3546
     'title' => t('Updating URLs...'),
3547 3547
     'init_message' => t('Beginning URL update...'),
3548 3548
     'progress_message' => t('Processed URLs in @current out of @total batches (@size items per batch).', array(
3549
-      '@size' => $batch_size,
3549
+        '@size' => $batch_size,
3550 3550
     )),
3551 3551
     'error_message' => t('URL update has encountered an error.'),
3552
-  );
3552
+    );
3553 3553
   
3554
-  batch_set($batch);
3554
+    batch_set($batch);
3555 3555
 }
3556 3556
 
3557 3557
 /**
@@ -3559,27 +3559,27 @@  discard block
 block discarded – undo
3559 3559
  * Find URLs for the old system and update them with Drupal paths
3560 3560
  */
3561 3561
 function boincimport_replace_urls_node_op($offset, $batch_size, &$context) {
3562
-  // Initialize the batch, if needed
3563
-  if (!isset($context['sandbox']['progress'])) {
3562
+    // Initialize the batch, if needed
3563
+    if (!isset($context['sandbox']['progress'])) {
3564 3564
     $context['sandbox']['progress'] = 0;
3565 3565
     $context['sandbox']['max'] = $batch_size;
3566
-  }
3566
+    }
3567 3567
   
3568
-  $input_format = variable_get('boincimport_input_format', 0);
3568
+    $input_format = variable_get('boincimport_input_format', 0);
3569 3569
 
3570
-  // Since topics have just been imported, there should be only one vid for
3571
-  // each nid, so we can update node_revisions by nid
3572
-  // Get nodes to process
3573
-  $nodes = db_query('
3570
+    // Since topics have just been imported, there should be only one vid for
3571
+    // each nid, so we can update node_revisions by nid
3572
+    // Get nodes to process
3573
+    $nodes = db_query('
3574 3574
     SELECT btt.nid, nr.body, nr.teaser
3575 3575
     FROM {boincimport_temp_topic} AS btt
3576 3576
     LEFT JOIN {node_revisions} AS nr ON btt.nid = nr.nid
3577 3577
     ORDER BY btt.nid
3578 3578
     LIMIT %d,%d',
3579 3579
     $offset, $batch_size
3580
-  );
3580
+    );
3581 3581
   
3582
-  while ($node = db_fetch_object($nodes)) {
3582
+    while ($node = db_fetch_object($nodes)) {
3583 3583
     $updated = FALSE;
3584 3584
     
3585 3585
     // Update URLs in node contents
@@ -3588,23 +3588,23 @@  discard block
 block discarded – undo
3588 3588
     $node->body = _boincimport_replace_links($node->body);
3589 3589
     $node->teaser = _boincimport_replace_links($node->teaser);
3590 3590
     if ($node->body != $original_body OR $node->teaser != $original_teaser) {
3591
-      $updated = db_query("
3591
+        $updated = db_query("
3592 3592
         UPDATE {node_revisions}
3593 3593
         SET body= '%s', teaser = '%s'
3594 3594
         WHERE nid = %d",
3595 3595
         $node->body, $node->teaser, $node->nid
3596
-      );
3596
+        );
3597 3597
     }
3598 3598
     
3599 3599
     $message = '';
3600 3600
     $context['results']['success'][] = $node->nid;
3601 3601
     if ($updated) {
3602
-      // Store some result for post-processing in the finished callback.
3603
-      $context['results']['nodes']['updated'][] = $node->nid;
3604
-      $message = "Successfully updated node {$node->nid}";
3602
+        // Store some result for post-processing in the finished callback.
3603
+        $context['results']['nodes']['updated'][] = $node->nid;
3604
+        $message = "Successfully updated node {$node->nid}";
3605 3605
     }
3606 3606
     else {
3607
-      $message = "No changes made to node {$node->nid}!";
3607
+        $message = "No changes made to node {$node->nid}!";
3608 3608
     }
3609 3609
     
3610 3610
     // Update our progress information.
@@ -3614,12 +3614,12 @@  discard block
 block discarded – undo
3614 3614
 
3615 3615
     // Update the progress for the batch engine
3616 3616
     if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3617
-      $context['finished'] = 1;
3617
+        $context['finished'] = 1;
3618 3618
     }
3619 3619
     else {
3620
-      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3620
+        $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3621
+    }
3621 3622
     }
3622
-  }
3623 3623
 }
3624 3624
 
3625 3625
 /**
@@ -3627,48 +3627,48 @@  discard block
 block discarded – undo
3627 3627
  * Find URLs for the old system and update them with Drupal paths
3628 3628
  */
3629 3629
 function boincimport_replace_urls_comment_op($offset, $batch_size, &$context) {
3630
-  // Initialize the batch, if needed
3631
-  if (!isset($context['sandbox']['progress'])) {
3630
+    // Initialize the batch, if needed
3631
+    if (!isset($context['sandbox']['progress'])) {
3632 3632
     $context['sandbox']['progress'] = 0;
3633 3633
     $context['sandbox']['max'] = $batch_size;
3634
-  }
3634
+    }
3635 3635
   
3636
-  $input_format = variable_get('boincimport_input_format', 0);
3636
+    $input_format = variable_get('boincimport_input_format', 0);
3637 3637
   
3638
-  // Get comments to process
3639
-  $comments = db_query('
3638
+    // Get comments to process
3639
+    $comments = db_query('
3640 3640
     SELECT c.cid, c.comment
3641 3641
     FROM {boincimport_temp_post} AS p
3642 3642
     LEFT JOIN {comments} AS c ON p.cid = c.cid
3643 3643
     ORDER BY c.cid
3644 3644
     LIMIT %d,%d',
3645 3645
     $offset, $batch_size
3646
-  );
3646
+    );
3647 3647
   
3648
-  while ($comment = db_fetch_object($comments)) {
3648
+    while ($comment = db_fetch_object($comments)) {
3649 3649
     $updated = FALSE;
3650 3650
     
3651 3651
     // Update URLs in comment contents
3652 3652
     $original_comment = $comment->comment;
3653 3653
     $comment->comment = _boincimport_replace_links($comment->comment);
3654 3654
     if ($comment->comment != $original_comment) {
3655
-      $updated = db_query("
3655
+        $updated = db_query("
3656 3656
         UPDATE {comments}
3657 3657
         SET comment= '%s'
3658 3658
         WHERE cid = %d",
3659 3659
         $comment->comment, $comment->cid
3660
-      );
3660
+        );
3661 3661
     }
3662 3662
     
3663 3663
     $message = '';
3664 3664
     $context['results']['success'][] = $comment->cid;
3665 3665
     if ($updated) {
3666
-      // Store some result for post-processing in the finished callback.
3667
-      $context['results']['comments']['updated'][] = $comment->cid;
3668
-      $message = "Successfully updated comment {$comment->cid}";
3666
+        // Store some result for post-processing in the finished callback.
3667
+        $context['results']['comments']['updated'][] = $comment->cid;
3668
+        $message = "Successfully updated comment {$comment->cid}";
3669 3669
     }
3670 3670
     else {
3671
-      $message = "No changes made to comment {$comment->cid}!";
3671
+        $message = "No changes made to comment {$comment->cid}!";
3672 3672
     }
3673 3673
     
3674 3674
     // Update our progress information.
@@ -3678,12 +3678,12 @@  discard block
 block discarded – undo
3678 3678
 
3679 3679
     // Update the progress for the batch engine
3680 3680
     if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3681
-      $context['finished'] = 1;
3681
+        $context['finished'] = 1;
3682 3682
     }
3683 3683
     else {
3684
-      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3684
+        $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3685
+    }
3685 3686
     }
3686
-  }
3687 3687
 }
3688 3688
 
3689 3689
 /**
@@ -3691,47 +3691,47 @@  discard block
 block discarded – undo
3691 3691
  * Find URLs for the old system and update them with Drupal paths
3692 3692
  */
3693 3693
 function boincimport_replace_urls_pm_op($offset, $batch_size, &$context) {
3694
-  // Initialize the batch, if needed
3695
-  if (!isset($context['sandbox']['progress'])) {
3694
+    // Initialize the batch, if needed
3695
+    if (!isset($context['sandbox']['progress'])) {
3696 3696
     $context['sandbox']['progress'] = 0;
3697 3697
     $context['sandbox']['max'] = $batch_size;
3698
-  }
3698
+    }
3699 3699
   
3700
-  $input_format = variable_get('boincimport_input_format', 0);
3700
+    $input_format = variable_get('boincimport_input_format', 0);
3701 3701
   
3702
-  // Get private messages to process
3703
-  $messages = db_query('
3702
+    // Get private messages to process
3703
+    $messages = db_query('
3704 3704
     SELECT pm.mid, pm.body
3705 3705
     FROM {pm_message} pm
3706 3706
     ORDER BY pm.mid
3707 3707
     LIMIT %d,%d',
3708 3708
     $offset, $batch_size
3709
-  );
3709
+    );
3710 3710
   
3711
-  while ($pm = db_fetch_object($messages)) {
3711
+    while ($pm = db_fetch_object($messages)) {
3712 3712
     $updated = FALSE;
3713 3713
     
3714 3714
     // Update URLs in private message body
3715 3715
     $original_pm_body = $pm->body;
3716 3716
     $pm->body = _boincimport_replace_links($pm->body);
3717 3717
     if ($pm->body != $original_pm_body) {
3718
-      $updated = db_query("
3718
+        $updated = db_query("
3719 3719
         UPDATE {pm_message}
3720 3720
         SET body= '%s'
3721 3721
         WHERE mid = %d",
3722 3722
         $pm->body, $pm->mid
3723
-      );
3723
+        );
3724 3724
     }
3725 3725
     
3726 3726
     $message = '';
3727 3727
     $context['results']['success'][] = $pm->mid;
3728 3728
     if ($updated) {
3729
-      // Store some result for post-processing in the finished callback.
3730
-      $context['results']['pm']['updated'][] = $pm->mid;
3731
-      $message = "Successfully updated private message {$pm->mid}";
3729
+        // Store some result for post-processing in the finished callback.
3730
+        $context['results']['pm']['updated'][] = $pm->mid;
3731
+        $message = "Successfully updated private message {$pm->mid}";
3732 3732
     }
3733 3733
     else {
3734
-      $message = "No changes made to private message {$pm->mid}!";
3734
+        $message = "No changes made to private message {$pm->mid}!";
3735 3735
     }
3736 3736
     
3737 3737
     // Update our progress information.
@@ -3741,85 +3741,85 @@  discard block
 block discarded – undo
3741 3741
 
3742 3742
     // Update the progress for the batch engine
3743 3743
     if ($context['sandbox']['progress'] >= $context['sandbox']['max']) {
3744
-      $context['finished'] = 1;
3744
+        $context['finished'] = 1;
3745 3745
     }
3746 3746
     else {
3747
-      $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3747
+        $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
3748
+    }
3748 3749
     }
3749
-  }
3750 3750
 }
3751 3751
 
3752 3752
 /**
3753 3753
  * Batch 'finished' callback
3754 3754
  */
3755 3755
 function boincimport_replace_urls_finished($success, $results, $operations) {
3756
-  if ($success) {
3756
+    if ($success) {
3757 3757
     // Let's count our successes
3758 3758
     $total_processed = count($results['success']);
3759 3759
     $nodes_updated = count($results['nodes']['updated']);
3760 3760
     $comments_updated = count($results['comments']['updated']);
3761 3761
     $private_messages_updated = count($results['pm']['updated']);
3762 3762
     $message = t(
3763
-      'Successfully processed @count nodes, comments, and private messages (@nodes_updated nodes, @comments_updated comments, and @pm_updated private messages were updated)',
3764
-      array(
3763
+        'Successfully processed @count nodes, comments, and private messages (@nodes_updated nodes, @comments_updated comments, and @pm_updated private messages were updated)',
3764
+        array(
3765 3765
         '@count' => $total_processed,
3766 3766
         '@nodes_updated' => $nodes_updated,
3767 3767
         '@comments_updated' => $comments_updated,
3768 3768
         '@pm_updated' => $private_messages_updated,
3769
-      )
3769
+        )
3770 3770
     );
3771 3771
     if ($private_messages_updated) {
3772
-      watchdog('boincimport',
3772
+        watchdog('boincimport',
3773 3773
         'Updated URLs in these private_messages: @mid_list',
3774 3774
         array(
3775
-          '@mid_list' => implode(', ', $results['pm']['updated']),
3775
+            '@mid_list' => implode(', ', $results['pm']['updated']),
3776 3776
         ),
3777 3777
         WATCHDOG_INFO
3778
-      );
3778
+        );
3779 3779
     }
3780 3780
     if ($comments_updated) {
3781
-      watchdog('boincimport',
3781
+        watchdog('boincimport',
3782 3782
         'Updated URLs in these comments: @cid_list',
3783 3783
         array(
3784
-          '@cid_list' => implode(', ', $results['comments']['updated']),
3784
+            '@cid_list' => implode(', ', $results['comments']['updated']),
3785 3785
         ),
3786 3786
         WATCHDOG_INFO
3787
-      );
3787
+        );
3788 3788
     }
3789 3789
     if ($nodes_updated) {
3790
-      watchdog('boincimport',
3790
+        watchdog('boincimport',
3791 3791
         'Updated URLs in these nodes: @nid_list',
3792 3792
         array(
3793
-          '@nid_list' => implode(', ', $results['nodes']['updated']),
3793
+            '@nid_list' => implode(', ', $results['nodes']['updated']),
3794 3794
         ),
3795 3795
         WATCHDOG_INFO
3796
-      );
3796
+        );
3797 3797
     }
3798 3798
     watchdog('boincimport',
3799
-      'Successfully processed @count nodes, comments, and private messages (@nodes_updated nodes, @comments_updated comments, and @pm_updated private messages were updated)',
3800
-      array(
3799
+        'Successfully processed @count nodes, comments, and private messages (@nodes_updated nodes, @comments_updated comments, and @pm_updated private messages were updated)',
3800
+        array(
3801 3801
         '@count' => $total_processed,
3802 3802
         '@nodes_updated' => $nodes_updated,
3803 3803
         '@comments_updated' => $comments_updated,
3804 3804
         '@pm_updated' => $private_messages_updated,
3805
-      ),
3806
-      WATCHDOG_INFO
3805
+        ),
3806
+        WATCHDOG_INFO
3807 3807
     );
3808 3808
     // Set the replace URLs successful flag in the variable table
3809 3809
     variable_set('boincimport_replace_urls_successful', '1');
3810 3810
     $_SESSION['boincimport_stage_selected'] = 'users';
3811
-  }
3812
-  else {
3811
+    }
3812
+    else {
3813 3813
     // An error occurred.
3814 3814
     // $operations contains the operations that remained unprocessed.
3815 3815
     $error_operation = reset($operations);
3816 3816
     $message = 'An error occurred while processing ' . $error_operation[0] . ' with arguments :' . print_r($error_operation[0], TRUE);
3817
-  }
3818
-  drupal_set_message($message);
3817
+    }
3818
+    drupal_set_message($message);
3819 3819
   
3820
-  // Release the lock on the import process
3821
-  variable_del('boincimport_process_locked');
3822
-  drupal_goto('admin/boinc/import/process');
3820
+    // Release the lock on the import process
3821
+    variable_del('boincimport_process_locked');
3822
+    drupal_goto('admin/boinc/import/process');
3823 3823
 }
3824 3824
 
3825 3825
 
@@ -3831,43 +3831,43 @@  discard block
 block discarded – undo
3831 3831
  * Remove temporary variables, clear caches, etc.
3832 3832
  */
3833 3833
 function boincimport_process_cleanup() {
3834
-  db_set_active('default');
3835
-  
3836
-  variable_del('boincimport_base_url_boinc');
3837
-  variable_del('boincimport_base_url_drupal');
3838
-  variable_del('boincimport_import_user_successful');
3839
-  variable_del('boincimport_import_user_started');
3840
-  variable_del('boincimport_import_team_successful');
3841
-  variable_del('boincimport_import_team_started');
3842
-  variable_del('boincimport_import_category_successful');
3843
-  variable_del('boincimport_replace_url_successful');
3844
-  variable_del('boincimport_import_category_started');
3845
-  variable_del('boincimport_import_topic_successful');
3846
-  variable_del('boincimport_import_topic_started');
3847
-  variable_del('boincimport_import_post_successful');
3848
-  variable_del('boincimport_import_post_started');
3849
-  variable_del('boincimport_team_forum_successful');
3850
-  variable_del('boincimport_team_topic_successful');
3851
-  variable_del('boincimport_team_post_successful');
3852
-  variable_del('boincimport_team_post_started');
3853
-  variable_del('boincimport_ready');
3854
-  variable_del('boincimport_db_url');
3855
-  variable_del('boincimport_tested');
3856
-  variable_del('boincimport_db_configured');
3857
-  variable_del('boincimport_table_prefix');
3858
-  variable_del('boincimport_team_types');
3859
-  variable_del('boincimport_time_limit');
3860
-  variable_del('boincimport_import_lurkers');
3861
-  variable_del('boincimport_import_polls'); 
3862
-  variable_del('boincimport_import_poll_started');
3863
-  variable_del('boincimport_import_poll_successful');
3864
-  variable_del('boincimport_import_pm_successful');
3865
-  variable_del('boincimport_encode');
3866
-  variable_del('boincimport_encoding_phpbb');
3867
-  variable_del('boincimport_encoding_drupal');
3868
-  variable_del('boincimport_version');
3869
-
3870
-  db_query('DELETE FROM {cache}');
3834
+    db_set_active('default');
3835
+  
3836
+    variable_del('boincimport_base_url_boinc');
3837
+    variable_del('boincimport_base_url_drupal');
3838
+    variable_del('boincimport_import_user_successful');
3839
+    variable_del('boincimport_import_user_started');
3840
+    variable_del('boincimport_import_team_successful');
3841
+    variable_del('boincimport_import_team_started');
3842
+    variable_del('boincimport_import_category_successful');
3843
+    variable_del('boincimport_replace_url_successful');
3844
+    variable_del('boincimport_import_category_started');
3845
+    variable_del('boincimport_import_topic_successful');
3846
+    variable_del('boincimport_import_topic_started');
3847
+    variable_del('boincimport_import_post_successful');
3848
+    variable_del('boincimport_import_post_started');
3849
+    variable_del('boincimport_team_forum_successful');
3850
+    variable_del('boincimport_team_topic_successful');
3851
+    variable_del('boincimport_team_post_successful');
3852
+    variable_del('boincimport_team_post_started');
3853
+    variable_del('boincimport_ready');
3854
+    variable_del('boincimport_db_url');
3855
+    variable_del('boincimport_tested');
3856
+    variable_del('boincimport_db_configured');
3857
+    variable_del('boincimport_table_prefix');
3858
+    variable_del('boincimport_team_types');
3859
+    variable_del('boincimport_time_limit');
3860
+    variable_del('boincimport_import_lurkers');
3861
+    variable_del('boincimport_import_polls'); 
3862
+    variable_del('boincimport_import_poll_started');
3863
+    variable_del('boincimport_import_poll_successful');
3864
+    variable_del('boincimport_import_pm_successful');
3865
+    variable_del('boincimport_encode');
3866
+    variable_del('boincimport_encoding_phpbb');
3867
+    variable_del('boincimport_encoding_drupal');
3868
+    variable_del('boincimport_version');
3869
+
3870
+    db_query('DELETE FROM {cache}');
3871 3871
 }
3872 3872
 
3873 3873
 /**
@@ -3875,15 +3875,15 @@  discard block
 block discarded – undo
3875 3875
  */
3876 3876
 
3877 3877
 function boincimport_forum_comment_save(&$edit) {
3878
-  // Here we are building the thread field.  See the comment in comment_render().
3879
-  if ($edit['pid'] == 0) {
3878
+    // Here we are building the thread field.  See the comment in comment_render().
3879
+    if ($edit['pid'] == 0) {
3880 3880
     // This is a comment with no parent comment (depth 0): we start by retrieving
3881 3881
     // the maximum thread level.
3882 3882
     $max = db_result(db_query('SELECT MAX(thread) FROM {comments} WHERE nid = %d', $edit['nid']));
3883 3883
     // Strip the "/" from the end of the thread.
3884 3884
     $max = rtrim($max, '/');
3885 3885
     $thread = int2vancode(vancode2int($max)+1) .'/';
3886
-  } else {
3886
+    } else {
3887 3887
     // This is comment with a parent comment: we increase the part of the thread
3888 3888
     // value at the proper depth.
3889 3889
     $parent = db_fetch_object(db_query('SELECT * FROM {comments} WHERE cid = %d', $edit['pid']));
@@ -3892,71 +3892,71 @@  discard block
 block discarded – undo
3892 3892
     // Get the max value in _this_ thread.
3893 3893
     $max = db_result(db_query("SELECT MAX(thread) FROM {comments} WHERE thread LIKE '%s.%%' AND nid = %d", $parent->thread, $edit['nid']));
3894 3894
     if ($max == '') {
3895
-      // First child of this parent.
3896
-      $thread = $parent->thread .'.'. int2vancode(1) .'/';
3895
+        // First child of this parent.
3896
+        $thread = $parent->thread .'.'. int2vancode(1) .'/';
3897 3897
     } else {
3898
-      // Strip the "/" at the end of the thread.
3899
-      $max = rtrim($max, '/');
3900
-      // We need to get the value at the correct depth.
3901
-      $parts = explode('.', $max);
3902
-      $parent_depth = count(explode('.', $parent->thread));
3903
-      $last = $parts[$parent_depth];
3904
-      // Finally, build the thread field for this new comment.
3905
-      $thread = $parent->thread .'.'. int2vancode(vancode2int($last) + 1) .'/';
3898
+        // Strip the "/" at the end of the thread.
3899
+        $max = rtrim($max, '/');
3900
+        // We need to get the value at the correct depth.
3901
+        $parts = explode('.', $max);
3902
+        $parent_depth = count(explode('.', $parent->thread));
3903
+        $last = $parts[$parent_depth];
3904
+        // Finally, build the thread field for this new comment.
3905
+        $thread = $parent->thread .'.'. int2vancode(vancode2int($last) + 1) .'/';
3906
+    }
3906 3907
     }
3907
-  }
3908 3908
 
3909
-  $status = 0; // 1 - not published, 0 - published
3910
-  $format = variable_get('boincimport_input_format', 0);
3911
-  $score = 0; // 0 default value, comments get higher score depending on the author's roles
3912
-  $users = serialize(array(0 => 1));  // default value for everybody!!
3909
+    $status = 0; // 1 - not published, 0 - published
3910
+    $format = variable_get('boincimport_input_format', 0);
3911
+    $score = 0; // 0 default value, comments get higher score depending on the author's roles
3912
+    $users = serialize(array(0 => 1));  // default value for everybody!!
3913 3913
   
3914
-  if ($edit['uid'] === $user->uid) { // '===' because we want to modify anonymous users too
3914
+    if ($edit['uid'] === $user->uid) { // '===' because we want to modify anonymous users too
3915 3915
     $edit['name'] = $user->name;
3916
-  }
3916
+    }
3917 3917
 
3918
-  $success = db_query("INSERT INTO {comments} (nid, pid, uid, subject, comment, format, hostname, timestamp, status, thread, name) VALUES (%d, %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s')", $edit['nid'], $edit['pid'], $edit['uid'], $edit['subject'], $edit['comment'], $edit['format'], ip_address(), $edit['timestamp'], $edit['status'], $thread, $edit['name']);
3919
-  if ($success) {
3918
+    $success = db_query("INSERT INTO {comments} (nid, pid, uid, subject, comment, format, hostname, timestamp, status, thread, name) VALUES (%d, %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s')", $edit['nid'], $edit['pid'], $edit['uid'], $edit['subject'], $edit['comment'], $edit['format'], ip_address(), $edit['timestamp'], $edit['status'], $thread, $edit['name']);
3919
+    if ($success) {
3920 3920
     $edit['cid'] = db_last_insert_id('comments', 'cid');
3921 3921
     _comment_update_node_statistics($edit['nid']);
3922
-  }
3923
-  return $success;
3922
+    }
3923
+    return $success;
3924 3924
 }
3925 3925
 
3926 3926
 /**
3927 3927
  * Strips text of extra phpbb3 markup and if requested, also strips all bbcode from text.
3928 3928
  */
3929 3929
 function _boincimport_strip_bbcode($text) {
3930
-  // Strip the text of extra markup - regular expressions taken from phpbb3 includes/function.php, function get_preg_expression().
3931
-  $match = array(
3930
+    // Strip the text of extra markup - regular expressions taken from phpbb3 includes/function.php, function get_preg_expression().
3931
+    $match = array(
3932 3932
     '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
3933 3933
     '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
3934 3934
     '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
3935 3935
     '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
3936 3936
     '#<!\-\- .*? \-\->#s',
3937 3937
     '#<.*?>#s',
3938
-  );
3939
-  $replace = array('$1', '$1', '$2', '$1', '', '');
3940
-  $text = preg_replace($match, $replace, $text);
3938
+    );
3939
+    $replace = array('$1', '$1', '$2', '$1', '', '');
3940
+    $text = preg_replace($match, $replace, $text);
3941 3941
 
3942
-  // If BBcode conversion to has been selected, the following will convert the
3943
-  // BBcode to normal html
3944
-  if (variable_get('boincimport_bbcode', 0)) {
3942
+    // If BBcode conversion to has been selected, the following will convert the
3943
+    // BBcode to normal html
3944
+    if (variable_get('boincimport_bbcode', 0)) {
3945 3945
     $input_format = variable_get('boincimport_input_format', 0);
3946 3946
     $text = bbcode_filter('process', 0 , $input_format, $text);
3947
-  }
3948
-  return $text;
3947
+    }
3948
+    return $text;
3949 3949
 }
3950 3950
 
3951 3951
 /**
3952 3952
  * Function to properly encode strings.
3953 3953
  */
3954 3954
 function _boincimport_text_sanitize($text) {
3955
-  $input_format = variable_get('boincimport_input_format', 0);
3956
-  $text = html_entity_decode($text, ENT_QUOTES, 'utf-8');
3957
-  // Be sure the text is filtered for the default input format
3958
-  $text = check_markup($text, $input_format);
3959
-  return $text;
3955
+    $input_format = variable_get('boincimport_input_format', 0);
3956
+    $text = html_entity_decode($text, ENT_QUOTES, 'utf-8');
3957
+    // Be sure the text is filtered for the default input format
3958
+    $text = check_markup($text, $input_format);
3959
+    return $text;
3960 3960
 }
3961 3961
 
3962 3962
 
@@ -3965,25 +3965,25 @@  discard block
 block discarded – undo
3965 3965
  */
3966 3966
 function _boincimport_replace_links($html) {
3967 3967
   
3968
-  $transformer = new BoincImportUrlTransformer();
3969
-  
3970
-  // Update links to posts, threads, and forums
3971
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)&postid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformPostLinks'), $html);
3972
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)(&\w+=\w*)*?(#(\d+)?)}i', array($transformer, 'transformOldPostLinks'), $html);
3973
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformTopicLinks'), $html);
3974
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_forum\.php\?id=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformForumLinks'), $html);
3975
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)show_user\.php\?userid=(\d+)((&\w+=\w*)+)?}i', array($transformer, 'transformUserLinks'), $html);
3976
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)workunit\.php\?wuid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformWorkUnitLinks'), $html);
3977
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)result\.php\?resultid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformResultLinks'), $html);
3978
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)results\.php\?userid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformUserResultsLinks'), $html);
3979
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)results\.php\?hostid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformHostResultsLinks'), $html);
3980
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)show_host_detail\.php\?hostid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformHostLinks'), $html);
3981
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)hosts_user\.php\?userid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformUserHostsLinks'), $html);
3982
-  
3983
-  // Update any links to the top level index
3984
-  $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_index.php}i', array($transformer, 'transformForumIndexLinks'), $html);
3985
-  
3986
-  return $html;
3968
+    $transformer = new BoincImportUrlTransformer();
3969
+  
3970
+    // Update links to posts, threads, and forums
3971
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)&postid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformPostLinks'), $html);
3972
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)(&\w+=\w*)*?(#(\d+)?)}i', array($transformer, 'transformOldPostLinks'), $html);
3973
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_thread\.php\?id=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformTopicLinks'), $html);
3974
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_forum\.php\?id=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformForumLinks'), $html);
3975
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)show_user\.php\?userid=(\d+)((&\w+=\w*)+)?}i', array($transformer, 'transformUserLinks'), $html);
3976
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)workunit\.php\?wuid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformWorkUnitLinks'), $html);
3977
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)result\.php\?resultid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformResultLinks'), $html);
3978
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)results\.php\?userid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformUserResultsLinks'), $html);
3979
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)results\.php\?hostid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformHostResultsLinks'), $html);
3980
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)show_host_detail\.php\?hostid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformHostLinks'), $html);
3981
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)hosts_user\.php\?userid=(\d+)(&\w+=\w*)*?}i', array($transformer, 'transformUserHostsLinks'), $html);
3982
+  
3983
+    // Update any links to the top level index
3984
+    $html = preg_replace_callback('{(?:(http|https)://([^\s]*?)|href="(?:/)?)forum_index.php}i', array($transformer, 'transformForumIndexLinks'), $html);
3985
+  
3986
+    return $html;
3987 3987
 }
3988 3988
 
3989 3989
 /**
@@ -3991,14 +3991,14 @@  discard block
 block discarded – undo
3991 3991
  */
3992 3992
 class BoincImportUrlTransformer {
3993 3993
   
3994
-  var $basePath;
3995
-  var $boincDomain;
3996
-  var $drupalDomain;
3994
+    var $basePath;
3995
+    var $boincDomain;
3996
+    var $drupalDomain;
3997 3997
   
3998
-  /**
3999
-   * Constructor
4000
-   */
4001
-  function __construct() {
3998
+    /**
3999
+     * Constructor
4000
+     */
4001
+    function __construct() {
4002 4002
     global $base_url;
4003 4003
     global $base_path;
4004 4004
     $boinc_base_urls = variable_get('boincimport_base_url_boinc', '');
@@ -4008,208 +4008,208 @@  discard block
 block discarded – undo
4008 4008
     $this->boincDomains = array();
4009 4009
     $boinc_base_urls = preg_split('/\s+/', $boinc_base_urls);
4010 4010
     foreach ($boinc_base_urls as $url) {
4011
-      $domain = parse_url($url, PHP_URL_HOST);
4012
-      if ($domain) {
4011
+        $domain = parse_url($url, PHP_URL_HOST);
4012
+        if ($domain) {
4013 4013
         $this->boincDomains[$domain] = TRUE;
4014
-      }
4014
+        }
4015 4015
     }
4016 4016
     if (!$this->boincDomains) {
4017
-      watchdog('boincimport', 'No valid BOINC base URLs found to transform!',
4017
+        watchdog('boincimport', 'No valid BOINC base URLs found to transform!',
4018 4018
         array(), WATCHDOG_WARNING); 
4019 4019
     }
4020
-  }
4020
+    }
4021 4021
 
4022
-  // old-style constructor for backwards compatibility
4023
-  function BoincImportUrlTransformer() {
4022
+    // old-style constructor for backwards compatibility
4023
+    function BoincImportUrlTransformer() {
4024 4024
     self::__construct();
4025
-  }
4025
+    }
4026 4026
   
4027
-  /**
4028
-   * Get what the new base URL should be (needed for every transformation)
4029
-   */
4030
-  function getNewBaseUrl($matches) {
4027
+    /**
4028
+     * Get what the new base URL should be (needed for every transformation)
4029
+     */
4030
+    function getNewBaseUrl($matches) {
4031 4031
     $http = $matches[1];
4032 4032
     $domain = trim($matches[2], '/');
4033 4033
     if ($http) {
4034
-      if (isset($this->boincDomains[$domain])) {
4034
+        if (isset($this->boincDomains[$domain])) {
4035 4035
         // This is a URL configured to be transformed
4036 4036
         return "{$http}://{$this->drupalDomain}{$this->basePath}";
4037
-      }
4038
-      else {
4037
+        }
4038
+        else {
4039 4039
         // This URL should not be transformed
4040 4040
         return NULL;
4041
-      }
4041
+        }
4042 4042
     }
4043 4043
     else {
4044
-      // This is a relative URL
4045
-      return $this->basePath;
4044
+        // This is a relative URL
4045
+        return $this->basePath;
4046
+    }
4046 4047
     }
4047
-  }
4048 4048
   
4049
-  /**
4050
-   * Replace links to specific posts. If the given post is the first in the
4051
-   * thread, it is a topic node in Drupal, not a comment.
4052
-   */
4053
-  function transformPostLinks($matches) {
4049
+    /**
4050
+     * Replace links to specific posts. If the given post is the first in the
4051
+     * thread, it is a topic node in Drupal, not a comment.
4052
+     */
4053
+    function transformPostLinks($matches) {
4054 4054
     $link = $matches[0];
4055 4055
     $newBaseUrl = $this->getNewBaseUrl($matches);
4056 4056
     if ($newBaseUrl !== NULL) {
4057
-      $id = db_result(db_query('
4057
+        $id = db_result(db_query('
4058 4058
         SELECT p.cid
4059 4059
         FROM {boincimport_temp_post} p
4060 4060
         WHERE p.post_id = %d',
4061 4061
         $matches[4]
4062
-      ));
4063
-      if ($id) {
4062
+        ));
4063
+        if ($id) {
4064 4064
         $link = "{$newBaseUrl}goto/comment/{$id}";
4065
-      }
4066
-      else {
4065
+        }
4066
+        else {
4067 4067
         // This post is not in the post import table, so it's probably a topic
4068 4068
         $link = $this->transformTopicLinks($matches);
4069
-      }
4069
+        }
4070 4070
     }
4071 4071
     return $link;
4072
-  }
4072
+    }
4073 4073
   
4074
-  /**
4075
-   * Replace links that include anchors to specific posts. If the given post is
4076
-   * the first in the thread, it is a topic node in Drupal, not a comment.
4077
-   */
4078
-  function transformOldPostLinks($matches) {
4074
+    /**
4075
+     * Replace links that include anchors to specific posts. If the given post is
4076
+     * the first in the thread, it is a topic node in Drupal, not a comment.
4077
+     */
4078
+    function transformOldPostLinks($matches) {
4079 4079
     $link = $matches[0];
4080 4080
     $newBaseUrl = $this->getNewBaseUrl($matches);
4081 4081
     if ($newBaseUrl !== NULL) {
4082
-      $id = db_result(db_query('
4082
+        $id = db_result(db_query('
4083 4083
         SELECT p.cid
4084 4084
         FROM {boincimport_temp_post} p
4085 4085
         WHERE p.post_id = %d',
4086 4086
         $matches[6]
4087
-      ));
4088
-      if ($id) {
4087
+        ));
4088
+        if ($id) {
4089 4089
         $link = "{$newBaseUrl}goto/comment/{$id}";
4090
-      }
4091
-      else {
4090
+        }
4091
+        else {
4092 4092
         // This post is not in the post import table, so it's probably a topic
4093 4093
         $link = $this->transformTopicLinks($matches);
4094
-      }
4094
+        }
4095 4095
     }
4096 4096
     return $link;
4097
-  }
4097
+    }
4098 4098
   
4099
-  function transformTopicLinks($matches) {
4099
+    function transformTopicLinks($matches) {
4100 4100
     $link = $matches[0];
4101 4101
     $newBaseUrl = $this->getNewBaseUrl($matches);
4102 4102
     if ($newBaseUrl !== NULL) {
4103
-      $id = db_result(db_query('
4103
+        $id = db_result(db_query('
4104 4104
         SELECT nid
4105 4105
         FROM {boincimport_temp_topic}
4106 4106
         WHERE topic_id = %d',
4107 4107
         $matches[3]
4108
-      ));
4109
-      $link = "{$newBaseUrl}node/{$id}";
4108
+        ));
4109
+        $link = "{$newBaseUrl}node/{$id}";
4110 4110
     }
4111 4111
     return $link;
4112
-  }
4112
+    }
4113 4113
 
4114
-  function transformForumLinks($matches) {
4114
+    function transformForumLinks($matches) {
4115 4115
     $link = $matches[0];
4116 4116
     $newBaseUrl = $this->getNewBaseUrl($matches);
4117 4117
     if ($newBaseUrl !== NULL) {
4118
-      $forum = db_fetch_object(db_query('
4118
+        $forum = db_fetch_object(db_query('
4119 4119
         SELECT tid
4120 4120
         FROM {boincimport_temp_forum}
4121 4121
         WHERE forum_id = %d',
4122 4122
         $matches[3]
4123
-      ));
4124
-      $link = "{$newBaseUrl}community/forum/{$forum->tid}";
4123
+        ));
4124
+        $link = "{$newBaseUrl}community/forum/{$forum->tid}";
4125 4125
     }
4126 4126
     return $link;
4127
-  }
4127
+    }
4128 4128
 
4129
-  function transformUserLinks($matches) {
4129
+    function transformUserLinks($matches) {
4130 4130
     $link = $matches[0];
4131 4131
     $newBaseUrl = $this->getNewBaseUrl($matches);
4132 4132
     if ($newBaseUrl !== NULL) {
4133
-      // Make sure this isn't an RPC link (no need to transform those)
4134
-      if (!$matches[5]) {
4133
+        // Make sure this isn't an RPC link (no need to transform those)
4134
+        if (!$matches[5]) {
4135 4135
         // TODO: This regex doesn't seem to capture the format=xml part of the
4136 4136
         // URL, making it impossible to distinguish if this is an RPC or not...
4137 4137
         //watchdog('DEBUG', 'matches: @m', array('@m' => print_r($matches,true)), WATCHDOG_DEBUG);
4138 4138
         $uid = boincuser_lookup_uid($matches[3]);
4139 4139
         $link = "{$newBaseUrl}account/{$uid}";
4140
-      }
4140
+        }
4141 4141
     }
4142 4142
     return $link;
4143
-  }
4143
+    }
4144 4144
 
4145
-  function transformWorkUnitLinks($matches) {
4145
+    function transformWorkUnitLinks($matches) {
4146 4146
     $link = $matches[0];
4147 4147
     $newBaseUrl = $this->getNewBaseUrl($matches);
4148 4148
     if ($newBaseUrl !== NULL) {
4149
-      $id = $matches[3];
4150
-      $link = "{$newBaseUrl}workunit/{$id}";
4149
+        $id = $matches[3];
4150
+        $link = "{$newBaseUrl}workunit/{$id}";
4151 4151
     }
4152 4152
     return $link;
4153
-  }
4153
+    }
4154 4154
 
4155
-  function transformResultLinks($matches) {
4155
+    function transformResultLinks($matches) {
4156 4156
     $link = $matches[0];
4157 4157
     $newBaseUrl = $this->getNewBaseUrl($matches);
4158 4158
     if ($newBaseUrl !== NULL) {
4159
-      $id = $matches[3];
4160
-      $link = "{$newBaseUrl}task/{$id}";
4159
+        $id = $matches[3];
4160
+        $link = "{$newBaseUrl}task/{$id}";
4161 4161
     }
4162 4162
     return $link;
4163
-  }
4163
+    }
4164 4164
 
4165
-  function transformHostResultsLinks($matches) {
4165
+    function transformHostResultsLinks($matches) {
4166 4166
     $link = $matches[0];
4167 4167
     $newBaseUrl = $this->getNewBaseUrl($matches);
4168 4168
     if ($newBaseUrl !== NULL) {
4169
-      $id = $matches[3];
4170
-      $link = "{$newBaseUrl}host/{$id}/tasks";
4169
+        $id = $matches[3];
4170
+        $link = "{$newBaseUrl}host/{$id}/tasks";
4171 4171
     }
4172 4172
     return $link;
4173
-  }
4173
+    }
4174 4174
   
4175
-  function transformUserResultsLinks($matches) {
4175
+    function transformUserResultsLinks($matches) {
4176 4176
     $link = $matches[0];
4177 4177
     $newBaseUrl = $this->getNewBaseUrl($matches);
4178 4178
     if ($newBaseUrl !== NULL) {
4179
-      $link = "{$newBaseUrl}account/tasks";
4179
+        $link = "{$newBaseUrl}account/tasks";
4180 4180
     }
4181 4181
     return $link;
4182
-  }
4182
+    }
4183 4183
   
4184
-  function transformHostLinks($matches) {
4184
+    function transformHostLinks($matches) {
4185 4185
     $link = $matches[0];
4186 4186
     $newBaseUrl = $this->getNewBaseUrl($matches);
4187 4187
     if ($newBaseUrl !== NULL) {
4188
-      $id = $matches[3];
4189
-      $link = "{$newBaseUrl}host/{$id}";
4188
+        $id = $matches[3];
4189
+        $link = "{$newBaseUrl}host/{$id}";
4190 4190
     }
4191 4191
     return $link;
4192
-  }
4192
+    }
4193 4193
   
4194
-  function transformUserHostsLinks($matches) {
4194
+    function transformUserHostsLinks($matches) {
4195 4195
     $link = $matches[0];
4196 4196
     $newBaseUrl = $this->getNewBaseUrl($matches);
4197 4197
     if ($newBaseUrl !== NULL) {
4198
-      $uid = boincuser_lookup_uid($matches[3]);
4199
-      if ($uid) {
4198
+        $uid = boincuser_lookup_uid($matches[3]);
4199
+        if ($uid) {
4200 4200
         $link = "{$newBaseUrl}account/{$uid}/computers";
4201
-      }
4201
+        }
4202 4202
     }
4203 4203
     return $link;
4204
-  }
4204
+    }
4205 4205
   
4206
-  function transformForumIndexLinks($matches) {
4206
+    function transformForumIndexLinks($matches) {
4207 4207
     $link = $matches[0];
4208 4208
     $newBaseUrl = $this->getNewBaseUrl($matches);
4209 4209
     if ($newBaseUrl !== NULL) {
4210
-      $link = "{$newBaseUrl}community/forum";
4210
+        $link = "{$newBaseUrl}community/forum";
4211 4211
     }
4212 4212
     return $link;
4213
-  }
4213
+    }
4214 4214
 
4215 4215
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincteam/boincteam.module 1 patch
Indentation   +571 added lines, -571 removed lines patch added patch discarded remove patch
@@ -26,82 +26,82 @@  discard block
 block discarded – undo
26 26
  * Implementation of hook_menu()
27 27
  */
28 28
 function boincteam_menu() {
29
-  $items = array();
30
-  $items['community/teams/%/assume-foundership'] = array(
29
+    $items = array();
30
+    $items['community/teams/%/assume-foundership'] = array(
31 31
     'page callback' => 'boincteam_assume_foundership',
32 32
     'page arguments' => array(2),
33 33
     'access callback' => 'boincteam_is_member',
34 34
     'access arguments' => array(2),
35 35
     'type' => MENU_CALLBACK
36
-  );
37
-  $items['community/teams/%/join'] = array(
36
+    );
37
+    $items['community/teams/%/join'] = array(
38 38
     'page callback' => 'boincteam_join',
39 39
     'page arguments' => array(2),
40 40
     'access arguments' => array('join boincteam'),
41 41
     'type' => MENU_CALLBACK
42
-  );
43
-  $items['community/teams/%/leave'] = array(
42
+    );
43
+    $items['community/teams/%/leave'] = array(
44 44
     'page callback' => 'boincteam_leave',
45 45
     'page arguments' => array(2),
46 46
     'access arguments' => array('join boincteam'),
47 47
     'type' => MENU_CALLBACK
48
-  );
49
-  $items['community/teams/%/delete'] = array(
48
+    );
49
+    $items['community/teams/%/delete'] = array(
50 50
     'page callback' => 'boincteam_delete',
51 51
     'page arguments' => array(2),
52 52
     'access callback' => 'boincteam_is_founder',
53 53
     'access arguments' => array(2),
54 54
     'type' => MENU_CALLBACK
55
-  );
56
-  $items['community/teams/%/deny-foundership-request'] = array(
55
+    );
56
+    $items['community/teams/%/deny-foundership-request'] = array(
57 57
     'page callback' => 'boincteam_deny_foundership_request',
58 58
     'page arguments' => array(2),
59 59
     'access callback' => 'boincteam_is_founder',
60 60
     'access arguments' => array(2),
61 61
     'type' => MENU_CALLBACK
62
-  );
63
-  $items['community/teams/%/edit/admins/remove/%'] = array(
62
+    );
63
+    $items['community/teams/%/edit/admins/remove/%'] = array(
64 64
     'page callback' => 'boincteam_remove_admin',
65 65
     'page arguments' => array(2,6),
66 66
     'access callback' => 'boincteam_is_founder',
67 67
     'access arguments' => array(2),
68 68
     'type' => MENU_CALLBACK
69
-  );
70
-  $items['community/teams/%/edit/founder/set/%'] = array(
69
+    );
70
+    $items['community/teams/%/edit/founder/set/%'] = array(
71 71
     'page callback' => 'boincteam_set_founder',
72 72
     'page arguments' => array(2,6),
73 73
     'access callback' => 'boincteam_is_founder',
74 74
     'access arguments' => array(2),
75 75
     'type' => MENU_CALLBACK
76
-  );
77
-  $items['community/teams/%/edit/members/remove/%'] = array(
76
+    );
77
+    $items['community/teams/%/edit/members/remove/%'] = array(
78 78
     'page callback' => 'boincteam_remove_member',
79 79
     'page arguments' => array(2,6),
80 80
     'access callback' => 'boincteam_is_founder',
81 81
     'access arguments' => array(2),
82 82
     'type' => MENU_CALLBACK
83
-  );
84
-  $items['community/teams/%/history/xml'] = array(
83
+    );
84
+    $items['community/teams/%/history/xml'] = array(
85 85
     'page callback' => 'boincteam_history_xml',
86 86
     'page arguments' => array(2),
87 87
     'access callback' => 'boincteam_is_admin',
88 88
     'access arguments' => array(2),
89 89
     'type' => MENU_CALLBACK
90
-  );
91
-  $items['community/teams/%/request-foundership'] = array(
90
+    );
91
+    $items['community/teams/%/request-foundership'] = array(
92 92
     'page callback' => 'boincteam_request_foundership',
93 93
     'page arguments' => array(2),
94 94
     'access callback' => 'boincteam_is_member',
95 95
     'access arguments' => array(2),
96 96
     'type' => MENU_CALLBACK
97
-  );
98
-  $items['community/teams/%/user-name-autocomplete'] = array(
97
+    );
98
+    $items['community/teams/%/user-name-autocomplete'] = array(
99 99
     'page callback' => '_boincuser_user_name_autocomplete',
100 100
     'access callback' => 'boincteam_is_founder',
101 101
     'access arguments' => array(2),
102 102
     'type' => MENU_CALLBACK,
103
-  );
104
-  $items['community/teams/%/message-all-members'] = array(
103
+    );
104
+    $items['community/teams/%/message-all-members'] = array(
105 105
     'title' => bts('Send Message to Team', array(), NULL, 'boinc:team-manage'),
106 106
     'description' => bts('Send Message to Team', array(), NULL, 'boinc:team-manage'),
107 107
     'page callback' => 'drupal_get_form',
@@ -109,8 +109,8 @@  discard block
 block discarded – undo
109 109
     'access callback' => 'boincteam_is_admin',
110 110
     'access arguments' => array(2),
111 111
     'type' => MENU_CALLBACK,
112
-  );
113
-  $items['admin/boinc/utility-team-delete'] = array(
112
+    );
113
+    $items['admin/boinc/utility-team-delete'] = array(
114 114
     'title' => 'Utility: Delete SPAM Teams',
115 115
     'description' => 'Utililities to help delete BOINC teams created by SPAMMERs.',
116 116
     'page callback' => 'drupal_get_form',
@@ -118,9 +118,9 @@  discard block
 block discarded – undo
118 118
     'access arguments' => array('administer site configuration'),
119 119
     'type' => MENU_NORMAL_ITEM,
120 120
     'file' => 'boincteam.admin.inc',
121
-  );
121
+    );
122 122
    
123
-  return $items;
123
+    return $items;
124 124
 }
125 125
 
126 126
 /**
@@ -137,41 +137,41 @@  discard block
 block discarded – undo
137 137
 
138 138
   See https://www.drupal.org/node/945102
139 139
 */
140
-  return array(
140
+    return array(
141 141
     'boincteam_utility_team_table' => array(
142
-      'arguments' => array('form' => NULL),
143
-      'file' => 'boincteam.admin.inc',
142
+        'arguments' => array('form' => NULL),
143
+        'file' => 'boincteam.admin.inc',
144 144
     ),
145
-  );
145
+    );
146 146
 }
147 147
 
148 148
 /**
149 149
 * Implementation of hook_views_api().
150 150
 */
151 151
 function boincteam_views_api() {
152
-  return array(
152
+    return array(
153 153
     'api' => 2.0,
154 154
     'path' => drupal_get_path('module', 'boincteam')
155
-  );
155
+    );
156 156
 }
157 157
 
158 158
 /**
159 159
  * Implementation of hook_perm()
160 160
  */
161 161
 function boincteam_perm() {
162
-  return array('join boincteam', 'create boincteam', 'manage boincteam');
162
+    return array('join boincteam', 'create boincteam', 'manage boincteam');
163 163
 }
164 164
 
165 165
 /**
166 166
  * Implementation of hook_cron()
167 167
  */
168 168
 function boincteam_cron() {
169
-  // Sync teams from BOINC DB every day to catch BOINC-wide team updates
170
-  $last_sync = variable_get('boincteam_last_sync', 0);
171
-  if ($last_sync < time() - 24*60*60) {
169
+    // Sync teams from BOINC DB every day to catch BOINC-wide team updates
170
+    $last_sync = variable_get('boincteam_last_sync', 0);
171
+    if ($last_sync < time() - 24*60*60) {
172 172
     boincteam_sync();
173 173
     variable_set('boincteam_last_sync', time());
174
-  }
174
+    }
175 175
 }
176 176
 
177 177
 /**
@@ -185,41 +185,41 @@  discard block
 block discarded – undo
185 185
 * Implementation of hook_views_pre_execute().
186 186
 */
187 187
 function boincteam_views_pre_execute(&$view) {
188
-  /* Specific boinc_teams sub-views use the boinc readonly replica
188
+    /* Specific boinc_teams sub-views use the boinc readonly replica
189 189
    * DB. These sub-views defined below by their title. If additional
190 190
    * sub-views need to be added, add their title to the list of cases
191 191
    * below. If a sub-view needs to be reverted to use the master DB,
192 192
    * then remove it from the list of cases.
193 193
    */
194
-  if ($view->name == 'boinc_teams') {
194
+    if ($view->name == 'boinc_teams') {
195 195
     switch ($view->display[$view->current_display]->display_title) {
196 196
     case 'Top teams overview pane':
197 197
     case 'Top teams pane':
198 198
     case 'Page':
199 199
       $view->base_database = 'boinc_ro';
200 200
     }
201
-  }
201
+    }
202 202
 }
203 203
 
204 204
 /**
205 205
  * Implementation of hook_cron_queue_info()
206 206
  */
207 207
 function boincteam_cron_queue_info() {
208
-  $queues = array();
209
-  $queues['queue_teamdelete'] = array(
208
+    $queues = array();
209
+    $queues['queue_teamdelete'] = array(
210 210
     'worker callback' => 'boincteam_delete',
211 211
     'time' => 60,
212
-  );
212
+    );
213 213
 }
214 214
 
215 215
 /**
216 216
  * Implementation of hook_mail_alter()
217 217
  */
218 218
 function boincteam_mail_alter(&$message) {
219
-  if (isset($message['params']['boincteam_headers'])) {
219
+    if (isset($message['params']['boincteam_headers'])) {
220 220
     $message['headers']['Bcc'] = $message['params']['boincteam_headers']['Bcc'];
221 221
     $message['to'] = '';
222
-  }
222
+    }
223 223
 }
224 224
 
225 225
 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
@@ -231,49 +231,49 @@  discard block
 block discarded – undo
231 231
  * assume the role of founder
232 232
  */
233 233
 function boincteam_assume_foundership($team_id) {
234
-  global $user;
235
-  $account = user_load($user->uid);
236
-  $team = node_load($team_id);
237
-  $boincteam_id = boincteam_lookup_id($team_id);
238
-  $boincteam = boincteam_load($boincteam_id);
239
-  $boincuser_id = $account->boincuser_id;
234
+    global $user;
235
+    $account = user_load($user->uid);
236
+    $team = node_load($team_id);
237
+    $boincteam_id = boincteam_lookup_id($team_id);
238
+    $boincteam = boincteam_load($boincteam_id);
239
+    $boincuser_id = $account->boincuser_id;
240 240
   
241
-  if (boincteam_foundership_transfer_ok($boincteam)) {
241
+    if (boincteam_foundership_transfer_ok($boincteam)) {
242 242
     if ($boincuser_id == $boincteam->ping_user) {
243
-      db_set_active('boinc_rw');
244
-      db_query("
243
+        db_set_active('boinc_rw');
244
+        db_query("
245 245
         UPDATE {team}
246 246
         SET userid = '%d', ping_user = '0', ping_time = '0'
247 247
         WHERE id = '%d'",
248 248
         $boincuser_id, $boincteam_id
249
-      );
250
-      db_set_active('default');
251
-      drupal_set_message(t('You are now the founder of @team', array(
249
+        );
250
+        db_set_active('default');
251
+        drupal_set_message(t('You are now the founder of @team', array(
252 252
         '@team' => $team->title
253
-      )));
254
-      watchdog('boincteam', 'User @user assumed foundership of team @nid',
253
+        )));
254
+        watchdog('boincteam', 'User @user assumed foundership of team @nid',
255 255
         array(
256
-          '@current_user' => $account->uid,
257
-          '@nid' => $team_id
256
+            '@current_user' => $account->uid,
257
+            '@nid' => $team_id
258 258
         ), WATCHDOG_NOTICE
259
-      );
259
+        );
260 260
     }
261
-  }
262
-  else {
261
+    }
262
+    else {
263 263
     drupal_set_message(t('You are not allowed to assume foundership of this
264 264
       team.'
265 265
     ));
266
-  }
267
-  drupal_goto("community/teams/{$team_id}");
266
+    }
267
+    drupal_goto("community/teams/{$team_id}");
268 268
 }
269 269
 
270 270
 /**
271 271
  * Delete the team, if empty
272 272
  */
273 273
 function boincteam_delete($team_id) {
274
-  $team = node_load($team_id);
275
-  $boincteam = boincteam_load(boincteam_lookup_id($team_id), TRUE);
276
-  if ($boincteam->nusers == 1) {
274
+    $team = node_load($team_id);
275
+    $boincteam = boincteam_load(boincteam_lookup_id($team_id), TRUE);
276
+    if ($boincteam->nusers == 1) {
277 277
     require_boinc('team');
278 278
     $boincuser = boincuser_load();
279 279
     user_quit_team($boincuser);
@@ -282,35 +282,35 @@  discard block
 block discarded – undo
282 282
     $team->uid = 0;
283 283
     node_save($team);
284 284
     drupal_set_message(t('@team has been removed.',
285
-      array('@team' => $boincteam->name)));
285
+        array('@team' => $boincteam->name)));
286 286
     drupal_goto('community/teams');
287
-  }
288
-  else {
287
+    }
288
+    else {
289 289
     drupal_set_message(t('All members must be removed from @team before the
290 290
       team can be deleted.', array('@team' => $boincteam->name)), 'error');
291 291
     drupal_goto(strstr($_GET['q'], '/delete', TRUE));
292
-  }
292
+    }
293 293
 }
294 294
 
295 295
 /**
296 296
  * Deny a foundership transfer request
297 297
  */
298 298
 function boincteam_deny_foundership_request($team_id) {
299
-  $boincteam_id = boincteam_lookup_id($team_id);
300
-  // Remove the request from the BOINC database
301
-  db_set_active('boinc_rw');
302
-  db_query("
299
+    $boincteam_id = boincteam_lookup_id($team_id);
300
+    // Remove the request from the BOINC database
301
+    db_set_active('boinc_rw');
302
+    db_query("
303 303
     UPDATE {team}
304 304
     SET ping_user=0
305 305
     WHERE id = '%d'",
306 306
     $boincteam_id
307
-  );
308
-  db_set_active('default');
307
+    );
308
+    db_set_active('default');
309 309
   
310
-  drupal_set_message(t('The transfer request has been denied. No additional
310
+    drupal_set_message(t('The transfer request has been denied. No additional
311 311
     requests will be allowed until 90 days have passed since this request was
312 312
     made.'));
313
-  drupal_goto("community/teams/{$team_id}/edit/founder");
313
+    drupal_goto("community/teams/{$team_id}/edit/founder");
314 314
 }
315 315
   
316 316
 
@@ -318,62 +318,62 @@  discard block
 block discarded – undo
318 318
  * Get the join date of a user
319 319
  */
320 320
 function boincteam_get_member_join_date($boincteam_id, $boincuser_id = NULL) {
321
-  if (!$boincuser_id) {
321
+    if (!$boincuser_id) {
322 322
     global $user;
323 323
     $account = user_load($user->uid);
324 324
     $boincuser_id = $account->boincuser_id;
325
-  }
326
-  db_set_active('boinc_rw');
327
-  $timestamp = db_result(db_query("
325
+    }
326
+    db_set_active('boinc_rw');
327
+    $timestamp = db_result(db_query("
328 328
     SELECT timestamp FROM {team_delta} WHERE
329 329
     userid = %d AND teamid = %d AND joining = 1
330 330
     ORDER BY timestamp DESC LIMIT 1",
331 331
     $boincuser_id, $boincteam_id
332
-  ));
333
-  db_set_active('default');
334
-  return $timestamp;
332
+    ));
333
+    db_set_active('default');
334
+    return $timestamp;
335 335
 }
336 336
 
337 337
 /**
338 338
  * Get the team type for display
339 339
  */
340 340
 function boincteam_get_type($team_id) {
341
-  //$vid = boincteam_get_vocabulary_by_name('Teams'); $team->vid = $vid;
342
-  $team = node_load($team_id);
343
-  $terms = taxonomy_node_get_terms($team);
344
-  if ($terms) {
341
+    //$vid = boincteam_get_vocabulary_by_name('Teams'); $team->vid = $vid;
342
+    $team = node_load($team_id);
343
+    $terms = taxonomy_node_get_terms($team);
344
+    if ($terms) {
345 345
     $term = reset($terms);
346 346
     return $term->name;
347
-  } else {
347
+    } else {
348 348
     return null;
349
-  }
349
+    }
350 350
 }
351 351
 
352 352
 /**
353 353
  * Access a vocabulary of terms by name
354 354
  */ 
355 355
 function boincteam_get_vocabulary_by_name($name) {
356
-  $vocabs = taxonomy_get_vocabularies('team');
357
-  foreach ($vocabs as $vocab) {
356
+    $vocabs = taxonomy_get_vocabularies('team');
357
+    foreach ($vocabs as $vocab) {
358 358
     if ($vocab->name == $name) return $vocab->vid;
359
-  }
360
-  return null;
359
+    }
360
+    return null;
361 361
 }
362 362
 
363 363
 /**
364 364
  * Output the XML of the team history
365 365
  */
366 366
 function boincteam_history_xml($team_id) {
367
-  $team = node_load($team_id);
368
-  $boincteam_id = boincteam_lookup_id($team_id);
369
-  $team_history = array(
367
+    $team = node_load($team_id);
368
+    $boincteam_id = boincteam_lookup_id($team_id);
369
+    $team_history = array(
370 370
     'actions' => array(
371
-      'action' => array(),
371
+        'action' => array(),
372 372
     ),
373
-  );
373
+    );
374 374
   
375
-  db_set_active('boinc_rw');
376
-  $result = db_query("
375
+    db_set_active('boinc_rw');
376
+    $result = db_query("
377 377
     SELECT 
378 378
       td.userid AS id,
379 379
       u.name,
@@ -385,40 +385,40 @@  discard block
 block discarded – undo
385 385
     WHERE td.teamid = %d
386 386
     ORDER BY timestamp ASC",
387 387
     $boincteam_id
388
-  );
389
-  db_set_active('default');
388
+    );
389
+    db_set_active('default');
390 390
   
391
-  while ($record = db_fetch_array($result)) {
391
+    while ($record = db_fetch_array($result)) {
392 392
     $team_history['actions']['action'][] = $record;
393
-  }
393
+    }
394 394
   
395
-  header('Content-type: text/xml');
396
-  echo xml_to_text(array_to_xml($team_history));
395
+    header('Content-type: text/xml');
396
+    echo xml_to_text(array_to_xml($team_history));
397 397
 }
398 398
 
399 399
 /**
400 400
  * Convert a BOINC team ID to a Drupal team ID
401 401
  */
402 402
 function boincteam_lookup_nid($boinc_id) {
403
-  $drupal_id = db_result(db_query("SELECT nid FROM {boincteam} WHERE team_id='%d'", $boinc_id));
404
-  return $drupal_id;
403
+    $drupal_id = db_result(db_query("SELECT nid FROM {boincteam} WHERE team_id='%d'", $boinc_id));
404
+    return $drupal_id;
405 405
 }
406 406
 
407 407
 /**
408 408
  * Convert a Drupal team ID to a BOINC team ID
409 409
  */
410 410
 function boincteam_lookup_id($nid) {
411
-  $boinc_id = db_result(db_query("SELECT team_id FROM {boincteam} WHERE nid = '%d'", $nid));
412
-  return $boinc_id;
411
+    $boinc_id = db_result(db_query("SELECT team_id FROM {boincteam} WHERE nid = '%d'", $nid));
412
+    return $boinc_id;
413 413
 }
414 414
 
415 415
 /**
416 416
  * Get a BOINC team object
417 417
  */
418 418
 function boincteam_load($boincteam_id, $full_object = FALSE) {
419
-  require_boinc(array('team'));
420
-  $team = BoincTeam::lookup_id($boincteam_id);
421
-  if ($team AND $full_object) {
419
+    require_boinc(array('team'));
420
+    $team = BoincTeam::lookup_id($boincteam_id);
421
+    if ($team AND $full_object) {
422 422
     $team->nusers = BoincUser::count("teamid={$team->id}");
423 423
     $team->nusers_worked = BoincUser::count("teamid={$team->id} and total_credit>0");
424 424
     $team->nusers_active = BoincUser::count("teamid={$team->id} and expavg_credit>0.1");
@@ -426,313 +426,313 @@  discard block
 block discarded – undo
426 426
     $team->new_members = new_member_list($boincteam_id);
427 427
     $team->admins = admin_list($boincteam_id);
428 428
     $team->founder = BoincUser::lookup_id($team->userid);
429
-  }
430
-  return $team;
429
+    }
430
+    return $team;
431 431
 }
432 432
 
433 433
 /**
434 434
  * Check if a user is the team founder
435 435
  */
436 436
 function boincteam_is_founder($nid, $uid = NULL) {
437
-  if (!$uid) {
437
+    if (!$uid) {
438 438
     global $user;
439 439
     $uid = $user->uid;
440
-  }
441
-  if (!boincteam_is_member($nid, $uid)) {
440
+    }
441
+    if (!boincteam_is_member($nid, $uid)) {
442 442
     return FALSE;
443
-  }
444
-  $team_id = boincteam_lookup_id($nid);
445
-  require_boinc('team');
446
-  return is_team_founder(boincuser_load($uid, TRUE), boincteam_load($team_id));
443
+    }
444
+    $team_id = boincteam_lookup_id($nid);
445
+    require_boinc('team');
446
+    return is_team_founder(boincuser_load($uid, TRUE), boincteam_load($team_id));
447 447
 }
448 448
 
449 449
 /**
450 450
  * Check if a user is a team admin
451 451
  */
452 452
 function boincteam_is_admin($nid, $uid = NULL) {
453
-  if (!$uid) {
453
+    if (!$uid) {
454 454
     global $user;
455 455
     $uid = $user->uid;
456
-  }
457
-  if (!boincteam_is_member($nid, $uid)) {
456
+    }
457
+    if (!boincteam_is_member($nid, $uid)) {
458 458
     return FALSE;
459
-  }
460
-  $team_id = boincteam_lookup_id($nid);
461
-  require_boinc('team');
462
-  return is_team_admin(boincuser_load($uid, TRUE), boincteam_load($team_id));
459
+    }
460
+    $team_id = boincteam_lookup_id($nid);
461
+    require_boinc('team');
462
+    return is_team_admin(boincuser_load($uid, TRUE), boincteam_load($team_id));
463 463
 }
464 464
 
465 465
 /**
466 466
  * Check if a user is a team member
467 467
  */
468 468
 function boincteam_is_member($nid, $uid = NULL) {
469
-  if (!$uid) {
469
+    if (!$uid) {
470 470
     global $user;
471 471
     $uid = $user->uid;
472
-  }
473
-  $account = user_load($uid);
474
-  return ($account->team == $nid);
472
+    }
473
+    $account = user_load($uid);
474
+    return ($account->team == $nid);
475 475
 }
476 476
 
477 477
 /**
478 478
  * Display any persistent team messages
479 479
  */
480 480
 function boincteam_show_messages() {
481
-  global $user;
482
-  $uid = $user->uid;
483
-  $account = user_load($uid);
484
-  if ($account->team) {
481
+    global $user;
482
+    $uid = $user->uid;
483
+    $account = user_load($uid);
484
+    if ($account->team) {
485 485
     if (boincteam_is_founder($account->team, $account->uid)) {
486
-      // Set a notice of any pending foundership requests
487
-      $boincteam_id = boincteam_lookup_id($account->team);
488
-      $boincteam = boincteam_load($boincteam_id);
489
-      if ($boincteam->ping_user > 0) {
486
+        // Set a notice of any pending foundership requests
487
+        $boincteam_id = boincteam_lookup_id($account->team);
488
+        $boincteam = boincteam_load($boincteam_id);
489
+        if ($boincteam->ping_user > 0) {
490 490
         $foundership_url = "community/teams/{$account->team}/edit/founder";
491 491
         if (substr($_GET['q'], 0, strlen($foundership_url)) != $foundership_url) {
492
-          drupal_set_message(
492
+            drupal_set_message(
493 493
             bts(
494
-              'A foundership transfer request has been made for your team. Please !respond.',
495
-              array('!respond' => l(bts('respond to the request', array(), NULL, 'boinc:team-founder-change'), $foundership_url)),
496
-              NULL, 'boinc:team-founder-change'),
494
+                'A foundership transfer request has been made for your team. Please !respond.',
495
+                array('!respond' => l(bts('respond to the request', array(), NULL, 'boinc:team-founder-change'), $foundership_url)),
496
+                NULL, 'boinc:team-founder-change'),
497 497
             'warning', FALSE
498
-          );
498
+            );
499
+        }
499 500
         }
500
-      }
501 501
     }
502
-  }
502
+    }
503 503
 }
504 504
 
505 505
 /**
506 506
  * Add a user to a team
507 507
  */
508 508
 function boincteam_join($team_id) {
509
-  global $user;
510
-  $account = user_load($user->uid);
509
+    global $user;
510
+    $account = user_load($user->uid);
511 511
   
512
-  $boincteam_id = boincteam_lookup_id($team_id);
513
-  $boincteam = boincteam_load($boincteam_id);
514
-  if ($boincteam->joinable AND $account->team != $team_id) {
512
+    $boincteam_id = boincteam_lookup_id($team_id);
513
+    $boincteam = boincteam_load($boincteam_id);
514
+    if ($boincteam->joinable AND $account->team != $team_id) {
515 515
     require_boinc('team');
516 516
     $boincuser = boincuser_load();
517 517
     if (user_join_team($boincteam, $boincuser)) {
518
-      drupal_set_message(t('You are now a member of @team!',
518
+        drupal_set_message(t('You are now a member of @team!',
519 519
         array('@team' => $boincteam->name)));
520
-      watchdog('boincteam', 'added user @uid to team @nid',
520
+        watchdog('boincteam', 'added user @uid to team @nid',
521 521
         array('@uid' => $user->uid, '@nid' => $team_id), WATCHDOG_NOTICE);
522 522
     }
523 523
     else {
524
-      drupal_set_message(t('There was a problem joining @team, please try again
524
+        drupal_set_message(t('There was a problem joining @team, please try again
525 525
         later', array('@team' => $boincteam->name)));
526
-      watchdog('boincteam', 'error adding user @uid to team @nid',
526
+        watchdog('boincteam', 'error adding user @uid to team @nid',
527 527
         array('@uid' => $user->uid, '@nid' => $team_id), WATCHDOG_ERROR);
528 528
     }
529
-  }
530
-  drupal_goto("community/teams/{$team_id}");
529
+    }
530
+    drupal_goto("community/teams/{$team_id}");
531 531
 }
532 532
 
533 533
 /**
534 534
  * Leave a team
535 535
  */
536 536
 function boincteam_leave($team_id) {
537
-  global $user;
538
-  $account = user_load($user->uid);
537
+    global $user;
538
+    $account = user_load($user->uid);
539 539
   
540
-  $boincteam_id = boincteam_lookup_id($team_id);
541
-  $boincteam = boincteam_load($boincteam_id);
542
-  if ($account->team == $team_id) {
540
+    $boincteam_id = boincteam_lookup_id($team_id);
541
+    $boincteam = boincteam_load($boincteam_id);
542
+    if ($account->team == $team_id) {
543 543
     require_boinc('team');
544 544
     $boincuser = boincuser_load();
545 545
     user_quit_team($boincuser);
546 546
     drupal_set_message(t('You are no longer a member of @team.',
547
-      array('@team' => $boincteam->name)));
547
+        array('@team' => $boincteam->name)));
548 548
     watchdog('boincteam', 'removed user @uid from team @nid',
549
-      array('@uid' => $user->uid, '@nid' => $team_id), WATCHDOG_NOTICE);
550
-  }
551
-  else {
552
-      drupal_set_message(t('You are not a member of @team, so you cannot revoke
549
+        array('@uid' => $user->uid, '@nid' => $team_id), WATCHDOG_NOTICE);
550
+    }
551
+    else {
552
+        drupal_set_message(t('You are not a member of @team, so you cannot revoke
553 553
         your membership to it.', array('@team' => $boincteam->name)));
554
-  }
555
-  drupal_goto("community/teams/{$team_id}");
554
+    }
555
+    drupal_goto("community/teams/{$team_id}");
556 556
 }
557 557
 
558 558
 /**
559 559
  * Remove team admin status from a user
560 560
  */
561 561
 function boincteam_remove_admin($team_id, $user_id) {
562
-  global $user;
563
-  $account = user_load($user_id);
564
-  $team = node_load($team_id);
565
-  $boincteam_id = boincteam_lookup_id($team_id);
566
-  $boincuser_id = $account->boincuser_id;
562
+    global $user;
563
+    $account = user_load($user_id);
564
+    $team = node_load($team_id);
565
+    $boincteam_id = boincteam_lookup_id($team_id);
566
+    $boincuser_id = $account->boincuser_id;
567 567
   
568
-  if (boincteam_is_admin($team_id, $account->uid)) {
568
+    if (boincteam_is_admin($team_id, $account->uid)) {
569 569
     // Update the team in the BOINC db
570 570
     db_set_active('boinc_rw');
571 571
     db_query("
572 572
       DELETE FROM {team_admin} WHERE
573 573
         teamid = '%d' AND userid = '%d'",
574
-      $boincteam_id,
575
-      $boincuser_id
574
+        $boincteam_id,
575
+        $boincuser_id
576 576
     );
577 577
     db_set_active('default');
578 578
     drupal_set_message(t('@user is no longer an admin of @team.',
579
-      array(
579
+        array(
580 580
         '@user' => $account->boincuser_name,
581 581
         '@team' => $team->title
582
-      )
582
+        )
583 583
     ));
584 584
     watchdog('boincteam', 'User @current_user removed admin status for user
585 585
       @uid from team @nid',
586
-      array(
586
+        array(
587 587
         '@current_user' => $user->uid,
588 588
         '@uid' => $account->uid, 
589 589
         '@nid' => $team_id
590
-      ), WATCHDOG_NOTICE);
591
-  }
592
-  drupal_goto("community/teams/{$team_id}/edit/admins");
590
+        ), WATCHDOG_NOTICE);
591
+    }
592
+    drupal_goto("community/teams/{$team_id}/edit/admins");
593 593
 }
594 594
 
595 595
 /**
596 596
  * Remove a user from a team
597 597
  */
598 598
 function boincteam_remove_member($team_id, $user_id) {
599
-  global $user;
600
-  $account = user_load($user_id);
599
+    global $user;
600
+    $account = user_load($user_id);
601 601
   
602
-  $boincteam_id = boincteam_lookup_id($team_id);
603
-  $boincteam = boincteam_load($boincteam_id);
604
-  if ($account->team == $team_id) {
602
+    $boincteam_id = boincteam_lookup_id($team_id);
603
+    $boincteam = boincteam_load($boincteam_id);
604
+    if ($account->team == $team_id) {
605 605
     require_boinc('team');
606 606
     $boincuser = boincuser_load($user_id, TRUE);
607 607
     user_quit_team($boincuser);
608 608
     drupal_set_message(t('@user has been removed from @team.',
609
-      array(
609
+        array(
610 610
         '@user' => $account->boincuser_name,
611 611
         '@team' => $boincteam->name
612
-      )
612
+        )
613 613
     ));
614 614
     watchdog('boincteam', 'User @current_user removed user @uid from team @nid',
615
-      array(
615
+        array(
616 616
         '@current_user' => $user->uid,
617 617
         '@uid' => $account->uid, 
618 618
         '@nid' => $team_id
619
-      ), WATCHDOG_NOTICE);
620
-  }
621
-  else {
622
-      drupal_set_message(t('@user is not a member of @team, so you cannot
619
+        ), WATCHDOG_NOTICE);
620
+    }
621
+    else {
622
+        drupal_set_message(t('@user is not a member of @team, so you cannot
623 623
         revoke the membership.', array(
624
-          '@user' => $account->boincuser_name,
625
-          '@team' => $boincteam->name
624
+            '@user' => $account->boincuser_name,
625
+            '@team' => $boincteam->name
626 626
         )
627
-      ));
628
-  }
629
-  drupal_goto("community/teams/{$team_id}/edit/members");
627
+        ));
628
+    }
629
+    drupal_goto("community/teams/{$team_id}/edit/members");
630 630
 }
631 631
 
632 632
 /**
633 633
  * Request a foundership transfer
634 634
  */
635 635
 function boincteam_request_foundership($team_id) {
636
-  global $user;
637
-  $account = user_load($user->uid);
638
-  $team = node_load($team_id);
639
-  $boincteam_id = boincteam_lookup_id($team_id);
640
-  $boincteam = boincteam_load($boincteam_id);
641
-  $boincuser_id = $account->boincuser_id;
636
+    global $user;
637
+    $account = user_load($user->uid);
638
+    $team = node_load($team_id);
639
+    $boincteam_id = boincteam_lookup_id($team_id);
640
+    $boincteam = boincteam_load($boincteam_id);
641
+    $boincuser_id = $account->boincuser_id;
642 642
   
643
-  if (boincteam_is_founder($team_id, $account->uid)) {
643
+    if (boincteam_is_founder($team_id, $account->uid)) {
644 644
     // Shouldn't even be here...
645 645
     drupal_set_message(t('@user is already the team founder.',
646
-      array(
646
+        array(
647 647
         '@user' => $account->boincuser_name
648
-      )
648
+        )
649 649
     ), 'warning');
650
-  }
651
-  elseif (!boincteam_new_foundership_transfer_request_ok($team_id)) {
650
+    }
651
+    elseif (!boincteam_new_foundership_transfer_request_ok($team_id)) {
652 652
     // It hasn't been long enough since the last transfer request
653 653
     drupal_set_message(t('A foundership change was requested during the last 90
654 654
       days, so new requests are not allowed. Please try again later.'
655 655
     ), 'warning');
656
-  }
657
-  elseif (boincteam_is_member($team_id, $account->uid)) {
656
+    }
657
+    elseif (boincteam_is_member($team_id, $account->uid)) {
658 658
     // Log the transfer request
659 659
     db_set_active('boinc_rw');
660 660
     db_query("
661 661
       UPDATE {team}
662 662
       SET ping_user = '%d', ping_time='%d'
663 663
       WHERE id = '%d'",
664
-      $boincuser_id, time(), $boincteam_id
664
+        $boincuser_id, time(), $boincteam_id
665 665
     );
666 666
     db_set_active('default');
667 667
     drupal_set_message(t('You have requested foundership of @team. The current
668 668
       founder has 60 days to respond to this request.',
669
-      array(
669
+        array(
670 670
         '@team' => $team->title
671
-      )
671
+        )
672 672
     ));
673 673
     watchdog('boincteam', 'User @user requested foundership of team @nid',
674
-      array(
674
+        array(
675 675
         '@current_user' => $account->uid,
676 676
         '@nid' => $team_id
677
-      ), WATCHDOG_NOTICE);
678
-  }
679
-  drupal_goto("community/teams/{$team_id}");
677
+        ), WATCHDOG_NOTICE);
678
+    }
679
+    drupal_goto("community/teams/{$team_id}");
680 680
 }
681 681
 
682 682
 /**
683 683
  * Transfer foundership to another team member
684 684
  */
685 685
 function boincteam_set_founder($team_id, $user_id) {
686
-  global $user;
687
-  $account = user_load($user_id);
688
-  $team = node_load($team_id);
689
-  $boincteam_id = boincteam_lookup_id($team_id);
690
-  $boincuser_id = $account->boincuser_id;
686
+    global $user;
687
+    $account = user_load($user_id);
688
+    $team = node_load($team_id);
689
+    $boincteam_id = boincteam_lookup_id($team_id);
690
+    $boincuser_id = $account->boincuser_id;
691 691
   
692
-  if (boincteam_is_member($team_id, $account->uid)) {
692
+    if (boincteam_is_member($team_id, $account->uid)) {
693 693
     // Update the team in the BOINC db
694 694
     db_set_active('boinc_rw');
695 695
     db_query("
696 696
       UPDATE {team}
697 697
       SET userid = '%d', ping_user=0
698 698
       WHERE id = '%d'",
699
-      $boincuser_id, $boincteam_id
699
+        $boincuser_id, $boincteam_id
700 700
     );
701 701
     db_set_active('default');
702 702
     drupal_set_message(t('Foundership of @team has been transfered to @user.',
703
-      array(
703
+        array(
704 704
         '@user' => $account->boincuser_name,
705 705
         '@team' => $team->title
706
-      )
706
+        )
707 707
     ));
708 708
     watchdog('boincteam', 'User @current_user transferred foundership of team
709 709
       @nid to user @uid',
710
-      array(
710
+        array(
711 711
         '@current_user' => $user->uid,
712 712
         '@uid' => $account->uid, 
713 713
         '@nid' => $team_id
714
-      ), WATCHDOG_NOTICE);
715
-  }
716
-  drupal_goto("community/teams/{$team_id}");
714
+        ), WATCHDOG_NOTICE);
715
+    }
716
+    drupal_goto("community/teams/{$team_id}");
717 717
 }
718 718
 
719 719
 /**
720 720
  * See if a new foundership transfer request is allowed
721 721
  */
722 722
 function boincteam_new_foundership_transfer_request_ok($team_id) {
723
-  $boincteam_id = boincteam_lookup_id($team_id);
724
-  $boincteam = boincteam_load($boincteam_id);
725
-  $now = time();
726
-  if ($boincteam->ping_user <= 0) {
723
+    $boincteam_id = boincteam_lookup_id($team_id);
724
+    $boincteam = boincteam_load($boincteam_id);
725
+    $now = time();
726
+    if ($boincteam->ping_user <= 0) {
727 727
     if ($boincteam->ping_time < $now - 60 * (24*60*60)) {
728
-      return TRUE;
728
+        return TRUE;
729 729
     }
730 730
     return FALSE;
731
-  }
732
-  if ($boincteam->ping_time < $now - 90 * (24*60*60)) {
731
+    }
732
+    if ($boincteam->ping_time < $now - 90 * (24*60*60)) {
733 733
     return TRUE;
734
-  }
735
-  return FALSE;
734
+    }
735
+    return FALSE;
736 736
 }
737 737
 
738 738
 /** 
@@ -754,18 +754,18 @@  discard block
 block discarded – undo
754 754
  * Check if a user has an active foundership request with a team
755 755
  */
756 756
 function boincteam_user_requested_foundership($team_id, $user_id = NULL) {
757
-  if (!$user_id) {
757
+    if (!$user_id) {
758 758
     global $user;
759 759
     $user_id = $user->uid;
760
-  }
761
-  $account = user_load($user_id);
762
-  $boincteam_id = boincteam_lookup_id($team_id);
763
-  $boincteam = boincteam_load($boincteam_id);
760
+    }
761
+    $account = user_load($user_id);
762
+    $boincteam_id = boincteam_lookup_id($team_id);
763
+    $boincteam = boincteam_load($boincteam_id);
764 764
   
765
-  if ($boincteam->ping_user == $account->boincuser_id) {
765
+    if ($boincteam->ping_user == $account->boincuser_id) {
766 766
     // Be sure the request is still active
767 767
     return !boincteam_new_foundership_transfer_request_ok($team_id);
768
-  }
768
+    }
769 769
 }
770 770
 
771 771
 
@@ -777,125 +777,125 @@  discard block
 block discarded – undo
777 777
  * General info about team admins
778 778
  */                                         
779 779
 function boincteam_about_admins_panel() {
780
-  $output = '';
781
-  $output .= '<h2 class="pane-title">' . bts('About team admins', array(), NULL, 'boinc:team-admins-panel') . '</h2>';
782
-  $output .= '<div>';
783
-  $output .= '<p>' . bts('Team admins can:', array(), NULL, 'boinc:team-admins-panel') . '</p>';
784
-  $output .= '<ul>';
785
-  $output .= '  <li>' . bts('Edit team information', array(), NULL, 'boinc:team-admins-panel') . '</li>';
786
-  $output .= '  <li>' . bts("View the team's join / quit history", array(), NULL, 'boinc:team-admins-panel') . '</li>';
787
-  $output .= '  <li>' . bts('Moderate the team forum', array(), NULL, 'boinc:team-admins-panel') . '</li>';
788
-  $output .= '  <li>' . bts('Remove members from the team', array(), NULL, 'boinc:team-admins-panel') . '</li>';
789
-  $output .= '  <li>' . bts('Disband a team if it has no members', array(), NULL, 'boinc:team-admins-panel') . '</li>';
790
-  $output .= '</ul>';
791
-  $output .= '</div>';
792
-  $output .= '<div>';
793
-  $output .= '<p>' . bts('Team admins cannot:', array(), NULL, 'boinc:team-admins-panel') . '</p>';
794
-  $output .= '<ul>';
795
-  $output .= '  <li>' . bts('Change the team founder', array(), NULL, 'boinc:team-admins-panel') . '</li>';
796
-  $output .= '  <li>' . bts('Remove members', array(), NULL, 'boinc:team-admins-panel') . '</li>';
797
-  $output .= '  <li>' . bts('Add / Remove team admins', array(), NULL, 'boinc:team-admins-panel') . '</li>';
798
-  $output .= '</ul>';
799
-  $output .= '</div>';
800
-  $output .= '<p>' . bts('If a team admin quits the team, they cease to be a'
780
+    $output = '';
781
+    $output .= '<h2 class="pane-title">' . bts('About team admins', array(), NULL, 'boinc:team-admins-panel') . '</h2>';
782
+    $output .= '<div>';
783
+    $output .= '<p>' . bts('Team admins can:', array(), NULL, 'boinc:team-admins-panel') . '</p>';
784
+    $output .= '<ul>';
785
+    $output .= '  <li>' . bts('Edit team information', array(), NULL, 'boinc:team-admins-panel') . '</li>';
786
+    $output .= '  <li>' . bts("View the team's join / quit history", array(), NULL, 'boinc:team-admins-panel') . '</li>';
787
+    $output .= '  <li>' . bts('Moderate the team forum', array(), NULL, 'boinc:team-admins-panel') . '</li>';
788
+    $output .= '  <li>' . bts('Remove members from the team', array(), NULL, 'boinc:team-admins-panel') . '</li>';
789
+    $output .= '  <li>' . bts('Disband a team if it has no members', array(), NULL, 'boinc:team-admins-panel') . '</li>';
790
+    $output .= '</ul>';
791
+    $output .= '</div>';
792
+    $output .= '<div>';
793
+    $output .= '<p>' . bts('Team admins cannot:', array(), NULL, 'boinc:team-admins-panel') . '</p>';
794
+    $output .= '<ul>';
795
+    $output .= '  <li>' . bts('Change the team founder', array(), NULL, 'boinc:team-admins-panel') . '</li>';
796
+    $output .= '  <li>' . bts('Remove members', array(), NULL, 'boinc:team-admins-panel') . '</li>';
797
+    $output .= '  <li>' . bts('Add / Remove team admins', array(), NULL, 'boinc:team-admins-panel') . '</li>';
798
+    $output .= '</ul>';
799
+    $output .= '</div>';
800
+    $output .= '<p>' . bts('If a team admin quits the team, they cease to be a'
801 801
     . ' team admin. We recommend only selecting people you know and trust', array(), NULL, 'boinc:team-admins-panel')
802 802
     . '</p>';
803
-  return $output;
803
+    return $output;
804 804
 }
805 805
 
806 806
 /**
807 807
  * General info about changing the team founder
808 808
  */                                         
809 809
 function boincteam_about_founder_panel() {
810
-  $output = '';
811
-  $output .= '<h2 class="pane-title">' . bts('Changing the team founder', array(), NULL, 'boinc:team-founder-panel')
810
+    $output = '';
811
+    $output .= '<h2 class="pane-title">' . bts('Changing the team founder', array(), NULL, 'boinc:team-founder-panel')
812 812
     . '</h2>';
813
-  $output .= '<div>';
814
-  $output .= '<p>' . bts('Notes about changes in foundership:', array(), NULL, 'boinc:team-founder-panel') . '</p>';
815
-  $output .= '<ul>';
816
-  $output .= '  <li>' . bts('Any member of the team is eligible', array(), NULL, 'boinc:team-founder-panel') . '</li>';
817
-  $output .= '  <li>' . bts('Current founder becomes a normal user', array(), NULL, 'boinc:team-founder-panel') . '</li>';
818
-  $output .= '</ul>';
819
-  $output .= '</div>';
820
-  $output .= '<div>';
821
-  $output .= '<p>' . bts('Foundership can be requested by team members:', array(), NULL, 'boinc:team-founder-panel')
813
+    $output .= '<div>';
814
+    $output .= '<p>' . bts('Notes about changes in foundership:', array(), NULL, 'boinc:team-founder-panel') . '</p>';
815
+    $output .= '<ul>';
816
+    $output .= '  <li>' . bts('Any member of the team is eligible', array(), NULL, 'boinc:team-founder-panel') . '</li>';
817
+    $output .= '  <li>' . bts('Current founder becomes a normal user', array(), NULL, 'boinc:team-founder-panel') . '</li>';
818
+    $output .= '</ul>';
819
+    $output .= '</div>';
820
+    $output .= '<div>';
821
+    $output .= '<p>' . bts('Foundership can be requested by team members:', array(), NULL, 'boinc:team-founder-panel')
822 822
     . '</p>';
823
-  $output .= '<ul>';
824
-  $output .= '  <li>' . bts('One request is allowed at a time', array(), NULL, 'boinc:team-founder-panel') . '</li>';
825
-  $output .= '  <li>' . bts('It must be 60 days since any previous request', array(), NULL, 'boinc:team-founder-panel')
823
+    $output .= '<ul>';
824
+    $output .= '  <li>' . bts('One request is allowed at a time', array(), NULL, 'boinc:team-founder-panel') . '</li>';
825
+    $output .= '  <li>' . bts('It must be 60 days since any previous request', array(), NULL, 'boinc:team-founder-panel')
826 826
     . '</li>';
827
-  $output .= '  <li>' . bts('Any active request must be older than 90 days', array(), NULL, 'boinc:team-founder-panel')
827
+    $output .= '  <li>' . bts('Any active request must be older than 90 days', array(), NULL, 'boinc:team-founder-panel')
828 828
     . '</li>';
829
-  $output .= '  <li>' . bts('Current founder has 60 days to respond to a'
829
+    $output .= '  <li>' . bts('Current founder has 60 days to respond to a'
830 830
     . ' request', array(), NULL, 'boinc:team-founder-panel') . '</li>';
831
-  $output .= '</ul>';
832
-  $output .= '</div>';
833
-  return $output;
831
+    $output .= '</ul>';
832
+    $output .= '</div>';
833
+    return $output;
834 834
 }
835 835
 
836 836
 /**
837 837
  * Link to create a new team
838 838
  */
839 839
 function boincteam_create_team_link_panel() {
840
-  global $user;
841
-  $account = user_load($user->uid);
842
-  $unrestricted_role = array_search('verified contributor', user_roles(true));
843
-  $output = '';
844
-  $output .= '<h2 class="pane-title">' . bts('Create a new team', array(), NULL, 'boinc:create-team-panel') . '</h2>';
845
-  $output .= '<p>' . bts('If you cannot find a team that is right for you, you'
840
+    global $user;
841
+    $account = user_load($user->uid);
842
+    $unrestricted_role = array_search('verified contributor', user_roles(true));
843
+    $output = '';
844
+    $output .= '<h2 class="pane-title">' . bts('Create a new team', array(), NULL, 'boinc:create-team-panel') . '</h2>';
845
+    $output .= '<p>' . bts('If you cannot find a team that is right for you, you'
846 846
     . ' can create a team.', array(), NULL, 'boinc:create-team-panel') . '</p>';
847
-  $output .= '<ul class="tab-list">';
848
-  $output .= '  <li class="first last tab">';
849
-  if (isset($account->roles[$unrestricted_role])) {
847
+    $output .= '<ul class="tab-list">';
848
+    $output .= '  <li class="first last tab">';
849
+    if (isset($account->roles[$unrestricted_role])) {
850 850
     $output .= l(bts('Create new team', array(), NULL, 'boinc:create-team-panel'), 'community/teams/add');
851
-  } elseif ($account->uid <= 0) {
851
+    } elseif ($account->uid <= 0) {
852 852
     $output .= l(
853
-      bts('Login to create a new team', array(), NULL, 'boinc:create-team-panel'),
854
-      'user/login',
855
-      array('query' => drupal_get_destination())
853
+        bts('Login to create a new team', array(), NULL, 'boinc:create-team-panel'),
854
+        'user/login',
855
+        array('query' => drupal_get_destination())
856 856
     );
857
-  } else {
857
+    } else {
858 858
     $min_credit_needed = variable_get('boinc_comment_min_credit', 0);
859 859
     $credit_needed = $min_credit_needed - $account->boincuser_total_credit;
860 860
     $output .= '[';
861 861
     if ($credit_needed == 1) {
862
-      $output .= bts('You must earn 1 more credit!', array(), NULL, 'boinc:create-team-panel');
862
+        $output .= bts('You must earn 1 more credit!', array(), NULL, 'boinc:create-team-panel');
863 863
     }
864 864
     else {
865
-      $output .= bts('You must earn @count more credits!',
865
+        $output .= bts('You must earn @count more credits!',
866 866
         array('@count' => $credit_needed),
867
-	NULL, 'boinc:create-team-panel'
868
-      );
867
+    NULL, 'boinc:create-team-panel'
868
+        );
869 869
     }
870 870
     $output .= ']';
871
-  }
872
-  $output .= '  </li>';
873
-  $output .= '</ul>';
874
-  return $output;
871
+    }
872
+    $output .= '  </li>';
873
+    $output .= '</ul>';
874
+    return $output;
875 875
 }
876 876
 
877 877
 /**
878 878
  * Create team form
879 879
  */
880 880
 function boincteam_create_team_panel() {
881
-  $output = '';
882
-  $output .= '<h2 class="pane-title">' . bts('Create a team', array(), NULL, 'boinc:create-team-panel') . '</h2>';
883
-  $output .= drupal_get_form('boincteam_create_form');
881
+    $output = '';
882
+    $output .= '<h2 class="pane-title">' . bts('Create a team', array(), NULL, 'boinc:create-team-panel') . '</h2>';
883
+    $output .= drupal_get_form('boincteam_create_form');
884 884
   
885
-  return $output;
885
+    return $output;
886 886
 }
887 887
 
888 888
 /**
889 889
  * Link to user's team
890 890
  */
891 891
 function boincteam_dashboard_panel($uid = NULL) {
892
-  global $user;
893
-  if (!$uid) {
892
+    global $user;
893
+    if (!$uid) {
894 894
     $uid = $user->uid;
895
-  }
896
-  $output = '';
897
-  $account = user_load($uid);
898
-  if ($account->team) {
895
+    }
896
+    $output = '';
897
+    $account = user_load($uid);
898
+    if ($account->team) {
899 899
     $team = boincteam_load(boincteam_lookup_id($account->team));
900 900
     $output .= '<h2 class="pane-title">' . bts('Team', array(), NULL, 'boinc:team-dashboard') . '</h2>';
901 901
     $output .= '<div class="stats">';
@@ -914,254 +914,254 @@  discard block
 block discarded – undo
914 914
     $output .= '  <label>' . bts('Total credit', array(), NULL, 'boinc:user-or-team-total-credits') . ': </label>';
915 915
     $output .= '  <span>' . number_format($team->total_credit, 0) . '</span>';
916 916
     $output .= '</div>' . "\n";
917
-  }
918
-  else if ($user->uid == $account->uid) {
917
+    }
918
+    else if ($user->uid == $account->uid) {
919 919
     $output .= '<h2 class="pane-title">' . bts('Team (None)', array(), NULL, 'boinc:team-dashboard') . '</h2>';
920 920
     $output .= '<ul class="tab-list action-list">';
921 921
     $output .= '<li class="tab primary">';
922 922
     $output .= l(bts('Join a Team', array(), NULL, 'boinc:team-dashboard'), 'community/teams');
923 923
     $output .= '</li>';
924 924
     $output .= '</ul>';
925
-  }
926
-  return $output;
925
+    }
926
+    return $output;
927 927
 }
928 928
 
929 929
 /**
930 930
  * Edit team form
931 931
  */
932 932
 function boincteam_edit_team_panel($team_id) {
933
-  $team = node_load($team_id);
934
-  $output = '';
935
-  $output .= '<h2 class="pane-title">' . $team->title . '</h2>';
936
-  $output .= drupal_get_form('boincteam_edit_form', $team_id);
933
+    $team = node_load($team_id);
934
+    $output = '';
935
+    $output .= '<h2 class="pane-title">' . $team->title . '</h2>';
936
+    $output .= drupal_get_form('boincteam_edit_form', $team_id);
937 937
   
938
-  return $output;
938
+    return $output;
939 939
 }
940 940
 
941 941
 /**
942 942
  * Link to join a team
943 943
  */
944 944
 function boincteam_join_team_panel($team_id) {
945
-  $team = node_load($team_id);
946
-  $output = '';
947
-  $output .= '<h2 class="pane-title">' . bts('Join team', array(), NULL, 'boinc:join-team-panel') . '</h2>';
948
-  $output .= '<p>' . bts('Click here to become a member of @this_team',
945
+    $team = node_load($team_id);
946
+    $output = '';
947
+    $output .= '<h2 class="pane-title">' . bts('Join team', array(), NULL, 'boinc:join-team-panel') . '</h2>';
948
+    $output .= '<p>' . bts('Click here to become a member of @this_team',
949 949
     array('@this_team' =>$team->title), NULL, 'boinc:join-team-panel') . '</p>';
950
-  $output .= '<ul class="tab-list">';
951
-  $output .= '  <li class="first last tab">' . 
950
+    $output .= '<ul class="tab-list">';
951
+    $output .= '  <li class="first last tab">' . 
952 952
     l(bts('Join this team', array(), NULL, 'boinc:join-team-panel'), "community/teams/{$team_id}/join") . '</li>';
953
-  $output .= '</ul>';
954
-  return $output;
953
+    $output .= '</ul>';
954
+    return $output;
955 955
 }
956 956
 
957 957
 /**
958 958
  * Link to leave a team
959 959
  */
960 960
 function boincteam_leave_team_panel($team_id) {
961
-  $team = node_load($team_id);
962
-  $output = '';
963
-  $output .= '<h2 class="pane-title">' . bts('Leave team', array(), NULL, 'boinc:leave-team-panel') . '</h2>';
964
-  $output .= '<p>' . bts('Click here to revoke your membership with'
961
+    $team = node_load($team_id);
962
+    $output = '';
963
+    $output .= '<h2 class="pane-title">' . bts('Leave team', array(), NULL, 'boinc:leave-team-panel') . '</h2>';
964
+    $output .= '<p>' . bts('Click here to revoke your membership with'
965 965
     . ' @this_team', array('@this_team' =>$team->title), NULL, 'boinc:leave-team-panel') . '</p>';
966
-  $output .= '<ul class="tab-list">';
967
-  $output .= '  <li class="first last tab">' . 
966
+    $output .= '<ul class="tab-list">';
967
+    $output .= '  <li class="first last tab">' . 
968 968
     l(bts('Leave this team', array(), NULL, 'boinc:leave-team-panel'), "community/teams/{$team_id}/leave") . '</li>';
969
-  $output .= '</ul>';
970
-  return $output;
969
+    $output .= '</ul>';
970
+    return $output;
971 971
 }
972 972
 
973 973
 /**
974 974
  * General info about team admins
975 975
  */                                         
976 976
 function boincteam_manage_admins_panel_header($team_id) {
977
-  $output = '';
978
-  $output .= '<h4>' . bts('Add team admin', array(), NULL, 'boinc:team-manage-admins') . '</h4>';
979
-  $output .= drupal_get_form('boincteam_add_admin_form', $team_id);
980
-  $output .= '<div class="clearfix"></div>';
981
-  $output .= '<h4>' . bts('Current team admins', array(), NULL, 'boinc:team-manage-admins') . '</h4>';
977
+    $output = '';
978
+    $output .= '<h4>' . bts('Add team admin', array(), NULL, 'boinc:team-manage-admins') . '</h4>';
979
+    $output .= drupal_get_form('boincteam_add_admin_form', $team_id);
980
+    $output .= '<div class="clearfix"></div>';
981
+    $output .= '<h4>' . bts('Current team admins', array(), NULL, 'boinc:team-manage-admins') . '</h4>';
982 982
   
983
-  return $output;
983
+    return $output;
984 984
 }
985 985
 
986 986
 /**
987 987
  * Team management tools
988 988
  */
989 989
 function boincteam_management_panel($team_id) {
990
-  $is_founder = boincteam_is_founder($team_id);
991
-  $team = node_load($team_id);
990
+    $is_founder = boincteam_is_founder($team_id);
991
+    $team = node_load($team_id);
992 992
 
993
-  $output = '';
994
-  $output .= '<h2 class="pane-title">' . bts('Manage team', array(), NULL, 'boinc:team-manage') . '</h2>';
993
+    $output = '';
994
+    $output .= '<h2 class="pane-title">' . bts('Manage team', array(), NULL, 'boinc:team-manage') . '</h2>';
995 995
   
996
-  // PM all members
997
-  if (module_exists('privatemsg')) {
996
+    // PM all members
997
+    if (module_exists('privatemsg')) {
998 998
     $output .= '<div class="form-item">';
999 999
     $output .= '  <ul class="tab-list action-list">';
1000 1000
     $output .= '    <li class="first tab primary">' .
1001
-      l('Send message to team', "community/teams/{$team_id}/message-all-members") . '</li>';
1001
+        l('Send message to team', "community/teams/{$team_id}/message-all-members") . '</li>';
1002 1002
     $output .= '  </ul>';
1003 1003
     $output .= '  <div class="description">';
1004 1004
     $output .=   bts('Contact all team members using e-mail.', array(), NULL, 'boinc:team-manage');
1005 1005
     $output .= '  </div>';
1006 1006
     $output .= '</div>';
1007
-  }
1007
+    }
1008 1008
 
1009
-  // Team forum
1010
-  if (module_exists('boincteam_forum')) {
1009
+    // Team forum
1010
+    if (module_exists('boincteam_forum')) {
1011 1011
     if ($is_founder) {
1012
-      // Determine whether to create a forum or edit the existing forum
1013
-      // (multiple forums per team could be supported in the future)
1014
-      $team_forum_link_path = 'add';
1015
-      $team_forums = boincteam_forum_list();
1016
-      if ($team_forums) {
1012
+        // Determine whether to create a forum or edit the existing forum
1013
+        // (multiple forums per team could be supported in the future)
1014
+        $team_forum_link_path = 'add';
1015
+        $team_forums = boincteam_forum_list();
1016
+        if ($team_forums) {
1017 1017
         $team_forum = reset($team_forums);
1018 1018
         $team_forum_link_path = "{$team_forum->tfid}/edit";
1019
-      }
1020
-      $output .= '<div class="form-item">';
1021
-      $output .= '  <ul class="tab-list action-list">';
1022
-      $output .= '    <li class="first tab primary">' .   
1019
+        }
1020
+        $output .= '<div class="form-item">';
1021
+        $output .= '  <ul class="tab-list action-list">';
1022
+        $output .= '    <li class="first tab primary">' .   
1023 1023
         l(bts('Manage team message board', array(), NULL, 'boinc:team-manage'),
1024
-          "community/teams/{$team_id}/forum/{$team_forum_link_path}"
1024
+            "community/teams/{$team_id}/forum/{$team_forum_link_path}"
1025 1025
         );
1026
-      $output .= '    </li>';
1027
-      $output .= '  <div class="description">';
1028
-      $output .=   bts('Create or manage message board', array(), NULL, 'boinc:team-manage');
1029
-      $output .= '  </div>';
1030
-      $output .= '</div>';
1026
+        $output .= '    </li>';
1027
+        $output .= '  <div class="description">';
1028
+        $output .=   bts('Create or manage message board', array(), NULL, 'boinc:team-manage');
1029
+        $output .= '  </div>';
1030
+        $output .= '</div>';
1031
+    }
1031 1032
     }
1032
-  }
1033 1033
   
1034
-  // Team history
1035
-  $output .= '<div class="form-item">';
1036
-  $output .= '  <label>' . bts('View change history', array(), NULL, 'boinc:team-manage') . '</label>';
1037
-  $output .= '  <ul class="tab-list">';
1038
-  $output .= '    <li class="first tab primary">' . 
1034
+    // Team history
1035
+    $output .= '<div class="form-item">';
1036
+    $output .= '  <label>' . bts('View change history', array(), NULL, 'boinc:team-manage') . '</label>';
1037
+    $output .= '  <ul class="tab-list">';
1038
+    $output .= '    <li class="first tab primary">' . 
1039 1039
     l('HTML', "community/teams/{$team_id}/history") . '</li>';
1040
-  $output .= '    <li class="last tab primary">' .
1040
+    $output .= '    <li class="last tab primary">' .
1041 1041
     l('XML', "community/teams/{$team_id}/history/xml") . '</li>';
1042
-  $output .= '  </ul>';
1043
-  $output .= '  <div class="description">';
1044
-  $output .=   bts('See member activity', array(), NULL, 'boinc:team-manage');
1045
-  $output .= '  </div>';
1046
-  $output .= '</div>';
1042
+    $output .= '  </ul>';
1043
+    $output .= '  <div class="description">';
1044
+    $output .=   bts('See member activity', array(), NULL, 'boinc:team-manage');
1045
+    $output .= '  </div>';
1046
+    $output .= '</div>';
1047 1047
   
1048
-  $output .= '<div class="form-item">';
1049
-  $output .= '  <ul class="tab-list action-list">';
1048
+    $output .= '<div class="form-item">';
1049
+    $output .= '  <ul class="tab-list action-list">';
1050 1050
   
1051
-  // Edit team information
1052
-  $output .= '    <li class="first tab primary">' . 
1051
+    // Edit team information
1052
+    $output .= '    <li class="first tab primary">' . 
1053 1053
     l(bts('Edit team info', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/edit/info") . '</li>';
1054 1054
     
1055
-  // Member list
1056
-  $output .= '    <li class="tab primary">' . 
1055
+    // Member list
1056
+    $output .= '    <li class="tab primary">' . 
1057 1057
     l(bts('View member list', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/members") . '</li>';
1058 1058
 
1059
-  // Remove members
1060
-  $output .= '    <li class="tab primary">' . 
1059
+    // Remove members
1060
+    $output .= '    <li class="tab primary">' . 
1061 1061
     l(bts('Remove members', array(), NULL, 'boinc:team-admins-panel'), "community/teams/{$team_id}/edit/members") . '</li>';
1062 1062
   
1063
-  if ($is_founder) {
1063
+    if ($is_founder) {
1064 1064
     
1065 1065
     // Change founder
1066 1066
     $output .= '    <li class="tab primary">' . 
1067
-      l(bts('Change founder', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/edit/founder") . '</li>';
1067
+        l(bts('Change founder', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/edit/founder") . '</li>';
1068 1068
       
1069
-      // Manage admins
1069
+        // Manage admins
1070 1070
     $output .= '    <li class="tab primary">' . 
1071
-      l(bts('Manage team admins', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/edit/admins") . '</li>';
1071
+        l(bts('Manage team admins', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/edit/admins") . '</li>';
1072 1072
     
1073 1073
     // Delete the team
1074 1074
     $output .= '    <li class="last tab primary">' . 
1075
-      l(bts('Remove team', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/delete") . '</li>';
1076
-  }
1075
+        l(bts('Remove team', array(), NULL, 'boinc:team-manage'), "community/teams/{$team_id}/delete") . '</li>';
1076
+    }
1077 1077
   
1078
-  $output .= '  </ul>';
1079
-  $output .= '</div>';
1078
+    $output .= '  </ul>';
1079
+    $output .= '</div>';
1080 1080
   
1081
-  return $output;
1081
+    return $output;
1082 1082
 }
1083 1083
 
1084 1084
 /**
1085 1085
  * Link to user's team
1086 1086
  */
1087 1087
 function boincteam_member_link_panel() {
1088
-  global $user;
1089
-  $account = user_load($user->uid);
1090
-  $team = node_load($account->team);
1091
-  $output = '';
1092
-  $output .= '<h2 class="pane-title">' . bts('My team', array(), NULL, 'boinc:account-team-panel') . '</h2>';
1093
-  $output .= '<p>' . bts('You are a member of @team.', 
1088
+    global $user;
1089
+    $account = user_load($user->uid);
1090
+    $team = node_load($account->team);
1091
+    $output = '';
1092
+    $output .= '<h2 class="pane-title">' . bts('My team', array(), NULL, 'boinc:account-team-panel') . '</h2>';
1093
+    $output .= '<p>' . bts('You are a member of @team.', 
1094 1094
     array('@team' => $team->title), NULL, 'boinc:account-team-panel') . '</p>';
1095
-  $output .= '<ul class="tab-list">';
1096
-  $output .= '  <li class="first last tab">' . 
1095
+    $output .= '<ul class="tab-list">';
1096
+    $output .= '  <li class="first last tab">' . 
1097 1097
     l(bts('View my team', array(), NULL, 'boinc:account-team-panel'), "community/teams/{$account->team}") . '</li>';
1098
-  $output .= '</ul>';
1099
-  return $output;
1098
+    $output .= '</ul>';
1099
+    return $output;
1100 1100
 }
1101 1101
 
1102 1102
 /**
1103 1103
  * Link to request foundership transfer of a team
1104 1104
  */
1105 1105
 function boincteam_request_foundership_panel($team_id) {
1106
-  global $user;
1107
-  $account = user_load($user->uid);
1108
-  $team = node_load($team_id);
1109
-  $boincteam_id = boincteam_lookup_id($team_id);
1110
-  $boincteam = boincteam_load($boincteam_id);
1111
-  $boincuser_id = $account->boincuser_id;
1112
-  $output = '';
1113
-  $output .= '<h2 class="pane-title">' . bts('Request foundership', array(), NULL, 'boinc:team-request-foundership') . '</h2>';
1106
+    global $user;
1107
+    $account = user_load($user->uid);
1108
+    $team = node_load($team_id);
1109
+    $boincteam_id = boincteam_lookup_id($team_id);
1110
+    $boincteam = boincteam_load($boincteam_id);
1111
+    $boincuser_id = $account->boincuser_id;
1112
+    $output = '';
1113
+    $output .= '<h2 class="pane-title">' . bts('Request foundership', array(), NULL, 'boinc:team-request-foundership') . '</h2>';
1114 1114
   
1115
-  if (boincteam_user_requested_foundership($team_id)) {
1115
+    if (boincteam_user_requested_foundership($team_id)) {
1116 1116
     $deadline = boincteam_foundership_transfer_ok_time($boincteam);
1117 1117
     $days_to_deadline = ceil(($deadline - time()) / (24*60*60));
1118 1118
     $request_age = 60 - $days_to_deadline;
1119 1119
     $days_to_respond = 30 + $days_to_deadline;
1120 1120
     if (time() > $deadline) {
1121
-      $output .= '<p>';
1122
-      if ($request_age == 1) {
1121
+        $output .= '<p>';
1122
+        if ($request_age == 1) {
1123 1123
         $output .= bts('1 day has elapsed since your request and'
1124
-          . ' the founder has not responded.', array(), NULL, 'boinc:team-request-foundership');
1125
-      }
1126
-      else {
1124
+            . ' the founder has not responded.', array(), NULL, 'boinc:team-request-foundership');
1125
+        }
1126
+        else {
1127 1127
         $output .= bts('@count days have elapsed since your request and'
1128
-          . ' the founder has not responded.',
1129
-          array('@count' => $request_age),
1130
-          NULL, 'boinc:team-request-foundership');
1131
-      }
1132
-      $output .= ' ';
1133
-      if ($days_to_respond == 1) {
1128
+            . ' the founder has not responded.',
1129
+            array('@count' => $request_age),
1130
+            NULL, 'boinc:team-request-foundership');
1131
+        }
1132
+        $output .= ' ';
1133
+        if ($days_to_respond == 1) {
1134 1134
         $output .= bts('You now have 1 day to assume foundership before'
1135
-          . ' another team member may submit a request.', array(), NULL, 'boinc:team-request-foundership');
1136
-      }
1137
-      else {
1135
+            . ' another team member may submit a request.', array(), NULL, 'boinc:team-request-foundership');
1136
+        }
1137
+        else {
1138 1138
         $output .= bts('You now have @count days to assume foundership before'
1139
-          . ' another team member may submit a request.',
1140
-          array('@count' => $days_to_respond),
1141
-          NULL, 'boinc:team-request-foundership');
1142
-      }
1143
-      $output .= '</p>';
1144
-      $output .= '<ul class="tab-list">';
1145
-      $output .= '  <li class="first last tab">' . 
1139
+            . ' another team member may submit a request.',
1140
+            array('@count' => $days_to_respond),
1141
+            NULL, 'boinc:team-request-foundership');
1142
+        }
1143
+        $output .= '</p>';
1144
+        $output .= '<ul class="tab-list">';
1145
+        $output .= '  <li class="first last tab">' . 
1146 1146
         l(bts('Assume foundership', array(), NULL, 'boinc:team-request-foundership'), "community/teams/{$team_id}/assume-foundership") . '</li>';
1147
-      $output .= '</ul>';
1147
+        $output .= '</ul>';
1148 1148
     }
1149 1149
     else {
1150
-      $output .= '<p>';
1151
-      if ($days_to_deadline == 1) {
1150
+        $output .= '<p>';
1151
+        if ($days_to_deadline == 1) {
1152 1152
         $output .= bts('The team founder has 1 day to respond to your'
1153
-          . ' transfer request.',
1154
-          NULL, 'boinc:team-request-foundership');
1155
-      }
1156
-      else {
1153
+            . ' transfer request.',
1154
+            NULL, 'boinc:team-request-foundership');
1155
+        }
1156
+        else {
1157 1157
         $output .= bts('The team founder has @count days to respond to your'
1158
-          . ' transfer request.', array('@count' => $days_to_deadline),
1159
-          NULL, 'boinc:team-request-foundership');
1160
-      }
1161
-      $output .= '</p>';
1158
+            . ' transfer request.', array('@count' => $days_to_deadline),
1159
+            NULL, 'boinc:team-request-foundership');
1160
+        }
1161
+        $output .= '</p>';
1162 1162
     }
1163
-  }
1164
-  elseif (!boincteam_new_foundership_transfer_request_ok($team_id)) {
1163
+    }
1164
+    elseif (!boincteam_new_foundership_transfer_request_ok($team_id)) {
1165 1165
     // If this user does not have a transfer request pending, but new requests
1166 1166
     // are not allowed, set the deadline to 90 days instead of 60 (as the user
1167 1167
     // who made the request has 30 additional days to assume foundership if 
@@ -1170,131 +1170,131 @@  discard block
 block discarded – undo
1170 1170
     $days_to_deadline = ceil(($deadline - time()) / (24*60*60)) + 30;
1171 1171
     $output .= '<p>';
1172 1172
     $output .= bts('A team foundership change was already requested recently.'
1173
-      . ' Only one request is allowed within a period of 90 days.',
1174
-      NULL, 'boinc:team-request-foundership');
1173
+        . ' Only one request is allowed within a period of 90 days.',
1174
+        NULL, 'boinc:team-request-foundership');
1175 1175
     if ($days_to_deadline == 1) {
1176
-      $output .= ' (' . bts('1 day remaining', array(), NULL, 'boinc:team-request-foundership') . ')';
1176
+        $output .= ' (' . bts('1 day remaining', array(), NULL, 'boinc:team-request-foundership') . ')';
1177 1177
     }
1178 1178
     else {
1179
-      $output .= ' (' . bts('@count days remaining',
1179
+        $output .= ' (' . bts('@count days remaining',
1180 1180
         array('@count' => $days_to_deadline),
1181 1181
         NULL, 'boinc:team-request-foundership') . ')';
1182 1182
     }
1183 1183
     $output .= '</p>';
1184
-  }
1185
-  else {
1184
+    }
1185
+    else {
1186 1186
     $output .= '<p>' . bts('If the team founder is not active and you want to'
1187
-      . ' assume the role of founder, click below to request foundership of'
1188
-      . ' @this_team.',
1189
-      array('@this_team' =>$team->title), NULL, 'boinc:team-request-foundership') . '</p>';
1187
+        . ' assume the role of founder, click below to request foundership of'
1188
+        . ' @this_team.',
1189
+        array('@this_team' =>$team->title), NULL, 'boinc:team-request-foundership') . '</p>';
1190 1190
     $output .= '<ul class="tab-list">';
1191 1191
     $output .= '  <li class="first last tab">' . 
1192
-      l(bts('Initiate request', array(), NULL, 'boinc:team-request-foundership'), "community/teams/{$team_id}/request-foundership") . '</li>';
1192
+        l(bts('Initiate request', array(), NULL, 'boinc:team-request-foundership'), "community/teams/{$team_id}/request-foundership") . '</li>';
1193 1193
     $output .= '</ul>';
1194
-  }
1195
-  return $output;
1194
+    }
1195
+    return $output;
1196 1196
 }
1197 1197
 
1198 1198
 /**
1199 1199
  * Respond to foundership transfer requests for a team
1200 1200
  */
1201 1201
 function boincteam_request_foundership_response_panel($team_id) {
1202
-  global $user;
1203
-  $account = user_load($user->uid);
1204
-  $team = node_load($team_id);
1205
-  $boincteam_id = boincteam_lookup_id($team_id);
1206
-  $boincteam = boincteam_load($boincteam_id);
1207
-  $boincuser_id = $account->boincuser_id;
1208
-  $output = '';
1202
+    global $user;
1203
+    $account = user_load($user->uid);
1204
+    $team = node_load($team_id);
1205
+    $boincteam_id = boincteam_lookup_id($team_id);
1206
+    $boincteam = boincteam_load($boincteam_id);
1207
+    $boincuser_id = $account->boincuser_id;
1208
+    $output = '';
1209 1209
   
1210
-  if ($boincteam->ping_user) {
1210
+    if ($boincteam->ping_user) {
1211 1211
     if ($boincteam->ping_user < 0) {
1212
-      $member = user_load(boincuser_lookup_uid(-$boincteam->ping_user));
1213
-      $output .= '<h2 class="pane-title">' . bts('Obsolete transfer request', array(), NULL, 'boinc:team-request-foundership-response')
1212
+        $member = user_load(boincuser_lookup_uid(-$boincteam->ping_user));
1213
+        $output .= '<h2 class="pane-title">' . bts('Obsolete transfer request', array(), NULL, 'boinc:team-request-foundership-response')
1214 1214
         . '</h2>';
1215
-      $output .= '<p>' . bts('Team member @name requested team foundership on'
1215
+        $output .= '<p>' . bts('Team member @name requested team foundership on'
1216 1216
         . ' @date, but then left the team. This request is now canceled.',
1217 1217
         array(
1218
-          '@name' => $member->boincuser_name,
1219
-          '@date' => date('j M Y', $boincteam->ping_time),
1218
+            '@name' => $member->boincuser_name,
1219
+            '@date' => date('j M Y', $boincteam->ping_time),
1220 1220
         ),
1221 1221
         NULL, 'boinc:team-request-foundership-response') . '</p>';
1222
-      // Automatically cancel the request
1223
-      db_set_active('boinc_rw');
1224
-      db_query("
1222
+        // Automatically cancel the request
1223
+        db_set_active('boinc_rw');
1224
+        db_query("
1225 1225
         UPDATE {team}
1226 1226
         SET ping_user=0
1227 1227
         WHERE id = '%d'",
1228 1228
         $boincteam_id
1229
-      );
1230
-      db_set_active('default');
1229
+        );
1230
+        db_set_active('default');
1231 1231
     }
1232 1232
     else {
1233
-      $member = user_load(boincuser_lookup_uid($boincteam->ping_user));
1234
-      $output .= '<h2 class="pane-title">' . bts('Respond to transfer request', array(), NULL, 'boinc:team-request-foundership-response')
1233
+        $member = user_load(boincuser_lookup_uid($boincteam->ping_user));
1234
+        $output .= '<h2 class="pane-title">' . bts('Respond to transfer request', array(), NULL, 'boinc:team-request-foundership-response')
1235 1235
         . '</h2>';
1236
-      $output .= '<p>' . bts('Team member @name has requested team foundership.'
1236
+        $output .= '<p>' . bts('Team member @name has requested team foundership.'
1237 1237
         . ' This may be because you left the team or have not had contact with'
1238 1238
         . ' the team for a long time.', array(
1239
-          '@name' => $member->boincuser_name,
1239
+            '@name' => $member->boincuser_name,
1240 1240
         )
1241
-      , array(), NULL, 'boinc:team-request-foundership-response') . '</p>';
1242
-      $output .= '<p>' . bts("If you don't decline the request by @date, @name"
1241
+        , array(), NULL, 'boinc:team-request-foundership-response') . '</p>';
1242
+        $output .= '<p>' . bts("If you don't decline the request by @date, @name"
1243 1243
         . ' will have the option of assuming team foundership. (note: To'
1244 1244
         . ' accept the request, assign foundership to @name using the form'
1245 1245
         . ' below)',
1246 1246
         array(
1247
-          '@name' => $member->boincuser_name,
1248
-          '@date' => date('j M Y', boincteam_foundership_transfer_ok_time($boincteam)),
1247
+            '@name' => $member->boincuser_name,
1248
+            '@date' => date('j M Y', boincteam_foundership_transfer_ok_time($boincteam)),
1249 1249
         ),
1250 1250
         NULL, 'boinc:team-request-foundership-response') . '</p>';
1251
-      $output .= '<ul class="tab-list">';
1252
-      $output .= '  <li class="first last tab">' . 
1251
+        $output .= '<ul class="tab-list">';
1252
+        $output .= '  <li class="first last tab">' . 
1253 1253
         l(bts('Deny request', array(), NULL, 'boinc:team-request-foundership-response'), "community/teams/{$team_id}/deny-foundership-request") . '</li>';
1254
-      $output .= '</ul>';
1254
+        $output .= '</ul>';
1255 1255
     }
1256
-  }
1257
-  return $output;
1256
+    }
1257
+    return $output;
1258 1258
 }
1259 1259
 
1260 1260
 function boincteam_search_panel() {
1261
-  $output = '';
1262
-  if (module_exists('global_search_teams_solr')) {
1261
+    $output = '';
1262
+    if (module_exists('global_search_teams_solr')) {
1263 1263
     $output .= '<h2 class="pane-title">' . bts('Search teams', array(), NULL, 'boinc:search-team') . '</h2>';
1264 1264
     //$output .= '<p>' . bts('Render a search form here.', array(), NULL, 'boinc:search-team') . '</p>';
1265 1265
     $output .= '<p>' . boincteam_search_view() . '</p>';
1266
-  }
1267
-  return $output;
1266
+    }
1267
+    return $output;
1268 1268
 }
1269 1269
 
1270 1270
 function boincteam_search_view($type = 'team') {
1271
-  // Get the team search form
1272
-  $search_page = apachesolr_search_page_load('team_search');
1273
-  module_load_include('inc', 'apachesolr_search', 'apachesolr_search.pages');
1274
-  return drupal_get_form('apachesolr_search_custom_page_search_form', $search_page);
1271
+    // Get the team search form
1272
+    $search_page = apachesolr_search_page_load('team_search');
1273
+    module_load_include('inc', 'apachesolr_search', 'apachesolr_search.pages');
1274
+    return drupal_get_form('apachesolr_search_custom_page_search_form', $search_page);
1275 1275
 }
1276 1276
 
1277 1277
 /**
1278 1278
  * General info about the concept of teams
1279 1279
  */                                         
1280 1280
 function boincteam_topic_overview_panel() {
1281
-  $site_name =  variable_get('site_name', 'Drupal-BOINC');
1282
-  $output = '';
1283
-  $output .= '<h2 class="pane-title">' . bts('Teams', array(), NULL, 'boinc:team-general-info') . '</h2>';
1284
-  $output .= '<div class="">';
1285
-  $output .= '<p>' . bts('@project participants may form teams. You may belong'
1281
+    $site_name =  variable_get('site_name', 'Drupal-BOINC');
1282
+    $output = '';
1283
+    $output .= '<h2 class="pane-title">' . bts('Teams', array(), NULL, 'boinc:team-general-info') . '</h2>';
1284
+    $output .= '<div class="">';
1285
+    $output .= '<p>' . bts('@project participants may form teams. You may belong'
1286 1286
     . ' to only one team. You can join or quit a team at any time. To join a'
1287 1287
     . ' team, visit its team page and click "Join this team". Each team has a'
1288 1288
     . ' founder who may:', array('@project' => $site_name), NULL, 'boinc:team-general-info') . '</p>';
1289
-  $output .= '<ul>';
1290
-  $output .= '  <li>' . bts('Private Message all team members', array(), NULL, 'boinc:team-general-info') . '</li>';
1291
-  $output .= '  <li>' . bts("edit the team's name and description", array(), NULL, 'boinc:team-general-info') . '</li>';
1292
-  $output .= '  <li>' . bts('add or remove team admins', array(), NULL, 'boinc:team-general-info') . '</li>';
1293
-  $output .= '  <li>' . bts('remove members from the team', array(), NULL, 'boinc:team-general-info') . '</li>';
1294
-  $output .= '  <li>' . bts('disband a team if it has no members', array(), NULL, 'boinc:team-general-info') . '</li>';
1295
-  $output .= '</ul>';
1296
-  $output .= '</div>';
1297
-  return $output;
1289
+    $output .= '<ul>';
1290
+    $output .= '  <li>' . bts('Private Message all team members', array(), NULL, 'boinc:team-general-info') . '</li>';
1291
+    $output .= '  <li>' . bts("edit the team's name and description", array(), NULL, 'boinc:team-general-info') . '</li>';
1292
+    $output .= '  <li>' . bts('add or remove team admins', array(), NULL, 'boinc:team-general-info') . '</li>';
1293
+    $output .= '  <li>' . bts('remove members from the team', array(), NULL, 'boinc:team-general-info') . '</li>';
1294
+    $output .= '  <li>' . bts('disband a team if it has no members', array(), NULL, 'boinc:team-general-info') . '</li>';
1295
+    $output .= '</ul>';
1296
+    $output .= '</div>';
1297
+    return $output;
1298 1298
 }
1299 1299
 
1300 1300
 /**
@@ -1322,50 +1322,50 @@  discard block
 block discarded – undo
1322 1322
  * Link to view a team
1323 1323
  */
1324 1324
 function boincteam_view_team_panel($team_id) {
1325
-  $team = node_load($team_id);
1326
-  if ($team->type != "team") {
1325
+    $team = node_load($team_id);
1326
+    if ($team->type != "team") {
1327 1327
     return;
1328
-  }
1329
-  $boincteam = boincteam_load(boincteam_lookup_id($team_id), TRUE);
1330
-  $founder = user_load(get_drupal_id($boincteam->userid));
1331
-  $new_members = array();
1332
-  if ($boincteam->new_members) {
1328
+    }
1329
+    $boincteam = boincteam_load(boincteam_lookup_id($team_id), TRUE);
1330
+    $founder = user_load(get_drupal_id($boincteam->userid));
1331
+    $new_members = array();
1332
+    if ($boincteam->new_members) {
1333 1333
     foreach ($boincteam->new_members as $member) {
1334
-      $account = user_load(get_drupal_id($member->id));
1335
-      $new_members[] = l($account->boincuser_name, "account/{$account->uid}");
1334
+        $account = user_load(get_drupal_id($member->id));
1335
+        $new_members[] = l($account->boincuser_name, "account/{$account->uid}");
1336 1336
     }
1337
-  }
1338
-  $output = '';
1339
-  $output .= '<h2 class="pane-title">' . $boincteam->name . '</h2>';
1340
-  $output .= '<div>';
1341
-  $output .= '<div class="left-column">';
1342
-  $output .= '<ul class="stats">';
1343
-  $output .= '  <li>' . bts('Total credit', array(), NULL, 'boinc:user-or-team-total-credits') . ': ' . number_format($boincteam->total_credit, 0) . '</li>';
1344
-  $output .= '  <li>' . bts('Recent average credit', array(), NULL, 'boinc:user-or-team-RAC') . ': ' . number_format($boincteam->expavg_credit, 2) . '</li>';
1345
-  $output .= '  <li>' . bts('Country', array(), NULL, 'boinc:country-of-origin') . ': ' . $boincteam->country . '</li>';
1346
-  $output .= '  <li>' . bts('Type', array(), NULL, 'boinc:view-team-info') . ': ' . boincteam_get_type($team_id) . '</li>';
1347
-  $output .= '</ul>';
1348
-  $output .= '</div>';
1349
-  $output .= '<div class="right-column">';
1350
-  $output .= '<ul class="stats">';
1351
-  $output .= '  <li>' . bts('Founder', array(), NULL, 'boinc:view-team-info') . ': ' . l($founder->boincuser_name, "account/{$founder->uid}") . '</li>';
1352
-  $output .= '  <li>' . bts('New members in last day', array(), NULL, 'boinc:view-team-info') . ': ' . implode('&middot;', $new_members) . '</li>';
1353
-  $output .= '  <li>' . bts('Total members', array(), NULL, 'boinc:view-team-info') . ': ' . l($boincteam->nusers, "community/teams/{$team_id}/members") . '</li>';
1354
-  $output .= '  <li>' . bts('Active members', array(), NULL, 'boinc:view-team-info') . ': ' . $boincteam->nusers_active . '</li>';
1355
-  $output .= '  <li>' . bts('Members with credit', array(), NULL, 'boinc:view-team-info') . ': ' . $boincteam->nusers_worked . '</li>';
1356
-  $output .= '</ul>';
1357
-  $output .= '</div>';
1358
-  $output .= '</div>';
1359
-  $output .= '<div class="clearfix"></div>';
1360
-  if ($boincteam->url) {
1337
+    }
1338
+    $output = '';
1339
+    $output .= '<h2 class="pane-title">' . $boincteam->name . '</h2>';
1340
+    $output .= '<div>';
1341
+    $output .= '<div class="left-column">';
1342
+    $output .= '<ul class="stats">';
1343
+    $output .= '  <li>' . bts('Total credit', array(), NULL, 'boinc:user-or-team-total-credits') . ': ' . number_format($boincteam->total_credit, 0) . '</li>';
1344
+    $output .= '  <li>' . bts('Recent average credit', array(), NULL, 'boinc:user-or-team-RAC') . ': ' . number_format($boincteam->expavg_credit, 2) . '</li>';
1345
+    $output .= '  <li>' . bts('Country', array(), NULL, 'boinc:country-of-origin') . ': ' . $boincteam->country . '</li>';
1346
+    $output .= '  <li>' . bts('Type', array(), NULL, 'boinc:view-team-info') . ': ' . boincteam_get_type($team_id) . '</li>';
1347
+    $output .= '</ul>';
1348
+    $output .= '</div>';
1349
+    $output .= '<div class="right-column">';
1350
+    $output .= '<ul class="stats">';
1351
+    $output .= '  <li>' . bts('Founder', array(), NULL, 'boinc:view-team-info') . ': ' . l($founder->boincuser_name, "account/{$founder->uid}") . '</li>';
1352
+    $output .= '  <li>' . bts('New members in last day', array(), NULL, 'boinc:view-team-info') . ': ' . implode('&middot;', $new_members) . '</li>';
1353
+    $output .= '  <li>' . bts('Total members', array(), NULL, 'boinc:view-team-info') . ': ' . l($boincteam->nusers, "community/teams/{$team_id}/members") . '</li>';
1354
+    $output .= '  <li>' . bts('Active members', array(), NULL, 'boinc:view-team-info') . ': ' . $boincteam->nusers_active . '</li>';
1355
+    $output .= '  <li>' . bts('Members with credit', array(), NULL, 'boinc:view-team-info') . ': ' . $boincteam->nusers_worked . '</li>';
1356
+    $output .= '</ul>';
1357
+    $output .= '</div>';
1358
+    $output .= '</div>';
1359
+    $output .= '<div class="clearfix"></div>';
1360
+    if ($boincteam->url) {
1361 1361
     $output .= '<div class="stats">';
1362 1362
     $output .= bts('Website', array(), NULL, 'boinc:website-of-user-or-team') . ': ' . l("http://{$boincteam->url}", "http://{$boincteam->url}");
1363 1363
     $output .= '</div>';
1364
-  }
1365
-  if ($team->body) {
1364
+    }
1365
+    if ($team->body) {
1366 1366
     $output .= '<h3>' . bts('Description', array(), NULL, 'boinc:team-description') . '</h3>';
1367 1367
     $output .= check_markup($team->body, $team->format);
1368 1368
     $output .= '</div>';
1369
-  }
1370
-  return $output;
1369
+    }
1370
+    return $output;
1371 1371
 }
Please login to merge, or discard this patch.
drupal/sites/default/boinc/modules/boincteam/includes/boincteam.helpers.inc 1 patch
Indentation   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -15,41 +15,41 @@  discard block
 block discarded – undo
15 15
  */
16 16
 function boincteam_sync() {
17 17
   
18
-  // Get the list of teams to import
19
-  db_set_active('boinc_rw');
20
-  $boinc_teams = db_query('
18
+    // Get the list of teams to import
19
+    db_set_active('boinc_rw');
20
+    $boinc_teams = db_query('
21 21
     SELECT id, name, description, userid, create_time, seti_id
22 22
     FROM team
23 23
     WHERE mod_time > FROM_UNIXTIME(%d)',
24 24
     variable_get('boincteam_last_sync', 0)
25
-  );
26
-  db_set_active('default');
25
+    );
26
+    db_set_active('default');
27 27
   
28
-  $existing_teams = array();
28
+    $existing_teams = array();
29 29
   
30
-  // Get the list of teams already in Drupal to be sure we're not importing
31
-  // any twice
32
-  $result = db_query('
30
+    // Get the list of teams already in Drupal to be sure we're not importing
31
+    // any twice
32
+    $result = db_query('
33 33
     SELECT nid, team_id FROM {boincteam}'
34
-  );
35
-  while ($row = db_fetch_object($result)) {
34
+    );
35
+    while ($row = db_fetch_object($result)) {
36 36
     $existing_teams[$row->team_id] = $row->nid;
37
-  }
37
+    }
38 38
   
39
-  while ($boinc_team = db_fetch_object($boinc_teams)) {
39
+    while ($boinc_team = db_fetch_object($boinc_teams)) {
40 40
     $success = NULL;
41 41
     if (isset($existing_teams[$boinc_team->id])) {
42
-      if ($boinc_team->seti_id > 0) {
42
+        if ($boinc_team->seti_id > 0) {
43 43
         // Sync BOINC-wide teams
44 44
         $nid = $existing_teams[$boinc_team->id];
45 45
         $success = boincteam_import($boinc_team, $nid);
46
-      }
46
+        }
47 47
     }
48 48
     else {
49
-      // Import new teams created by RPC or ops/team_import.php
50
-      $success = boincteam_import($boinc_team);
49
+        // Import new teams created by RPC or ops/team_import.php
50
+        $success = boincteam_import($boinc_team);
51
+    }
51 52
     }
52
-  }
53 53
 }
54 54
 
55 55
 
@@ -58,58 +58,58 @@  discard block
 block discarded – undo
58 58
  */
59 59
 function boincteam_import($boincteam, $nid = NULL) {
60 60
   
61
-  $input_format = variable_get('boincimport_input_format', 0);
62
-  $team_type_map = variable_get('boincimport_team_types', array()); 
61
+    $input_format = variable_get('boincimport_input_format', 0);
62
+    $team_type_map = variable_get('boincimport_team_types', array()); 
63 63
   
64
-  // Save the team type affiliation
65
-  $team_type_tid = $team_type_map[$boincteam->type];
64
+    // Save the team type affiliation
65
+    $team_type_tid = $team_type_map[$boincteam->type];
66 66
   
67
-  $boincteam->description = html_entity_decode($boincteam->description, ENT_QUOTES, 'utf-8');
68
-  // Be sure the text is filtered for the default input format
69
-  $boincteam->description = check_markup($boincteam->description, $input_format);
67
+    $boincteam->description = html_entity_decode($boincteam->description, ENT_QUOTES, 'utf-8');
68
+    // Be sure the text is filtered for the default input format
69
+    $boincteam->description = check_markup($boincteam->description, $input_format);
70 70
   
71
-  $teaser = node_teaser($boincteam->description);
71
+    $teaser = node_teaser($boincteam->description);
72 72
   
73
-  if ($nid) {
73
+    if ($nid) {
74 74
     // Update an existing node
75 75
     $node = node_load($nid);
76 76
     $node->title = $boincteam->name;
77 77
     $node->body = $boincteam->description;
78 78
     $node->teaser = $teaser;
79 79
     $node->uid = boincuser_lookup_uid($boincteam->userid);
80
-  }
81
-  else {
80
+    }
81
+    else {
82 82
     // Construct the team as a new node
83 83
     $node = array(
84
-      'type' => 'team',
85
-      'title' => $boincteam->name,
86
-      'body' => $boincteam->description,
87
-      'teaser' => $teaser,
88
-      'uid' => boincuser_lookup_uid($boincteam->userid),
89
-      'path' => null,
90
-      'status' => 1,  // published or not - always publish
91
-      'promote' => 0,
92
-      'created' => $boincteam->create_time,
93
-      'comment' => 0,  // comments disabled
94
-      'moderate' => 0,
95
-      'sticky' => 0,
96
-      'format' => $input_format
84
+        'type' => 'team',
85
+        'title' => $boincteam->name,
86
+        'body' => $boincteam->description,
87
+        'teaser' => $teaser,
88
+        'uid' => boincuser_lookup_uid($boincteam->userid),
89
+        'path' => null,
90
+        'status' => 1,  // published or not - always publish
91
+        'promote' => 0,
92
+        'created' => $boincteam->create_time,
93
+        'comment' => 0,  // comments disabled
94
+        'moderate' => 0,
95
+        'sticky' => 0,
96
+        'format' => $input_format
97 97
     );
98 98
     $node = (object) $node; // node_save requires an object form
99
-  }
99
+    }
100 100
   
101
-  $node->taxonomy[] = taxonomy_get_term($team_type_tid);
101
+    $node->taxonomy[] = taxonomy_get_term($team_type_tid);
102 102
   
103
-  // Save the team node
104
-  node_save($node);
105
-  $success = ($node->nid) ? TRUE : FALSE;
103
+    // Save the team node
104
+    node_save($node);
105
+    $success = ($node->nid) ? TRUE : FALSE;
106 106
   
107
-  if (!$nid) {
107
+    if (!$nid) {
108 108
     // Save the team IDs to a BOINC <--> Drupal reference table, if needed
109 109
     db_query('INSERT INTO {boincteam} (team_id, nid) VALUES (%d, %d)', $boincteam->id, $node->nid);
110
-  }
110
+    }
111 111
   
112
-  return $success;
112
+    return $success;
113 113
 }
114 114
 
115 115
 /**
@@ -126,25 +126,25 @@  discard block
 block discarded – undo
126 126
  *   respected. This is useful the list of users are to be contacted.
127 127
  */
128 128
 function _boincteam_userids($boincteamid, $boincid=TRUE, $respectprivacy=TRUE) {
129
-  $sql = 'SELECT user.id as id FROM {user} user WHERE user.teamid=%s';
130
-  if ($respectprivacy) {
129
+    $sql = 'SELECT user.id as id FROM {user} user WHERE user.teamid=%s';
130
+    if ($respectprivacy) {
131 131
     $sql .= ' AND user.send_email=1';
132
-  }
132
+    }
133 133
 
134
-  db_set_active('boinc_ro');
135
-  $dbres = db_query($sql, $boincteamid);
136
-  db_set_active('default');
134
+    db_set_active('boinc_ro');
135
+    $dbres = db_query($sql, $boincteamid);
136
+    db_set_active('default');
137 137
 
138
-  $ids = array();
139
-  while (($result = db_fetch_object($dbres)) != FALSE) {
138
+    $ids = array();
139
+    while (($result = db_fetch_object($dbres)) != FALSE) {
140 140
     $ids[] = $result->id;
141
-  }
142
-  if ($boincid) {
141
+    }
142
+    if ($boincid) {
143 143
     return $ids;
144
-  }
145
-  else {
144
+    }
145
+    else {
146 146
     return array_map('boincuser_lookup_uid', $ids);
147
-  }
147
+    }
148 148
 }
149 149
 
150 150
 /**
@@ -158,18 +158,18 @@  discard block
 block discarded – undo
158 158
  *   respected. This is useful the list of users are to be contacted.
159 159
  */
160 160
 function _boincteam_emails($boincteamid, $respectprivacy=TRUE) {
161
-  $sql = 'SELECT user.email_addr as email_addr FROM {user} user WHERE user.teamid=%s';
162
-  if ($respectprivacy) {
161
+    $sql = 'SELECT user.email_addr as email_addr FROM {user} user WHERE user.teamid=%s';
162
+    if ($respectprivacy) {
163 163
     $sql .= ' AND user.send_email=1';
164
-  }
164
+    }
165 165
 
166
-  db_set_active('boinc_ro');
167
-  $dbres = db_query($sql, $boincteamid);
168
-  db_set_active('default');
166
+    db_set_active('boinc_ro');
167
+    $dbres = db_query($sql, $boincteamid);
168
+    db_set_active('default');
169 169
 
170
-  $emails = array();
171
-  while (($result = db_fetch_object($dbres)) != FALSE) {
170
+    $emails = array();
171
+    while (($result = db_fetch_object($dbres)) != FALSE) {
172 172
     $emails[] = $result->email_addr;
173
-  }
174
-  return $emails;
173
+    }
174
+    return $emails;
175 175
 }
Please login to merge, or discard this patch.