@@ -11,19 +11,19 @@ discard block |
||
| 11 | 11 | * that was selected |
| 12 | 12 | */ |
| 13 | 13 | function boincwork_ahah_helper_venue_submit($form, &$form_state) { |
| 14 | - $form_state['storage']['prefs']['preset'] = null; |
|
| 15 | - ahah_helper_generic_submit($form, $form_state); |
|
| 14 | + $form_state['storage']['prefs']['preset'] = null; |
|
| 15 | + ahah_helper_generic_submit($form, $form_state); |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | /** |
| 19 | 19 | * Get a predetermined set of preferences |
| 20 | 20 | */ |
| 21 | 21 | function boincwork_get_preset_prefs($preset = null) { |
| 22 | - $saved_state = variable_get('boincwork_preset_prefs', null); |
|
| 22 | + $saved_state = variable_get('boincwork_preset_prefs', null); |
|
| 23 | 23 | |
| 24 | - // If not configured yet, use these values as for inital |
|
| 25 | - // computing/general preferences. |
|
| 26 | - if (!$saved_state) { |
|
| 24 | + // If not configured yet, use these values as for inital |
|
| 25 | + // computing/general preferences. |
|
| 26 | + if (!$saved_state) { |
|
| 27 | 27 | // Get BOINC project disk space configurations from config.xml to |
| 28 | 28 | // fill in initial preference values. |
| 29 | 29 | require_boinc(array('db', 'prefs')); |
@@ -160,88 +160,88 @@ discard block |
||
| 160 | 160 | <dont_verify_images>0</dont_verify_images> |
| 161 | 161 | </preset> |
| 162 | 162 | </general_preferences>'; |
| 163 | - } |
|
| 163 | + } |
|
| 164 | 164 | |
| 165 | - // Convert XML data to array format |
|
| 166 | - $preset_prefs = load_configuration($saved_state); |
|
| 165 | + // Convert XML data to array format |
|
| 166 | + $preset_prefs = load_configuration($saved_state); |
|
| 167 | 167 | |
| 168 | - if ($preset) { |
|
| 168 | + if ($preset) { |
|
| 169 | 169 | // Load preset from configuration |
| 170 | 170 | $preset_prefs = (array) $preset_prefs['general_preferences']; |
| 171 | 171 | if (isset($preset_prefs['preset'])) { |
| 172 | - if (!is_numeric(key($preset_prefs['preset']))) { |
|
| 172 | + if (!is_numeric(key($preset_prefs['preset']))) { |
|
| 173 | 173 | $preset_prefs['preset'] = array($preset_prefs['preset']); |
| 174 | - } |
|
| 175 | - foreach ($preset_prefs['preset'] as $key => $prefs) { |
|
| 174 | + } |
|
| 175 | + foreach ($preset_prefs['preset'] as $key => $prefs) { |
|
| 176 | 176 | if (isset($prefs['@attributes']['name']) AND $prefs['@attributes']['name'] == $preset) { |
| 177 | - return $preset_prefs['preset'][$key]; |
|
| 177 | + return $preset_prefs['preset'][$key]; |
|
| 178 | + } |
|
| 178 | 179 | } |
| 179 | - } |
|
| 180 | 180 | } |
| 181 | - } |
|
| 182 | - return $preset_prefs; |
|
| 181 | + } |
|
| 182 | + return $preset_prefs; |
|
| 183 | 183 | } |
| 184 | 184 | |
| 185 | 185 | /** |
| 186 | 186 | * Load (and validate) the project specific configuration XML |
| 187 | 187 | */ |
| 188 | 188 | function boincwork_get_project_specific_config() { |
| 189 | - $raw_config_data = variable_get('boinc_project_specific_prefs_config', ''); |
|
| 189 | + $raw_config_data = variable_get('boinc_project_specific_prefs_config', ''); |
|
| 190 | 190 | |
| 191 | - $xsd = './' . drupal_get_path('module', 'boincwork') . '/includes/projectprefs.xsd'; |
|
| 192 | - libxml_use_internal_errors(true); |
|
| 191 | + $xsd = './' . drupal_get_path('module', 'boincwork') . '/includes/projectprefs.xsd'; |
|
| 192 | + libxml_use_internal_errors(true); |
|
| 193 | 193 | |
| 194 | - $xml = new DomDocument(); |
|
| 195 | - $xml->loadXML($raw_config_data, LIBXML_NOBLANKS); |
|
| 196 | - if (!$xml->schemaValidate($xsd)) { |
|
| 194 | + $xml = new DomDocument(); |
|
| 195 | + $xml->loadXML($raw_config_data, LIBXML_NOBLANKS); |
|
| 196 | + if (!$xml->schemaValidate($xsd)) { |
|
| 197 | 197 | $errors = libxml_get_errors(); |
| 198 | 198 | $lines = explode("\r", $raw_config_data); |
| 199 | 199 | drupal_set_message("{$errors[0]->message} at line {$errors[0]->line}" . |
| 200 | - ': <br/>' . htmlentities($lines[$errors[0]->line - 1]), 'error'); |
|
| 200 | + ': <br/>' . htmlentities($lines[$errors[0]->line - 1]), 'error'); |
|
| 201 | 201 | return NULL; |
| 202 | - } |
|
| 202 | + } |
|
| 203 | 203 | |
| 204 | - // Convert XML to array for validation |
|
| 205 | - $xml = load_configuration($raw_config_data); |
|
| 206 | - return $xml; |
|
| 204 | + // Convert XML to array for validation |
|
| 205 | + $xml = load_configuration($raw_config_data); |
|
| 206 | + return $xml; |
|
| 207 | 207 | } |
| 208 | 208 | |
| 209 | 209 | /** |
| 210 | 210 | * Get rules by which to validate project specific data |
| 211 | 211 | */ |
| 212 | 212 | function boincwork_get_project_specific_config_validation_rules($xml = array()) { |
| 213 | - $rules = array(); |
|
| 214 | - if (!$xml) { |
|
| 213 | + $rules = array(); |
|
| 214 | + if (!$xml) { |
|
| 215 | 215 | // Read the config XML |
| 216 | 216 | $xml = boincwork_get_project_specific_config(); |
| 217 | 217 | $xml = $xml['project_specific_preferences']; |
| 218 | - } |
|
| 219 | - foreach ($xml as $type => $elements) { |
|
| 218 | + } |
|
| 219 | + foreach ($xml as $type => $elements) { |
|
| 220 | 220 | if (is_array($elements) AND !is_numeric(key($elements))) { |
| 221 | - $elements = array($elements); |
|
| 221 | + $elements = array($elements); |
|
| 222 | 222 | } |
| 223 | 223 | switch ($type) { |
| 224 | 224 | case 'compound': |
| 225 | 225 | foreach ($elements as $element) { |
| 226 | 226 | $name = $element['@attributes']['name']; |
| 227 | 227 | $rules[$name] = boincwork_get_project_specific_config_validation_rules($element['attributes']); |
| 228 | - } |
|
| 229 | - break; |
|
| 228 | + } |
|
| 229 | + break; |
|
| 230 | 230 | |
| 231 | 231 | case 'text': |
| 232 | 232 | foreach ($elements as $element) { |
| 233 | 233 | $name = $element['@attributes']['name']; |
| 234 | 234 | $rules[$name] = array( |
| 235 | - 'datatype' => $element['@attributes']['datatype'] |
|
| 235 | + 'datatype' => $element['@attributes']['datatype'] |
|
| 236 | 236 | ); |
| 237 | 237 | if (isset($element['@attributes']['min'])) { |
| 238 | - $rules[$name]['min'] = $element['@attributes']['min']; |
|
| 238 | + $rules[$name]['min'] = $element['@attributes']['min']; |
|
| 239 | 239 | } |
| 240 | 240 | if (isset($element['@attributes']['max'])) { |
| 241 | - $rules[$name]['max'] = $element['@attributes']['max']; |
|
| 241 | + $rules[$name]['max'] = $element['@attributes']['max']; |
|
| 242 | 242 | } |
| 243 | - } |
|
| 244 | - break; |
|
| 243 | + } |
|
| 244 | + break; |
|
| 245 | 245 | /* |
| 246 | 246 | case 'radio': |
| 247 | 247 | case 'dropdown': |
@@ -265,24 +265,24 @@ discard block |
||
| 265 | 265 | $rules['apps'] = array( |
| 266 | 266 | 'minimum selected' => 1, |
| 267 | 267 | 'list' => array() |
| 268 | - ); |
|
| 269 | - foreach ($elements as $element) { |
|
| 268 | + ); |
|
| 269 | + foreach ($elements as $element) { |
|
| 270 | 270 | foreach ($element['app'] as $app) { |
| 271 | - $name = "app_{$app['@attributes']['id']}"; |
|
| 272 | - $rules['apps']['list'][] = $name; |
|
| 273 | - //$rules[$name] = array( |
|
| 274 | - // 'options' => $options |
|
| 275 | - //); |
|
| 271 | + $name = "app_{$app['@attributes']['id']}"; |
|
| 272 | + $rules['apps']['list'][] = $name; |
|
| 273 | + //$rules[$name] = array( |
|
| 274 | + // 'options' => $options |
|
| 275 | + //); |
|
| 276 | 276 | } |
| 277 | - } |
|
| 278 | - break; |
|
| 277 | + } |
|
| 278 | + break; |
|
| 279 | 279 | |
| 280 | 280 | case 'group': |
| 281 | 281 | foreach ($elements as $element) { |
| 282 | 282 | $name = $element['@attributes']['name']; |
| 283 | 283 | $rules += boincwork_get_project_specific_config_validation_rules($element); |
| 284 | - } |
|
| 285 | - break; |
|
| 284 | + } |
|
| 285 | + break; |
|
| 286 | 286 | /* |
| 287 | 287 | case 'boolean': |
| 288 | 288 | // Shouldn't need to validate boolean... |
@@ -290,39 +290,39 @@ discard block |
||
| 290 | 290 | */ |
| 291 | 291 | default: |
| 292 | 292 | } |
| 293 | - } |
|
| 294 | - return $rules; |
|
| 293 | + } |
|
| 294 | + return $rules; |
|
| 295 | 295 | } |
| 296 | 296 | |
| 297 | 297 | /** |
| 298 | 298 | * Define how project specific settings should be saved |
| 299 | 299 | */ |
| 300 | 300 | function boincwork_format_project_specific_prefs_data($values, $xml = array()) { |
| 301 | - $defaults = array(); |
|
| 302 | - if (!$xml) { |
|
| 301 | + $defaults = array(); |
|
| 302 | + if (!$xml) { |
|
| 303 | 303 | // Read the config XML |
| 304 | 304 | $xml = boincwork_get_project_specific_config(); |
| 305 | 305 | $xml = $xml['project_specific_preferences']; |
| 306 | - } |
|
| 307 | - foreach ($xml as $type => $elements) { |
|
| 306 | + } |
|
| 307 | + foreach ($xml as $type => $elements) { |
|
| 308 | 308 | $structure_data = array(); |
| 309 | 309 | if (is_array($elements) AND !is_numeric(key($elements))) { |
| 310 | - $elements = array($elements); |
|
| 310 | + $elements = array($elements); |
|
| 311 | 311 | } |
| 312 | 312 | switch ($type) { |
| 313 | 313 | case 'compound': |
| 314 | 314 | foreach ($elements as $element) { |
| 315 | 315 | $name = $element['@attributes']['name']; |
| 316 | 316 | $default[$name]['@attributes'] = boincwork_format_project_specific_prefs_data($values[$name], $element['attributes']); |
| 317 | - } |
|
| 318 | - $defaults += $default; |
|
| 319 | - break; |
|
| 317 | + } |
|
| 318 | + $defaults += $default; |
|
| 319 | + break; |
|
| 320 | 320 | |
| 321 | 321 | case 'group': |
| 322 | 322 | foreach ($elements as $element) { |
| 323 | 323 | $defaults += boincwork_format_project_specific_prefs_data($values, $element); |
| 324 | - } |
|
| 325 | - break; |
|
| 324 | + } |
|
| 325 | + break; |
|
| 326 | 326 | |
| 327 | 327 | case 'text': |
| 328 | 328 | case 'radio': |
@@ -331,315 +331,315 @@ discard block |
||
| 331 | 331 | foreach ($elements as $element) { |
| 332 | 332 | $name = $element['@attributes']['name']; |
| 333 | 333 | if (isset($element['@attributes']['entitytype']) AND $element['@attributes']['entitytype'] == 'attribute') { |
| 334 | - $defaults['@attributes'][$name] = $values[$name]; |
|
| 334 | + $defaults['@attributes'][$name] = $values[$name]; |
|
| 335 | 335 | } |
| 336 | 336 | else { |
| 337 | - $defaults[$name] = $values[$name]; |
|
| 337 | + $defaults[$name] = $values[$name]; |
|
| 338 | 338 | } |
| 339 | - } |
|
| 340 | - break; |
|
| 339 | + } |
|
| 340 | + break; |
|
| 341 | 341 | |
| 342 | 342 | case 'apps': |
| 343 | 343 | foreach ($elements as $element) { |
| 344 | 344 | $defaults['app_id'] = array(); |
| 345 | 345 | foreach ($element['app'] as $app) { |
| 346 | - $app_id = $app['@attributes']['id']; |
|
| 347 | - if ($values['applications']["app_{$app_id}"]) { |
|
| 346 | + $app_id = $app['@attributes']['id']; |
|
| 347 | + if ($values['applications']["app_{$app_id}"]) { |
|
| 348 | 348 | $defaults['app_id'][] = $app_id; |
| 349 | - } |
|
| 349 | + } |
|
| 350 | 350 | } |
| 351 | - } |
|
| 352 | - break; |
|
| 351 | + } |
|
| 352 | + break; |
|
| 353 | 353 | |
| 354 | 354 | default: |
| 355 | 355 | } |
| 356 | - } |
|
| 357 | - return $defaults; |
|
| 356 | + } |
|
| 357 | + return $defaults; |
|
| 358 | 358 | } |
| 359 | 359 | |
| 360 | 360 | /** |
| 361 | 361 | * Add an element to the form based on its definition |
| 362 | 362 | */ |
| 363 | 363 | function boincwork_generate_prefs_element(&$form, $type, $elements, $user_prefs = null) { |
| 364 | - switch ($type) { |
|
| 365 | - case 'text': |
|
| 364 | + switch ($type) { |
|
| 365 | + case 'text': |
|
| 366 | 366 | if (!is_numeric(key($elements))) { |
| 367 | - $elements = array($elements); |
|
| 367 | + $elements = array($elements); |
|
| 368 | 368 | } |
| 369 | 369 | foreach ($elements as $element) { |
| 370 | - $name = $element['@attributes']['name']; |
|
| 371 | - $default = $element['@attributes']['default']; |
|
| 372 | - $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 373 | - $description = ''; |
|
| 374 | - if (isset($element['description'])) { |
|
| 370 | + $name = $element['@attributes']['name']; |
|
| 371 | + $default = $element['@attributes']['default']; |
|
| 372 | + $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 373 | + $description = ''; |
|
| 374 | + if (isset($element['description'])) { |
|
| 375 | 375 | $description = is_array($element['description']) ? $element['description']['@value'] : $element['description']; |
| 376 | - } |
|
| 376 | + } |
|
| 377 | 377 | |
| 378 | - $value = $default; |
|
| 379 | - $user_pref = $user_prefs; |
|
| 380 | - $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 381 | - if ($entitytype == 'attribute') { |
|
| 378 | + $value = $default; |
|
| 379 | + $user_pref = $user_prefs; |
|
| 380 | + $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 381 | + if ($entitytype == 'attribute') { |
|
| 382 | 382 | $user_pref = $user_prefs['@attributes']; |
| 383 | - } |
|
| 384 | - if (isset($user_pref[$name])) { |
|
| 383 | + } |
|
| 384 | + if (isset($user_pref[$name])) { |
|
| 385 | 385 | if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) { |
| 386 | - $value = $user_pref[$name]['@value']; |
|
| 386 | + $value = $user_pref[$name]['@value']; |
|
| 387 | 387 | } |
| 388 | 388 | else { |
| 389 | - $value = $user_pref[$name]; |
|
| 389 | + $value = $user_pref[$name]; |
|
| 390 | + } |
|
| 390 | 391 | } |
| 391 | - } |
|
| 392 | 392 | |
| 393 | - // Use appropriate datatype |
|
| 394 | - if (isset($element['@attributes']['datatype'])) { |
|
| 393 | + // Use appropriate datatype |
|
| 394 | + if (isset($element['@attributes']['datatype'])) { |
|
| 395 | 395 | switch($element['@attributes']['datatype']) { |
| 396 | 396 | case 'integer': |
| 397 | 397 | $value = (int) $value; |
| 398 | - break; |
|
| 398 | + break; |
|
| 399 | 399 | |
| 400 | 400 | case 'float': |
| 401 | 401 | $value = number_format((float) $value, 2); |
| 402 | - break; |
|
| 402 | + break; |
|
| 403 | 403 | |
| 404 | 404 | default: |
| 405 | 405 | } |
| 406 | - } |
|
| 406 | + } |
|
| 407 | 407 | |
| 408 | - // Translate elements as appropriate |
|
| 409 | - if ($title) { |
|
| 408 | + // Translate elements as appropriate |
|
| 409 | + if ($title) { |
|
| 410 | 410 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 411 | 411 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 412 | - } |
|
| 413 | - if ($description) { |
|
| 412 | + } |
|
| 413 | + if ($description) { |
|
| 414 | 414 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 415 | 415 | $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 416 | - } |
|
| 416 | + } |
|
| 417 | 417 | |
| 418 | - $form[$name] = array( |
|
| 418 | + $form[$name] = array( |
|
| 419 | 419 | '#title' => $title, |
| 420 | 420 | '#type' => 'textfield', |
| 421 | 421 | '#default_value' => $value, |
| 422 | 422 | '#size' => 5, |
| 423 | 423 | '#description' => $description . bts(' Default value: @default', array('@default' => $default), NULL, 'boinc:account-preferences-project') |
| 424 | - ); |
|
| 424 | + ); |
|
| 425 | 425 | } |
| 426 | 426 | break; |
| 427 | 427 | |
| 428 | - case 'boolean': |
|
| 428 | + case 'boolean': |
|
| 429 | 429 | if (!is_numeric(key($elements))) { |
| 430 | - $elements = array($elements); |
|
| 430 | + $elements = array($elements); |
|
| 431 | 431 | } |
| 432 | 432 | foreach ($elements as $element) { |
| 433 | - $name = $element['@attributes']['name']; |
|
| 434 | - $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 435 | - $default = (isset($element['@attributes']['selected']) AND $element['@attributes']['selected'] == 'true') ? 1 : 0; |
|
| 436 | - $description = ''; |
|
| 437 | - if (isset($element['description'])) { |
|
| 433 | + $name = $element['@attributes']['name']; |
|
| 434 | + $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 435 | + $default = (isset($element['@attributes']['selected']) AND $element['@attributes']['selected'] == 'true') ? 1 : 0; |
|
| 436 | + $description = ''; |
|
| 437 | + if (isset($element['description'])) { |
|
| 438 | 438 | $description = is_array($element['description']) ? $element['description']['@value'] : $element['description']; |
| 439 | - } |
|
| 439 | + } |
|
| 440 | 440 | |
| 441 | - $value = $default; |
|
| 442 | - $user_pref = $user_prefs; |
|
| 443 | - $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 444 | - if ($entitytype == 'attribute') { |
|
| 441 | + $value = $default; |
|
| 442 | + $user_pref = $user_prefs; |
|
| 443 | + $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 444 | + if ($entitytype == 'attribute') { |
|
| 445 | 445 | $user_pref = $user_prefs['@attributes']; |
| 446 | - } |
|
| 447 | - if (isset($user_pref[$name])) { |
|
| 446 | + } |
|
| 447 | + if (isset($user_pref[$name])) { |
|
| 448 | 448 | if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) { |
| 449 | - $value = $user_pref[$name]['@value']; |
|
| 449 | + $value = $user_pref[$name]['@value']; |
|
| 450 | 450 | } |
| 451 | 451 | else { |
| 452 | - $value = $user_pref[$name]; |
|
| 452 | + $value = $user_pref[$name]; |
|
| 453 | + } |
|
| 453 | 454 | } |
| 454 | - } |
|
| 455 | 455 | |
| 456 | - // Translate elements as appropriate |
|
| 457 | - if ($title) { |
|
| 456 | + // Translate elements as appropriate |
|
| 457 | + if ($title) { |
|
| 458 | 458 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 459 | 459 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 460 | - } |
|
| 461 | - if ($description) { |
|
| 460 | + } |
|
| 461 | + if ($description) { |
|
| 462 | 462 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 463 | 463 | $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 464 | - } |
|
| 464 | + } |
|
| 465 | 465 | |
| 466 | - $form[$name] = array( |
|
| 466 | + $form[$name] = array( |
|
| 467 | 467 | '#title' => $title, |
| 468 | 468 | '#type' => 'radios', |
| 469 | 469 | '#options' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes')), |
| 470 | 470 | '#attributes' => array('class' => 'fancy'), |
| 471 | 471 | '#default_value' => $value, |
| 472 | 472 | '#description' => $description |
| 473 | - ); |
|
| 473 | + ); |
|
| 474 | 474 | } |
| 475 | 475 | break; |
| 476 | 476 | |
| 477 | - case 'radio': |
|
| 477 | + case 'radio': |
|
| 478 | 478 | case 'dropdown': |
| 479 | 479 | |
| 480 | 480 | if (!is_numeric(key($elements))) { |
| 481 | - $elements = array($elements); |
|
| 481 | + $elements = array($elements); |
|
| 482 | 482 | } |
| 483 | 483 | foreach ($elements as $element) { |
| 484 | - $name = $element['@attributes']['name']; |
|
| 485 | - $default = null; |
|
| 486 | - $options = array(); |
|
| 487 | - foreach($element['items']['item'] as $item) { |
|
| 484 | + $name = $element['@attributes']['name']; |
|
| 485 | + $default = null; |
|
| 486 | + $options = array(); |
|
| 487 | + foreach($element['items']['item'] as $item) { |
|
| 488 | 488 | if (is_array($item)) { |
| 489 | - $value = $item['@value']; |
|
| 490 | - if ($default === NULL AND |
|
| 489 | + $value = $item['@value']; |
|
| 490 | + if ($default === NULL AND |
|
| 491 | 491 | isset($item['@attributes']) AND |
| 492 | 492 | isset($item['@attributes']['selected'])) { |
| 493 | 493 | $default = ($item['@attributes']['selected'] == 'true') ? $item['@value'] : null; |
| 494 | - } |
|
| 494 | + } |
|
| 495 | 495 | } |
| 496 | 496 | else { |
| 497 | - $value = $item; |
|
| 497 | + $value = $item; |
|
| 498 | 498 | } |
| 499 | 499 | $options[$value] = $value; |
| 500 | - } |
|
| 501 | - $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 502 | - $description = ''; |
|
| 503 | - if (isset($element['description'])) { |
|
| 500 | + } |
|
| 501 | + $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 502 | + $description = ''; |
|
| 503 | + if (isset($element['description'])) { |
|
| 504 | 504 | $description = is_array($element['description']) ? $element['description']['@value'] : $element['description']; |
| 505 | - } |
|
| 506 | - $user_pref = $user_prefs; |
|
| 507 | - $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 508 | - if ($entitytype == 'attribute') { |
|
| 505 | + } |
|
| 506 | + $user_pref = $user_prefs; |
|
| 507 | + $entitytype = isset($element['@attributes']['entitytype']) ? $element['@attributes']['entitytype'] : 'element'; |
|
| 508 | + if ($entitytype == 'attribute') { |
|
| 509 | 509 | $user_pref = $user_prefs['@attributes']; |
| 510 | - } |
|
| 511 | - $value = isset($user_pref[$name]) ? $user_pref[$name] : $default; |
|
| 510 | + } |
|
| 511 | + $value = isset($user_pref[$name]) ? $user_pref[$name] : $default; |
|
| 512 | 512 | |
| 513 | - // Translate elements as appropriate |
|
| 514 | - if ($title) { |
|
| 513 | + // Translate elements as appropriate |
|
| 514 | + if ($title) { |
|
| 515 | 515 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 516 | 516 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 517 | - } |
|
| 518 | - if ($description) { |
|
| 517 | + } |
|
| 518 | + if ($description) { |
|
| 519 | 519 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 520 | 520 | $description = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($description)); |
| 521 | - } |
|
| 521 | + } |
|
| 522 | 522 | |
| 523 | - $form[$name] = array( |
|
| 523 | + $form[$name] = array( |
|
| 524 | 524 | '#title' => $title, |
| 525 | 525 | '#type' => ($type == 'radio') ? 'radios' : 'select', |
| 526 | 526 | '#options' => $options, |
| 527 | 527 | '#attributes' => array('class' => 'fancy'), |
| 528 | 528 | '#default_value' => $value, |
| 529 | 529 | '#description' => $description . bts(' Default value: @default', array('@default' =>$default), NULL, 'boinc:account-preferences-project') |
| 530 | - ); |
|
| 530 | + ); |
|
| 531 | 531 | } |
| 532 | 532 | break; |
| 533 | 533 | |
| 534 | - case 'apps': |
|
| 534 | + case 'apps': |
|
| 535 | 535 | $title = is_array($elements['title']) ? $elements['title']['@value'] : $elements['title']; |
| 536 | 536 | |
| 537 | - // Translate elements as appropriate |
|
| 538 | - if ($title) { |
|
| 537 | + // Translate elements as appropriate |
|
| 538 | + if ($title) { |
|
| 539 | 539 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 540 | 540 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 541 | - } |
|
| 541 | + } |
|
| 542 | 542 | |
| 543 | 543 | $form['applications'] = array( |
| 544 | - '#title' => bts('Applications', array(), NULL, 'boinc:account-preferences'), |
|
| 545 | - '#type' => 'fieldset', |
|
| 546 | - '#description' => $title, |
|
| 547 | - '#collapsible' => TRUE, |
|
| 548 | - '#collapsed' => FALSE |
|
| 544 | + '#title' => bts('Applications', array(), NULL, 'boinc:account-preferences'), |
|
| 545 | + '#type' => 'fieldset', |
|
| 546 | + '#description' => $title, |
|
| 547 | + '#collapsible' => TRUE, |
|
| 548 | + '#collapsed' => FALSE |
|
| 549 | 549 | ); |
| 550 | 550 | $applications = array(); |
| 551 | 551 | if (!is_array($user_prefs['app_id'])) { |
| 552 | - $user_prefs['app_id'] = array($user_prefs['app_id']); |
|
| 552 | + $user_prefs['app_id'] = array($user_prefs['app_id']); |
|
| 553 | 553 | } |
| 554 | 554 | foreach ($user_prefs['app_id'] as $app) { |
| 555 | - if (!$app) continue; |
|
| 556 | - if (is_array($app) AND isset($app['@value'])) { |
|
| 555 | + if (!$app) continue; |
|
| 556 | + if (is_array($app) AND isset($app['@value'])) { |
|
| 557 | 557 | $app = $app['@value']; |
| 558 | - } |
|
| 559 | - $applications[] = $app; |
|
| 558 | + } |
|
| 559 | + $applications[] = $app; |
|
| 560 | 560 | } |
| 561 | 561 | foreach ($elements['app'] as $app) { |
| 562 | - $app_id = $app['@attributes']['id']; |
|
| 563 | - $app_name = $app['@value']; |
|
| 564 | - $app_enabled = TRUE; |
|
| 565 | - if (isset($app['@attributes']['enabled']) AND |
|
| 562 | + $app_id = $app['@attributes']['id']; |
|
| 563 | + $app_name = $app['@value']; |
|
| 564 | + $app_enabled = TRUE; |
|
| 565 | + if (isset($app['@attributes']['enabled']) AND |
|
| 566 | 566 | $app['@attributes']['enabled'] == 'false') { |
| 567 | 567 | $app_enabled = FALSE; |
| 568 | - } |
|
| 569 | - if ($applications) { |
|
| 568 | + } |
|
| 569 | + if ($applications) { |
|
| 570 | 570 | $checked = in_array($app_id, $applications); |
| 571 | - } else { |
|
| 571 | + } else { |
|
| 572 | 572 | $checked = TRUE; |
| 573 | 573 | if (isset($app['@attributes']['selected']) AND |
| 574 | 574 | $app['@attributes']['selected'] == 'false') { |
| 575 | - $checked = FALSE; |
|
| 575 | + $checked = FALSE; |
|
| 576 | 576 | } |
| 577 | - } |
|
| 578 | - $form['applications']["app_{$app_id}"] = array( |
|
| 577 | + } |
|
| 578 | + $form['applications']["app_{$app_id}"] = array( |
|
| 579 | 579 | '#title' => $app_name, |
| 580 | 580 | '#type' => 'checkbox', |
| 581 | 581 | '#default_value' => ($checked) ? 'x' : false, |
| 582 | 582 | '#disabled' => !$app_enabled |
| 583 | - ); |
|
| 583 | + ); |
|
| 584 | 584 | } |
| 585 | 585 | |
| 586 | 586 | break; |
| 587 | 587 | |
| 588 | - case 'group': |
|
| 588 | + case 'group': |
|
| 589 | 589 | if (!is_numeric(key($elements))) { |
| 590 | - $elements = array($elements); |
|
| 590 | + $elements = array($elements); |
|
| 591 | 591 | } |
| 592 | 592 | foreach ($elements as $key => $element) { |
| 593 | - $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 594 | - $name = str_replace(' ','_',strtolower($title)); |
|
| 595 | - $name = "group_{$name}"; |
|
| 593 | + $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 594 | + $name = str_replace(' ','_',strtolower($title)); |
|
| 595 | + $name = "group_{$name}"; |
|
| 596 | 596 | |
| 597 | - // Translate elements as appropriate |
|
| 598 | - if ($title) { |
|
| 597 | + // Translate elements as appropriate |
|
| 598 | + if ($title) { |
|
| 599 | 599 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 600 | 600 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 601 | - } |
|
| 601 | + } |
|
| 602 | 602 | |
| 603 | - $form[$name] = array( |
|
| 604 | - '#title' => $title, |
|
| 605 | - '#type' => 'fieldset', |
|
| 606 | - '#tree' => FALSE, |
|
| 607 | - //'#description' => t('Notes about this group of fields'), |
|
| 608 | - '#collapsible' => TRUE, |
|
| 609 | - '#collapsed' => FALSE |
|
| 610 | - ); |
|
| 611 | - // Recursively populate the compound element |
|
| 612 | - foreach ($element as $child_type => $child) { |
|
| 603 | + $form[$name] = array( |
|
| 604 | + '#title' => $title, |
|
| 605 | + '#type' => 'fieldset', |
|
| 606 | + '#tree' => FALSE, |
|
| 607 | + //'#description' => t('Notes about this group of fields'), |
|
| 608 | + '#collapsible' => TRUE, |
|
| 609 | + '#collapsed' => FALSE |
|
| 610 | + ); |
|
| 611 | + // Recursively populate the compound element |
|
| 612 | + foreach ($element as $child_type => $child) { |
|
| 613 | 613 | boincwork_generate_prefs_element($form[$name], $child_type, $child, $user_prefs); |
| 614 | - } |
|
| 614 | + } |
|
| 615 | 615 | } |
| 616 | 616 | break; |
| 617 | 617 | |
| 618 | - case 'compound': |
|
| 618 | + case 'compound': |
|
| 619 | 619 | if (!is_numeric(key($elements))) { |
| 620 | - $elements = array($elements); |
|
| 620 | + $elements = array($elements); |
|
| 621 | 621 | } |
| 622 | 622 | foreach ($elements as $element) { |
| 623 | - $name = $element['@attributes']['name']; |
|
| 624 | - $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 623 | + $name = $element['@attributes']['name']; |
|
| 624 | + $title = is_array($element['title']) ? $element['title']['@value'] : $element['title']; |
|
| 625 | 625 | |
| 626 | - // Translate elements as appropriate |
|
| 627 | - if ($title) { |
|
| 626 | + // Translate elements as appropriate |
|
| 627 | + if ($title) { |
|
| 628 | 628 | i18nstrings_update('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 629 | 629 | $title = i18nstrings('project:prefs_xml', _boinctranslate_supertrim($title)); |
| 630 | - } |
|
| 630 | + } |
|
| 631 | 631 | |
| 632 | - $form[$name] = array( |
|
| 633 | - '#title' => $title, |
|
| 634 | - '#type' => 'fieldset', |
|
| 635 | - //'#description' => t('Notes about this group of fields'), |
|
| 636 | - '#collapsible' => TRUE, |
|
| 637 | - '#collapsed' => FALSE |
|
| 638 | - ); |
|
| 639 | - // Recursively populate the compound element |
|
| 640 | - foreach ($element['attributes'] as $child_type => $child) { |
|
| 632 | + $form[$name] = array( |
|
| 633 | + '#title' => $title, |
|
| 634 | + '#type' => 'fieldset', |
|
| 635 | + //'#description' => t('Notes about this group of fields'), |
|
| 636 | + '#collapsible' => TRUE, |
|
| 637 | + '#collapsed' => FALSE |
|
| 638 | + ); |
|
| 639 | + // Recursively populate the compound element |
|
| 640 | + foreach ($element['attributes'] as $child_type => $child) { |
|
| 641 | 641 | boincwork_generate_prefs_element($form[$name], $child_type, $child, $user_prefs[$name]['@attributes']); |
| 642 | - } |
|
| 642 | + } |
|
| 643 | 643 | } |
| 644 | 644 | break; |
| 645 | 645 | |
@@ -655,24 +655,24 @@ discard block |
||
| 655 | 655 | */ |
| 656 | 656 | function boincwork_make_prefs_table($prefs, $top_level = TRUE) { |
| 657 | 657 | |
| 658 | - $prefs_table = array(); |
|
| 659 | - $uncategorized = array(); |
|
| 658 | + $prefs_table = array(); |
|
| 659 | + $uncategorized = array(); |
|
| 660 | 660 | |
| 661 | - // Parse the project preferences form |
|
| 662 | - foreach ($prefs as $key => $element) { |
|
| 661 | + // Parse the project preferences form |
|
| 662 | + foreach ($prefs as $key => $element) { |
|
| 663 | 663 | |
| 664 | 664 | // Determine which type of element this is and act accordingly |
| 665 | 665 | $element_type = NULL; |
| 666 | 666 | if (is_array($element) AND isset($element['#type'])) { |
| 667 | - $element_type = $element['#type']; |
|
| 667 | + $element_type = $element['#type']; |
|
| 668 | 668 | } |
| 669 | 669 | switch ($element_type) { |
| 670 | 670 | case 'fieldset': |
| 671 | 671 | $prefs_table[$key] = array( |
| 672 | 672 | 'name' => $element['#title'], |
| 673 | 673 | 'elements' => boincwork_make_prefs_table($element, FALSE), |
| 674 | - ); |
|
| 675 | - break; |
|
| 674 | + ); |
|
| 675 | + break; |
|
| 676 | 676 | case 'textfield': |
| 677 | 677 | case 'radios': |
| 678 | 678 | case 'checkbox': |
@@ -682,45 +682,45 @@ discard block |
||
| 682 | 682 | switch ($key) { |
| 683 | 683 | case 'start_hour': |
| 684 | 684 | $element['#title'] = bts('Compute only between:', array(), NULL, 'boinc:account-preferences-computing'); |
| 685 | - break; |
|
| 685 | + break; |
|
| 686 | 686 | case 'net_start_hour': |
| 687 | 687 | $element['#title'] = bts('Transfer files only between:', array(), NULL, 'boinc:account-preferences-comuting'); |
| 688 | - break; |
|
| 688 | + break; |
|
| 689 | 689 | default: |
| 690 | 690 | } |
| 691 | - } |
|
| 692 | - $prefs_element = array( |
|
| 691 | + } |
|
| 692 | + $prefs_element = array( |
|
| 693 | 693 | 'name' => (isset($element['#title'])) ? $element['#title'] : '', |
| 694 | 694 | 'description' => (isset($element['#description'])) ? $element['#description'] : '', |
| 695 | 695 | 'default_value' => (isset($element['#default_value'])) ? $element['#default_value'] : NULL, |
| 696 | - ); |
|
| 697 | - if ($top_level) { |
|
| 696 | + ); |
|
| 697 | + if ($top_level) { |
|
| 698 | 698 | $uncategorized[$key] = $prefs_element; |
| 699 | - } |
|
| 700 | - else { |
|
| 699 | + } |
|
| 700 | + else { |
|
| 701 | 701 | $prefs_table[$key] = $prefs_element; |
| 702 | - } |
|
| 703 | - break; |
|
| 702 | + } |
|
| 703 | + break; |
|
| 704 | 704 | default: |
| 705 | 705 | } |
| 706 | - } |
|
| 706 | + } |
|
| 707 | 707 | |
| 708 | - if ($prefs_table AND $uncategorized) { |
|
| 708 | + if ($prefs_table AND $uncategorized) { |
|
| 709 | 709 | // Throw any settings that don't fit elsewhere into "other" |
| 710 | 710 | $prefs_table['other'] = array( |
| 711 | - 'name' => bts('Other settings', array(), NULL, 'boinc:account-preferences'), |
|
| 712 | - 'elements' => $uncategorized, |
|
| 711 | + 'name' => bts('Other settings', array(), NULL, 'boinc:account-preferences'), |
|
| 712 | + 'elements' => $uncategorized, |
|
| 713 | 713 | ); |
| 714 | - } |
|
| 715 | - elseif ($uncategorized) { |
|
| 714 | + } |
|
| 715 | + elseif ($uncategorized) { |
|
| 716 | 716 | // If nothing is categorized, output all prefs under a general "settings" |
| 717 | 717 | $prefs_table['settings'] = array( |
| 718 | - 'name' => bts('Settings', array(), NULL, 'boinc:account-preferences'), |
|
| 719 | - 'elements' => $uncategorized, |
|
| 718 | + 'name' => bts('Settings', array(), NULL, 'boinc:account-preferences'), |
|
| 719 | + 'elements' => $uncategorized, |
|
| 720 | 720 | ); |
| 721 | - } |
|
| 721 | + } |
|
| 722 | 722 | |
| 723 | - return $prefs_table; |
|
| 723 | + return $prefs_table; |
|
| 724 | 724 | } |
| 725 | 725 | |
| 726 | 726 | /** |
@@ -728,33 +728,33 @@ discard block |
||
| 728 | 728 | */ |
| 729 | 729 | function boincwork_load_prefs($type = 'general', $venue = null, $account = null) { |
| 730 | 730 | |
| 731 | - require_boinc(array('user')); |
|
| 731 | + require_boinc(array('user')); |
|
| 732 | 732 | |
| 733 | - // Load the BOINC user object |
|
| 734 | - if (!$account) { |
|
| 733 | + // Load the BOINC user object |
|
| 734 | + if (!$account) { |
|
| 735 | 735 | global $user; |
| 736 | 736 | $account = $user; |
| 737 | - } |
|
| 738 | - $account = user_load($account->uid); |
|
| 739 | - $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 737 | + } |
|
| 738 | + $account = user_load($account->uid); |
|
| 739 | + $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 740 | 740 | |
| 741 | - // Load the desired preferences for the user |
|
| 742 | - $main_prefs = array(); |
|
| 743 | - if ($type == 'project') { |
|
| 741 | + // Load the desired preferences for the user |
|
| 742 | + $main_prefs = array(); |
|
| 743 | + if ($type == 'project') { |
|
| 744 | 744 | if ($boincuser->project_prefs) { |
| 745 | - $main_prefs = load_configuration($boincuser->project_prefs); |
|
| 746 | - $main_prefs = (array) $main_prefs['project_preferences']; |
|
| 745 | + $main_prefs = load_configuration($boincuser->project_prefs); |
|
| 746 | + $main_prefs = (array) $main_prefs['project_preferences']; |
|
| 747 | 747 | } |
| 748 | - } |
|
| 749 | - else { |
|
| 748 | + } |
|
| 749 | + else { |
|
| 750 | 750 | if ($boincuser->global_prefs) { |
| 751 | - $main_prefs = load_configuration($boincuser->global_prefs); |
|
| 752 | - $main_prefs = (array) $main_prefs['global_preferences']; |
|
| 751 | + $main_prefs = load_configuration($boincuser->global_prefs); |
|
| 752 | + $main_prefs = (array) $main_prefs['global_preferences']; |
|
| 753 | + } |
|
| 753 | 754 | } |
| 754 | - } |
|
| 755 | 755 | |
| 756 | - // Return general preferences or a subset based on venue |
|
| 757 | - if (!$venue OR $venue == 'generic') { |
|
| 756 | + // Return general preferences or a subset based on venue |
|
| 757 | + if (!$venue OR $venue == 'generic') { |
|
| 758 | 758 | unset($main_prefs['venue']); |
| 759 | 759 | // Use the length of the $main_prefs array as a condition as to |
| 760 | 760 | // whether the preferences have already been set. This is |
@@ -762,23 +762,23 @@ discard block |
||
| 762 | 762 | if (count($main_prefs) < 3) |
| 763 | 763 | $main_prefs['@attributes'] = array('cleared' => 1); |
| 764 | 764 | return $main_prefs; |
| 765 | - } |
|
| 766 | - else { |
|
| 765 | + } |
|
| 766 | + else { |
|
| 767 | 767 | if (isset($main_prefs['venue'])) { |
| 768 | - if (!is_numeric(key($main_prefs['venue']))) { |
|
| 768 | + if (!is_numeric(key($main_prefs['venue']))) { |
|
| 769 | 769 | $main_prefs['venue'] = array($main_prefs['venue']); |
| 770 | - } |
|
| 771 | - foreach ($main_prefs['venue'] as $key => $prefs_venue) { |
|
| 770 | + } |
|
| 771 | + foreach ($main_prefs['venue'] as $key => $prefs_venue) { |
|
| 772 | 772 | if (isset($prefs_venue['@attributes']['name']) AND $prefs_venue['@attributes']['name'] == $venue) { |
| 773 | - return $main_prefs['venue'][$key]; |
|
| 773 | + return $main_prefs['venue'][$key]; |
|
| 774 | + } |
|
| 774 | 775 | } |
| 775 | - } |
|
| 776 | 776 | } |
| 777 | - } |
|
| 777 | + } |
|
| 778 | 778 | |
| 779 | - return array( |
|
| 779 | + return array( |
|
| 780 | 780 | '@attributes' => array('name' => $venue, 'cleared' => 1) |
| 781 | - ); |
|
| 781 | + ); |
|
| 782 | 782 | } |
| 783 | 783 | |
| 784 | 784 | /** |
@@ -786,104 +786,104 @@ discard block |
||
| 786 | 786 | */ |
| 787 | 787 | function boincwork_save_prefs($prefs, $type = 'general', $venue = null, $account = null) { |
| 788 | 788 | |
| 789 | - require_boinc(array('user')); |
|
| 789 | + require_boinc(array('user')); |
|
| 790 | 790 | |
| 791 | - // Load existing project prefs from the BOINC user object |
|
| 792 | - if (!$account) { |
|
| 791 | + // Load existing project prefs from the BOINC user object |
|
| 792 | + if (!$account) { |
|
| 793 | 793 | global $user; |
| 794 | 794 | $account = $user; |
| 795 | - } |
|
| 796 | - $account = user_load($account->uid); |
|
| 797 | - $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 795 | + } |
|
| 796 | + $account = user_load($account->uid); |
|
| 797 | + $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 798 | 798 | |
| 799 | - // Load the specified preferences for the user |
|
| 800 | - $main_prefs = array(); |
|
| 801 | - if ($type == 'project') { |
|
| 799 | + // Load the specified preferences for the user |
|
| 800 | + $main_prefs = array(); |
|
| 801 | + if ($type == 'project') { |
|
| 802 | 802 | if ($boincuser->project_prefs) { |
| 803 | - $main_prefs = load_configuration($boincuser->project_prefs); |
|
| 804 | - $main_prefs = (array) $main_prefs['project_preferences']; |
|
| 803 | + $main_prefs = load_configuration($boincuser->project_prefs); |
|
| 804 | + $main_prefs = (array) $main_prefs['project_preferences']; |
|
| 805 | 805 | } |
| 806 | - } |
|
| 807 | - else { |
|
| 806 | + } |
|
| 807 | + else { |
|
| 808 | 808 | if ($boincuser->global_prefs) { |
| 809 | - $main_prefs = load_configuration($boincuser->global_prefs); |
|
| 810 | - $main_prefs = (array) $main_prefs['global_preferences']; |
|
| 809 | + $main_prefs = load_configuration($boincuser->global_prefs); |
|
| 810 | + $main_prefs = (array) $main_prefs['global_preferences']; |
|
| 811 | + } |
|
| 811 | 812 | } |
| 812 | - } |
|
| 813 | 813 | |
| 814 | - // Save all preferences or a subset based on venue |
|
| 815 | - //drupal_set_message('<pre>' . print_r($main_prefs, true) . '</pre>'); |
|
| 816 | - $new_venue = true; |
|
| 817 | - if (!$venue OR $venue == 'generic') { |
|
| 814 | + // Save all preferences or a subset based on venue |
|
| 815 | + //drupal_set_message('<pre>' . print_r($main_prefs, true) . '</pre>'); |
|
| 816 | + $new_venue = true; |
|
| 817 | + if (!$venue OR $venue == 'generic') { |
|
| 818 | 818 | //$main_prefs = $prefs; |
| 819 | 819 | $main_prefs = $prefs + $main_prefs; |
| 820 | - } |
|
| 821 | - else { |
|
| 820 | + } |
|
| 821 | + else { |
|
| 822 | 822 | if (isset($main_prefs['venue'])) { |
| 823 | - if (!is_numeric(key($main_prefs['venue']))) { |
|
| 823 | + if (!is_numeric(key($main_prefs['venue']))) { |
|
| 824 | 824 | $main_prefs['venue'] = array($main_prefs['venue']); |
| 825 | - } |
|
| 826 | - foreach ($main_prefs['venue'] as $key => $prefs_venue) { |
|
| 825 | + } |
|
| 826 | + foreach ($main_prefs['venue'] as $key => $prefs_venue) { |
|
| 827 | 827 | if (isset($prefs_venue['@attributes']['name']) AND $prefs_venue['@attributes']['name'] == $venue) { |
| 828 | - if ($prefs) { |
|
| 828 | + if ($prefs) { |
|
| 829 | 829 | $main_prefs['venue'][$key] = $prefs; |
| 830 | - } |
|
| 831 | - else { |
|
| 830 | + } |
|
| 831 | + else { |
|
| 832 | 832 | // If prefs is null, clear out this preference set |
| 833 | 833 | unset($main_prefs['venue'][$key]); |
| 834 | 834 | if (count($main_prefs['venue']) == 0) { |
| 835 | - // If that was the only preference set configured, unset the |
|
| 836 | - // venue tag altogether |
|
| 837 | - unset($main_prefs['venue']); |
|
| 835 | + // If that was the only preference set configured, unset the |
|
| 836 | + // venue tag altogether |
|
| 837 | + unset($main_prefs['venue']); |
|
| 838 | 838 | } |
| 839 | - } |
|
| 840 | - $new_venue = false; |
|
| 841 | - break; |
|
| 839 | + } |
|
| 840 | + $new_venue = false; |
|
| 841 | + break; |
|
| 842 | + } |
|
| 842 | 843 | } |
| 843 | - } |
|
| 844 | 844 | } |
| 845 | 845 | if ($new_venue) { |
| 846 | - $main_prefs['venue'][] = $prefs; |
|
| 846 | + $main_prefs['venue'][] = $prefs; |
|
| 847 | + } |
|
| 847 | 848 | } |
| 848 | - } |
|
| 849 | 849 | |
| 850 | - // Set modified time |
|
| 851 | - if ($type == 'project') { |
|
| 850 | + // Set modified time |
|
| 851 | + if ($type == 'project') { |
|
| 852 | 852 | if (!isset($main_prefs['modified'])) { |
| 853 | - $main_prefs = array_merge(array('modified' => 0), $main_prefs); |
|
| 853 | + $main_prefs = array_merge(array('modified' => 0), $main_prefs); |
|
| 854 | 854 | } |
| 855 | 855 | $main_prefs['modified'] = time(); |
| 856 | - } else { |
|
| 856 | + } else { |
|
| 857 | 857 | if (!isset($main_prefs['mod_time'])) { |
| 858 | - $main_prefs = array_merge(array('mod_time' => 0), $main_prefs); |
|
| 858 | + $main_prefs = array_merge(array('mod_time' => 0), $main_prefs); |
|
| 859 | 859 | } |
| 860 | 860 | $main_prefs['mod_time'] = time(); |
| 861 | 861 | // unset source information, the Client will fill this in again |
| 862 | 862 | if (isset($main_prefs['source_project'])) { |
| 863 | - unset($main_prefs['source_project']); |
|
| 863 | + unset($main_prefs['source_project']); |
|
| 864 | 864 | } |
| 865 | 865 | if (isset($main_prefs['source_scheduler'])) { |
| 866 | - unset($main_prefs['source_scheduler']); |
|
| 866 | + unset($main_prefs['source_scheduler']); |
|
| 867 | + } |
|
| 867 | 868 | } |
| 868 | - } |
|
| 869 | 869 | |
| 870 | - // Convert prefs back to XML and save to database |
|
| 871 | - $result = null; |
|
| 872 | - if ($type == 'project') { |
|
| 870 | + // Convert prefs back to XML and save to database |
|
| 871 | + $result = null; |
|
| 872 | + if ($type == 'project') { |
|
| 873 | 873 | $main_prefs = array('project_preferences' => $main_prefs); |
| 874 | 874 | $boincuser->project_prefs = save_configuration($main_prefs); |
| 875 | 875 | db_set_active('boinc_rw'); |
| 876 | 876 | $result = db_query("UPDATE user SET project_prefs = '{$boincuser->project_prefs}' WHERE id = '{$boincuser->id}'"); |
| 877 | 877 | db_set_active('default'); |
| 878 | - } |
|
| 879 | - else { |
|
| 878 | + } |
|
| 879 | + else { |
|
| 880 | 880 | $main_prefs = array('global_preferences' => $main_prefs); |
| 881 | 881 | $boincuser->global_prefs = save_configuration($main_prefs); |
| 882 | 882 | db_set_active('boinc_rw'); |
| 883 | 883 | $result = db_query("UPDATE user SET global_prefs = '{$boincuser->global_prefs}' WHERE id = '{$boincuser->id}'"); |
| 884 | 884 | db_set_active('default'); |
| 885 | - } |
|
| 886 | - return $result; |
|
| 885 | + } |
|
| 886 | + return $result; |
|
| 887 | 887 | } |
| 888 | 888 | |
| 889 | 889 | |
@@ -900,9 +900,9 @@ discard block |
||
| 900 | 900 | *username. Called from privacy preference form. |
| 901 | 901 | */ |
| 902 | 902 | function boincwork_ignore_user_add_user_username($name = NULL) { |
| 903 | - global $user; |
|
| 903 | + global $user; |
|
| 904 | 904 | |
| 905 | - if (isset($name)) { |
|
| 905 | + if (isset($name)) { |
|
| 906 | 906 | // Get the BOINC ID from the name string, and lookup the |
| 907 | 907 | // corresponding drupal user. |
| 908 | 908 | $boincname = substr($name, 0, strrpos($name, '_')); |
@@ -911,84 +911,84 @@ discard block |
||
| 911 | 911 | $iuid = get_drupal_id($boincid); |
| 912 | 912 | |
| 913 | 913 | if ($user->uid == $iuid) { |
| 914 | - drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error'); |
|
| 915 | - drupal_goto('account/prefs/privacy'); |
|
| 914 | + drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error'); |
|
| 915 | + drupal_goto('account/prefs/privacy'); |
|
| 916 | 916 | } |
| 917 | 917 | |
| 918 | 918 | if (is_numeric($iuid) && $iuid > 0) { |
| 919 | - if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) { |
|
| 919 | + if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) { |
|
| 920 | 920 | db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid); |
| 921 | - }// endif db_result |
|
| 921 | + }// endif db_result |
|
| 922 | 922 | |
| 923 | - if (module_exists('pm_block_user')) { |
|
| 923 | + if (module_exists('pm_block_user')) { |
|
| 924 | 924 | if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) { |
| 925 | - db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid); |
|
| 925 | + db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid); |
|
| 926 | 926 | }// endif db_result |
| 927 | - }// endif module_exists('pm_block_user') |
|
| 927 | + }// endif module_exists('pm_block_user') |
|
| 928 | 928 | |
| 929 | 929 | }// endif $iuid |
| 930 | - } |
|
| 930 | + } |
|
| 931 | 931 | } |
| 932 | 932 | |
| 933 | 933 | /** |
| 934 | 934 | * Add another user's UID to the current user's ignore list. |
| 935 | 935 | */ |
| 936 | 936 | function boincwork_ignore_user_add_user($iuid = NULL) { |
| 937 | - global $user; |
|
| 937 | + global $user; |
|
| 938 | 938 | |
| 939 | - if ($user->uid == $iuid) { |
|
| 939 | + if ($user->uid == $iuid) { |
|
| 940 | 940 | drupal_set_message(bts('You can\'t add yourself to your own ignore list.', array(), NULL, 'boinc:ignore-user-error-message'), 'error'); |
| 941 | 941 | drupal_goto(); |
| 942 | - } |
|
| 942 | + } |
|
| 943 | 943 | |
| 944 | - $otheraccount = user_load($iuid); |
|
| 944 | + $otheraccount = user_load($iuid); |
|
| 945 | 945 | |
| 946 | - if (is_numeric($iuid) && $iuid > 0) { |
|
| 946 | + if (is_numeric($iuid) && $iuid > 0) { |
|
| 947 | 947 | if (!db_result(db_query('SELECT COUNT(iuid) FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid))) { |
| 948 | - db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid); |
|
| 948 | + db_query('INSERT INTO {ignore_user} (uid, iuid) VALUES (%d, %d)', $user->uid, $iuid); |
|
| 949 | 949 | }// endif db_result |
| 950 | 950 | |
| 951 | 951 | if (module_exists('pm_block_user')) { |
| 952 | - if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) { |
|
| 952 | + if (!db_result(db_query('SELECT COUNT(recipient) FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid))) { |
|
| 953 | 953 | db_query('INSERT INTO {pm_block_user} (author, recipient) VALUES (%d, %d)', $iuid, $user->uid); |
| 954 | - }// endif db_result |
|
| 954 | + }// endif db_result |
|
| 955 | 955 | }// endif module_exists('pm_block_user') |
| 956 | 956 | |
| 957 | 957 | drupal_set_message( |
| 958 | - bts('@username has been added to your ignore list. See your !privacy_preferences for more details.', |
|
| 958 | + bts('@username has been added to your ignore list. See your !privacy_preferences for more details.', |
|
| 959 | 959 | array( |
| 960 | - '@username' => $otheraccount->boincuser_name, |
|
| 961 | - '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'), |
|
| 960 | + '@username' => $otheraccount->boincuser_name, |
|
| 961 | + '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'), |
|
| 962 | 962 | ), |
| 963 | 963 | NULL, 'boinc:ignore-user-add'), |
| 964 | - 'status'); |
|
| 964 | + 'status'); |
|
| 965 | 965 | drupal_goto(); |
| 966 | - } |
|
| 967 | - else { |
|
| 966 | + } |
|
| 967 | + else { |
|
| 968 | 968 | drupal_not_found(); |
| 969 | - }// endif iuid |
|
| 969 | + }// endif iuid |
|
| 970 | 970 | } |
| 971 | 971 | |
| 972 | 972 | /** |
| 973 | 973 | * Remove user from user's ignore list. |
| 974 | 974 | */ |
| 975 | 975 | function boincwork_ignore_user_remove_user($iuid = NULL) { |
| 976 | - global $user; |
|
| 977 | - $otheraccount = user_load($iuid); |
|
| 976 | + global $user; |
|
| 977 | + $otheraccount = user_load($iuid); |
|
| 978 | 978 | |
| 979 | - db_query('DELETE FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid); |
|
| 980 | - if (module_exists('pm_block_user')) { |
|
| 979 | + db_query('DELETE FROM {ignore_user} WHERE uid = %d AND iuid = %d', $user->uid, $iuid); |
|
| 980 | + if (module_exists('pm_block_user')) { |
|
| 981 | 981 | db_query('DELETE FROM {pm_block_user} WHERE author = %d AND recipient = %d', $iuid, $user->uid); |
| 982 | - }// endif module_exists |
|
| 983 | - drupal_set_message( |
|
| 982 | + }// endif module_exists |
|
| 983 | + drupal_set_message( |
|
| 984 | 984 | bts('@username has been removed from your ignore list. See your !privacy_preferences for more details.', |
| 985 | - array( |
|
| 985 | + array( |
|
| 986 | 986 | '@username' => $otheraccount->boincuser_name, |
| 987 | 987 | '!privacy_preferences' => l(bts('privacy preferences', array(), NULL, 'boinc:ignore-user-add'), 'account/prefs/privacy'), |
| 988 | - ), |
|
| 989 | - NULL, 'boinc:ignore-user-add'), |
|
| 988 | + ), |
|
| 989 | + NULL, 'boinc:ignore-user-add'), |
|
| 990 | 990 | 'status'); |
| 991 | - drupal_goto('account/prefs/privacy'); |
|
| 991 | + drupal_goto('account/prefs/privacy'); |
|
| 992 | 992 | } |
| 993 | 993 | |
| 994 | 994 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -1002,18 +1002,18 @@ discard block |
||
| 1002 | 1002 | */ |
| 1003 | 1003 | function boincwork_load_privacyconsenttypes() { |
| 1004 | 1004 | |
| 1005 | - db_set_active('boinc_rw'); |
|
| 1006 | - $db_result = db_query("SELECT id,shortname,description FROM consent_type WHERE enabled=1 AND privacypref=1 ORDER by project_specific ASC"); |
|
| 1007 | - db_set_active('drupal'); |
|
| 1005 | + db_set_active('boinc_rw'); |
|
| 1006 | + $db_result = db_query("SELECT id,shortname,description FROM consent_type WHERE enabled=1 AND privacypref=1 ORDER by project_specific ASC"); |
|
| 1007 | + db_set_active('drupal'); |
|
| 1008 | 1008 | |
| 1009 | - if ($db_result) { |
|
| 1009 | + if ($db_result) { |
|
| 1010 | 1010 | $consent_types = array(); |
| 1011 | 1011 | while ($result = db_fetch_array($db_result)) { |
| 1012 | - $consent_types[] = $result; |
|
| 1012 | + $consent_types[] = $result; |
|
| 1013 | 1013 | } |
| 1014 | 1014 | return $consent_types; |
| 1015 | - } |
|
| 1016 | - return array(); |
|
| 1015 | + } |
|
| 1016 | + return array(); |
|
| 1017 | 1017 | } |
| 1018 | 1018 | |
| 1019 | 1019 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -1025,94 +1025,94 @@ discard block |
||
| 1025 | 1025 | */ |
| 1026 | 1026 | function boincwork_set_default_venue($venue = '') { |
| 1027 | 1027 | |
| 1028 | - global $user; |
|
| 1029 | - $account = user_load($user->uid); |
|
| 1028 | + global $user; |
|
| 1029 | + $account = user_load($user->uid); |
|
| 1030 | 1030 | |
| 1031 | - if ($venue == 'generic') { |
|
| 1031 | + if ($venue == 'generic') { |
|
| 1032 | 1032 | $venue = ''; |
| 1033 | - } |
|
| 1033 | + } |
|
| 1034 | 1034 | |
| 1035 | - db_set_active('boinc_rw'); |
|
| 1036 | - db_query(" |
|
| 1035 | + db_set_active('boinc_rw'); |
|
| 1036 | + db_query(" |
|
| 1037 | 1037 | UPDATE user |
| 1038 | 1038 | SET venue = '%s' |
| 1039 | 1039 | WHERE id = %d", |
| 1040 | 1040 | $venue, $account->boincuser_id |
| 1041 | - ); |
|
| 1042 | - db_set_active('default'); |
|
| 1041 | + ); |
|
| 1042 | + db_set_active('default'); |
|
| 1043 | 1043 | } |
| 1044 | 1044 | |
| 1045 | 1045 | /** |
| 1046 | 1046 | * Recursively validate submitted form values against a set of rules |
| 1047 | 1047 | */ |
| 1048 | 1048 | function boincwork_validate_form($validation_rules, $values, $path = array()) { |
| 1049 | - foreach ($validation_rules as $field => $rules) { |
|
| 1049 | + foreach ($validation_rules as $field => $rules) { |
|
| 1050 | 1050 | $parents = $path; |
| 1051 | 1051 | if (is_array($values[$field])) { |
| 1052 | - // Process nested form elements |
|
| 1053 | - $parents[] = $field; |
|
| 1054 | - boincwork_validate_form($rules, $values[$field], $parents); |
|
| 1052 | + // Process nested form elements |
|
| 1053 | + $parents[] = $field; |
|
| 1054 | + boincwork_validate_form($rules, $values[$field], $parents); |
|
| 1055 | 1055 | } |
| 1056 | 1056 | else { |
| 1057 | - if ($parents) { |
|
| 1057 | + if ($parents) { |
|
| 1058 | 1058 | // form_set_error() identifies nested form elements with '][' as a |
| 1059 | 1059 | // delimiter between each parent and child element |
| 1060 | 1060 | $parents[] = $field; |
| 1061 | 1061 | $form_field = implode('][', $parents); |
| 1062 | - } |
|
| 1063 | - else { |
|
| 1062 | + } |
|
| 1063 | + else { |
|
| 1064 | 1064 | $form_field = $field; |
| 1065 | - } |
|
| 1066 | - if (isset($rules['datatype']) AND !boincwork_validate_datatype($values[$field], $rules['datatype'])) { |
|
| 1065 | + } |
|
| 1066 | + if (isset($rules['datatype']) AND !boincwork_validate_datatype($values[$field], $rules['datatype'])) { |
|
| 1067 | 1067 | form_set_error($form_field, bts('Invalid data type for @field', array('@field' => $field), NULL, 'boinc:account-preferences')); |
| 1068 | - } |
|
| 1069 | - if (isset($rules['min']) AND $values[$field] < $rules['min']) { |
|
| 1068 | + } |
|
| 1069 | + if (isset($rules['min']) AND $values[$field] < $rules['min']) { |
|
| 1070 | 1070 | form_set_error($form_field, bts('Minimum value not met for @field', array('@field' => $field), NULL, 'boinc:account-preferences')); |
| 1071 | - } |
|
| 1072 | - if (isset($rules['max']) AND $values[$field] > $rules['max']) { |
|
| 1071 | + } |
|
| 1072 | + if (isset($rules['max']) AND $values[$field] > $rules['max']) { |
|
| 1073 | 1073 | form_set_error($form_field, bts('Maximum value exceeded for @field', array('@field' => $field), NULL, 'boinc:account-preferences')); |
| 1074 | - } |
|
| 1074 | + } |
|
| 1075 | + } |
|
| 1075 | 1076 | } |
| 1076 | - } |
|
| 1077 | 1077 | } |
| 1078 | 1078 | |
| 1079 | 1079 | /** |
| 1080 | 1080 | * Check that numeric data conforms to specifications |
| 1081 | 1081 | */ |
| 1082 | 1082 | function boincwork_validate_datatype($data, $datatype = NULL) { |
| 1083 | - switch ($datatype) { |
|
| 1084 | - case 'float': |
|
| 1083 | + switch ($datatype) { |
|
| 1084 | + case 'float': |
|
| 1085 | 1085 | if (!is_numeric($data)) { |
| 1086 | - return FALSE; |
|
| 1086 | + return FALSE; |
|
| 1087 | 1087 | } |
| 1088 | 1088 | $data += 0.0; |
| 1089 | 1089 | if (!is_float($data)) { |
| 1090 | - return FALSE; |
|
| 1090 | + return FALSE; |
|
| 1091 | 1091 | } |
| 1092 | 1092 | break; |
| 1093 | 1093 | |
| 1094 | - case 'integer': |
|
| 1094 | + case 'integer': |
|
| 1095 | 1095 | if (!is_numeric($data)) { |
| 1096 | - return FALSE; |
|
| 1096 | + return FALSE; |
|
| 1097 | 1097 | } |
| 1098 | 1098 | $data += 0; |
| 1099 | 1099 | if (!is_int($data)) { |
| 1100 | - return FALSE; |
|
| 1100 | + return FALSE; |
|
| 1101 | 1101 | } |
| 1102 | 1102 | break; |
| 1103 | 1103 | |
| 1104 | - case 'text': |
|
| 1104 | + case 'text': |
|
| 1105 | 1105 | default: |
| 1106 | 1106 | |
| 1107 | 1107 | } |
| 1108 | - return TRUE; |
|
| 1108 | + return TRUE; |
|
| 1109 | 1109 | } |
| 1110 | 1110 | |
| 1111 | 1111 | /** |
| 1112 | 1112 | * Format a number to be displayed using a maximum number of digits |
| 1113 | 1113 | */ |
| 1114 | 1114 | function boincwork_format_stats($number, $max_digits = 4) { |
| 1115 | - $suffix = array( |
|
| 1115 | + $suffix = array( |
|
| 1116 | 1116 | 0 => '', |
| 1117 | 1117 | 1 => 'k', |
| 1118 | 1118 | 2 => 'M', |
@@ -1122,94 +1122,94 @@ discard block |
||
| 1122 | 1122 | 6 => 'E', |
| 1123 | 1123 | 7 => 'Z', |
| 1124 | 1124 | 8 => 'Y' |
| 1125 | - ); |
|
| 1126 | - if (!is_numeric($number)) $number = 0; |
|
| 1125 | + ); |
|
| 1126 | + if (!is_numeric($number)) $number = 0; |
|
| 1127 | 1127 | |
| 1128 | - $digits = floor(log($number, 10)) + 1; |
|
| 1129 | - $magnitude = 0; |
|
| 1130 | - $precision = 0; |
|
| 1131 | - if ($digits > $max_digits) { |
|
| 1128 | + $digits = floor(log($number, 10)) + 1; |
|
| 1129 | + $magnitude = 0; |
|
| 1130 | + $precision = 0; |
|
| 1131 | + if ($digits > $max_digits) { |
|
| 1132 | 1132 | $magnitude = floor(($digits - ($max_digits - 3)) / 3); |
| 1133 | 1133 | $precision = $max_digits - ($digits - ($magnitude * 3) + 1); |
| 1134 | 1134 | $number = round($number / pow(1000, $magnitude), $precision); |
| 1135 | - } |
|
| 1136 | - $number = number_format($number, $precision) . (($magnitude) ? "{$suffix[$magnitude]}" : ''); |
|
| 1135 | + } |
|
| 1136 | + $number = number_format($number, $precision) . (($magnitude) ? "{$suffix[$magnitude]}" : ''); |
|
| 1137 | 1137 | |
| 1138 | - return $number; |
|
| 1138 | + return $number; |
|
| 1139 | 1139 | } |
| 1140 | 1140 | |
| 1141 | - //------------------------------------------------------------------------------------------------ |
|
| 1142 | - // load_configuration(): Convert structured text/xml to array |
|
| 1143 | - //------------------------------------------------------------------------------------------------ |
|
| 1141 | + //------------------------------------------------------------------------------------------------ |
|
| 1142 | + // load_configuration(): Convert structured text/xml to array |
|
| 1143 | + //------------------------------------------------------------------------------------------------ |
|
| 1144 | 1144 | |
| 1145 | - function load_configuration($text) |
|
| 1146 | - { |
|
| 1147 | - if (preg_match('/^\<\?xml .*\?\>$/i', $text)) return null; |
|
| 1148 | - if ($xml = text_to_xml($text)) return xml_to_array($xml); |
|
| 1149 | - return false; |
|
| 1150 | - } |
|
| 1145 | + function load_configuration($text) |
|
| 1146 | + { |
|
| 1147 | + if (preg_match('/^\<\?xml .*\?\>$/i', $text)) return null; |
|
| 1148 | + if ($xml = text_to_xml($text)) return xml_to_array($xml); |
|
| 1149 | + return false; |
|
| 1150 | + } |
|
| 1151 | 1151 | |
| 1152 | - //------------------------------------------------------------------------------------------------ |
|
| 1153 | - // save_configuration(): Convert array to structured text/xml |
|
| 1154 | - //------------------------------------------------------------------------------------------------ |
|
| 1152 | + //------------------------------------------------------------------------------------------------ |
|
| 1153 | + // save_configuration(): Convert array to structured text/xml |
|
| 1154 | + //------------------------------------------------------------------------------------------------ |
|
| 1155 | 1155 | |
| 1156 | - function save_configuration($array) |
|
| 1157 | - { |
|
| 1158 | - if ($xml = array_to_xml($array)) return xml_to_text($xml, false, true); |
|
| 1159 | - return false; |
|
| 1160 | - } |
|
| 1156 | + function save_configuration($array) |
|
| 1157 | + { |
|
| 1158 | + if ($xml = array_to_xml($array)) return xml_to_text($xml, false, true); |
|
| 1159 | + return false; |
|
| 1160 | + } |
|
| 1161 | 1161 | |
| 1162 | - //------------------------------------------------------------------------------------------------ |
|
| 1163 | - // array_to_xml(): Take a multidimensional array and convert it to a structured |
|
| 1164 | - // DOM XML object |
|
| 1165 | - //------------------------------------------------------------------------------------------------ |
|
| 1162 | + //------------------------------------------------------------------------------------------------ |
|
| 1163 | + // array_to_xml(): Take a multidimensional array and convert it to a structured |
|
| 1164 | + // DOM XML object |
|
| 1165 | + //------------------------------------------------------------------------------------------------ |
|
| 1166 | 1166 | |
| 1167 | - function array_to_xml($array, $dom = false, $parent_node = false) { |
|
| 1167 | + function array_to_xml($array, $dom = false, $parent_node = false) { |
|
| 1168 | 1168 | $is_root = false; |
| 1169 | 1169 | if (!$dom) $dom = new DomDocument('1.0'); |
| 1170 | 1170 | if (!$parent_node) { |
| 1171 | - $parent_node = $dom; |
|
| 1172 | - $is_root = true; |
|
| 1171 | + $parent_node = $dom; |
|
| 1172 | + $is_root = true; |
|
| 1173 | 1173 | } |
| 1174 | 1174 | // Created an intermediate array to attempt to sort by @position |
| 1175 | 1175 | $ordered_array = array(); |
| 1176 | 1176 | $unordered_array = array(); |
| 1177 | 1177 | foreach ($array as $name => $value) { |
| 1178 | - if ($is_root) { |
|
| 1178 | + if ($is_root) { |
|
| 1179 | 1179 | $unordered_array[] = $array; |
| 1180 | 1180 | break; |
| 1181 | - } |
|
| 1182 | - if (is_array($value)) { |
|
| 1181 | + } |
|
| 1182 | + if (is_array($value)) { |
|
| 1183 | 1183 | if (is_numeric(key($value))) { |
| 1184 | - foreach ($value as $item) { |
|
| 1184 | + foreach ($value as $item) { |
|
| 1185 | 1185 | if (is_array($item) AND isset($item['@position'])) { |
| 1186 | - $ordered_array[$item['@position']] = array( |
|
| 1186 | + $ordered_array[$item['@position']] = array( |
|
| 1187 | 1187 | $name => $item |
| 1188 | - ); |
|
| 1188 | + ); |
|
| 1189 | 1189 | } |
| 1190 | 1190 | else { |
| 1191 | - $unordered_array[] = array( |
|
| 1191 | + $unordered_array[] = array( |
|
| 1192 | 1192 | $name => $item |
| 1193 | - ); |
|
| 1193 | + ); |
|
| 1194 | + } |
|
| 1194 | 1195 | } |
| 1195 | - } |
|
| 1196 | 1196 | } |
| 1197 | 1197 | elseif (isset($value['@position'])) { |
| 1198 | - $ordered_array[$value['@position']] = array( |
|
| 1198 | + $ordered_array[$value['@position']] = array( |
|
| 1199 | 1199 | $name => $value |
| 1200 | - ); |
|
| 1200 | + ); |
|
| 1201 | 1201 | } |
| 1202 | 1202 | else { |
| 1203 | - $unordered_array[] = array( |
|
| 1203 | + $unordered_array[] = array( |
|
| 1204 | 1204 | $name => $value |
| 1205 | - ); |
|
| 1205 | + ); |
|
| 1206 | 1206 | } |
| 1207 | - } |
|
| 1208 | - else { |
|
| 1207 | + } |
|
| 1208 | + else { |
|
| 1209 | 1209 | $unordered_array[] = array( |
| 1210 | - $name => $value |
|
| 1210 | + $name => $value |
|
| 1211 | 1211 | ); |
| 1212 | - } |
|
| 1212 | + } |
|
| 1213 | 1213 | } |
| 1214 | 1214 | |
| 1215 | 1215 | // Now append items without explicit positions at the end |
@@ -1217,39 +1217,39 @@ discard block |
||
| 1217 | 1217 | |
| 1218 | 1218 | // Convert to XML... |
| 1219 | 1219 | foreach ($primed_array as $item) { |
| 1220 | - list($name, $value) = each($item); |
|
| 1221 | - if (strcmp($name, '@attributes') == 0) { |
|
| 1220 | + list($name, $value) = each($item); |
|
| 1221 | + if (strcmp($name, '@attributes') == 0) { |
|
| 1222 | 1222 | if (!is_array($value)) continue; |
| 1223 | 1223 | foreach ($value as $attributeName => $attributeValue) { |
| 1224 | - $parent_node->setAttribute($attributeName, $attributeValue); |
|
| 1224 | + $parent_node->setAttribute($attributeName, $attributeValue); |
|
| 1225 | 1225 | } |
| 1226 | - } elseif (strcmp($name, '@value') == 0) { |
|
| 1226 | + } elseif (strcmp($name, '@value') == 0) { |
|
| 1227 | 1227 | if (isset($value)) $parent_node->nodeValue = $value; |
| 1228 | - } elseif (strcmp($name, '@position') == 0) { |
|
| 1228 | + } elseif (strcmp($name, '@position') == 0) { |
|
| 1229 | 1229 | continue; |
| 1230 | - } else { |
|
| 1230 | + } else { |
|
| 1231 | 1231 | if (is_numeric($name)) { |
| 1232 | - $name = $parent_node->tagName; |
|
| 1232 | + $name = $parent_node->tagName; |
|
| 1233 | 1233 | } |
| 1234 | 1234 | $current_item = $dom->createElement($name); |
| 1235 | 1235 | if (is_array($value)) { |
| 1236 | - if (is_numeric(key($value))) { |
|
| 1236 | + if (is_numeric(key($value))) { |
|
| 1237 | 1237 | $current_node = $parent_node->appendChild($current_item); |
| 1238 | 1238 | $current_node = array_to_xml($value, $dom, $current_node); |
| 1239 | 1239 | $child_count = $current_node->childNodes->length; |
| 1240 | 1240 | for ($i = 0; $i < $child_count; $i++) { |
| 1241 | - $parent_node->appendChild($current_node->childNodes->item(0)); |
|
| 1241 | + $parent_node->appendChild($current_node->childNodes->item(0)); |
|
| 1242 | 1242 | } |
| 1243 | 1243 | $parent_node->removeChild($current_node); |
| 1244 | - } else { |
|
| 1244 | + } else { |
|
| 1245 | 1245 | $current_node = $dom->appendChild($current_item); |
| 1246 | 1246 | $parent_node->appendChild(array_to_xml($value, $dom, $current_node)); |
| 1247 | - } |
|
| 1247 | + } |
|
| 1248 | 1248 | } else { |
| 1249 | - if (isset($value)) $current_item->nodeValue = $value; |
|
| 1250 | - $parent_node->appendChild($current_item); |
|
| 1249 | + if (isset($value)) $current_item->nodeValue = $value; |
|
| 1250 | + $parent_node->appendChild($current_item); |
|
| 1251 | + } |
|
| 1251 | 1252 | } |
| 1252 | - } |
|
| 1253 | 1253 | } |
| 1254 | 1254 | /* |
| 1255 | 1255 | foreach ($array as $name => $value) { |
@@ -1285,114 +1285,114 @@ discard block |
||
| 1285 | 1285 | } |
| 1286 | 1286 | }*/ |
| 1287 | 1287 | return $parent_node; |
| 1288 | - } |
|
| 1288 | + } |
|
| 1289 | 1289 | |
| 1290 | - //------------------------------------------------------------------------------------------------ |
|
| 1291 | - // xml_to_text(): Convert an XML DOM object to string format |
|
| 1292 | - //------------------------------------------------------------------------------------------------ |
|
| 1290 | + //------------------------------------------------------------------------------------------------ |
|
| 1291 | + // xml_to_text(): Convert an XML DOM object to string format |
|
| 1292 | + //------------------------------------------------------------------------------------------------ |
|
| 1293 | 1293 | |
| 1294 | - function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false) |
|
| 1295 | - { |
|
| 1296 | - $xml->formatOutput = true; |
|
| 1297 | - $text = $xml->saveXML(); |
|
| 1298 | - if (!$include_xml_declaration) { |
|
| 1294 | + function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false) |
|
| 1295 | + { |
|
| 1296 | + $xml->formatOutput = true; |
|
| 1297 | + $text = $xml->saveXML(); |
|
| 1298 | + if (!$include_xml_declaration) { |
|
| 1299 | 1299 | $text = preg_replace('/<\?xml version=.*\?>\s*/i', '', $text, 1); |
| 1300 | - } |
|
| 1301 | - if ($add_carriage_returns) {; |
|
| 1300 | + } |
|
| 1301 | + if ($add_carriage_returns) {; |
|
| 1302 | 1302 | $text = preg_replace('/\n/i', "\r\n", $text); |
| 1303 | - } |
|
| 1304 | - return trim($text); |
|
| 1305 | - } |
|
| 1303 | + } |
|
| 1304 | + return trim($text); |
|
| 1305 | + } |
|
| 1306 | 1306 | |
| 1307 | - //------------------------------------------------------------------------------------------------ |
|
| 1308 | - // text_to_xml(): Convert an XML DOM object to string format |
|
| 1309 | - //------------------------------------------------------------------------------------------------ |
|
| 1307 | + //------------------------------------------------------------------------------------------------ |
|
| 1308 | + // text_to_xml(): Convert an XML DOM object to string format |
|
| 1309 | + //------------------------------------------------------------------------------------------------ |
|
| 1310 | 1310 | |
| 1311 | - function text_to_xml($text) { |
|
| 1311 | + function text_to_xml($text) { |
|
| 1312 | 1312 | $xml = new DomDocument(); |
| 1313 | 1313 | if ( !($xml->loadXML($text)) ) return false; |
| 1314 | 1314 | return $xml; |
| 1315 | - } |
|
| 1315 | + } |
|
| 1316 | 1316 | |
| 1317 | 1317 | |
| 1318 | - //------------------------------------------------------------------------------------------------ |
|
| 1319 | - // xml_to_array(): Convert an XML DOM object to array format |
|
| 1320 | - //------------------------------------------------------------------------------------------------ |
|
| 1318 | + //------------------------------------------------------------------------------------------------ |
|
| 1319 | + // xml_to_array(): Convert an XML DOM object to array format |
|
| 1320 | + //------------------------------------------------------------------------------------------------ |
|
| 1321 | 1321 | |
| 1322 | - function xml_to_array($xml) { |
|
| 1323 | - $node = $xml->firstChild; //$xml->first_child(); |
|
| 1324 | - $result = ''; |
|
| 1325 | - $index = 1; |
|
| 1326 | - $position = 0; |
|
| 1327 | - while (!is_null($node)) { |
|
| 1328 | - switch ($node->nodeType) { |
|
| 1329 | - case XML_TEXT_NODE: |
|
| 1322 | + function xml_to_array($xml) { |
|
| 1323 | + $node = $xml->firstChild; //$xml->first_child(); |
|
| 1324 | + $result = ''; |
|
| 1325 | + $index = 1; |
|
| 1326 | + $position = 0; |
|
| 1327 | + while (!is_null($node)) { |
|
| 1328 | + switch ($node->nodeType) { |
|
| 1329 | + case XML_TEXT_NODE: |
|
| 1330 | 1330 | if (trim($node->nodeValue) != '') $result = $node->nodeValue; |
| 1331 | - break; |
|
| 1332 | - case XML_ELEMENT_NODE: |
|
| 1331 | + break; |
|
| 1332 | + case XML_ELEMENT_NODE: |
|
| 1333 | 1333 | $node_name = $node->nodeName; |
| 1334 | - $parent = $node->parentNode; |
|
| 1335 | - $sibling = $node->nextSibling; |
|
| 1336 | - |
|
| 1337 | - // Determine if this node forms a set with siblings (share a node name) |
|
| 1338 | - while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->nextSibling; |
|
| 1339 | - if (!$sibling) { |
|
| 1340 | - $sibling = $node->previousSibling; |
|
| 1341 | - while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->previousSibling; |
|
| 1342 | - } |
|
| 1343 | - |
|
| 1344 | - if ($sibling) { |
|
| 1345 | - $result[$node_name][$index] = ''; |
|
| 1346 | - if ($node->childNodes) { |
|
| 1347 | - $result[$node_name][$index] = xml_to_array($node) ; |
|
| 1348 | - } |
|
| 1349 | - if ($node->hasAttributes()) { |
|
| 1350 | - $attributes = $node->attributes; |
|
| 1351 | - if ($result[$node_name][$index] !== '' AND !is_array($result[$node_name][$index])) { |
|
| 1352 | - $result[$node_name][$index] = array('@value' => $result[$node_name][$index]); |
|
| 1353 | - } |
|
| 1354 | - foreach ($attributes as $key => $attribute) { |
|
| 1355 | - $result[$node_name][$index]['@attributes'][$attribute->name] = $attribute->value; |
|
| 1356 | - } |
|
| 1357 | - } |
|
| 1358 | - // Retain the position of the element |
|
| 1359 | - if (!is_array($result[$node_name][$index])) { |
|
| 1334 | + $parent = $node->parentNode; |
|
| 1335 | + $sibling = $node->nextSibling; |
|
| 1336 | + |
|
| 1337 | + // Determine if this node forms a set with siblings (share a node name) |
|
| 1338 | + while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->nextSibling; |
|
| 1339 | + if (!$sibling) { |
|
| 1340 | + $sibling = $node->previousSibling; |
|
| 1341 | + while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->previousSibling; |
|
| 1342 | + } |
|
| 1343 | + |
|
| 1344 | + if ($sibling) { |
|
| 1345 | + $result[$node_name][$index] = ''; |
|
| 1346 | + if ($node->childNodes) { |
|
| 1347 | + $result[$node_name][$index] = xml_to_array($node) ; |
|
| 1348 | + } |
|
| 1349 | + if ($node->hasAttributes()) { |
|
| 1350 | + $attributes = $node->attributes; |
|
| 1351 | + if ($result[$node_name][$index] !== '' AND !is_array($result[$node_name][$index])) { |
|
| 1352 | + $result[$node_name][$index] = array('@value' => $result[$node_name][$index]); |
|
| 1353 | + } |
|
| 1354 | + foreach ($attributes as $key => $attribute) { |
|
| 1355 | + $result[$node_name][$index]['@attributes'][$attribute->name] = $attribute->value; |
|
| 1356 | + } |
|
| 1357 | + } |
|
| 1358 | + // Retain the position of the element |
|
| 1359 | + if (!is_array($result[$node_name][$index])) { |
|
| 1360 | 1360 | $result[$node_name][$index] = array( |
| 1361 | - '@value' => $result[$node_name][$index] |
|
| 1361 | + '@value' => $result[$node_name][$index] |
|
| 1362 | 1362 | ); |
| 1363 | - } |
|
| 1364 | - $result[$node_name][$index]['@position'] = $position; |
|
| 1365 | - $position++; |
|
| 1366 | - $index++; |
|
| 1367 | - } else { |
|
| 1368 | - $result[$node_name] = ''; |
|
| 1369 | - if ($node->childNodes) { |
|
| 1370 | - $result[$node_name] = xml_to_array($node) ; |
|
| 1371 | - } |
|
| 1372 | - if ($node->hasAttributes()) { |
|
| 1373 | - $attributes = $node->attributes; |
|
| 1374 | - if ($result[$node_name] !== '' AND !is_array($result[$node_name])) { |
|
| 1375 | - $result[$node_name] = array('@value' => $result[$node_name]); |
|
| 1376 | - } |
|
| 1377 | - foreach($attributes as $key => $attribute) { |
|
| 1378 | - $result[$node_name]['@attributes'][$attribute->name] = $attribute->value; |
|
| 1379 | - } |
|
| 1380 | - } |
|
| 1381 | - // Retain the position of the element |
|
| 1382 | - if (!is_array($result[$node_name])) { |
|
| 1363 | + } |
|
| 1364 | + $result[$node_name][$index]['@position'] = $position; |
|
| 1365 | + $position++; |
|
| 1366 | + $index++; |
|
| 1367 | + } else { |
|
| 1368 | + $result[$node_name] = ''; |
|
| 1369 | + if ($node->childNodes) { |
|
| 1370 | + $result[$node_name] = xml_to_array($node) ; |
|
| 1371 | + } |
|
| 1372 | + if ($node->hasAttributes()) { |
|
| 1373 | + $attributes = $node->attributes; |
|
| 1374 | + if ($result[$node_name] !== '' AND !is_array($result[$node_name])) { |
|
| 1375 | + $result[$node_name] = array('@value' => $result[$node_name]); |
|
| 1376 | + } |
|
| 1377 | + foreach($attributes as $key => $attribute) { |
|
| 1378 | + $result[$node_name]['@attributes'][$attribute->name] = $attribute->value; |
|
| 1379 | + } |
|
| 1380 | + } |
|
| 1381 | + // Retain the position of the element |
|
| 1382 | + if (!is_array($result[$node_name])) { |
|
| 1383 | 1383 | $result[$node_name] = array( |
| 1384 | - '@value' => $result[$node_name] |
|
| 1384 | + '@value' => $result[$node_name] |
|
| 1385 | 1385 | ); |
| 1386 | - } |
|
| 1387 | - $result[$node_name]['@position'] = $position; |
|
| 1388 | - $position++; |
|
| 1389 | - } |
|
| 1390 | - break; |
|
| 1391 | - } |
|
| 1392 | - $node = $node->nextSibling; |
|
| 1393 | - } |
|
| 1394 | - return $result; |
|
| 1395 | - } |
|
| 1386 | + } |
|
| 1387 | + $result[$node_name]['@position'] = $position; |
|
| 1388 | + $position++; |
|
| 1389 | + } |
|
| 1390 | + break; |
|
| 1391 | + } |
|
| 1392 | + $node = $node->nextSibling; |
|
| 1393 | + } |
|
| 1394 | + return $result; |
|
| 1395 | + } |
|
| 1396 | 1396 | |
| 1397 | 1397 | |
| 1398 | 1398 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -1400,172 +1400,172 @@ discard block |
||
| 1400 | 1400 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
| 1401 | 1401 | |
| 1402 | 1402 | /** |
| 1403 | - * Determine output for host list views when no hosts are found. |
|
| 1404 | - */ |
|
| 1403 | + * Determine output for host list views when no hosts are found. |
|
| 1404 | + */ |
|
| 1405 | 1405 | function boincwork_views_host_list_empty_text($context = NULL) { |
| 1406 | 1406 | |
| 1407 | - // Pull the BOINC user ID from the view arguments to get show_hosts |
|
| 1408 | - // preference for that user |
|
| 1409 | - require_boinc('boinc_db'); |
|
| 1410 | - $view = views_get_current_view(); |
|
| 1411 | - $account = user_load($view->args[0]); |
|
| 1412 | - $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 1407 | + // Pull the BOINC user ID from the view arguments to get show_hosts |
|
| 1408 | + // preference for that user |
|
| 1409 | + require_boinc('boinc_db'); |
|
| 1410 | + $view = views_get_current_view(); |
|
| 1411 | + $account = user_load($view->args[0]); |
|
| 1412 | + $boincuser = BoincUser::lookup_id($account->boincuser_id); |
|
| 1413 | 1413 | |
| 1414 | - // Determine if hosts are associated at all or just hidden |
|
| 1415 | - $output = ''; |
|
| 1416 | - if ($boincuser->show_hosts) { |
|
| 1414 | + // Determine if hosts are associated at all or just hidden |
|
| 1415 | + $output = ''; |
|
| 1416 | + if ($boincuser->show_hosts) { |
|
| 1417 | 1417 | switch($context) { |
| 1418 | 1418 | case 'active': |
| 1419 | 1419 | $output .= '<h2>' . bts('No active computers', array(), NULL, 'boinc:host-list') . '</h2>'; |
| 1420 | - $output .= '<p>' . bts('This user has no computers that have been' |
|
| 1421 | - . ' active in the last 30 days.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1422 | - break; |
|
| 1420 | + $output .= '<p>' . bts('This user has no computers that have been' |
|
| 1421 | + . ' active in the last 30 days.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1422 | + break; |
|
| 1423 | 1423 | |
| 1424 | 1424 | case 'preferences': |
| 1425 | 1425 | $output .= '<h2>' . bts('No computers', array(), NULL, 'boinc:host-list') . '</h2>'; |
| 1426 | - $output .= '<p>' . bts('There are no computers assigned to this' |
|
| 1427 | - . ' preference set.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1428 | - break; |
|
| 1426 | + $output .= '<p>' . bts('There are no computers assigned to this' |
|
| 1427 | + . ' preference set.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1428 | + break; |
|
| 1429 | 1429 | |
| 1430 | 1430 | default: |
| 1431 | 1431 | $output .= '<h2>' . bts('Computers pending', array(), NULL, 'boinc:host-list') . '</h2>'; |
| 1432 | - $output .= '<p>' . bts('This user does not yet have any associated' |
|
| 1433 | - . ' computers. Computers will be displayed when they have earned their' |
|
| 1434 | - . ' first credits.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1432 | + $output .= '<p>' . bts('This user does not yet have any associated' |
|
| 1433 | + . ' computers. Computers will be displayed when they have earned their' |
|
| 1434 | + . ' first credits.', array(), NULL, 'boinc:host-list') . '</p>'; |
|
| 1435 | 1435 | } |
| 1436 | - } |
|
| 1437 | - else { |
|
| 1436 | + } |
|
| 1437 | + else { |
|
| 1438 | 1438 | $output .= '<h2>' . bts('Computers hidden', array(), NULL, 'boinc:host-list') . '</h2>'; |
| 1439 | 1439 | $output .= '<p>' . bts('This user has chosen not to show information' |
| 1440 | 1440 | . ' about their computers.', array(), NULL, 'boinc:host-list') . '</p>'; |
| 1441 | - } |
|
| 1442 | - return $output; |
|
| 1441 | + } |
|
| 1442 | + return $output; |
|
| 1443 | 1443 | } |
| 1444 | 1444 | |
| 1445 | 1445 | /** |
| 1446 | - * Determine output for task list views when no tasks are found. |
|
| 1447 | - */ |
|
| 1446 | + * Determine output for task list views when no tasks are found. |
|
| 1447 | + */ |
|
| 1448 | 1448 | function boincwork_views_task_list_empty_text($context = NULL) { |
| 1449 | 1449 | |
| 1450 | - // |
|
| 1451 | - $output = ''; |
|
| 1452 | - switch($context) { |
|
| 1453 | - default: |
|
| 1450 | + // |
|
| 1451 | + $output = ''; |
|
| 1452 | + switch($context) { |
|
| 1453 | + default: |
|
| 1454 | 1454 | $output .= '<h2>' . bts('No @type tasks', array('@type' => $context), NULL, 'boinc:task-list') |
| 1455 | 1455 | . '</h2>'; |
| 1456 | 1456 | $output .= '<p>' . bts('There are no tasks of this type on record', array(), NULL, 'boinc:task-list') |
| 1457 | 1457 | . '</p>'; |
| 1458 | - } |
|
| 1459 | - return $output; |
|
| 1458 | + } |
|
| 1459 | + return $output; |
|
| 1460 | 1460 | } |
| 1461 | 1461 | |
| 1462 | 1462 | /** |
| 1463 | - * Output links to perform host actions |
|
| 1464 | - */ |
|
| 1463 | + * Output links to perform host actions |
|
| 1464 | + */ |
|
| 1465 | 1465 | function boincwork_host_action_links($host_id) { |
| 1466 | - $output = ''; |
|
| 1467 | - if (boincwork_host_user_is_owner($host_id)) { |
|
| 1466 | + $output = ''; |
|
| 1467 | + if (boincwork_host_user_is_owner($host_id)) { |
|
| 1468 | 1468 | // Show merge hosts option |
| 1469 | 1469 | $output = '<ul class="tab-list"><li class="first tab">'; |
| 1470 | 1470 | $output .= l(bts('Merge', array(), NULL, 'boinc:form-merge'), "host/{$host_id}/merge"); |
| 1471 | 1471 | $output .= '</li>'; |
| 1472 | 1472 | // If host has no tasks, allow the host to be deleted |
| 1473 | 1473 | if (!boincwork_host_get_task_count($host_id)) { |
| 1474 | - $output .= '<li class="tab">'; |
|
| 1475 | - $output .= l(bts('Delete', array(), NULL, 'boinc:form-delete'), "host/{$host_id}/delete", |
|
| 1474 | + $output .= '<li class="tab">'; |
|
| 1475 | + $output .= l(bts('Delete', array(), NULL, 'boinc:form-delete'), "host/{$host_id}/delete", |
|
| 1476 | 1476 | array( |
| 1477 | - 'attributes' => array( |
|
| 1477 | + 'attributes' => array( |
|
| 1478 | 1478 | 'onclick' => 'return confirm(\'' . bts('This will delete host @id' |
| 1479 | - . ' from your account forever. Are you sure this is OK?', |
|
| 1480 | - array('@id' => $host_id), |
|
| 1481 | - NULL, 'boinc:account-host-delete') . '\')' |
|
| 1482 | - ) |
|
| 1479 | + . ' from your account forever. Are you sure this is OK?', |
|
| 1480 | + array('@id' => $host_id), |
|
| 1481 | + NULL, 'boinc:account-host-delete') . '\')' |
|
| 1482 | + ) |
|
| 1483 | 1483 | ) |
| 1484 | - ); |
|
| 1485 | - $output .= '</li>'; |
|
| 1484 | + ); |
|
| 1485 | + $output .= '</li>'; |
|
| 1486 | 1486 | } |
| 1487 | 1487 | $output .= '</ul>'; |
| 1488 | - } |
|
| 1489 | - return $output; |
|
| 1488 | + } |
|
| 1489 | + return $output; |
|
| 1490 | 1490 | } |
| 1491 | 1491 | |
| 1492 | 1492 | /** |
| 1493 | 1493 | * Get details for a given host |
| 1494 | 1494 | */ |
| 1495 | 1495 | function boincwork_host_get_info($host_id) { |
| 1496 | - db_set_active('boinc_ro'); |
|
| 1497 | - $host = db_fetch_object(db_query( |
|
| 1496 | + db_set_active('boinc_ro'); |
|
| 1497 | + $host = db_fetch_object(db_query( |
|
| 1498 | 1498 | "SELECT * FROM {host} WHERE id = '%d'", |
| 1499 | 1499 | $host_id |
| 1500 | - )); |
|
| 1501 | - db_set_active('default'); |
|
| 1502 | - return $host; |
|
| 1500 | + )); |
|
| 1501 | + db_set_active('default'); |
|
| 1502 | + return $host; |
|
| 1503 | 1503 | } |
| 1504 | 1504 | |
| 1505 | 1505 | /** |
| 1506 | 1506 | * Get the number of tasks associated with a given host |
| 1507 | 1507 | */ |
| 1508 | 1508 | function boincwork_host_get_task_count($host_id) { |
| 1509 | - db_set_active('boinc_ro'); |
|
| 1510 | - $count = db_result(db_query( |
|
| 1509 | + db_set_active('boinc_ro'); |
|
| 1510 | + $count = db_result(db_query( |
|
| 1511 | 1511 | "SELECT COUNT(*) FROM {result} WHERE hostid = '%d'", |
| 1512 | 1512 | $host_id |
| 1513 | - )); |
|
| 1514 | - db_set_active('default'); |
|
| 1515 | - return $count; |
|
| 1513 | + )); |
|
| 1514 | + db_set_active('default'); |
|
| 1515 | + return $count; |
|
| 1516 | 1516 | } |
| 1517 | 1517 | |
| 1518 | 1518 | /** |
| 1519 | 1519 | * Check whether a user is the owner of a host |
| 1520 | 1520 | */ |
| 1521 | 1521 | function boincwork_host_user_is_owner($host_id, $uid = NULL) { |
| 1522 | - if (!$uid) { |
|
| 1522 | + if (!$uid) { |
|
| 1523 | 1523 | global $user; |
| 1524 | 1524 | $uid = $user->uid; |
| 1525 | - } |
|
| 1526 | - $account = user_load($uid); |
|
| 1527 | - // Get host owner |
|
| 1528 | - db_set_active('boinc_ro'); |
|
| 1529 | - $owner = db_result(db_query( |
|
| 1525 | + } |
|
| 1526 | + $account = user_load($uid); |
|
| 1527 | + // Get host owner |
|
| 1528 | + db_set_active('boinc_ro'); |
|
| 1529 | + $owner = db_result(db_query( |
|
| 1530 | 1530 | "SELECT userid FROM {host} WHERE id = '%d'", |
| 1531 | 1531 | $host_id |
| 1532 | - )); |
|
| 1533 | - db_set_active('default'); |
|
| 1534 | - return ($account->boincuser_id === $owner); |
|
| 1532 | + )); |
|
| 1533 | + db_set_active('default'); |
|
| 1534 | + return ($account->boincuser_id === $owner); |
|
| 1535 | 1535 | } |
| 1536 | 1536 | |
| 1537 | 1537 | /** |
| 1538 | - * Determine output for host last contact time |
|
| 1539 | - */ |
|
| 1538 | + * Determine output for host last contact time |
|
| 1539 | + */ |
|
| 1540 | 1540 | function boincwork_host_last_contact($timestamp, $host_id = NULL, $context = NULL) { |
| 1541 | - $output = '---'; |
|
| 1542 | - $root_log_dir = variable_get('boinc_host_sched_logs_dir', ''); |
|
| 1543 | - $log = ''; |
|
| 1544 | - if ($timestamp) { |
|
| 1541 | + $output = '---'; |
|
| 1542 | + $root_log_dir = variable_get('boinc_host_sched_logs_dir', ''); |
|
| 1543 | + $log = ''; |
|
| 1544 | + if ($timestamp) { |
|
| 1545 | 1545 | $output = date('j M Y G:i:s T', $timestamp); |
| 1546 | - } |
|
| 1547 | - if ($root_log_dir AND $host_id) { |
|
| 1546 | + } |
|
| 1547 | + if ($root_log_dir AND $host_id) { |
|
| 1548 | 1548 | $subdir = substr($host_id, 0, -3) OR $subdir = 0; |
| 1549 | 1549 | $log = implode('/', array($root_log_dir, $subdir, $host_id)); |
| 1550 | - } |
|
| 1551 | - if ($log AND file_exists($log)) { |
|
| 1550 | + } |
|
| 1551 | + if ($log AND file_exists($log)) { |
|
| 1552 | 1552 | $output = l($output, "host/{$host_id}/log"); |
| 1553 | - } |
|
| 1554 | - return $output; |
|
| 1553 | + } |
|
| 1554 | + return $output; |
|
| 1555 | 1555 | } |
| 1556 | 1556 | |
| 1557 | 1557 | /** |
| 1558 | 1558 | * |
| 1559 | 1559 | */ |
| 1560 | 1560 | function boincwork_host_venue_selector($host_id) { |
| 1561 | - $output = ''; |
|
| 1562 | - if (function_exists('jump_quickly')) { |
|
| 1561 | + $output = ''; |
|
| 1562 | + if (function_exists('jump_quickly')) { |
|
| 1563 | 1563 | $path = "host/{$host_id}/set-venue"; |
| 1564 | 1564 | $venues = array( |
| 1565 | - "{$path}/generic" => bts('Generic', array(), NULL, 'boinc:account-preferences-location'), |
|
| 1566 | - "{$path}/home" => bts('Home', array(), NULL, 'boinc:account-preferences-location:-1:ignoreoverwrite'), |
|
| 1567 | - "{$path}/work" => bts('Work', array(), NULL, 'boinc:account-preferences-location'), |
|
| 1568 | - "{$path}/school" => bts('School', array(), NULL, 'boinc:account-preferences-location') |
|
| 1565 | + "{$path}/generic" => bts('Generic', array(), NULL, 'boinc:account-preferences-location'), |
|
| 1566 | + "{$path}/home" => bts('Home', array(), NULL, 'boinc:account-preferences-location:-1:ignoreoverwrite'), |
|
| 1567 | + "{$path}/work" => bts('Work', array(), NULL, 'boinc:account-preferences-location'), |
|
| 1568 | + "{$path}/school" => bts('School', array(), NULL, 'boinc:account-preferences-location') |
|
| 1569 | 1569 | ); |
| 1570 | 1570 | variable_set('jump_use_js_venues-Array', 1); |
| 1571 | 1571 | drupal_add_js(drupal_get_path('module', 'jump') . '/jump.js'); |
@@ -1573,34 +1573,34 @@ discard block |
||
| 1573 | 1573 | // Get current venue |
| 1574 | 1574 | db_set_active('boinc_ro'); |
| 1575 | 1575 | $venue = db_result(db_query( |
| 1576 | - "SELECT venue FROM {host} WHERE id = '%d'", |
|
| 1577 | - $host_id |
|
| 1576 | + "SELECT venue FROM {host} WHERE id = '%d'", |
|
| 1577 | + $host_id |
|
| 1578 | 1578 | )); |
| 1579 | 1579 | db_set_active('default'); |
| 1580 | 1580 | $output .= jump_quickly($venues, 'venues', 1, "{$path}/{$venue}"); |
| 1581 | - } |
|
| 1582 | - return $output; |
|
| 1581 | + } |
|
| 1582 | + return $output; |
|
| 1583 | 1583 | } |
| 1584 | 1584 | |
| 1585 | 1585 | /** |
| 1586 | - * Determine output for task reported time / deadline |
|
| 1587 | - */ |
|
| 1586 | + * Determine output for task reported time / deadline |
|
| 1587 | + */ |
|
| 1588 | 1588 | function boincwork_task_time_reported($received_time = NULL, $deadline = NULL, $context = NULL) { |
| 1589 | - $output = '---'; |
|
| 1590 | - if ($received_time OR $deadline) { |
|
| 1589 | + $output = '---'; |
|
| 1590 | + if ($received_time OR $deadline) { |
|
| 1591 | 1591 | $timestamp = ($received_time) ? $received_time : $deadline; |
| 1592 | 1592 | $output = date('j M Y G:i:s T', $timestamp); |
| 1593 | 1593 | // Add a wrapper to deadline text |
| 1594 | 1594 | if (!$received_time) { |
| 1595 | - if (time() < $deadline) { |
|
| 1595 | + if (time() < $deadline) { |
|
| 1596 | 1596 | $output = '<span class="on-time">' . $output . '</span>'; |
| 1597 | - } |
|
| 1598 | - else { |
|
| 1597 | + } |
|
| 1598 | + else { |
|
| 1599 | 1599 | $output = '<span class="past-due">' . $output . '</span>'; |
| 1600 | - } |
|
| 1600 | + } |
|
| 1601 | 1601 | } |
| 1602 | - } |
|
| 1603 | - return $output; |
|
| 1602 | + } |
|
| 1603 | + return $output; |
|
| 1604 | 1604 | } |
| 1605 | 1605 | |
| 1606 | 1606 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -1631,345 +1631,345 @@ discard block |
||
| 1631 | 1631 | * Number of table row to display per page. Defaults to 20. |
| 1632 | 1632 | */ |
| 1633 | 1633 | function boincwork_tasktable($category = 0, $queryid = 1, $tselect = NULL, $app_id = 0, $tablerows = 20) { |
| 1634 | - // Check type parameter, if not (0,2) then return an error. |
|
| 1635 | - if ( ($category!=0) AND ($category!=1) AND ($category!=2) ) { |
|
| 1634 | + // Check type parameter, if not (0,2) then return an error. |
|
| 1635 | + if ( ($category!=0) AND ($category!=1) AND ($category!=2) ) { |
|
| 1636 | 1636 | watchdog('boincwork', 'task table called with invalid category = %category', array('%category' => $category), WATCHDOG_WARNING); |
| 1637 | 1637 | return ''; |
| 1638 | - } |
|
| 1638 | + } |
|
| 1639 | 1639 | |
| 1640 | - require_boinc( array('util', 'result') ); |
|
| 1640 | + require_boinc( array('util', 'result') ); |
|
| 1641 | 1641 | |
| 1642 | - global $language; |
|
| 1643 | - $locality=$language->language; |
|
| 1644 | - $nf = new NumberFormatter($locality, NumberFormatter::DECIMAL); |
|
| 1645 | - $nf->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 0); |
|
| 1646 | - $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0); |
|
| 1642 | + global $language; |
|
| 1643 | + $locality=$language->language; |
|
| 1644 | + $nf = new NumberFormatter($locality, NumberFormatter::DECIMAL); |
|
| 1645 | + $nf->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 0); |
|
| 1646 | + $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 0); |
|
| 1647 | 1647 | |
| 1648 | - $output = ''; |
|
| 1648 | + $output = ''; |
|
| 1649 | 1649 | |
| 1650 | - $state_hnames = array( |
|
| 1650 | + $state_hnames = array( |
|
| 1651 | 1651 | STATE_ALL => 'All', |
| 1652 | 1652 | STATE_IN_PROGRESS => 'In progress', |
| 1653 | 1653 | STATE_PENDING => 'Pending', |
| 1654 | 1654 | STATE_VALID => 'Valid', |
| 1655 | 1655 | STATE_INVALID => 'Invalid', |
| 1656 | 1656 | STATE_ERROR => 'Error', |
| 1657 | - ); |
|
| 1658 | - // Array (hash) to count total number of results/tasks, and their states. |
|
| 1659 | - $taskstates = array( |
|
| 1657 | + ); |
|
| 1658 | + // Array (hash) to count total number of results/tasks, and their states. |
|
| 1659 | + $taskstates = array( |
|
| 1660 | 1660 | STATE_ALL => 0, |
| 1661 | 1661 | STATE_IN_PROGRESS => 0, |
| 1662 | 1662 | STATE_PENDING => 0, |
| 1663 | 1663 | STATE_VALID => 0, |
| 1664 | 1664 | STATE_INVALID => 0, |
| 1665 | 1665 | STATE_ERROR => 0, |
| 1666 | - ); |
|
| 1667 | - // Array to hold pretty-print result data to be displayed in a table. |
|
| 1668 | - $resultdata = array(); |
|
| 1669 | - // Arrays for applications. Form below uses $applications as parameter. |
|
| 1670 | - $application_map = array(); |
|
| 1671 | - $application_select_count = array(); |
|
| 1672 | - $applications = array(); |
|
| 1673 | - |
|
| 1674 | - // BOINC DB queries for results, application names |
|
| 1675 | - db_set_active('boinc_ro'); |
|
| 1676 | - |
|
| 1677 | - // Query to retreive all results, in order to calculate status for a |
|
| 1678 | - // host with application names for each result. |
|
| 1679 | - $sqlall = "SELECT user_friendly_name," |
|
| 1680 | - ."r.appid as appid," |
|
| 1681 | - ."r.server_state AS server_state," |
|
| 1682 | - ."r.outcome AS outcome," |
|
| 1683 | - ."r.client_state AS client_state," |
|
| 1684 | - ."r.validate_state AS validate_state," |
|
| 1685 | - ."r.exit_status AS exit_status " |
|
| 1686 | - ."FROM {result} AS r " |
|
| 1687 | - ."INNER JOIN {app} AS a " |
|
| 1688 | - ."ON r.appid=a.id "; |
|
| 1689 | - |
|
| 1690 | - // Use userid, hostid, or workunitid |
|
| 1691 | - if ($category==0) { |
|
| 1666 | + ); |
|
| 1667 | + // Array to hold pretty-print result data to be displayed in a table. |
|
| 1668 | + $resultdata = array(); |
|
| 1669 | + // Arrays for applications. Form below uses $applications as parameter. |
|
| 1670 | + $application_map = array(); |
|
| 1671 | + $application_select_count = array(); |
|
| 1672 | + $applications = array(); |
|
| 1673 | + |
|
| 1674 | + // BOINC DB queries for results, application names |
|
| 1675 | + db_set_active('boinc_ro'); |
|
| 1676 | + |
|
| 1677 | + // Query to retreive all results, in order to calculate status for a |
|
| 1678 | + // host with application names for each result. |
|
| 1679 | + $sqlall = "SELECT user_friendly_name," |
|
| 1680 | + ."r.appid as appid," |
|
| 1681 | + ."r.server_state AS server_state," |
|
| 1682 | + ."r.outcome AS outcome," |
|
| 1683 | + ."r.client_state AS client_state," |
|
| 1684 | + ."r.validate_state AS validate_state," |
|
| 1685 | + ."r.exit_status AS exit_status " |
|
| 1686 | + ."FROM {result} AS r " |
|
| 1687 | + ."INNER JOIN {app} AS a " |
|
| 1688 | + ."ON r.appid=a.id "; |
|
| 1689 | + |
|
| 1690 | + // Use userid, hostid, or workunitid |
|
| 1691 | + if ($category==0) { |
|
| 1692 | 1692 | $sqlall .= " WHERE r.userid='%s' "; |
| 1693 | - } |
|
| 1694 | - elseif ($category==1) { |
|
| 1693 | + } |
|
| 1694 | + elseif ($category==1) { |
|
| 1695 | 1695 | $sqlall .= " WHERE r.workunitid='%s' "; |
| 1696 | - } |
|
| 1697 | - elseif ($category==2) { |
|
| 1696 | + } |
|
| 1697 | + elseif ($category==2) { |
|
| 1698 | 1698 | $sqlall .= " WHERE r.hostid='%s' "; |
| 1699 | - } |
|
| 1700 | - $sqlall .= " ORDER BY user_friendly_name"; |
|
| 1701 | - $dbres_all = db_query($sqlall, $queryid); |
|
| 1702 | - db_set_active('default'); |
|
| 1699 | + } |
|
| 1700 | + $sqlall .= " ORDER BY user_friendly_name"; |
|
| 1701 | + $dbres_all = db_query($sqlall, $queryid); |
|
| 1702 | + db_set_active('default'); |
|
| 1703 | 1703 | |
| 1704 | - // Loop 1 of DB results |
|
| 1705 | - if ($dbres_all) { |
|
| 1704 | + // Loop 1 of DB results |
|
| 1705 | + if ($dbres_all) { |
|
| 1706 | 1706 | while ($result = db_fetch_object($dbres_all)) { |
| 1707 | - $mystate = state_num($result); |
|
| 1708 | - if ( ($result->appid==$app_id) OR ($app_id==0) OR ($app_id==-1) ) { |
|
| 1707 | + $mystate = state_num($result); |
|
| 1708 | + if ( ($result->appid==$app_id) OR ($app_id==0) OR ($app_id==-1) ) { |
|
| 1709 | 1709 | $taskstates[STATE_ALL]++; |
| 1710 | 1710 | switch ($mystate) { |
| 1711 | 1711 | case STATE_IN_PROGRESS: |
| 1712 | 1712 | $taskstates[STATE_IN_PROGRESS]++; |
| 1713 | - break; |
|
| 1713 | + break; |
|
| 1714 | 1714 | case STATE_PENDING: |
| 1715 | 1715 | $taskstates[STATE_PENDING]++; |
| 1716 | - break; |
|
| 1716 | + break; |
|
| 1717 | 1717 | case STATE_VALID: |
| 1718 | 1718 | $taskstates[STATE_VALID]++; |
| 1719 | - break; |
|
| 1719 | + break; |
|
| 1720 | 1720 | case STATE_INVALID: |
| 1721 | 1721 | $taskstates[STATE_INVALID]++; |
| 1722 | - break; |
|
| 1722 | + break; |
|
| 1723 | 1723 | case STATE_ERROR: |
| 1724 | 1724 | $taskstates[STATE_ERROR]++; |
| 1725 | - break; |
|
| 1725 | + break; |
|
| 1726 | 1726 | } |
| 1727 | - }// if app_id |
|
| 1727 | + }// if app_id |
|
| 1728 | 1728 | |
| 1729 | - //map holds a map between app ids and user friendly names for all applications. |
|
| 1730 | - $application_map[$result->appid] = $result->user_friendly_name; |
|
| 1731 | - if ( ($mystate == $tselect) OR ($tselect==STATE_ALL) ) { |
|
| 1729 | + //map holds a map between app ids and user friendly names for all applications. |
|
| 1730 | + $application_map[$result->appid] = $result->user_friendly_name; |
|
| 1731 | + if ( ($mystate == $tselect) OR ($tselect==STATE_ALL) ) { |
|
| 1732 | 1732 | //count of appids in the results. |
| 1733 | 1733 | $application_select_count[$result->appid]++; |
| 1734 | - }// if mystate |
|
| 1734 | + }// if mystate |
|
| 1735 | 1735 | |
| 1736 | 1736 | }// while |
| 1737 | - } |
|
| 1738 | - else { |
|
| 1739 | - } |
|
| 1737 | + } |
|
| 1738 | + else { |
|
| 1739 | + } |
|
| 1740 | 1740 | |
| 1741 | - // Entry for all applications. |
|
| 1742 | - $allcount = $application_select_count ? array_sum($application_select_count) : 0; |
|
| 1743 | - $applications[-1] = bts('Application', array(), NULL, 'boinc:task-table'); |
|
| 1744 | - $applications[0] = bts('All applications', array(), NULL, 'boinc:task-table') . ' (' . $allcount . ')'; |
|
| 1745 | - // Create application filter from application_map and application_select_count. |
|
| 1746 | - foreach($application_map as $akey => $aname) { |
|
| 1741 | + // Entry for all applications. |
|
| 1742 | + $allcount = $application_select_count ? array_sum($application_select_count) : 0; |
|
| 1743 | + $applications[-1] = bts('Application', array(), NULL, 'boinc:task-table'); |
|
| 1744 | + $applications[0] = bts('All applications', array(), NULL, 'boinc:task-table') . ' (' . $allcount . ')'; |
|
| 1745 | + // Create application filter from application_map and application_select_count. |
|
| 1746 | + foreach($application_map as $akey => $aname) { |
|
| 1747 | 1747 | $acount = 0; |
| 1748 | 1748 | if ( $application_select_count and array_key_exists($akey, $application_select_count) ) { |
| 1749 | - $acount = $application_select_count[$akey]; |
|
| 1749 | + $acount = $application_select_count[$akey]; |
|
| 1750 | 1750 | } |
| 1751 | 1751 | $applications[$akey] = $aname . ' ('. $acount . ')'; |
| 1752 | - } |
|
| 1753 | - // Header array for (sub) results table. |
|
| 1754 | - $resultheader = array( |
|
| 1752 | + } |
|
| 1753 | + // Header array for (sub) results table. |
|
| 1754 | + $resultheader = array( |
|
| 1755 | 1755 | array( |
| 1756 | - 'data' => bts('Task ID', array(), NULL, 'boinc:task-table'), |
|
| 1757 | - 'field' => 'id', |
|
| 1756 | + 'data' => bts('Task ID', array(), NULL, 'boinc:task-table'), |
|
| 1757 | + 'field' => 'id', |
|
| 1758 | 1758 | ), |
| 1759 | 1759 | array( |
| 1760 | - 'data' => bts('Workunit ID', array(), NULL, 'boinc:task-table'), |
|
| 1761 | - 'field' => 'workunitid', |
|
| 1760 | + 'data' => bts('Workunit ID', array(), NULL, 'boinc:task-table'), |
|
| 1761 | + 'field' => 'workunitid', |
|
| 1762 | 1762 | ), |
| 1763 | 1763 | array( |
| 1764 | - 'data' => bts('Computer', array(), NULL, 'boinc:task-table'), |
|
| 1765 | - 'field' => 'hostid', |
|
| 1764 | + 'data' => bts('Computer', array(), NULL, 'boinc:task-table'), |
|
| 1765 | + 'field' => 'hostid', |
|
| 1766 | 1766 | ), |
| 1767 | 1767 | array( |
| 1768 | - 'data' => bts('Sent', array(), NULL, 'boinc:task-table'), |
|
| 1769 | - 'field' => 'sent_time', |
|
| 1768 | + 'data' => bts('Sent', array(), NULL, 'boinc:task-table'), |
|
| 1769 | + 'field' => 'sent_time', |
|
| 1770 | 1770 | ), |
| 1771 | 1771 | array( |
| 1772 | - 'data' => bts('Time Reported or Deadline', array(), NULL, 'boinc:task-table') |
|
| 1772 | + 'data' => bts('Time Reported or Deadline', array(), NULL, 'boinc:task-table') |
|
| 1773 | 1773 | ), |
| 1774 | 1774 | array( |
| 1775 | - 'data' => bts('Status', array(), NULL, 'boinc:task-table') |
|
| 1775 | + 'data' => bts('Status', array(), NULL, 'boinc:task-table') |
|
| 1776 | 1776 | ), |
| 1777 | 1777 | array( |
| 1778 | - 'data' => bts('Run time', array(), NULL, 'boinc:task-table'), |
|
| 1779 | - 'field' => 'elapsed_time', |
|
| 1778 | + 'data' => bts('Run time', array(), NULL, 'boinc:task-table'), |
|
| 1779 | + 'field' => 'elapsed_time', |
|
| 1780 | 1780 | ), |
| 1781 | 1781 | array( |
| 1782 | - 'data' => bts('CPU time', array(), NULL, 'boinc:task-table'), |
|
| 1783 | - 'field' => 'cpu_time', |
|
| 1782 | + 'data' => bts('CPU time', array(), NULL, 'boinc:task-table'), |
|
| 1783 | + 'field' => 'cpu_time', |
|
| 1784 | 1784 | ), |
| 1785 | 1785 | array( |
| 1786 | - 'data' => bts('Granted Credit', array(), NULL, 'boinc:task-table'), |
|
| 1787 | - 'field' => 'granted_credit', |
|
| 1786 | + 'data' => bts('Granted Credit', array(), NULL, 'boinc:task-table'), |
|
| 1787 | + 'field' => 'granted_credit', |
|
| 1788 | 1788 | ), |
| 1789 | 1789 | // Application is a column, but won't be added until after tablesort_sql(). |
| 1790 | - ); |
|
| 1791 | - |
|
| 1792 | - // Query to retreive a subset of the total results for the results table. |
|
| 1793 | - db_set_active('boinc_ro'); |
|
| 1794 | - $sqlsub = "SELECT r.id AS id," |
|
| 1795 | - ."r.name AS name," |
|
| 1796 | - ."r.workunitid AS workunitid," |
|
| 1797 | - ."r.hostid as hostid," |
|
| 1798 | - ."r.sent_time AS sent_time," |
|
| 1799 | - ."r.received_time AS received_time," |
|
| 1800 | - ."r.report_deadline AS report_deadline," |
|
| 1801 | - ."r.server_state AS server_state," |
|
| 1802 | - ."r.outcome AS outcome," |
|
| 1803 | - ."r.client_state AS client_state," |
|
| 1804 | - ."r.validate_state AS validate_state," |
|
| 1805 | - ."r.exit_status AS exit_status," |
|
| 1806 | - ."r.elapsed_time AS elapsed_time," |
|
| 1807 | - ."r.cpu_time AS cpu_time," |
|
| 1808 | - ."r.granted_credit AS granted_credit," |
|
| 1809 | - ."r.appid AS appid," |
|
| 1810 | - ."r.app_version_id AS app_version_id," |
|
| 1811 | - ."a.user_friendly_name," |
|
| 1812 | - ."av.version_num AS version_number," |
|
| 1813 | - ."av.plan_class AS plan_class," |
|
| 1814 | - ."pl.name AS platform " |
|
| 1815 | - ."FROM {result} AS r " |
|
| 1816 | - ."INNER JOIN {app} AS a " |
|
| 1817 | - ."ON r.appid=a.id " |
|
| 1818 | - ."LEFT JOIN {app_version} AS av " |
|
| 1819 | - ."ON r.app_version_id=av.id " |
|
| 1820 | - ."LEFT JOIN {platform} AS pl " |
|
| 1821 | - ."ON av.platformid=pl.id "; |
|
| 1822 | - |
|
| 1823 | - // Build an array for the WHERE clauses. The individual clauses are |
|
| 1824 | - // placed into an array, and implode() is used to combine them into |
|
| 1825 | - // a WHERE statement for the sql query. If no such clauses are added |
|
| 1826 | - // to the array, then no WHERE statement will be included. |
|
| 1827 | - $sqlwhere = array(); |
|
| 1828 | - |
|
| 1829 | - // Use userid, hostid, or workunitid |
|
| 1830 | - if ($category==0) { |
|
| 1790 | + ); |
|
| 1791 | + |
|
| 1792 | + // Query to retreive a subset of the total results for the results table. |
|
| 1793 | + db_set_active('boinc_ro'); |
|
| 1794 | + $sqlsub = "SELECT r.id AS id," |
|
| 1795 | + ."r.name AS name," |
|
| 1796 | + ."r.workunitid AS workunitid," |
|
| 1797 | + ."r.hostid as hostid," |
|
| 1798 | + ."r.sent_time AS sent_time," |
|
| 1799 | + ."r.received_time AS received_time," |
|
| 1800 | + ."r.report_deadline AS report_deadline," |
|
| 1801 | + ."r.server_state AS server_state," |
|
| 1802 | + ."r.outcome AS outcome," |
|
| 1803 | + ."r.client_state AS client_state," |
|
| 1804 | + ."r.validate_state AS validate_state," |
|
| 1805 | + ."r.exit_status AS exit_status," |
|
| 1806 | + ."r.elapsed_time AS elapsed_time," |
|
| 1807 | + ."r.cpu_time AS cpu_time," |
|
| 1808 | + ."r.granted_credit AS granted_credit," |
|
| 1809 | + ."r.appid AS appid," |
|
| 1810 | + ."r.app_version_id AS app_version_id," |
|
| 1811 | + ."a.user_friendly_name," |
|
| 1812 | + ."av.version_num AS version_number," |
|
| 1813 | + ."av.plan_class AS plan_class," |
|
| 1814 | + ."pl.name AS platform " |
|
| 1815 | + ."FROM {result} AS r " |
|
| 1816 | + ."INNER JOIN {app} AS a " |
|
| 1817 | + ."ON r.appid=a.id " |
|
| 1818 | + ."LEFT JOIN {app_version} AS av " |
|
| 1819 | + ."ON r.app_version_id=av.id " |
|
| 1820 | + ."LEFT JOIN {platform} AS pl " |
|
| 1821 | + ."ON av.platformid=pl.id "; |
|
| 1822 | + |
|
| 1823 | + // Build an array for the WHERE clauses. The individual clauses are |
|
| 1824 | + // placed into an array, and implode() is used to combine them into |
|
| 1825 | + // a WHERE statement for the sql query. If no such clauses are added |
|
| 1826 | + // to the array, then no WHERE statement will be included. |
|
| 1827 | + $sqlwhere = array(); |
|
| 1828 | + |
|
| 1829 | + // Use userid, hostid, or workunitid |
|
| 1830 | + if ($category==0) { |
|
| 1831 | 1831 | $sqlwhere[] = "r.userid = '%s'"; |
| 1832 | - } |
|
| 1833 | - elseif ($category==1) { |
|
| 1832 | + } |
|
| 1833 | + elseif ($category==1) { |
|
| 1834 | 1834 | $sqlwhere[] = "r.workunitid = '%s'"; |
| 1835 | - } |
|
| 1836 | - elseif ($category==2) { |
|
| 1835 | + } |
|
| 1836 | + elseif ($category==2) { |
|
| 1837 | 1837 | $sqlwhere[] = "r.hostid = '%s'"; |
| 1838 | - } |
|
| 1838 | + } |
|
| 1839 | 1839 | |
| 1840 | - // Append additional where clauses based on task selection. |
|
| 1841 | - switch ($tselect) { |
|
| 1842 | - case STATE_IN_PROGRESS: |
|
| 1840 | + // Append additional where clauses based on task selection. |
|
| 1841 | + switch ($tselect) { |
|
| 1842 | + case STATE_IN_PROGRESS: |
|
| 1843 | 1843 | $sqlwhere[] = "r.server_state = 4"; |
| 1844 | 1844 | break; |
| 1845 | - case STATE_PENDING: |
|
| 1845 | + case STATE_PENDING: |
|
| 1846 | 1846 | $sqlwhere[] = "(r.server_state = 5) AND (r.outcome = 1) AND (r.validate_state >= 0) AND (r.validate_state <= 0 OR r.validate_state >= 4) AND (r.validate_state <= 4)"; |
| 1847 | 1847 | break; |
| 1848 | - case STATE_VALID: |
|
| 1848 | + case STATE_VALID: |
|
| 1849 | 1849 | $sqlwhere[] = "(r.server_state = 5) AND (r.outcome = 1) AND (r.validate_state = 1)"; |
| 1850 | 1850 | break; |
| 1851 | - case STATE_INVALID: |
|
| 1851 | + case STATE_INVALID: |
|
| 1852 | 1852 | $sqlwhere[] = "(r.server_state = 5) AND ((r.outcome = 6) OR ((r.outcome = 1) AND ((r.validate_state = 2) OR (r.validate_state = 3) OR (r.validate_state = 5))))"; |
| 1853 | 1853 | break; |
| 1854 | - case STATE_ERROR: |
|
| 1854 | + case STATE_ERROR: |
|
| 1855 | 1855 | $sqlwhere[] = "(r.server_state = 5) AND (r.outcome >= 3) AND (r.outcome <= 4 OR r.outcome >= 7) AND (r.outcome <= 7)"; |
| 1856 | 1856 | break; |
| 1857 | - default: |
|
| 1857 | + default: |
|
| 1858 | 1858 | } |
| 1859 | 1859 | |
| 1860 | - if (is_numeric($app_id) AND $app_id>0 ) { |
|
| 1860 | + if (is_numeric($app_id) AND $app_id>0 ) { |
|
| 1861 | 1861 | $sqlwhere[] = "r.appid = '%s'"; |
| 1862 | 1862 | if ($sqlwhere) $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere); |
| 1863 | 1863 | $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid, $app_id); |
| 1864 | - } |
|
| 1865 | - else { |
|
| 1864 | + } |
|
| 1865 | + else { |
|
| 1866 | 1866 | if ($sqlwhere) $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere); |
| 1867 | 1867 | $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid); |
| 1868 | - } |
|
| 1869 | - db_set_active('default'); |
|
| 1868 | + } |
|
| 1869 | + db_set_active('default'); |
|
| 1870 | 1870 | |
| 1871 | - // Loop 2 over DB results. |
|
| 1872 | - if ($dbres_sub) { |
|
| 1871 | + // Loop 2 over DB results. |
|
| 1872 | + if ($dbres_sub) { |
|
| 1873 | 1873 | while ($result = db_fetch_object($dbres_sub)) { |
| 1874 | - // state_num() function changes $result object, clone $result |
|
| 1875 | - // object for use in state_num() |
|
| 1876 | - // check if state matches selection |
|
| 1877 | - if ( (state_num(clone $result) == $tselect) OR ($tselect==STATE_ALL) ) { |
|
| 1874 | + // state_num() function changes $result object, clone $result |
|
| 1875 | + // object for use in state_num() |
|
| 1876 | + // check if state matches selection |
|
| 1877 | + if ( (state_num(clone $result) == $tselect) OR ($tselect==STATE_ALL) ) { |
|
| 1878 | 1878 | // create pretty result row |
| 1879 | 1879 | $prettyresult = array( |
| 1880 | - array( |
|
| 1880 | + array( |
|
| 1881 | 1881 | 'data' => l($result->name, "task/{$result->id}"), |
| 1882 | 1882 | 'class' => 'task-name', |
| 1883 | - ), |
|
| 1884 | - l($result->workunitid, "workunit/{$result->workunitid}"), |
|
| 1885 | - l($result->hostid, "host/{$result->hostid}"), |
|
| 1886 | - date('j M Y G:i:s T', $result->sent_time), |
|
| 1887 | - boincwork_task_time_reported($result->received_time, $result->report_deadline), |
|
| 1888 | - state_string($result), |
|
| 1889 | - $nf->format($result->elapsed_time), |
|
| 1890 | - $nf->format($result->cpu_time), |
|
| 1891 | - $nf->format($result->granted_credit), |
|
| 1892 | - array( |
|
| 1883 | + ), |
|
| 1884 | + l($result->workunitid, "workunit/{$result->workunitid}"), |
|
| 1885 | + l($result->hostid, "host/{$result->hostid}"), |
|
| 1886 | + date('j M Y G:i:s T', $result->sent_time), |
|
| 1887 | + boincwork_task_time_reported($result->received_time, $result->report_deadline), |
|
| 1888 | + state_string($result), |
|
| 1889 | + $nf->format($result->elapsed_time), |
|
| 1890 | + $nf->format($result->cpu_time), |
|
| 1891 | + $nf->format($result->granted_credit), |
|
| 1892 | + array( |
|
| 1893 | 1893 | 'data' => $result->user_friendly_name . " " . pretty_application_version($result->app_version_id,$result->version_number, $result->plan_class, $result->platform), |
| 1894 | 1894 | 'class' => 'task-app', |
| 1895 | - ), |
|
| 1895 | + ), |
|
| 1896 | 1896 | ); |
| 1897 | 1897 | $resultdata[] = array_values($prettyresult); |
| 1898 | - } |
|
| 1898 | + } |
|
| 1899 | 1899 | }// while |
| 1900 | - } |
|
| 1901 | - else { |
|
| 1902 | - } |
|
| 1903 | - // Begin result navigation |
|
| 1900 | + } |
|
| 1901 | + else { |
|
| 1902 | + } |
|
| 1903 | + // Begin result navigation |
|
| 1904 | 1904 | |
| 1905 | - // Set pathprefix based on type |
|
| 1906 | - if ($category==0) { |
|
| 1905 | + // Set pathprefix based on type |
|
| 1906 | + if ($category==0) { |
|
| 1907 | 1907 | $pathprefix = 'account/tasks'; |
| 1908 | - } |
|
| 1909 | - elseif ($category==1) { |
|
| 1908 | + } |
|
| 1909 | + elseif ($category==1) { |
|
| 1910 | 1910 | $pathprefix = 'workunit/' . $queryid . '/tasks'; |
| 1911 | - } |
|
| 1912 | - elseif ($category==2) { |
|
| 1911 | + } |
|
| 1912 | + elseif ($category==2) { |
|
| 1913 | 1913 | $pathprefix = 'host/' . $queryid . '/tasks'; |
| 1914 | - } |
|
| 1915 | - // Need an "All" tab as well, maps to app_id of zero. |
|
| 1916 | - $application_map[0] = bts('All', array(), NULL, 'boinc:task-table'); |
|
| 1917 | - $stitems = array(); |
|
| 1918 | - foreach ($taskstates as $state => $numstates) { |
|
| 1914 | + } |
|
| 1915 | + // Need an "All" tab as well, maps to app_id of zero. |
|
| 1916 | + $application_map[0] = bts('All', array(), NULL, 'boinc:task-table'); |
|
| 1917 | + $stitems = array(); |
|
| 1918 | + foreach ($taskstates as $state => $numstates) { |
|
| 1919 | 1919 | $mypath = $pathprefix . '/' . $state . '/' . $app_id; |
| 1920 | 1920 | if ($state==STATE_ALL) { |
| 1921 | - $ltext = '<span class="tab task-app-name">' . bts('All', array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
|
| 1921 | + $ltext = '<span class="tab task-app-name">' . bts('All', array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
|
| 1922 | 1922 | } |
| 1923 | 1923 | else { |
| 1924 | - $ltext = '<span class="tab">' . bts($state_hnames[$state], array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
|
| 1924 | + $ltext = '<span class="tab">' . bts($state_hnames[$state], array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
|
| 1925 | 1925 | } |
| 1926 | 1926 | $myitem = array( |
| 1927 | - 'data' => l($ltext, $mypath, array('html' => TRUE) ), |
|
| 1927 | + 'data' => l($ltext, $mypath, array('html' => TRUE) ), |
|
| 1928 | 1928 | ); |
| 1929 | 1929 | if ($state==$tselect) { |
| 1930 | - $myitem['class'] = 'active'; |
|
| 1930 | + $myitem['class'] = 'active'; |
|
| 1931 | 1931 | } |
| 1932 | 1932 | $stitems[] = $myitem; |
| 1933 | - } |
|
| 1934 | - // Add reset button |
|
| 1935 | - $mypath = $pathprefix . '/0/0'; |
|
| 1936 | - $ltext = '<span class="tab">' . bts('Reset', array(), NULL, 'boinc:task-table') . '</span>'; |
|
| 1937 | - $stitems[] = array( 'data' => l($ltext, $mypath, array('html' => TRUE) ) ); |
|
| 1933 | + } |
|
| 1934 | + // Add reset button |
|
| 1935 | + $mypath = $pathprefix . '/0/0'; |
|
| 1936 | + $ltext = '<span class="tab">' . bts('Reset', array(), NULL, 'boinc:task-table') . '</span>'; |
|
| 1937 | + $stitems[] = array( 'data' => l($ltext, $mypath, array('html' => TRUE) ) ); |
|
| 1938 | 1938 | |
| 1939 | - $output .= theme_item_list($stitems, NULL, 'ul' . ' class="tabs secondary clearfix"'); |
|
| 1939 | + $output .= theme_item_list($stitems, NULL, 'ul' . ' class="tabs secondary clearfix"'); |
|
| 1940 | 1940 | |
| 1941 | - // Application select-drop down form |
|
| 1942 | - // Hack to place Application form into header |
|
| 1943 | - // App ID of zero maps to "-1" for drop-down box. |
|
| 1944 | - if ($app_id==0) { |
|
| 1941 | + // Application select-drop down form |
|
| 1942 | + // Hack to place Application form into header |
|
| 1943 | + // App ID of zero maps to "-1" for drop-down box. |
|
| 1944 | + if ($app_id==0) { |
|
| 1945 | 1945 | $app_id=-1; |
| 1946 | - } |
|
| 1947 | - $resultheader[] = drupal_get_form('boincwork_selectapp_form', $applications, $app_id); |
|
| 1946 | + } |
|
| 1947 | + $resultheader[] = drupal_get_form('boincwork_selectapp_form', $applications, $app_id); |
|
| 1948 | 1948 | |
| 1949 | - // Begin table of results |
|
| 1950 | - if ( is_array($resultheader) AND is_array($resultdata) ) { |
|
| 1949 | + // Begin table of results |
|
| 1950 | + if ( is_array($resultheader) AND is_array($resultdata) ) { |
|
| 1951 | 1951 | |
| 1952 | 1952 | // Take advantage of the fact that $category is the same as the row/column we want to remove. |
| 1953 | 1953 | if ( ($category==1) OR ($category==2) ) { |
| 1954 | - unset($resultheader[$category]); |
|
| 1955 | - delete_col($resultdata, $category); |
|
| 1954 | + unset($resultheader[$category]); |
|
| 1955 | + delete_col($resultdata, $category); |
|
| 1956 | 1956 | } |
| 1957 | 1957 | |
| 1958 | 1958 | $output .= theme_table($resultheader, $resultdata); |
| 1959 | 1959 | if (count($resultdata) > 0) { |
| 1960 | - $output .= theme('pager'); |
|
| 1960 | + $output .= theme('pager'); |
|
| 1961 | 1961 | } |
| 1962 | - } |
|
| 1963 | - return $output; |
|
| 1962 | + } |
|
| 1963 | + return $output; |
|
| 1964 | 1964 | } |
| 1965 | 1965 | |
| 1966 | 1966 | /** |
| 1967 | 1967 | * Function to delete a column from an array. |
| 1968 | 1968 | */ |
| 1969 | 1969 | function delete_col(&$array, $offset) { |
| 1970 | - return array_walk($array, function (&$v) use ($offset) { |
|
| 1971 | - array_splice($v, $offset, 1); |
|
| 1972 | - }); |
|
| 1970 | + return array_walk($array, function (&$v) use ($offset) { |
|
| 1971 | + array_splice($v, $offset, 1); |
|
| 1972 | + }); |
|
| 1973 | 1973 | } |
| 1974 | 1974 | |
| 1975 | 1975 | /** |
@@ -1989,7 +1989,7 @@ discard block |
||
| 1989 | 1989 | * platform name, may be NULL |
| 1990 | 1990 | */ |
| 1991 | 1991 | function pretty_application_version($appverid, $vernum, $plan_class, $plfm) { |
| 1992 | - switch ($appverid) { |
|
| 1992 | + switch ($appverid) { |
|
| 1993 | 1993 | case ANON_PLATFORM_UNKNOWN: |
| 1994 | 1994 | return "Anonymous platform"; |
| 1995 | 1995 | case ANON_PLATFORM_CPU: |
@@ -2010,11 +2010,11 @@ discard block |
||
| 2010 | 2010 | // that is not handled by the above case statements. |
| 2011 | 2011 | if ($appverid < 0) { |
| 2012 | 2012 | return "Unknown Anonymous platform"; |
| 2013 | - } |
|
| 2014 | - else { |
|
| 2013 | + } |
|
| 2014 | + else { |
|
| 2015 | 2015 | $prettyv = sprintf("%d.%02d", $vernum/100, $vernum%100); |
| 2016 | 2016 | $prettyc = ($plan_class) ? "($plan_class)" : ''; |
| 2017 | 2017 | return "v$prettyv $prettyc $plfm"; |
| 2018 | - } |
|
| 2019 | - } |
|
| 2018 | + } |
|
| 2019 | + } |
|
| 2020 | 2020 | } |
@@ -643,9 +643,9 @@ discard block |
||
| 643 | 643 | } |
| 644 | 644 | break; |
| 645 | 645 | |
| 646 | - default: |
|
| 647 | - // Don't generate form elements for things that aren't explicitly form |
|
| 648 | - // elements (i.e. 'title', '@attributes' keys, and the like) |
|
| 646 | + default: |
|
| 647 | + // Don't generate form elements for things that aren't explicitly form |
|
| 648 | + // elements (i.e. 'title', '@attributes' keys, and the like) |
|
| 649 | 649 | } |
| 650 | 650 | } |
| 651 | 651 | |
@@ -1990,31 +1990,31 @@ discard block |
||
| 1990 | 1990 | */ |
| 1991 | 1991 | function pretty_application_version($appverid, $vernum, $plan_class, $plfm) { |
| 1992 | 1992 | switch ($appverid) { |
| 1993 | - case ANON_PLATFORM_UNKNOWN: |
|
| 1994 | - return "Anonymous platform"; |
|
| 1995 | - case ANON_PLATFORM_CPU: |
|
| 1996 | - return "Anonymous platform CPU"; |
|
| 1997 | - case ANON_PLATFORM_NVIDIA: |
|
| 1998 | - return "Anonymous platform NVIDIA GPU"; |
|
| 1999 | - case ANON_PLATFORM_ATI: |
|
| 2000 | - return "Anonymous platform AMD GPU"; |
|
| 2001 | - case ANON_PLATFORM_INTEL_GPU: |
|
| 2002 | - return "Anonymous platform Intel GPU"; |
|
| 2003 | - case ANON_PLATFORM_APPLE_GPU: |
|
| 2004 | - return "Anonymous platform Apple GPU"; |
|
| 2005 | - case 0: |
|
| 2006 | - return "---"; |
|
| 2007 | - default: |
|
| 2008 | - // Handle the case where the appversid is still negative. This |
|
| 2009 | - // may be cause BOINC has introduced a new anonymous platform |
|
| 2010 | - // that is not handled by the above case statements. |
|
| 2011 | - if ($appverid < 0) { |
|
| 2012 | - return "Unknown Anonymous platform"; |
|
| 2013 | - } |
|
| 2014 | - else { |
|
| 2015 | - $prettyv = sprintf("%d.%02d", $vernum/100, $vernum%100); |
|
| 2016 | - $prettyc = ($plan_class) ? "($plan_class)" : ''; |
|
| 2017 | - return "v$prettyv $prettyc $plfm"; |
|
| 2018 | - } |
|
| 1993 | + case ANON_PLATFORM_UNKNOWN: |
|
| 1994 | + return "Anonymous platform"; |
|
| 1995 | + case ANON_PLATFORM_CPU: |
|
| 1996 | + return "Anonymous platform CPU"; |
|
| 1997 | + case ANON_PLATFORM_NVIDIA: |
|
| 1998 | + return "Anonymous platform NVIDIA GPU"; |
|
| 1999 | + case ANON_PLATFORM_ATI: |
|
| 2000 | + return "Anonymous platform AMD GPU"; |
|
| 2001 | + case ANON_PLATFORM_INTEL_GPU: |
|
| 2002 | + return "Anonymous platform Intel GPU"; |
|
| 2003 | + case ANON_PLATFORM_APPLE_GPU: |
|
| 2004 | + return "Anonymous platform Apple GPU"; |
|
| 2005 | + case 0: |
|
| 2006 | + return "---"; |
|
| 2007 | + default: |
|
| 2008 | + // Handle the case where the appversid is still negative. This |
|
| 2009 | + // may be cause BOINC has introduced a new anonymous platform |
|
| 2010 | + // that is not handled by the above case statements. |
|
| 2011 | + if ($appverid < 0) { |
|
| 2012 | + return "Unknown Anonymous platform"; |
|
| 2013 | + } |
|
| 2014 | + else { |
|
| 2015 | + $prettyv = sprintf("%d.%02d", $vernum/100, $vernum%100); |
|
| 2016 | + $prettyc = ($plan_class) ? "($plan_class)" : ''; |
|
| 2017 | + return "v$prettyv $prettyc $plfm"; |
|
| 2018 | + } |
|
| 2019 | 2019 | } |
| 2020 | 2020 | } |
@@ -332,8 +332,7 @@ discard block |
||
| 332 | 332 | $name = $element['@attributes']['name']; |
| 333 | 333 | if (isset($element['@attributes']['entitytype']) AND $element['@attributes']['entitytype'] == 'attribute') { |
| 334 | 334 | $defaults['@attributes'][$name] = $values[$name]; |
| 335 | - } |
|
| 336 | - else { |
|
| 335 | + } else { |
|
| 337 | 336 | $defaults[$name] = $values[$name]; |
| 338 | 337 | } |
| 339 | 338 | } |
@@ -384,8 +383,7 @@ discard block |
||
| 384 | 383 | if (isset($user_pref[$name])) { |
| 385 | 384 | if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) { |
| 386 | 385 | $value = $user_pref[$name]['@value']; |
| 387 | - } |
|
| 388 | - else { |
|
| 386 | + } else { |
|
| 389 | 387 | $value = $user_pref[$name]; |
| 390 | 388 | } |
| 391 | 389 | } |
@@ -447,8 +445,7 @@ discard block |
||
| 447 | 445 | if (isset($user_pref[$name])) { |
| 448 | 446 | if (is_array($user_pref[$name]) AND isset($user_pref[$name]['@value'])) { |
| 449 | 447 | $value = $user_pref[$name]['@value']; |
| 450 | - } |
|
| 451 | - else { |
|
| 448 | + } else { |
|
| 452 | 449 | $value = $user_pref[$name]; |
| 453 | 450 | } |
| 454 | 451 | } |
@@ -492,8 +489,7 @@ discard block |
||
| 492 | 489 | isset($item['@attributes']['selected'])) { |
| 493 | 490 | $default = ($item['@attributes']['selected'] == 'true') ? $item['@value'] : null; |
| 494 | 491 | } |
| 495 | - } |
|
| 496 | - else { |
|
| 492 | + } else { |
|
| 497 | 493 | $value = $item; |
| 498 | 494 | } |
| 499 | 495 | $options[$value] = $value; |
@@ -696,8 +692,7 @@ discard block |
||
| 696 | 692 | ); |
| 697 | 693 | if ($top_level) { |
| 698 | 694 | $uncategorized[$key] = $prefs_element; |
| 699 | - } |
|
| 700 | - else { |
|
| 695 | + } else { |
|
| 701 | 696 | $prefs_table[$key] = $prefs_element; |
| 702 | 697 | } |
| 703 | 698 | break; |
@@ -711,8 +706,7 @@ discard block |
||
| 711 | 706 | 'name' => bts('Other settings', array(), NULL, 'boinc:account-preferences'), |
| 712 | 707 | 'elements' => $uncategorized, |
| 713 | 708 | ); |
| 714 | - } |
|
| 715 | - elseif ($uncategorized) { |
|
| 709 | + } elseif ($uncategorized) { |
|
| 716 | 710 | // If nothing is categorized, output all prefs under a general "settings" |
| 717 | 711 | $prefs_table['settings'] = array( |
| 718 | 712 | 'name' => bts('Settings', array(), NULL, 'boinc:account-preferences'), |
@@ -745,8 +739,7 @@ discard block |
||
| 745 | 739 | $main_prefs = load_configuration($boincuser->project_prefs); |
| 746 | 740 | $main_prefs = (array) $main_prefs['project_preferences']; |
| 747 | 741 | } |
| 748 | - } |
|
| 749 | - else { |
|
| 742 | + } else { |
|
| 750 | 743 | if ($boincuser->global_prefs) { |
| 751 | 744 | $main_prefs = load_configuration($boincuser->global_prefs); |
| 752 | 745 | $main_prefs = (array) $main_prefs['global_preferences']; |
@@ -762,8 +755,7 @@ discard block |
||
| 762 | 755 | if (count($main_prefs) < 3) |
| 763 | 756 | $main_prefs['@attributes'] = array('cleared' => 1); |
| 764 | 757 | return $main_prefs; |
| 765 | - } |
|
| 766 | - else { |
|
| 758 | + } else { |
|
| 767 | 759 | if (isset($main_prefs['venue'])) { |
| 768 | 760 | if (!is_numeric(key($main_prefs['venue']))) { |
| 769 | 761 | $main_prefs['venue'] = array($main_prefs['venue']); |
@@ -803,8 +795,7 @@ discard block |
||
| 803 | 795 | $main_prefs = load_configuration($boincuser->project_prefs); |
| 804 | 796 | $main_prefs = (array) $main_prefs['project_preferences']; |
| 805 | 797 | } |
| 806 | - } |
|
| 807 | - else { |
|
| 798 | + } else { |
|
| 808 | 799 | if ($boincuser->global_prefs) { |
| 809 | 800 | $main_prefs = load_configuration($boincuser->global_prefs); |
| 810 | 801 | $main_prefs = (array) $main_prefs['global_preferences']; |
@@ -817,8 +808,7 @@ discard block |
||
| 817 | 808 | if (!$venue OR $venue == 'generic') { |
| 818 | 809 | //$main_prefs = $prefs; |
| 819 | 810 | $main_prefs = $prefs + $main_prefs; |
| 820 | - } |
|
| 821 | - else { |
|
| 811 | + } else { |
|
| 822 | 812 | if (isset($main_prefs['venue'])) { |
| 823 | 813 | if (!is_numeric(key($main_prefs['venue']))) { |
| 824 | 814 | $main_prefs['venue'] = array($main_prefs['venue']); |
@@ -827,8 +817,7 @@ discard block |
||
| 827 | 817 | if (isset($prefs_venue['@attributes']['name']) AND $prefs_venue['@attributes']['name'] == $venue) { |
| 828 | 818 | if ($prefs) { |
| 829 | 819 | $main_prefs['venue'][$key] = $prefs; |
| 830 | - } |
|
| 831 | - else { |
|
| 820 | + } else { |
|
| 832 | 821 | // If prefs is null, clear out this preference set |
| 833 | 822 | unset($main_prefs['venue'][$key]); |
| 834 | 823 | if (count($main_prefs['venue']) == 0) { |
@@ -875,8 +864,7 @@ discard block |
||
| 875 | 864 | db_set_active('boinc_rw'); |
| 876 | 865 | $result = db_query("UPDATE user SET project_prefs = '{$boincuser->project_prefs}' WHERE id = '{$boincuser->id}'"); |
| 877 | 866 | db_set_active('default'); |
| 878 | - } |
|
| 879 | - else { |
|
| 867 | + } else { |
|
| 880 | 868 | $main_prefs = array('global_preferences' => $main_prefs); |
| 881 | 869 | $boincuser->global_prefs = save_configuration($main_prefs); |
| 882 | 870 | db_set_active('boinc_rw'); |
@@ -963,8 +951,7 @@ discard block |
||
| 963 | 951 | NULL, 'boinc:ignore-user-add'), |
| 964 | 952 | 'status'); |
| 965 | 953 | drupal_goto(); |
| 966 | - } |
|
| 967 | - else { |
|
| 954 | + } else { |
|
| 968 | 955 | drupal_not_found(); |
| 969 | 956 | }// endif iuid |
| 970 | 957 | } |
@@ -1052,15 +1039,13 @@ discard block |
||
| 1052 | 1039 | // Process nested form elements |
| 1053 | 1040 | $parents[] = $field; |
| 1054 | 1041 | boincwork_validate_form($rules, $values[$field], $parents); |
| 1055 | - } |
|
| 1056 | - else { |
|
| 1042 | + } else { |
|
| 1057 | 1043 | if ($parents) { |
| 1058 | 1044 | // form_set_error() identifies nested form elements with '][' as a |
| 1059 | 1045 | // delimiter between each parent and child element |
| 1060 | 1046 | $parents[] = $field; |
| 1061 | 1047 | $form_field = implode('][', $parents); |
| 1062 | - } |
|
| 1063 | - else { |
|
| 1048 | + } else { |
|
| 1064 | 1049 | $form_field = $field; |
| 1065 | 1050 | } |
| 1066 | 1051 | if (isset($rules['datatype']) AND !boincwork_validate_datatype($values[$field], $rules['datatype'])) { |
@@ -1142,8 +1127,7 @@ discard block |
||
| 1142 | 1127 | // load_configuration(): Convert structured text/xml to array |
| 1143 | 1128 | //------------------------------------------------------------------------------------------------ |
| 1144 | 1129 | |
| 1145 | - function load_configuration($text) |
|
| 1146 | - { |
|
| 1130 | + function load_configuration($text) { |
|
| 1147 | 1131 | if (preg_match('/^\<\?xml .*\?\>$/i', $text)) return null; |
| 1148 | 1132 | if ($xml = text_to_xml($text)) return xml_to_array($xml); |
| 1149 | 1133 | return false; |
@@ -1153,8 +1137,7 @@ discard block |
||
| 1153 | 1137 | // save_configuration(): Convert array to structured text/xml |
| 1154 | 1138 | //------------------------------------------------------------------------------------------------ |
| 1155 | 1139 | |
| 1156 | - function save_configuration($array) |
|
| 1157 | - { |
|
| 1140 | + function save_configuration($array) { |
|
| 1158 | 1141 | if ($xml = array_to_xml($array)) return xml_to_text($xml, false, true); |
| 1159 | 1142 | return false; |
| 1160 | 1143 | } |
@@ -1186,26 +1169,22 @@ discard block |
||
| 1186 | 1169 | $ordered_array[$item['@position']] = array( |
| 1187 | 1170 | $name => $item |
| 1188 | 1171 | ); |
| 1189 | - } |
|
| 1190 | - else { |
|
| 1172 | + } else { |
|
| 1191 | 1173 | $unordered_array[] = array( |
| 1192 | 1174 | $name => $item |
| 1193 | 1175 | ); |
| 1194 | 1176 | } |
| 1195 | 1177 | } |
| 1196 | - } |
|
| 1197 | - elseif (isset($value['@position'])) { |
|
| 1178 | + } elseif (isset($value['@position'])) { |
|
| 1198 | 1179 | $ordered_array[$value['@position']] = array( |
| 1199 | 1180 | $name => $value |
| 1200 | 1181 | ); |
| 1201 | - } |
|
| 1202 | - else { |
|
| 1182 | + } else { |
|
| 1203 | 1183 | $unordered_array[] = array( |
| 1204 | 1184 | $name => $value |
| 1205 | 1185 | ); |
| 1206 | 1186 | } |
| 1207 | - } |
|
| 1208 | - else { |
|
| 1187 | + } else { |
|
| 1209 | 1188 | $unordered_array[] = array( |
| 1210 | 1189 | $name => $value |
| 1211 | 1190 | ); |
@@ -1291,8 +1270,7 @@ discard block |
||
| 1291 | 1270 | // xml_to_text(): Convert an XML DOM object to string format |
| 1292 | 1271 | //------------------------------------------------------------------------------------------------ |
| 1293 | 1272 | |
| 1294 | - function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false) |
|
| 1295 | - { |
|
| 1273 | + function xml_to_text($xml, $include_xml_declaration = true, $add_carriage_returns = false) { |
|
| 1296 | 1274 | $xml->formatOutput = true; |
| 1297 | 1275 | $text = $xml->saveXML(); |
| 1298 | 1276 | if (!$include_xml_declaration) { |
@@ -1335,10 +1313,14 @@ discard block |
||
| 1335 | 1313 | $sibling = $node->nextSibling; |
| 1336 | 1314 | |
| 1337 | 1315 | // Determine if this node forms a set with siblings (share a node name) |
| 1338 | - while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->nextSibling; |
|
| 1316 | + while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) { |
|
| 1317 | + $sibling = $sibling->nextSibling; |
|
| 1318 | + } |
|
| 1339 | 1319 | if (!$sibling) { |
| 1340 | 1320 | $sibling = $node->previousSibling; |
| 1341 | - while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) $sibling = $sibling->previousSibling; |
|
| 1321 | + while (($sibling) AND (($sibling->nodeType != XML_ELEMENT_NODE) OR ($sibling->nodeName != $node->nodeName))) { |
|
| 1322 | + $sibling = $sibling->previousSibling; |
|
| 1323 | + } |
|
| 1342 | 1324 | } |
| 1343 | 1325 | |
| 1344 | 1326 | if ($sibling) { |
@@ -1433,8 +1415,7 @@ discard block |
||
| 1433 | 1415 | . ' computers. Computers will be displayed when they have earned their' |
| 1434 | 1416 | . ' first credits.', array(), NULL, 'boinc:host-list') . '</p>'; |
| 1435 | 1417 | } |
| 1436 | - } |
|
| 1437 | - else { |
|
| 1418 | + } else { |
|
| 1438 | 1419 | $output .= '<h2>' . bts('Computers hidden', array(), NULL, 'boinc:host-list') . '</h2>'; |
| 1439 | 1420 | $output .= '<p>' . bts('This user has chosen not to show information' |
| 1440 | 1421 | . ' about their computers.', array(), NULL, 'boinc:host-list') . '</p>'; |
@@ -1594,8 +1575,7 @@ discard block |
||
| 1594 | 1575 | if (!$received_time) { |
| 1595 | 1576 | if (time() < $deadline) { |
| 1596 | 1577 | $output = '<span class="on-time">' . $output . '</span>'; |
| 1597 | - } |
|
| 1598 | - else { |
|
| 1578 | + } else { |
|
| 1599 | 1579 | $output = '<span class="past-due">' . $output . '</span>'; |
| 1600 | 1580 | } |
| 1601 | 1581 | } |
@@ -1690,11 +1670,9 @@ discard block |
||
| 1690 | 1670 | // Use userid, hostid, or workunitid |
| 1691 | 1671 | if ($category==0) { |
| 1692 | 1672 | $sqlall .= " WHERE r.userid='%s' "; |
| 1693 | - } |
|
| 1694 | - elseif ($category==1) { |
|
| 1673 | + } elseif ($category==1) { |
|
| 1695 | 1674 | $sqlall .= " WHERE r.workunitid='%s' "; |
| 1696 | - } |
|
| 1697 | - elseif ($category==2) { |
|
| 1675 | + } elseif ($category==2) { |
|
| 1698 | 1676 | $sqlall .= " WHERE r.hostid='%s' "; |
| 1699 | 1677 | } |
| 1700 | 1678 | $sqlall .= " ORDER BY user_friendly_name"; |
@@ -1734,8 +1712,7 @@ discard block |
||
| 1734 | 1712 | }// if mystate |
| 1735 | 1713 | |
| 1736 | 1714 | }// while |
| 1737 | - } |
|
| 1738 | - else { |
|
| 1715 | + } else { |
|
| 1739 | 1716 | } |
| 1740 | 1717 | |
| 1741 | 1718 | // Entry for all applications. |
@@ -1829,11 +1806,9 @@ discard block |
||
| 1829 | 1806 | // Use userid, hostid, or workunitid |
| 1830 | 1807 | if ($category==0) { |
| 1831 | 1808 | $sqlwhere[] = "r.userid = '%s'"; |
| 1832 | - } |
|
| 1833 | - elseif ($category==1) { |
|
| 1809 | + } elseif ($category==1) { |
|
| 1834 | 1810 | $sqlwhere[] = "r.workunitid = '%s'"; |
| 1835 | - } |
|
| 1836 | - elseif ($category==2) { |
|
| 1811 | + } elseif ($category==2) { |
|
| 1837 | 1812 | $sqlwhere[] = "r.hostid = '%s'"; |
| 1838 | 1813 | } |
| 1839 | 1814 | |
@@ -1861,8 +1836,7 @@ discard block |
||
| 1861 | 1836 | $sqlwhere[] = "r.appid = '%s'"; |
| 1862 | 1837 | if ($sqlwhere) $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere); |
| 1863 | 1838 | $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid, $app_id); |
| 1864 | - } |
|
| 1865 | - else { |
|
| 1839 | + } else { |
|
| 1866 | 1840 | if ($sqlwhere) $sqlsub .= " WHERE " . implode(' AND ', $sqlwhere); |
| 1867 | 1841 | $dbres_sub = pager_query( $sqlsub . tablesort_sql($resultheader), $tablerows, 0, NULL, $queryid); |
| 1868 | 1842 | } |
@@ -1897,19 +1871,16 @@ discard block |
||
| 1897 | 1871 | $resultdata[] = array_values($prettyresult); |
| 1898 | 1872 | } |
| 1899 | 1873 | }// while |
| 1900 | - } |
|
| 1901 | - else { |
|
| 1874 | + } else { |
|
| 1902 | 1875 | } |
| 1903 | 1876 | // Begin result navigation |
| 1904 | 1877 | |
| 1905 | 1878 | // Set pathprefix based on type |
| 1906 | 1879 | if ($category==0) { |
| 1907 | 1880 | $pathprefix = 'account/tasks'; |
| 1908 | - } |
|
| 1909 | - elseif ($category==1) { |
|
| 1881 | + } elseif ($category==1) { |
|
| 1910 | 1882 | $pathprefix = 'workunit/' . $queryid . '/tasks'; |
| 1911 | - } |
|
| 1912 | - elseif ($category==2) { |
|
| 1883 | + } elseif ($category==2) { |
|
| 1913 | 1884 | $pathprefix = 'host/' . $queryid . '/tasks'; |
| 1914 | 1885 | } |
| 1915 | 1886 | // Need an "All" tab as well, maps to app_id of zero. |
@@ -1919,8 +1890,7 @@ discard block |
||
| 1919 | 1890 | $mypath = $pathprefix . '/' . $state . '/' . $app_id; |
| 1920 | 1891 | if ($state==STATE_ALL) { |
| 1921 | 1892 | $ltext = '<span class="tab task-app-name">' . bts('All', array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
| 1922 | - } |
|
| 1923 | - else { |
|
| 1893 | + } else { |
|
| 1924 | 1894 | $ltext = '<span class="tab">' . bts($state_hnames[$state], array(), NULL, 'boinc:task-table') . ' (' . $numstates . ')</span>'; |
| 1925 | 1895 | } |
| 1926 | 1896 | $myitem = array( |
@@ -2010,8 +1980,7 @@ discard block |
||
| 2010 | 1980 | // that is not handled by the above case statements. |
| 2011 | 1981 | if ($appverid < 0) { |
| 2012 | 1982 | return "Unknown Anonymous platform"; |
| 2013 | - } |
|
| 2014 | - else { |
|
| 1983 | + } else { |
|
| 2015 | 1984 | $prettyv = sprintf("%d.%02d", $vernum/100, $vernum%100); |
| 2016 | 1985 | $prettyc = ($plan_class) ? "($plan_class)" : ''; |
| 2017 | 1986 | return "v$prettyv $prettyc $plfm"; |