Skip to content

Commit

Permalink
v6.1-a1: * 🌱**Database** Clear Orphaned Post Meta.
Browse files Browse the repository at this point in the history
  • Loading branch information
Hai Zheng committed Nov 20, 2023
1 parent cf7c759 commit a9c9e9e
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 98 deletions.
4 changes: 4 additions & 0 deletions assets/css/litespeed.css
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,10 @@ h3 .litespeed-learn-more {
background-image: url('../img/icons/revision.svg');
}

.litespeed-panel-icon-orphaned_post_meta {
background-image: url('../img/icons/revision.svg');
}

.litespeed-panel-icon-auto_draft {
background-image: url('../img/icons/auto_draft.svg');
}
Expand Down
3 changes: 3 additions & 0 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The

== Changelog ==

= 6.1 - Feb 2024 =
* 🌱**Database** Clear Orphaned Post Meta.

= 6.0 - Dec 12 2023 =
* 🌱**Image Optimize** Parallel pull. (⭐ Contributed by Peter Wells #581)
* 🌱**Cache** CLI Crawler.
Expand Down
10 changes: 10 additions & 0 deletions src/db-optm.cls.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

/**
* The admin optimize tool
*
Expand All @@ -8,6 +9,7 @@
* @subpackage LiteSpeed/src
* @author LiteSpeed Technologies <[email protected]>
*/

namespace LiteSpeed;

defined('WPINC') || exit();
Expand All @@ -18,6 +20,7 @@ class DB_Optm extends Root

private static $TYPES = array(
'revision',
'orphaned_post_meta',
'auto_draft',
'trash_post',
'spam_comment',
Expand Down Expand Up @@ -97,6 +100,9 @@ public function db_count($type, $ignore_multisite = false)
Utility::compatibility();
return array_sum(array_column($res, 0));

case 'orphaned_post_meta':
return $wpdb->get_var("SELECT COUNT(a.*) FROM `$wpdb->postmeta` a LEFT JOIN `$wpdb->posts` b ON b.ID=a.post_id WHERE b.ID IS NULL");

case 'auto_draft':
return $wpdb->get_var("SELECT COUNT(*) FROM `$wpdb->posts` WHERE post_status = 'auto-draft'");

Expand Down Expand Up @@ -193,6 +199,10 @@ private function _db_clean($type)

return __('Clean post revisions successfully.', 'litespeed-cache');

case 'orphaned_post_meta':
$wpdb->query("DELETE a FROM `$wpdb->postmeta` a LEFT JOIN `$wpdb->posts` b ON b.ID=a.post_id WHERE b.ID IS NULL");
return __('Clean orphaned post meta successfully.', 'litespeed-cache');

case 'auto_draft':
$wpdb->query("DELETE FROM `$wpdb->posts` WHERE post_status = 'auto-draft'");
return __('Clean auto drafts successfully.', 'litespeed-cache');
Expand Down
201 changes: 103 additions & 98 deletions tpl/db_optm/manage.tpl.php
Original file line number Diff line number Diff line change
@@ -1,136 +1,144 @@
<?php

namespace LiteSpeed;
defined( 'WPINC' ) || exit;

defined('WPINC') || exit;

$_panels = array(
'all' => array(
'title' => __( 'Clean All', 'litespeed-cache' ),
'title' => __('Clean All', 'litespeed-cache'),
'desc' => '',
),
'revision' => array(
'title' => __( 'Post Revisions', 'litespeed-cache' ),
'desc' => __( 'Clean all post revisions', 'litespeed-cache' ),
'title' => __('Post Revisions', 'litespeed-cache'),
'desc' => __('Clean all post revisions', 'litespeed-cache'),
),
'orphaned_post_meta' => array(
'title' => __('Orphaned Post Meta', 'litespeed-cache'),
'desc' => __('Clean all orphaned post meta records', 'litespeed-cache'),
),
'auto_draft' => array(
'title' => __( 'Auto Drafts', 'litespeed-cache' ),
'desc' => __( 'Clean all auto saved drafts', 'litespeed-cache' ),
'title' => __('Auto Drafts', 'litespeed-cache'),
'desc' => __('Clean all auto saved drafts', 'litespeed-cache'),
),
'trash_post' => array(
'title' => __( 'Trashed Posts', 'litespeed-cache' ),
'desc' => __( 'Clean all trashed posts and pages', 'litespeed-cache' ),
'title' => __('Trashed Posts', 'litespeed-cache'),
'desc' => __('Clean all trashed posts and pages', 'litespeed-cache'),
),
'spam_comment' => array(
'title' => __( 'Spam Comments', 'litespeed-cache' ),
'desc' => __( 'Clean all spam comments', 'litespeed-cache' ),
'title' => __('Spam Comments', 'litespeed-cache'),
'desc' => __('Clean all spam comments', 'litespeed-cache'),
),
'trash_comment' => array(
'title' => __( 'Trashed Comments', 'litespeed-cache' ),
'desc' => __( 'Clean all trashed comments', 'litespeed-cache' ),
'title' => __('Trashed Comments', 'litespeed-cache'),
'desc' => __('Clean all trashed comments', 'litespeed-cache'),
),
'trackback-pingback' => array(
'title' => __( 'Trackbacks/Pingbacks', 'litespeed-cache' ),
'desc' => __( 'Clean all trackbacks and pingbacks', 'litespeed-cache' ),
'title' => __('Trackbacks/Pingbacks', 'litespeed-cache'),
'desc' => __('Clean all trackbacks and pingbacks', 'litespeed-cache'),
),
'expired_transient' => array(
'title' => __( 'Expired Transients', 'litespeed-cache' ),
'desc' => __( 'Clean expired transient options', 'litespeed-cache' ),
'title' => __('Expired Transients', 'litespeed-cache'),
'desc' => __('Clean expired transient options', 'litespeed-cache'),
),
'all_transients' => array(
'title' => __( 'All Transients', 'litespeed-cache' ),
'desc' => __( 'Clean all transient options', 'litespeed-cache' ),
'title' => __('All Transients', 'litespeed-cache'),
'desc' => __('Clean all transient options', 'litespeed-cache'),
),
'optimize_tables' => array(
'title' => __( 'Optimize Tables', 'litespeed-cache' ),
'desc' => __( 'Optimize all tables in your database', 'litespeed-cache' ),
'title' => __('Optimize Tables', 'litespeed-cache'),
'desc' => __('Optimize all tables in your database', 'litespeed-cache'),
),
);

$rev_max = $this->conf( Base::O_DB_OPTM_REVISIONS_MAX );
$rev_age = $this->conf( Base::O_DB_OPTM_REVISIONS_AGE );
if ( $rev_max || $rev_age ) {
$_panels[ 'revision' ][ 'desc' ] = sprintf( __( 'Clean revisions older than %1$s day(s), excluding %2$s latest revisions', 'litespeed-cache' ), '<strong>' . $rev_age . '</strong>' , '<strong>' . $rev_max . '</strong>' );
$rev_max = $this->conf(Base::O_DB_OPTM_REVISIONS_MAX);
$rev_age = $this->conf(Base::O_DB_OPTM_REVISIONS_AGE);
if ($rev_max || $rev_age) {
$_panels['revision']['desc'] = sprintf(__('Clean revisions older than %1$s day(s), excluding %2$s latest revisions', 'litespeed-cache'), '<strong>' . $rev_age . '</strong>', '<strong>' . $rev_max . '</strong>');
}

$total = 0;
foreach ( $_panels as $tag => $v ) {
if ( $tag != 'all' ) {
$_panels[ $tag ][ 'count' ] = $this->cls( 'DB_Optm' )->db_count( $tag );
if ( ! in_array( $tag, array( 'optimize_tables' ) ) ) {
$total += $_panels[ $tag ][ 'count' ];
foreach ($_panels as $tag => $v) {
if ($tag != 'all') {
$_panels[$tag]['count'] = $this->cls('DB_Optm')->db_count($tag);
if (!in_array($tag, array('optimize_tables'))) {
$total += $_panels[$tag]['count'];
}
}
$_panels[ $tag ][ 'link' ] = Utility::build_url( Router::ACTION_DB_OPTM, $tag );
$_panels[$tag]['link'] = Utility::build_url(Router::ACTION_DB_OPTM, $tag);
}

$_panels[ 'all' ][ 'count' ] = $total;
$_panels['all']['count'] = $total;

$autoload_summary = DB_Optm::cls()->autoload_summary();

?>

<h3 class="litespeed-title">
<?php echo __('Database Optimizer', 'litespeed-cache'); ?>
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/database/' ); ?>
<?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/database/'); ?>
</h3>

<div class="litespeed-panel-wrapper litespeed-cards-wrapper">

<?php foreach ( $_panels as $tag => $v ): ?>

<a href="<?php echo $v[ 'link' ]; ?>" class="litespeed-panel postbox">
<section class="litespeed-panel-wrapper-icon">
<span class="litespeed-panel-icon-<?php echo $tag; ?>"></span>
</section>
<section class="litespeed-panel-content">
<div class="litespeed-h3">
<?php echo $v[ 'title' ]; ?>
<span class="litespeed-panel-counter<?php if ( $v[ 'count' ] > 0 ) echo '-red'; ?>">(<?php echo $v[ 'count' ]; ?><?php echo DB_Optm::hide_more() ? '+' : ''; ?>)</span>
</div>
<span class="litespeed-panel-para"><?php echo $v[ 'desc' ]; ?></span>
</section>
<section class="litespeed-panel-wrapper-top-right">
<span class="litespeed-panel-top-right-icon<?php echo $v[ 'count' ] > 0 ? '-cross' : '-tick'; ?>"></span>
</section>
</a>
<?php endforeach; ?>
<?php foreach ($_panels as $tag => $v) : ?>

<a href="<?php echo $v['link']; ?>" class="litespeed-panel postbox">
<section class="litespeed-panel-wrapper-icon">
<span class="litespeed-panel-icon-<?php echo $tag; ?>"></span>
</section>
<section class="litespeed-panel-content">
<div class="litespeed-h3">
<?php echo $v['title']; ?>
<span class="litespeed-panel-counter<?php if ($v['count'] > 0) echo '-red'; ?>">(<?php echo $v['count']; ?><?php echo DB_Optm::hide_more() ? '+' : ''; ?>)</span>
</div>
<span class="litespeed-panel-para"><?php echo $v['desc']; ?></span>
</section>
<section class="litespeed-panel-wrapper-top-right">
<span class="litespeed-panel-top-right-icon<?php echo $v['count'] > 0 ? '-cross' : '-tick'; ?>"></span>
</section>
</a>
<?php endforeach; ?>

</div>

<h3 class="litespeed-title"><?php echo __( 'Database Table Engine Converter', 'litespeed-cache' ); ?></h3>
<h3 class="litespeed-title"><?php echo __('Database Table Engine Converter', 'litespeed-cache'); ?></h3>

<div class="litespeed-panel-wrapper">

<table class="wp-list-table widefat striped">
<thead><tr >
<th scope="col">#</th>
<th scope="col"><?php echo __( 'Table', 'litespeed-cache' ); ?></th>
<th scope="col"><?php echo __( 'Engine', 'litespeed-cache' ); ?></th>
<th scope="col"><?php echo __( 'Tool', 'litespeed-cache' ); ?></th>
</tr></thead>
<thead>
<tr>
<th scope="col">#</th>
<th scope="col"><?php echo __('Table', 'litespeed-cache'); ?></th>
<th scope="col"><?php echo __('Engine', 'litespeed-cache'); ?></th>
<th scope="col"><?php echo __('Tool', 'litespeed-cache'); ?></th>
</tr>
</thead>
<tbody>
<?php
<?php
$list = DB_Optm::cls()->list_myisam();
if ( $list ) :
foreach ( $list as $k => $v ) :
?>
if ($list) :
foreach ($list as $k => $v) :
?>
<tr>
<td><?php echo $k + 1; ?></td>
<td><?php echo $v->TABLE_NAME; ?></td>
<td><?php echo $v->ENGINE; ?></td>
<td>
<a href="<?php echo Utility::build_url(Router::ACTION_DB_OPTM, DB_Optm::TYPE_CONV_TB, false, false, array('tb' => $v->TABLE_NAME)); ?>">
<?php echo __('Convert to InnoDB', 'litespeed-cache'); ?>
</a>
</td>
</tr>
<?php endforeach; ?>
<?php else : ?>
<tr>
<td><?php echo $k + 1; ?></td>
<td><?php echo $v->TABLE_NAME; ?></td>
<td><?php echo $v->ENGINE; ?></td>
<td>
<a href="<?php echo Utility::build_url( Router::ACTION_DB_OPTM, DB_Optm::TYPE_CONV_TB, false, false, array( 'tb' => $v->TABLE_NAME ) ); ?>">
<?php echo __( 'Convert to InnoDB', 'litespeed-cache' ); ?>
</a>
<td colspan="4" class="litespeed-success litespeed-text-center">
<?php echo __('We are good. No table uses MyISAM engine.', 'litespeed-cache'); ?>
</td>
</tr>
<?php endforeach; ?>
<?php else : ?>
<tr>
<td colspan="4" class="litespeed-success litespeed-text-center">
<?php echo __( 'We are good. No table uses MyISAM engine.', 'litespeed-cache' ); ?>
</td>
</tr>
<?php endif; ?>
<?php endif; ?>
</tbody>
</table>

Expand All @@ -143,45 +151,42 @@
margin-left: 20px;
margin-right: 20px;
}
.litespeed-body .field-col:first-child{
margin-left:0;

.litespeed-body .field-col:first-child {
margin-left: 0;
}
</style>

<h3 class="litespeed-title"><?php echo __( 'Database Summary', 'litespeed-cache' ); ?></h3>
<h3 class="litespeed-title"><?php echo __('Database Summary', 'litespeed-cache'); ?></h3>
<div>
<div class="field-col">
<p>
Autoload size: <strong><?php echo Utility::real_size( $autoload_summary->autoload_size ); ?></strong></p>
Autoload size: <strong><?php echo Utility::real_size($autoload_summary->autoload_size); ?></strong></p>
<p>Autoload entries: <strong><?php echo $autoload_summary->autload_entries; ?></strong></p>


</div>

<div class="field-col">
<p>Autoload top list:</p>
<p>Autoload top list:</p>
<table class="wp-list-table widefat striped litespeed-width-auto litespeed-table-compact">
<thead><tr >
<th scope="col">#</th>
<th scope="col"><?php echo __('Option Name', 'litespeed-cache'); ?></th>
<th scope="col"><?php echo __('Size', 'litespeed-cache'); ?></th>
</tr></thead>
<tbody>
<?php foreach ( $autoload_summary->autoload_toplist as $k => $v ) : ?>
<thead>
<tr>
<td><?php echo $k + 1; ?></td>
<td><?php echo $v->option_name; ?></td>
<td><?php echo $v->option_value_length; ?></td>
<th scope="col">#</th>
<th scope="col"><?php echo __('Option Name', 'litespeed-cache'); ?></th>
<th scope="col"><?php echo __('Size', 'litespeed-cache'); ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($autoload_summary->autoload_toplist as $k => $v) : ?>
<tr>
<td><?php echo $k + 1; ?></td>
<td><?php echo $v->option_name; ?></td>
<td><?php echo $v->option_value_length; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

</div>
</div>






</div>

0 comments on commit a9c9e9e

Please sign in to comment.