1
0
Fork 0
mirror of https://github.com/yunluo/gdk.git synced 2024-06-27 09:40:09 +02:00
gdk/modules/base/functions/database.php
2020-01-25 14:52:35 +08:00

167 lines
6 KiB
PHP

<?php
if (!function_exists('nc_database_optimize')):
add_action('wp_ajax_nopriv_nc_database_optimize', 'nc_database_optimize');
add_action('wp_ajax_nc_database_optimize', 'nc_database_optimize');
function nc_database_optimize(){
global $wpdb;
$wcu_sql = 'SHOW TABLE STATUS FROM `'.DB_NAME.'`';
$result = $wpdb->get_results($wcu_sql);
$is_error = false;
foreach($result as $row){
$wcu_sql = 'OPTIMIZE TABLE '.$row->Name;
$wpdb_result = $wpdb->query($wcu_sql);
if (!$wpdb_result) $is_error = true;
}
if ($is_error) {
echo json_encode(array(
's' => 400
));
die();
}
echo json_encode(array(
's' => 200,
'm' => '优化成功'
));
die();
}
endif;
if (!function_exists('nc_database_cleanup')):
add_action('wp_ajax_nopriv_nc_database_cleanup', 'nc_database_cleanup');
add_action('wp_ajax_nc_database_cleanup', 'nc_database_cleanup');
function nc_database_cleanup() {
global $wpdb;
$type = sanitize_text_field($_POST['action_type']);
switch($type) {
case "revision":
$wcu_sql = "DELETE FROM $wpdb->posts WHERE post_type = 'revision'";
$result = $wpdb->query($wcu_sql);
break;
case "draft":
$wcu_sql = "DELETE FROM $wpdb->posts WHERE post_status = 'draft'";
$result = $wpdb->query($wcu_sql);
break;
case "autodraft":
$wcu_sql = "DELETE FROM $wpdb->posts WHERE post_status = 'auto-draft'";
$result = $wpdb->query($wcu_sql);
break;
case "moderated":
$wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = '0'";
$result = $wpdb->query($wcu_sql);
break;
case "spam":
$wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'";
$result = $wpdb->query($wcu_sql);
break;
case "trash":
$wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = 'trash'";
$result = $wpdb->query($wcu_sql);
break;
case "postmeta":
$wcu_sql = "DELETE pm FROM $wpdb->postmeta pm LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL";
$result = $wpdb->query($wcu_sql);
break;
case "commentmeta":
$wcu_sql = "DELETE FROM $wpdb->commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM $wpdb->comments)";
$result = $wpdb->query($wcu_sql);
break;
case "relationships":
$wcu_sql = "DELETE FROM $wpdb->term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM $wpdb->posts)";
$result = $wpdb->query($wcu_sql);
break;
case "feed":
$wcu_sql = "DELETE FROM $wpdb->options WHERE option_name LIKE '_site_transient_browser_%' OR option_name LIKE '_site_transient_timeout_browser_%' OR option_name LIKE '_transient_feed_%' OR option_name LIKE '_transient_timeout_feed_%'";
$result = $wpdb->query($wcu_sql);
break;
}
if ($result) {
echo json_encode(array(
's' => 200,
'm' => '清理成功'
));
} else {
echo json_encode(array(
's' => 400,
'm' => '清理失败'
));
}
die();
}
endif;
if (!function_exists('nc_database_clean_up_count')):
add_action('wp_ajax_nopriv_nc_database_clean_up_count', 'nc_database_clean_up_count');
add_action('wp_ajax_nc_database_clean_up_count', 'nc_database_clean_up_count');
function nc_database_clean_up_count() {
$result = array(
's' => 200,
'counts' => array(
'revision' => nc_database_clean_up_count_action('revision'),
'draft' => nc_database_clean_up_count_action('draft'),
'autodraft' => nc_database_clean_up_count_action('autodraft'),
'moderated' => nc_database_clean_up_count_action('moderated'),
'spam' => nc_database_clean_up_count_action('spam'),
'trash' => nc_database_clean_up_count_action('trash'),
'postmeta' => nc_database_clean_up_count_action('postmeta'),
'commentmeta' => nc_database_clean_up_count_action('commentmeta'),
'relationships' => nc_database_clean_up_count_action('relationships'),
'feed' => nc_database_clean_up_count_action('feed')
)
);
echo json_encode($result);
die();
}
endif;
if (!function_exists('nc_database_clean_up_count_action')):
function nc_database_clean_up_count_action($type){
global $wpdb;
switch($type) {
case "revision":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'revision'";
$count = $wpdb->get_var($wcu_sql);
break;
case "draft":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'draft'";
$count = $wpdb->get_var($wcu_sql);
break;
case "autodraft":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'auto-draft'";
$count = $wpdb->get_var($wcu_sql);
break;
case "moderated":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'";
$count = $wpdb->get_var($wcu_sql);
break;
case "spam":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = 'spam'";
$count = $wpdb->get_var($wcu_sql);
break;
case "trash":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = 'trash'";
$count = $wpdb->get_var($wcu_sql);
break;
case "postmeta":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->postmeta pm LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL";
//$wcu_sql = "SELECT COUNT(*) FROM $wpdb->postmeta WHERE NOT EXISTS ( SELECT * FROM $wpdb->posts WHERE $wpdb->postmeta.post_id = $wpdb->posts.ID )";
$count = $wpdb->get_var($wcu_sql);
break;
case "commentmeta":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM $wpdb->comments)";
$count = $wpdb->get_var($wcu_sql);
break;
case "relationships":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM $wpdb->posts)";
$count = $wpdb->get_var($wcu_sql);
break;
case "feed":
$wcu_sql = "SELECT COUNT(*) FROM $wpdb->options WHERE option_name LIKE '_site_transient_browser_%' OR option_name LIKE '_site_transient_timeout_browser_%' OR option_name LIKE '_transient_feed_%' OR option_name LIKE '_transient_timeout_feed_%'";
$count = $wpdb->get_var($wcu_sql);
break;
}
return $count;
die();
}
endif;