[ Index ] |
PHP Cross Reference of MyBB 1.8.38 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * MyBB 1.8 4 * Copyright 2014 MyBB Group, All Rights Reserved 5 * 6 * Website: http://www.mybb.com 7 * License: http://www.mybb.com/about/license 8 * 9 */ 10 11 // Disallow direct access to this file for security reasons 12 if(!defined("IN_MYBB")) 13 { 14 die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined."); 15 } 16 17 $page->add_breadcrumb_item($lang->system_health, "index.php?module=tools-system_health"); 18 19 $sub_tabs['system_health'] = array( 20 'title' => $lang->system_health, 21 'link' => "index.php?module=tools-system_health", 22 'description' => $lang->system_health_desc 23 ); 24 25 $sub_tabs['utf8_conversion'] = array( 26 'title' => $lang->utf8_conversion, 27 'link' => "index.php?module=tools-system_health&action=utf8_conversion", 28 'description' => $lang->utf8_conversion_desc2 29 ); 30 31 $sub_tabs['template_check'] = array( 32 'title' => $lang->check_templates, 33 'link' => "index.php?module=tools-system_health&action=check_templates", 34 'description' => $lang->check_templates_desc 35 ); 36 37 $plugins->run_hooks("admin_tools_system_health_begin"); 38 39 if($mybb->input['action'] == "do_check_templates" && $mybb->request_method == "post") 40 { 41 $query = $db->simple_select("templates", "*", "", array("order_by" => "sid, title", "order_dir" => "ASC")); 42 43 if(!$db->num_rows($query)) 44 { 45 flash_message($lang->error_invalid_input, 'error'); 46 admin_redirect("index.php?module=tools-system_health"); 47 } 48 49 $plugins->run_hooks("admin_tools_system_health_template_do_check_start"); 50 51 $t_cache = array(); 52 while($template = $db->fetch_array($query)) 53 { 54 if(check_template($template['template']) == true) 55 { 56 $t_cache[$template['sid']][] = $template; 57 } 58 } 59 60 if(empty($t_cache)) 61 { 62 flash_message($lang->success_templates_checked, 'success'); 63 admin_redirect("index.php?module=tools-system_health"); 64 } 65 66 $plugins->run_hooks("admin_tools_system_health_template_do_check"); 67 68 $page->add_breadcrumb_item($lang->check_templates); 69 $page->output_header($lang->check_templates); 70 71 $page->output_nav_tabs($sub_tabs, 'template_check'); 72 $page->output_inline_error(array($lang->check_templates_info_desc)); 73 74 $templatesets = array( 75 -2 => array( 76 "title" => "MyBB Master Templates" 77 ) 78 ); 79 $query = $db->simple_select("templatesets", "*"); 80 while($set = $db->fetch_array($query)) 81 { 82 $templatesets[$set['sid']] = $set; 83 } 84 85 $count = 0; 86 foreach($t_cache as $sid => $templates) 87 { 88 if(!$done_set[$sid]) 89 { 90 $table = new Table(); 91 $table->construct_header($templatesets[$sid]['title'], array("colspan" => 2)); 92 93 $done_set[$sid] = 1; 94 ++$count; 95 } 96 97 if($sid == -2) 98 { 99 // Some cheeky clown has altered the master templates! 100 $table->construct_cell($lang->error_master_templates_altered, array("colspan" => 2)); 101 $table->construct_row(); 102 } 103 104 foreach($templates as $template) 105 { 106 if($sid == -2) 107 { 108 $table->construct_cell($template['title'], array('colspan' => 2)); 109 } 110 else 111 { 112 $popup = new PopupMenu("template_{$template['tid']}", $lang->options); 113 $popup->add_item($lang->full_edit, "index.php?module=style-templates&action=edit_template&title=".urlencode($template['title'])."&sid={$sid}"); 114 115 $table->construct_cell("<a href=\"index.php?module=style-templates&action=edit_template&title=".urlencode($template['title'])."&sid={$sid}&from=diff_report\">{$template['title']}</a>", array('width' => '80%')); 116 $table->construct_cell($popup->fetch(), array("class" => "align_center")); 117 } 118 119 $table->construct_row(); 120 } 121 122 if($done_set[$sid] && !$done_output[$sid]) 123 { 124 $done_output[$sid] = 1; 125 if($count == 1) 126 { 127 $table->output($lang->check_templates); 128 } 129 else 130 { 131 $table->output(); 132 } 133 } 134 } 135 136 $page->output_footer(); 137 } 138 139 if($mybb->input['action'] == "check_templates") 140 { 141 $page->add_breadcrumb_item($lang->check_templates); 142 $page->output_header($lang->check_templates); 143 144 $plugins->run_hooks("admin_tools_system_health_template_check"); 145 146 $page->output_nav_tabs($sub_tabs, 'template_check'); 147 148 if($errors) 149 { 150 $page->output_inline_error($errors); 151 } 152 153 $form = new Form("index.php?module=tools-system_health", "post", "check_set"); 154 echo $form->generate_hidden_field("action", "do_check_templates"); 155 156 $form_container = new FormContainer($lang->check_templates); 157 $form_container->output_row($lang->check_templates_title, "", $lang->check_templates_info); 158 $form_container->end(); 159 160 $buttons = array(); 161 $buttons[] = $form->generate_submit_button($lang->proceed); 162 163 $form->output_submit_wrapper($buttons); 164 165 $form->end(); 166 167 $page->output_footer(); 168 } 169 170 if($mybb->input['action'] == "utf8_conversion") 171 { 172 if($db->type == "sqlite" || $db->type == "pgsql") 173 { 174 flash_message($lang->error_not_supported, 'error'); 175 admin_redirect("index.php?module=tools-system_health"); 176 } 177 178 $plugins->run_hooks("admin_tools_system_health_utf8_conversion"); 179 180 if($mybb->request_method == "post" || ($mybb->input['do'] == "all" && !empty($mybb->input['table']))) 181 { 182 if(!empty($mybb->input['mb4']) && version_compare($db->get_version(), '5.5.3', '<')) 183 { 184 flash_message($lang->error_utf8mb4_version, 'error'); 185 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion"); 186 } 187 @set_time_limit(0); 188 189 $old_table_prefix = $db->table_prefix; 190 $db->set_table_prefix(''); 191 192 if(!$db->table_exists($db->escape_string($mybb->input['table']))) 193 { 194 $db->set_table_prefix($old_table_prefix); 195 flash_message($lang->error_invalid_table, 'error'); 196 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion"); 197 } 198 199 $db->set_table_prefix($old_table_prefix); 200 201 $page->add_breadcrumb_item($lang->utf8_conversion, "index.php?module=tools-system_health&action=utf8_conversion"); 202 203 $page->output_header($lang->system_health." - ".$lang->utf8_conversion); 204 205 $sub_tabs['system_health'] = array( 206 'title' => $lang->system_health, 207 'link' => "index.php?module=tools-system_health", 208 'description' => $lang->system_health_desc 209 ); 210 211 $sub_tabs['utf8_conversion'] = array( 212 'title' => $lang->utf8_conversion, 213 'link' => "index.php?module=tools-system_health&action=utf8_conversion", 214 'description' => $lang->utf8_conversion_desc2 215 ); 216 217 $page->output_nav_tabs($sub_tabs, 'utf8_conversion'); 218 219 $old_table_prefix = $db->table_prefix; 220 $db->set_table_prefix(''); 221 222 $table = new Table; 223 224 $table1 = $db->show_create_table($db->escape_string($mybb->input['table'])); 225 preg_match("#CHARSET=([a-zA-Z0-9_]+)\s?#i", $table1, $matches); 226 $charset = $matches[1]; 227 228 if(!empty($mybb->input['mb4'])) 229 { 230 $table->construct_cell("<strong>".$lang->sprintf($lang->converting_to_utf8mb4, $mybb->input['table'], $charset)."</strong>"); 231 } 232 else 233 { 234 $table->construct_cell("<strong>".$lang->sprintf($lang->converting_to_utf8, $mybb->input['table'], $charset)."</strong>"); 235 } 236 $table->construct_row(); 237 238 $table->construct_cell($lang->please_wait); 239 $table->construct_row(); 240 241 $table->output($lang->sprintf($lang->converting_table, $mybb->input['table'])); 242 243 $db->set_table_prefix($old_table_prefix); 244 245 $page->output_footer(false); 246 247 $old_table_prefix = $db->table_prefix; 248 $db->set_table_prefix(''); 249 250 flush(); 251 252 $types = array( 253 'text' => 'blob', 254 'mediumtext' => 'mediumblob', 255 'longtext' => 'longblob', 256 'char' => 'varbinary', 257 'varchar' => 'varbinary', 258 'tinytext' => 'tinyblob' 259 ); 260 261 $blob_types = array( 'blob', 'tinyblob', 'mediumblog', 'longblob', 'text', 'tinytext', 'mediumtext', 'longtext' ); 262 263 // Get next table in list 264 $convert_to_binary = ''; 265 $convert_to_utf8 = ''; 266 $comma = ''; 267 268 if(!empty($mybb->input['mb4'])) 269 { 270 $character_set = 'utf8mb4'; 271 $collation = 'utf8mb4_general_ci'; 272 } 273 else 274 { 275 $character_set = 'utf8'; 276 $collation = 'utf8_general_ci'; 277 } 278 279 // Set table default charset 280 $db->write_query("ALTER TABLE {$mybb->input['table']} DEFAULT CHARACTER SET {$character_set} COLLATE {$collation}"); 281 282 // Fetch any fulltext keys 283 $fulltext_to_create = array(); 284 if($db->supports_fulltext($mybb->input['table'])) 285 { 286 $table_structure = $db->show_create_table($mybb->input['table']); 287 switch($db->type) 288 { 289 case "mysql": 290 case "mysqli": 291 preg_match_all("#FULLTEXT KEY `?([a-zA-Z0-9_]+)`? \(([a-zA-Z0-9_`,']+)\)#i", $table_structure, $matches); 292 if(is_array($matches)) 293 { 294 foreach($matches[0] as $key => $matched) 295 { 296 $db->write_query("ALTER TABLE {$mybb->input['table']} DROP INDEX {$matches[1][$key]}"); 297 $fulltext_to_create[$matches[1][$key]] = $matches[2][$key]; 298 } 299 } 300 } 301 } 302 303 // Find out which columns need converting and build SQL statements 304 $query = $db->query("SHOW FULL COLUMNS FROM {$mybb->input['table']}"); 305 while($column = $db->fetch_array($query)) 306 { 307 list($type) = explode('(', $column['Type']); 308 if(array_key_exists($type, $types)) 309 { 310 // Build the actual strings for converting the columns 311 $names = "CHANGE `{$column['Field']}` `{$column['Field']}` "; 312 313 if(($db->type == 'mysql' || $db->type == 'mysqli') && in_array($type, $blob_types)) 314 { 315 if($column['Null'] == 'YES') 316 { 317 $attributes = 'NULL'; 318 } 319 else 320 { 321 $attributes = 'NOT NULL'; 322 } 323 } 324 else 325 { 326 $attributes = " DEFAULT "; 327 if($column['Default'] == 'NULL') 328 { 329 $attributes .= "NULL "; 330 } 331 else 332 { 333 $attributes .= "'".$db->escape_string($column['Default'])."' "; 334 335 if($column['Null'] == 'YES') 336 { 337 $attributes .= 'NULL'; 338 } 339 else 340 { 341 $attributes .= 'NOT NULL'; 342 } 343 } 344 } 345 346 $convert_to_binary .= $comma.$names.preg_replace('/'.$type.'/i', $types[$type], $column['Type']).' '.$attributes; 347 $convert_to_utf8 .= "{$comma}{$names}{$column['Type']} CHARACTER SET {$character_set} COLLATE {$collation} {$attributes}"; 348 349 $comma = ','; 350 } 351 } 352 353 if(!empty($convert_to_binary)) 354 { 355 // This converts the columns to UTF-8 while also doing the same for data 356 $db->write_query("ALTER TABLE {$mybb->input['table']} {$convert_to_binary}"); 357 $db->write_query("ALTER TABLE {$mybb->input['table']} {$convert_to_utf8}"); 358 } 359 360 // Any fulltext indexes to recreate? 361 foreach($fulltext_to_create as $name => $fields) 362 { 363 $db->create_fulltext_index($mybb->input['table'], $fields, $name); 364 } 365 366 $db->set_table_prefix($old_table_prefix); 367 368 $plugins->run_hooks("admin_tools_system_health_utf8_conversion_commit"); 369 370 // Log admin action 371 log_admin_action($mybb->input['table']); 372 373 flash_message($lang->sprintf($lang->success_table_converted, $mybb->input['table']), 'success'); 374 375 if($mybb->input['do'] == "all") 376 { 377 $old_table_prefix = $db->table_prefix; 378 $db->set_table_prefix(''); 379 380 $tables = $db->list_tables($mybb->config['database']['database']); 381 foreach($tables as $key => $tablename) 382 { 383 if(substr($tablename, 0, strlen(TABLE_PREFIX)) == TABLE_PREFIX) 384 { 385 $table = $db->show_create_table($tablename); 386 preg_match("#CHARSET=([a-zA-Z0-9_]+)\s?#i", $table, $matches); 387 if(empty($mybb->input['mb4']) && (fetch_iconv_encoding($matches[1]) == 'utf-8' || $matches[1] == 'utf8mb4') && $mybb->input['table'] != $tablename) 388 { 389 continue; 390 } 391 elseif(!empty($mybb->input['mb4']) && fetch_iconv_encoding($matches[1]) != 'utf-8' && $mybb->input['table'] != $tablename) 392 { 393 continue; 394 } 395 396 $mybb_tables[$key] = $tablename; 397 } 398 } 399 400 asort($mybb_tables); 401 reset($mybb_tables); 402 403 $is_next = false; 404 $nexttable = ""; 405 406 foreach($mybb_tables as $key => $tablename) 407 { 408 if($is_next == true) 409 { 410 $nexttable = $tablename; 411 break; 412 } 413 else if($mybb->input['table'] == $tablename) 414 { 415 $is_next = true; 416 } 417 } 418 419 $db->set_table_prefix($old_table_prefix); 420 421 if($nexttable) 422 { 423 $nexttable = $db->escape_string($nexttable); 424 $mb4 = ''; 425 if(!empty($mybb->input['mb4'])) 426 { 427 $mb4 = "&mb4=1"; 428 } 429 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion&do=all&table={$nexttable}{$mb4}"); 430 exit; 431 } 432 } 433 434 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion"); 435 436 exit; 437 } 438 439 if(!empty($mybb->input['table']) || $mybb->input['do'] == "all") 440 { 441 if(!empty($mybb->input['mb4']) && version_compare($db->get_version(), '5.5.3', '<')) 442 { 443 flash_message($lang->error_utf8mb4_version, 'error'); 444 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion"); 445 } 446 447 $old_table_prefix = $db->table_prefix; 448 $db->set_table_prefix(''); 449 450 if($mybb->input['do'] != "all" && !$db->table_exists($db->escape_string($mybb->input['table']))) 451 { 452 $db->set_table_prefix($old_table_prefix); 453 flash_message($lang->error_invalid_table, 'error'); 454 admin_redirect("index.php?module=tools-system_health&action=utf8_conversion"); 455 } 456 457 if($mybb->input['do'] == "all") 458 { 459 $tables = $db->list_tables($mybb->config['database']['database']); 460 foreach($tables as $key => $tablename) 461 { 462 if(substr($tablename, 0, strlen(TABLE_PREFIX)) == TABLE_PREFIX) 463 { 464 $table = $db->show_create_table($tablename); 465 preg_match("#CHARSET=([a-zA-Z0-9_]+)\s?#i", $table, $matches); 466 if(empty($mybb->input['mb4']) && (fetch_iconv_encoding($matches[1]) == 'utf-8' || $matches[1] == 'utf8mb4')) 467 { 468 continue; 469 } 470 elseif(!empty($mybb->input['mb4']) && fetch_iconv_encoding($matches[1]) != 'utf-8') 471 { 472 continue; 473 } 474 $mybb_tables[$key] = $tablename; 475 } 476 } 477 478 if(is_array($mybb_tables)) 479 { 480 asort($mybb_tables); 481 reset($mybb_tables); 482 $nexttable = current($mybb_tables); 483 $table = $db->show_create_table($db->escape_string($nexttable)); 484 $mybb->input['table'] = $nexttable; 485 } 486 else 487 { 488 $db->set_table_prefix($old_table_prefix); 489 flash_message($lang->success_all_tables_already_converted, 'success'); 490 admin_redirect("index.php?module=tools-system_health"); 491 } 492 } 493 else 494 { 495 $table = $db->show_create_table($db->escape_string($mybb->input['table'])); 496 } 497 498 $page->add_breadcrumb_item($lang->utf8_conversion, "index.php?module=tools-system_health&action=utf8_conversion"); 499 500 $db->set_table_prefix($old_table_prefix); 501 502 $page->output_header($lang->system_health." - ".$lang->utf8_conversion); 503 504 $sub_tabs['system_health'] = array( 505 'title' => $lang->system_health, 506 'link' => "index.php?module=tools-system_health", 507 'description' => $lang->system_health_desc 508 ); 509 510 $sub_tabs['utf8_conversion'] = array( 511 'title' => $lang->utf8_conversion, 512 'link' => "index.php?module=tools-system_health&action=utf8_conversion", 513 'description' => $lang->utf8_conversion_desc2 514 ); 515 516 $page->output_nav_tabs($sub_tabs, 'utf8_conversion'); 517 518 $old_table_prefix = $db->table_prefix; 519 $db->set_table_prefix(''); 520 521 preg_match("#CHARSET=([a-zA-Z0-9_]+)\s?#i", $table, $matches); 522 $charset = $matches[1]; 523 524 $mb4 = ''; 525 if(!empty($mybb->input['mb4'])) 526 { 527 $mb4 = "&mb4=1"; 528 } 529 530 $form = new Form("index.php?module=tools-system_health&action=utf8_conversion{$mb4}", "post", "utf8_conversion"); 531 echo $form->generate_hidden_field("table", $mybb->input['table']); 532 533 if($mybb->input['do'] == "all") 534 { 535 echo $form->generate_hidden_field("do", "all"); 536 } 537 538 $table = new Table; 539 540 if(!empty($mybb->input['mb4'])) 541 { 542 $table->construct_cell("<strong>".$lang->sprintf($lang->convert_all_to_utf8mb4, $charset)."</strong>"); 543 $lang->notice_process_long_time .= "<br /><br /><strong>{$lang->notice_mb4_warning}</strong>"; 544 } 545 else 546 { 547 if($mybb->input['do'] == "all") 548 { 549 $table->construct_cell("<strong>".$lang->sprintf($lang->convert_all_to_utf, $charset)."</strong>"); 550 } 551 else 552 { 553 $table->construct_cell("<strong>".$lang->sprintf($lang->convert_to_utf8, $mybb->input['table'], $charset)."</strong>"); 554 } 555 } 556 557 $table->construct_row(); 558 559 $table->construct_cell($lang->notice_process_long_time); 560 $table->construct_row(); 561 562 if($mybb->input['do'] == "all") 563 { 564 $table->output($lang->convert_tables); 565 $buttons[] = $form->generate_submit_button($lang->convert_database_tables); 566 } 567 else 568 { 569 $table->output($lang->convert_table.": {$mybb->input['table']}"); 570 $buttons[] = $form->generate_submit_button($lang->convert_database_table); 571 } 572 573 $form->output_submit_wrapper($buttons); 574 575 $form->end(); 576 577 $db->set_table_prefix($old_table_prefix); 578 579 $page->output_footer(); 580 581 exit; 582 } 583 584 if(!$mybb->config['database']['encoding']) 585 { 586 flash_message($lang->error_db_encoding_not_set, 'error'); 587 admin_redirect("index.php?module=tools-system_health"); 588 } 589 590 $tables = $db->list_tables($mybb->config['database']['database']); 591 592 $old_table_prefix = $db->table_prefix; 593 $db->set_table_prefix(''); 594 595 $encodings = array(); 596 597 foreach($tables as $key => $tablename) 598 { 599 if(substr($tablename, 0, strlen($old_table_prefix)) == $old_table_prefix) 600 { 601 $table = $db->show_create_table($tablename); 602 preg_match("#CHARSET=([a-zA-Z0-9_]+)\s?#i", $table, $matches); 603 $encodings[$key] = fetch_iconv_encoding($matches[1]); 604 $mybb_tables[$key] = $tablename; 605 } 606 } 607 608 $db->set_table_prefix($old_table_prefix); 609 610 $page->add_breadcrumb_item($lang->utf8_conversion, "index.php?module=tools-system_health&action=utf8_conversion"); 611 612 $page->output_header($lang->system_health." - ".$lang->utf8_conversion); 613 614 $page->output_nav_tabs($sub_tabs, 'utf8_conversion'); 615 616 asort($mybb_tables); 617 618 $unique = array_unique($encodings); 619 620 $convert_utf8 = $convert_utf8mb4 = false; 621 foreach($unique as $encoding) 622 { 623 if($encoding == 'utf-8') 624 { 625 $convert_utf8mb4 = true; 626 } 627 elseif($encoding != 'utf8mb4') 628 { 629 $convert_utf8 = true; 630 } 631 } 632 633 if(count($unique) > 1) 634 { 635 $page->output_error("<p><em>{$lang->warning_multiple_encodings}</em></p>"); 636 } 637 638 if(in_array('utf8mb4', $unique) && $mybb->config['database']['encoding'] != 'utf8mb4') 639 { 640 $page->output_error("<p><em>{$lang->warning_utf8mb4_config}</em></p>"); 641 } 642 643 $table = new Table; 644 $table->construct_header($lang->table); 645 $table->construct_header($lang->status_utf8, array("class" => "align_center")); 646 $table->construct_header($lang->status_utf8mb4, array("class" => "align_center")); 647 648 $all_utf8 = $all_utf8mb4 = '-'; 649 if($convert_utf8) 650 { 651 $all_utf8 = "<strong><a href=\"index.php?module=tools-system_health&action=utf8_conversion&do=all\">{$lang->convert_all}</a></strong>"; 652 } 653 if($convert_utf8mb4) 654 { 655 $all_utf8mb4 = "<strong><a href=\"index.php?module=tools-system_health&action=utf8_conversion&do=all&mb4=1\">{$lang->convert_all}</a></strong>"; 656 } 657 $table->construct_cell("<strong>{$lang->all_tables}</strong>"); 658 $table->construct_cell($all_utf8, array("class" => "align_center", 'width' => '15%')); 659 $table->construct_cell($all_utf8mb4, array("class" => "align_center", 'width' => '25%')); 660 $table->construct_row(); 661 662 $db_version = $db->get_version(); 663 664 foreach($mybb_tables as $key => $tablename) 665 { 666 if($encodings[$key] != 'utf-8' && $encodings[$key] != 'utf8mb4') 667 { 668 $status = "<a href=\"index.php?module=tools-system_health&action=utf8_conversion&table={$tablename}\" style=\"background: url(styles/{$page->style}/images/icons/cross.png) no-repeat; padding-left: 20px;\">{$lang->convert_now}</a>"; 669 } 670 else 671 { 672 $status = "<img src=\"styles/{$page->style}/images/icons/tick.png\" alt=\"{$lang->ok}\" />"; 673 } 674 if(version_compare($db_version, '5.5.3', '<')) 675 { 676 $utf8mb4 = $lang->not_available; 677 } 678 elseif($encodings[$key] == 'utf8mb4') 679 { 680 $utf8mb4 = "<img src=\"styles/{$page->style}/images/icons/tick.png\" alt=\"{$lang->ok}\" />"; 681 } 682 elseif($encodings[$key] == 'utf-8') 683 { 684 $utf8mb4 = "<a href=\"index.php?module=tools-system_health&action=utf8_conversion&table={$tablename}&mb4=1\" style=\"background: url(styles/{$page->style}/images/icons/cross.png) no-repeat; padding-left: 20px;\">{$lang->convert_now}</a>"; 685 } 686 else 687 { 688 $utf8mb4 = "-"; 689 } 690 $table->construct_cell("<strong>{$tablename}</strong>"); 691 $table->construct_cell($status, array("class" => "align_center", 'width' => '15%')); 692 $table->construct_cell($utf8mb4, array("class" => "align_center", 'width' => '25%')); 693 $table->construct_row(); 694 } 695 696 $table->output("<div>{$lang->utf8_conversion}</div>"); 697 698 $page->output_footer(); 699 } 700 701 if(!$mybb->input['action']) 702 { 703 $page->output_header($lang->system_health); 704 705 $plugins->run_hooks("admin_tools_system_health_start"); 706 707 $page->output_nav_tabs($sub_tabs, 'system_health'); 708 709 $table = new Table; 710 $table->construct_header($lang->totals, array("colspan" => 2)); 711 $table->construct_header($lang->attachments, array("colspan" => 2)); 712 713 $query = $db->simple_select("attachments", "COUNT(*) AS numattachs, SUM(filesize) as spaceused, SUM(downloads*filesize) as bandwidthused", "visible='1' AND pid > '0'"); 714 $attachs = $db->fetch_array($query); 715 716 $table->construct_cell("<strong>{$lang->total_database_size}</strong>", array('width' => '25%')); 717 $table->construct_cell(get_friendly_size($db->fetch_size()), array('width' => '25%')); 718 $table->construct_cell("<strong>{$lang->attachment_space_used}</strong>", array('width' => '200')); 719 $table->construct_cell(get_friendly_size((int)$attachs['spaceused']), array('width' => '200')); 720 $table->construct_row(); 721 722 if($attachs['spaceused'] > 0) 723 { 724 $attach_average_size = round($attachs['spaceused']/$attachs['numattachs']); 725 $bandwidth_average_usage = round($attachs['bandwidthused']); 726 } 727 else 728 { 729 $attach_average_size = 0; 730 $bandwidth_average_usage = 0; 731 } 732 733 $table->construct_cell("<strong>{$lang->total_cache_size}</strong>", array('width' => '25%')); 734 $table->construct_cell(get_friendly_size($cache->size_of()), array('width' => '25%')); 735 $table->construct_cell("<strong>{$lang->estimated_attachment_bandwidth_usage}</strong>", array('width' => '25%')); 736 $table->construct_cell(get_friendly_size($bandwidth_average_usage), array('width' => '25%')); 737 $table->construct_row(); 738 739 740 $table->construct_cell("<strong>{$lang->max_upload_post_size}</strong>", array('width' => '200')); 741 $table->construct_cell(@ini_get('upload_max_filesize').' / '.@ini_get('post_max_size'), array('width' => '200')); 742 $table->construct_cell("<strong>{$lang->average_attachment_size}</strong>", array('width' => '25%')); 743 $table->construct_cell(get_friendly_size($attach_average_size), array('width' => '25%')); 744 $table->construct_row(); 745 746 $table->output($lang->stats); 747 748 $table->construct_header($lang->task); 749 $table->construct_header($lang->run_time, array("width" => 200, "class" => "align_center")); 750 751 $task_cache = $cache->read("tasks"); 752 $nextrun = $task_cache['nextrun']; 753 754 $query = $db->simple_select("tasks", "*", "nextrun >= '{$nextrun}' AND enabled='1'", array("order_by" => "nextrun", "order_dir" => "asc", 'limit' => 3)); 755 while($task = $db->fetch_array($query)) 756 { 757 $task['title'] = htmlspecialchars_uni($task['title']); 758 $next_run = my_date('normal', $task['nextrun'], "", 2); 759 $table->construct_cell("<strong>{$task['title']}</strong>"); 760 $table->construct_cell($next_run, array("class" => "align_center")); 761 762 $table->construct_row(); 763 } 764 765 if($table->num_rows() == 0) 766 { 767 $table->construct_cell($lang->no_tasks, array('colspan' => 2)); 768 $table->construct_row(); 769 } 770 771 $table->output($lang->next_3_tasks); 772 773 if(isset($mybb->admin['permissions']['tools']['backupdb']) && $mybb->admin['permissions']['tools']['backupdb'] == 1) 774 { 775 $backups = array(); 776 $dir = MYBB_ADMIN_DIR.'backups/'; 777 $handle = opendir($dir); 778 while(($file = readdir($handle)) !== false) 779 { 780 if(filetype(MYBB_ADMIN_DIR.'backups/'.$file) == 'file') 781 { 782 $ext = get_extension($file); 783 if($ext == 'gz' || $ext == 'sql') 784 { 785 $backups[@filemtime(MYBB_ADMIN_DIR.'backups/'.$file)] = array( 786 "file" => $file, 787 "time" => @filemtime(MYBB_ADMIN_DIR.'backups/'.$file), 788 "type" => $ext 789 ); 790 } 791 } 792 } 793 794 $count = count($backups); 795 krsort($backups); 796 797 $table = new Table; 798 $table->construct_header($lang->name); 799 $table->construct_header($lang->backup_time, array("width" => 200, "class" => "align_center")); 800 801 $backupscnt = 0; 802 foreach($backups as $backup) 803 { 804 ++$backupscnt; 805 806 if($backupscnt == 4) 807 { 808 break; 809 } 810 811 $time = "-"; 812 if($backup['time']) 813 { 814 $time = my_date('relative', $backup['time']); 815 } 816 817 $table->construct_cell("<a href=\"index.php?module=tools-backupdb&action=dlbackup&file={$backup['file']}\">{$backup['file']}</a>"); 818 $table->construct_cell($time, array("class" => "align_center")); 819 $table->construct_row(); 820 } 821 822 if($count == 0) 823 { 824 $table->construct_cell($lang->no_backups, array('colspan' => 2)); 825 $table->construct_row(); 826 } 827 828 $table->output($lang->existing_db_backups); 829 } 830 831 if(is_writable(MYBB_ROOT.'inc/settings.php')) 832 { 833 $message_settings = "<span style=\"color: green;\">{$lang->writable}</span>"; 834 } 835 else 836 { 837 $message_settings = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 838 ++$errors; 839 } 840 841 if(is_writable(MYBB_ROOT.'inc/config.php')) 842 { 843 $message_config = "<span style=\"color: green;\">{$lang->writable}</span>"; 844 } 845 else 846 { 847 $message_config = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 848 ++$errors; 849 } 850 851 $uploadspath_abs = mk_path_abs($mybb->settings['uploadspath']); 852 if(is_writable($uploadspath_abs)) 853 { 854 $message_upload = "<span style=\"color: green;\">{$lang->writable}</span>"; 855 } 856 else 857 { 858 $message_upload = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 859 ++$errors; 860 } 861 862 $avataruploadpath_abs = mk_path_abs($mybb->settings['avataruploadpath']); 863 if(is_writable($avataruploadpath_abs)) 864 { 865 $message_avatar = "<span style=\"color: green;\">{$lang->writable}</span>"; 866 } 867 else 868 { 869 $message_avatar = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 870 ++$errors; 871 } 872 873 if(is_writable(MYBB_ROOT.'inc/languages/')) 874 { 875 $message_language = "<span style=\"color: green;\">{$lang->writable}</span>"; 876 } 877 else 878 { 879 $message_language = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 880 ++$errors; 881 } 882 883 if(is_writable(MYBB_ROOT.$config['admin_dir'].'/backups/')) 884 { 885 $message_backup = "<span style=\"color: green;\">{$lang->writable}</span>"; 886 } 887 else 888 { 889 $message_backup = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 890 ++$errors; 891 } 892 893 if(is_writable(MYBB_ROOT.'/cache/')) 894 { 895 $message_cache = "<span style=\"color: green;\">{$lang->writable}</span>"; 896 } 897 else 898 { 899 $message_cache = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 900 ++$errors; 901 } 902 903 if(is_writable(MYBB_ROOT.'/cache/themes/')) 904 { 905 $message_themes = "<span style=\"color: green;\">{$lang->writable}</span>"; 906 } 907 else 908 { 909 $message_themes = "<strong><span style=\"color: #C00\">{$lang->not_writable}</span></strong><br />{$lang->please_chmod_777}"; 910 ++$errors; 911 } 912 913 if($errors) 914 { 915 $page->output_error("<p><em>{$errors} {$lang->error_chmod}</span></strong> {$lang->chmod_info} <a href=\"https://docs.mybb.com/1.8/administration/security/file-permissions\" target=\"_blank\" rel=\"noopener\">MyBB Docs</a>.</em></p>"); 916 } 917 else 918 { 919 $page->output_success("<p><em>{$lang->success_chmod}</em></p>"); 920 } 921 922 $table = new Table; 923 $table->construct_header($lang->file); 924 $table->construct_header($lang->location, array("colspan" => 2, 'width' => 250)); 925 926 $table->construct_cell("<strong>{$lang->config_file}</strong>"); 927 $table->construct_cell("./inc/config.php"); 928 $table->construct_cell($message_config); 929 $table->construct_row(); 930 931 $table->construct_cell("<strong>{$lang->settings_file}</strong>"); 932 $table->construct_cell("./inc/settings.php"); 933 $table->construct_cell($message_settings); 934 $table->construct_row(); 935 936 $table->construct_cell("<strong>{$lang->file_upload_dir}</strong>"); 937 $table->construct_cell($mybb->settings['uploadspath']); 938 $table->construct_cell($message_upload); 939 $table->construct_row(); 940 941 $table->construct_cell("<strong>{$lang->avatar_upload_dir}</strong>"); 942 $table->construct_cell($mybb->settings['avataruploadpath']); 943 $table->construct_cell($message_avatar); 944 $table->construct_row(); 945 946 $table->construct_cell("<strong>{$lang->language_files}</strong>"); 947 $table->construct_cell("./inc/languages"); 948 $table->construct_cell($message_language); 949 $table->construct_row(); 950 951 $table->construct_cell("<strong>{$lang->backup_dir}</strong>"); 952 $table->construct_cell('./'.$config['admin_dir'].'/backups'); 953 $table->construct_cell($message_backup); 954 $table->construct_row(); 955 956 $table->construct_cell("<strong>{$lang->cache_dir}</strong>"); 957 $table->construct_cell('./cache'); 958 $table->construct_cell($message_cache); 959 $table->construct_row(); 960 961 $table->construct_cell("<strong>{$lang->themes_dir}</strong>"); 962 $table->construct_cell('./cache/themes'); 963 $table->construct_cell($message_themes); 964 $table->construct_row(); 965 966 $plugins->run_hooks("admin_tools_system_health_output_chmod_list"); 967 968 $table->output($lang->chmod_files_and_dirs); 969 970 $page->output_footer(); 971 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |