503 lines
36 KiB
PHP
503 lines
36 KiB
PHP
<?php
|
|
// Exit if accessed directly
|
|
if( !defined( 'ABSPATH' ) ) exit;
|
|
if( !current_user_can('administrator') ) exit;
|
|
$view = ( wpfval($_GET, 'view') ) ? sanitize_text_field($_GET['view']) : '';
|
|
|
|
function wpforo_debug_page_ajax_actions(){ ?>
|
|
<script type="text/javascript">
|
|
jQuery(document).ready(function ($) {
|
|
$("#wpf-debug-tables-solve-button").click(function () {
|
|
$(this).prepend('<i class="fas fa-spinner fa-spin"></i>');
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: ajaxurl,
|
|
data: {
|
|
action: 'wpforo_update_database',
|
|
_wpnonce: '<?php echo wp_create_nonce( 'wpforo_update_database' ) ?>'
|
|
}
|
|
}).done(function () {
|
|
window.location.reload();
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
add_action( 'admin_footer', 'wpforo_debug_page_ajax_actions' );
|
|
?>
|
|
|
|
<form method="POST" class="validate">
|
|
<div class="wpf-tool-box" style="margin-top: 15px;">
|
|
<h3>
|
|
<?php _e('Debug Information', 'wpforo'); ?> -
|
|
|
|
<?php if( $view == 'user' || $view == '' ): ?>
|
|
[ <?php _e('User Data', 'wpforo'); ?> ]
|
|
<?php else: ?>
|
|
[ <a href="<?php echo admin_url('admin.php?page=wpforo-tools&tab=debug&view=user') ?>" style="text-decoration: none; outline: none;box-shadow:none;"><?php _e('User Data', 'wpforo'); ?></a> ]
|
|
<?php endif; ?>
|
|
|
|
<?php if( $view == 'tables' ): ?>
|
|
[ <?php _e('Tables', 'wpforo'); ?> ]
|
|
<?php else: ?>
|
|
[ <a href="<?php echo admin_url('admin.php?page=wpforo-tools&tab=debug&view=tables') ?>" style="text-decoration: none; outline: none;box-shadow:none;"><?php _e('Tables', 'wpforo'); ?></a> ]
|
|
<?php endif; ?>
|
|
|
|
<?php if( $view == 'server' ): ?>
|
|
[ <?php _e('Server', 'wpforo'); ?> ]
|
|
<?php else: ?>
|
|
[ <a href="<?php echo admin_url('admin.php?page=wpforo-tools&tab=debug&view=server') ?>" style="text-decoration: none; outline: none;box-shadow:none;"><?php _e('Server', 'wpforo'); ?></a> ]
|
|
<?php endif; ?>
|
|
|
|
<?php if( $view == 'issues' ): ?>
|
|
[ <?php _e('Errors & Issues', 'wpforo'); ?> ]
|
|
<?php else: ?>
|
|
[ <a href="<?php echo admin_url('admin.php?page=wpforo-tools&tab=debug&view=issues') ?>" style="text-decoration: none; outline: none;box-shadow:none;"><?php _e('Errors & Issues', 'wpforo'); ?></a> ]
|
|
<?php endif; ?>
|
|
</h3>
|
|
<div style="margin-top:10px; clear:both;">
|
|
|
|
|
|
<table style="width:100%;">
|
|
<tbody style="padding:10px;">
|
|
<?php if( $view == 'user' || $view == '' ): ?>
|
|
<tr>
|
|
<td>
|
|
<h4>
|
|
<?php _e('User Data', 'wpforo') ?> |
|
|
<?php
|
|
$wpfu = ( wpfval($_POST, 'wpfu') ) ? intval($_POST['wpfu']) : WPF()->current_userid;
|
|
$user = WPF()->member->get_member( $wpfu );
|
|
$usermeta = get_user_meta( $wpfu );
|
|
?>
|
|
<form method="POST" style="display: inline-block">
|
|
<?php _e('User ID', 'wpforo') ?>: <input style="display: inline-block; font-size: 12px; padding: 3px 10px; width: 80px; vertical-align: middle;" type="text" name="wpfu" placeholder="<?php _e('User ID', 'wpforo') ?>" value="<?php echo intval($wpfu) ?>">
|
|
<input style="display: inline-block; font-size: 12px; line-height: 20px; height: auto; vertical-align:middle;" type="submit" class="button" value="<?php _e('Display User Data', 'wpforo'); ?>" />
|
|
</form>
|
|
</h4>
|
|
</td>
|
|
</tr>
|
|
<?php if( !empty($user) ): ?>
|
|
<tr>
|
|
<td><?php echo wpforo_display_array_data( $user ); ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td><h4><?php _e('User Meta Data', 'wpforo') ?></h4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php
|
|
$keys = array('nickname','rich_editing', 'show_admin_bar_front', 'locale', 'wp_capabilities', 'wp_user_level', 'last_activity', 'wpf_read_topics', 'session_tokens');
|
|
echo wpforo_display_array_data( $usermeta, $keys );
|
|
?>
|
|
</td>
|
|
</tr>
|
|
<?php if( $wpfu == WPF()->current_userid ): ?>
|
|
<tr>
|
|
<td><h4><?php _e('User Cookies', 'wpforo') ?></h4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php
|
|
$keys = array('wpf_all_read', 'wpf_read_topics', 'wpf_read_forums');
|
|
echo wpforo_display_array_data( $_COOKIE, $keys );
|
|
?>
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php else: ?>
|
|
<tr>
|
|
<td><p style="padding: 0px 20px;"><?php _e('No user found.', 'wpforo') ?></p></td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
<?php if( $view == 'tables' ): ?>
|
|
<?php $problems = wpforo_database_check(); ?>
|
|
<?php if( $problems ): ?>
|
|
<tr>
|
|
<td><h3 style="color: #aa0000; margin: 0; border-bottom: none; padding: 15px 0 0 0"><span class="dashicons dashicons-warning" style="vertical-align: sub;"></span> <?php _e('Problems Found in Database', 'wpforo') ?></h3></td>
|
|
</tr>
|
|
<tr style="background-color: transparent;">
|
|
<td style="padding-bottom: 50px;">
|
|
<div style="font-size: 14px;">
|
|
<div style="font-weight: 600; display: flex; flex-direction: row; justify-content: space-between; padding: 5px 10px; border-bottom: 1px solid #cc0000; margin-bottom: 5px; color: #333333; background-color: #f9f9f9;">
|
|
<div style="width: 30%"><?php _e('Table name', 'wpforo'); ?></div>
|
|
<div style="text-align: left; flex-grow: 1;"><?php _e('Problem description', 'wpforo'); ?></div>
|
|
</div>
|
|
<?php foreach( $problems as $table_name => $problem ): ?>
|
|
<?php if( wpfval($problem, 'fields') ): ?>
|
|
<?php foreach( $problem['fields'] as $problem_fields ): ?>
|
|
<div style="display: flex; flex-direction: row; justify-content: space-between; padding: 5px 10px; background-color: #ffeffa; color: #aa0000; margin-bottom: 3px;">
|
|
<div style="width: 30%; font-weight: 600;"><?php _e('Table:', 'wpforo'); ?> <?php echo $table_name; ?></div>
|
|
<div style="text-align: left; flex-grow: 1;"><?php _e('Missing fields: ', 'wpforo'); ?> <code><?php echo implode(', ', $problem_fields ); ?></code></div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
<?php endif; ?>
|
|
<?php if( wpfval($problem, 'keys') ): ?>
|
|
<?php foreach( $problem['keys'] as $problem_keys ): ?>
|
|
<div style="display: flex; flex-direction: row; justify-content: space-between; padding: 5px 10px; background-color: #ffeffa; color: #aa0000; margin-bottom: 3px;">
|
|
<div style="width: 30%; font-weight: 600;"><?php _e('Table:', 'wpforo'); ?> <?php echo $table_name; ?></div>
|
|
<div style="text-align: left; flex-grow: 1;"><?php _e('Missing keys: ', 'wpforo'); ?> <code><?php echo implode(', ', $problem_keys ); ?></code></div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
<?php endif; ?>
|
|
<?php if( wpfkey($problem, 'exists') ): ?>
|
|
<?php if( $problem['exists'] ): ?>
|
|
<div style="display: flex; flex-direction: row; justify-content: space-between; padding: 5px 10px; background-color: #ffeffa;; color: #aa0000; margin-bottom: 3px;">
|
|
<div style="width: 30%; font-weight: 600;"><?php _e('Table:', 'wpforo'); ?> <?php echo $table_name; ?></div>
|
|
<div style="text-align: left; flex-grow: 1;"><?php _e('Doesn\'t exists', 'wpforo'); ?></div>
|
|
</div>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
<?php endforeach; ?>
|
|
<div style="display:flex; flex-direction: row; justify-content: space-between; border-top: 1px dashed #cccccc; padding-top: 10px; text-align: right; margin-top: 10px; font-weight: normal; font-size: 13px;">
|
|
<?php $update_db_url = wp_nonce_url( admin_url( 'admin.php?page=wpforo-tools&tab=debug&view=tables&wpfaction=wpforo_database_update' ), 'wpforo_update_database' ); ?>
|
|
<div>
|
|
<a href="<?php echo esc_url( $update_db_url ); ?>" class="button button-large" style="font-size:12px;">
|
|
<?php _e('Recheck DB', 'wpforo'); ?>
|
|
</a>
|
|
</div>
|
|
<div style="padding: 0 30px;">
|
|
<span id="wpf-debug-tables-solve-button" class="button button-primary button-large" style="font-size:14px;">
|
|
<?php _e('Solve database problems', 'wpforo'); ?>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div style=" margin-top: 0px; font-weight: normal; font-size: 13px;">
|
|
<p style="font-weight: 600; font-size: 16px; margin-bottom: 2px;"><?php _e('IMPORTANT!', 'wpforo') ?></p>
|
|
<p style="font-size: 14px; line-height: 1.5; margin-top: 2px;"><?php printf( __('If the %s button doesn\'t solve the issues. Please use the SQl commands below in your hosting service cPanel > phpMyAdmin Database Manager > WordPress Database > SQL Tab. In case you\'re not familiar with hosting service tools, please contact to your hosting service support team and forward them this message with the SQL command.', 'wpforo'), '<b style="color: #0085ba; font-size:13px;font-family: Courier">[' . __('Solve database problems', 'wpforo') . ']</b>' ) ?></p>
|
|
<p style="font-size: 14px; font-weight: 600;"><?php _e('Problem fixer SQL commands:', 'wpforo') ?></p>
|
|
<pre style="padding: 10px; line-height: 1.4; border: 1px dashed #dd0000; background-color: #fffdea; color: #000000;"><?php
|
|
if( !empty($problems) ){
|
|
echo 'SET AUTOCOMMIT = 0;<br />';
|
|
$SQL = wpforo_database_fixer( $problems );
|
|
if(wpfval($SQL, 'fields')){
|
|
foreach( $SQL['fields'] as $query ) echo $query . '<br>';
|
|
}
|
|
if(wpfval($SQL, 'keys')){
|
|
foreach( $SQL['keys'] as $query ) echo $query . '<br>';
|
|
}
|
|
if(wpfval($SQL, 'tables')){
|
|
foreach( $SQL['tables'] as $query ) echo $query . '<br><br>';
|
|
}
|
|
echo 'SET AUTOCOMMIT = 1;';
|
|
}
|
|
?></pre>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php else: ?>
|
|
<tr>
|
|
<td><h3 style="color: #00aa00; margin: 0; border-bottom: none; padding: 15px 0 30px 0"><span class="dashicons dashicons-shield" style="vertical-align: sub;"></span> <?php _e('No Problems Found in Database', 'wpforo') ?></h3></td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<tr style="background-color: transparent;">
|
|
<td><h3 style=" border-bottom: none;"><?php _e('Database Tables', 'wpforo') ?></h3></td>
|
|
</tr>
|
|
<tr>
|
|
<td><?php foreach( WPF()->tables as $table ){ wpforo_table_info($table); } ?></td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php if( $view == 'server' ): ?>
|
|
<tr>
|
|
<td><h4><?php _e('Server Information', 'wpforo') ?></h4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<table class="wpf-table-data" style="margin: 10px; width: 98%;">
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">USER AGENT</td>
|
|
<td class="wpf-dw-td-value"><?php echo esc_html($_SERVER['HTTP_USER_AGENT']) ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">Web Server</td>
|
|
<td class="wpf-dw-td-value"><?php echo $_SERVER['SERVER_SOFTWARE'] ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP Version</td>
|
|
<td class="wpf-dw-td-value"><?php echo phpversion(); ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">MySQL Version</td>
|
|
<td class="wpf-dw-td-value"><?php echo WPF()->db->db_version(); ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP Max Post Size</td>
|
|
<td class="wpf-dw-td-value"><?php echo ini_get('post_max_size'); ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP Max Upload Size</td>
|
|
<td class="wpf-dw-td-value"><?php echo ini_get('upload_max_filesize'); ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP Memory Limit</td>
|
|
<td class="wpf-dw-td-value"><?php echo ini_get('memory_limit'); ?></td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP DateTime Class</td>
|
|
<td class="wpf-dw-td-value" style="line-height: 18px!important;">
|
|
<?php echo (class_exists('DateTime') && class_exists('DateTimeZone') && method_exists('DateTime', 'setTimestamp')) ? '<span class="wpf-green">' . __('Available', 'wpforo') . '</span>' : '<span class="wpf-red">' . __('The setTimestamp() method of PHP DateTime class is not available. Please make sure you use PHP 5.4 and higher version on your hosting service.', 'wpforo') . '</span> | <a href="http://php.net/manual/en/datetime.settimestamp.php" target="_blank">more info»</a>'; ?> </td>
|
|
</tr>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">PHP cURL Module</td>
|
|
<td class="wpf-dw-td-value" style="line-height: 18px!important;">
|
|
<?php echo ( function_exists('curl_version') || extension_loaded('curl') || in_array('curl', get_loaded_extensions()) ) ? '<span class="wpf-green">' . __('Available', 'wpforo') . '</span>' : '<span class="wpf-red">' . __('Not available', 'wpforo') . '</span> <span style="font-size: smaller; color: gray;">( ' . __('Please contact to your hosting service support team and ask them enable PHP cURL module') . ' )</span> | <a href="https://deliciousbrains.com/php-curl-how-wordpress-makes-http-requests/" target="_blank">more info»</a>'; ?> </td>
|
|
</tr>
|
|
<?php if( function_exists('apache_get_modules') ): ?>
|
|
<tr class="wpf-dw-tr">
|
|
<td class="wpf-dw-td">Permalinks / mod_rewrite</td>
|
|
<td class="wpf-dw-td-value" style="line-height: 18px!important;">
|
|
<?php echo ( in_array('mod_rewrite', apache_get_modules()) ) ? '<span class="wpf-green">' . __('Available', 'wpforo') . '</span>' : '<span class="wpf-red">' . __('Not enabled', 'wpforo') . '</span> <span style="font-size: smaller; color: gray;">( ' . __('Please enable mod_rewrite on your server, this is required for wpForo forum') . ' )</span> | <a href="https://codex.wordpress.org/Using_Permalinks#mod_rewrite:_.22Pretty_Permalinks.22" target="_blank">more info»</a>'; ?>
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php do_action('wpforo_dashboard_widget_server') ?>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
<?php if( $view == 'issues' ): ?>
|
|
<tr>
|
|
<td><h4><?php _e('Issues and Recommendations', 'wpforo') ?></h4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php wpforo_issues() ?>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><h4><?php _e('Error Logs', 'wpforo') ?></h4></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php
|
|
$error_log_file = rtrim(ABSPATH, '/') . '/' . 'error_log';
|
|
if( file_exists($error_log_file) ){
|
|
wpforo_read_file_revers($error_log_file);
|
|
}
|
|
?>
|
|
<?php
|
|
$error_log_file = rtrim(ABSPATH, '/') . '/wp-content/' . 'debug.log';
|
|
if( file_exists($error_log_file) ){
|
|
wpforo_read_file_revers($error_log_file);
|
|
}
|
|
?>
|
|
<?php
|
|
$error_log_file = rtrim(ABSPATH, '/') . '/wp-admin/' . 'error_log';
|
|
if( file_exists($error_log_file) ){
|
|
wpforo_read_file_revers($error_log_file);
|
|
}
|
|
?>
|
|
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<?php
|
|
function wpforo_display_array_data( $array, $keys = array() ){
|
|
$html = '';
|
|
foreach( $array as $k => $v ) {
|
|
if( (!empty($keys) && !in_array($k, $keys) && strpos($k,'capabilities') === FALSE ) || $k == 'user_pass' ) continue;
|
|
if ( is_serialized($v) || is_array($v) ){
|
|
$v = ( is_array($v) ) ? $v : @unserialize($v);
|
|
$v_html = '';
|
|
if( is_array($v) && !empty($v) ){
|
|
foreach ($v as $kk => $vv ) {
|
|
if ( is_serialized($vv) || is_array($vv) ){
|
|
$v_html = '';
|
|
$vv = ( is_array($vv) ) ? $vv : unserialize($vv);
|
|
if( $k == 'wpf_read_topics' ){
|
|
$v_html .= "<span class='wpf-sb-data'>" . count($vv) . "</span> ";
|
|
} else {
|
|
if( is_array($vv) && !empty($vv) ){
|
|
foreach ($vv as $kkk => $vvv ) {
|
|
if( is_array($vvv) ) $vvv = implode(' | ', $vvv);
|
|
$v_html .= "<span class='wpf-sb-data'><key>" . $kkk . ':</key> <value>' . wp_unslash($vvv) . "</value></span> | ";
|
|
}
|
|
}
|
|
}
|
|
} else{
|
|
$v_html .= "<span class='wpf-sb-data'><key>" . $kk . ':</key> <value>' . $vv . "</value></span> | ";
|
|
}
|
|
}
|
|
}
|
|
$v = $v_html;
|
|
}
|
|
if( $v == '' ) $v = 'null';
|
|
$html .= "<div class='wpf-data'><key>" . $k . ':</key> <value>' . wp_unslash($v) . "</value></div>";
|
|
}
|
|
return $html . "<div style='clear:both'></div>";
|
|
}
|
|
|
|
function wpforo_table_info( $table ){
|
|
$_table_exists = WPF()->db->get_var("SHOW TABLES LIKE '" . esc_sql($table) ."'" );
|
|
if( $_table_exists ){
|
|
$result = WPF()->db->get_results("SHOW FULL COLUMNS FROM " . esc_sql($table), ARRAY_A);
|
|
$count = WPF()->db->get_var("SELECT COUNT(*) FROM " . esc_sql($table) );
|
|
$status = WPF()->db->get_row("CHECK TABLE " . esc_sql($table), ARRAY_A);
|
|
echo '<table class="wpf-main-table-data"><tr><td>';
|
|
echo '<table class="wpf-table-data wpf-tbl">';
|
|
echo '<tr><td colspan="6" style="background:#999999; color: #ffffff;font-size:14px; line-height:26px"><b>' . $table . '</b> | Rows: ' . $count . ' | Status: ' . $status['Msg_text'] . '</td></tr>';
|
|
foreach( $result as $info ){
|
|
echo '<tr>';
|
|
echo '<td>' . $info['Field'] . '</td>';
|
|
echo '<td>' . $info['Type'] . '</td>';
|
|
echo '<td>' . $info['Collation'] . '</td>';
|
|
echo '<td>' . ( $info['Null'] == 'NO' ? '-' : 'NULL' ) . '</td>';
|
|
echo '<td>' . $info['Key'] . '</td>';
|
|
echo '<td>' . $info['Default'] . '</td>';
|
|
echo '</tr>';
|
|
}
|
|
echo '</table>';
|
|
echo '</td>';
|
|
echo '<td>';
|
|
$result = WPF()->db->get_results("SHOW INDEXES FROM " . esc_sql($table), ARRAY_A);
|
|
|
|
echo '<table class="wpf-table-data">';
|
|
echo '<tr><td colspan="6" style="background:#BBBBBB; color: #ffffff;font-size:14px; line-height:26px"><b>Indexes</b></td></tr>';
|
|
$indexes = array();
|
|
foreach( $result as $info ){
|
|
$indexes[ $info['Key_name'] ]['Key_name'] = $info['Key_name'];
|
|
$indexes[ $info['Key_name'] ]['Column_name'][] = $info['Column_name'];
|
|
$indexes[ $info['Key_name'] ]['Non_unique'] = $info['Non_unique'];
|
|
$indexes[ $info['Key_name'] ]['Index_type'] = $info['Index_type'];
|
|
}
|
|
foreach( $indexes as $info ) {
|
|
echo '<tr>';
|
|
echo '<td>' . $info['Key_name'] . '</td>';
|
|
echo '<td>' . implode( ', ', $info['Column_name'] ) . '</td>';
|
|
echo '<td>' . ( $info['Non_unique'] ? '0' : 'Un' ) . '</td>';
|
|
echo '<td>' . $info['Index_type'] . '</td>';
|
|
echo '</tr>';
|
|
}
|
|
echo '</table>';
|
|
|
|
echo '</td>';
|
|
echo '</tr>';
|
|
echo '</table>';
|
|
}else{
|
|
echo '<h3>Table <span style="color: red;">' . $table . '</span> doesn\'t exist</h3>';
|
|
}
|
|
}
|
|
|
|
function wpforo_issues(){
|
|
|
|
$issues = array();
|
|
##########################################################
|
|
//Usergroups//////////////////////////////////////////////
|
|
$guest_exists = WPF()->db->get_var("SELECT `groupid` FROM `" . WPF()->tables->usergroups . "` WHERE `groupid` = 4");
|
|
if( !$guest_exists ){
|
|
$issues['usergroup']['guest']['level'] = 3;
|
|
$issues['usergroup']['guest']['message'] = __('The default Guest usergroup is not found!', 'wpforo');
|
|
$issues['usergroup']['guest']['solution'] = __('Please execute this SQL in your Website Hosting cPanel > phpMyAdmin Database Manager', 'wpforo') . ": <br><pre style='white-space: pre-line; word-break: break-all; color:#006600'>" . 'INSERT INTO `' . WPF()->tables->usergroups . '` (`groupid`, `name`, `cans`, `description`, `utitle`, `role`, `access`, `color`, `visible`, `secondary`) VALUES
|
|
(4, \'Guest\', \'a:32:{s:2:\"mf\";s:1:\"0\";s:2:\"ms\";s:1:\"0\";s:2:\"mt\";s:1:\"0\";s:2:\"mp\";s:1:\"0\";s:3:\"mth\";s:1:\"0\";s:2:\"vm\";s:1:\"0\";s:3:\"aum\";s:1:\"0\";s:2:\"em\";s:1:\"0\";s:3:\"vmg\";s:1:\"0\";s:3:\"aup\";s:1:\"0\";s:4:\"vmem\";s:1:\"1\";s:4:\"vprf\";s:1:\"1\";s:4:\"vpra\";s:1:\"1\";s:4:\"vprs\";s:1:\"0\";s:2:\"bm\";s:1:\"0\";s:2:\"dm\";s:1:\"0\";s:3:\"upa\";s:1:\"0\";s:3:\"ups\";s:1:\"0\";s:2:\"va\";s:1:\"1\";s:3:\"vmu\";s:1:\"0\";s:3:\"vmm\";s:1:\"0\";s:3:\"vmt\";s:1:\"1\";s:4:\"vmct\";s:1:\"1\";s:3:\"vmr\";s:1:\"1\";s:3:\"vmw\";s:1:\"0\";s:4:\"vmsn\";s:1:\"1\";s:4:\"vmrd\";s:1:\"1\";s:3:\"vml\";s:1:\"1\";s:3:\"vmo\";s:1:\"1\";s:3:\"vms\";s:1:\"1\";s:4:\"vmam\";s:1:\"1\";s:4:\"vwpm\";s:1:\"0\";}\', \'\', \'Guest\', \'\', \'read_only\', \'#222222\', 0, 0);
|
|
' . "</pre>";
|
|
}
|
|
|
|
$perms = array();
|
|
$nonsec = array(
|
|
'mf' => __( 'Dashboard - Manage Forums', 'wpforo' ),
|
|
'ms' => __( 'Dashboard - Manage Settings', 'wpforo' ),
|
|
'mt' => __( 'Dashboard - Manage Tools', 'wpforo' ),
|
|
'vm' => __( 'Dashboard - Manage Members', 'wpforo' ),
|
|
'aum' => __( 'Dashboard - Moderate Topics & Posts', 'wpforo' ),
|
|
'vmg' => __( 'Dashboard - Manage Usergroups', 'wpforo' ),
|
|
'mp' => __( 'Dashboard - Manage Phrases', 'wpforo' ),
|
|
'mth' => __( 'Dashboard - Manage Themes', 'wpforo' ),
|
|
'em' => __( 'Dashboard - Can edit member', 'wpforo' ),
|
|
'bm' => __( 'Dashboard - Can ban member', 'wpforo' ),
|
|
'dm' => __( 'Dashboard - Can delete member', 'wpforo' ),
|
|
'vmu' => __( 'Front - Can view member username', 'wpforo' )
|
|
);
|
|
$default_ug = WPF()->usergroup->default_groupid;
|
|
$default_ug_cans = WPF()->db->get_var("SELECT `cans` FROM `" . WPF()->tables->usergroups . "` WHERE `groupid` = " . intval($default_ug) );
|
|
$default_ug_cans = unserialize($default_ug_cans);
|
|
if( !empty($default_ug_cans) ){
|
|
foreach( $default_ug_cans as $key => $value ){
|
|
if( wpfkey($nonsec, $key) && $value == 1 ) {
|
|
$perms[] = $nonsec[$key];
|
|
}
|
|
}
|
|
if( !empty($perms) ){
|
|
$cans = '<ul style="list-style:disc; margin:10px 20px; font-size:12px; line-height:14px;"><li>' . implode('</li><li>', $perms ) . '</li></ul>';
|
|
$issues['usergroup']['default_perm']['level'] = 3;
|
|
$issues['usergroup']['default_perm']['message'] = __('New registered users get access to forum settings!', 'wpforo');
|
|
$issues['usergroup']['default_perm']['solution'] = __( sprintf('Please navigate to Forums > Usergroups admin page, edit the "Default" usergroup (ID = %s) and uncheck/disable following permission(s):', $default_ug), 'wpforo') . $cans;
|
|
}
|
|
}
|
|
#########################################################
|
|
//Plugin Conflicts///////////////////////////////////////
|
|
if( class_exists('autoptimizeCache') ){
|
|
$autopt = get_option('autoptimize_js_exclude');
|
|
if( $autopt && strpos($autopt, 'wp-includes/js/tinymce') === FALSE ){
|
|
$issues['conflicts']['autoptimize']['level'] = 3;
|
|
$issues['conflicts']['autoptimize']['message'] = __('Conflict with Autoptimize plugin!', 'wpforo');
|
|
$issues['conflicts']['autoptimize']['solution'] = __('Please navigate to Settings > Autoptimize > Main Tab, click on top right [Show advanced settings] button, find "Exclude scripts from Autoptimize" option, add this JS path <code>,wp-includes/js/tinymce</code>, than click on [Save Changes and Empty Cache] button bellow.', 'wpforo');
|
|
}
|
|
}
|
|
#########################################################
|
|
//Email Issues //////////////////////////////////////////
|
|
$email = "test@example.com";
|
|
$subject = "Email Test";
|
|
$message = "This is a mail testing email function on server";
|
|
if( !wp_mail($email, $subject, $message) ){
|
|
$issues['email']['wp_mail']['level'] = 3;
|
|
$issues['email']['wp_mail']['message'] = __('WordPress Email sending function wp_mail() doesn\'t work!', 'wpforo');
|
|
$issues['email']['wp_mail']['solution'] = __('In most cases this is a server issue. We recommend you contact to your hosting service support team or open a support topic in wordpress.org support forum. Also there are many good articles regarding this issue in web. For example ', 'wpforo') . ' - <a href="https://www.wpbeginner.com/wp-tutorials/how-to-fix-wordpress-not-sending-email-issue/">' . __('How to Fix WordPress Not Sending Email Issue', 'wpforo') . '</a>';
|
|
}
|
|
#########################################################
|
|
//Other Issues //////////////////////////////////////////
|
|
$phrases = WPF()->db->get_var("SELECT COUNT(*) FROM `" . WPF()->tables->phrases . "`");
|
|
if( !$phrases ){
|
|
$issues['other']['empty_phrase_table']['level'] = 3;
|
|
$issues['other']['empty_phrase_table']['message'] = __('wpForo phrases are missing!', 'wpforo');
|
|
$issues['other']['empty_phrase_table']['solution'] = __('Please download wpForo Phrases XML compressed file, unzip it, find english.xml file, navigate to Forums > Settings > General Tab and import it using [Add New] button of "XML Based Language" option.', 'wpforo') . ' [ <a href="https://wpforo.com/2wpf/english.xml.zip">' . __('Download wpForo Phrases', 'wpforo') . '</a> ]';
|
|
}
|
|
|
|
echo '<table class="wpf-table-data" style="margin: 10px; width: 98%;">';
|
|
if( !empty($issues) ){
|
|
foreach( $issues as $key => $issue ){
|
|
if(!empty($issue)){
|
|
echo '<tr><td colspan="6" style="background:#d86868; color: #ffffff;font-size:14px; line-height:26px"><b>' . strtoupper($key) . '</b></td></tr>';
|
|
foreach( $issue as $data ){
|
|
echo '<tr>';
|
|
echo '<td class="wpf-ilevel-' . intval($data['level']) . '" style="vertical-align: top;width:25%; font-size:15px; padding:10px; line-height: 22px;">' . $data['message'] . '</td>';
|
|
echo '<td style="vertical-align: top;font-size:13px;line-height:20px;padding:10px;">' . $data['solution'] . '</td>';
|
|
echo '</tr>';
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
echo '<tr><td><p> ' . __('No issues found', 'wpforo') . '<p></td></tr>';
|
|
}
|
|
echo '</table>';
|
|
}
|
|
|
|
function wpforo_read_file_revers( $file ){
|
|
$result = array();
|
|
$numRows = 100;
|
|
$handle = fopen($file, "r");
|
|
while (!feof($handle)) {
|
|
array_push($result, fgets($handle, 4096));
|
|
if (count($result) > $numRows) array_shift($result);
|
|
}
|
|
$result = array_filter($result);
|
|
$result = array_reverse($result);
|
|
if( !empty($result) ){
|
|
echo '<h3 style="padding:5px 20px;">' . __('Error Log File', 'wpforo') . ': <code style="font-size:14px;">' . $file . '</code><h3>';
|
|
echo '<ul style="list-style:disc; margin:20px 30px;">';
|
|
foreach( $result as $error ){
|
|
echo '<li style="border-bottom:1px dotted #cccccc; font-size:12px;line-height:16px; padding:0px 0px 3px 0px">' . $error . '</li>';
|
|
}
|
|
echo '</ul>';
|
|
} else {
|
|
echo '<p>' . __('No errors found', 'wpforo') . '</p>';
|
|
}
|
|
|
|
}
|