@@ -15,59 +15,59 @@ discard block |
||
15 | 15 | * Form validation handler for login |
16 | 16 | */ |
17 | 17 | function boincuser_login_validate($form, &$form_state) { |
18 | - /* // SAMPLE: To try validation with Drupal first... |
|
18 | + /* // SAMPLE: To try validation with Drupal first... |
|
19 | 19 | global $user; |
20 | 20 | if (!empty($user->uid)) { |
21 | 21 | // Authentication with Drupal was successful |
22 | 22 | return; |
23 | 23 | }*/ |
24 | 24 | |
25 | - // Set name for logging purposes |
|
26 | - $form_state['values']['name'] = $form_state['values']['email']; |
|
25 | + // Set name for logging purposes |
|
26 | + $form_state['values']['name'] = $form_state['values']['email']; |
|
27 | 27 | |
28 | - // Bypass BOINC validation if passed the name of user 1 |
|
29 | - $user_1 = user_load(1); |
|
30 | - if ($form_state['values']['email'] == $user_1->name) { |
|
28 | + // Bypass BOINC validation if passed the name of user 1 |
|
29 | + $user_1 = user_load(1); |
|
30 | + if ($form_state['values']['email'] == $user_1->name) { |
|
31 | 31 | user_authenticate($form_state['values']); |
32 | 32 | return; |
33 | - } |
|
33 | + } |
|
34 | 34 | |
35 | - // Call our custom authentication function to check for an existing BOINC user |
|
36 | - if (!boincuser_login_authenticate($form_state['values'])) { |
|
35 | + // Call our custom authentication function to check for an existing BOINC user |
|
36 | + if (!boincuser_login_authenticate($form_state['values'])) { |
|
37 | 37 | // Authentication failed; set an error accordingly |
38 | 38 | form_set_error('name', bts('Sorry, unrecognized email address or password.', array(), NULL, 'boinc:forgot-password') . ' ' . l(bts('Have you forgotten your password?', array(), NULL, 'boinc:forgot-password'), 'user/password')); |
39 | - } |
|
39 | + } |
|
40 | 40 | } |
41 | 41 | |
42 | 42 | /** |
43 | 43 | * Custom authentication function to check BOINC account information |
44 | 44 | */ |
45 | 45 | function boincuser_login_authenticate($form_values) { |
46 | - global $boincuser_authenticated; |
|
47 | - $lower_email_addr = strtolower($form_values['email']); |
|
48 | - $passwd = $form_values['pass']; |
|
49 | - $passwd_hash = md5($passwd.$lower_email_addr); |
|
46 | + global $boincuser_authenticated; |
|
47 | + $lower_email_addr = strtolower($form_values['email']); |
|
48 | + $passwd = $form_values['pass']; |
|
49 | + $passwd_hash = md5($passwd.$lower_email_addr); |
|
50 | 50 | |
51 | - // Include BOINC user library |
|
52 | - require_boinc('boinc_db'); |
|
53 | - require_boinc('user_util'); |
|
51 | + // Include BOINC user library |
|
52 | + require_boinc('boinc_db'); |
|
53 | + require_boinc('user_util'); |
|
54 | 54 | |
55 | - // Get the BOINC user and check credentials |
|
56 | - $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
57 | - if (!$boinc_user) return false; |
|
55 | + // Get the BOINC user and check credentials |
|
56 | + $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
57 | + if (!$boinc_user) return false; |
|
58 | 58 | |
59 | - if (!check_passwd_hash($boinc_user, $passwd_hash)) { |
|
59 | + if (!check_passwd_hash($boinc_user, $passwd_hash)) { |
|
60 | 60 | return false; |
61 | - } |
|
61 | + } |
|
62 | 62 | |
63 | - // BOINC authentication successful; log in and synchronize accounts |
|
64 | - boincuser_login_register($boinc_user); |
|
65 | - // Write session, update timestamp, run user 'login' hook. |
|
66 | - user_authenticate_finalize($form_values); |
|
67 | - // Use a global variable to save the fact that we did authentication. |
|
68 | - $boincuser_authenticated = true; |
|
63 | + // BOINC authentication successful; log in and synchronize accounts |
|
64 | + boincuser_login_register($boinc_user); |
|
65 | + // Write session, update timestamp, run user 'login' hook. |
|
66 | + user_authenticate_finalize($form_values); |
|
67 | + // Use a global variable to save the fact that we did authentication. |
|
68 | + $boincuser_authenticated = true; |
|
69 | 69 | |
70 | - return true; |
|
70 | + return true; |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -75,18 +75,18 @@ discard block |
||
75 | 75 | * Drupal accounts |
76 | 76 | */ |
77 | 77 | function boincuser_login_register($boinc_user) { |
78 | - global $user; |
|
79 | - require_boinc('boinc_db'); |
|
80 | - // If a Drupal account already exists, log in |
|
81 | - $existing_user = user_load(array('mail' => $boinc_user->email_addr)); |
|
82 | - if (!empty($existing_user->uid)) { |
|
78 | + global $user; |
|
79 | + require_boinc('boinc_db'); |
|
80 | + // If a Drupal account already exists, log in |
|
81 | + $existing_user = user_load(array('mail' => $boinc_user->email_addr)); |
|
82 | + if (!empty($existing_user->uid)) { |
|
83 | 83 | $user = $existing_user; |
84 | - } else { |
|
84 | + } else { |
|
85 | 85 | // Create a Drupal user from the BOINC user |
86 | 86 | if ($user = boincuser_register_make_drupal_user($boinc_user)) { |
87 | - watchdog('user', 'New external user: %email using module %module.', array('%email' => $email_addr, '%module' => $module), WATCHDOG_NOTICE, l(t('edit'), 'user/'. $user->uid .'/edit')); |
|
87 | + watchdog('user', 'New external user: %email using module %module.', array('%email' => $email_addr, '%module' => $module), WATCHDOG_NOTICE, l(t('edit'), 'user/'. $user->uid .'/edit')); |
|
88 | + } |
|
88 | 89 | } |
89 | - } |
|
90 | 90 | } |
91 | 91 | |
92 | 92 | |
@@ -98,113 +98,113 @@ discard block |
||
98 | 98 | * New user registration validation handler. |
99 | 99 | */ |
100 | 100 | function boincuser_register_validate($form, &$form_state) { |
101 | - // Include BOINC database objects library |
|
102 | - require_boinc('boinc_db'); |
|
101 | + // Include BOINC database objects library |
|
102 | + require_boinc('boinc_db'); |
|
103 | 103 | |
104 | - // Check terms of use agreement |
|
105 | - $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
106 | - if (!empty($termsofuse)) { |
|
104 | + // Check terms of use agreement |
|
105 | + $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
106 | + if (!empty($termsofuse)) { |
|
107 | 107 | if (!$form_state['values']['termsofuse']['agreeTOU']) { |
108 | - form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', NULL, 'boinc:register-new-user')); |
|
109 | - return false; |
|
108 | + form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', NULL, 'boinc:register-new-user')); |
|
109 | + return false; |
|
110 | + } |
|
110 | 111 | } |
111 | - } |
|
112 | 112 | |
113 | - // Lower-case the email address |
|
114 | - $lower_email_addr = strtolower($form_state['values']['mail']); |
|
115 | - $tmp_user = BoincUser::lookup_prev_email_addr($lower_email_addr); |
|
116 | - if ($tmp_user) { |
|
113 | + // Lower-case the email address |
|
114 | + $lower_email_addr = strtolower($form_state['values']['mail']); |
|
115 | + $tmp_user = BoincUser::lookup_prev_email_addr($lower_email_addr); |
|
116 | + if ($tmp_user) { |
|
117 | 117 | // User already exists |
118 | 118 | rules_invoke_event('boincuser_change_email_error', $lower_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
119 | 119 | form_set_error('mail', |
120 | - bts('An account already exists for @email. The @project administrators have been notified.', |
|
120 | + bts('An account already exists for @email. The @project administrators have been notified.', |
|
121 | 121 | array( |
122 | - '@email' => $lower_email_addr, |
|
123 | - '@project' => variable_get('site_name', 'Drupal-BOINC') |
|
122 | + '@email' => $lower_email_addr, |
|
123 | + '@project' => variable_get('site_name', 'Drupal-BOINC') |
|
124 | 124 | ), NULL, 'boinc:register-new-user') |
125 | 125 | ); |
126 | - } |
|
126 | + } |
|
127 | 127 | |
128 | - // Check for an existing BOINC user |
|
129 | - // This is somewhat redundent as Drupal will also check if the email |
|
130 | - // is a duplicate. However, in the case where there is no Drupal |
|
131 | - // account, but a BOINC account exists with this email, the check |
|
132 | - // will fail. |
|
133 | - $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
134 | - if ($boinc_user) { |
|
128 | + // Check for an existing BOINC user |
|
129 | + // This is somewhat redundent as Drupal will also check if the email |
|
130 | + // is a duplicate. However, in the case where there is no Drupal |
|
131 | + // account, but a BOINC account exists with this email, the check |
|
132 | + // will fail. |
|
133 | + $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
|
134 | + if ($boinc_user) { |
|
135 | 135 | // User already exists |
136 | 136 | form_set_error('mail', bts('An account already exists for @email. Log in or request password assistance to access your @project account.', array('@email' => $lower_email_addr, '@project' => PROJECT), NULL, 'boinc:add-new-user')); |
137 | 137 | return false; |
138 | - } |
|
138 | + } |
|
139 | 139 | |
140 | - // Check Drupal name is not a duplicate, and create a proper drupal |
|
141 | - // name from the boinc username. |
|
142 | - $form_state['values']['name'] = create_proper_drupalname($form_state['values']['boincuser_name']); |
|
140 | + // Check Drupal name is not a duplicate, and create a proper drupal |
|
141 | + // name from the boinc username. |
|
142 | + $form_state['values']['name'] = create_proper_drupalname($form_state['values']['boincuser_name']); |
|
143 | 143 | |
144 | - return true; |
|
144 | + return true; |
|
145 | 145 | } |
146 | 146 | |
147 | 147 | /** |
148 | 148 | * Create BOINC account |
149 | 149 | */ |
150 | 150 | function boincuser_register_make_user($params) { |
151 | - // Include BOINC user library |
|
152 | - require_boinc('user_util'); |
|
153 | - // Create the BOINC user |
|
154 | - $boinc_user = make_user($params['email_addr'], $params['name'], $params['passwd_hash'], $params['country'], $params['postal_code']); |
|
155 | - return $boinc_user; |
|
151 | + // Include BOINC user library |
|
152 | + require_boinc('user_util'); |
|
153 | + // Create the BOINC user |
|
154 | + $boinc_user = make_user($params['email_addr'], $params['name'], $params['passwd_hash'], $params['country'], $params['postal_code']); |
|
155 | + return $boinc_user; |
|
156 | 156 | } |
157 | 157 | |
158 | 158 | /** |
159 | 159 | * Create Drupal account from existing BOINC account |
160 | 160 | */ |
161 | 161 | function boincuser_register_make_drupal_user($boinc_user) { |
162 | - $account = null; |
|
163 | - if (is_numeric($boinc_user)) { |
|
162 | + $account = null; |
|
163 | + if (is_numeric($boinc_user)) { |
|
164 | 164 | $boinc_user = boincuser_load($boinc_user); |
165 | - } |
|
166 | - if ($boinc_user) { |
|
165 | + } |
|
166 | + if ($boinc_user) { |
|
167 | 167 | $account = boincuser_create_drupal_user($boinc_user); |
168 | 168 | if ($account) { |
169 | - boincuser_create_drupal_profile($account, $boinc_user); |
|
169 | + boincuser_create_drupal_profile($account, $boinc_user); |
|
170 | + } |
|
170 | 171 | } |
171 | - } |
|
172 | - return $account; |
|
172 | + return $account; |
|
173 | 173 | } |
174 | 174 | |
175 | 175 | function boincuser_create_drupal_user($boinc_user) { |
176 | - require_boinc('forum_db'); |
|
177 | - BoincForumPrefs::lookup($boinc_user); |
|
178 | - $account = NULL; |
|
179 | - $module = 'boincuser'; |
|
176 | + require_boinc('forum_db'); |
|
177 | + BoincForumPrefs::lookup($boinc_user); |
|
178 | + $account = NULL; |
|
179 | + $module = 'boincuser'; |
|
180 | 180 | |
181 | - // Verify that this account has not already been imported |
|
182 | - $already_imported = db_result(db_query(' |
|
181 | + // Verify that this account has not already been imported |
|
182 | + $already_imported = db_result(db_query(' |
|
183 | 183 | SELECT COUNT(*) FROM {boincuser} WHERE boinc_id = %d', |
184 | 184 | $boinc_user->id) |
185 | - ); |
|
186 | - if ($already_imported) { |
|
185 | + ); |
|
186 | + if ($already_imported) { |
|
187 | 187 | return NULL; |
188 | - } |
|
188 | + } |
|
189 | 189 | |
190 | - // Email is limited to 64 characters... |
|
191 | - $boinc_email = substr($boinc_user->email_addr, 0, 64); |
|
190 | + // Email is limited to 64 characters... |
|
191 | + $boinc_email = substr($boinc_user->email_addr, 0, 64); |
|
192 | 192 | |
193 | - // Email should be unique |
|
194 | - $already_imported = db_result(db_query(" |
|
193 | + // Email should be unique |
|
194 | + $already_imported = db_result(db_query(" |
|
195 | 195 | SELECT COUNT(*) FROM {users} WHERE mail = '%s'", |
196 | 196 | $boinc_email) |
197 | - ); |
|
198 | - if ($already_imported) { |
|
197 | + ); |
|
198 | + if ($already_imported) { |
|
199 | 199 | drupal_set_message(t('An account for @email already exists', array('@email' => $boinc_email)), 'warning'); |
200 | 200 | watchdog('boincimport', 'An account for @email already exists', array('@email' => $boinc_email), WATCHDOG_WARNING); |
201 | 201 | return NULL; |
202 | - } |
|
202 | + } |
|
203 | 203 | |
204 | - // Make sure name is unique |
|
205 | - $unique_name = create_proper_drupalname($boinc_user->name); |
|
204 | + // Make sure name is unique |
|
205 | + $unique_name = create_proper_drupalname($boinc_user->name); |
|
206 | 206 | |
207 | - $userinfo = array( |
|
207 | + $userinfo = array( |
|
208 | 208 | 'name' => $unique_name, |
209 | 209 | 'pass' => $boinc_user->passwd_hash, |
210 | 210 | 'mail' => $boinc_email, |
@@ -214,126 +214,126 @@ discard block |
||
214 | 214 | 'status' => 1, |
215 | 215 | "authname_{$module}" => $boinc_email, |
216 | 216 | 'access' => time() |
217 | - ); |
|
217 | + ); |
|
218 | 218 | |
219 | - $in_penalty = ($boinc_user->prefs->banished_until > time()); |
|
219 | + $in_penalty = ($boinc_user->prefs->banished_until > time()); |
|
220 | 220 | |
221 | - // Add user to community member role (if no current penalty) |
|
222 | - if (!$in_penalty) { |
|
221 | + // Add user to community member role (if no current penalty) |
|
222 | + if (!$in_penalty) { |
|
223 | 223 | $community_role = array_search('community member', user_roles(true)); |
224 | 224 | $userinfo['roles'] = array( |
225 | - $community_role => '' |
|
225 | + $community_role => '' |
|
226 | 226 | ); |
227 | - } |
|
227 | + } |
|
228 | 228 | |
229 | - // Mark account as imported so a BOINC account is not created on Insert (i.e. user_save) |
|
230 | - $_SESSION['importedUser'] = true; |
|
231 | - $account = user_save('', $userinfo); |
|
229 | + // Mark account as imported so a BOINC account is not created on Insert (i.e. user_save) |
|
230 | + $_SESSION['importedUser'] = true; |
|
231 | + $account = user_save('', $userinfo); |
|
232 | 232 | |
233 | - // Drupal overrides the original registration date, so update to the correct date |
|
234 | - $account = user_save($account, array('created' => $userinfo['created'])); |
|
233 | + // Drupal overrides the original registration date, so update to the correct date |
|
234 | + $account = user_save($account, array('created' => $userinfo['created'])); |
|
235 | 235 | |
236 | - // Terminate if an error occured during user_save(). |
|
237 | - if (!$account) { |
|
236 | + // Terminate if an error occured during user_save(). |
|
237 | + if (!$account) { |
|
238 | 238 | drupal_set_message(t("Error saving user account."), 'error'); |
239 | 239 | return NULL; |
240 | - } |
|
240 | + } |
|
241 | 241 | |
242 | - // Cross reference the Drupal and BOINC accounts |
|
243 | - boincuser_account_cross_reference($account->uid, $boinc_user->id); |
|
242 | + // Cross reference the Drupal and BOINC accounts |
|
243 | + boincuser_account_cross_reference($account->uid, $boinc_user->id); |
|
244 | 244 | |
245 | - if ($in_penalty) { |
|
245 | + if ($in_penalty) { |
|
246 | 246 | // Import the timestamp of when the penalty period will be over |
247 | 247 | $boincuser_record = array( |
248 | - 'uid' => $account->uid, |
|
249 | - 'penalty_expiration' => $boinc_user->prefs->banished_until, |
|
248 | + 'uid' => $account->uid, |
|
249 | + 'penalty_expiration' => $boinc_user->prefs->banished_until, |
|
250 | 250 | ); |
251 | 251 | drupal_write_record('boincuser', $boincuser_record, 'uid'); |
252 | - } |
|
252 | + } |
|
253 | 253 | |
254 | - return $account; |
|
254 | + return $account; |
|
255 | 255 | } |
256 | 256 | |
257 | 257 | function boincuser_create_drupal_profile($account, $boinc_user) { |
258 | 258 | |
259 | - require_boinc('forum_db'); |
|
260 | - BoincForumPrefs::lookup($boinc_user); |
|
259 | + require_boinc('forum_db'); |
|
260 | + BoincForumPrefs::lookup($boinc_user); |
|
261 | 261 | |
262 | - $image_dir = boinc_get_path('user_image'); |
|
262 | + $image_dir = boinc_get_path('user_image'); |
|
263 | 263 | |
264 | - // Automatically create a content profile |
|
265 | - $now = time(); |
|
266 | - $profile_background = null; |
|
267 | - $profile_opinions = null; |
|
268 | - $profile_image = null; |
|
269 | - $avatar_image = null; |
|
270 | - $profile_approved = NULL; |
|
264 | + // Automatically create a content profile |
|
265 | + $now = time(); |
|
266 | + $profile_background = null; |
|
267 | + $profile_opinions = null; |
|
268 | + $profile_image = null; |
|
269 | + $avatar_image = null; |
|
270 | + $profile_approved = NULL; |
|
271 | 271 | |
272 | - // Load the BOINC profile, if available |
|
273 | - if ($boinc_user->has_profile) { |
|
272 | + // Load the BOINC profile, if available |
|
273 | + if ($boinc_user->has_profile) { |
|
274 | 274 | $boinc_profile = BoincProfile::lookup("userid={$boinc_user->id}"); |
275 | 275 | $profile_background = $boinc_profile->response1; |
276 | 276 | $profile_opinions = $boinc_profile->response2; |
277 | 277 | if ($boinc_profile->has_picture) { |
278 | - // Load picture; load validators; determine where to store it in Drupal |
|
279 | - $image_path = "{$image_dir}/{$boinc_user->id}.jpg"; |
|
280 | - $profile_image = get_cck_image_object($image_path, 'field_profile_image', 'profile', TRUE); |
|
281 | - // If the user does not have a different image as an avatar, use this one |
|
282 | - if (!$boinc_user->prefs->avatar) { |
|
278 | + // Load picture; load validators; determine where to store it in Drupal |
|
279 | + $image_path = "{$image_dir}/{$boinc_user->id}.jpg"; |
|
280 | + $profile_image = get_cck_image_object($image_path, 'field_profile_image', 'profile', TRUE); |
|
281 | + // If the user does not have a different image as an avatar, use this one |
|
282 | + if (!$boinc_user->prefs->avatar) { |
|
283 | 283 | $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
284 | - } |
|
284 | + } |
|
285 | 285 | } |
286 | 286 | if ($boinc_user->prefs->avatar) { |
287 | - $image_path = "{$image_dir}/{$boinc_user->id}_avatar.jpg"; |
|
288 | - $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
287 | + $image_path = "{$image_dir}/{$boinc_user->id}_avatar.jpg"; |
|
288 | + $avatar_image = get_cck_image_object($image_path, 'field_image', 'profile', TRUE); |
|
289 | 289 | } |
290 | 290 | $profile_approved = $boinc_profile->verification ? TRUE : FALSE; |
291 | - } |
|
292 | - $default_input_format = db_result(db_query(" |
|
291 | + } |
|
292 | + $default_input_format = db_result(db_query(" |
|
293 | 293 | SELECT format FROM {filter_formats} WHERE name = '%s'", 'Rich text')); |
294 | - if (!$default_input_format) $default_input_format = 1; |
|
295 | - |
|
296 | - // Populate the profile object |
|
297 | - $profile_node = new stdClass(); |
|
298 | - $profile_node->title = $boinc_user->name; |
|
299 | - $profile_node->uid = $account->uid; |
|
300 | - $profile_node->body = ''; |
|
301 | - $profile_node->type = 'profile'; |
|
302 | - $profile_node->created = $now; |
|
303 | - $profile_node->changed = $now; |
|
304 | - $profile_node->status = 1; |
|
305 | - $profile_node->promote = 0; |
|
306 | - $profile_node->sticky = 0; |
|
307 | - $profile_node->format = $default_input_format; |
|
308 | - $profile_node->name = $account->name; // Set to link profile to account uid! |
|
309 | - $profile_node->field_country[]['value'] = $boinc_user->country; |
|
310 | - $profile_node->field_zip[]['value'] = $boinc_user->postal_code; |
|
311 | - $profile_node->field_url[]['value'] = $boinc_user->url; |
|
312 | - $profile_node->field_background[]['value'] = $profile_background; |
|
313 | - $profile_node->field_opinions[]['value'] = $profile_opinions; |
|
314 | - $profile_node->field_image[] = $avatar_image; |
|
315 | - $profile_node->field_profile_image[] = $profile_image; |
|
316 | - |
|
317 | - // Save the profile object to the database |
|
318 | - // This will automatically set the author uid if node->name has been set |
|
319 | - $profile_node = node_submit($profile_node); |
|
320 | - node_save($profile_node); |
|
321 | - |
|
322 | - // Mark profile as approved if it has already been vetted somehow |
|
323 | - if ($profile_approved OR !$boinc_user->has_profile) { |
|
294 | + if (!$default_input_format) $default_input_format = 1; |
|
295 | + |
|
296 | + // Populate the profile object |
|
297 | + $profile_node = new stdClass(); |
|
298 | + $profile_node->title = $boinc_user->name; |
|
299 | + $profile_node->uid = $account->uid; |
|
300 | + $profile_node->body = ''; |
|
301 | + $profile_node->type = 'profile'; |
|
302 | + $profile_node->created = $now; |
|
303 | + $profile_node->changed = $now; |
|
304 | + $profile_node->status = 1; |
|
305 | + $profile_node->promote = 0; |
|
306 | + $profile_node->sticky = 0; |
|
307 | + $profile_node->format = $default_input_format; |
|
308 | + $profile_node->name = $account->name; // Set to link profile to account uid! |
|
309 | + $profile_node->field_country[]['value'] = $boinc_user->country; |
|
310 | + $profile_node->field_zip[]['value'] = $boinc_user->postal_code; |
|
311 | + $profile_node->field_url[]['value'] = $boinc_user->url; |
|
312 | + $profile_node->field_background[]['value'] = $profile_background; |
|
313 | + $profile_node->field_opinions[]['value'] = $profile_opinions; |
|
314 | + $profile_node->field_image[] = $avatar_image; |
|
315 | + $profile_node->field_profile_image[] = $profile_image; |
|
316 | + |
|
317 | + // Save the profile object to the database |
|
318 | + // This will automatically set the author uid if node->name has been set |
|
319 | + $profile_node = node_submit($profile_node); |
|
320 | + node_save($profile_node); |
|
321 | + |
|
322 | + // Mark profile as approved if it has already been vetted somehow |
|
323 | + if ($profile_approved OR !$boinc_user->has_profile) { |
|
324 | 324 | $profile_node->moderate = 0; |
325 | 325 | node_save($profile_node); |
326 | - } |
|
326 | + } |
|
327 | 327 | |
328 | - return; |
|
328 | + return; |
|
329 | 329 | } |
330 | 330 | |
331 | 331 | function boincuser_account_cross_reference($uid, $boinc_id) { |
332 | 332 | // Cross reference Drupal account with BOINC |
333 | 333 | $reference = db_query("INSERT INTO {boincuser} SET uid=%d, boinc_id=%d", $uid, $boinc_id); |
334 | 334 | if (!$reference) { |
335 | - drupal_set_message(t("Error connecting BOINC account."), 'error'); |
|
336 | - return false; |
|
335 | + drupal_set_message(t("Error connecting BOINC account."), 'error'); |
|
336 | + return false; |
|
337 | 337 | } |
338 | 338 | return true; |
339 | 339 | } |
@@ -342,35 +342,35 @@ discard block |
||
342 | 342 | * Convert any BOINC forum thread subscriptions to Drupal flag subscriptions |
343 | 343 | */ |
344 | 344 | function boincuser_pull_subscriptions($account = NULL) { |
345 | - if (!$account) { |
|
345 | + if (!$account) { |
|
346 | 346 | global $user; |
347 | 347 | $account = user_load($user->id); |
348 | - } |
|
349 | - elseif (is_numeric($account)) { |
|
348 | + } |
|
349 | + elseif (is_numeric($account)) { |
|
350 | 350 | $account = user_load($account); |
351 | - } |
|
351 | + } |
|
352 | 352 | |
353 | - // Get any subscriptions for this user |
|
354 | - db_set_active('boinc_rw'); |
|
355 | - $subscriptions = db_query(' |
|
353 | + // Get any subscriptions for this user |
|
354 | + db_set_active('boinc_rw'); |
|
355 | + $subscriptions = db_query(' |
|
356 | 356 | SELECT threadid FROM {subscriptions} |
357 | 357 | WHERE userid = %d', $account->boincuser_id); |
358 | - db_set_active('default'); |
|
358 | + db_set_active('default'); |
|
359 | 359 | |
360 | - $flag = flag_get_flag('subscriptions') or die('no "subscriptions" flag defined'); |
|
361 | - $count = 0; |
|
362 | - while ($thread_id = db_result($subscriptions)) { |
|
360 | + $flag = flag_get_flag('subscriptions') or die('no "subscriptions" flag defined'); |
|
361 | + $count = 0; |
|
362 | + while ($thread_id = db_result($subscriptions)) { |
|
363 | 363 | // For each BOINC thread ID subscribed, look up the corresponding node ID |
364 | 364 | $nid = db_result(db_query(' |
365 | 365 | SELECT nid FROM {boincimport_temp_topic} |
366 | 366 | WHERE topic_id = %d', $thread_id)); |
367 | 367 | // Flag this node for the user |
368 | 368 | if ($nid > 0) { |
369 | - $flag->flag('flag', $nid, $account); |
|
370 | - $count++; |
|
369 | + $flag->flag('flag', $nid, $account); |
|
370 | + $count++; |
|
371 | + } |
|
371 | 372 | } |
372 | - } |
|
373 | - return $count; |
|
373 | + return $count; |
|
374 | 374 | } |
375 | 375 | |
376 | 376 | |
@@ -382,12 +382,12 @@ discard block |
||
382 | 382 | * User account update validation handler. |
383 | 383 | */ |
384 | 384 | function boincuser_account_validate($edit, $account) { |
385 | - // Include BOINC database objects library, load BOINC account data |
|
386 | - require_boinc('boinc_db'); |
|
387 | - $boinc_user = BoincUser::lookup_email_addr($account->mail); |
|
388 | - $changing_email = ($edit['mail'] AND $edit['mail'] != $account->mail) ? true : false; |
|
389 | - $changing_pass = ($edit['pass']) ? true : false; |
|
390 | - if ($changing_email) { |
|
385 | + // Include BOINC database objects library, load BOINC account data |
|
386 | + require_boinc('boinc_db'); |
|
387 | + $boinc_user = BoincUser::lookup_email_addr($account->mail); |
|
388 | + $changing_email = ($edit['mail'] AND $edit['mail'] != $account->mail) ? true : false; |
|
389 | + $changing_pass = ($edit['pass']) ? true : false; |
|
390 | + if ($changing_email) { |
|
391 | 391 | // E-mail address is set to change; check for an existing BOINC user |
392 | 392 | // Check previous email addresses as well, this user's current |
393 | 393 | // email cannot be the same as another user's previous email |
@@ -398,50 +398,50 @@ discard block |
||
398 | 398 | |
399 | 399 | $boinc_user_already_exists = ( BoincUser::lookup_email_addr($edit['mail']) || BoincUser::lookup_prev_email_addr($edit['mail']) ); |
400 | 400 | if ($boinc_user_already_exists) { |
401 | - form_set_error('mail', bts('A BOINC account already exists for @email.', array('@email' => $edit['mail']), NULL, 'boinc:add-new-user')); |
|
401 | + form_set_error('mail', bts('A BOINC account already exists for @email.', array('@email' => $edit['mail']), NULL, 'boinc:add-new-user')); |
|
402 | 402 | } |
403 | 403 | |
404 | 404 | // Check email has not been changed in last X days (default X=7). |
405 | 405 | $duration = 86400 * 7; |
406 | 406 | if ( (($boinc_user->email_addr_change_time + $duration) > time()) and (!(user_access('administer users'))) ) { |
407 | - form_set_error('email_addr_change_time', |
|
407 | + form_set_error('email_addr_change_time', |
|
408 | 408 | bts('Your email address was changed within the past seven (7) days. You must wait until !futuredate to change your email again. If you need to reverse this change, please look for an email sent to !prev_email_addr.', |
409 | 409 | array( |
410 | - '!futuredate' => date('F j, Y \a\t H:i T', $boinc_user->email_addr_change_time + $duration), |
|
411 | - '!prev_email_addr' => $boinc_user->previous_email_addr, |
|
410 | + '!futuredate' => date('F j, Y \a\t H:i T', $boinc_user->email_addr_change_time + $duration), |
|
411 | + '!prev_email_addr' => $boinc_user->previous_email_addr, |
|
412 | 412 | ), |
413 | 413 | NULL, 'boinc:account-credentials-change') |
414 | - ); |
|
414 | + ); |
|
415 | + } |
|
415 | 416 | } |
416 | - } |
|
417 | 417 | |
418 | - // If user is changing email or password, require that the current |
|
419 | - // password has been given as well. |
|
420 | - if (($changing_email OR $changing_pass) AND !user_access('administer users')) { |
|
418 | + // If user is changing email or password, require that the current |
|
419 | + // password has been given as well. |
|
420 | + if (($changing_email OR $changing_pass) AND !user_access('administer users')) { |
|
421 | 421 | // If changing email or password, require current password |
422 | 422 | // (except in cases where password is being reset) |
423 | 423 | if (isset($_SESSION['reset_pass'])) { |
424 | - unset($_SESSION['reset_pass']); |
|
424 | + unset($_SESSION['reset_pass']); |
|
425 | 425 | } |
426 | 426 | else { |
427 | - $given_hash = md5($edit['current_pass'] . strtolower($account->mail)); |
|
428 | - if (!$edit['current_pass']) { |
|
427 | + $given_hash = md5($edit['current_pass'] . strtolower($account->mail)); |
|
428 | + if (!$edit['current_pass']) { |
|
429 | 429 | form_set_error('current_pass', bts('Authentication is required when changing E-mail address or setting new password.', array(), NULL, 'boinc:account-credentials-change')); |
430 | - } |
|
431 | - elseif ( (!password_verify($given_hash, $boinc_user->passwd_hash)) and ($given_hash != $boinc_user->passwd_hash) ) { |
|
430 | + } |
|
431 | + elseif ( (!password_verify($given_hash, $boinc_user->passwd_hash)) and ($given_hash != $boinc_user->passwd_hash) ) { |
|
432 | 432 | form_set_error('current_pass', bts('Password entered is not valid. Please verify that it is correct.', array(), NULL, 'boinc:account-credentials-change')); |
433 | - } |
|
433 | + } |
|
434 | 434 | |
435 | 435 | } |
436 | - } |
|
436 | + } |
|
437 | 437 | |
438 | - // If an admin tries to change the email and NOT the password, show |
|
439 | - // error message. BOINC requires both to be changed together. |
|
440 | - if ($changing_email AND !$changing_pass AND user_access('administer users')) { |
|
438 | + // If an admin tries to change the email and NOT the password, show |
|
439 | + // error message. BOINC requires both to be changed together. |
|
440 | + if ($changing_email AND !$changing_pass AND user_access('administer users')) { |
|
441 | 441 | form_set_error('pass', bts('If changing a user\'s email, you must also change the password simultaneously.', array(), NULL, 'boinc:account-credentials-change')); |
442 | - } |
|
442 | + } |
|
443 | 443 | |
444 | - // Expansion required to allow account key in place of passwd...? |
|
444 | + // Expansion required to allow account key in place of passwd...? |
|
445 | 445 | |
446 | 446 | } |
447 | 447 | |
@@ -454,12 +454,12 @@ discard block |
||
454 | 454 | * Password request validation handler. |
455 | 455 | */ |
456 | 456 | function boincuser_request_pass_validate($form, &$form_state) { |
457 | - $edit = $form_state['values']; |
|
458 | - // The Drupal submit function expects a "name" field, even though |
|
459 | - // it contains an email address and we will not allow a user name |
|
460 | - if (!$edit['name']) form_set_error('name', bts('Please enter your email address', array(), NULL, 'boinc:forgot-password')); |
|
461 | - elseif (!valid_email_address($edit['name'])) form_set_error('name', bts('@email is not a well formed email address, please verify', array('@email' => $edit['name']), NULL, 'boinc:forgot-password')); |
|
462 | - else { |
|
457 | + $edit = $form_state['values']; |
|
458 | + // The Drupal submit function expects a "name" field, even though |
|
459 | + // it contains an email address and we will not allow a user name |
|
460 | + if (!$edit['name']) form_set_error('name', bts('Please enter your email address', array(), NULL, 'boinc:forgot-password')); |
|
461 | + elseif (!valid_email_address($edit['name'])) form_set_error('name', bts('@email is not a well formed email address, please verify', array('@email' => $edit['name']), NULL, 'boinc:forgot-password')); |
|
462 | + else { |
|
463 | 463 | // set email addrress to lower case |
464 | 464 | $lower_email_addr = strtolower($edit['name']); |
465 | 465 | |
@@ -469,110 +469,110 @@ discard block |
||
469 | 469 | require_boinc('boinc_db'); |
470 | 470 | $boinc_user = BoincUser::lookup_email_addr($lower_email_addr); |
471 | 471 | if ($boinc_user) { |
472 | - // If the user is in BOINC but not Drupal, bring them over... |
|
473 | - boincuser_register_make_drupal_user($boinc_user); |
|
472 | + // If the user is in BOINC but not Drupal, bring them over... |
|
473 | + boincuser_register_make_drupal_user($boinc_user); |
|
474 | 474 | } else { |
475 | - // If there is no existing BOINC user either, show an error |
|
476 | - form_set_error('name', bts('No account exists for @email -- please create an account using a BOINC client -- !instructions', |
|
477 | - array( |
|
478 | - '@email' => $edit['name'], |
|
479 | - '!instructions' => l(bts('Instructions', array(), NULL, 'boinc:forgot-password'), 'join') |
|
480 | - ), NULL, 'boinc:forgot-password')); |
|
481 | - } |
|
482 | - } |
|
475 | + // If there is no existing BOINC user either, show an error |
|
476 | + form_set_error('name', bts('No account exists for @email -- please create an account using a BOINC client -- !instructions', |
|
477 | + array( |
|
478 | + '@email' => $edit['name'], |
|
479 | + '!instructions' => l(bts('Instructions', array(), NULL, 'boinc:forgot-password'), 'join') |
|
480 | + ), NULL, 'boinc:forgot-password')); |
|
481 | + } |
|
482 | + } |
|
483 | 483 | } |
484 | 484 | |
485 | 485 | /** |
486 | 486 | * The definition of the authenticator login form. |
487 | 487 | */ |
488 | 488 | function boincuser_authloginform() { |
489 | - $headers = apache_request_headers(); |
|
490 | - $project_name = variable_get('site_name', 'Drupal-BOINC'); |
|
491 | - $project_domain = $headers['Host']; |
|
492 | - $form['heading'] = array( |
|
489 | + $headers = apache_request_headers(); |
|
490 | + $project_name = variable_get('site_name', 'Drupal-BOINC'); |
|
491 | + $project_domain = $headers['Host']; |
|
492 | + $form['heading'] = array( |
|
493 | 493 | '#type' => 'markup', |
494 | 494 | '#value' => '<h3>' . bts("If you forgot your account's email address, or you can't receive email there:", array(), NULL, 'boinc:authenticator-login-page') . '</h3>' |
495 | - ); |
|
496 | - $form['instructions'] = array( |
|
495 | + ); |
|
496 | + $form['instructions'] = array( |
|
497 | 497 | '#type' => 'markup', |
498 | 498 | '#value' => '' . |
499 | - '<p>' . bts("If you have run BOINC under the account, you can still access it. Here's how:", array(), NULL, 'boinc:authenticator-login-page') . |
|
500 | - ' <ul>' . |
|
501 | - ' <li>' . bts('Go to the BOINC data directory on your computer (see !boinc_wiki for help finding this).', array('!boinc_wiki' => l(bts('BOINC documentation', array(), NULL, 'boinc:authenticator-login-page'), 'http://boinc.berkeley.edu/wiki/BOINC_Data_directory')), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
502 | - ' <li>' . bts('Find your account file for this project; it will have a name like %file (where the project URL is %url).', array('%file' => "account_{$project_domain}.xml", '%url' => "http://{$project_domain}"), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
503 | - ' <li>' . bts("Open the file in a text editor like Notepad. You'll see something like:", array(), NULL, 'boinc:authenticator-login-page') . |
|
504 | - ' <pre>' . |
|
505 | - '<account>' . "\n" . |
|
506 | - " <master_url>http://{$project_domain}/</master_url>" . "\n" . |
|
507 | - ' <authenticator>8b8496fdd26df7dc0423ecd43c09a56b</authenticator>' . "\n" . |
|
508 | - " <project_name>{$project_name}</project_name>" . "\n" . |
|
509 | - ' ...' . "\n" . |
|
510 | - '</account>' . |
|
511 | - ' </pre>' . |
|
512 | - ' </li>' . |
|
513 | - ' <li>' . bts('Select and Copy the string between <authenticator> and </authenticator> (%auth in the above example).', array('%auth' => '8b8496fdd26df7dc0423ecd43c09a56b'), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
514 | - ' <li>' . bts('Paste the string into the field below, and click OK.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
515 | - ' <li>' . bts('You will now be logged in to your account; update the email and password of your account.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
516 | - ' </ul>' . |
|
517 | - '</p>' |
|
518 | - ); |
|
519 | - $form['authenticator'] = array( |
|
499 | + '<p>' . bts("If you have run BOINC under the account, you can still access it. Here's how:", array(), NULL, 'boinc:authenticator-login-page') . |
|
500 | + ' <ul>' . |
|
501 | + ' <li>' . bts('Go to the BOINC data directory on your computer (see !boinc_wiki for help finding this).', array('!boinc_wiki' => l(bts('BOINC documentation', array(), NULL, 'boinc:authenticator-login-page'), 'http://boinc.berkeley.edu/wiki/BOINC_Data_directory')), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
502 | + ' <li>' . bts('Find your account file for this project; it will have a name like %file (where the project URL is %url).', array('%file' => "account_{$project_domain}.xml", '%url' => "http://{$project_domain}"), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
503 | + ' <li>' . bts("Open the file in a text editor like Notepad. You'll see something like:", array(), NULL, 'boinc:authenticator-login-page') . |
|
504 | + ' <pre>' . |
|
505 | + '<account>' . "\n" . |
|
506 | + " <master_url>http://{$project_domain}/</master_url>" . "\n" . |
|
507 | + ' <authenticator>8b8496fdd26df7dc0423ecd43c09a56b</authenticator>' . "\n" . |
|
508 | + " <project_name>{$project_name}</project_name>" . "\n" . |
|
509 | + ' ...' . "\n" . |
|
510 | + '</account>' . |
|
511 | + ' </pre>' . |
|
512 | + ' </li>' . |
|
513 | + ' <li>' . bts('Select and Copy the string between <authenticator> and </authenticator> (%auth in the above example).', array('%auth' => '8b8496fdd26df7dc0423ecd43c09a56b'), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
514 | + ' <li>' . bts('Paste the string into the field below, and click OK.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
515 | + ' <li>' . bts('You will now be logged in to your account; update the email and password of your account.', array(), NULL, 'boinc:authenticator-login-page') . '</li>' . |
|
516 | + ' </ul>' . |
|
517 | + '</p>' |
|
518 | + ); |
|
519 | + $form['authenticator'] = array( |
|
520 | 520 | '#title' => bts('Log in with authenticator', array(), NULL, 'boinc:authenticator-login-page'), |
521 | 521 | '#type' => 'textfield', |
522 | 522 | '#size' => 60, |
523 | 523 | '#maxlength' => 32, |
524 | 524 | '#required' => TRUE, |
525 | 525 | '#description' => null |
526 | - ); |
|
526 | + ); |
|
527 | 527 | |
528 | - // Form control |
|
529 | - $form['form control tabs prefix'] = array( |
|
528 | + // Form control |
|
529 | + $form['form control tabs prefix'] = array( |
|
530 | 530 | '#value' => '<ul class="form-control tab-list">', |
531 | 531 | '#weight' => 1001, |
532 | - ); |
|
533 | - $form['submit'] = array( |
|
532 | + ); |
|
533 | + $form['submit'] = array( |
|
534 | 534 | '#prefix' => '<li class="first tab">', |
535 | 535 | '#type' => 'submit', |
536 | 536 | '#value' => bts('OK', array(), NULL, 'boinc:form-ok'), |
537 | 537 | '#suffix' => '</li>', |
538 | 538 | '#weight' => 1002, |
539 | - ); |
|
540 | - $form['form control tabs'] = array( |
|
539 | + ); |
|
540 | + $form['form control tabs'] = array( |
|
541 | 541 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/password') . '</li>', |
542 | 542 | '#weight' => 1003, |
543 | - ); |
|
544 | - $form['form control tabs suffix'] = array( |
|
543 | + ); |
|
544 | + $form['form control tabs suffix'] = array( |
|
545 | 545 | '#value' => '</ul>', |
546 | 546 | '#weight' => 1004, |
547 | - ); |
|
548 | - return $form; |
|
547 | + ); |
|
548 | + return $form; |
|
549 | 549 | } |
550 | 550 | |
551 | 551 | /** |
552 | 552 | * The authenticator login validation handler |
553 | 553 | */ |
554 | 554 | function boincuser_authloginform_validate($form, &$form_state) { |
555 | - $authenticator = $form_state['values']['authenticator']; |
|
556 | - if (strlen($authenticator) != 32) { |
|
555 | + $authenticator = $form_state['values']['authenticator']; |
|
556 | + if (strlen($authenticator) != 32) { |
|
557 | 557 | // We notify the form API that this field has failed validation. |
558 | 558 | form_set_error('authenticator', bts('That authenticator is not valid.', array(), NULL, 'boinc:authenticator-login-page')); |
559 | - } else { |
|
559 | + } else { |
|
560 | 560 | require_boinc('boinc_db'); |
561 | 561 | $boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
562 | 562 | if (!$boinc_user) form_set_error('authenticator', bts('There is no account with that authenticator.', array(), NULL, 'boinc:authenticator-login-page')); |
563 | - } |
|
563 | + } |
|
564 | 564 | } |
565 | 565 | |
566 | 566 | /** |
567 | 567 | * The authenticator login submit handler |
568 | 568 | */ |
569 | 569 | function boincuser_authloginform_submit($form, &$form_state) { |
570 | - global $user; |
|
571 | - $authenticator = $form_state['values']['authenticator']; |
|
572 | - require_boinc('boinc_db'); |
|
573 | - $boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
574 | - if (!$user = user_load(get_drupal_id($boinc_user->id))) drupal_set_message(t('An unresolved error occurred while logging into this account.')); |
|
575 | - else $form_state['redirect'] = 'account/info/edit'; |
|
570 | + global $user; |
|
571 | + $authenticator = $form_state['values']['authenticator']; |
|
572 | + require_boinc('boinc_db'); |
|
573 | + $boinc_user = BoincUser::lookup("authenticator='".addslashes($authenticator)."'"); |
|
574 | + if (!$user = user_load(get_drupal_id($boinc_user->id))) drupal_set_message(t('An unresolved error occurred while logging into this account.')); |
|
575 | + else $form_state['redirect'] = 'account/info/edit'; |
|
576 | 576 | } |
577 | 577 | |
578 | 578 | |
@@ -580,44 +580,44 @@ discard block |
||
580 | 580 | * The definition of the moderator reject user profile form. |
581 | 581 | */ |
582 | 582 | function boincuser_moderate_profile_reject_form(&$form_state, $uid) { |
583 | - $form_state['storage']['reject_profile_uid'] = $uid; |
|
584 | - $form['reason'] = array( |
|
583 | + $form_state['storage']['reject_profile_uid'] = $uid; |
|
584 | + $form['reason'] = array( |
|
585 | 585 | '#title' => bts('Reason for rejecting this profile', array(), NULL, 'boinc:moderate-user'), |
586 | 586 | '#type' => 'textarea', |
587 | 587 | '#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of the problem and how to fix it.', array(), NULL, 'boinc:moderate-user'), |
588 | 588 | '#default_value' => '', |
589 | - ); |
|
589 | + ); |
|
590 | 590 | |
591 | - // Form control |
|
592 | - $form['form control tabs prefix'] = array( |
|
591 | + // Form control |
|
592 | + $form['form control tabs prefix'] = array( |
|
593 | 593 | '#value' => '<ul class="form-control tab-list">', |
594 | 594 | '#weight' => 1001, |
595 | - ); |
|
596 | - $form['submit'] = array( |
|
595 | + ); |
|
596 | + $form['submit'] = array( |
|
597 | 597 | '#prefix' => '<li class="first tab">', |
598 | 598 | '#type' => 'submit', |
599 | 599 | '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
600 | 600 | '#suffix' => '</li>', |
601 | 601 | '#weight' => 1002, |
602 | - ); |
|
603 | - $form['form control tabs'] = array( |
|
602 | + ); |
|
603 | + $form['form control tabs'] = array( |
|
604 | 604 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
605 | 605 | '#weight' => 1003, |
606 | - ); |
|
607 | - $form['form control tabs suffix'] = array( |
|
606 | + ); |
|
607 | + $form['form control tabs suffix'] = array( |
|
608 | 608 | '#value' => '</ul>', |
609 | 609 | '#weight' => 1004, |
610 | - ); |
|
611 | - return $form; |
|
610 | + ); |
|
611 | + return $form; |
|
612 | 612 | } |
613 | 613 | |
614 | 614 | /** |
615 | 615 | * The moderator reject user profile submit handler |
616 | 616 | */ |
617 | 617 | function boincuser_moderate_profile_reject_form_submit($form, &$form_state) { |
618 | - $uid = $form_state['storage']['reject_profile_uid']; |
|
619 | - $reason = $form_state['values']['reason']; |
|
620 | - boincuser_moderate_profile_reject($uid, $reason); |
|
618 | + $uid = $form_state['storage']['reject_profile_uid']; |
|
619 | + $reason = $form_state['values']['reason']; |
|
620 | + boincuser_moderate_profile_reject($uid, $reason); |
|
621 | 621 | } |
622 | 622 | |
623 | 623 | |
@@ -625,52 +625,52 @@ discard block |
||
625 | 625 | * The definition of the ban user form. |
626 | 626 | */ |
627 | 627 | function boincuser_moderate_user_ban_form(&$form_state, $uid) { |
628 | - $form_state['storage']['ban_user_uid'] = $uid; |
|
629 | - $form['reason'] = array( |
|
628 | + $form_state['storage']['ban_user_uid'] = $uid; |
|
629 | + $form['reason'] = array( |
|
630 | 630 | '#title' => bts('Reason for banning this user', array(), NULL, 'boinc:moderate-user'), |
631 | 631 | '#type' => 'textarea', |
632 | 632 | '#description' => bts('This reason will be included in an email to the user. Please write a brief explanation of why the user is being banned.', array(), NULL, 'boinc:moderate-user'), |
633 | 633 | '#default_value' => '', |
634 | - ); |
|
635 | - $form['duration'] = array( |
|
634 | + ); |
|
635 | + $form['duration'] = array( |
|
636 | 636 | '#title' => bts('Duration of the ban', array(), NULL, 'boinc:moderate-user'), |
637 | 637 | '#type' => 'textfield', |
638 | 638 | '#description' => bts('The number of days until the ban expires. Set to 0 to ban permanently.', array(), NULL, 'boinc:moderate-user'), |
639 | 639 | '#default_value' => '', |
640 | - ); |
|
640 | + ); |
|
641 | 641 | |
642 | - // Form control |
|
643 | - $form['form control tabs prefix'] = array( |
|
642 | + // Form control |
|
643 | + $form['form control tabs prefix'] = array( |
|
644 | 644 | '#value' => '<ul class="form-control tab-list">', |
645 | 645 | '#weight' => 1001, |
646 | - ); |
|
647 | - $form['submit'] = array( |
|
646 | + ); |
|
647 | + $form['submit'] = array( |
|
648 | 648 | '#prefix' => '<li class="first tab">', |
649 | 649 | '#type' => 'submit', |
650 | 650 | '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
651 | 651 | '#suffix' => '</li>', |
652 | 652 | '#weight' => 1002, |
653 | - ); |
|
654 | - $form['form control tabs'] = array( |
|
653 | + ); |
|
654 | + $form['form control tabs'] = array( |
|
655 | 655 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/{$uid}") . '</li>', |
656 | 656 | '#weight' => 1003, |
657 | - ); |
|
658 | - $form['form control tabs suffix'] = array( |
|
657 | + ); |
|
658 | + $form['form control tabs suffix'] = array( |
|
659 | 659 | '#value' => '</ul>', |
660 | 660 | '#weight' => 1004, |
661 | - ); |
|
662 | - return $form; |
|
661 | + ); |
|
662 | + return $form; |
|
663 | 663 | } |
664 | 664 | |
665 | 665 | /** |
666 | 666 | * The ban user submit handler |
667 | 667 | */ |
668 | 668 | function boincuser_moderate_user_ban_form_submit($form, &$form_state) { |
669 | - $uid = $form_state['storage']['ban_user_uid']; |
|
670 | - $reason = $form_state['values']['reason']; |
|
671 | - $duration = $form_state['values']['duration']; |
|
672 | - if ($duration) $duration = $duration * 24*60*60; |
|
673 | - boincuser_moderate_user_ban($uid, $reason, $duration); |
|
669 | + $uid = $form_state['storage']['ban_user_uid']; |
|
670 | + $reason = $form_state['values']['reason']; |
|
671 | + $duration = $form_state['values']['duration']; |
|
672 | + if ($duration) $duration = $duration * 24*60*60; |
|
673 | + boincuser_moderate_user_ban($uid, $reason, $duration); |
|
674 | 674 | } |
675 | 675 | |
676 | 676 | |
@@ -678,10 +678,10 @@ discard block |
||
678 | 678 | * Hack to fix submission of the flag friend unfriend form |
679 | 679 | */ |
680 | 680 | function boincuser_fix_unfriend_form_submit($form, &$form_state) { |
681 | - // Leaving action as "unfriend" causes problems |
|
682 | - if ($form_state['values']['action'] == 'unfriend') { |
|
681 | + // Leaving action as "unfriend" causes problems |
|
682 | + if ($form_state['values']['action'] == 'unfriend') { |
|
683 | 683 | $form_state['values']['action'] = 'unflag'; |
684 | - } |
|
684 | + } |
|
685 | 685 | } |
686 | 686 | |
687 | 687 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -689,102 +689,102 @@ discard block |
||
689 | 689 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
690 | 690 | |
691 | 691 | function boincuser_termsofuse_form() { |
692 | - global $user; |
|
692 | + global $user; |
|
693 | 693 | |
694 | - // If user has already signed terms of use, and got to this form in error, send them to site home. |
|
695 | - if (boincuser_check_termsofuse($user)) { |
|
694 | + // If user has already signed terms of use, and got to this form in error, send them to site home. |
|
695 | + if (boincuser_check_termsofuse($user)) { |
|
696 | 696 | drupal_goto(); |
697 | - } |
|
697 | + } |
|
698 | 698 | |
699 | - drupal_set_message( bts('WARNING: You have not agreed to our terms of use. Please agree to the terms of use before continuing.', array(), NULL, 'boinc:termsofuse-form'), 'warning' ); |
|
699 | + drupal_set_message( bts('WARNING: You have not agreed to our terms of use. Please agree to the terms of use before continuing.', array(), NULL, 'boinc:termsofuse-form'), 'warning' ); |
|
700 | 700 | |
701 | - $form = array(); |
|
702 | - drupal_add_js(drupal_get_path('module', 'boincuser') . '/boincuser.js'); |
|
703 | - $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
701 | + $form = array(); |
|
702 | + drupal_add_js(drupal_get_path('module', 'boincuser') . '/boincuser.js'); |
|
703 | + $termsofuse = variable_get('boinc_weboptions_termsofuse', ''); |
|
704 | 704 | |
705 | - // Fieldset to hold all of the form as a container |
|
706 | - $form['termsofuse'] = array( |
|
705 | + // Fieldset to hold all of the form as a container |
|
706 | + $form['termsofuse'] = array( |
|
707 | 707 | '#type' => 'fieldset', |
708 | 708 | '#prefix' => '<div id="termsofuse-wrapper">', // This is our wrapper div. |
709 | 709 | '#suffix' => '</div>', |
710 | 710 | '#tree' => TRUE, |
711 | - ); |
|
711 | + ); |
|
712 | 712 | |
713 | - $form['termsofuse']['title1'] = array( |
|
713 | + $form['termsofuse']['title1'] = array( |
|
714 | 714 | '#weight' => -12, |
715 | 715 | '#value' => '<h2>' . bts( variable_get('boinc_weboptions_registrationtitle', 'Please read and acknowledge our terms of use'), array(), NULL, 'project:termsofuse-form' ) . '</h2>', |
716 | 716 | '#prefix' => '<div id="register-title1">', |
717 | 717 | '#suffix' => '</div>', |
718 | - ); |
|
718 | + ); |
|
719 | 719 | |
720 | - // Terms of use section |
|
721 | - $form['termsofuse']['body'] = array( |
|
720 | + // Terms of use section |
|
721 | + $form['termsofuse']['body'] = array( |
|
722 | 722 | '#weight' => -10, |
723 | 723 | '#value' => bts($termsofuse, array(), NULL, 'project:termsofuse-form'), |
724 | 724 | '#prefix' => '<div id="register-termsofuse">', |
725 | 725 | '#suffix' => '</div>', |
726 | - ); |
|
726 | + ); |
|
727 | 727 | |
728 | - $form['termsofuse']['agreeTOU'] = array( |
|
728 | + $form['termsofuse']['agreeTOU'] = array( |
|
729 | 729 | '#type' => 'checkbox', |
730 | 730 | '#title' => bts(variable_get('boinc_weboptions_agreequestion', 'Do you agree with the above terms of use?'), array(), NULL, 'project:termsofuse-form'), |
731 | 731 | '#weight' => -8, |
732 | 732 | '#prefix' => '<div id="register-checkbox">', |
733 | 733 | '#suffix' => '</div>', |
734 | - ); |
|
734 | + ); |
|
735 | 735 | |
736 | - $form['termsofuse']['spacer'] = array( |
|
736 | + $form['termsofuse']['spacer'] = array( |
|
737 | 737 | '#prefix' => '<div class="clearfix" id="register-title2">', |
738 | 738 | '#value' => ' ', |
739 | 739 | '#suffix' => '</div>', |
740 | - ); |
|
740 | + ); |
|
741 | 741 | |
742 | - // Form Control |
|
743 | - $form['submit'] = array( |
|
742 | + // Form Control |
|
743 | + $form['submit'] = array( |
|
744 | 744 | '#prefix' => '<p><p><p><li class="first tab" id="register-submit">', |
745 | 745 | '#type' => 'submit', |
746 | 746 | '#value' => bts('Yes', array(), NULL, 'boinc:form-submit'), |
747 | 747 | '#suffix' => '</li>', |
748 | - ); |
|
749 | - $form['form control tabs'] = array( |
|
748 | + ); |
|
749 | + $form['form control tabs'] = array( |
|
750 | 750 | '#value' => '<li class="tab">' . l(bts('NO - LOGOUT', array(), NULL, 'boinc:form-cancel'), '/logout') . '</li>', |
751 | - ); |
|
752 | - if (module_exists('boincuser_delete')) { |
|
751 | + ); |
|
752 | + if (module_exists('boincuser_delete')) { |
|
753 | 753 | $deletelink = '/user/' . $user->uid . '/delete'; |
754 | 754 | $form['deleteaccount'] = array( |
755 | - '#value' => '<li class="tab">' . l(bts('NO - DELETE ACCOUNT', array(), NULL, 'boinc:form-delete-user'), $deletelink) . '</li>', |
|
755 | + '#value' => '<li class="tab">' . l(bts('NO - DELETE ACCOUNT', array(), NULL, 'boinc:form-delete-user'), $deletelink) . '</li>', |
|
756 | 756 | ); |
757 | - } |
|
757 | + } |
|
758 | 758 | |
759 | - // Set form redirect |
|
760 | - $form['#redirect'] = $_REQUEST['destination']; |
|
759 | + // Set form redirect |
|
760 | + $form['#redirect'] = $_REQUEST['destination']; |
|
761 | 761 | |
762 | - // Add the current user's data into the form |
|
763 | - $form['#account'] = $user; |
|
762 | + // Add the current user's data into the form |
|
763 | + $form['#account'] = $user; |
|
764 | 764 | |
765 | - return $form; |
|
765 | + return $form; |
|
766 | 766 | } |
767 | 767 | |
768 | 768 | function boincuser_termsofuse_form_validate($form, &$form_state) { |
769 | - // Check TOU agreement |
|
770 | - if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
769 | + // Check TOU agreement |
|
770 | + if (!$form_state['values']['termsofuse']['agreeTOU']) { |
|
771 | 771 | form_set_error('termsofuse', bts('ERROR: You must acknowledge our terms of use by clicking the checkbox before registering for an account.', array(), NULL, 'boinc:termsofuse-form')); |
772 | - } |
|
772 | + } |
|
773 | 773 | } |
774 | 774 | |
775 | 775 | function boincuser_termsofuse_form_submit($form, &$form_state) { |
776 | - $user = $form['#account']; |
|
777 | - if (!boincuser_consentto_termsofuse($user)) { |
|
776 | + $user = $form['#account']; |
|
777 | + if (!boincuser_consentto_termsofuse($user)) { |
|
778 | 778 | form_set_error('termsofuse', |
779 | - bts('There was an error in agreeing to the terms of use. The @project administrators have been notified.', |
|
779 | + bts('There was an error in agreeing to the terms of use. The @project administrators have been notified.', |
|
780 | 780 | array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:termsofuse-form') |
781 | 781 | ); |
782 | - } |
|
782 | + } |
|
783 | 783 | |
784 | - // Delete session messages |
|
785 | - if ($_SESSION['messages']['warning']) { |
|
784 | + // Delete session messages |
|
785 | + if ($_SESSION['messages']['warning']) { |
|
786 | 786 | unset($_SESSION['messages']['warning']); |
787 | - } |
|
787 | + } |
|
788 | 788 | } |
789 | 789 | |
790 | 790 | /** |
@@ -793,89 +793,89 @@ discard block |
||
793 | 793 | * removed after used. |
794 | 794 | */ |
795 | 795 | function boincuser_revertemail(&$form_state, $token) { |
796 | - require_boinc('token'); |
|
797 | - require_boinc('util'); |
|
796 | + require_boinc('token'); |
|
797 | + require_boinc('util'); |
|
798 | 798 | |
799 | - global $user; |
|
800 | - $form = array(); |
|
799 | + global $user; |
|
800 | + $form = array(); |
|
801 | 801 | |
802 | - // drupal JS for dynamic password validation |
|
803 | - _user_password_dynamic_validation(); |
|
802 | + // drupal JS for dynamic password validation |
|
803 | + _user_password_dynamic_validation(); |
|
804 | 804 | |
805 | - // check BOINC user exists |
|
806 | - $account = user_load(array('uid' => $user->uid)); |
|
807 | - $uid = $user->uid; |
|
808 | - $boincid = $account->boincuser_id; |
|
809 | - // check $token is valid |
|
810 | - if (!is_valid_token($boincid, $token, 'E')) { |
|
805 | + // check BOINC user exists |
|
806 | + $account = user_load(array('uid' => $user->uid)); |
|
807 | + $uid = $user->uid; |
|
808 | + $boincid = $account->boincuser_id; |
|
809 | + // check $token is valid |
|
810 | + if (!is_valid_token($boincid, $token, 'E')) { |
|
811 | 811 | drupal_set_message(bts('ERROR: You have supplied an incorrect (most likely expired) token. Please obtain a new token by !link your email address.', |
812 | 812 | array( |
813 | - '!link' => l(bts('changing', array(), NULL, 'boinc:revert-email-change'), "/account/info/edit"), |
|
813 | + '!link' => l(bts('changing', array(), NULL, 'boinc:revert-email-change'), "/account/info/edit"), |
|
814 | 814 | ), |
815 | 815 | NULL, 'boinc:revert-email-change'), 'error'); |
816 | 816 | drupal_goto(); |
817 | - } |
|
817 | + } |
|
818 | 818 | |
819 | - // Attach account and token to this form. |
|
820 | - $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
821 | - $form['_token'] = array('#type' => 'value', '#value' => $token); |
|
819 | + // Attach account and token to this form. |
|
820 | + $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
821 | + $form['_token'] = array('#type' => 'value', '#value' => $token); |
|
822 | 822 | |
823 | - // Instructions |
|
824 | - $form['main']['instructions1'] = array( |
|
823 | + // Instructions |
|
824 | + $form['main']['instructions1'] = array( |
|
825 | 825 | '#value' => '<p>'. |
826 | 826 | bts('In order to change your email back to your previous email address, <strong>!prev_email</strong>, you must also change your password.', |
827 | - array( |
|
827 | + array( |
|
828 | 828 | '!prev_email' => $account->boincuser_previous_email_addr, |
829 | - ), |
|
830 | - NULL, 'boinc:revert-email-change'). |
|
829 | + ), |
|
830 | + NULL, 'boinc:revert-email-change'). |
|
831 | 831 | '</p>', |
832 | - ); |
|
832 | + ); |
|
833 | 833 | |
834 | - $form['main']['pass'] = array( |
|
834 | + $form['main']['pass'] = array( |
|
835 | 835 | '#type' => 'password_confirm', |
836 | 836 | '#description' => 'Enter a new password in both fields', |
837 | 837 | '#size' => 17, |
838 | - ); |
|
839 | - |
|
840 | - // Wrap action buttons for styling consistency |
|
841 | - $form['buttons']['form control tabs prefix'] = array( |
|
842 | - '#value' => '<ul class="form-control tab-list">', |
|
843 | - '#weight' => 1001, |
|
844 | - ); |
|
845 | - $form['buttons']['submit']['#type'] = 'submit'; |
|
846 | - $form['buttons']['submit']['#prefix'] = '<li class="first tab">'; |
|
847 | - $form['buttons']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
848 | - $form['buttons']['submit']['#suffix'] = '</li>'; |
|
849 | - $form['buttons']['submit']['#weight'] = 1002; |
|
850 | - $form['buttons']['cancel'] = array( |
|
851 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/info/edit') . '</li>', |
|
852 | - '#weight' => 1005, |
|
853 | - ); |
|
854 | - $form['buttons']['form control tabs suffix'] = array( |
|
855 | - '#value' => '</ul>', |
|
856 | - '#weight' => 1010, |
|
857 | - ); |
|
858 | - |
|
859 | - return $form; |
|
838 | + ); |
|
839 | + |
|
840 | + // Wrap action buttons for styling consistency |
|
841 | + $form['buttons']['form control tabs prefix'] = array( |
|
842 | + '#value' => '<ul class="form-control tab-list">', |
|
843 | + '#weight' => 1001, |
|
844 | + ); |
|
845 | + $form['buttons']['submit']['#type'] = 'submit'; |
|
846 | + $form['buttons']['submit']['#prefix'] = '<li class="first tab">'; |
|
847 | + $form['buttons']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
848 | + $form['buttons']['submit']['#suffix'] = '</li>'; |
|
849 | + $form['buttons']['submit']['#weight'] = 1002; |
|
850 | + $form['buttons']['cancel'] = array( |
|
851 | + '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'user/info/edit') . '</li>', |
|
852 | + '#weight' => 1005, |
|
853 | + ); |
|
854 | + $form['buttons']['form control tabs suffix'] = array( |
|
855 | + '#value' => '</ul>', |
|
856 | + '#weight' => 1010, |
|
857 | + ); |
|
858 | + |
|
859 | + return $form; |
|
860 | 860 | } |
861 | 861 | |
862 | 862 | /** |
863 | 863 | * Validation handler for revertemail form |
864 | 864 | */ |
865 | 865 | function boincuser_revertemail_validate($form, &$form_state) { |
866 | - // Load account and boincuser |
|
867 | - $account = $form_state['values']['_account']; |
|
868 | - $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
866 | + // Load account and boincuser |
|
867 | + $account = $form_state['values']['_account']; |
|
868 | + $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
869 | 869 | |
870 | - if (BoincUser::lookup_email_addr($boinc_user->previous_email_addr)) { |
|
870 | + if (BoincUser::lookup_email_addr($boinc_user->previous_email_addr)) { |
|
871 | 871 | rules_invoke_event('boincuser_revert_email_error', $boinc_user->previous_email_addr, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
872 | 872 | form_set_error('mail', |
873 | - bts('An account already exists for @email. Previous email address cannot be used because another account is using it as their email address. The @project administrators have been notified.', |
|
873 | + bts('An account already exists for @email. Previous email address cannot be used because another account is using it as their email address. The @project administrators have been notified.', |
|
874 | 874 | array( |
875 | - '@email' => $boinc_user->previous_email_addr, |
|
876 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
875 | + '@email' => $boinc_user->previous_email_addr, |
|
876 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
877 | 877 | ), NULL, 'boinc:add-new-user')); |
878 | - } |
|
878 | + } |
|
879 | 879 | |
880 | 880 | } |
881 | 881 | |
@@ -883,25 +883,25 @@ discard block |
||
883 | 883 | * Submit handler for revertemail form |
884 | 884 | */ |
885 | 885 | function boincuser_revertemail_submit($form, &$form_state) { |
886 | - require_boinc('password_compat/password'); |
|
886 | + require_boinc('password_compat/password'); |
|
887 | 887 | |
888 | - // Load account and boincuser |
|
889 | - $account = $form_state['values']['_account']; |
|
890 | - $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
888 | + // Load account and boincuser |
|
889 | + $account = $form_state['values']['_account']; |
|
890 | + $boinc_user = BoincUser::lookup_id_nocache($account->boincuser_id); |
|
891 | 891 | |
892 | - $pem = strtolower($boinc_user->previous_email_addr); |
|
892 | + $pem = strtolower($boinc_user->previous_email_addr); |
|
893 | 893 | |
894 | - // Set new password based on previous email address and entered |
|
895 | - // password. |
|
896 | - $new_passwd_hash = password_hash( md5($form_state['values']['pass'].$pem), PASSWORD_DEFAULT); |
|
894 | + // Set new password based on previous email address and entered |
|
895 | + // password. |
|
896 | + $new_passwd_hash = password_hash( md5($form_state['values']['pass'].$pem), PASSWORD_DEFAULT); |
|
897 | 897 | |
898 | - $boinc_user->update("email_addr='${pem}', previous_email_addr='', email_addr_change_time=0, passwd_hash='${new_passwd_hash}'"); |
|
898 | + $boinc_user->update("email_addr='${pem}', previous_email_addr='', email_addr_change_time=0, passwd_hash='${new_passwd_hash}'"); |
|
899 | 899 | |
900 | - // Set email in drupal database to previous email |
|
901 | - user_save($account, array('mail' => $pem)); |
|
900 | + // Set email in drupal database to previous email |
|
901 | + user_save($account, array('mail' => $pem)); |
|
902 | 902 | |
903 | - // delete the token |
|
904 | - $result = delete_token($account->boincuser_id, $form_state['values']['_token'], 'E'); |
|
903 | + // delete the token |
|
904 | + $result = delete_token($account->boincuser_id, $form_state['values']['_token'], 'E'); |
|
905 | 905 | |
906 | - drupal_goto('account'); |
|
906 | + drupal_goto('account'); |
|
907 | 907 | } |
@@ -16,59 +16,59 @@ |
||
16 | 16 | */ |
17 | 17 | |
18 | 18 | function boincuser_rules_event_info() { |
19 | - return array( |
|
19 | + return array( |
|
20 | 20 | 'boincuser_change_email_error' => array( |
21 | - 'label' => bts('Error from user changing e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
22 | - 'module' => 'Boincuser', |
|
23 | - 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
21 | + 'label' => bts('Error from user changing e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
22 | + 'module' => 'Boincuser', |
|
23 | + 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
24 | 24 | ), |
25 | 25 | 'boincuser_revert_email_error' => array( |
26 | - 'label' => bts('Error from user reverting to previous e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
27 | - 'module' => 'Boincuser', |
|
28 | - 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
26 | + 'label' => bts('Error from user reverting to previous e-mail address.', array(), NULL, 'boinc:rule-event'), |
|
27 | + 'module' => 'Boincuser', |
|
28 | + 'arguments' => rules_events_hook_boincuser_chemail_arguments(), |
|
29 | 29 | ), |
30 | 30 | 'boincuser_general_consent_error' => array( |
31 | - 'label' => bts('Error from user consenting to terms-of-use.', array(), NULL, 'boinc:rule-event'), |
|
32 | - 'module' => 'Boincuser', |
|
33 | - 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
31 | + 'label' => bts('Error from user consenting to terms-of-use.', array(), NULL, 'boinc:rule-event'), |
|
32 | + 'module' => 'Boincuser', |
|
33 | + 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
34 | 34 | ), |
35 | 35 | 'boincuser_general_consent_type_error' => array( |
36 | - 'label' => bts('Error dealing with missing consent type.', array(), NULL, 'boinc:rule-event'), |
|
37 | - 'module' => 'Boincuser', |
|
38 | - 'arguments' => rules_events_hook_boincuser_consenttype_argument(), |
|
36 | + 'label' => bts('Error dealing with missing consent type.', array(), NULL, 'boinc:rule-event'), |
|
37 | + 'module' => 'Boincuser', |
|
38 | + 'arguments' => rules_events_hook_boincuser_consenttype_argument(), |
|
39 | 39 | ), |
40 | - ); |
|
40 | + ); |
|
41 | 41 | } |
42 | 42 | |
43 | 43 | /** |
44 | 44 | * Arguments suitable for boincuser |
45 | 45 | **/ |
46 | 46 | function rules_events_hook_boincuser_chemail_arguments() { |
47 | - return array( |
|
47 | + return array( |
|
48 | 48 | 'new_email_addr' => array( |
49 | - 'type' => 'string', |
|
50 | - 'label' => 'New email address', |
|
51 | - 'required' => TRUE, |
|
49 | + 'type' => 'string', |
|
50 | + 'label' => 'New email address', |
|
51 | + 'required' => TRUE, |
|
52 | 52 | ), |
53 | - ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
53 | + ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
54 | 54 | } |
55 | 55 | |
56 | 56 | function rules_events_hook_boincuser_consenttype_argument() { |
57 | - return array( |
|
57 | + return array( |
|
58 | 58 | 'consent_type' => array( |
59 | - 'type' => 'string', |
|
60 | - 'label' => 'Consent type id that caused the error', |
|
61 | - 'required' => TRUE, |
|
59 | + 'type' => 'string', |
|
60 | + 'label' => 'Consent type id that caused the error', |
|
61 | + 'required' => TRUE, |
|
62 | 62 | ), |
63 | - ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
63 | + ) + rules_events_hook_boincuser_adminnotify_argument(); |
|
64 | 64 | } |
65 | 65 | |
66 | 66 | function rules_events_hook_boincuser_adminnotify_argument() { |
67 | - return array( |
|
67 | + return array( |
|
68 | 68 | 'subject_tag' => array( |
69 | - 'type' => 'string', |
|
70 | - 'label' => 'Subject tag for email filtering', |
|
71 | - 'required' => TRUE, |
|
69 | + 'type' => 'string', |
|
70 | + 'label' => 'Subject tag for email filtering', |
|
71 | + 'required' => TRUE, |
|
72 | 72 | ), |
73 | - ) + rules_events_global_user_argument(); |
|
73 | + ) + rules_events_global_user_argument(); |
|
74 | 74 | } |
75 | 75 | \ No newline at end of file |
@@ -11,12 +11,12 @@ discard block |
||
11 | 11 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
12 | 12 | |
13 | 13 | if (!function_exists('user_load_by_mail')) { |
14 | - /** |
|
15 | - * user_load_by_mail will be broken out of user_load |
|
16 | - */ |
|
17 | - function user_load_by_mail($mail) { |
|
14 | + /** |
|
15 | + * user_load_by_mail will be broken out of user_load |
|
16 | + */ |
|
17 | + function user_load_by_mail($mail) { |
|
18 | 18 | return user_load(array('mail' => $mail)); |
19 | - } |
|
19 | + } |
|
20 | 20 | } |
21 | 21 | |
22 | 22 | |
@@ -28,14 +28,14 @@ discard block |
||
28 | 28 | * Get an image object from a given file and cck field |
29 | 29 | */ |
30 | 30 | function get_cck_image_object($image_path, $field_name, $content_type, $ignore_resolution = FALSE) { |
31 | - $field = content_fields($field_name, $content_type); |
|
32 | - $validators = array_merge(filefield_widget_upload_validators($field), imagefield_widget_upload_validators($field)); |
|
33 | - if ($ignore_resolution) { |
|
31 | + $field = content_fields($field_name, $content_type); |
|
32 | + $validators = array_merge(filefield_widget_upload_validators($field), imagefield_widget_upload_validators($field)); |
|
33 | + if ($ignore_resolution) { |
|
34 | 34 | unset($validators['filefield_validate_image_resolution']); |
35 | - } |
|
36 | - $target_path = filefield_widget_file_path($field); |
|
37 | - // Create the image object |
|
38 | - return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE); |
|
35 | + } |
|
36 | + $target_path = filefield_widget_file_path($field); |
|
37 | + // Create the image object |
|
38 | + return field_file_save_file($image_path, $validators, $target_path, FILE_EXISTS_REPLACE); |
|
39 | 39 | } |
40 | 40 | |
41 | 41 | |
@@ -47,73 +47,73 @@ discard block |
||
47 | 47 | * |
48 | 48 | */ |
49 | 49 | function boincuser_check_credit_requirements() { |
50 | - global $user; |
|
51 | - if (!$user->uid) { |
|
50 | + global $user; |
|
51 | + if (!$user->uid) { |
|
52 | 52 | return FALSE; |
53 | - } |
|
54 | - $account = user_load($user->uid); |
|
55 | - $min_credit_to_post = variable_get('boinc_comment_min_credit', 0); |
|
56 | - $community_role = array_search('community member', user_roles(true)); |
|
57 | - $unrestricted_role = array_search('verified contributor', user_roles(true)); |
|
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 |
||
124 | 124 | ORDER BY c.timestamp ASC |
125 | 125 | LIMIT 1", |
126 | 126 | $uid, $nid |
127 | - )); |
|
127 | + )); |
|
128 | 128 | } |
129 | 129 | |
130 | 130 | /** |
131 | 131 | * Choose and set the user of the day |
132 | 132 | */ |
133 | 133 | function boincuser_select_user_of_the_day() { |
134 | - // First get a list of users with recent credit |
|
135 | - db_set_active('boinc_rw'); |
|
136 | - $users_with_credit = db_query(" |
|
134 | + // First get a list of users with recent credit |
|
135 | + db_set_active('boinc_rw'); |
|
136 | + $users_with_credit = db_query(" |
|
137 | 137 | SELECT |
138 | 138 | id |
139 | 139 | FROM {user} u |
140 | 140 | JOIN {profile} p ON p.userid = u.id |
141 | 141 | WHERE expavg_credit > 1 |
142 | 142 | ORDER BY uotd_time ASC, RAND()" |
143 | - ); |
|
144 | - db_set_active('default'); |
|
145 | - $active_users = array(); |
|
146 | - while ($user_with_credit = db_fetch_object($users_with_credit)) { |
|
143 | + ); |
|
144 | + db_set_active('default'); |
|
145 | + $active_users = array(); |
|
146 | + while ($user_with_credit = db_fetch_object($users_with_credit)) { |
|
147 | 147 | $active_users[] = $user_with_credit->id; |
148 | - } |
|
149 | - $active_users = implode(',', $active_users); |
|
150 | - // Limit to users who have never been user of the day, if there are any |
|
151 | - $never_been_picked = db_result(db_query(" |
|
148 | + } |
|
149 | + $active_users = implode(',', $active_users); |
|
150 | + // Limit to users who have never been user of the day, if there are any |
|
151 | + $never_been_picked = db_result(db_query(" |
|
152 | 152 | SELECT COUNT(*) |
153 | 153 | FROM {boincuser} bu |
154 | 154 | WHERE bu.uotd_time = 0 |
155 | 155 | " . ($active_users ? " AND bu.boinc_id IN ({$active_users}) " : '') |
156 | - )); |
|
157 | - $new_uotd_uid = 0; |
|
158 | - while (!$new_uotd_uid) { |
|
156 | + )); |
|
157 | + $new_uotd_uid = 0; |
|
158 | + while (!$new_uotd_uid) { |
|
159 | 159 | // Select a user of the day randomly from the pool |
160 | - $new_uotd_uid = db_result(db_query(" |
|
160 | + $new_uotd_uid = db_result(db_query(" |
|
161 | 161 | SELECT |
162 | 162 | n.uid |
163 | 163 | FROM {node} n |
@@ -171,31 +171,31 @@ discard block |
||
171 | 171 | LIMIT 1" |
172 | 172 | )); |
173 | 173 | if (!$new_uotd_uid) { |
174 | - // Can't find a user with a profile; remove constraints on the pool |
|
175 | - if ($never_been_picked) { |
|
174 | + // Can't find a user with a profile; remove constraints on the pool |
|
175 | + if ($never_been_picked) { |
|
176 | 176 | // Allow users who have been previously selected |
177 | 177 | $never_been_picked = FALSE; |
178 | - } |
|
179 | - elseif ($active_users) { |
|
178 | + } |
|
179 | + elseif ($active_users) { |
|
180 | 180 | // Allow users who are not even active (getting desperate) |
181 | 181 | $active_users = FALSE; |
182 | - } |
|
183 | - else { |
|
182 | + } |
|
183 | + else { |
|
184 | 184 | // Process failed... |
185 | 185 | return FALSE; |
186 | - } |
|
186 | + } |
|
187 | 187 | } |
188 | - } |
|
189 | - $uotd = user_load($new_uotd_uid); |
|
190 | - if ($uotd->uid) { |
|
188 | + } |
|
189 | + $uotd = user_load($new_uotd_uid); |
|
190 | + if ($uotd->uid) { |
|
191 | 191 | db_query(" |
192 | 192 | UPDATE {boincuser} |
193 | 193 | SET uotd_time = '%d' |
194 | 194 | WHERE uid = '%d'", |
195 | - time(), $uotd->uid |
|
195 | + time(), $uotd->uid |
|
196 | 196 | ); |
197 | - } |
|
198 | - return $uotd; |
|
197 | + } |
|
198 | + return $uotd; |
|
199 | 199 | } |
200 | 200 | |
201 | 201 | |
@@ -213,71 +213,71 @@ discard block |
||
213 | 213 | * new and prev email. |
214 | 214 | */ |
215 | 215 | function _boincuser_send_emailchange($account, $new_email=NULL, $prev_email=NULL, $adminuser=FALSE) { |
216 | - require_boinc('token'); |
|
217 | - module_load_include('inc', 'rules', 'modules/system.rules'); |
|
216 | + require_boinc('token'); |
|
217 | + module_load_include('inc', 'rules', 'modules/system.rules'); |
|
218 | 218 | |
219 | - global $base_url; |
|
220 | - $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
219 | + global $base_url; |
|
220 | + $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
221 | 221 | |
222 | - if (is_null($new_email)) { |
|
222 | + if (is_null($new_email)) { |
|
223 | 223 | $new_email = $account->mail; |
224 | - } |
|
225 | - if (is_null($prev_email)) { |
|
224 | + } |
|
225 | + if (is_null($prev_email)) { |
|
226 | 226 | $prev_email = $account->boincuser_previous_email_addr; |
227 | - } |
|
228 | - |
|
229 | - // @todo - set constant in drupal, or use BOINC contsants |
|
230 | - $duration = TOKEN_DURATION_ONE_WEEK; |
|
231 | - $changedate = date('F j, Y \a\t G:i T', time()); |
|
232 | - $newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration); |
|
233 | - $token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration); |
|
234 | - if ($adminuser) { |
|
227 | + } |
|
228 | + |
|
229 | + // @todo - set constant in drupal, or use BOINC contsants |
|
230 | + $duration = TOKEN_DURATION_ONE_WEEK; |
|
231 | + $changedate = date('F j, Y \a\t G:i T', time()); |
|
232 | + $newdate = date('F j, Y \a\t G:i T', $account->boincuser_email_addr_change_time + $duration); |
|
233 | + $token = create_token($account->boincuser_id, TOKEN_TYPE_CHANGE_EMAIL, $duration); |
|
234 | + if ($adminuser) { |
|
235 | 235 | $graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
236 | - . "on {$changedate}. If you need to reverse this change, please look for " |
|
237 | - . "an email send to the email address: {$prev_email}.\n"; |
|
238 | - } |
|
239 | - else { |
|
236 | + . "on {$changedate}. If you need to reverse this change, please look for " |
|
237 | + . "an email send to the email address: {$prev_email}.\n"; |
|
238 | + } |
|
239 | + else { |
|
240 | 240 | $graf1 = "Your email address was changed from {$prev_email} to {$new_email} " |
241 | - . "on {$changedate}. You will not be able to change your email address " |
|
242 | - . "until {$newdate}. If you need to reverse this change, please look for " |
|
243 | - . "an email send to the email address: {$prev_email}.\n"; |
|
244 | - } |
|
245 | - |
|
246 | - // Send email #1 to current address |
|
247 | - $mysubject = "Notification of email change at {$site_name}"; |
|
248 | - $mymessage = '' |
|
249 | - . "{$account->boincuser_name},\n" |
|
250 | - . "\n" |
|
251 | - . $graf1 |
|
252 | - . "\n" |
|
253 | - . "Thanks, \n" |
|
254 | - . "{$site_name} support team\n"; |
|
255 | - |
|
256 | - $settings = array( |
|
241 | + . "on {$changedate}. You will not be able to change your email address " |
|
242 | + . "until {$newdate}. If you need to reverse this change, please look for " |
|
243 | + . "an email send to the email address: {$prev_email}.\n"; |
|
244 | + } |
|
245 | + |
|
246 | + // Send email #1 to current address |
|
247 | + $mysubject = "Notification of email change at {$site_name}"; |
|
248 | + $mymessage = '' |
|
249 | + . "{$account->boincuser_name},\n" |
|
250 | + . "\n" |
|
251 | + . $graf1 |
|
252 | + . "\n" |
|
253 | + . "Thanks, \n" |
|
254 | + . "{$site_name} support team\n"; |
|
255 | + |
|
256 | + $settings = array( |
|
257 | 257 | 'from' => '', |
258 | 258 | 'to' => $new_email, |
259 | 259 | 'subject' => $mysubject, |
260 | 260 | 'message' => $mymessage, |
261 | - ); |
|
262 | - rules_action_mail_to_user($account, $settings); |
|
263 | - |
|
264 | - // Send email #2 to previous address. |
|
265 | - $mymessage = '' |
|
266 | - . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n" |
|
267 | - . "\n" |
|
268 | - . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n" |
|
269 | - . "\n" |
|
270 | - . "Thanks, \n" |
|
271 | - . "{$site_name} support team\n"; |
|
272 | - |
|
273 | - $settings = array( |
|
261 | + ); |
|
262 | + rules_action_mail_to_user($account, $settings); |
|
263 | + |
|
264 | + // Send email #2 to previous address. |
|
265 | + $mymessage = '' |
|
266 | + . "Your email address has been changed. If you did not intend to take this action, then please click this link to reverse this change, or copy-and-paste the link into your browser location bar. You will need to change your password as well.\n" |
|
267 | + . "\n" |
|
268 | + . "{$base_url}/user/{$account->uid}/recoveremail/{$token}\n" |
|
269 | + . "\n" |
|
270 | + . "Thanks, \n" |
|
271 | + . "{$site_name} support team\n"; |
|
272 | + |
|
273 | + $settings = array( |
|
274 | 274 | 'from' => '', |
275 | 275 | 'to' => $prev_email, |
276 | 276 | 'subject' => $mysubject, |
277 | 277 | 'message' => $mymessage, |
278 | - ); |
|
278 | + ); |
|
279 | 279 | |
280 | - rules_action_mail($settings); |
|
280 | + rules_action_mail($settings); |
|
281 | 281 | } |
282 | 282 | |
283 | 283 | /** |
@@ -287,32 +287,32 @@ discard block |
||
287 | 287 | * |
288 | 288 | */ |
289 | 289 | function create_proper_drupalname($requested_name) { |
290 | - if (!$requested_name) { |
|
290 | + if (!$requested_name) { |
|
291 | 291 | // If the name is empty, set it |
292 | 292 | $requested_name = 'anonymous'; |
293 | - } |
|
294 | - $same_name_tally = 1; |
|
295 | - |
|
296 | - // Remove extra spaces |
|
297 | - $name2 = preg_replace("/ {2,}/", " ", trim($requested_name)); |
|
298 | - // Remove any non-valid characters |
|
299 | - $cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2); |
|
300 | - // Truncate name |
|
301 | - $name_length = strlen($cleaned_name); |
|
302 | - if ($name_length > 56) { |
|
293 | + } |
|
294 | + $same_name_tally = 1; |
|
295 | + |
|
296 | + // Remove extra spaces |
|
297 | + $name2 = preg_replace("/ {2,}/", " ", trim($requested_name)); |
|
298 | + // Remove any non-valid characters |
|
299 | + $cleaned_name = preg_replace('/[^a-zA-Z0-9_ \.-]/s', '_', $name2); |
|
300 | + // Truncate name |
|
301 | + $name_length = strlen($cleaned_name); |
|
302 | + if ($name_length > 56) { |
|
303 | 303 | // Name is limited to 60 characters, but we want to leave space to add a |
304 | 304 | // tally if needed (for users with duplicate names); Limit to 56 chars and |
305 | 305 | // replace the middle of the string with "..." if too long |
306 | 306 | $cleaned_name = substr_replace($cleaned_name, '...', 28, ($name_length-56)+3); |
307 | - } |
|
307 | + } |
|
308 | 308 | |
309 | - // Determine if there are duplicate names, if so append a number to end. |
|
310 | - $unique_name = $cleaned_name; |
|
311 | - while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) { |
|
309 | + // Determine if there are duplicate names, if so append a number to end. |
|
310 | + $unique_name = $cleaned_name; |
|
311 | + while (db_result(db_query("SELECT uid FROM {users} WHERE name = '{$unique_name}' LIMIT 1"))) { |
|
312 | 312 | $same_name_tally++; |
313 | 313 | $unique_name = "{$cleaned_name}_{$same_name_tally}"; |
314 | - } |
|
315 | - return $unique_name; |
|
314 | + } |
|
315 | + return $unique_name; |
|
316 | 316 | } |
317 | 317 | |
318 | 318 | |
@@ -326,9 +326,9 @@ discard block |
||
326 | 326 | * |
327 | 327 | */ |
328 | 328 | function boincuser_check_termsofuse($user) { |
329 | - require_boinc('consent'); |
|
330 | - $boinc_user = boincuser_load($user->uid, TRUE); |
|
331 | - return check_user_consent($boinc_user, CONSENT_TYPE_ENROLL); |
|
329 | + require_boinc('consent'); |
|
330 | + $boinc_user = boincuser_load($user->uid, TRUE); |
|
331 | + return check_user_consent($boinc_user, CONSENT_TYPE_ENROLL); |
|
332 | 332 | } |
333 | 333 | |
334 | 334 | /** |
@@ -339,33 +339,33 @@ discard block |
||
339 | 339 | * |
340 | 340 | */ |
341 | 341 | function boincuser_consentto_termsofuse($user) { |
342 | - require_boinc('consent'); |
|
343 | - $boinc_user = boincuser_load($user->uid, TRUE); |
|
342 | + require_boinc('consent'); |
|
343 | + $boinc_user = boincuser_load($user->uid, TRUE); |
|
344 | 344 | |
345 | - list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | - if ($checkct) { |
|
345 | + list($checkct, $ctid) = check_consent_type(CONSENT_TYPE_ENROLL); |
|
346 | + if ($checkct) { |
|
347 | 347 | $rc1 = consent_to_a_policy($boinc_user, $ctid, 1, 0, 'Webform', time()); |
348 | 348 | if (!$rc1) { |
349 | - drupal_set_message( |
|
349 | + drupal_set_message( |
|
350 | 350 | bts("ERROR: Database error when attempting to INSERT into table consent with ID=@id. The @project administrators have been notified.", |
351 | 351 | array( |
352 | - '@id' => $boinc_user->id, |
|
353 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
352 | + '@id' => $boinc_user->id, |
|
353 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), NULL, 'boinc:add-new-user' |
|
354 | 354 | ), |
355 | 355 | 'NULL', 'boinc:consent-termsofuse'), |
356 | - 'error'); |
|
357 | - rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
356 | + 'error'); |
|
357 | + rules_invoke_event('boincuser_general_consent_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
|
358 | 358 | } |
359 | 359 | return $rc1; |
360 | - } |
|
361 | - else { |
|
360 | + } |
|
361 | + else { |
|
362 | 362 | drupal_set_message( |
363 | - bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
363 | + bts('ERROR: Consent type for enrollment not found. The @project administrators have been nofitifed.', |
|
364 | 364 | array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:consent-termsofuse'), |
365 | 365 | 'error'); |
366 | 366 | rules_invoke_event('boincuser_general_consent_type_error', CONSENT_TYPE_ENROLL, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
367 | - } |
|
368 | - return FALSE; |
|
367 | + } |
|
368 | + return FALSE; |
|
369 | 369 | } |
370 | 370 | |
371 | 371 | /** |
@@ -374,16 +374,16 @@ discard block |
||
374 | 374 | */ |
375 | 375 | function _boincuser_ignore_paths($path, $paths_to_ignore) { |
376 | 376 | |
377 | - foreach ($paths_to_ignore as $pi) { |
|
377 | + foreach ($paths_to_ignore as $pi) { |
|
378 | 378 | // @todo Currently this function uses {} as PHP regexp |
379 | 379 | // delimiters. Curly brace is not really allowed un URLs, but a |
380 | 380 | // more robust function would first check for these curly braces |
381 | 381 | // in the path_to_ignore patterms, just in case. |
382 | 382 | if (preg_match('{' . $pi . '}', $path)) { |
383 | - return TRUE; |
|
383 | + return TRUE; |
|
384 | 384 | } |
385 | - } |
|
386 | - return FALSE; |
|
385 | + } |
|
386 | + return FALSE; |
|
387 | 387 | } |
388 | 388 | |
389 | 389 | /** |
@@ -391,20 +391,20 @@ discard block |
||
391 | 391 | * Drupal's recover email path. |
392 | 392 | */ |
393 | 393 | function _boincuser_redirect_recover_email() { |
394 | - $params = array( |
|
394 | + $params = array( |
|
395 | 395 | 'boincid' => isset($_GET['id']) ? $_GET['id'] : '', |
396 | 396 | 'token' => isset($_GET['token']) ? $_GET['token'] : '' |
397 | - ); |
|
397 | + ); |
|
398 | 398 | |
399 | - // If boincid or token is not present, then go to the home page. |
|
400 | - if (empty($params['boincid']) or empty($params['token'])) { |
|
399 | + // If boincid or token is not present, then go to the home page. |
|
400 | + if (empty($params['boincid']) or empty($params['token'])) { |
|
401 | 401 | $redirect = ''; |
402 | - } |
|
403 | - else { |
|
402 | + } |
|
403 | + else { |
|
404 | 404 | $uid = boincuser_lookup_uid($params['boincid']); |
405 | 405 | $redirect = "/user/${uid}/recoveremail/${params['token']}"; |
406 | - } |
|
407 | - drupal_goto($redirect); |
|
406 | + } |
|
407 | + drupal_goto($redirect); |
|
408 | 408 | } |
409 | 409 | |
410 | 410 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -415,17 +415,17 @@ discard block |
||
415 | 415 | * Require BOINC library |
416 | 416 | */ |
417 | 417 | function require_boinc($libraries) { |
418 | - if ($include_dir = boinc_get_path('html_inc')) { |
|
418 | + if ($include_dir = boinc_get_path('html_inc')) { |
|
419 | 419 | $working_dir = getcwd(); |
420 | 420 | chdir($include_dir); |
421 | 421 | if (!is_array($libraries)) { |
422 | - $libraries = array($libraries); |
|
422 | + $libraries = array($libraries); |
|
423 | 423 | } |
424 | 424 | foreach ($libraries as $library) { |
425 | - require_once("{$library}.inc"); |
|
425 | + require_once("{$library}.inc"); |
|
426 | 426 | } |
427 | 427 | chdir($working_dir); |
428 | - } |
|
428 | + } |
|
429 | 429 | } |
430 | 430 | |
431 | 431 | /** |
@@ -433,7 +433,7 @@ discard block |
||
433 | 433 | * The path from the BOINC html root must be included (e.g. user/file.php) |
434 | 434 | */ |
435 | 435 | function include_boinc($file) { |
436 | - if ($include_dir = boinc_get_path()) { |
|
436 | + if ($include_dir = boinc_get_path()) { |
|
437 | 437 | $include_dir .= '/html'; |
438 | 438 | $workingDir = getcwd(); |
439 | 439 | $path = dirname($file); |
@@ -441,84 +441,84 @@ discard block |
||
441 | 441 | chdir("{$include_dir}/{$path}"); |
442 | 442 | include($file); |
443 | 443 | chdir($workingDir); |
444 | - } |
|
444 | + } |
|
445 | 445 | } |
446 | 446 | |
447 | 447 | /** |
448 | 448 | * Get the BOINC include path |
449 | 449 | */ |
450 | 450 | function boinc_get_path($type = 'root') { |
451 | - $dir = "boinc_{$type}_dir"; |
|
452 | - if ($include_dir = variable_get("boinc_{$type}_dir", '')) { |
|
451 | + $dir = "boinc_{$type}_dir"; |
|
452 | + if ($include_dir = variable_get("boinc_{$type}_dir", '')) { |
|
453 | 453 | return $include_dir; |
454 | - } |
|
455 | - else { |
|
454 | + } |
|
455 | + else { |
|
456 | 456 | // Don't show errors on blacklisted pages |
457 | 457 | $page_blacklist = array( |
458 | - 'admin/boinc/environment' |
|
458 | + 'admin/boinc/environment' |
|
459 | 459 | ); |
460 | 460 | if (!in_array($_GET['q'], $page_blacklist)) { |
461 | - watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
461 | + watchdog('boincuser', 'The BOINC environment is not configured. Please |
|
462 | 462 | !configure_it', array('!configure_it' => l(t('configure it now'), |
463 | 463 | 'admin/boinc/environment')), WATCHDOG_WARNING); |
464 | - if (user_access('administer site configuration')) { |
|
464 | + if (user_access('administer site configuration')) { |
|
465 | 465 | drupal_set_message(t('The BOINC environment is not configured. Please |
466 | 466 | !configure_it', array('!configure_it' => l(t('configure it now'), |
467 | 467 | 'admin/boinc/environment'))), 'warning', FALSE); |
468 | - } |
|
469 | - else { |
|
468 | + } |
|
469 | + else { |
|
470 | 470 | drupal_set_message(t('There is a problem with the site. Please contact |
471 | 471 | the system administrator.'), 'error', FALSE); |
472 | - } |
|
473 | - // Redirect home to display the error message and avoid fatal errors |
|
474 | - // (unless on a blacklisted page) |
|
475 | - $redirect_blacklist = array( |
|
472 | + } |
|
473 | + // Redirect home to display the error message and avoid fatal errors |
|
474 | + // (unless on a blacklisted page) |
|
475 | + $redirect_blacklist = array( |
|
476 | 476 | 'admin/settings/performance', |
477 | 477 | 'admin/boinc/environment', |
478 | 478 | 'home', |
479 | 479 | '' |
480 | - ); |
|
481 | - if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
480 | + ); |
|
481 | + if (!in_array($_GET['q'], $redirect_blacklist)) { |
|
482 | 482 | drupal_goto(''); |
483 | - } |
|
483 | + } |
|
484 | 484 | } |
485 | 485 | else { |
486 | - // Clear the messages on the environment config page |
|
487 | - drupal_get_messages(); |
|
486 | + // Clear the messages on the environment config page |
|
487 | + drupal_get_messages(); |
|
488 | 488 | } |
489 | - } |
|
490 | - return FALSE; |
|
489 | + } |
|
490 | + return FALSE; |
|
491 | 491 | } |
492 | 492 | |
493 | 493 | /** |
494 | 494 | * Get the configured scheduler tags |
495 | 495 | */ |
496 | 496 | function boinc_get_scheduler_tags() { |
497 | - // Don't generate messages for blacklisted pages |
|
498 | - $page_blacklist = array( |
|
497 | + // Don't generate messages for blacklisted pages |
|
498 | + $page_blacklist = array( |
|
499 | 499 | 'admin/boinc/environment', |
500 | 500 | 'admin/boinc/scheduler' |
501 | - ); |
|
502 | - if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
501 | + ); |
|
502 | + if ($url_config = variable_get('boinc_scheduler_urls', '')) { |
|
503 | 503 | return explode("\r\n", $url_config); |
504 | - } |
|
505 | - elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
504 | + } |
|
505 | + elseif (!in_array($_GET['q'], $page_blacklist)) { |
|
506 | 506 | watchdog('boincuser', 'The BOINC scheduling server settings are not yet |
507 | 507 | configured. Please !verify for the settings to become effective.', |
508 | - array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
508 | + array('!verify' => l(t('verify the default values') . ' <strong>' . |
|
509 | 509 | t('and') . '</strong> ' . t('save the configuration'), |
510 | 510 | 'admin/boinc/scheduler', array('html' => TRUE)) |
511 | - ), WATCHDOG_WARNING); |
|
511 | + ), WATCHDOG_WARNING); |
|
512 | 512 | if (user_access('administer site configuration')) { |
513 | - drupal_set_message(t('The BOINC scheduling server settings are not yet |
|
513 | + drupal_set_message(t('The BOINC scheduling server settings are not yet |
|
514 | 514 | configured. Please !verify for the settings to become effective', |
515 | 515 | array('!verify' => l(t('verify the default values') . ' <strong>' . |
516 | - t('and') . '</strong> ' . t('save the configuration'), |
|
517 | - 'admin/boinc/scheduler', array('html' => TRUE)) |
|
516 | + t('and') . '</strong> ' . t('save the configuration'), |
|
517 | + 'admin/boinc/scheduler', array('html' => TRUE)) |
|
518 | 518 | )), 'warning', FALSE); |
519 | 519 | } |
520 | - } |
|
521 | - return array(); |
|
520 | + } |
|
521 | + return array(); |
|
522 | 522 | } |
523 | 523 | |
524 | 524 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -530,41 +530,41 @@ discard block |
||
530 | 530 | * Determine if a BOINC ID matches the logged in user |
531 | 531 | */ |
532 | 532 | function is_current_boinc_user($boinc_id) { |
533 | - global $user; |
|
534 | - if (!$user->uid) { |
|
533 | + global $user; |
|
534 | + if (!$user->uid) { |
|
535 | 535 | return FALSE; |
536 | - } |
|
537 | - // boincuser_id is not stored in the global user, so load a new instance |
|
538 | - $drupuser = user_load($user->uid); |
|
539 | - return ($boinc_id == $drupuser->boincuser_id); |
|
536 | + } |
|
537 | + // boincuser_id is not stored in the global user, so load a new instance |
|
538 | + $drupuser = user_load($user->uid); |
|
539 | + return ($boinc_id == $drupuser->boincuser_id); |
|
540 | 540 | } |
541 | 541 | |
542 | 542 | /** |
543 | 543 | * Convert a BOINC ID to a Drupal ID |
544 | 544 | */ |
545 | 545 | function boincuser_lookup_uid($boinc_id) { |
546 | - $drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id)); |
|
547 | - return $drupal_id; |
|
546 | + $drupal_id = db_result(db_query("SELECT uid FROM {boincuser} WHERE boinc_id='%d'", $boinc_id)); |
|
547 | + return $drupal_id; |
|
548 | 548 | } |
549 | 549 | function get_drupal_id($boinc_id) { |
550 | - return boincuser_lookup_uid($boinc_id); |
|
550 | + return boincuser_lookup_uid($boinc_id); |
|
551 | 551 | } |
552 | 552 | |
553 | 553 | /** |
554 | 554 | * Get a BOINC user object |
555 | 555 | */ |
556 | 556 | function boincuser_load($user_id = NULL, $is_drupal_id = FALSE) { |
557 | - if (!$user_id) { |
|
557 | + if (!$user_id) { |
|
558 | 558 | global $user; |
559 | 559 | $user_id = $user->uid; |
560 | 560 | $is_drupal_id = TRUE; |
561 | - } |
|
562 | - if ($is_drupal_id) { |
|
561 | + } |
|
562 | + if ($is_drupal_id) { |
|
563 | 563 | $account = user_load($user_id); |
564 | 564 | $user_id = $account->boincuser_id; |
565 | - } |
|
566 | - require_boinc('boinc_db'); |
|
567 | - return BoincUser::lookup_id($user_id); |
|
565 | + } |
|
566 | + require_boinc('boinc_db'); |
|
567 | + return BoincUser::lookup_id($user_id); |
|
568 | 568 | } |
569 | 569 | |
570 | 570 | /** |
@@ -574,10 +574,10 @@ discard block |
||
574 | 574 | * page, delete button. |
575 | 575 | */ |
576 | 576 | function _boincuser_node_profile_delete_submit($form, &$form_state) { |
577 | - $node = $form['#node']; |
|
578 | - $deleteurl = 'node/'. $node->nid .'/delete'; |
|
579 | - $afterq = 'destination=account'; |
|
580 | - drupal_goto($deleteurl, $afterq); |
|
577 | + $node = $form['#node']; |
|
578 | + $deleteurl = 'node/'. $node->nid .'/delete'; |
|
579 | + $afterq = 'destination=account'; |
|
580 | + drupal_goto($deleteurl, $afterq); |
|
581 | 581 | } |
582 | 582 | |
583 | 583 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -588,8 +588,8 @@ discard block |
||
588 | 588 | * Wrapper for boinc_version() function |
589 | 589 | */ |
590 | 590 | function get_boinc_version($x) { |
591 | - require_boinc('host'); |
|
592 | - return function_exists('boinc_version') ? boinc_version($x) : 'err!'; |
|
591 | + require_boinc('host'); |
|
592 | + return function_exists('boinc_version') ? boinc_version($x) : 'err!'; |
|
593 | 593 | } |
594 | 594 | |
595 | 595 | |
@@ -598,14 +598,14 @@ discard block |
||
598 | 598 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
599 | 599 | |
600 | 600 | /** |
601 | - * Generate the friend block header |
|
602 | - */ |
|
601 | + * Generate the friend block header |
|
602 | + */ |
|
603 | 603 | function boincuser_views_friends_block_header($context = null) { |
604 | - // Get the friend count for the user being viewed |
|
605 | - $view = views_get_current_view(); |
|
606 | - $account_id = $view->args[0]; |
|
607 | - $friend_count = flag_friend_get_friend_count($account_id); |
|
608 | - return '<h2 class="pane-title">' . bts('Friends (@count)', |
|
604 | + // Get the friend count for the user being viewed |
|
605 | + $view = views_get_current_view(); |
|
606 | + $account_id = $view->args[0]; |
|
607 | + $friend_count = flag_friend_get_friend_count($account_id); |
|
608 | + return '<h2 class="pane-title">' . bts('Friends (@count)', |
|
609 | 609 | array('@count' => $friend_count)) . '</h2>'; |
610 | 610 | } |
611 | 611 | |
@@ -614,13 +614,13 @@ discard block |
||
614 | 614 | * database. |
615 | 615 | */ |
616 | 616 | function _boincuser_user_name_autocomplete($string) { |
617 | - $matches = array(); |
|
618 | - db_set_active('boinc_ro'); |
|
619 | - $result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10); |
|
620 | - db_set_active('default'); |
|
621 | - while ($user = db_fetch_object($result)) { |
|
622 | - $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')'; |
|
623 | - } |
|
624 | - |
|
625 | - drupal_json((object)$matches); |
|
617 | + $matches = array(); |
|
618 | + db_set_active('boinc_ro'); |
|
619 | + $result = db_query_range("SELECT id,name FROM {user} WHERE name LIKE '%s%'", $string, 0, 10); |
|
620 | + db_set_active('default'); |
|
621 | + while ($user = db_fetch_object($result)) { |
|
622 | + $matches[$user->name . '_' . $user->id] = htmlentities($user->name) . " (" . $user->id . ')'; |
|
623 | + } |
|
624 | + |
|
625 | + drupal_json((object)$matches); |
|
626 | 626 | } |
@@ -28,13 +28,13 @@ discard block |
||
28 | 28 | }*/ |
29 | 29 | |
30 | 30 | /** |
31 | - * The BOINC environment form allows paths to be set to connect Drupal to an |
|
32 | - * existing BOINC web interface. |
|
33 | - */ |
|
31 | + * The BOINC environment form allows paths to be set to connect Drupal to an |
|
32 | + * existing BOINC web interface. |
|
33 | + */ |
|
34 | 34 | function boincuser_admin_environment(&$form_state) { |
35 | - global $base_url; |
|
36 | - $form = array(); |
|
37 | - $default = array( |
|
35 | + global $base_url; |
|
36 | + $form = array(); |
|
37 | + $default = array( |
|
38 | 38 | 'boinc_root_dir' => variable_get('boinc_root_dir', ''), |
39 | 39 | 'boinc_config_xml_dir' => variable_get('boinc_config_xml_dir', ''), |
40 | 40 | 'boinc_html_inc_dir' => variable_get('boinc_html_inc_dir', ''), |
@@ -47,303 +47,303 @@ discard block |
||
47 | 47 | 'boinc_admin_mailing_list_subject_tag' => variable_get('boinc_admin_mailing_list_subject_tag', ''), |
48 | 48 | 'boinc_debug_mode' => variable_get('boinc_debug_mode', 0), |
49 | 49 | 'boinc_project_config_keywords' => variable_get('boinc_project_config_keywords', ''), |
50 | - ); |
|
51 | - //drupal_set_message(print_r($default, true)); |
|
52 | - //drupal_set_message(print_r($form_state, true)); |
|
53 | - // Show overrides if the root dir is set and others have not been detected |
|
54 | - $show_overrides = FALSE; |
|
55 | - if ($default['boinc_root_dir']) { |
|
50 | + ); |
|
51 | + //drupal_set_message(print_r($default, true)); |
|
52 | + //drupal_set_message(print_r($form_state, true)); |
|
53 | + // Show overrides if the root dir is set and others have not been detected |
|
54 | + $show_overrides = FALSE; |
|
55 | + if ($default['boinc_root_dir']) { |
|
56 | 56 | foreach ($default as $key => $dir) { |
57 | - switch ($key) { |
|
58 | - case 'boinc_config_xml_dir': |
|
57 | + switch ($key) { |
|
58 | + case 'boinc_config_xml_dir': |
|
59 | 59 | case 'boinc_html_inc_dir': |
60 | 60 | case 'boinc_project_config_dir': |
61 | 61 | case 'boinc_user_image_dir': |
62 | 62 | // If any of these values are not set, show the overrides section |
63 | 63 | if (!$dir) { |
64 | - $default[$key] = $form_state['values'][$key]; |
|
65 | - $show_overrides = TRUE; |
|
66 | - break; |
|
64 | + $default[$key] = $form_state['values'][$key]; |
|
65 | + $show_overrides = TRUE; |
|
66 | + break; |
|
67 | 67 | } |
68 | 68 | break; |
69 | - default: |
|
69 | + default: |
|
70 | 70 | } |
71 | - if ($show_overrides) { |
|
71 | + if ($show_overrides) { |
|
72 | 72 | break; |
73 | - } |
|
73 | + } |
|
74 | + } |
|
74 | 75 | } |
75 | - } |
|
76 | - // Define the form |
|
77 | - $form['boinc_root_dir'] = array( |
|
76 | + // Define the form |
|
77 | + $form['boinc_root_dir'] = array( |
|
78 | 78 | '#type' => 'textfield', |
79 | 79 | '#title' => t('BOINC project root directory'), |
80 | 80 | '#default_value' => $default['boinc_root_dir'], |
81 | 81 | '#description' => t('The filesystem path to the BOINC project root. This |
82 | 82 | directory should contain config.xml as well as the html subdirectory, |
83 | 83 | which itself contains inc/, project/, and user_profile/.'), |
84 | - ); |
|
85 | - $form['overrides'] = array( |
|
84 | + ); |
|
85 | + $form['overrides'] = array( |
|
86 | 86 | '#title' => t('Overrides'), |
87 | 87 | '#type' => 'fieldset', |
88 | 88 | '#description' => '', |
89 | 89 | '#collapsible' => TRUE, |
90 | 90 | '#collapsed' => !$show_overrides, |
91 | 91 | '#attributes' => array('class' => 'advanced-settings') |
92 | - ); |
|
93 | - $form['overrides']['boinc_config_xml_dir'] = array( |
|
92 | + ); |
|
93 | + $form['overrides']['boinc_config_xml_dir'] = array( |
|
94 | 94 | '#type' => 'textfield', |
95 | 95 | '#title' => t('BOINC config.xml directory'), |
96 | 96 | '#default_value' => $default['boinc_config_xml_dir'], |
97 | 97 | '#description' => t('The filesystem path that contains config.xml'), |
98 | - ); |
|
99 | - $form['overrides']['boinc_html_inc_dir'] = array( |
|
98 | + ); |
|
99 | + $form['overrides']['boinc_html_inc_dir'] = array( |
|
100 | 100 | '#type' => 'textfield', |
101 | 101 | '#title' => t('BOINC web includes directory'), |
102 | 102 | '#default_value' => $default['boinc_html_inc_dir'], |
103 | 103 | '#description' => t('The filesystem path to the html/inc/ directory that |
104 | 104 | contains util.inc'), |
105 | - ); |
|
106 | - $form['overrides']['boinc_project_config_dir'] = array( |
|
105 | + ); |
|
106 | + $form['overrides']['boinc_project_config_dir'] = array( |
|
107 | 107 | '#type' => 'textfield', |
108 | 108 | '#title' => t('BOINC project config directory'), |
109 | 109 | '#default_value' => $default['boinc_project_config_dir'], |
110 | 110 | '#description' => t('The filesystem path to the project/ directory that |
111 | 111 | contains project.inc'), |
112 | - ); |
|
113 | - $form['overrides']['boinc_user_image_dir'] = array( |
|
112 | + ); |
|
113 | + $form['overrides']['boinc_user_image_dir'] = array( |
|
114 | 114 | '#type' => 'textfield', |
115 | 115 | '#title' => t('BOINC user profile image directory'), |
116 | 116 | '#default_value' => $default['boinc_user_image_dir'], |
117 | 117 | '#description' => t('The filesystem directory that contains user images'), |
118 | - ); |
|
119 | - $form['boinc_server_status_url'] = array( |
|
118 | + ); |
|
119 | + $form['boinc_server_status_url'] = array( |
|
120 | 120 | '#type' => 'textfield', |
121 | 121 | '#title' => t('BOINC server status page URL (optional)'), |
122 | 122 | '#default_value' => $default['boinc_server_status_url'], |
123 | 123 | '#description' => t('An absolute URL or path relative to the site base to the server status page (e.g. %full_url or just %relative_url).', |
124 | - array( |
|
124 | + array( |
|
125 | 125 | '%full_url' => $base_url . '/server_status.php', |
126 | 126 | '%relative_url' => 'server_status.php', |
127 | - ) |
|
127 | + ) |
|
128 | 128 | ), |
129 | - ); |
|
130 | - $form['boinc_app_list_url'] = array( |
|
129 | + ); |
|
130 | + $form['boinc_app_list_url'] = array( |
|
131 | 131 | '#type' => 'textfield', |
132 | 132 | '#title' => t('BOINC applications page URL (optional)'), |
133 | 133 | '#default_value' => $default['boinc_app_list_url'], |
134 | 134 | '#description' => t('An absolute URL or path relative to the site base to the applications page (e.g. %full_url or just %relative_url).', |
135 | - array( |
|
135 | + array( |
|
136 | 136 | '%full_url' => $base_url . '/apps.php', |
137 | 137 | '%relative_url' => 'apps.php', |
138 | - ) |
|
138 | + ) |
|
139 | 139 | ), |
140 | - ); |
|
141 | - $form['boinc_host_sched_logs_dir'] = array( |
|
140 | + ); |
|
141 | + $form['boinc_host_sched_logs_dir'] = array( |
|
142 | 142 | '#type' => 'textfield', |
143 | 143 | '#title' => t('BOINC host scheduler log directory (optional)'), |
144 | 144 | '#default_value' => $default['boinc_host_sched_logs_dir'], |
145 | 145 | '#description' => t('The filesystem directory that contains host scheduler logs'), |
146 | - ); |
|
147 | - $form['boinc_admin_mailing_list'] = array( |
|
146 | + ); |
|
147 | + $form['boinc_admin_mailing_list'] = array( |
|
148 | 148 | '#type' => 'textfield', |
149 | 149 | '#title' => t('Admin mailing list'), |
150 | 150 | '#default_value' => $default['boinc_admin_mailing_list'], |
151 | 151 | '#description' => t('Enter an email-address which will be used to contact admisistrators. If empty, the site email configured in Settings -> Site Information will be used.'), |
152 | - ); |
|
153 | - $form['boinc_admin_mailing_list_subject_tag'] = array( |
|
152 | + ); |
|
153 | + $form['boinc_admin_mailing_list_subject_tag'] = array( |
|
154 | 154 | '#type' => 'textfield', |
155 | 155 | '#title' => t('Admin mailing list - subject tag'), |
156 | 156 | '#default_value' => $default['boinc_admin_mailing_list_subject_tag'], |
157 | 157 | '#description' => t('Text which will appear at the beginning of the subject for any admin notification emails. If empty, no tag will be included. Examples: [drupal-error].'), |
158 | - ); |
|
159 | - $form['boinc_debug_mode'] = array( |
|
158 | + ); |
|
159 | + $form['boinc_debug_mode'] = array( |
|
160 | 160 | '#type' => 'checkbox', |
161 | 161 | '#title' => t('Show debug messages in system log'), |
162 | 162 | '#default_value' => $default['boinc_debug_mode'] |
163 | - ); |
|
164 | - $form['boinc_project_config_keywords'] = array( |
|
163 | + ); |
|
164 | + $form['boinc_project_config_keywords'] = array( |
|
165 | 165 | '#type' => 'textarea', |
166 | 166 | '#title' => t('Project/Job Keywords for get_project_config RPC'), |
167 | 167 | '#default_value' => $default['boinc_project_config_keywords'], |
168 | 168 | '#description' => t('XML from this text box will be appended to the XML output from the get_project_config RPC. There is no check for XML validity! See !link for more details. It is okay to leave this blank.', |
169 | 169 | array( |
170 | - '!link' => l('BOINC wiki page', 'https://boinc.berkeley.edu/trac/wiki/JobKeywords') |
|
170 | + '!link' => l('BOINC wiki page', 'https://boinc.berkeley.edu/trac/wiki/JobKeywords') |
|
171 | 171 | )), |
172 | - ); |
|
173 | - return system_settings_form($form); |
|
172 | + ); |
|
173 | + return system_settings_form($form); |
|
174 | 174 | } |
175 | 175 | |
176 | 176 | /** |
177 | - * Validate the BOINC environment form. |
|
178 | - */ |
|
177 | + * Validate the BOINC environment form. |
|
178 | + */ |
|
179 | 179 | function boincuser_admin_environment_validate($form, &$form_state) { |
180 | - $values = $form_state['values']; |
|
181 | - if (!$values['boinc_root_dir']) { |
|
180 | + $values = $form_state['values']; |
|
181 | + if (!$values['boinc_root_dir']) { |
|
182 | 182 | form_set_error('boinc_root_dir', t('BOINC project root directory must be |
183 | 183 | defined!')); |
184 | - } |
|
185 | - elseif (!is_dir($values['boinc_root_dir'])) { |
|
184 | + } |
|
185 | + elseif (!is_dir($values['boinc_root_dir'])) { |
|
186 | 186 | form_set_error('boinc_root_dir', t('BOINC project root not found at %directory', |
187 | - array('%directory' => $values['boinc_root_dir']) |
|
187 | + array('%directory' => $values['boinc_root_dir']) |
|
188 | 188 | )); |
189 | - } |
|
190 | - else { |
|
189 | + } |
|
190 | + else { |
|
191 | 191 | // By default, try to automatically set specific directories from the root |
192 | 192 | if (!$values['boinc_config_xml_dir']) { |
193 | - $values['boinc_config_xml_dir'] = $values['boinc_root_dir']; |
|
194 | - form_set_value($form['overrides']['boinc_config_xml_dir'], $values['boinc_config_xml_dir'], $form_state); |
|
193 | + $values['boinc_config_xml_dir'] = $values['boinc_root_dir']; |
|
194 | + form_set_value($form['overrides']['boinc_config_xml_dir'], $values['boinc_config_xml_dir'], $form_state); |
|
195 | 195 | } |
196 | 196 | if (!$values['boinc_html_inc_dir']) { |
197 | - $values['boinc_html_inc_dir'] = "{$values['boinc_root_dir']}/html/inc"; |
|
198 | - form_set_value($form['overrides']['boinc_html_inc_dir'], $values['boinc_html_inc_dir'], $form_state); |
|
197 | + $values['boinc_html_inc_dir'] = "{$values['boinc_root_dir']}/html/inc"; |
|
198 | + form_set_value($form['overrides']['boinc_html_inc_dir'], $values['boinc_html_inc_dir'], $form_state); |
|
199 | 199 | } |
200 | 200 | if (!$values['boinc_project_config_dir']) { |
201 | - $values['boinc_project_config_dir'] = "{$values['boinc_root_dir']}/html/project"; |
|
202 | - form_set_value($form['overrides']['boinc_project_config_dir'], $values['boinc_project_config_dir'], $form_state); |
|
201 | + $values['boinc_project_config_dir'] = "{$values['boinc_root_dir']}/html/project"; |
|
202 | + form_set_value($form['overrides']['boinc_project_config_dir'], $values['boinc_project_config_dir'], $form_state); |
|
203 | 203 | } |
204 | 204 | if (!$values['boinc_user_image_dir']) { |
205 | - $values['boinc_user_image_dir'] = "{$values['boinc_root_dir']}/html/user_profile/images"; |
|
206 | - form_set_value($form['overrides']['boinc_user_image_dir'], $values['boinc_user_image_dir'], $form_state); |
|
205 | + $values['boinc_user_image_dir'] = "{$values['boinc_root_dir']}/html/user_profile/images"; |
|
206 | + form_set_value($form['overrides']['boinc_user_image_dir'], $values['boinc_user_image_dir'], $form_state); |
|
207 | 207 | } |
208 | 208 | // Validate that required BOINC content is found |
209 | 209 | if (!is_readable("{$values['boinc_config_xml_dir']}/config.xml")) { |
210 | - form_set_error('boinc_config_xml_dir', t('@file not found in %directory', |
|
210 | + form_set_error('boinc_config_xml_dir', t('@file not found in %directory', |
|
211 | 211 | array( |
212 | - '@file' => 'config.xml', |
|
213 | - '%directory' => "{$values['boinc_config_xml_dir']}/" |
|
212 | + '@file' => 'config.xml', |
|
213 | + '%directory' => "{$values['boinc_config_xml_dir']}/" |
|
214 | 214 | ) |
215 | - )); |
|
215 | + )); |
|
216 | 216 | } |
217 | 217 | if (!is_readable("{$values['boinc_html_inc_dir']}/util.inc")) { |
218 | - form_set_error('boinc_html_inc_dir', t('@file not found in %directory', |
|
218 | + form_set_error('boinc_html_inc_dir', t('@file not found in %directory', |
|
219 | 219 | array( |
220 | - '@file' => 'util.inc', |
|
221 | - '%directory' => "{$values['boinc_html_inc_dir']}/" |
|
220 | + '@file' => 'util.inc', |
|
221 | + '%directory' => "{$values['boinc_html_inc_dir']}/" |
|
222 | 222 | ) |
223 | - )); |
|
223 | + )); |
|
224 | 224 | } |
225 | 225 | if (!is_readable("{$values['boinc_project_config_dir']}/project.inc")) { |
226 | - form_set_error('boinc_project_config_dir', t('@file not found in %directory', |
|
226 | + form_set_error('boinc_project_config_dir', t('@file not found in %directory', |
|
227 | 227 | array( |
228 | - '@file' => 'project.inc', |
|
229 | - '%directory' => "{$values['boinc_project_config_dir']}/" |
|
228 | + '@file' => 'project.inc', |
|
229 | + '%directory' => "{$values['boinc_project_config_dir']}/" |
|
230 | 230 | ) |
231 | - )); |
|
231 | + )); |
|
232 | 232 | } |
233 | 233 | if (!is_dir($values['boinc_user_image_dir'])) { |
234 | - form_set_error('boinc_user_image_dir', t('Profile image directory not found |
|
234 | + form_set_error('boinc_user_image_dir', t('Profile image directory not found |
|
235 | 235 | at %directory', array('%directory' => $values['boinc_user_image_dir']) |
236 | - )); |
|
236 | + )); |
|
237 | 237 | } |
238 | 238 | if ($values['boinc_host_sched_logs_dir'] |
239 | 239 | AND !is_dir($values['boinc_host_sched_logs_dir']) |
240 | - ) { |
|
241 | - form_set_error('boinc_host_sched_logs_dir', t('Host scheduler log |
|
240 | + ) { |
|
241 | + form_set_error('boinc_host_sched_logs_dir', t('Host scheduler log |
|
242 | 242 | directory not found at %directory', |
243 | 243 | array('%directory' => $values['boinc_host_sched_logs_dir']) |
244 | - )); |
|
244 | + )); |
|
245 | + } |
|
245 | 246 | } |
246 | - } |
|
247 | 247 | } |
248 | 248 | |
249 | 249 | /** |
250 | - * Handle post-validation submission of BOINC environment form. |
|
251 | - */ |
|
250 | + * Handle post-validation submission of BOINC environment form. |
|
251 | + */ |
|
252 | 252 | function boincuser_admin_environment_submit($form, &$form_state) { |
253 | - unset($_SESSION['boinc_env']); |
|
254 | - drupal_set_message(t('BOINC environment settings have been updated.')); |
|
253 | + unset($_SESSION['boinc_env']); |
|
254 | + drupal_set_message(t('BOINC environment settings have been updated.')); |
|
255 | 255 | } |
256 | 256 | |
257 | 257 | /** |
258 | - * The BOINC scheduler form provides options for how scheduler tags are |
|
259 | - * inserted into the front page |
|
260 | - */ |
|
258 | + * The BOINC scheduler form provides options for how scheduler tags are |
|
259 | + * inserted into the front page |
|
260 | + */ |
|
261 | 261 | function boincuser_admin_scheduler(&$form_state) { |
262 | - $form = array(); |
|
263 | - $config_cgi_url = ''; |
|
264 | - if ($config_xml_dir = variable_get('boinc_config_xml_dir', '')) { |
|
262 | + $form = array(); |
|
263 | + $config_cgi_url = ''; |
|
264 | + if ($config_xml_dir = variable_get('boinc_config_xml_dir', '')) { |
|
265 | 265 | // Get the cgi_url option from the config file as the default scheduler URL |
266 | 266 | $xml = new DOMDocument(); |
267 | 267 | if ($xml->load("{$config_xml_dir}/config.xml")) { |
268 | - $config = xml_to_array($xml); |
|
269 | - if (isset($config['boinc']['config']['cgi_url']['@value'])) { |
|
268 | + $config = xml_to_array($xml); |
|
269 | + if (isset($config['boinc']['config']['cgi_url']['@value'])) { |
|
270 | 270 | $config_cgi_url = rtrim(trim($config['boinc']['config']['cgi_url']['@value']), '/'); |
271 | 271 | $config_cgi_url .= '/cgi'; |
272 | - } |
|
272 | + } |
|
273 | 273 | } |
274 | - } |
|
275 | - $default = array( |
|
274 | + } |
|
275 | + $default = array( |
|
276 | 276 | 'boinc_scheduler_urls' => variable_get('boinc_scheduler_urls', $config_cgi_url), |
277 | 277 | 'boinc_scheduler_tag_format_old' => variable_get('boinc_scheduler_tag_format_old', 1), |
278 | 278 | 'boinc_scheduler_tag_format_new' => variable_get('boinc_scheduler_tag_format_new', 1) |
279 | - ); |
|
279 | + ); |
|
280 | 280 | |
281 | - // Define the form |
|
282 | - $form['boinc_scheduler_urls'] = array( |
|
281 | + // Define the form |
|
282 | + $form['boinc_scheduler_urls'] = array( |
|
283 | 283 | '#type' => 'textarea', |
284 | 284 | '#title' => t('Scheduling server URLs'), |
285 | 285 | '#default_value' => $default['boinc_scheduler_urls'], |
286 | 286 | '#cols' => 60, |
287 | 287 | '#rows' => 5, |
288 | 288 | '#description' => t('If there are multiple URLs, please enter one per line.'), |
289 | - ); |
|
290 | - $form['boinc_scheduler_tag_format_old'] = array( |
|
289 | + ); |
|
290 | + $form['boinc_scheduler_tag_format_old'] = array( |
|
291 | 291 | '#type' => 'checkbox', |
292 | 292 | '#title' => t('Old format (@scheduler tag)', array('@scheduler' => '<scheduler>')), |
293 | 293 | '#default_value' => $default['boinc_scheduler_tag_format_old'] |
294 | - ); |
|
295 | - $form['boinc_scheduler_tag_format_new'] = array( |
|
294 | + ); |
|
295 | + $form['boinc_scheduler_tag_format_new'] = array( |
|
296 | 296 | '#type' => 'checkbox', |
297 | 297 | '#title' => t('New format (@link tag)', array('@link' => '<link>')), |
298 | 298 | '#default_value' => $default['boinc_scheduler_tag_format_new'] |
299 | - ); |
|
299 | + ); |
|
300 | 300 | |
301 | - return system_settings_form($form); |
|
301 | + return system_settings_form($form); |
|
302 | 302 | } |
303 | 303 | |
304 | 304 | /** |
305 | - * Validate the BOINC scheduler form. |
|
306 | - */ |
|
305 | + * Validate the BOINC scheduler form. |
|
306 | + */ |
|
307 | 307 | function boincuser_admin_scheduler_validate($form, &$form_state) { |
308 | - $values = $form_state['values']; |
|
309 | - if (!$values['boinc_scheduler_urls']) { |
|
308 | + $values = $form_state['values']; |
|
309 | + if (!$values['boinc_scheduler_urls']) { |
|
310 | 310 | form_set_error('boinc_scheduler_urls', t('At least one scheduling server |
311 | 311 | URL must be specified.')); |
312 | - } |
|
313 | - else { |
|
312 | + } |
|
313 | + else { |
|
314 | 314 | $urls = explode("\r\n", $values['boinc_scheduler_urls']); |
315 | 315 | foreach ($urls as $key => $url) { |
316 | - if (!$url) { |
|
316 | + if (!$url) { |
|
317 | 317 | unset($urls[$key]); |
318 | 318 | continue; |
319 | - } |
|
320 | - if (!filter_var($url, FILTER_VALIDATE_URL)) { |
|
319 | + } |
|
320 | + if (!filter_var($url, FILTER_VALIDATE_URL)) { |
|
321 | 321 | form_set_error('boinc_scheduler_urls', t('@url is not a valid URL |
322 | 322 | format.', array('@url' => $url))); |
323 | 323 | break; |
324 | - } |
|
324 | + } |
|
325 | 325 | } |
326 | 326 | $form_state['values']['boinc_scheduler_urls'] = implode("\r\n", $urls); |
327 | - } |
|
327 | + } |
|
328 | 328 | } |
329 | 329 | |
330 | 330 | /** |
331 | - * Handle post-validation submission of BOINC scheduler form. |
|
332 | - */ |
|
331 | + * Handle post-validation submission of BOINC scheduler form. |
|
332 | + */ |
|
333 | 333 | function boincuser_admin_scheduler_submit($form, &$form_state) { |
334 | - drupal_set_message(t('BOINC scheduling server settings have been updated.')); |
|
334 | + drupal_set_message(t('BOINC scheduling server settings have been updated.')); |
|
335 | 335 | } |
336 | 336 | |
337 | 337 | |
338 | 338 | /** |
339 | - * Drupal-BOINC Web site related options. |
|
340 | - */ |
|
339 | + * Drupal-BOINC Web site related options. |
|
340 | + */ |
|
341 | 341 | function boincuser_admin_weboptions(&$form_state) { |
342 | - global $base_url; |
|
343 | - $form = array(); |
|
342 | + global $base_url; |
|
343 | + $form = array(); |
|
344 | 344 | |
345 | - //form defaults |
|
346 | - $default = array( |
|
345 | + //form defaults |
|
346 | + $default = array( |
|
347 | 347 | 'boinc_weboptions_enableaccountcreateRPC' => variable_get('boinc_weboptions_enableaccountcreateRPC', TRUE), |
348 | 348 | 'boinc_weboptions_registrationtitle' => variable_get('boinc_weboptions_registrationtitle', 'Please read and acknowledge our terms of use'), |
349 | 349 | 'boinc_weboptions_termsofuse' => variable_get('boinc_weboptions_termsofuse', ''), |
@@ -357,65 +357,65 @@ discard block |
||
357 | 357 | 'boinc_weboptions_rulespolicies' => variable_get('boinc_weboptions_rulespolicies', ''), |
358 | 358 | 'boinc_other_frontpage' => variable_get('boinc_other_frontpage', ''), |
359 | 359 | 'boinc_weboptions_blacklisted_usernames' => variable_get('boinc_weboptions_blacklisted_usernames', "admin\nadministrator\nmoderator"), |
360 | - ); |
|
360 | + ); |
|
361 | 361 | |
362 | - // Define the form |
|
363 | - $form['registrationtitle'] = array( |
|
362 | + // Define the form |
|
363 | + $form['registrationtitle'] = array( |
|
364 | 364 | '#value' => '<h3>BOINC Registration</h3>', |
365 | - ); |
|
365 | + ); |
|
366 | 366 | |
367 | - $form['boinc_weboptions_enableaccountcreateRPC'] = array( |
|
367 | + $form['boinc_weboptions_enableaccountcreateRPC'] = array( |
|
368 | 368 | '#type' => 'checkbox', |
369 | 369 | '#title' => t('Enable create_account.php RPC'), |
370 | 370 | '#default_value' => $default['boinc_weboptions_enableaccountcreateRPC'], |
371 | 371 | '#description' => t('If checked, users will be able to create an account remotely using the create_account.php RPC. This option is independent of the user regsitration option found in ') . l(t('User management -> User settings'), '/admin/user/settings') . '. If enabled, user <b>may not be able to see and agree to the terms-of-use</b> to your site\'s privacy and data retention policies!', |
372 | - ); |
|
372 | + ); |
|
373 | 373 | |
374 | - $form['boinc_weboptions_registrationtitle'] = array( |
|
374 | + $form['boinc_weboptions_registrationtitle'] = array( |
|
375 | 375 | '#type' => 'textfield', |
376 | 376 | '#title' => t('Title of regsistration page'), |
377 | 377 | '#description' => t('Title text presented above the terms of use text.'), |
378 | 378 | '#default_value' => $default['boinc_weboptions_registrationtitle'], |
379 | - ); |
|
379 | + ); |
|
380 | 380 | |
381 | - $form['boinc_weboptions_termsofuse'] = array( |
|
381 | + $form['boinc_weboptions_termsofuse'] = array( |
|
382 | 382 | '#type' => 'textarea', |
383 | 383 | '#title' => t('Terms of Use Message for User Registration Page'), |
384 | 384 | '#default_value' => $default['boinc_weboptions_termsofuse'], |
385 | 385 | '#cols' => 60, |
386 | 386 | '#rows' => 8, |
387 | 387 | '#description' => t('Text to be displayed on site\'s user registration page. Privacy policy and other data retention information goes here. If empty, there will be no terms of use message, and the title above and checkbox below will not be shown.'), |
388 | - ); |
|
388 | + ); |
|
389 | 389 | |
390 | - $form['boinc_weboptions_overrideboinctou'] = array( |
|
390 | + $form['boinc_weboptions_overrideboinctou'] = array( |
|
391 | 391 | '#type' => 'checkbox', |
392 | 392 | '#title' => t('Override BOINC terms of use.'), |
393 | 393 | '#default_value' => $default['boinc_weboptions_overrideboinctou'], |
394 | 394 | '#description' => t('Override the BOINC terms_of_use.txt file for get_profject_config.php RPC. If TRUE, the get_project_config.php RPC will use the above terms of use text entered above. Otherwise, the original terms_of_use.txt text file in the project directory is used. And you will need to be responsible for keeping both the text file and the above terms of use text up-to-date and in sync with each other.'), |
395 | - ); |
|
395 | + ); |
|
396 | 396 | |
397 | - $form['boinc_weboptions_agreequestion'] = array( |
|
397 | + $form['boinc_weboptions_agreequestion'] = array( |
|
398 | 398 | '#type' => 'textfield', |
399 | 399 | '#title' => t('Terms of use agreement question'), |
400 | 400 | '#description' => t('This text is presented to the user as the question next to the \'I agree\' checkbox.'), |
401 | 401 | '#default_value' => $default['boinc_weboptions_agreequestion'], |
402 | - ); |
|
402 | + ); |
|
403 | 403 | |
404 | - $form['boinc_weboptions_registrationtitle2'] = array( |
|
404 | + $form['boinc_weboptions_registrationtitle2'] = array( |
|
405 | 405 | '#type' => 'textfield', |
406 | 406 | '#title' => t('Instructions for username/email/password questions'), |
407 | 407 | '#description' => t('Title text presented below terms of use and above username/email/password textfields.'), |
408 | 408 | '#default_value' => $default['boinc_weboptions_registrationtitle2'], |
409 | - ); |
|
409 | + ); |
|
410 | 410 | |
411 | - $form['boinc_weboptions_existinguser_tou'] = array( |
|
411 | + $form['boinc_weboptions_existinguser_tou'] = array( |
|
412 | 412 | '#type' => 'checkbox', |
413 | 413 | '#title' => t('Are existing users forced to agree to the Terms of Use?'), |
414 | 414 | '#default_value' => $default['boinc_weboptions_existinguser_tou'], |
415 | 415 | '#description' => t('If TRUE, existing users are forced to agree to a terms of use (if present) when the login and the system has detected they have not agreed. Otherwise they may login as normal. This option has no affect on whether or not new users must agree to the terms of use.'), |
416 | - ); |
|
416 | + ); |
|
417 | 417 | |
418 | - $form['boinc_weboptions_pathstoignore'] = array( |
|
418 | + $form['boinc_weboptions_pathstoignore'] = array( |
|
419 | 419 | '#type' => 'textarea', |
420 | 420 | '#title' => t('Paths to ignore the Terms of Use page'), |
421 | 421 | '#default_value' => $default['boinc_weboptions_pathstoignore'], |
@@ -424,80 +424,80 @@ discard block |
||
424 | 424 | '#description' => t('A list of Drupal URLs/paths to ignore for Terms of Use (ToU). If the option above \'Are existing users forced to agree to the Terms of Use?\' is activated, then some paths need to be ignored when checking if a user has agreed to the ToU. A good example is the logout path, "logout", or else users will not be able to logout! |
425 | 425 | <p>There is a default list of paths that must be ignored or else the site will not function. They are not included in this box. Here you may provide additional paths to be ignored, for example the privacy policy page may be accessible so that users may read it before agreeing to the site\'s ToU. |
426 | 426 | <p>Paths should be entered one per line. All paths should be <em>lower-case</em> and should not include a leading \'/\'. Example: account/info/edit will allow the user to visit ' . $base_url . '/account/info/edit without first agreeing to the ToU. Regexp are allowed. Example: account/* will allow the user to visit any path starting with ' . $base_url . '/account/.'), |
427 | - ); |
|
427 | + ); |
|
428 | 428 | |
429 | - $form['pathtitle'] = array( |
|
429 | + $form['pathtitle'] = array( |
|
430 | 430 | '#value' => '<h3>Path Options</h3>', |
431 | - ); |
|
431 | + ); |
|
432 | 432 | |
433 | - $form['boinc_weboptions_accountfinish'] = array ( |
|
433 | + $form['boinc_weboptions_accountfinish'] = array ( |
|
434 | 434 | '#type' => 'textfield', |
435 | 435 | '#title' => t('Path to a custom account_finish.php page, should be a path to a node'), |
436 | 436 | '#description' => t('Provide a path to a node which will serve as your site\'s landing page for users create an account using the BOINC client manager. They will be directed to this page after the account is created. If blank, a default account_finish page will be used.<br>Examples: account_finish, content/welcome, node/123'), |
437 | 437 | '#default_value' => $default['boinc_weboptions_accountfinish'], |
438 | - ); |
|
439 | - $form['boinc_weboptions_moderationpage'] = array ( |
|
438 | + ); |
|
439 | + $form['boinc_weboptions_moderationpage'] = array ( |
|
440 | 440 | '#type' => 'textfield', |
441 | 441 | '#title' => t('Path to the site\'s content moderation info page, should be a path to a node'), |
442 | 442 | '#description' => t('Provide a path to a node which will serve as your site\'s page for account/content moderation information. This will be used on the default account_finish page. If blank, no link to a moderation page will be provided. If a path is provided to the custom account_finish.php page (above), this field will be ignored.<br>Examples: moderation, content/moderation, node/456'), |
443 | 443 | '#default_value' => $default['boinc_weboptions_moderationpage'], |
444 | - ); |
|
445 | - $form['boinc_weboptions_rulespolicies'] = array ( |
|
444 | + ); |
|
445 | + $form['boinc_weboptions_rulespolicies'] = array ( |
|
446 | 446 | '#type' => 'textfield', |
447 | 447 | '#title' => t('Path to the site\'s rule and policies page, should be a path to a node'), |
448 | 448 | '#description' => t('Provide a path to a node which will serve as your site\'s rules and policies page. This will be used on the Join page shown to new users. If blank, no link to a rules and policies page will be provided.<br>Examples: rules-and-policies, node/789'), |
449 | 449 | '#default_value' => $default['boinc_weboptions_rulespolicies'], |
450 | - ); |
|
451 | - $form['boinc_other_frontpage'] = array ( |
|
450 | + ); |
|
451 | + $form['boinc_other_frontpage'] = array ( |
|
452 | 452 | '#type' => 'textarea', |
453 | 453 | '#title' => bts('Message for site\'s Home Page', array(), NULL, 'boinc:admin-boinc-other-options'), |
454 | 454 | '#default_value' => $default['boinc_other_frontpage'], |
455 | 455 | '#cols' => 60, |
456 | 456 | '#rows' => 8, |
457 | 457 | '#description' => bts('Text to be displayed on the site\'s Home landing page.', array(), NULL, 'boinc:admin-boinc-other-options'), |
458 | - ); |
|
458 | + ); |
|
459 | 459 | |
460 | - $form['Othertitle'] = array( |
|
460 | + $form['Othertitle'] = array( |
|
461 | 461 | '#value' => '<h3>Other Options</h3>', |
462 | - ); |
|
462 | + ); |
|
463 | 463 | |
464 | - $form['boinc_weboptions_blacklisted_usernames'] = array ( |
|
464 | + $form['boinc_weboptions_blacklisted_usernames'] = array ( |
|
465 | 465 | '#type' => 'textarea', |
466 | 466 | '#title' => t('BOINC username blacklist'), |
467 | 467 | '#default_value' => $default['boinc_weboptions_blacklisted_usernames'], |
468 | 468 | '#cols' => 60, |
469 | 469 | '#rows' => 7, |
470 | 470 | '#description' => t('Username blacklist: List of names that users will not be able to choose as their BOINC username. This will only affect Web registration and when a user changes their name using the Web site. Names should be entered one per line.<p>All names should be <em>lower-case</em>. The comparison made is case-insensitive.<p>If you wish to <em>disable</em> this feature, remove all names from this textbox; the blacklist will be empty.'), |
471 | - ); |
|
471 | + ); |
|
472 | 472 | |
473 | - return system_settings_form($form); |
|
473 | + return system_settings_form($form); |
|
474 | 474 | } |
475 | 475 | |
476 | 476 | /** |
477 | - * Validate BOINC other form |
|
478 | - */ |
|
477 | + * Validate BOINC other form |
|
478 | + */ |
|
479 | 479 | function boincuser_admin_weboptions_validate($form, &$form_state) { |
480 | - $values = $form_state['values']; |
|
480 | + $values = $form_state['values']; |
|
481 | 481 | |
482 | - $accountfinish = $values['boinc_weboptions_accountfinish']; |
|
483 | - if ( ($accountfinish) AND (!drupal_lookup_path('source', $accountfinish)) ) { |
|
482 | + $accountfinish = $values['boinc_weboptions_accountfinish']; |
|
483 | + if ( ($accountfinish) AND (!drupal_lookup_path('source', $accountfinish)) ) { |
|
484 | 484 | form_set_error('boinc weboptions_accountfinish', t('Path to custom account finish page not found. Please provide a valid path, or leave blank to unset.')); |
485 | - } |
|
485 | + } |
|
486 | 486 | |
487 | - $moderationpage = $values['boinc_weboptions_moderationpage']; |
|
488 | - if ( ($moderationpage) AND (!drupal_lookup_path('source', $moderationpage)) ) { |
|
487 | + $moderationpage = $values['boinc_weboptions_moderationpage']; |
|
488 | + if ( ($moderationpage) AND (!drupal_lookup_path('source', $moderationpage)) ) { |
|
489 | 489 | form_set_error('boinc weboptions_moderationpage', t('Path to moderation page not found. Please provide a valid path, or leave blank to unset.')); |
490 | - } |
|
490 | + } |
|
491 | 491 | |
492 | - $rulespolicies = $values['boinc_weboptions_rulespolicies']; |
|
493 | - if ( ($rulespolicies) AND (!drupal_lookup_path('source', $rulespolicies)) ) { |
|
492 | + $rulespolicies = $values['boinc_weboptions_rulespolicies']; |
|
493 | + if ( ($rulespolicies) AND (!drupal_lookup_path('source', $rulespolicies)) ) { |
|
494 | 494 | form_set_error('boinc weboptions_rulespolicies', t('Path to rules and policies page not found. Please provide a valid path, or leave blank to unset.')); |
495 | - } |
|
495 | + } |
|
496 | 496 | } |
497 | 497 | |
498 | 498 | /** |
499 | - * Submit BOINC other form |
|
500 | - */ |
|
499 | + * Submit BOINC other form |
|
500 | + */ |
|
501 | 501 | function boincuser_admin_weboptions_submit($form, &$form_state) { |
502 | - drupal_set_message( bts("Status: Drupa-BOINC Web site options have been updated", array(), NULL, 'boinc:admin-boinc-website-options') ); |
|
502 | + drupal_set_message( bts("Status: Drupa-BOINC Web site options have been updated", array(), NULL, 'boinc:admin-boinc-website-options') ); |
|
503 | 503 | } |
@@ -20,15 +20,15 @@ discard block |
||
20 | 20 | * Implementation of hook_perm(). |
21 | 21 | */ |
22 | 22 | function boincuser_delete_perm() { |
23 | - return array('delete own account'); |
|
23 | + return array('delete own account'); |
|
24 | 24 | } |
25 | 25 | |
26 | 26 | /** |
27 | 27 | * Implementation of hook_menu(). |
28 | 28 | */ |
29 | 29 | function boincuser_delete_menu() { |
30 | - $items = array(); |
|
31 | - $items['admin/boinc/user_delete'] = array( |
|
30 | + $items = array(); |
|
31 | + $items['admin/boinc/user_delete'] = array( |
|
32 | 32 | 'title' => t('Preferences: BOINC user delete'), |
33 | 33 | 'description' => t('Configure the BOINC user delete action.'), |
34 | 34 | 'page callback' => 'drupal_get_form', |
@@ -36,9 +36,9 @@ discard block |
||
36 | 36 | 'access arguments' => array('administer users'), |
37 | 37 | 'type' => MENU_NORMAL_ITEM, |
38 | 38 | 'file' => 'boincuser_delete.admin.inc', |
39 | - ); |
|
39 | + ); |
|
40 | 40 | |
41 | - $items['admin/boinc/user_delete/%'] = array( |
|
41 | + $items['admin/boinc/user_delete/%'] = array( |
|
42 | 42 | 'title' => t('Admin delete user'), |
43 | 43 | 'description' => t('Deletes a user as an admin'), |
44 | 44 | 'page callback' => 'drupal_get_form', |
@@ -46,9 +46,9 @@ discard block |
||
46 | 46 | 'access arguments' => array('administer users'), |
47 | 47 | 'type' => MENU_CALLBACK, |
48 | 48 | 'file' => 'boincuser_delete.admin.inc', |
49 | - ); |
|
49 | + ); |
|
50 | 50 | |
51 | - $items['user/%user/deleteconfirm/%'] = array( |
|
51 | + $items['user/%user/deleteconfirm/%'] = array( |
|
52 | 52 | 'title' => t('Final confirmation for account deletion'), |
53 | 53 | 'description' => t('Final confirmation for account deletion'), |
54 | 54 | 'page callback' => 'drupal_get_form', |
@@ -56,9 +56,9 @@ discard block |
||
56 | 56 | 'access callback' => 'boincuser_delete_access', |
57 | 57 | 'access arguments' => array(1), |
58 | 58 | 'type' => MENU_CALLBACK, |
59 | - ); |
|
59 | + ); |
|
60 | 60 | |
61 | - $items['user/%user/odeleteconfirm/%'] = array( |
|
61 | + $items['user/%user/odeleteconfirm/%'] = array( |
|
62 | 62 | 'title' => t('Final confirmation for account deletion'), |
63 | 63 | 'description' => t('Final confirmation for account deletion'), |
64 | 64 | 'page callback' => 'drupal_get_form', |
@@ -66,204 +66,204 @@ discard block |
||
66 | 66 | 'access callback' => 'boincuser_delete_access', |
67 | 67 | 'access arguments' => array(1), |
68 | 68 | 'type' => MENU_CALLBACK, |
69 | - ); |
|
69 | + ); |
|
70 | 70 | |
71 | - return $items; |
|
71 | + return $items; |
|
72 | 72 | } |
73 | 73 | |
74 | 74 | /** |
75 | 75 | * Checks whether a user can delete an account. |
76 | 76 | */ |
77 | 77 | function boincuser_delete_access($account) { |
78 | - global $user; |
|
79 | - return ((user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)) && $account->uid > 0); |
|
78 | + global $user; |
|
79 | + return ((user_access('administer users') || (user_access('delete own account') && $account->uid == $user->uid)) && $account->uid > 0); |
|
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
83 | 83 | * Implementation of hook_menu_alter(). |
84 | 84 | */ |
85 | 85 | function boincuser_delete_menu_alter(&$callbacks) { |
86 | - $callbacks['user/%user/delete']['access callback'] = 'boincuser_delete_access'; |
|
87 | - $callbacks['user/%user/delete']['access arguments'] = array(1); |
|
88 | - $callbacks['user/%user/delete']['type'] = MENU_CALLBACK; |
|
86 | + $callbacks['user/%user/delete']['access callback'] = 'boincuser_delete_access'; |
|
87 | + $callbacks['user/%user/delete']['access arguments'] = array(1); |
|
88 | + $callbacks['user/%user/delete']['type'] = MENU_CALLBACK; |
|
89 | 89 | } |
90 | 90 | |
91 | 91 | /** |
92 | 92 | * Implementation of hook_form_alter(). |
93 | 93 | */ |
94 | 94 | function boincuser_delete_form_alter(&$form, $form_state, $form_id) { |
95 | - global $user; |
|
95 | + global $user; |
|
96 | 96 | |
97 | - switch($form_id) { |
|
97 | + switch($form_id) { |
|
98 | 98 | case 'user_profile_form': |
99 | 99 | if ( user_access('delete own account') AND ($form['#uid'] == $user->uid) AND (arg(3)=='') ) { |
100 | 100 | $form['delete'] = array( |
101 | - '#type' => 'submit', |
|
102 | - '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'), |
|
103 | - '#weight' => 1009, |
|
104 | - '#submit' => array('user_edit_delete_submit'), |
|
105 | - '#prefix' => '<li class="tab">', |
|
106 | - '#suffix' => '</li>', |
|
101 | + '#type' => 'submit', |
|
102 | + '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'), |
|
103 | + '#weight' => 1009, |
|
104 | + '#submit' => array('user_edit_delete_submit'), |
|
105 | + '#prefix' => '<li class="tab">', |
|
106 | + '#suffix' => '</li>', |
|
107 | 107 | ); |
108 | - } |
|
109 | - else if ( user_access('administer users') ) { |
|
108 | + } |
|
109 | + else if ( user_access('administer users') ) { |
|
110 | 110 | $form['delete'] = array( |
111 | - '#type' => 'submit', |
|
112 | - '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'), |
|
113 | - '#weight' => 1009, |
|
114 | - '#submit' => array('_boincuser_delete_goto_admindelete'), |
|
115 | - '#prefix' => '<li class="tab">', |
|
116 | - '#suffix' => '</li>', |
|
111 | + '#type' => 'submit', |
|
112 | + '#value' => bts('Delete Account', array(), null, 'boinc:delete-user-account'), |
|
113 | + '#weight' => 1009, |
|
114 | + '#submit' => array('_boincuser_delete_goto_admindelete'), |
|
115 | + '#prefix' => '<li class="tab">', |
|
116 | + '#suffix' => '</li>', |
|
117 | 117 | ); |
118 | - } |
|
119 | - else { |
|
118 | + } |
|
119 | + else { |
|
120 | 120 | unset($form['delete']); |
121 | - } |
|
122 | - break; |
|
121 | + } |
|
122 | + break; |
|
123 | 123 | case 'user_confirm_delete': |
124 | 124 | |
125 | 125 | $disable_delete = FALSE; |
126 | - // If email address was changed less than 7 days (7 * 86400 s) |
|
127 | - // ago, it cannot be changed again. |
|
128 | - $duration = TOKEN_DURATION_ONE_WEEK; |
|
129 | - if (($form['_account']['#value']->boincuser_email_addr_change_time + $duration) > time()) { |
|
126 | + // If email address was changed less than 7 days (7 * 86400 s) |
|
127 | + // ago, it cannot be changed again. |
|
128 | + $duration = TOKEN_DURATION_ONE_WEEK; |
|
129 | + if (($form['_account']['#value']->boincuser_email_addr_change_time + $duration) > time()) { |
|
130 | 130 | drupal_set_message( |
131 | - bts("INFO: Your email address was changed within the past seven (7) days. You may not delete your account until after !time.", |
|
131 | + bts("INFO: Your email address was changed within the past seven (7) days. You may not delete your account until after !time.", |
|
132 | 132 | array( |
133 | - '!time' => date('F j, Y \a\t G:i T', $form['_account']['#value']->boincuser_email_addr_change_time + $duration), |
|
133 | + '!time' => date('F j, Y \a\t G:i T', $form['_account']['#value']->boincuser_email_addr_change_time + $duration), |
|
134 | 134 | ), NULL, 'boinc:account-credentials-change') |
135 | 135 | , 'info'); |
136 | 136 | $disable_delete = TRUE; |
137 | - } |
|
137 | + } |
|
138 | 138 | |
139 | - // Configure radio options |
|
140 | - $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'); |
|
139 | + // Configure radio options |
|
140 | + $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'); |
|
141 | 141 | |
142 | - $deleteoptions = array( |
|
142 | + $deleteoptions = array( |
|
143 | 143 | 'boincuser_delete_softdelete' => bts('<b>Soft delete</b> your account. Your account will be disabled. ', array(), NULL, 'boinc:delete-user-account'), |
144 | 144 | 'boincuser_delete_delete' => bts('<b>Delete</b> your account. ', array(), NULL, 'boinc:delete-user-account'), |
145 | - ); |
|
145 | + ); |
|
146 | 146 | |
147 | - $dtypes = variable_get('boincuser_delete_type', 'user_decides'); |
|
148 | - // Unset the other option if dtype is set. i.e., if dtype is set |
|
149 | - // to soft delete, unset the hard delete option. Likewise, add |
|
150 | - // the 'common_acts' sentences to the option that remains. |
|
151 | - switch ($dtypes) { |
|
147 | + $dtypes = variable_get('boincuser_delete_type', 'user_decides'); |
|
148 | + // Unset the other option if dtype is set. i.e., if dtype is set |
|
149 | + // to soft delete, unset the hard delete option. Likewise, add |
|
150 | + // the 'common_acts' sentences to the option that remains. |
|
151 | + switch ($dtypes) { |
|
152 | 152 | case 'soft_obfuscate': |
153 | 153 | unset($deleteoptions['boincuser_delete_delete']); |
154 | - $deleteoptions['boincuser_delete_softdelete'] .= $common_acts; |
|
155 | - break; |
|
154 | + $deleteoptions['boincuser_delete_softdelete'] .= $common_acts; |
|
155 | + break; |
|
156 | 156 | case 'hard_wipe': |
157 | 157 | unset($deleteoptions['boincuser_delete_softdelete']); |
158 | - $deleteoptions['boincuser_delete_delete'] .= $common_acts; |
|
159 | - break; |
|
160 | - } |
|
158 | + $deleteoptions['boincuser_delete_delete'] .= $common_acts; |
|
159 | + break; |
|
160 | + } |
|
161 | 161 | |
162 | - $question = 'Are you sure you want to delete the account <em>' . htmlspecialchars($form['_account']['#value']->boincuser_name) . '</em>?'; |
|
163 | - drupal_set_title($question); |
|
162 | + $question = 'Are you sure you want to delete the account <em>' . htmlspecialchars($form['_account']['#value']->boincuser_name) . '</em>?'; |
|
163 | + drupal_set_title($question); |
|
164 | 164 | |
165 | - unset($form['description']); |
|
165 | + unset($form['description']); |
|
166 | 166 | |
167 | - $form['main'] = array( |
|
167 | + $form['main'] = array( |
|
168 | 168 | '#type' => 'fieldset', |
169 | 169 | '#weight' => 1, |
170 | - ); |
|
170 | + ); |
|
171 | 171 | |
172 | - $form['main']['fs1'] = array( |
|
172 | + $form['main']['fs1'] = array( |
|
173 | 173 | '#type' => 'fieldset', |
174 | 174 | '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'), |
175 | 175 | '#weight' => 10, |
176 | 176 | '#collapsible' => TRUE, |
177 | 177 | '#collapsed' => TRUE, |
178 | - ); |
|
179 | - $form['main']['fs1']['help'] = array( |
|
178 | + ); |
|
179 | + $form['main']['fs1']['help'] = array( |
|
180 | 180 | '#value' => bts( |
181 | - "<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>" . |
|
182 | - "<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>", |
|
183 | - array( |
|
181 | + "<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>" . |
|
182 | + "<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>", |
|
183 | + array( |
|
184 | 184 | '!link' => l(bts('change your email address', array(), NULL, 'boinc:delete-user-account'), '/account/info/edit'), |
185 | - ), NULL, 'boinc:delete-user-account'), |
|
185 | + ), NULL, 'boinc:delete-user-account'), |
|
186 | 186 | '#weight' => 11, |
187 | 187 | '#prefix' => "<div id='delete-instructions'>", |
188 | 188 | '#suffix' => "</div>", |
189 | - ); |
|
189 | + ); |
|
190 | 190 | |
191 | - if ($dtypes == 'user_decides') { |
|
191 | + if ($dtypes == 'user_decides') { |
|
192 | 192 | $form['main']['common'] = array( |
193 | - '#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'), |
|
194 | - '#prefix' => "<div id='delete-instructions'>", |
|
195 | - '#suffix' => "</div>", |
|
196 | - '#weight' => 20, |
|
193 | + '#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'), |
|
194 | + '#prefix' => "<div id='delete-instructions'>", |
|
195 | + '#suffix' => "</div>", |
|
196 | + '#weight' => 20, |
|
197 | 197 | ); |
198 | - } |
|
198 | + } |
|
199 | 199 | |
200 | - $form['main']['user_delete_action'] = array( |
|
200 | + $form['main']['user_delete_action'] = array( |
|
201 | 201 | '#type' => 'radios', |
202 | 202 | '#options' => $deleteoptions, |
203 | 203 | '#weight' => 21, |
204 | - ); |
|
205 | - if ($disable_delete) { |
|
204 | + ); |
|
205 | + if ($disable_delete) { |
|
206 | 206 | $form['main']['user_delete_action']['#disabled'] = TRUE; |
207 | - } |
|
207 | + } |
|
208 | 208 | |
209 | - // Password field |
|
210 | - if (!$disable_delete) { |
|
209 | + // Password field |
|
210 | + if (!$disable_delete) { |
|
211 | 211 | $form['main']['current_pass'] = array( |
212 | - '#type' => 'password', |
|
213 | - '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'), |
|
214 | - '#size' => 17, |
|
215 | - '#attributes' => array( |
|
212 | + '#type' => 'password', |
|
213 | + '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'), |
|
214 | + '#size' => 17, |
|
215 | + '#attributes' => array( |
|
216 | 216 | 'autocomplete' => 'off', |
217 | - ), |
|
218 | - '#prefix' => "<div id='delete-password-field'>", |
|
219 | - '#suffix' => "</div>", |
|
220 | - '#weight' => 25, |
|
217 | + ), |
|
218 | + '#prefix' => "<div id='delete-password-field'>", |
|
219 | + '#suffix' => "</div>", |
|
220 | + '#weight' => 25, |
|
221 | 221 | ); |
222 | - } |
|
222 | + } |
|
223 | 223 | |
224 | - $form['separator_bottom'] = array( |
|
224 | + $form['separator_bottom'] = array( |
|
225 | 225 | '#value' => '<div class="separator buttons"></div>', |
226 | 226 | '#weight' => 999, |
227 | - ); |
|
227 | + ); |
|
228 | 228 | |
229 | - // Configure the action buttons |
|
230 | - $uid = $form['_account']['#value']->uid; |
|
231 | - $form['actions']['#weight'] = 1000; |
|
232 | - $form['actions']['form control tabs prefix'] = array( |
|
229 | + // Configure the action buttons |
|
230 | + $uid = $form['_account']['#value']->uid; |
|
231 | + $form['actions']['#weight'] = 1000; |
|
232 | + $form['actions']['form control tabs prefix'] = array( |
|
233 | 233 | '#value' => '<ul class="form-control tab-list">', |
234 | 234 | '#weight' => 1001, |
235 | - ); |
|
236 | - |
|
237 | - unset($form['actions']['#prefix']); |
|
238 | - unset($form['actions']['#suffix']); |
|
239 | - $form['actions']['submit']['#prefix'] = '<li class="first tab">'; |
|
240 | - $form['actions']['submit']['#suffix'] = '</li>'; |
|
241 | - $form['actions']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
242 | - $form['actions']['submit']['#weight'] = 1002; |
|
243 | - if ($disable_delete) { |
|
235 | + ); |
|
236 | + |
|
237 | + unset($form['actions']['#prefix']); |
|
238 | + unset($form['actions']['#suffix']); |
|
239 | + $form['actions']['submit']['#prefix'] = '<li class="first tab">'; |
|
240 | + $form['actions']['submit']['#suffix'] = '</li>'; |
|
241 | + $form['actions']['submit']['#value'] = bts('Submit', array(), NULL, 'boinc:form-submit'); |
|
242 | + $form['actions']['submit']['#weight'] = 1002; |
|
243 | + if ($disable_delete) { |
|
244 | 244 | $form['actions']['submit']['#disabled'] = TRUE; |
245 | 245 | $form['actions']['submit']['#value'] = ''; |
246 | - } |
|
246 | + } |
|
247 | 247 | |
248 | - $form['actions']['cancel']['#prefix'] = '<li class="tab">'; |
|
249 | - $form['actions']['cancel']['#suffix'] = '</li>'; |
|
250 | - $form['actions']['cancel']['#weight'] = 1003; |
|
251 | - $form['actions']['cancel']['#value'] = l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'account/info/edit'); |
|
252 | - if ($disable_delete) { |
|
248 | + $form['actions']['cancel']['#prefix'] = '<li class="tab">'; |
|
249 | + $form['actions']['cancel']['#suffix'] = '</li>'; |
|
250 | + $form['actions']['cancel']['#weight'] = 1003; |
|
251 | + $form['actions']['cancel']['#value'] = l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), 'account/info/edit'); |
|
252 | + if ($disable_delete) { |
|
253 | 253 | $form['actions']['cancel']['#prefix'] = '<li class="first tab">'; |
254 | - } |
|
254 | + } |
|
255 | 255 | |
256 | - $form['actions']['form control tabs suffix'] = array( |
|
256 | + $form['actions']['form control tabs suffix'] = array( |
|
257 | 257 | '#value' => '</ul>', |
258 | 258 | '#weight' => 1010, |
259 | - ); |
|
259 | + ); |
|
260 | 260 | |
261 | - $form['#redirect'] = 'account/' . $uid; |
|
262 | - $form['#validate'] = array('boincuser_delete_validate'); |
|
263 | - $form['#submit'] = array('boincuser_delete_submit'); |
|
264 | - break; |
|
261 | + $form['#redirect'] = 'account/' . $uid; |
|
262 | + $form['#validate'] = array('boincuser_delete_validate'); |
|
263 | + $form['#submit'] = array('boincuser_delete_submit'); |
|
264 | + break; |
|
265 | 265 | |
266 | - } // switch |
|
266 | + } // switch |
|
267 | 267 | } |
268 | 268 | |
269 | 269 | |
@@ -274,29 +274,29 @@ discard block |
||
274 | 274 | * password. |
275 | 275 | */ |
276 | 276 | function boincuser_delete_validate($form, &$form_state) { |
277 | - require_boinc('boinc_db'); |
|
277 | + require_boinc('boinc_db'); |
|
278 | 278 | |
279 | - if ($form_state['values']['user_delete_action'] == '') { |
|
279 | + if ($form_state['values']['user_delete_action'] == '') { |
|
280 | 280 | form_set_error('user_delete_action', bts('Please select an action to perform using the radio buttons.', array(), NULL, 'boinc:delete-user-account')); |
281 | - } |
|
281 | + } |
|
282 | 282 | |
283 | - // check BOINC user exists |
|
284 | - $account = $form_state['values']['_account']; |
|
285 | - $boinc_user = boincuser_load($account->uid, TRUE); |
|
286 | - if (!$boinc_user) { |
|
283 | + // check BOINC user exists |
|
284 | + $account = $form_state['values']['_account']; |
|
285 | + $boinc_user = boincuser_load($account->uid, TRUE); |
|
286 | + if (!$boinc_user) { |
|
287 | 287 | rules_invoke_event('boincuser_delete_general_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
288 | 288 | return form_set_error('current_pass', |
289 | - bts('There was a problem deleting your account. The @project administrators have been contacted.', |
|
290 | - array( |
|
289 | + bts('There was a problem deleting your account. The @project administrators have been contacted.', |
|
290 | + array( |
|
291 | 291 | '@project' => variable_get('site_name', 'Drupal-BOINC'), |
292 | - ) |
|
293 | - , NULL, 'boinc:delete-user-account') |
|
292 | + ) |
|
293 | + , NULL, 'boinc:delete-user-account') |
|
294 | 294 | ); |
295 | - } |
|
295 | + } |
|
296 | 296 | |
297 | - if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) { |
|
297 | + if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) { |
|
298 | 298 | return true; |
299 | - } |
|
299 | + } |
|
300 | 300 | } |
301 | 301 | |
302 | 302 | /** |
@@ -307,46 +307,46 @@ discard block |
||
307 | 307 | * to delete the account. |
308 | 308 | */ |
309 | 309 | function boincuser_delete_submit($form, &$form_state) { |
310 | - require_boinc('token'); |
|
311 | - global $user; |
|
310 | + require_boinc('token'); |
|
311 | + global $user; |
|
312 | 312 | |
313 | - $uid = $form_state['values']['_account']->uid; |
|
314 | - $account = user_load(array('uid' => $uid)); |
|
313 | + $uid = $form_state['values']['_account']->uid; |
|
314 | + $account = user_load(array('uid' => $uid)); |
|
315 | 315 | |
316 | - if (!$account) { |
|
316 | + if (!$account) { |
|
317 | 317 | rules_invoke_event('boincuser_delete_uid_invalid_error', variable_get('boinc_admin_mailing_list_subject_tag', '')); |
318 | 318 | drupal_set_message( |
319 | - bts('ERROR: The user account @uid does not exist. The @project administrators have been notified.', |
|
319 | + bts('ERROR: The user account @uid does not exist. The @project administrators have been notified.', |
|
320 | 320 | array( |
321 | - '@uid' => $uid, |
|
322 | - '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
321 | + '@uid' => $uid, |
|
322 | + '@project' => variable_get('site_name', 'Drupal-BOINC'), |
|
323 | 323 | ), NULL, 'delete-user-account'), |
324 | - 'error'); |
|
324 | + 'error'); |
|
325 | 325 | watchdog('user', 'Attempted to cancel non-existing user account UID: %uid.', array('%uid' => $uid), WATCHDOG_ERROR); |
326 | 326 | return; |
327 | - } |
|
328 | - |
|
329 | - global $base_url; |
|
330 | - global $base_path; |
|
331 | - module_load_include('inc', 'rules', 'modules/system.rules'); |
|
332 | - $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
333 | - $site_url = $base_url . $base_path . "user/login"; |
|
334 | - |
|
335 | - // Perform the requested operation |
|
336 | - $op = $form_state['values']['user_delete_action']; |
|
337 | - // create token with 1 day/24 hour expiration |
|
338 | - $mytoken = create_token($account->boincuser_id, 'D', 24*60*60); |
|
339 | - switch ($op) { |
|
327 | + } |
|
328 | + |
|
329 | + global $base_url; |
|
330 | + global $base_path; |
|
331 | + module_load_include('inc', 'rules', 'modules/system.rules'); |
|
332 | + $site_name = variable_get('site_name', 'Drupal-BOINC'); |
|
333 | + $site_url = $base_url . $base_path . "user/login"; |
|
334 | + |
|
335 | + // Perform the requested operation |
|
336 | + $op = $form_state['values']['user_delete_action']; |
|
337 | + // create token with 1 day/24 hour expiration |
|
338 | + $mytoken = create_token($account->boincuser_id, 'D', 24*60*60); |
|
339 | + switch ($op) { |
|
340 | 340 | case 'boincuser_delete_softdelete': |
341 | 341 | $myurl = "${base_url}/user/{$account->uid}/odeleteconfirm/$mytoken"; |
342 | - break; |
|
342 | + break; |
|
343 | 343 | case 'boincuser_delete_delete': |
344 | 344 | $myurl = "${base_url}/user/{$account->uid}/deleteconfirm/$mytoken"; |
345 | - break; |
|
346 | - } |
|
345 | + break; |
|
346 | + } |
|
347 | 347 | |
348 | - $mysubject = "Instructions for account deletion at {$site_name}"; |
|
349 | - $mymessage = '' |
|
348 | + $mysubject = "Instructions for account deletion at {$site_name}"; |
|
349 | + $mymessage = '' |
|
350 | 350 | . "{$account->boincuser_name},\n" |
351 | 351 | . "\n" |
352 | 352 | . "We have received a request to DELETE your user account at " |
@@ -368,25 +368,25 @@ discard block |
||
368 | 368 | . "\n" |
369 | 369 | . "{$site_name} support team"; |
370 | 370 | |
371 | - // Create array for sending email to user to notify account is being |
|
372 | - // disabled/deleted. Then send email. |
|
373 | - $settings = array( |
|
371 | + // Create array for sending email to user to notify account is being |
|
372 | + // disabled/deleted. Then send email. |
|
373 | + $settings = array( |
|
374 | 374 | 'from' => '', |
375 | 375 | 'subject' => $mysubject, |
376 | 376 | 'message' => $mymessage, |
377 | - ); |
|
378 | - rules_action_mail_to_user($account, $settings); |
|
377 | + ); |
|
378 | + rules_action_mail_to_user($account, $settings); |
|
379 | 379 | |
380 | - drupal_set_message(bts("INFO: You have requested account deletion. Please check your email for further instructions.", array(), NULL, 'boinc:delete-user-account'),'info'); |
|
380 | + drupal_set_message(bts("INFO: You have requested account deletion. Please check your email for further instructions.", array(), NULL, 'boinc:delete-user-account'),'info'); |
|
381 | 381 | |
382 | - $redirect = variable_get('boincuser_delete_redirect', '<front>'); |
|
383 | - // Redirect |
|
384 | - if (!empty($redirect)) { |
|
382 | + $redirect = variable_get('boincuser_delete_redirect', '<front>'); |
|
383 | + // Redirect |
|
384 | + if (!empty($redirect)) { |
|
385 | 385 | drupal_goto($redirect); |
386 | - } |
|
387 | - else { |
|
386 | + } |
|
387 | + else { |
|
388 | 388 | drupal_goto(); |
389 | - } |
|
389 | + } |
|
390 | 390 | } |
391 | 391 | |
392 | 392 | |
@@ -398,88 +398,88 @@ discard block |
||
398 | 398 | * The final confirmation form for the user to delete their account. |
399 | 399 | */ |
400 | 400 | function boincuser_delete_finalconfirmation(&$form_state, $token) { |
401 | - require_boinc('token'); |
|
401 | + require_boinc('token'); |
|
402 | 402 | |
403 | - global $user; |
|
404 | - $form = array(); |
|
403 | + global $user; |
|
404 | + $form = array(); |
|
405 | 405 | |
406 | - // check BOINC user exists |
|
407 | - $account = user_load(array('uid' => $user->uid)); |
|
408 | - $uid = $user->uid; |
|
409 | - $boincid = $account->boincuser_id; |
|
410 | - // check $token is valid |
|
411 | - if (!is_valid_token($boincid, $token, 'D')) { |
|
406 | + // check BOINC user exists |
|
407 | + $account = user_load(array('uid' => $user->uid)); |
|
408 | + $uid = $user->uid; |
|
409 | + $boincid = $account->boincuser_id; |
|
410 | + // check $token is valid |
|
411 | + if (!is_valid_token($boincid, $token, 'D')) { |
|
412 | 412 | 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.', |
413 | 413 | array( |
414 | - '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"), |
|
414 | + '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"), |
|
415 | 415 | ), |
416 | 416 | NULL, 'boinc:delete-user-account'), 'error'); |
417 | 417 | drupal_goto(); |
418 | - } |
|
418 | + } |
|
419 | 419 | |
420 | - // Attach account to this form. |
|
421 | - $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
420 | + // Attach account to this form. |
|
421 | + $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
422 | 422 | |
423 | - // This form is for hard/wipe delete |
|
424 | - $form['_action'] = array('#type' => 'value', '#value' => 'hard_wipe'); |
|
423 | + // This form is for hard/wipe delete |
|
424 | + $form['_action'] = array('#type' => 'value', '#value' => 'hard_wipe'); |
|
425 | 425 | |
426 | - // Instructions |
|
427 | - $form['main']['fs1'] = array( |
|
426 | + // Instructions |
|
427 | + $form['main']['fs1'] = array( |
|
428 | 428 | '#type' => 'fieldset', |
429 | 429 | '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'), |
430 | 430 | '#weight' => 10, |
431 | 431 | '#collapsible' => TRUE, |
432 | 432 | '#collapsed' => TRUE, |
433 | - ); |
|
434 | - $form['main']['fs1']['instructions1'] = array( |
|
433 | + ); |
|
434 | + $form['main']['fs1']['instructions1'] = array( |
|
435 | 435 | '#value' => '<p>'. |
436 | 436 | 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'). |
437 | 437 | '</p>', |
438 | 438 | '#prefix' => "<div id='delete-instructions'>", |
439 | 439 | '#suffix' => "</div>", |
440 | - ); |
|
440 | + ); |
|
441 | 441 | |
442 | - $form['main']['fs1']['instructions2'] = array( |
|
442 | + $form['main']['fs1']['instructions2'] = array( |
|
443 | 443 | '#value' => '<p>'. |
444 | 444 | bts('If you wish to cancel, click cancel and you will be taken to your account dashboard.', array(), NULL, 'boinc:delete-user-account'). |
445 | 445 | '</p>', |
446 | 446 | '#prefix' => "<div id='delete-instructions'>", |
447 | 447 | '#suffix' => "</div>", |
448 | - ); |
|
448 | + ); |
|
449 | 449 | |
450 | - // Password field |
|
451 | - $form['main']['current_pass'] = array( |
|
450 | + // Password field |
|
451 | + $form['main']['current_pass'] = array( |
|
452 | 452 | '#type' => 'password', |
453 | 453 | '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'), |
454 | 454 | '#size' => 17, |
455 | 455 | '#attributes' => array( |
456 | - 'autocomplete' => 'off', |
|
456 | + 'autocomplete' => 'off', |
|
457 | 457 | ), |
458 | 458 | '#weight' => 25, |
459 | - ); |
|
459 | + ); |
|
460 | 460 | |
461 | - // Form control |
|
462 | - $form['form control tabs prefix'] = array( |
|
461 | + // Form control |
|
462 | + $form['form control tabs prefix'] = array( |
|
463 | 463 | '#value' => '<ul class="form-control tab-list">', |
464 | 464 | '#weight' => 1001, |
465 | - ); |
|
466 | - $form['submit'] = array( |
|
465 | + ); |
|
466 | + $form['submit'] = array( |
|
467 | 467 | '#prefix' => '<li class="first tab">', |
468 | 468 | '#type' => 'submit', |
469 | 469 | '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
470 | 470 | '#suffix' => '</li>', |
471 | 471 | '#weight' => 1002, |
472 | - ); |
|
473 | - $form['form control tabs'] = array( |
|
472 | + ); |
|
473 | + $form['form control tabs'] = array( |
|
474 | 474 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/") . '</li>', |
475 | 475 | '#weight' => 1003, |
476 | - ); |
|
477 | - $form['form control tabs suffix'] = array( |
|
476 | + ); |
|
477 | + $form['form control tabs suffix'] = array( |
|
478 | 478 | '#value' => '</ul>', |
479 | 479 | '#weight' => 1004, |
480 | - ); |
|
480 | + ); |
|
481 | 481 | |
482 | - return $form; |
|
482 | + return $form; |
|
483 | 483 | } |
484 | 484 | |
485 | 485 | /** |
@@ -487,133 +487,133 @@ discard block |
||
487 | 487 | * the soft/obfuscate method. |
488 | 488 | */ |
489 | 489 | function boincuser_delete_softdelconfirmation(&$form_state, $token) { |
490 | - require_boinc('token'); |
|
490 | + require_boinc('token'); |
|
491 | 491 | |
492 | - global $user; |
|
493 | - $form = array(); |
|
492 | + global $user; |
|
493 | + $form = array(); |
|
494 | 494 | |
495 | - // check BOINC user exists |
|
496 | - $account = user_load(array('uid' => $user->uid)); |
|
497 | - $uid = $user->uid; |
|
498 | - $boincid = $account->boincuser_id; |
|
495 | + // check BOINC user exists |
|
496 | + $account = user_load(array('uid' => $user->uid)); |
|
497 | + $uid = $user->uid; |
|
498 | + $boincid = $account->boincuser_id; |
|
499 | 499 | |
500 | - // check $token is valid |
|
501 | - if (!is_valid_token($boincid, $token, 'D')) { |
|
500 | + // check $token is valid |
|
501 | + if (!is_valid_token($boincid, $token, 'D')) { |
|
502 | 502 | 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.', |
503 | 503 | array( |
504 | - '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"), |
|
504 | + '!link' => l(bts('re-requesting', array(), NULL, 'boinc:delete-user-account'), "/user/${uid}/delete"), |
|
505 | 505 | ), |
506 | 506 | NULL, 'boinc:delete-user-account'), 'error'); |
507 | 507 | drupal_goto(); |
508 | - } |
|
508 | + } |
|
509 | 509 | |
510 | - // Attach account to this form. |
|
511 | - $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
510 | + // Attach account to this form. |
|
511 | + $form['_account'] = array('#type' => 'value', '#value' => $account); |
|
512 | 512 | |
513 | - // This form is for hard/wipe delete |
|
514 | - $form['_action'] = array('#type' => 'value', '#value' => 'soft_obfuscate'); |
|
513 | + // This form is for hard/wipe delete |
|
514 | + $form['_action'] = array('#type' => 'value', '#value' => 'soft_obfuscate'); |
|
515 | 515 | |
516 | - // Instructions |
|
517 | - $form['main']['fs1'] = array( |
|
516 | + // Instructions |
|
517 | + $form['main']['fs1'] = array( |
|
518 | 518 | '#type' => 'fieldset', |
519 | 519 | '#title' => bts('Instructions', array(), NULL, 'boinc:delete-user-account'), |
520 | 520 | '#weight' => 10, |
521 | 521 | '#collapsible' => TRUE, |
522 | 522 | '#collapsed' => TRUE, |
523 | - ); |
|
524 | - $form['main']['fs1']['instructions1'] = array( |
|
523 | + ); |
|
524 | + $form['main']['fs1']['instructions1'] = array( |
|
525 | 525 | '#value' => '<p>'. |
526 | 526 | 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'). |
527 | 527 | '</p>', |
528 | 528 | '#prefix' => "<div id='delete-instructions'>", |
529 | 529 | '#suffix' => "</div>", |
530 | - ); |
|
530 | + ); |
|
531 | 531 | |
532 | - $form['main']['fs1']['instructions2'] = array( |
|
532 | + $form['main']['fs1']['instructions2'] = array( |
|
533 | 533 | '#value' => '<p>'. |
534 | 534 | bts('If you wish to cancel, click cancel and you will be taken to your account dashboard.', array(), NULL, 'boinc:delete-user-account'). |
535 | 535 | '</p>', |
536 | 536 | '#prefix' => "<div id='delete-instructions'>", |
537 | 537 | '#suffix' => "</div>", |
538 | - ); |
|
538 | + ); |
|
539 | 539 | |
540 | - // Password field |
|
541 | - $form['main']['current_pass'] = array( |
|
540 | + // Password field |
|
541 | + $form['main']['current_pass'] = array( |
|
542 | 542 | '#type' => 'password', |
543 | 543 | '#title' => bts('Enter your password to delete your account', array(), NULL, 'boinc:delete-user-account'), |
544 | 544 | '#size' => 17, |
545 | 545 | '#attributes' => array( |
546 | - 'autocomplete' => 'off', |
|
546 | + 'autocomplete' => 'off', |
|
547 | 547 | ), |
548 | 548 | '#weight' => 25, |
549 | - ); |
|
549 | + ); |
|
550 | 550 | |
551 | - // Form control |
|
552 | - $form['form control tabs prefix'] = array( |
|
551 | + // Form control |
|
552 | + $form['form control tabs prefix'] = array( |
|
553 | 553 | '#value' => '<ul class="form-control tab-list">', |
554 | 554 | '#weight' => 1001, |
555 | - ); |
|
556 | - $form['submit'] = array( |
|
555 | + ); |
|
556 | + $form['submit'] = array( |
|
557 | 557 | '#prefix' => '<li class="first tab">', |
558 | 558 | '#type' => 'submit', |
559 | 559 | '#value' => bts('Submit', array(), NULL, 'boinc:form-submit'), |
560 | 560 | '#suffix' => '</li>', |
561 | 561 | '#weight' => 1002, |
562 | - ); |
|
563 | - $form['form control tabs'] = array( |
|
562 | + ); |
|
563 | + $form['form control tabs'] = array( |
|
564 | 564 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "account/") . '</li>', |
565 | 565 | '#weight' => 1003, |
566 | - ); |
|
567 | - $form['form control tabs suffix'] = array( |
|
566 | + ); |
|
567 | + $form['form control tabs suffix'] = array( |
|
568 | 568 | '#value' => '</ul>', |
569 | 569 | '#weight' => 1004, |
570 | - ); |
|
570 | + ); |
|
571 | 571 | |
572 | - //set validation and submit to the functions below |
|
573 | - $form['#validate'][] = 'boincuser_delete_finalconfirmation_validate'; |
|
574 | - $form['#submit'][] = 'boincuser_delete_finalconfirmation_submit'; |
|
575 | - return $form; |
|
572 | + //set validation and submit to the functions below |
|
573 | + $form['#validate'][] = 'boincuser_delete_finalconfirmation_validate'; |
|
574 | + $form['#submit'][] = 'boincuser_delete_finalconfirmation_submit'; |
|
575 | + return $form; |
|
576 | 576 | } |
577 | 577 | |
578 | 578 | /** |
579 | 579 | * Validation for final confirmation |
580 | 580 | */ |
581 | 581 | function boincuser_delete_finalconfirmation_validate($form, &$form_state) { |
582 | - $account = $form_state['values']['_account']; |
|
583 | - $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
582 | + $account = $form_state['values']['_account']; |
|
583 | + $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
584 | 584 | |
585 | - if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) { |
|
585 | + if (_boincuser_delete_validatepasswd($boinc_user, $form_state['values']['current_pass'])) { |
|
586 | 586 | return true; |
587 | - } |
|
587 | + } |
|
588 | 588 | } |
589 | 589 | |
590 | 590 | /** |
591 | 591 | * Submit for final confirmation |
592 | 592 | */ |
593 | 593 | function boincuser_delete_finalconfirmation_submit($form, &$form_state) { |
594 | - global $user; |
|
594 | + global $user; |
|
595 | 595 | |
596 | - // Delete the user |
|
597 | - $account = $form_state['values']['_account']; |
|
598 | - $action = $form_state['values']['_action']; |
|
599 | - _boincuser_delete_deleteuser($account, $action); |
|
596 | + // Delete the user |
|
597 | + $account = $form_state['values']['_account']; |
|
598 | + $action = $form_state['values']['_action']; |
|
599 | + _boincuser_delete_deleteuser($account, $action); |
|
600 | 600 | |
601 | - // Destroy the current session: |
|
602 | - session_destroy(); |
|
603 | - // Only variables can be passed by reference workaround. |
|
604 | - $null = NULL; |
|
605 | - user_module_invoke('logout', $null, $user); |
|
601 | + // Destroy the current session: |
|
602 | + session_destroy(); |
|
603 | + // Only variables can be passed by reference workaround. |
|
604 | + $null = NULL; |
|
605 | + user_module_invoke('logout', $null, $user); |
|
606 | 606 | |
607 | - // Load the anonymous user |
|
608 | - $user = drupal_anonymous_user(); |
|
607 | + // Load the anonymous user |
|
608 | + $user = drupal_anonymous_user(); |
|
609 | 609 | |
610 | - $redirect = variable_get('boincuser_delete_redirect', '<front>'); |
|
611 | - // Redirect |
|
612 | - if (!empty($redirect)) { |
|
610 | + $redirect = variable_get('boincuser_delete_redirect', '<front>'); |
|
611 | + // Redirect |
|
612 | + if (!empty($redirect)) { |
|
613 | 613 | drupal_goto($redirect); |
614 | - } |
|
615 | - else { |
|
614 | + } |
|
615 | + else { |
|
616 | 616 | drupal_goto(); |
617 | - } |
|
617 | + } |
|
618 | 618 | |
619 | 619 | } |
@@ -16,18 +16,18 @@ |
||
16 | 16 | */ |
17 | 17 | |
18 | 18 | function boincuser_delete_rules_event_info() { |
19 | - return array( |
|
19 | + return array( |
|
20 | 20 | 'boincuser_delete_general_error' => array( |
21 | - 'label' => bts('Error from user deleting own account.', array(), NULL, 'boinc:rule-event'), |
|
22 | - 'module' => 'Boincuser_Delete', |
|
23 | - 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
21 | + 'label' => bts('Error from user deleting own account.', array(), NULL, 'boinc:rule-event'), |
|
22 | + 'module' => 'Boincuser_Delete', |
|
23 | + 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
24 | 24 | ), |
25 | 25 | 'boincuser_delete_uid_invalid_error' => array( |
26 | - 'label' => bts('Error from user deleting own account. User ID is invalid', array(), NULL, 'boinc:rule-event'), |
|
27 | - 'module' => 'Boincuser_Delete', |
|
28 | - 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
26 | + 'label' => bts('Error from user deleting own account. User ID is invalid', array(), NULL, 'boinc:rule-event'), |
|
27 | + 'module' => 'Boincuser_Delete', |
|
28 | + 'arguments' => rules_events_hook_boincuser_adminnotify_argument(), |
|
29 | 29 | ), |
30 | - ); |
|
30 | + ); |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | // function rules_events_hook_boincuser_adminnotify_argument is located in boincuser_rules.inc |
34 | 34 | \ No newline at end of file |
@@ -16,44 +16,44 @@ |
||
16 | 16 | */ |
17 | 17 | |
18 | 18 | function boincwork_rules_event_info() { |
19 | - return array( |
|
19 | + return array( |
|
20 | 20 | 'boincwork_circular_merge_error' => array( |
21 | - 'label' => bts('A circular merge of hosts was attempted with error.', array(), NULL, 'boinc:rule-event'), |
|
22 | - 'module' => 'BOINCwork', |
|
23 | - 'arguments' => rules_events_hook_boincwork_arguments(), |
|
21 | + 'label' => bts('A circular merge of hosts was attempted with error.', array(), NULL, 'boinc:rule-event'), |
|
22 | + 'module' => 'BOINCwork', |
|
23 | + 'arguments' => rules_events_hook_boincwork_arguments(), |
|
24 | 24 | ), |
25 | 25 | 'boincwork_zombie_merge_error' => array( |
26 | - 'label' => bts('A host merge into a zombie host was attempted with error.', array(), NULL, 'boinc:rule-event'), |
|
27 | - 'module' => 'BOINCwork', |
|
28 | - 'arguments' => rules_events_hook_boincwork_arguments(), |
|
26 | + 'label' => bts('A host merge into a zombie host was attempted with error.', array(), NULL, 'boinc:rule-event'), |
|
27 | + 'module' => 'BOINCwork', |
|
28 | + 'arguments' => rules_events_hook_boincwork_arguments(), |
|
29 | 29 | ), |
30 | - ); |
|
30 | + ); |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | /** |
34 | 34 | * Arguments suitable for boincwork |
35 | 35 | **/ |
36 | 36 | function rules_events_hook_boincwork_arguments() { |
37 | - return array( |
|
37 | + return array( |
|
38 | 38 | 'oldhost_id' => array( |
39 | - 'type' => 'number', |
|
40 | - 'label' => 'old host id', |
|
41 | - 'required' => TRUE, |
|
39 | + 'type' => 'number', |
|
40 | + 'label' => 'old host id', |
|
41 | + 'required' => TRUE, |
|
42 | 42 | ), |
43 | 43 | 'targethost_id' => array( |
44 | - 'type' => 'number', |
|
45 | - 'label' => 'target host id', |
|
46 | - 'required' => TRUE, |
|
44 | + 'type' => 'number', |
|
45 | + 'label' => 'target host id', |
|
46 | + 'required' => TRUE, |
|
47 | 47 | ), |
48 | - ) + rules_events_hook_boincwork_adminnotify_argument(); |
|
48 | + ) + rules_events_hook_boincwork_adminnotify_argument(); |
|
49 | 49 | } |
50 | 50 | |
51 | 51 | function rules_events_hook_boincwork_adminnotify_argument() { |
52 | - return array( |
|
52 | + return array( |
|
53 | 53 | 'subject_tag' => array( |
54 | - 'type' => 'string', |
|
55 | - 'label' => 'Subject tag for email filtering', |
|
56 | - 'required' => TRUE, |
|
54 | + 'type' => 'string', |
|
55 | + 'label' => 'Subject tag for email filtering', |
|
56 | + 'required' => TRUE, |
|
57 | 57 | ), |
58 | - ) + rules_events_global_user_argument(); |
|
58 | + ) + rules_events_global_user_argument(); |
|
59 | 59 | } |
60 | 60 | \ No newline at end of file |
@@ -15,16 +15,16 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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 |
||
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,116 +691,116 @@ discard block |
||
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); |
|
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 | 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]) |
|
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 | 769 | |
770 | - $total_credit = $old_host->total_credit + $new_host->total_credit; |
|
771 | - $recent_credit = $old_host->expavg_credit + $new_host->expavg_credit; |
|
770 | + $total_credit = $old_host->total_credit + $new_host->total_credit; |
|
771 | + $recent_credit = $old_host->expavg_credit + $new_host->expavg_credit; |
|
772 | 772 | |
773 | - if ($new_host->rpc_seqno == $old_host->id) { |
|
773 | + if ($new_host->rpc_seqno == $old_host->id) { |
|
774 | 774 | rules_invoke_event('boincwork_circular_merge_error', $old_host->id, $new_host->id, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
775 | 775 | watchdog('boincwork', |
776 | - 'Circular merge attempted, target host rpc_seqno is equal to old host\'s id: old host id=%old_host, target host id=%new_host', |
|
777 | - array( |
|
776 | + 'Circular merge attempted, target host rpc_seqno is equal to old host\'s id: old host id=%old_host, target host id=%new_host', |
|
777 | + array( |
|
778 | 778 | '%old_host' => $old_host->id, |
779 | 779 | '%new_host' => $new_host->id, |
780 | - ), |
|
781 | - WATCHDOG_WARNING |
|
780 | + ), |
|
781 | + WATCHDOG_WARNING |
|
782 | 782 | ); |
783 | 783 | $message = 'Could not merge due to a circular merge error. The site administrators have been contacted about this issue, and will investigate further.'; |
784 | 784 | return FALSE; |
785 | - } |
|
785 | + } |
|
786 | 786 | |
787 | - if ($new_host->userid==0) { |
|
787 | + if ($new_host->userid==0) { |
|
788 | 788 | rules_invoke_event('boincwork_zombie_merge_error', $old_host->id, $new_host->id, variable_get('boinc_admin_mailing_list_subject_tag', '')); |
789 | 789 | watchdog('boincwork', |
790 | - 'Zombie merge attempted, target host has userid=0: old host id=%old_host, target host id=%new_host', |
|
791 | - array( |
|
790 | + 'Zombie merge attempted, target host has userid=0: old host id=%old_host, target host id=%new_host', |
|
791 | + array( |
|
792 | 792 | '%old_host' => $old_host->id, |
793 | 793 | '%new_host' => $new_host->id, |
794 | - ), |
|
795 | - WATCHDOG_WARNING |
|
794 | + ), |
|
795 | + WATCHDOG_WARNING |
|
796 | 796 | ); |
797 | 797 | $message = 'Could not merge because the target host has userid=0. The site administrators have been contacted about this issue, and will investigate further.'; |
798 | 798 | return FALSE; |
799 | - } |
|
799 | + } |
|
800 | 800 | |
801 | - // Move credit from the old host to the new host |
|
802 | - db_set_active('boinc_rw'); |
|
803 | - $credit_updated = db_query(" |
|
801 | + // Move credit from the old host to the new host |
|
802 | + db_set_active('boinc_rw'); |
|
803 | + $credit_updated = db_query(" |
|
804 | 804 | UPDATE {host} |
805 | 805 | SET |
806 | 806 | total_credit = '%d', |
@@ -808,34 +808,34 @@ discard block |
||
808 | 808 | expavg_time = '%d' |
809 | 809 | WHERE id = '%d'", |
810 | 810 | $total_credit, $recent_credit, $now, $new_host->id |
811 | - ); |
|
812 | - db_set_active('default'); |
|
813 | - if (!$credit_updated) { |
|
811 | + ); |
|
812 | + db_set_active('default'); |
|
813 | + if (!$credit_updated) { |
|
814 | 814 | if ($message !== NULL) { |
815 | - $message = bts('Could not update credit', array(), NULL, 'boinc:account-host-merge'); |
|
815 | + $message = bts('Could not update credit', array(), NULL, 'boinc:account-host-merge'); |
|
816 | 816 | } |
817 | 817 | return FALSE; |
818 | - } |
|
818 | + } |
|
819 | 819 | |
820 | - // Move results from the old host to the new host |
|
821 | - db_set_active('boinc_rw'); |
|
822 | - $results_updated = db_query(" |
|
820 | + // Move results from the old host to the new host |
|
821 | + db_set_active('boinc_rw'); |
|
822 | + $results_updated = db_query(" |
|
823 | 823 | UPDATE {result} |
824 | 824 | SET hostid = '%d' |
825 | 825 | WHERE hostid = '%d'", |
826 | 826 | $new_host->id, $old_host->id |
827 | - ); |
|
828 | - db_set_active('default'); |
|
829 | - if (!$results_updated) { |
|
827 | + ); |
|
828 | + db_set_active('default'); |
|
829 | + if (!$results_updated) { |
|
830 | 830 | if ($message !== NULL) { |
831 | - $message = bts('Could not update results', array(), NULL, 'boinc:account-host-merge'); |
|
831 | + $message = bts('Could not update results', array(), NULL, 'boinc:account-host-merge'); |
|
832 | 832 | } |
833 | 833 | return FALSE; |
834 | - } |
|
834 | + } |
|
835 | 835 | |
836 | - // Retire the old host |
|
837 | - db_set_active('boinc_rw'); |
|
838 | - $old_host_retired = db_query(" |
|
836 | + // Retire the old host |
|
837 | + db_set_active('boinc_rw'); |
|
838 | + $old_host_retired = db_query(" |
|
839 | 839 | UPDATE {host} |
840 | 840 | SET |
841 | 841 | total_credit = '0', |
@@ -844,16 +844,16 @@ discard block |
||
844 | 844 | rpc_seqno = '%d' |
845 | 845 | WHERE id = '%d'", |
846 | 846 | $new_host->id, $old_host->id |
847 | - ); |
|
848 | - db_set_active('default'); |
|
849 | - if (!$old_host_retired) { |
|
847 | + ); |
|
848 | + db_set_active('default'); |
|
849 | + if (!$old_host_retired) { |
|
850 | 850 | if ($message !== NULL) { |
851 | - $message = bts('Could not retire old computer', array(), NULL, 'boinc:account-host-merge'); |
|
851 | + $message = bts('Could not retire old computer', array(), NULL, 'boinc:account-host-merge'); |
|
852 | 852 | } |
853 | 853 | return FALSE; |
854 | - } |
|
854 | + } |
|
855 | 855 | |
856 | - return TRUE; |
|
856 | + return TRUE; |
|
857 | 857 | } |
858 | 858 | |
859 | 859 | /** |
@@ -861,75 +861,75 @@ discard block |
||
861 | 861 | */ |
862 | 862 | function boincwork_host_merge_form(&$form_state, $host_id) { |
863 | 863 | |
864 | - if (!boincwork_host_user_is_owner($host_id)) { |
|
864 | + if (!boincwork_host_user_is_owner($host_id)) { |
|
865 | 865 | drupal_goto("host/{$host_id}"); |
866 | - } |
|
866 | + } |
|
867 | 867 | |
868 | - $form = array(); |
|
869 | - $form_state['storage']['current_host_id'] = $host_id; |
|
870 | - $current_host = boincwork_host_get_info($host_id); |
|
868 | + $form = array(); |
|
869 | + $form_state['storage']['current_host_id'] = $host_id; |
|
870 | + $current_host = boincwork_host_get_info($host_id); |
|
871 | 871 | |
872 | - // Get hosts that could be merged with this one |
|
873 | - $hosts = boincwork_host_get_compatible_hosts($host_id); |
|
872 | + // Get hosts that could be merged with this one |
|
873 | + $hosts = boincwork_host_get_compatible_hosts($host_id); |
|
874 | 874 | |
875 | - if (!$hosts) { |
|
875 | + if (!$hosts) { |
|
876 | 876 | drupal_set_message(t('There are no computers eligible for merging with this |
877 | 877 | one'), 'warning' |
878 | 878 | ); |
879 | 879 | drupal_goto("host/{$host_id}"); |
880 | - } |
|
880 | + } |
|
881 | 881 | |
882 | - $form['overview'] = array( |
|
882 | + $form['overview'] = array( |
|
883 | 883 | '#value' => '<p>' . bts('Sometimes BOINC assigns separate identities to' |
884 | - . ' the same computer by mistake. You can correct this by merging old' |
|
885 | - . ' identities with the newest one.', array(), NULL, 'boinc:account-host-merge') . '</p>' |
|
886 | - . '<p>' |
|
887 | - . bts('Check the computers that are the same as @name' |
|
888 | - . ' (created on @date at @time with computer ID @id)', |
|
884 | + . ' the same computer by mistake. You can correct this by merging old' |
|
885 | + . ' identities with the newest one.', array(), NULL, 'boinc:account-host-merge') . '</p>' |
|
886 | + . '<p>' |
|
887 | + . bts('Check the computers that are the same as @name' |
|
888 | + . ' (created on @date at @time with computer ID @id)', |
|
889 | 889 | array( |
890 | - '@name' => $current_host->domain_name, |
|
891 | - '@date' => date('j M Y', $current_host->create_time), |
|
892 | - '@time' => date('G:i:s T', $current_host->create_time), |
|
893 | - '@id' => $current_host->id, |
|
890 | + '@name' => $current_host->domain_name, |
|
891 | + '@date' => date('j M Y', $current_host->create_time), |
|
892 | + '@time' => date('G:i:s T', $current_host->create_time), |
|
893 | + '@id' => $current_host->id, |
|
894 | 894 | ), |
895 | 895 | NULL, 'boinc:account-host-merge') . '</p>', |
896 | - ); |
|
896 | + ); |
|
897 | 897 | |
898 | - $options = array(); |
|
899 | - foreach ($hosts as $host) { |
|
898 | + $options = array(); |
|
899 | + foreach ($hosts as $host) { |
|
900 | 900 | $options[$host->id] = array( |
901 | - $host->domain_name, |
|
902 | - date('j M Y G:i:s T', $host->create_time), |
|
903 | - $host->id, |
|
901 | + $host->domain_name, |
|
902 | + date('j M Y G:i:s T', $host->create_time), |
|
903 | + $host->id, |
|
904 | 904 | ); |
905 | - } |
|
905 | + } |
|
906 | 906 | |
907 | - $form['merge'] = array( |
|
907 | + $form['merge'] = array( |
|
908 | 908 | '#title' => '', |
909 | 909 | '#type' => 'tableselect', |
910 | 910 | '#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')), |
911 | 911 | '#options' => $options, |
912 | - ); |
|
912 | + ); |
|
913 | 913 | |
914 | - $form['prefs']['separator_bottom'] = array( |
|
915 | - // '#value' => '<div class="separator buttons"></div>' |
|
916 | - ); |
|
914 | + $form['prefs']['separator_bottom'] = array( |
|
915 | + // '#value' => '<div class="separator buttons"></div>' |
|
916 | + ); |
|
917 | 917 | |
918 | - // Form control |
|
919 | - $form['prefs']['form control tabs prefix'] = array( |
|
918 | + // Form control |
|
919 | + $form['prefs']['form control tabs prefix'] = array( |
|
920 | 920 | '#value' => '<ul class="form-control tab-list">' |
921 | - ); |
|
922 | - $form['prefs']['submit'] = array( |
|
921 | + ); |
|
922 | + $form['prefs']['submit'] = array( |
|
923 | 923 | '#prefix' => '<li class="first tab">', |
924 | 924 | '#type' => 'submit', |
925 | 925 | '#value' => bts('Merge', array(), NULL, 'boinc:form-merge'), |
926 | 926 | '#suffix' => '</li>' |
927 | - ); |
|
928 | - $form['prefs']['form control tabs'] = array( |
|
927 | + ); |
|
928 | + $form['prefs']['form control tabs'] = array( |
|
929 | 929 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), "host/{$host_id}") . '</li>' |
930 | - ); |
|
930 | + ); |
|
931 | 931 | |
932 | - return $form; |
|
932 | + return $form; |
|
933 | 933 | } |
934 | 934 | |
935 | 935 | /** |
@@ -942,76 +942,76 @@ discard block |
||
942 | 942 | * Handle submission of the merge host form |
943 | 943 | */ |
944 | 944 | function boincwork_host_merge_form_submit($form, &$form_state) { |
945 | - $merged = array(); |
|
946 | - $errors = array(); |
|
947 | - $current_host_id = $form_state['storage']['current_host_id']; |
|
948 | - $current_host = boincwork_host_get_info($current_host_id); |
|
949 | - $selected_hosts = array_filter($form_state['values']['merge']); |
|
945 | + $merged = array(); |
|
946 | + $errors = array(); |
|
947 | + $current_host_id = $form_state['storage']['current_host_id']; |
|
948 | + $current_host = boincwork_host_get_info($current_host_id); |
|
949 | + $selected_hosts = array_filter($form_state['values']['merge']); |
|
950 | 950 | |
951 | - foreach ($selected_hosts as $host_id) { |
|
951 | + foreach ($selected_hosts as $host_id) { |
|
952 | 952 | // Attempt to merge each host, noting the results |
953 | 953 | $message = ''; |
954 | 954 | $old_host = boincwork_host_get_info($host_id); |
955 | 955 | if (boincwork_host_merge($old_host, $current_host, $message)) { |
956 | - $merged[$old_host->id] = $old_host->id; |
|
957 | - $current_host = boincwork_host_get_info($current_host_id); |
|
956 | + $merged[$old_host->id] = $old_host->id; |
|
957 | + $current_host = boincwork_host_get_info($current_host_id); |
|
958 | 958 | } |
959 | 959 | else { |
960 | - $errors[$old_host->id] = $message; |
|
960 | + $errors[$old_host->id] = $message; |
|
961 | + } |
|
961 | 962 | } |
962 | - } |
|
963 | 963 | |
964 | - if ($merged) { |
|
964 | + if ($merged) { |
|
965 | 965 | // Generate a natural language list of IDs that were merged |
966 | 966 | $oxford_comma = ','; |
967 | 967 | $conjunction = bts('and', array(), NULL, 'boinc:account-preference'); |
968 | 968 | $list = array_keys($merged); |
969 | 969 | $last = array_pop($list); |
970 | 970 | if ($list) { |
971 | - if (count($merged) == 2) { |
|
971 | + if (count($merged) == 2) { |
|
972 | 972 | $oxford_comma = ''; |
973 | - } |
|
974 | - $list = implode(', ', $list) . $oxford_comma . ' ' . $conjunction . ' ' . $last; |
|
973 | + } |
|
974 | + $list = implode(', ', $list) . $oxford_comma . ' ' . $conjunction . ' ' . $last; |
|
975 | 975 | } |
976 | 976 | else { |
977 | - $list = $last; |
|
977 | + $list = $last; |
|
978 | 978 | } |
979 | 979 | if (count($merged) == 1) { |
980 | - drupal_set_message(bts( |
|
980 | + drupal_set_message(bts( |
|
981 | 981 | 'Computer @old_id has been merged successfully into @id.', |
982 | 982 | array( |
983 | - '@old_id' => $list, |
|
984 | - '@id' => $current_host_id |
|
983 | + '@old_id' => $list, |
|
984 | + '@id' => $current_host_id |
|
985 | 985 | ), |
986 | 986 | NULL, 'boinc:account-host-merge')); |
987 | 987 | } |
988 | 988 | else { |
989 | - drupal_set_message(bts( |
|
989 | + drupal_set_message(bts( |
|
990 | 990 | 'Computers @old_ids have been merged successfully into @id.', |
991 | 991 | array( |
992 | - '@old_ids' => $list, |
|
993 | - '@id' => $current_host_id |
|
992 | + '@old_ids' => $list, |
|
993 | + '@id' => $current_host_id |
|
994 | 994 | ), |
995 | 995 | NULL, 'boinc:account-host-merge')); |
996 | 996 | } |
997 | - } |
|
997 | + } |
|
998 | 998 | |
999 | - if ($errors) { |
|
999 | + if ($errors) { |
|
1000 | 1000 | // Report any hosts that failed to merge |
1001 | 1001 | foreach ($errors as $id => $error) { |
1002 | - drupal_set_message( |
|
1002 | + drupal_set_message( |
|
1003 | 1003 | bts('Computer @old_id failed to merge: @message', |
1004 | - array( |
|
1004 | + array( |
|
1005 | 1005 | '@old_id' => $id, |
1006 | 1006 | '@message' => $error, |
1007 | - ), |
|
1008 | - NULL, 'boinc:account-host-merge'), |
|
1007 | + ), |
|
1008 | + NULL, 'boinc:account-host-merge'), |
|
1009 | 1009 | 'warning' |
1010 | - ); |
|
1010 | + ); |
|
1011 | + } |
|
1011 | 1012 | } |
1012 | - } |
|
1013 | 1013 | |
1014 | - drupal_goto("host/{$current_host_id}"); |
|
1014 | + drupal_goto("host/{$current_host_id}"); |
|
1015 | 1015 | } |
1016 | 1016 | |
1017 | 1017 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -1023,44 +1023,44 @@ discard block |
||
1023 | 1023 | */ |
1024 | 1024 | function boincwork_projectprefs_form(&$form_state, $venue) { |
1025 | 1025 | |
1026 | - global $user; |
|
1027 | - $account = user_load($user->uid); |
|
1026 | + global $user; |
|
1027 | + $account = user_load($user->uid); |
|
1028 | 1028 | |
1029 | - $established = TRUE; |
|
1029 | + $established = TRUE; |
|
1030 | 1030 | |
1031 | - // Get availability of special BOINC preferences |
|
1032 | - require_boinc(array('util')); |
|
1033 | - $app_types = get_app_types(); |
|
1031 | + // Get availability of special BOINC preferences |
|
1032 | + require_boinc(array('util')); |
|
1033 | + $app_types = get_app_types(); |
|
1034 | 1034 | |
1035 | - // Load any existing preferences from BOINC account |
|
1036 | - $prefs = boincwork_load_prefs('project', $venue); |
|
1035 | + // Load any existing preferences from BOINC account |
|
1036 | + $prefs = boincwork_load_prefs('project', $venue); |
|
1037 | 1037 | |
1038 | - // Take note if this is not an established preference set on the account |
|
1039 | - if (isset($prefs['@attributes']['cleared'])) { |
|
1038 | + // Take note if this is not an established preference set on the account |
|
1039 | + if (isset($prefs['@attributes']['cleared'])) { |
|
1040 | 1040 | $established = FALSE; |
1041 | - } |
|
1041 | + } |
|
1042 | 1042 | |
1043 | - // Extract modified tag if present |
|
1044 | - $modified = NULL; |
|
1045 | - if (isset($prefs['modified']['@value'])) { |
|
1043 | + // Extract modified tag if present |
|
1044 | + $modified = NULL; |
|
1045 | + if (isset($prefs['modified']['@value'])) { |
|
1046 | 1046 | $modified = $prefs['modified']['@value']; |
1047 | - } |
|
1047 | + } |
|
1048 | 1048 | |
1049 | - $venue_is_default = FALSE; |
|
1050 | - if ($account->boincuser_default_pref_set) { |
|
1049 | + $venue_is_default = FALSE; |
|
1050 | + if ($account->boincuser_default_pref_set) { |
|
1051 | 1051 | if ($account->boincuser_default_pref_set == $venue) { |
1052 | - $venue_is_default = TRUE; |
|
1052 | + $venue_is_default = TRUE; |
|
1053 | 1053 | } |
1054 | - } |
|
1055 | - elseif (!$venue OR $venue == 'generic') { |
|
1054 | + } |
|
1055 | + elseif (!$venue OR $venue == 'generic') { |
|
1056 | 1056 | $venue_is_default = TRUE; |
1057 | - } |
|
1058 | - else { |
|
1057 | + } |
|
1058 | + else { |
|
1059 | 1059 | $venue_is_default = FALSE; |
1060 | - } |
|
1060 | + } |
|
1061 | 1061 | |
1062 | - // Define form defaults |
|
1063 | - $default = array( |
|
1062 | + // Define form defaults |
|
1063 | + $default = array( |
|
1064 | 1064 | 'resource_share' => 100, |
1065 | 1065 | 'no_cpu' => 0, |
1066 | 1066 | 'no_cuda' => 0, |
@@ -1068,333 +1068,333 @@ discard block |
||
1068 | 1068 | 'no_intel_gpu' => 0, |
1069 | 1069 | 'default_venue' => $venue_is_default, |
1070 | 1070 | 'allow_beta_work' => $prefs['allow_beta_work'], |
1071 | - ); |
|
1072 | - foreach ($default as $name => $value) { |
|
1071 | + ); |
|
1072 | + foreach ($default as $name => $value) { |
|
1073 | 1073 | if (isset($prefs[$name])) { |
1074 | - if (is_array($prefs[$name])) { |
|
1074 | + if (is_array($prefs[$name])) { |
|
1075 | 1075 | if (isset($prefs[$name]['@value'])) { |
1076 | - $default[$name] = $prefs[$name]['@value']; |
|
1076 | + $default[$name] = $prefs[$name]['@value']; |
|
1077 | + } |
|
1077 | 1078 | } |
1078 | - } |
|
1079 | - else { |
|
1079 | + else { |
|
1080 | 1080 | $default[$name] = $prefs[$name]; |
1081 | - } |
|
1081 | + } |
|
1082 | + } |
|
1082 | 1083 | } |
1083 | - } |
|
1084 | 1084 | |
1085 | - // Standard option sets |
|
1086 | - $form['boolean_options'] = array( |
|
1085 | + // Standard option sets |
|
1086 | + $form['boolean_options'] = array( |
|
1087 | 1087 | '#type' => 'value', |
1088 | 1088 | '#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')) |
1089 | - ); |
|
1089 | + ); |
|
1090 | 1090 | |
1091 | - // Identify preference sets that are established to distinguish what has been |
|
1092 | - // saved to the database from what is just showing default values |
|
1093 | - $form['#established'] = $established; |
|
1091 | + // Identify preference sets that are established to distinguish what has been |
|
1092 | + // saved to the database from what is just showing default values |
|
1093 | + $form['#established'] = $established; |
|
1094 | 1094 | |
1095 | - // Top level form options |
|
1096 | - $form['#tree'] = TRUE; |
|
1095 | + // Top level form options |
|
1096 | + $form['#tree'] = TRUE; |
|
1097 | 1097 | |
1098 | - // Hidden elements |
|
1099 | - $form['modified'] = array( |
|
1098 | + // Hidden elements |
|
1099 | + $form['modified'] = array( |
|
1100 | 1100 | '#type' => 'hidden', |
1101 | 1101 | '#value' => $modified, |
1102 | - ); |
|
1103 | - $form['venue'] = array( |
|
1102 | + ); |
|
1103 | + $form['venue'] = array( |
|
1104 | 1104 | '#type' => 'hidden', |
1105 | 1105 | '#value' => $venue, |
1106 | - ); |
|
1106 | + ); |
|
1107 | 1107 | |
1108 | - $form['separator_top'] = array( |
|
1108 | + $form['separator_top'] = array( |
|
1109 | 1109 | '#value' => '<div class="separator"></div>' |
1110 | - ); |
|
1110 | + ); |
|
1111 | 1111 | |
1112 | - // Common project preferences |
|
1113 | - $form['resource'] = array( |
|
1112 | + // Common project preferences |
|
1113 | + $form['resource'] = array( |
|
1114 | 1114 | '#title' => bts('Resource settings', array(), NULL, 'boinc:account-preferences-project'), |
1115 | 1115 | '#type' => 'fieldset', |
1116 | 1116 | '#description' => null, |
1117 | 1117 | '#collapsible' => TRUE, |
1118 | 1118 | '#collapsed' => FALSE |
1119 | - ); |
|
1120 | - $form['resource']['resource_share'] = array( |
|
1119 | + ); |
|
1120 | + $form['resource']['resource_share'] = array( |
|
1121 | 1121 | '#title' => bts('Resource share', array(), NULL, 'boinc:account-preferences-project'), |
1122 | 1122 | '#type' => 'textfield', |
1123 | 1123 | '#default_value' => $default['resource_share'], |
1124 | 1124 | '#size' => 5, |
1125 | 1125 | '#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') |
1126 | - ); |
|
1127 | - if ($app_types->count > 1) { |
|
1126 | + ); |
|
1127 | + if ($app_types->count > 1) { |
|
1128 | 1128 | if ($app_types->cpu) { |
1129 | - $form['resource']['no_cpu'] = array( |
|
1129 | + $form['resource']['no_cpu'] = array( |
|
1130 | 1130 | '#title' => bts('Use CPU', array(), NULL, 'boinc:account-preferences-project'), |
1131 | 1131 | '#type' => 'radios', |
1132 | 1132 | '#options' => $form['boolean_options']['#value'], |
1133 | 1133 | '#attributes' => array('class' => 'fancy'), |
1134 | 1134 | '#default_value' => $default['no_cpu'] ? 0 : 1, |
1135 | 1135 | '#description' => bts('Request CPU-only tasks from this project.', array(), NULL, 'boinc:account-preferences-project') |
1136 | - ); |
|
1136 | + ); |
|
1137 | 1137 | } |
1138 | 1138 | if ($app_types->cuda) { |
1139 | - $form['resource']['no_cuda'] = array( |
|
1139 | + $form['resource']['no_cuda'] = array( |
|
1140 | 1140 | '#title' => bts('Use NVIDIA GPU', array(), NULL, 'boinc:account-preferences-project'), |
1141 | 1141 | '#type' => 'radios', |
1142 | 1142 | '#options' => $form['boolean_options']['#value'], |
1143 | 1143 | '#attributes' => array('class' => 'fancy'), |
1144 | 1144 | '#default_value' => $default['no_cuda'] ? 0 : 1, |
1145 | 1145 | '#description' => bts('Request NVIDIA GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project') |
1146 | - ); |
|
1146 | + ); |
|
1147 | 1147 | } |
1148 | 1148 | if ($app_types->ati) { |
1149 | - $form['resource']['no_ati'] = array( |
|
1149 | + $form['resource']['no_ati'] = array( |
|
1150 | 1150 | '#title' => bts('Use AMD GPU', array(), NULL, 'boinc:account-preferences-project'), |
1151 | 1151 | '#type' => 'radios', |
1152 | 1152 | '#options' => $form['boolean_options']['#value'], |
1153 | 1153 | '#attributes' => array('class' => 'fancy'), |
1154 | 1154 | '#default_value' => $default['no_ati'] ? 0 : 1, |
1155 | 1155 | '#description' => bts('Request AMD GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project') |
1156 | - ); |
|
1156 | + ); |
|
1157 | 1157 | } |
1158 | 1158 | if ($app_types->intel_gpu) { |
1159 | - $form['resource']['no_intel_gpu'] = array( |
|
1159 | + $form['resource']['no_intel_gpu'] = array( |
|
1160 | 1160 | '#title' => bts('Use INTEL GPU', array(), NULL, 'boinc:account-preferences-project'), |
1161 | 1161 | '#type' => 'radios', |
1162 | 1162 | '#options' => $form['boolean_options']['#value'], |
1163 | 1163 | '#attributes' => array('class' => 'fancy'), |
1164 | 1164 | '#default_value' => $default['no_intel_gpu'] ? 0 : 1, |
1165 | 1165 | '#description' => bts('Request Intel GPU tasks from this project.', array(), NULL, 'boinc:account-preferences-project') |
1166 | - ); |
|
1166 | + ); |
|
1167 | + } |
|
1167 | 1168 | } |
1168 | - } |
|
1169 | 1169 | |
1170 | - if (variable_get('boinc_prefs_options_beta', FALSE)) { |
|
1170 | + if (variable_get('boinc_prefs_options_beta', FALSE)) { |
|
1171 | 1171 | $form['beta'] = array( |
1172 | - '#title' => bts('Beta settings', array(), NULL, 'boinc:account-preferences-project'), |
|
1173 | - '#type' => 'fieldset', |
|
1174 | - '#description' => null, |
|
1175 | - '#collapsible' => TRUE, |
|
1176 | - '#collapsed' => FALSE |
|
1172 | + '#title' => bts('Beta settings', array(), NULL, 'boinc:account-preferences-project'), |
|
1173 | + '#type' => 'fieldset', |
|
1174 | + '#description' => null, |
|
1175 | + '#collapsible' => TRUE, |
|
1176 | + '#collapsed' => FALSE |
|
1177 | 1177 | ); |
1178 | 1178 | $form['beta']['allow_beta_work'] = array( |
1179 | - '#title' => bts('Run test applications?', array(), NULL, 'boinc:account-preferences-project'), |
|
1180 | - '#type' => 'radios', |
|
1181 | - '#options' => $form['boolean_options']['#value'], |
|
1182 | - '#attributes' => array('class' => 'fancy'), |
|
1183 | - '#default_value' => ($default['allow_beta_work']) ? 1 : 0, |
|
1184 | - '#description' => bts('This helps us develop applications, but may cause jobs to fail on your computer', array(), NULL, 'boinc:account-preferences-project') |
|
1179 | + '#title' => bts('Run test applications?', array(), NULL, 'boinc:account-preferences-project'), |
|
1180 | + '#type' => 'radios', |
|
1181 | + '#options' => $form['boolean_options']['#value'], |
|
1182 | + '#attributes' => array('class' => 'fancy'), |
|
1183 | + '#default_value' => ($default['allow_beta_work']) ? 1 : 0, |
|
1184 | + '#description' => bts('This helps us develop applications, but may cause jobs to fail on your computer', array(), NULL, 'boinc:account-preferences-project') |
|
1185 | 1185 | ); |
1186 | - } |
|
1186 | + } |
|
1187 | 1187 | |
1188 | - // Add project specific prefs to the form |
|
1189 | - boincwork_add_project_specific_prefs($form, $prefs); |
|
1188 | + // Add project specific prefs to the form |
|
1189 | + boincwork_add_project_specific_prefs($form, $prefs); |
|
1190 | 1190 | |
1191 | - // Set whether to use this preference set by default for new computers |
|
1192 | - $form['default_set'] = array( |
|
1191 | + // Set whether to use this preference set by default for new computers |
|
1192 | + $form['default_set'] = array( |
|
1193 | 1193 | '#title' => bts('Default set', array(), NULL, 'boinc:account-preferences-project'), |
1194 | 1194 | '#type' => 'fieldset', |
1195 | 1195 | '#description' => null, |
1196 | 1196 | '#collapsible' => TRUE, |
1197 | 1197 | '#collapsed' => FALSE |
1198 | - ); |
|
1199 | - $form['default_set']['default_venue'] = array( |
|
1198 | + ); |
|
1199 | + $form['default_set']['default_venue'] = array( |
|
1200 | 1200 | '#title' => bts('Set used for new computers', array(), NULL, 'boinc:account-preferences-project'), |
1201 | 1201 | '#type' => 'radios', |
1202 | 1202 | '#options' => $form['boolean_options']['#value'], |
1203 | 1203 | '#attributes' => array('class' => 'fancy'), |
1204 | 1204 | '#default_value' => $default['default_venue'] ? 1 : 0, |
1205 | 1205 | '#description' => '' |
1206 | - ); |
|
1206 | + ); |
|
1207 | 1207 | |
1208 | - $form['prefs']['separator_bottom'] = array( |
|
1208 | + $form['prefs']['separator_bottom'] = array( |
|
1209 | 1209 | '#value' => '<div class="separator buttons"></div>' |
1210 | - ); |
|
1210 | + ); |
|
1211 | 1211 | |
1212 | - // Form control |
|
1213 | - $form['prefs']['form control tabs prefix'] = array( |
|
1212 | + // Form control |
|
1213 | + $form['prefs']['form control tabs prefix'] = array( |
|
1214 | 1214 | '#value' => '<ul class="form-control tab-list">' |
1215 | - ); |
|
1216 | - $form['prefs']['submit'] = array( |
|
1215 | + ); |
|
1216 | + $form['prefs']['submit'] = array( |
|
1217 | 1217 | '#prefix' => '<li class="first tab">', |
1218 | 1218 | '#type' => 'submit', |
1219 | 1219 | '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'), |
1220 | 1220 | '#suffix' => '</li>' |
1221 | - ); |
|
1222 | - $form['prefs']['form control tabs'] = array( |
|
1221 | + ); |
|
1222 | + $form['prefs']['form control tabs'] = array( |
|
1223 | 1223 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>' |
1224 | - ); |
|
1225 | - if ($venue AND $venue != 'generic') { |
|
1224 | + ); |
|
1225 | + if ($venue AND $venue != 'generic') { |
|
1226 | 1226 | global $base_path; |
1227 | 1227 | $form['prefs']['form control tabs']['#value'] .= '<li class="tab">' . |
1228 | - l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/project/clear/{$venue}", |
|
1228 | + l(bts('Clear', array(), NULL, 'boinc:form-clear'), "account/prefs/project/clear/{$venue}", |
|
1229 | 1229 | array( |
1230 | - 'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/project/combined')), |
|
1231 | - 'attributes' => array( |
|
1230 | + 'query' => 'destination=' . urlencode(drupal_get_path_alias('account/prefs/project/combined')), |
|
1231 | + 'attributes' => array( |
|
1232 | 1232 | 'onclick' => 'return confirm(\'' . bts('This will remove all of your settings from the @name preference set. Are you sure?', |
1233 | - array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')' |
|
1234 | - ) |
|
1233 | + array('@name' => $venue), NULL, 'boinc:account-preferences') . '\')' |
|
1234 | + ) |
|
1235 | 1235 | ) |
1236 | - ) . '</li>'; |
|
1237 | - } |
|
1238 | - $form['prefs']['view control'] = array( |
|
1239 | - '#value' => '<li class="first alt tab">' . l('(' . bts('Show comparison view', array(), NULL, 'boinc:account-preferences') . ')', 'account/prefs/project/combined') . '</li>' |
|
1240 | - ); |
|
1241 | - $form['prefs']['form control tabs suffix'] = array( |
|
1236 | + ) . '</li>'; |
|
1237 | + } |
|
1238 | + $form['prefs']['view control'] = array( |
|
1239 | + '#value' => '<li class="first alt tab">' . l('(' . bts('Show comparison view', array(), NULL, 'boinc:account-preferences') . ')', 'account/prefs/project/combined') . '</li>' |
|
1240 | + ); |
|
1241 | + $form['prefs']['form control tabs suffix'] = array( |
|
1242 | 1242 | '#value' => '</ul>' |
1243 | - ); |
|
1243 | + ); |
|
1244 | 1244 | |
1245 | - return $form; |
|
1245 | + return $form; |
|
1246 | 1246 | } |
1247 | 1247 | |
1248 | 1248 | /** |
1249 | 1249 | * Add project specific preferences to the project preferences form |
1250 | 1250 | */ |
1251 | 1251 | function boincwork_add_project_specific_prefs(&$form, $prefs) { |
1252 | - // Load project specific preferences from XML config |
|
1253 | - $xml = boincwork_get_project_specific_config(); |
|
1252 | + // Load project specific preferences from XML config |
|
1253 | + $xml = boincwork_get_project_specific_config(); |
|
1254 | 1254 | |
1255 | - // Respect the order of the top level elements |
|
1256 | - $ordered_array = array(); |
|
1257 | - $unordered_array = array(); |
|
1258 | - foreach ($xml['project_specific_preferences'] as $type => $element) { |
|
1255 | + // Respect the order of the top level elements |
|
1256 | + $ordered_array = array(); |
|
1257 | + $unordered_array = array(); |
|
1258 | + foreach ($xml['project_specific_preferences'] as $type => $element) { |
|
1259 | 1259 | if (is_array($element) AND is_numeric(key($element))) { |
1260 | - foreach ($element as $ordered_element) { |
|
1260 | + foreach ($element as $ordered_element) { |
|
1261 | 1261 | if (isset($ordered_element['@position'])) { |
1262 | - $ordered_array[$ordered_element['@position']] = array($type => $ordered_element); |
|
1262 | + $ordered_array[$ordered_element['@position']] = array($type => $ordered_element); |
|
1263 | 1263 | } |
1264 | 1264 | else { |
1265 | - $unordered_array[] = array($type => $ordered_element); |
|
1265 | + $unordered_array[] = array($type => $ordered_element); |
|
1266 | + } |
|
1266 | 1267 | } |
1267 | - } |
|
1268 | 1268 | } |
1269 | 1269 | elseif (isset($element['@position'])) { |
1270 | - $ordered_array[$element['@position']] = array($type => $element); |
|
1270 | + $ordered_array[$element['@position']] = array($type => $element); |
|
1271 | 1271 | } |
1272 | 1272 | else { |
1273 | - $unordered_array[] = array($type => $element); |
|
1273 | + $unordered_array[] = array($type => $element); |
|
1274 | + } |
|
1274 | 1275 | } |
1275 | - } |
|
1276 | - ksort($ordered_array); |
|
1277 | - $primed_array = array_merge($ordered_array, $unordered_array); |
|
1278 | - $xml = array('project_specific_preferences' => $primed_array); |
|
1276 | + ksort($ordered_array); |
|
1277 | + $primed_array = array_merge($ordered_array, $unordered_array); |
|
1278 | + $xml = array('project_specific_preferences' => $primed_array); |
|
1279 | 1279 | |
1280 | - foreach ($xml['project_specific_preferences'] as $wrapped_element) { |
|
1280 | + foreach ($xml['project_specific_preferences'] as $wrapped_element) { |
|
1281 | 1281 | $type = key($wrapped_element); |
1282 | 1282 | $element= reset($wrapped_element); |
1283 | 1283 | boincwork_generate_prefs_element($form, $type, $element, $prefs['project_specific']); |
1284 | - } |
|
1284 | + } |
|
1285 | 1285 | } |
1286 | 1286 | |
1287 | 1287 | /** |
1288 | - * Validate the project preferences form. |
|
1289 | - */ |
|
1288 | + * Validate the project preferences form. |
|
1289 | + */ |
|
1290 | 1290 | function boincwork_projectprefs_form_validate($form, &$form_state) { |
1291 | 1291 | |
1292 | - // Verify all text user input values and notify form API of failures |
|
1293 | - $validation_rules = array( |
|
1292 | + // Verify all text user input values and notify form API of failures |
|
1293 | + $validation_rules = array( |
|
1294 | 1294 | 'resource' => array( |
1295 | - 'resource_share' => array( |
|
1295 | + 'resource_share' => array( |
|
1296 | 1296 | 'datatype' => 'integer', |
1297 | 1297 | 'min' => 0 |
1298 | - ), |
|
1298 | + ), |
|
1299 | 1299 | ), |
1300 | - ); |
|
1300 | + ); |
|
1301 | 1301 | |
1302 | - // Add validation rules for project specific settings |
|
1303 | - $validation_rules += boincwork_get_project_specific_config_validation_rules(); |
|
1302 | + // Add validation rules for project specific settings |
|
1303 | + $validation_rules += boincwork_get_project_specific_config_validation_rules(); |
|
1304 | 1304 | |
1305 | - // Perform validation |
|
1306 | - boincwork_validate_form($validation_rules, $form_state['values']); |
|
1305 | + // Perform validation |
|
1306 | + boincwork_validate_form($validation_rules, $form_state['values']); |
|
1307 | 1307 | |
1308 | - // Check for app validation |
|
1309 | - if (isset($validation_rules['apps'])) { |
|
1308 | + // Check for app validation |
|
1309 | + if (isset($validation_rules['apps'])) { |
|
1310 | 1310 | if (isset($validation_rules['apps']['minimum selected']) |
1311 | 1311 | AND $validation_rules['apps']['minimum selected'] > 0) { |
1312 | - $apps_selected = 0; |
|
1313 | - foreach ($validation_rules['apps']['list'] as $app) { |
|
1312 | + $apps_selected = 0; |
|
1313 | + foreach ($validation_rules['apps']['list'] as $app) { |
|
1314 | 1314 | if ($form_state['values']['applications'][$app]) $apps_selected++; |
1315 | - } |
|
1316 | - if ($apps_selected < $validation_rules['apps']['minimum selected']) { |
|
1315 | + } |
|
1316 | + if ($apps_selected < $validation_rules['apps']['minimum selected']) { |
|
1317 | 1317 | form_set_error( |
1318 | - 'applications', |
|
1319 | - bts('At least one application must be selected', array(), NULL, 'boinc:account-preferences-project') |
|
1318 | + 'applications', |
|
1319 | + bts('At least one application must be selected', array(), NULL, 'boinc:account-preferences-project') |
|
1320 | 1320 | ); |
1321 | - } |
|
1322 | - if ($apps_selected == count($validation_rules['apps']['list'])) { |
|
1321 | + } |
|
1322 | + if ($apps_selected == count($validation_rules['apps']['list'])) { |
|
1323 | 1323 | foreach ($validation_rules['apps']['list'] as $app) { |
1324 | - unset($form_state['values']['applications'][$app]); |
|
1324 | + unset($form_state['values']['applications'][$app]); |
|
1325 | 1325 | } |
1326 | 1326 | $form_state['storage']['all apps selected'] = TRUE; |
1327 | - } |
|
1327 | + } |
|
1328 | + } |
|
1328 | 1329 | } |
1329 | - } |
|
1330 | 1330 | } |
1331 | 1331 | |
1332 | 1332 | /** |
1333 | - * Handle post-validation submission of project preferences form. |
|
1334 | - */ |
|
1333 | + * Handle post-validation submission of project preferences form. |
|
1334 | + */ |
|
1335 | 1335 | function boincwork_projectprefs_form_submit($form, &$form_state) { |
1336 | - global $user; |
|
1337 | - global $site_name; |
|
1336 | + global $user; |
|
1337 | + global $site_name; |
|
1338 | 1338 | |
1339 | - require_boinc(array('util')); |
|
1340 | - $app_types = get_app_types(); |
|
1339 | + require_boinc(array('util')); |
|
1340 | + $app_types = get_app_types(); |
|
1341 | 1341 | |
1342 | - $account = user_load($user->uid); |
|
1343 | - $edit = $form_state['values']; |
|
1344 | - $venue = $edit['venue']; |
|
1342 | + $account = user_load($user->uid); |
|
1343 | + $edit = $form_state['values']; |
|
1344 | + $venue = $edit['venue']; |
|
1345 | 1345 | |
1346 | - // Load preferences from BOINC account |
|
1347 | - $prefs = boincwork_load_prefs('project', $venue); |
|
1346 | + // Load preferences from BOINC account |
|
1347 | + $prefs = boincwork_load_prefs('project', $venue); |
|
1348 | 1348 | |
1349 | - // Resource preferences |
|
1350 | - $prefs['resource_share'] = $edit['resource']['resource_share']; |
|
1351 | - if ($app_types->count > 1) { |
|
1349 | + // Resource preferences |
|
1350 | + $prefs['resource_share'] = $edit['resource']['resource_share']; |
|
1351 | + if ($app_types->count > 1) { |
|
1352 | 1352 | if ($app_types->cpu) $prefs['no_cpu'] = ($edit['resource']['no_cpu']) ? 0 : 1; |
1353 | 1353 | if ($app_types->cuda) $prefs['no_cuda'] = ($edit['resource']['no_cuda']) ? 0 : 1; |
1354 | 1354 | if ($app_types->ati) $prefs['no_ati'] = ($edit['resource']['no_ati']) ? 0 : 1; |
1355 | 1355 | if ($app_types->intel_gpu) $prefs['no_intel_gpu'] = ($edit['resource']['no_intel_gpu']) ? 0 : 1; |
1356 | - } |
|
1356 | + } |
|
1357 | 1357 | |
1358 | - // Beta preferences |
|
1359 | - if (variable_get('boinc_prefs_options_beta', FALSE)) { |
|
1358 | + // Beta preferences |
|
1359 | + if (variable_get('boinc_prefs_options_beta', FALSE)) { |
|
1360 | 1360 | $prefs['allow_beta_work'] = ($edit['beta']['allow_beta_work']) ? 1 : 0; |
1361 | - } |
|
1361 | + } |
|
1362 | 1362 | |
1363 | - // Load project specific preferences from XML config |
|
1364 | - $xml = boincwork_get_project_specific_config(); |
|
1365 | - $updated_prefs = array( |
|
1363 | + // Load project specific preferences from XML config |
|
1364 | + $xml = boincwork_get_project_specific_config(); |
|
1365 | + $updated_prefs = array( |
|
1366 | 1366 | 'project_specific' => boincwork_format_project_specific_prefs_data($edit) |
1367 | - ); |
|
1368 | - $prefs = $updated_prefs + $prefs; |
|
1367 | + ); |
|
1368 | + $prefs = $updated_prefs + $prefs; |
|
1369 | 1369 | |
1370 | - // Don't specify apps if all are selected |
|
1371 | - if (isset($form_state['storage']['all apps selected'])) { |
|
1370 | + // Don't specify apps if all are selected |
|
1371 | + if (isset($form_state['storage']['all apps selected'])) { |
|
1372 | 1372 | unset($prefs['project_specific']['app_id']); |
1373 | 1373 | unset($form_state['storage']['all apps selected']); |
1374 | - } |
|
1374 | + } |
|
1375 | 1375 | |
1376 | - // If this is a new preference set, be sure to unset the "cleared" attribute |
|
1377 | - if (isset($prefs['@attributes']['cleared'])) { |
|
1376 | + // If this is a new preference set, be sure to unset the "cleared" attribute |
|
1377 | + if (isset($prefs['@attributes']['cleared'])) { |
|
1378 | 1378 | unset($prefs['@attributes']['cleared']); |
1379 | - } |
|
1379 | + } |
|
1380 | 1380 | |
1381 | - // Save preferences back to the BOINC account |
|
1382 | - $result = boincwork_save_prefs($prefs, 'project', $venue); |
|
1381 | + // Save preferences back to the BOINC account |
|
1382 | + $result = boincwork_save_prefs($prefs, 'project', $venue); |
|
1383 | 1383 | |
1384 | - // Update the user's default preference set |
|
1385 | - if ($edit['default_set']['default_venue']) { |
|
1384 | + // Update the user's default preference set |
|
1385 | + if ($edit['default_set']['default_venue']) { |
|
1386 | 1386 | boincwork_set_default_venue($venue); |
1387 | - } |
|
1388 | - elseif ($venue == $account->boincuser_default_pref_set) { |
|
1387 | + } |
|
1388 | + elseif ($venue == $account->boincuser_default_pref_set) { |
|
1389 | 1389 | // User has cleared out the default venue setting |
1390 | 1390 | boincwork_set_default_venue(); |
1391 | - } |
|
1391 | + } |
|
1392 | 1392 | |
1393 | - if (!$result) { |
|
1393 | + if (!$result) { |
|
1394 | 1394 | watchdog('boincwork', 'Error updating project prefs for user @id: @message', array('@id' => $user->id, '@message' => mysqli_error()), WATCHDOG_ERROR); |
1395 | 1395 | drupal_set_message(t('Your changes could not be saved. Please contact support!'), 'error'); |
1396 | - } |
|
1397 | - elseif (!drupal_get_messages('status', FALSE)) { |
|
1396 | + } |
|
1397 | + elseif (!drupal_get_messages('status', FALSE)) { |
|
1398 | 1398 | // Show this message if the set wasn't created automatically (in which case |
1399 | 1399 | // there is a message tailored to that) |
1400 | 1400 | drupal_set_message(t('Your preferences have been updated. |
@@ -1402,53 +1402,53 @@ discard block |
||
1402 | 1402 | communicates with @project or you issue the "Update" |
1403 | 1403 | command from the BOINC client.', |
1404 | 1404 | array('@project' => $site_name))); |
1405 | - } |
|
1405 | + } |
|
1406 | 1406 | } |
1407 | 1407 | |
1408 | 1408 | /** |
1409 | 1409 | * The structure of the community preferences form |
1410 | 1410 | */ |
1411 | 1411 | function communityprefs_form(&$form_state) { |
1412 | - global $user; |
|
1413 | - $account = user_load($user->uid); |
|
1414 | - $form = array(); |
|
1415 | - |
|
1416 | - // Pull in some elements from the profile form |
|
1417 | - $profile_form_state = array(); |
|
1418 | - $profile = new stdClass(); |
|
1419 | - $profile->type = 'profile'; |
|
1420 | - $profile->language = ''; |
|
1421 | - if ($profile_nid = content_profile_profile_exists($profile, $account->uid)) { |
|
1412 | + global $user; |
|
1413 | + $account = user_load($user->uid); |
|
1414 | + $form = array(); |
|
1415 | + |
|
1416 | + // Pull in some elements from the profile form |
|
1417 | + $profile_form_state = array(); |
|
1418 | + $profile = new stdClass(); |
|
1419 | + $profile->type = 'profile'; |
|
1420 | + $profile->language = ''; |
|
1421 | + if ($profile_nid = content_profile_profile_exists($profile, $account->uid)) { |
|
1422 | 1422 | $profile_node = node_load($profile_nid); |
1423 | 1423 | $form_state['storage']['profile_node'] = $profile_node; |
1424 | 1424 | module_load_include('inc', 'node', 'node.pages'); |
1425 | 1425 | $profile_form = drupal_retrieve_form('profile_node_form', $profile_form_state, $profile_node); |
1426 | 1426 | drupal_prepare_form('profile_node_form', $profile_form, $profile_form_state); |
1427 | - } |
|
1427 | + } |
|
1428 | 1428 | |
1429 | - // Standard option sets |
|
1430 | - $form['boolean_options'] = array( |
|
1429 | + // Standard option sets |
|
1430 | + $form['boolean_options'] = array( |
|
1431 | 1431 | '#type' => 'value', |
1432 | 1432 | '#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')) |
1433 | - ); |
|
1433 | + ); |
|
1434 | 1434 | |
1435 | - $default = array( |
|
1435 | + $default = array( |
|
1436 | 1436 | 'pm_send_notification' => '', // This is set already in pm_email_notify_user |
1437 | 1437 | 'friend_notification' => isset($account->friend_notification) ? $account->friend_notification : 0, |
1438 | 1438 | '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), |
1439 | 1439 | 'comments_order' => (isset($account->sort) AND $account->sort) ? $account->sort : variable_get('comment_default_order_forum', COMMENT_ORDER_OLDEST_FIRST), |
1440 | - ); |
|
1440 | + ); |
|
1441 | 1441 | |
1442 | - // General options |
|
1443 | - $form['general'] = array( |
|
1442 | + // General options |
|
1443 | + $form['general'] = array( |
|
1444 | 1444 | '#type' => 'fieldset', |
1445 | 1445 | '#title' => bts('General settings', array(), NULL, 'boinc:account-preferences-community'), |
1446 | 1446 | '#weight' => 0, |
1447 | 1447 | '#collapsible' => TRUE, |
1448 | 1448 | '#collapsed' => FALSE |
1449 | - ); |
|
1450 | - // Add the BOINC user name (non-unique, user editable) |
|
1451 | - $form['general']['boincuser_name'] = array( |
|
1449 | + ); |
|
1450 | + // Add the BOINC user name (non-unique, user editable) |
|
1451 | + $form['general']['boincuser_name'] = array( |
|
1452 | 1452 | '#type' => 'textfield', |
1453 | 1453 | '#title' => bts('Name', array(), NULL, 'boinc:user-or-team-name'), |
1454 | 1454 | '#default_value' => $account->boincuser_name, |
@@ -1456,252 +1456,252 @@ discard block |
||
1456 | 1456 | '#required' => TRUE, |
1457 | 1457 | '#description' => '', |
1458 | 1458 | '#size' => 40 |
1459 | - ); |
|
1460 | - // Time zone |
|
1461 | - if (variable_get('configurable_timezones', 1)) { |
|
1459 | + ); |
|
1460 | + // Time zone |
|
1461 | + if (variable_get('configurable_timezones', 1)) { |
|
1462 | 1462 | $zones = _system_zonelist(); |
1463 | 1463 | $form['general']['timezone'] = array( |
1464 | - '#type' => 'select', |
|
1465 | - '#title' => bts('Time zone', array(), NULL, 'boinc:account-preferences-community'), |
|
1466 | - '#default_value' => ($account->timezone !== NULL) ? $account->timezone : variable_get('date_default_timezone', 0), |
|
1467 | - '#options' => $zones, |
|
1468 | - '#description' => '', |
|
1464 | + '#type' => 'select', |
|
1465 | + '#title' => bts('Time zone', array(), NULL, 'boinc:account-preferences-community'), |
|
1466 | + '#default_value' => ($account->timezone !== NULL) ? $account->timezone : variable_get('date_default_timezone', 0), |
|
1467 | + '#options' => $zones, |
|
1468 | + '#description' => '', |
|
1469 | 1469 | ); |
1470 | - } |
|
1470 | + } |
|
1471 | 1471 | |
1472 | - // Notification options |
|
1473 | - $form['notifications'] = array( |
|
1472 | + // Notification options |
|
1473 | + $form['notifications'] = array( |
|
1474 | 1474 | '#type' => 'fieldset', |
1475 | 1475 | '#title' => bts('Notification settings', array(), NULL, 'boinc:account-preferences-community'), |
1476 | 1476 | '#weight' => 5, |
1477 | 1477 | '#collapsible' => TRUE, |
1478 | 1478 | '#collapsed' => FALSE |
1479 | - ); |
|
1480 | - // Pull in private message notification handling and tweak the form |
|
1481 | - $pm_notify = pm_email_notify_user('form', $edit, $account, 'account'); |
|
1482 | - $form['notifications']['pm_send_notifications'] = array_replace( |
|
1479 | + ); |
|
1480 | + // Pull in private message notification handling and tweak the form |
|
1481 | + $pm_notify = pm_email_notify_user('form', $edit, $account, 'account'); |
|
1482 | + $form['notifications']['pm_send_notifications'] = array_replace( |
|
1483 | 1483 | $pm_notify['enable_pm_mail']['pm_send_notifications'], |
1484 | 1484 | array( |
1485 | - '#type' => 'radios', |
|
1486 | - '#title' => bts('Receive email notification for private messages?', array(), NULL, 'boinc:account-preferences-community'), |
|
1487 | - '#description' => ' ', |
|
1488 | - '#options' => $form['boolean_options']['#value'], |
|
1489 | - '#attributes' => array('class' => 'fancy') |
|
1485 | + '#type' => 'radios', |
|
1486 | + '#title' => bts('Receive email notification for private messages?', array(), NULL, 'boinc:account-preferences-community'), |
|
1487 | + '#description' => ' ', |
|
1488 | + '#options' => $form['boolean_options']['#value'], |
|
1489 | + '#attributes' => array('class' => 'fancy') |
|
1490 | 1490 | ) |
1491 | - ); |
|
1492 | - $form['notifications']['friend_notification'] = array( |
|
1491 | + ); |
|
1492 | + $form['notifications']['friend_notification'] = array( |
|
1493 | 1493 | '#type' => 'radios', |
1494 | 1494 | '#title' => bts('Receive email notification for friend requests?', array(), NULL, 'boinc:account-preferences-community'), |
1495 | 1495 | '#description' => ' ', |
1496 | 1496 | '#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')), |
1497 | 1497 | '#attributes' => array('class' => 'fancy'), |
1498 | 1498 | '#default_value' => $default['friend_notification'] |
1499 | - ); |
|
1499 | + ); |
|
1500 | 1500 | |
1501 | - // Internationalization options |
|
1502 | - if (module_exists('internationalization')) { |
|
1501 | + // Internationalization options |
|
1502 | + if (module_exists('internationalization')) { |
|
1503 | 1503 | $languages = language_list('enabled'); |
1504 | 1504 | $languages = $languages[1]; |
1505 | 1505 | $names = array(); |
1506 | 1506 | foreach ($languages as $langcode => $item) { |
1507 | - $name = t($item->name); |
|
1508 | - $names[check_plain($langcode)] = check_plain($name . ($item->native != $name ? ' ('. $item->native .')' : '')); |
|
1507 | + $name = t($item->name); |
|
1508 | + $names[check_plain($langcode)] = check_plain($name . ($item->native != $name ? ' ('. $item->native .')' : '')); |
|
1509 | 1509 | } |
1510 | 1510 | $form['locale'] = array( |
1511 | - '#type' => 'fieldset', |
|
1512 | - '#title' => bts('Language settings', array(), NULL, 'boinc:account-preferences-community'), |
|
1513 | - '#weight' => 10, |
|
1514 | - '#collapsible' => TRUE, |
|
1515 | - '#collapsed' => FALSE, |
|
1511 | + '#type' => 'fieldset', |
|
1512 | + '#title' => bts('Language settings', array(), NULL, 'boinc:account-preferences-community'), |
|
1513 | + '#weight' => 10, |
|
1514 | + '#collapsible' => TRUE, |
|
1515 | + '#collapsed' => FALSE, |
|
1516 | 1516 | ); |
1517 | 1517 | |
1518 | 1518 | // Get language negotiation settings. |
1519 | 1519 | $mode = variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE); |
1520 | 1520 | $user_preferred_language = user_preferred_language($account); |
1521 | 1521 | $form['locale']['language'] = array( |
1522 | - '#type' => 'select', |
|
1523 | - '#title' => bts('Language', array(), NULL, 'boinc:account-preferences-community'), |
|
1524 | - '#default_value' => check_plain($user_preferred_language->language), |
|
1525 | - '#options' => $names, |
|
1526 | - '#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'), |
|
1522 | + '#type' => 'select', |
|
1523 | + '#title' => bts('Language', array(), NULL, 'boinc:account-preferences-community'), |
|
1524 | + '#default_value' => check_plain($user_preferred_language->language), |
|
1525 | + '#options' => $names, |
|
1526 | + '#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'), |
|
1527 | 1527 | ); |
1528 | - } |
|
1528 | + } |
|
1529 | 1529 | |
1530 | - // Avatar options |
|
1531 | - $form['gravatar'] = array( |
|
1530 | + // Avatar options |
|
1531 | + $form['gravatar'] = array( |
|
1532 | 1532 | '#type' => 'item', |
1533 | 1533 | '#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'), |
1534 | 1534 | '#description' => bts('Your Gravatar will not be shown if you upload a user picture.', array(), NULL, 'boinc:account-preferences-community'), |
1535 | - ); |
|
1536 | - if (user_access('disable own gravatar', $account)) { |
|
1535 | + ); |
|
1536 | + if (user_access('disable own gravatar', $account)) { |
|
1537 | 1537 | $form['gravatar'] = array( |
1538 | - '#type' => 'checkbox', |
|
1539 | - '#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'), |
|
1540 | - '#description' => bts('Gravatar will not be shown if an avatar is uploaded.', array(), NULL, 'boinc:account-preferences-community'), |
|
1541 | - '#default_value' => isset($account->gravatar) ? $account->gravatar : 0, |
|
1542 | - '#disabled' => !empty($account->picture), |
|
1543 | - ); |
|
1544 | - } |
|
1545 | - $form['gravatar']['#weight'] = 15; |
|
1546 | - $form['gravatar']['#prefix'] = '<fieldset class="collapsible"><legend><a href="#">' . bts('Avatar settings', array(), NULL, 'boinc:account-preferences-community') . '</a></legend>'; |
|
1547 | - // Upload an avatar (pulled from profile_node_form): |
|
1548 | - if (!empty($profile_form['field_image'])) { |
|
1538 | + '#type' => 'checkbox', |
|
1539 | + '#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'), |
|
1540 | + '#description' => bts('Gravatar will not be shown if an avatar is uploaded.', array(), NULL, 'boinc:account-preferences-community'), |
|
1541 | + '#default_value' => isset($account->gravatar) ? $account->gravatar : 0, |
|
1542 | + '#disabled' => !empty($account->picture), |
|
1543 | + ); |
|
1544 | + } |
|
1545 | + $form['gravatar']['#weight'] = 15; |
|
1546 | + $form['gravatar']['#prefix'] = '<fieldset class="collapsible"><legend><a href="#">' . bts('Avatar settings', array(), NULL, 'boinc:account-preferences-community') . '</a></legend>'; |
|
1547 | + // Upload an avatar (pulled from profile_node_form): |
|
1548 | + if (!empty($profile_form['field_image'])) { |
|
1549 | 1549 | $form['field_image'] = $profile_form['field_image']; |
1550 | - } |
|
1551 | - else { |
|
1550 | + } |
|
1551 | + else { |
|
1552 | 1552 | $form['field_image'] = array( |
1553 | - '#value' => '<div class="form-item">' |
|
1553 | + '#value' => '<div class="form-item">' |
|
1554 | 1554 | . '<label class="placeholder">' |
1555 | 1555 | . bts('This is not available until your profile is set up.', array(), NULL, 'boinc:account-preferences-community') |
1556 | 1556 | . '</label>' |
1557 | 1557 | . l(bts('Create a profile', array(), NULL, 'boinc:account-preferences-community'), 'account/profile/edit', array('attributes' => array('class' => 'form-link'))) |
1558 | 1558 | . '</div>', |
1559 | 1559 | ); |
1560 | - } |
|
1561 | - $form['field_image'][0]['#title'] = bts('Upload an avatar', array(), NULL, 'boinc:account-preferences-community'); |
|
1562 | - $form['field_image']['#weight'] = 20; |
|
1563 | - $form['field_image']['#suffix'] = '</fieldset>'; |
|
1560 | + } |
|
1561 | + $form['field_image'][0]['#title'] = bts('Upload an avatar', array(), NULL, 'boinc:account-preferences-community'); |
|
1562 | + $form['field_image']['#weight'] = 20; |
|
1563 | + $form['field_image']['#suffix'] = '</fieldset>'; |
|
1564 | 1564 | |
1565 | - // Forum options |
|
1566 | - $form['forums'] = array( |
|
1565 | + // Forum options |
|
1566 | + $form['forums'] = array( |
|
1567 | 1567 | '#type' => 'fieldset', |
1568 | 1568 | '#title' => bts('Forum settings', array(), NULL, 'boinc:account-preferences-community'), |
1569 | 1569 | '#weight' => 25, |
1570 | 1570 | '#collapsible' => TRUE, |
1571 | 1571 | '#collapsed' => FALSE |
1572 | - ); |
|
1573 | - $form['forums']['comments_per_page'] = array( |
|
1572 | + ); |
|
1573 | + $form['forums']['comments_per_page'] = array( |
|
1574 | 1574 | '#type' => 'select', |
1575 | 1575 | '#title' => bts('In discussion topics, show at most @comments_per_page', array('@comments_per_page' => ''), NULL, 'boinc:account-preferences-community'), |
1576 | 1576 | '#options' => array(10 => 10, 20 => 20, 30 => 30, 50 => 50, 100 => 100), |
1577 | 1577 | '#default_value' => $default['comments_per_page'] |
1578 | - ); |
|
1579 | - // Can't have a typical Drupal form suffix on a select box? |
|
1580 | - $form['forums']['comments_per_page_suffix'] = array( |
|
1578 | + ); |
|
1579 | + // Can't have a typical Drupal form suffix on a select box? |
|
1580 | + $form['forums']['comments_per_page_suffix'] = array( |
|
1581 | 1581 | '#value' => '<span>' . bts('comments per page', array(), NULL, 'boinc:account-preferences-community') . '</span>' |
1582 | - ); |
|
1583 | - $form['forums']['comments_order'] = array( |
|
1582 | + ); |
|
1583 | + $form['forums']['comments_order'] = array( |
|
1584 | 1584 | '#type' => 'select', |
1585 | 1585 | '#title' => bts('Sort comments in discussions', array(), NULL, 'boinc:account-preferences-community'), |
1586 | 1586 | '#options' => array(1 => bts('Newest post first', array(), NULL, 'boinc:account-preferences-community'), 2 => bts('Oldest post first', array(), NULL, 'boinc:account-preferences-community')), |
1587 | 1587 | '#default_value' => $default['comments_order'] |
1588 | - ); |
|
1589 | - // Signature (pulled from user_edit_form): |
|
1590 | - if (variable_get('user_signatures', 0) && module_exists('comment')) { |
|
1588 | + ); |
|
1589 | + // Signature (pulled from user_edit_form): |
|
1590 | + if (variable_get('user_signatures', 0) && module_exists('comment')) { |
|
1591 | 1591 | $form['forums']['signature'] = array( |
1592 | - '#type' => 'textarea', |
|
1593 | - '#title' => bts('Signature', array(), NULL, 'boinc:account-preferences-community'), |
|
1594 | - '#description' => bts('Your signature will be publicly displayed at the end of your comments.', array(), NULL, 'boinc:account-preferences-community'), |
|
1595 | - '#default_value' => $account->signature |
|
1596 | - ); |
|
1592 | + '#type' => 'textarea', |
|
1593 | + '#title' => bts('Signature', array(), NULL, 'boinc:account-preferences-community'), |
|
1594 | + '#description' => bts('Your signature will be publicly displayed at the end of your comments.', array(), NULL, 'boinc:account-preferences-community'), |
|
1595 | + '#default_value' => $account->signature |
|
1596 | + ); |
|
1597 | 1597 | // Prevent a "validation error" message when the user attempts to save with a default value they |
1598 | 1598 | // do not have access to. |
1599 | 1599 | if (!filter_access($account->signature_format) && empty($_POST)) { |
1600 | - 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.")); |
|
1601 | - $edit['signature_format'] = FILTER_FORMAT_DEFAULT; |
|
1600 | + 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.")); |
|
1601 | + $edit['signature_format'] = FILTER_FORMAT_DEFAULT; |
|
1602 | 1602 | } |
1603 | 1603 | $form['forums']['signature_format'] = filter_form($account->signature_format, NULL, array('signature_format')); |
1604 | 1604 | // Optionally hide signatures from comments |
1605 | 1605 | $form['forums']['hide_signatures'] = array( |
1606 | - '#type' => 'radios', |
|
1607 | - '#title' => bts('Hide signatures in forums', array(), NULL, 'boinc:account-preferences-community'), |
|
1608 | - '#description' => ' ', |
|
1609 | - '#options' => $form['boolean_options']['#value'], |
|
1610 | - '#attributes' => array('class' => 'fancy'), |
|
1611 | - '#default_value' => isset($account->hide_signatures) ? $account->hide_signatures : 0, |
|
1606 | + '#type' => 'radios', |
|
1607 | + '#title' => bts('Hide signatures in forums', array(), NULL, 'boinc:account-preferences-community'), |
|
1608 | + '#description' => ' ', |
|
1609 | + '#options' => $form['boolean_options']['#value'], |
|
1610 | + '#attributes' => array('class' => 'fancy'), |
|
1611 | + '#default_value' => isset($account->hide_signatures) ? $account->hide_signatures : 0, |
|
1612 | 1612 | ); |
1613 | - } |
|
1613 | + } |
|
1614 | 1614 | |
1615 | - //Bottom separator |
|
1616 | - $form['separator_bottom'] = array( |
|
1615 | + //Bottom separator |
|
1616 | + $form['separator_bottom'] = array( |
|
1617 | 1617 | '#value' => '<div class="separator buttons"></div>', |
1618 | 1618 | '#weight' => 999, |
1619 | - ); |
|
1619 | + ); |
|
1620 | 1620 | |
1621 | - // Form control |
|
1622 | - $form['form control tabs prefix'] = array( |
|
1621 | + // Form control |
|
1622 | + $form['form control tabs prefix'] = array( |
|
1623 | 1623 | '#value' => '<ul class="form-control tab-list">', |
1624 | 1624 | '#weight' => 1001, |
1625 | - ); |
|
1626 | - $form['submit'] = array( |
|
1625 | + ); |
|
1626 | + $form['submit'] = array( |
|
1627 | 1627 | '#prefix' => '<li class="first tab">', |
1628 | 1628 | '#type' => 'submit', |
1629 | 1629 | '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'), |
1630 | 1630 | '#suffix' => '</li>', |
1631 | 1631 | '#weight' => 1002, |
1632 | - ); |
|
1633 | - $form['form control tabs'] = array( |
|
1632 | + ); |
|
1633 | + $form['form control tabs'] = array( |
|
1634 | 1634 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>', |
1635 | 1635 | '#weight' => 1003, |
1636 | - ); |
|
1637 | - $form['form control tabs suffix'] = array( |
|
1636 | + ); |
|
1637 | + $form['form control tabs suffix'] = array( |
|
1638 | 1638 | '#value' => '</ul>', |
1639 | 1639 | '#weight' => 1004, |
1640 | - ); |
|
1641 | - return $form; |
|
1640 | + ); |
|
1641 | + return $form; |
|
1642 | 1642 | } |
1643 | 1643 | |
1644 | 1644 | /** |
1645 | - * Handle validation submission of community preferences form. |
|
1646 | - */ |
|
1645 | + * Handle validation submission of community preferences form. |
|
1646 | + */ |
|
1647 | 1647 | function communityprefs_form_validate($form, &$form_state) { |
1648 | - // require_boinc(); |
|
1649 | - global $user; |
|
1650 | - $account = user_load($user->uid); |
|
1651 | - $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
1652 | - $edit = $form_state['values']; |
|
1648 | + // require_boinc(); |
|
1649 | + global $user; |
|
1650 | + $account = user_load($user->uid); |
|
1651 | + $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
1652 | + $edit = $form_state['values']; |
|
1653 | 1653 | |
1654 | - if ($edit['boincuser_name'] != $boinc_user->name) { |
|
1654 | + if ($edit['boincuser_name'] != $boinc_user->name) { |
|
1655 | 1655 | $blacklist1 = preg_split('/\r\n|\r|\n/', variable_get('boinc_weboptions_blacklisted_usernames', "admin\nadministrator\nmoderator")); |
1656 | 1656 | $blacklist2 = array(); |
1657 | 1657 | if (is_array($blacklist1)) { |
1658 | - $blacklist2 = array_map('strtolower', $blacklist1); |
|
1658 | + $blacklist2 = array_map('strtolower', $blacklist1); |
|
1659 | 1659 | } |
1660 | 1660 | if (in_array(strtolower($edit['boincuser_name']), $blacklist2)) { |
1661 | - form_set_error('boincuser_name', |
|
1661 | + form_set_error('boincuser_name', |
|
1662 | 1662 | bts('You may not use username @blname, as that name is not allowed. Please choose another name.', |
1663 | 1663 | array('@blname' => $edit['boincuser_name']), |
1664 | 1664 | NULL, 'boinc:account-preferences-community')); |
1665 | - return false; |
|
1665 | + return false; |
|
1666 | + } |
|
1666 | 1667 | } |
1667 | - } |
|
1668 | 1668 | |
1669 | - return true; |
|
1669 | + return true; |
|
1670 | 1670 | } |
1671 | 1671 | |
1672 | 1672 | /** |
1673 | - * Handle post-validation submission of community preferences form. |
|
1674 | - */ |
|
1673 | + * Handle post-validation submission of community preferences form. |
|
1674 | + */ |
|
1675 | 1675 | function communityprefs_form_submit($form, &$form_state) { |
1676 | - require_boinc('boinc_db'); |
|
1677 | - global $user; |
|
1678 | - $account = user_load($user->uid); |
|
1679 | - $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
1680 | - $edit = $form_state['values']; |
|
1681 | - $profile_node = $form_state['storage']['profile_node']; |
|
1682 | - |
|
1683 | - // Display name |
|
1684 | - if ($edit['boincuser_name'] != $boinc_user->name) { |
|
1676 | + require_boinc('boinc_db'); |
|
1677 | + global $user; |
|
1678 | + $account = user_load($user->uid); |
|
1679 | + $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
|
1680 | + $edit = $form_state['values']; |
|
1681 | + $profile_node = $form_state['storage']['profile_node']; |
|
1682 | + |
|
1683 | + // Display name |
|
1684 | + if ($edit['boincuser_name'] != $boinc_user->name) { |
|
1685 | 1685 | $boincuser_name = $edit['boincuser_name']; |
1686 | 1686 | $result = $boinc_user->update( |
1687 | 1687 | "name='{$boincuser_name}'" |
1688 | 1688 | ); |
1689 | - } |
|
1689 | + } |
|
1690 | 1690 | |
1691 | - // Private message settings |
|
1692 | - pm_email_notify_user('submit', $edit, $user); |
|
1691 | + // Private message settings |
|
1692 | + pm_email_notify_user('submit', $edit, $user); |
|
1693 | 1693 | |
1694 | - // Avatar settings - only set if profile_node exists. |
|
1695 | - if ($profile_node) { |
|
1694 | + // Avatar settings - only set if profile_node exists. |
|
1695 | + if ($profile_node) { |
|
1696 | 1696 | if (!$edit['field_image']) $edit['field_image'] = array(); |
1697 | 1697 | $profile_node->field_image = $edit['field_image']; |
1698 | 1698 | node_save($profile_node); |
1699 | 1699 | // Flush this from the node cache or changes won't show up immediately! |
1700 | 1700 | $profile_node = node_load($profile_node->nid, NULL, TRUE); |
1701 | - } |
|
1701 | + } |
|
1702 | 1702 | |
1703 | - // All other settings |
|
1704 | - $settings = array( |
|
1703 | + // All other settings |
|
1704 | + $settings = array( |
|
1705 | 1705 | 'signature' => $edit['signature'], |
1706 | 1706 | 'signature_format' => $edit['signature_format'], |
1707 | 1707 | 'timezone' => $edit['timezone'], |
@@ -1710,183 +1710,183 @@ discard block |
||
1710 | 1710 | 'hide_signatures' => $edit['hide_signatures'], |
1711 | 1711 | 'sort' => $edit['comments_order'], |
1712 | 1712 | 'gravatar' => $edit['gravatar'], |
1713 | - ); |
|
1714 | - if (module_exists('internationalization')) { |
|
1713 | + ); |
|
1714 | + if (module_exists('internationalization')) { |
|
1715 | 1715 | $settings['language'] = $edit['language']; |
1716 | 1716 | global $language; |
1717 | 1717 | if ($user->language != $edit['language']) { |
1718 | - global $base_url; |
|
1719 | - if ($edit['language'] != language_default('language')) { |
|
1718 | + global $base_url; |
|
1719 | + if ($edit['language'] != language_default('language')) { |
|
1720 | 1720 | $form_state['redirect'] = $base_url . '/' . $edit['language'] . '/' . $_GET['q']; |
1721 | - } |
|
1722 | - else { |
|
1721 | + } |
|
1722 | + else { |
|
1723 | 1723 | $form_state['redirect'] = $base_url . '/' . $_GET['q']; |
1724 | - } |
|
1724 | + } |
|
1725 | + } |
|
1725 | 1726 | } |
1726 | - } |
|
1727 | - user_save($user, $settings); |
|
1727 | + user_save($user, $settings); |
|
1728 | 1728 | |
1729 | - drupal_set_message(bts('Your community preferences have been updated.', array(), NULL, 'boinc:account-preferences-community')); |
|
1729 | + drupal_set_message(bts('Your community preferences have been updated.', array(), NULL, 'boinc:account-preferences-community')); |
|
1730 | 1730 | |
1731 | - // Form will not redirect if storage is set; not good if language changes |
|
1732 | - unset($form_state['storage']); |
|
1731 | + // Form will not redirect if storage is set; not good if language changes |
|
1732 | + unset($form_state['storage']); |
|
1733 | 1733 | } |
1734 | 1734 | |
1735 | 1735 | /** |
1736 | 1736 | * The structure of the privacy preferences form |
1737 | 1737 | */ |
1738 | 1738 | function boincwork_privacyprefs_form(&$form_state) { |
1739 | - require_boinc(array('user', 'prefs', 'util', 'consent')); |
|
1739 | + require_boinc(array('user', 'prefs', 'util', 'consent')); |
|
1740 | 1740 | |
1741 | - global $user; |
|
1742 | - $account = user_load($user->uid); |
|
1743 | - $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
1741 | + global $user; |
|
1742 | + $account = user_load($user->uid); |
|
1743 | + $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
1744 | 1744 | |
1745 | - // Load preferences from BOINC account |
|
1746 | - $prefs = boincwork_load_prefs('project'); |
|
1745 | + // Load preferences from BOINC account |
|
1746 | + $prefs = boincwork_load_prefs('project'); |
|
1747 | 1747 | |
1748 | - //if (!$prefs AND !$initialize_if_empty) return null; |
|
1748 | + //if (!$prefs AND !$initialize_if_empty) return null; |
|
1749 | 1749 | |
1750 | - $privacy_consent_types = boincwork_load_privacyconsenttypes(); |
|
1750 | + $privacy_consent_types = boincwork_load_privacyconsenttypes(); |
|
1751 | 1751 | |
1752 | - // Define form defaults |
|
1753 | - $default = array( |
|
1752 | + // Define form defaults |
|
1753 | + $default = array( |
|
1754 | 1754 | 'privacy' => array( |
1755 | - 'send_email' => ($boincuser->send_email) ? 1 : 0, |
|
1756 | - 'show_hosts' => ($boincuser->show_hosts) ? 1 : 0 |
|
1755 | + 'send_email' => ($boincuser->send_email) ? 1 : 0, |
|
1756 | + 'show_hosts' => ($boincuser->show_hosts) ? 1 : 0 |
|
1757 | 1757 | ) |
1758 | - ); |
|
1758 | + ); |
|
1759 | 1759 | |
1760 | - // Standard option sets |
|
1761 | - $form['boolean_options'] = array( |
|
1760 | + // Standard option sets |
|
1761 | + $form['boolean_options'] = array( |
|
1762 | 1762 | '#type' => 'value', |
1763 | 1763 | '#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')) |
1764 | - ); |
|
1764 | + ); |
|
1765 | 1765 | |
1766 | - $form['privacy'] = array( |
|
1766 | + $form['privacy'] = array( |
|
1767 | 1767 | '#title' => bts('Privacy settings', array(), NULL, 'boinc:account-preferences-privacy'), |
1768 | 1768 | '#type' => 'fieldset', |
1769 | 1769 | '#description' => null, |
1770 | 1770 | '#collapsible' => TRUE, |
1771 | 1771 | '#collapsed' => FALSE |
1772 | - ); |
|
1773 | - $form['privacy']['send_email'] = array( |
|
1772 | + ); |
|
1773 | + $form['privacy']['send_email'] = array( |
|
1774 | 1774 | '#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'), |
1775 | 1775 | '#type' => 'radios', |
1776 | 1776 | '#options' => $form['boolean_options']['#value'], |
1777 | 1777 | '#attributes' => array('class' => 'fancy'), |
1778 | 1778 | '#default_value' => $default['privacy']['send_email'] |
1779 | - ); |
|
1780 | - $form['privacy']['show_hosts'] = array( |
|
1779 | + ); |
|
1780 | + $form['privacy']['show_hosts'] = array( |
|
1781 | 1781 | '#title' => bts('Should @project show your computers on its web site?', array('@project' => variable_get('site_name', 'Drupal-BOINC')), NULL, 'boinc:account-preferences-privacy'), |
1782 | 1782 | '#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'), |
1783 | 1783 | '#type' => 'radios', |
1784 | 1784 | '#options' => $form['boolean_options']['#value'], |
1785 | 1785 | '#attributes' => array('class' => 'fancy'), |
1786 | 1786 | '#default_value' => $default['privacy']['show_hosts'] |
1787 | - ); |
|
1787 | + ); |
|
1788 | 1788 | |
1789 | - // Loop over privacy consent types and create form question for each |
|
1790 | - // option that deals with privacy. |
|
1791 | - foreach ($privacy_consent_types as $ct) { |
|
1789 | + // Loop over privacy consent types and create form question for each |
|
1790 | + // option that deals with privacy. |
|
1791 | + foreach ($privacy_consent_types as $ct) { |
|
1792 | 1792 | |
1793 | 1793 | $currstate = (check_user_consent($boincuser, $ct['shortname'])) ? 1 : 0 ; |
1794 | 1794 | // Set name to 'privacyconsent_SHORTNAME', which can be parsed |
1795 | 1795 | // later in the submit function. |
1796 | 1796 | $form['privacy']['privacyconsent_'.$ct['shortname']] = array( |
1797 | - '#title' => bts($ct['description'], array(), NULL, 'boinc:account-preferences-privacy'), |
|
1798 | - '#type' => 'radios', |
|
1799 | - '#options' => $form['boolean_options']['#value'], |
|
1800 | - '#attributes' => array('class' => 'fancy'), |
|
1801 | - '#default_value' => $currstate, |
|
1797 | + '#title' => bts($ct['description'], array(), NULL, 'boinc:account-preferences-privacy'), |
|
1798 | + '#type' => 'radios', |
|
1799 | + '#options' => $form['boolean_options']['#value'], |
|
1800 | + '#attributes' => array('class' => 'fancy'), |
|
1801 | + '#default_value' => $currstate, |
|
1802 | 1802 | ); |
1803 | - } |
|
1803 | + } |
|
1804 | 1804 | |
1805 | - // Ignore and block users |
|
1806 | - if (module_exists('ignore_user')) { |
|
1805 | + // Ignore and block users |
|
1806 | + if (module_exists('ignore_user')) { |
|
1807 | 1807 | $form['ignoreblock'] = array( |
1808 | - '#title' => bts('Ignore Users', array(), NULL, 'boinc:account-preferences-privacy'), |
|
1809 | - '#type' => 'fieldset', |
|
1810 | - '#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'), |
|
1811 | - '#collapsible' => TRUE, |
|
1812 | - '#collapsed' => FALSE |
|
1808 | + '#title' => bts('Ignore Users', array(), NULL, 'boinc:account-preferences-privacy'), |
|
1809 | + '#type' => 'fieldset', |
|
1810 | + '#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'), |
|
1811 | + '#collapsible' => TRUE, |
|
1812 | + '#collapsed' => FALSE |
|
1813 | 1813 | ); |
1814 | 1814 | |
1815 | 1815 | // Table for ignored users |
1816 | 1816 | $form['ignoreblock']['current_ignore_section'] = array( |
1817 | - '#type' => 'item', |
|
1818 | - '#value' => bts('Current users on your Ignore List', array(), NULL, 'boinc:ignore-user-list'), |
|
1819 | - '#prefix' => '<h4>', |
|
1820 | - '#suffix' => '</h4>', |
|
1821 | - '#weight' => -20, |
|
1817 | + '#type' => 'item', |
|
1818 | + '#value' => bts('Current users on your Ignore List', array(), NULL, 'boinc:ignore-user-list'), |
|
1819 | + '#prefix' => '<h4>', |
|
1820 | + '#suffix' => '</h4>', |
|
1821 | + '#weight' => -20, |
|
1822 | 1822 | ); |
1823 | 1823 | |
1824 | 1824 | $ignored_users = _ignore_user_ignored_users(); |
1825 | 1825 | foreach ($ignored_users as $ignored_user) { |
1826 | - $form['ignoreblock']['username'][$ignored_user['iuid']] = array( |
|
1826 | + $form['ignoreblock']['username'][$ignored_user['iuid']] = array( |
|
1827 | 1827 | '#value' => $ignored_user['username'], |
1828 | - ); |
|
1829 | - $form['ignoreblock']['delete'][$ignored_user['iuid']] = array( |
|
1828 | + ); |
|
1829 | + $form['ignoreblock']['delete'][$ignored_user['iuid']] = array( |
|
1830 | 1830 | '#value' => l( |
1831 | - bts('delete', array(), NULL, 'boinc:ignore-user-delete-button'), |
|
1832 | - 'account/prefs/privacy/ignore_user/remove/'. $ignored_user['iuid'], |
|
1833 | - array() |
|
1831 | + bts('delete', array(), NULL, 'boinc:ignore-user-delete-button'), |
|
1832 | + 'account/prefs/privacy/ignore_user/remove/'. $ignored_user['iuid'], |
|
1833 | + array() |
|
1834 | 1834 | ), |
1835 | - ); |
|
1835 | + ); |
|
1836 | 1836 | } |
1837 | 1837 | $form['ignoreblock']['pager'] = array('#value' => theme('pager', NULL, 10, 0)); |
1838 | 1838 | |
1839 | 1839 | // Sub-form to add user to ignore list |
1840 | 1840 | $form['ignoreblock']['add_ignore_user_section'] = array( |
1841 | - '#type' => 'item', |
|
1842 | - '#value' => bts('Add user to Ignore List', array(), NULL, 'boinc:ignore-user-add'), |
|
1843 | - '#prefix' => '<h4>', |
|
1844 | - '#suffix' => '</h4>', |
|
1845 | - '#weight' => 10, |
|
1841 | + '#type' => 'item', |
|
1842 | + '#value' => bts('Add user to Ignore List', array(), NULL, 'boinc:ignore-user-add'), |
|
1843 | + '#prefix' => '<h4>', |
|
1844 | + '#suffix' => '</h4>', |
|
1845 | + '#weight' => 10, |
|
1846 | 1846 | ); |
1847 | 1847 | |
1848 | 1848 | $form['ignoreblock']['addusername_toignorelist'] = array( |
1849 | - '#type' => 'textfield', |
|
1850 | - '#title' => bts('Username', array(), NULL, 'boinc:ignore-user-searchbox'), |
|
1851 | - '#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'), |
|
1852 | - '#weight' => 11, |
|
1853 | - '#size' => 50, |
|
1854 | - '#autocomplete_path' => 'boincuser/autocomplete', |
|
1849 | + '#type' => 'textfield', |
|
1850 | + '#title' => bts('Username', array(), NULL, 'boinc:ignore-user-searchbox'), |
|
1851 | + '#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'), |
|
1852 | + '#weight' => 11, |
|
1853 | + '#size' => 50, |
|
1854 | + '#autocomplete_path' => 'boincuser/autocomplete', |
|
1855 | 1855 | ); |
1856 | 1856 | |
1857 | 1857 | $form['ignoreblock']['addusername_submit'] = array( |
1858 | - '#type' => 'submit', |
|
1859 | - '#value' => bts('Ignore user', array(), NULL, 'boinc:ignore-user-add'), |
|
1860 | - '#submit' => array('_boincwork_ignore_list_form_submit'), |
|
1861 | - '#weight' => 12, |
|
1862 | - '#attributes' => array('class' => 'add_ignore_user'), |
|
1858 | + '#type' => 'submit', |
|
1859 | + '#value' => bts('Ignore user', array(), NULL, 'boinc:ignore-user-add'), |
|
1860 | + '#submit' => array('_boincwork_ignore_list_form_submit'), |
|
1861 | + '#weight' => 12, |
|
1862 | + '#attributes' => array('class' => 'add_ignore_user'), |
|
1863 | 1863 | ); |
1864 | - }// endif module_exists |
|
1864 | + }// endif module_exists |
|
1865 | 1865 | |
1866 | - $form['prefs']['separator_bottom'] = array( |
|
1866 | + $form['prefs']['separator_bottom'] = array( |
|
1867 | 1867 | '#value' => '<div class="separator buttons"></div>' |
1868 | - ); |
|
1868 | + ); |
|
1869 | 1869 | |
1870 | - // Form control |
|
1871 | - $form['prefs']['form control tabs prefix'] = array( |
|
1870 | + // Form control |
|
1871 | + $form['prefs']['form control tabs prefix'] = array( |
|
1872 | 1872 | '#value' => '<ul class="form-control tab-list">' |
1873 | - ); |
|
1874 | - $form['prefs']['submit'] = array( |
|
1873 | + ); |
|
1874 | + $form['prefs']['submit'] = array( |
|
1875 | 1875 | '#prefix' => '<li class="first tab">', |
1876 | 1876 | '#type' => 'submit', |
1877 | 1877 | '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'), |
1878 | 1878 | '#validate' => array('boincwork_privacyprefs_form_validate'), |
1879 | 1879 | '#submit' => array('boincwork_privacyprefs_form_submit'), |
1880 | 1880 | '#suffix' => '</li>' |
1881 | - ); |
|
1882 | - $form['prefs']['form control tabs'] = array( |
|
1881 | + ); |
|
1882 | + $form['prefs']['form control tabs'] = array( |
|
1883 | 1883 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>' |
1884 | - ); |
|
1885 | - $form['prefs']['form control tabs suffix'] = array( |
|
1884 | + ); |
|
1885 | + $form['prefs']['form control tabs suffix'] = array( |
|
1886 | 1886 | '#value' => '</ul>' |
1887 | - ); |
|
1887 | + ); |
|
1888 | 1888 | |
1889 | - return $form; |
|
1889 | + return $form; |
|
1890 | 1890 | } |
1891 | 1891 | |
1892 | 1892 | /** |
@@ -1894,93 +1894,93 @@ discard block |
||
1894 | 1894 | */ |
1895 | 1895 | function theme_boincwork_privacyprefs_form($form) { |
1896 | 1896 | |
1897 | - $output = ''; |
|
1898 | - $output .= drupal_render($form['privacy']); |
|
1897 | + $output = ''; |
|
1898 | + $output .= drupal_render($form['privacy']); |
|
1899 | 1899 | |
1900 | - $header = array( |
|
1900 | + $header = array( |
|
1901 | 1901 | bts('Username', array(), NULL, 'boinc:ignore-user-list'), |
1902 | 1902 | bts('Operations', array(), NULL, 'boinc:ignore-user-list') |
1903 | - ); |
|
1903 | + ); |
|
1904 | 1904 | |
1905 | - $rows = array(); |
|
1906 | - if (isset($form['ignoreblock']['username']) && is_array($form['ignoreblock']['username'])) { |
|
1905 | + $rows = array(); |
|
1906 | + if (isset($form['ignoreblock']['username']) && is_array($form['ignoreblock']['username'])) { |
|
1907 | 1907 | foreach (element_children($form['ignoreblock']['username']) as $key) { |
1908 | - $row = array(); |
|
1909 | - $row[] = drupal_render($form['ignoreblock']['username'][$key]); |
|
1910 | - $row[] = drupal_render($form['ignoreblock']['delete'][$key]); |
|
1911 | - $rows[] = $row; |
|
1908 | + $row = array(); |
|
1909 | + $row[] = drupal_render($form['ignoreblock']['username'][$key]); |
|
1910 | + $row[] = drupal_render($form['ignoreblock']['delete'][$key]); |
|
1911 | + $rows[] = $row; |
|
1912 | 1912 | } |
1913 | - } |
|
1914 | - else { |
|
1913 | + } |
|
1914 | + else { |
|
1915 | 1915 | $rows[] = array( |
1916 | - array( |
|
1916 | + array( |
|
1917 | 1917 | 'data' => bts('You have not added any users to your Ignore List.', array(), NULL, 'boinc:ignore-user-list'), |
1918 | 1918 | 'colspan' => '2', |
1919 | - ) |
|
1919 | + ) |
|
1920 | 1920 | ); |
1921 | - } |
|
1921 | + } |
|
1922 | 1922 | |
1923 | - $attr = array('class' => 'ignore_user'); |
|
1924 | - $form['ignoreblock']['current_list']['ignored_users']['#value'] = theme('table', $header, $rows, $attr); |
|
1925 | - $output .= drupal_render($form['current_list']); |
|
1923 | + $attr = array('class' => 'ignore_user'); |
|
1924 | + $form['ignoreblock']['current_list']['ignored_users']['#value'] = theme('table', $header, $rows, $attr); |
|
1925 | + $output .= drupal_render($form['current_list']); |
|
1926 | 1926 | |
1927 | - if ($form['pager']['#value']) { |
|
1927 | + if ($form['pager']['#value']) { |
|
1928 | 1928 | $output .= drupal_render($form['pager']); |
1929 | - } |
|
1929 | + } |
|
1930 | 1930 | |
1931 | - $output .= drupal_render($form); |
|
1931 | + $output .= drupal_render($form); |
|
1932 | 1932 | |
1933 | - return $output; |
|
1933 | + return $output; |
|
1934 | 1934 | } |
1935 | 1935 | |
1936 | 1936 | /** |
1937 | - * Validate the privacy preferences form. |
|
1938 | - */ |
|
1937 | + * Validate the privacy preferences form. |
|
1938 | + */ |
|
1939 | 1939 | function boincwork_privacyprefs_form_validate($form, &$form_state) { |
1940 | - require_boinc('util'); |
|
1940 | + require_boinc('util'); |
|
1941 | 1941 | |
1942 | - // Verify all non-boolean user input values and notify form API of failures |
|
1943 | - // ... currently there are no non-boolean values! |
|
1942 | + // Verify all non-boolean user input values and notify form API of failures |
|
1943 | + // ... currently there are no non-boolean values! |
|
1944 | 1944 | } |
1945 | 1945 | |
1946 | 1946 | /** |
1947 | - * Handle post-validation submission of privacy preferences form. |
|
1948 | - */ |
|
1947 | + * Handle post-validation submission of privacy preferences form. |
|
1948 | + */ |
|
1949 | 1949 | function boincwork_privacyprefs_form_submit($form, &$form_state) { |
1950 | - require_boinc(array('user', 'prefs', 'consent')); |
|
1950 | + require_boinc(array('user', 'prefs', 'consent')); |
|
1951 | 1951 | |
1952 | - global $user; |
|
1953 | - $account = user_load($user->uid); |
|
1952 | + global $user; |
|
1953 | + $account = user_load($user->uid); |
|
1954 | 1954 | |
1955 | - // Load BOINC account |
|
1956 | - $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
1955 | + // Load BOINC account |
|
1956 | + $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
1957 | 1957 | |
1958 | - // Privacy preferences |
|
1959 | - $boincuser->send_email = ($form_state['values']['send_email']) ? true : false; |
|
1960 | - $boincuser->show_hosts = ($form_state['values']['show_hosts']) ? true : false; |
|
1958 | + // Privacy preferences |
|
1959 | + $boincuser->send_email = ($form_state['values']['send_email']) ? true : false; |
|
1960 | + $boincuser->show_hosts = ($form_state['values']['show_hosts']) ? true : false; |
|
1961 | 1961 | |
1962 | - // Privacy consent options, extract the 'privacyconsent_SHORTNAME' |
|
1963 | - // from values array, and loop over them; each is checked with |
|
1964 | - // check_consent_type(). Also check the current state of the option |
|
1965 | - // in the database. If the form value is a new state, then set it. |
|
1966 | - $result = preg_grep("/^privacyconsent/", array_keys($form_state['values'])); |
|
1967 | - $privacyconsent_prefs = array_intersect_key($form_state['values'], array_flip($result)); |
|
1968 | - foreach ($privacyconsent_prefs as $name => $newstate) { |
|
1962 | + // Privacy consent options, extract the 'privacyconsent_SHORTNAME' |
|
1963 | + // from values array, and loop over them; each is checked with |
|
1964 | + // check_consent_type(). Also check the current state of the option |
|
1965 | + // in the database. If the form value is a new state, then set it. |
|
1966 | + $result = preg_grep("/^privacyconsent/", array_keys($form_state['values'])); |
|
1967 | + $privacyconsent_prefs = array_intersect_key($form_state['values'], array_flip($result)); |
|
1968 | + foreach ($privacyconsent_prefs as $name => $newstate) { |
|
1969 | 1969 | $subname = explode('_', $name)[1]; |
1970 | 1970 | $currstate = (check_user_consent($boincuser, $subname)) ? 1 : 0 ; |
1971 | 1971 | list($checkct, $ctid) = check_consent_type($subname); |
1972 | 1972 | if ($checkct && ($currstate != $newstate)) { |
1973 | - consent_to_a_policy($boincuser, $ctid, $newstate, 0, 'Webform', time()); |
|
1973 | + consent_to_a_policy($boincuser, $ctid, $newstate, 0, 'Webform', time()); |
|
1974 | + } |
|
1974 | 1975 | } |
1975 | - } |
|
1976 | 1976 | |
1977 | - //project_prefs_update($boincuser, $main_prefs); |
|
1977 | + //project_prefs_update($boincuser, $main_prefs); |
|
1978 | 1978 | |
1979 | - db_set_active('boinc_rw'); |
|
1980 | - db_query("UPDATE user SET send_email = '{$boincuser->send_email}', show_hosts = '{$boincuser->show_hosts}' WHERE id = '{$boincuser->id}'"); |
|
1981 | - db_set_active('default'); |
|
1979 | + db_set_active('boinc_rw'); |
|
1980 | + db_query("UPDATE user SET send_email = '{$boincuser->send_email}', show_hosts = '{$boincuser->show_hosts}' WHERE id = '{$boincuser->id}'"); |
|
1981 | + db_set_active('default'); |
|
1982 | 1982 | |
1983 | - drupal_set_message(t('Your privacy preferences have been updated.')); |
|
1983 | + drupal_set_message(t('Your privacy preferences have been updated.')); |
|
1984 | 1984 | } |
1985 | 1985 | |
1986 | 1986 | /** |
@@ -1988,14 +1988,14 @@ discard block |
||
1988 | 1988 | * ignore list. |
1989 | 1989 | */ |
1990 | 1990 | function _boincwork_ignore_list_form_submit($form, $form_state) { |
1991 | - boincwork_ignore_user_add_user_username($form_state['values']['addusername_toignorelist']); |
|
1992 | - drupal_set_message( |
|
1991 | + boincwork_ignore_user_add_user_username($form_state['values']['addusername_toignorelist']); |
|
1992 | + drupal_set_message( |
|
1993 | 1993 | bts('@username has been added to your ignore list. See your !privacy_preferences for more details.', |
1994 | - array( |
|
1994 | + array( |
|
1995 | 1995 | '@username' => $form_state['values']['addusername_toignorelist'], |
1996 | 1996 | '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'), |
1997 | - ), |
|
1998 | - NULL, 'boinc:ignore-user-add'), |
|
1997 | + ), |
|
1998 | + NULL, 'boinc:ignore-user-add'), |
|
1999 | 1999 | 'status'); |
2000 | 2000 | } |
2001 | 2001 | |
@@ -2004,37 +2004,37 @@ discard block |
||
2004 | 2004 | */ |
2005 | 2005 | function boincwork_selectapp_form(&$form_state, $apps, $current_app) { |
2006 | 2006 | |
2007 | - $form['selectapp'] = array( |
|
2007 | + $form['selectapp'] = array( |
|
2008 | 2008 | '#type' => 'select', |
2009 | 2009 | '#attributes' => array( |
2010 | - 'class' => 'task-app-filter', |
|
2011 | - 'onchange' => 'this.form.submit();', |
|
2010 | + 'class' => 'task-app-filter', |
|
2011 | + 'onchange' => 'this.form.submit();', |
|
2012 | 2012 | ), |
2013 | 2013 | '#default_value' => $current_app, |
2014 | 2014 | '#options' => $apps, |
2015 | 2015 | '#post_render' => array('_boincwork_selectapp_form_callback'), |
2016 | - ); |
|
2016 | + ); |
|
2017 | 2017 | |
2018 | - // Class task-app-filter-submit for this form is used in |
|
2019 | - // theming. CSS sets 'display:none' if javascript is present. Thus |
|
2020 | - // only non-js users/browsers will see the Apply Filter button. |
|
2021 | - $form['submit'] = array( |
|
2018 | + // Class task-app-filter-submit for this form is used in |
|
2019 | + // theming. CSS sets 'display:none' if javascript is present. Thus |
|
2020 | + // only non-js users/browsers will see the Apply Filter button. |
|
2021 | + $form['submit'] = array( |
|
2022 | 2022 | '#type' => 'submit', |
2023 | 2023 | '#value' => bts('Apply Filter', array(), NULL, 'boinc:form-save'), |
2024 | 2024 | '#attributes' => array('class' => 'js-hide',), |
2025 | - ); |
|
2025 | + ); |
|
2026 | 2026 | |
2027 | - return $form; |
|
2027 | + return $form; |
|
2028 | 2028 | } |
2029 | 2029 | |
2030 | 2030 | /** |
2031 | 2031 | * Submit function for select appliacation form. |
2032 | 2032 | */ |
2033 | 2033 | function boincwork_selectapp_form_submit($form, &$form_state) { |
2034 | - $myargs = arg(); |
|
2035 | - array_pop($myargs); |
|
2036 | - $newpath = implode('/', $myargs ) . '/' . $form['selectapp']['#value']; |
|
2037 | - $form_state['redirect'] = $newpath; |
|
2034 | + $myargs = arg(); |
|
2035 | + array_pop($myargs); |
|
2036 | + $newpath = implode('/', $myargs ) . '/' . $form['selectapp']['#value']; |
|
2037 | + $form_state['redirect'] = $newpath; |
|
2038 | 2038 | } |
2039 | 2039 | |
2040 | 2040 | /** |
@@ -2044,7 +2044,7 @@ discard block |
||
2044 | 2044 | * 'title' for the Application drop down box. |
2045 | 2045 | */ |
2046 | 2046 | function _boincwork_selectapp_form_callback($theContent, $theElement) { |
2047 | - $disabled = '<option value="-1" disabled hidden'; |
|
2048 | - $newContent = preg_replace('/<option value="-1"/', $disabled, $theContent); |
|
2049 | - return $newContent; |
|
2047 | + $disabled = '<option value="-1" disabled hidden'; |
|
2048 | + $newContent = preg_replace('/<option value="-1"/', $disabled, $theContent); |
|
2049 | + return $newContent; |
|
2050 | 2050 | } |
@@ -286,11 +286,11 @@ |
||
286 | 286 | |
287 | 287 | require_once("../inc/account_ownership.inc"); |
288 | 288 | if (file_exists($account_ownership_private_key_file_path)) { |
289 | - // If the server has keys configured show the account ownership form |
|
290 | - row2( |
|
291 | - tra("Account Ownership"), |
|
292 | - "<a href=\"account_ownership.php?$url_tokens\">Generate ownership proof</a>" |
|
293 | - ); |
|
289 | + // If the server has keys configured show the account ownership form |
|
290 | + row2( |
|
291 | + tra("Account Ownership"), |
|
292 | + "<a href=\"account_ownership.php?$url_tokens\">Generate ownership proof</a>" |
|
293 | + ); |
|
294 | 294 | } |
295 | 295 | |
296 | 296 | } |